netcdf-1.0.18/0000755000000000000000000000000014674554453010013 5ustar00netcdf-1.0.18/.travis.yml0000644000000000000000000000041114674554453012120 0ustar00language: cpp sudo: required dist: trusty before_install: - sudo apt-get -qq update - sudo apt-get install -y octave liboctave-dev libnetcdf-dev netcdf-bin script: cd ..; mv octave-netcdf netcdf; octave --eval 'pkg install netcdf; pkg load netcdf; test_netcdf' netcdf-1.0.18/COPYING0000644000000000000000000010451314674554453011052 0ustar00 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 . netcdf-1.0.18/DESCRIPTION0000644000000000000000000000067414674554453011530 0ustar00Name: netcdf Version: 1.0.18 Date: 2024-09-24 Author: Alexander Barth Maintainer: John Donoghue Title: netcdf Description: A NetCDF interface for Octave Depends: octave (>= 4.0.0) BuildRequires: netcdf-devel [Fedora] libnetcdf-dev [Debian], netcdf-bin [Debian] License: GPLv3+ Url: https://octave.sf.net/netcdf/index.html Repository: https://sourceforge.net/p/octave/netcdf/ci/master/tree/ netcdf-1.0.18/INDEX0000644000000000000000000000433314674554453010610 0ustar00netcdf >> NetCDF interface High-level functions nccreate ncdisp ncinfo ncreadatt ncread ncwriteatt ncwrite ncwriteschema Low-level functions (Deprecated) netcdf_getConstant netcdf_getConstantNames netcdf_inqLibVers netcdf_setDefaultFormat netcdf_setChunkCache netcdf_getChunkCache netcdf_create netcdf_open netcdf_abort netcdf_sync netcdf_setFill netcdf_inq netcdf_inqUnlimDims netcdf_inqFormat netcdf_defDim netcdf_renameDim netcdf_defVar netcdf_renameVar netcdf_defVarFill netcdf_inqVarFill netcdf_defVarDeflate netcdf_inqVarDeflate netcdf_defVarChunking netcdf_inqVarChunking netcdf_defVarFletcher32 netcdf_inqVarFletcher32 netcdf_endDef netcdf_reDef netcdf_putVar netcdf_getVar netcdf_close netcdf_inqAttName netcdf_inqAttID netcdf_inqAtt netcdf_getAtt netcdf_putAtt netcdf_copyAtt netcdf_renameAtt netcdf_delAtt netcdf_inqVarID netcdf_inqVarIDs netcdf_inqVar netcdf_inqDim netcdf_inqDimID netcdf_inqDimIDs netcdf_defGrp netcdf_inqGrps netcdf_inqGrpName netcdf_inqGrpNameFull netcdf_inqGrpParent netcdf_inqGrpFullNcid netcdf_inqNcid netcdf_defVlen netcdf_inqUserType netcdf_inqVlen Low-level functions netcdf.getConstant netcdf.getConstantNames netcdf.inqLibVers netcdf.setDefaultFormat netcdf.setChunkCache netcdf.getChunkCache netcdf.create netcdf.open netcdf.abort netcdf.sync netcdf.setFill netcdf.inq netcdf.inqUnlimDims netcdf.inqFormat netcdf.defDim netcdf.renameDim netcdf.defVar netcdf.renameVar netcdf.defVarFill netcdf.inqVarFill netcdf.defVarDeflate netcdf.inqVarDeflate netcdf.defVarChunking netcdf.inqVarChunking netcdf.defVarFletcher32 netcdf.inqVarFletcher32 netcdf.endDef netcdf.reDef netcdf.putVar netcdf.getVar netcdf.close netcdf.inqAttName netcdf.inqAttID netcdf.inqAtt netcdf.getAtt netcdf.putAtt netcdf.copyAtt netcdf.renameAtt netcdf.delAtt netcdf.inqVarID netcdf.inqVarIDs netcdf.inqVar netcdf.inqDim netcdf.inqDimID netcdf.inqDimIDs netcdf.defGrp netcdf.inqGrps netcdf.inqGrpName netcdf.inqGrpNameFull netcdf.inqGrpParent netcdf.inqGrpFullNcid netcdf.inqNcid netcdf.defVlen netcdf.inqUserType netcdf.inqVlen Import functions (Deprecated) import_netcdf Test function test_netcdf netcdf-1.0.18/Makefile0000644000000000000000000002737714674554453011473 0ustar00## Copyright 2015-2016 Carnë Draug ## Copyright 2015-2016 Oliver Heimlich ## Copyright 2017 Julien Bect ## Copyright 2017 Olaf Till ## Copyright 2018-2023 John Donoghue ## ## Copying and distribution of this file, with or without modification, ## are permitted in any medium without royalty provided the copyright ## notice and this notice are preserved. This file is offered as-is, ## without any warranty. TOPDIR := $(shell pwd) ## Some basic tools (can be overriden using environment variables) SED ?= sed TAR ?= tar GREP ?= grep CUT ?= cut TR ?= tr TEXI2PDF ?= texi2pdf -q MAKEINFO ?= makeinfo MAKEINFO_HTML_OPTIONS := --no-headers --set-customization-variable 'COPIABLE_LINKS 0' --set-customization-variable 'COPIABLE_ANCHORS 0' --no-split # work out a possible help generator ifeq ($(strip $(QHELPGENERATOR)),) ifneq ($(shell qhelpgenerator-qt5 -v 2>/dev/null),) QHELPGENERATOR = qhelpgenerator-qt5 else ifneq ($(shell qcollectiongenerator-qt5 -v 2>/dev/null),) QHELPGENERATOR = qcollectiongenerator-qt5 else ifneq ($(shell qcollectiongenerator -qt5 -v 2>/dev/null),) QHELPGENERATOR = qcollectiongenerator -qt5 #else ifneq ($(shell qhelpgenerator -qt5 -v 2>/dev/null),) # # qt4 version wont error on-qt5 but also wont work # QHELPGENERATOR = qhelpgenerator -qt5 else QHELPGENERATOR = true endif endif ## Note the use of ':=' (immediate set) and not just '=' (lazy set). ## http://stackoverflow.com/a/448939/1609556 package := $(shell $(GREP) "^Name: " DESCRIPTION | $(CUT) -f2 -d" " | \ $(TR) '[:upper:]' '[:lower:]') version := $(shell $(GREP) "^Version: " DESCRIPTION | $(CUT) -f2 -d" ") pkg_date := $(shell $(GREP) "^Date: " DESCRIPTION | $(CUT) -f2 -d" ") pkg_year := $(shell $(GREP) "^Date: " DESCRIPTION | $(CUT) -f2 -d" " | $(CUT) -f1 -d"-") ## These are the paths that will be created for the releases. target_dir := target release_dir := $(target_dir)/$(package)-$(version) release_tarball := $(target_dir)/$(package)-$(version).tar.gz html_dir := $(target_dir)/$(package)-html html_tarball := $(target_dir)/$(package)-html.tar.gz ## Using $(realpath ...) avoids problems with symlinks due to bug ## #50994 in Octaves scripts/pkg/private/install.m. But at least the ## release directory above is needed in the relative form, for 'git ## archive --format=tar --prefix=$(release_dir). real_target_dir := $(realpath .)/$(target_dir) installation_dir := $(real_target_dir)/.installation package_list := $(installation_dir)/.octave_packages install_stamp := $(installation_dir)/.install_stamp ## These can be set by environment variables which allow to easily ## test with different Octave versions. ifndef OCTAVE OCTAVE := octave endif OCTAVE := $(OCTAVE) --no-gui --silent --norc MKOCTFILE ?= mkoctfile ## Command used to set permissions before creating tarballs FIX_PERMISSIONS ?= chmod -R a+rX,u+w,go-w,ug-s GIT := git GIT_TIMESTAMP := $(firstword $(shell $(GIT) log -n1 --date=unix --format="%ad")) ## Detect which VCS is used vcs := $(if $(wildcard .hg),hg,$(if $(wildcard .git),git,unknown)) ifeq ($(vcs),hg) release_dir_dep := .hg/dirstate endif ifeq ($(vcs),git) release_dir_dep := .git/index endif TAR_REPRODUCIBLE_OPTIONS := --sort=name --mtime="@$(GIT_TIMESTAMP)" --owner=0 --group=0 --numeric-owner TAR_OPTIONS := --format=ustar $(TAR_REPRODUCIBLE_OPTIONS) ## .PHONY indicates targets that are not filenames ## (https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html) .PHONY: help ## make will display the command before runnning them. Use @command ## to not display it (makes specially sense for echo). help: @echo "Targets:" @echo " dist - Create $(release_tarball) for release." @echo " html - Create $(html_tarball) for release." @echo " release - Create both of the above and show md5sums." @echo " install - Install the package in $(installation_dir), where it is not visible in a normal Octave session." @echo " check - Execute package tests." @echo " doctest - Test the help texts with the doctest package." @echo " run - Run Octave with the package installed in $(installation_dir) in the path." @echo " clean - Remove everything made with this Makefile." ## ## Recipes for release tarballs (package + html) ## .PHONY: release dist html clean-tarballs clean-unpacked-release ## To make a release, build the distribution and html tarballs. release: dist html md5sum $(release_tarball) $(html_tarball) @echo "Upload @ https://sourceforge.net/p/octave/package-releases/new/" @echo " and note the changeset the release corresponds to" ## dist and html targets are only PHONY/alias targets to the release ## and html tarballs. dist: $(release_tarball) html: $(html_tarball) ## An implicit rule with a recipe to build the tarballs correctly. %.tar.gz: % $(TAR) -cf - $(TAR_OPTIONS) -C "$(target_dir)/" "$(notdir $<)" | gzip -9n > "$@" clean-tarballs: @echo "## Cleaning release tarballs (package + html)..." -$(RM) $(release_tarball) $(html_tarball) @echo ## Create the unpacked package. ## ## Notes: ## * having ".hg/dirstate" (or ".git/index") as a prerequesite means it is ## only rebuilt if we are at a different commit. ## * the variable RM usually defaults to "rm -f" ## * having this recipe separate from the one that makes the tarball ## makes it easy to have packages in alternative formats (such as zip) ## * note that if a commands needs to be run in a specific directory, ## the command to "cd" needs to be on the same line. Each line restores ## the original working directory. $(release_dir): $(release_dir_dep) -$(RM) -r "$@" ifeq (${vcs},hg) hg archive --exclude ".hg*" --type files "$@" endif ifeq (${vcs},git) git archive --format=tar --prefix="$@/" HEAD | $(TAR) -x $(RM) "$@/.gitignore" endif ## Don't fall back to run the supposed necessary contents of ## 'bootstrap' here. Users are better off if they provide ## 'bootstrap'. Administrators, checking build reproducibility, can ## put in the missing 'bootstrap' file if they feel they know its ## necessary contents. ifneq (,$(wildcard src/autogen.sh)) cd "$@/src" && ./autogen.sh && $(RM) -r "autom4te.cache" endif ifneq (,$(wildcard doc)) $(MAKE) -C "$@" docs #cd "$@" && $(RM) -f doc/mkfuncdocs.py doc/mkqhcp.py endif cd "$@" && $(RM) -rf devel ## Uncomment this if your src/Makefile.in has these targets for ## pre-building something for the release (e.g. documentation). # cd "$@/src" && ./configure && $(MAKE) prebuild && \ # $(MAKE) distclean && $(RM) Makefile ## ${FIX_PERMISSIONS} "$@" run_in_place = $(OCTAVE) --eval ' pkg ("local_list", "$(package_list)"); ' \ --eval ' pkg ("load", "$(package)"); ' # html_options = --eval 'options = get_html_options ("octave-forge");' ## Uncomment this for package documentation. html_options = --eval 'options = get_html_options ("octave-forge");' #html_options = --eval 'options = get_html_options ("octave-forge");' \ # --eval 'options.package_doc = "$(package).texi";' ifneq (,$(wildcard doc)) html_options += \ --eval 'options.package_doc = "octave-$(package).texi";' \ --eval 'options.package_doc_options = [options.package_doc_options " --css-include=octave-$(package).css"];' endif $(html_dir): $(install_stamp) $(RM) -r "$@"; $(run_in_place) \ --eval ' pkg load generate_html; ' \ $(html_options) \ --eval ' generate_package_html ("$(package)", "$@", options); '; $(FIX_PERMISSIONS) "$@"; clean-unpacked-release: @echo "## Cleaning unpacked release tarballs (package + html)..." -$(RM) -r $(release_dir) $(html_dir) @echo ## ## Recipes for installing the package. ## .PHONY: install clean-install octave_install_commands = \ ' llist_path = pkg ("local_list"); \ mkdir ("$(installation_dir)"); \ load (llist_path); \ local_packages(cellfun (@ (x) strcmp ("$(package)", x.name), local_packages)) = []; \ save ("$(package_list)", "local_packages"); \ pkg ("local_list", "$(package_list)"); \ pkg ("prefix", "$(installation_dir)", "$(installation_dir)"); \ pkg ("install", "-local", "-verbose", "$(release_tarball)"); ' ## Install unconditionally. Maybe useful for testing installation with ## different versions of Octave. install: $(release_tarball) @echo "Installing package under $(installation_dir) ..." $(OCTAVE) --eval $(octave_install_commands) touch $(install_stamp) ## Install only if installation (under target/...) is not current. $(install_stamp): $(release_tarball) @echo "Installing package under $(installation_dir) ..." $(OCTAVE) --eval $(octave_install_commands) touch $(install_stamp) clean-install: @echo "## Cleaning installation under $(installation_dir) ..." -$(RM) -r $(installation_dir) @echo ## ## Recipes for testing purposes ## .PHONY: run doctest check ## Start an Octave session with the package directories on the path for ## interactice test of development sources. run: $(install_stamp) $(run_in_place) --persist ## Test example blocks in the documentation. Needs doctest package ## https://octave.sourceforge.io/doctest/index.html doctest: $(install_stamp) $(run_in_place) --eval 'pkg load doctest;' \ --eval "targets = '$(shell (cd inst && ls *.m) | $(CUT) -f2 -d@ | $(CUT) -f1 -d.)';" \ --eval "targets = strsplit (targets, ' '); doctest (targets);" ## Test package. octave_test_commands = \ ' pkgs = pkg("list", "$(package)"); \ dirs = {pkgs{1}.dir}; \ __run_test_suite__ (dirs, {}); ' ## the following works, too, but provides no overall summary output as ## __run_test_suite__ does: ## ## else cellfun (@runtests, horzcat (cellfun (@ (dir) ostrsplit (([~, dirs] = system (sprintf ("find %s -type d", dir))), "\n\r", true), dirs, "UniformOutput", false){:})); endif ' check: $(install_stamp) $(run_in_place) --eval $(octave_test_commands) ## ## Docs ## .PHONY: docs docs: doc/octave-$(package).pdf doc/octave-$(package).html doc/octave-$(package).qhc clean-docs: $(RM) -f doc/octave-$(package).info $(RM) -f doc/octave-$(package).pdf $(RM) -f doc/octave-$(package).html $(RM) -f doc/functions.texi $(RM) -f doc/version.texi $(RM) -f doc/octave-$(package).qhc doc/octave-$(package).qch doc/version.texi: $(release_dir_dep) @echo Generating $@ @echo "@c autogenerated from Makefile" > $@ @echo "@set VERSION $(version)" >> $@ @echo "@set PACKAGE $(package)" >> $@ @echo "@set DATE $(pkg_date)" >> $@ @echo "@set YEAR $(pkg_year)" >> $@ doc/octave-$(package).pdf: doc/octave-$(package).texi doc/functions.texi doc/version.texi cd doc && SOURCE_DATE_EPOCH=$(GIT_TIMESTAMP) $(TEXI2PDF) octave-$(package).texi # remove temp files cd doc && $(RM) -f octave-$(package).aux octave-$(package).cp octave-$(package).cps octave-$(package).fn octave-$(package).fns octave-$(package).log octave-$(package).toc doc/octave-$(package).html: doc/octave-$(package).texi doc/functions.texi doc/version.texi cd doc && SOURCE_DATE_EPOCH=$(GIT_TIMESTAMP) $(MAKEINFO) --html --css-ref=octave-$(package).css $(MAKEINFO_HTML_OPTIONS) --output=octave-${package}.html octave-$(package).texi doc/functions.texi: $(release_dir_dep) cd doc && ./mkfuncdocs.py --src-dir=../inst/ --src-dir=../src/ --allowscan ../INDEX | $(SED) 's/@seealso/@xseealso/g' > functions.texi doc/octave-$(package).qhc: doc/octave-$(package).html ifeq ($(QHELPGENERATOR),true) $(warning No QHELPGENERATOR ... skipping QT doc build) else cd doc && ./mkqhcp.py octave-$(package) && $(QHELPGENERATOR) octave-$(package).qhcp -o octave-$(package).qhc cd doc && $(RM) octave-$(package).qhcp octave-$(package).qhp endif ## ## CLEAN ## .PHONY: clean clean: clean-tarballs clean-unpacked-release clean-install clean-docs @echo "## Removing target directory (if empty)..." -test -e $(target_dir) && rmdir $(target_dir) @echo @echo "## Cleaning done" @echo netcdf-1.0.18/NEWS0000644000000000000000000000745514674554453010525 0ustar00Summary of important user-visible changes for netcdf 1.0.18: ------------------------------------------------------------------- ** Minor bug fixes ** Minor doc updates Summary of important user-visible changes for netcdf 1.0.17: ------------------------------------------------------------------- ** Fix compiling Octave 9+ ** Add +netcdf package functions ** minor doc updates Summary of important user-visible changes for netcdf 1.0.16: ------------------------------------------------------------------- ** Fix compiling Octave 8+ ** minor doc updates Summary of important user-visible changes for netcdf 1.0.15: ------------------------------------------------------------------- ** Update license to use GPLv3+ ** Add NC_VLEN processing as a user type ** Add user manual ** add warning in getVar if try to read negative ** minor doc updates ** Update requirement of octave version to 4.0+ Summary of important user-visible changes for netcdf 1.0.14: ------------------------------------------------------------------- ** Add NC_STRING type as an octave type ** Minor bugfixes Summary of important user-visible changes for netcdf 1.0.13: ------------------------------------------------------------------- ** Update to depend on Octave 3.8+ ** Update for Octave 5 and newer Summary of important user-visible changes for netcdf 1.0.12: ------------------------------------------------------------------- ** Fix bug #51443: configure in dev octave 4.3.0+ Summary of important user-visible changes for netcdf 1.0.11: ------------------------------------------------------------------- ** Fix cleaning of files (thanks to Rafael Laboissiere) Summary of important user-visible changes for netcdf 1.0.10: ------------------------------------------------------------------- ** Fix bug #46060: building with the --enable-64 option Summary of important user-visible changes for netcdf 1.0.9: ------------------------------------------------------------------- ** Fix bug #47014: writing NaNs Summary of important user-visible changes for netcdf 1.0.8: ------------------------------------------------------------------- ** Fix bug #45190, #46747: netcdf(nccreate) to enable DeflateLevel in nccreate ** Fix bug #46798: using the right delete operator Summary of important user-visible changes for netcdf 1.0.7: ------------------------------------------------------------------- ** Apply patch from John Donoghue to allow cross-compilation (bug #44837) Summary of important user-visible changes for netcdf 1.0.6: ------------------------------------------------------------------- ** ncread: do not replace _FillValue by NaNs for characters ** ncdisp: fix for attributes value with %-sign Summary of important user-visible changes for netcdf 1.0.5: ------------------------------------------------------------------- ** Implement DeflateLevel in nccreate Summary of important user-visible changes for netcdf 1.0.4: ------------------------------------------------------------------- ** Work-around for problem in netcdf 4.1.3 for reading a unlimited variable of current size 0 Summary of important user-visible changes for netcdf 1.0.3: ------------------------------------------------------------------- ** remove NC_INDEPENDENT and NC_COLLECTIVE which are no longer defined in netcdf 4.3.1 Summary of important user-visible changes for netcdf 1.0.2: ------------------------------------------------------------------- ** Avoid obsolete isequalwithequalnans functions Summary of important user-visible changes for netcdf 1.0.1: ------------------------------------------------------------------- ** Fix bug preventing compilation on 32-bit platforms. Summary of important user-visible changes for netcdf 1.0.0: ------------------------------------------------------------------- ** Initial release netcdf-1.0.18/PKG_ADD0000644000000000000000000001231214674554453011026 0ustar00% File automatically generated by PKG_ADD.sh autoload ("netcdf_getConstant", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getConstantNames", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqLibVers", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setDefaultFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_create", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_open", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_abort", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_sync", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inq", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqUnlimDims", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_endDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_reDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_putVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_close", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAttName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAttID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_putAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_copyAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_delAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDimID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDimIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defGrp", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrps", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpNameFull", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpParent", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpFullNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVlen", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVlen", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqUserType", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); netcdf-1.0.18/PKG_DEL0000644000000000000000000001327114674554453011047 0ustar00% File automatically generated by PKG_ADD.sh autoload ("netcdf_getConstant", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getConstantNames", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqLibVers", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setDefaultFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_create", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_open", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_abort", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_sync", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inq", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqUnlimDims", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_endDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_reDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_putVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_close", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAttName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAttID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_putAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_copyAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_delAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDimID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDimIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defGrp", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrps", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpNameFull", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpParent", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpFullNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVlen", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVlen", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqUserType", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); netcdf-1.0.18/README.md0000644000000000000000000000033714674554453011275 0ustar00# octave-netcdf A NetCDF interface for Octave Releases: https://octave.sourceforge.io/netcdf/ Documentation: https://octave.sourceforge.io/netcdf/overview.html Wiki: https://github.com/Alexander-Barth/octave-netcdf/wiki netcdf-1.0.18/doc/0000755000000000000000000000000014674554453010560 5ustar00netcdf-1.0.18/doc/functions.texi0000644000000000000000000016705614674554453013502 0ustar00@c --------------------------------------------------- @node High-level functions @section High-level functions @cindex High-level functions @c High-level functions nccreate @c ----------------------------------------- @subsection nccreate @cindex nccreate @deftypefn {Function File} {} nccreate(@var{filename},@var{varname}) @deftypefnx {Function File} {} nccreate(@var{filename},@var{varname},"property",@var{value},...) Create the variable @var{varname} in the file @var{filename}. @subsubheading Properties The following properties can be used: @itemize @item "Dimensions": a cell array with the dimension names followed by their length or Inf if the dimension is unlimited. If the property is omitted, a scalar variable is created. @item "Datatype": a string with the Octave data type name (see @code{ncinfo} for the correspondence between Octave and NetCDF data types). The default data type is a "double". @item "Format": This can be "netcdf4_classic" (default), "classic", "64bit" or "netcdf4". @item "FillValue": the value used for undefined elements of the NetCDF variable. @item "ChunkSize": the size of the data chunks. If omitted, the variable is not chunked. @item "DeflateLevel": The deflate level for compression. It can be the string "disable" (default) for no compression or an integer between 0 (no compression) and 9 (maximum compression). @item "Shuffle": true for enabling the shuffle filter or false (default) for disabling it. @end itemize @subsubheading Example @example nccreate("test.nc","temp","Dimensions",@{"lon",10,"lat",20@},"Format","classic"); ncdisp("test.nc"); @end example @xseealso{ncwrite} @end deftypefn @c High-level functions ncdisp @c ----------------------------------------- @subsection ncdisp @cindex ncdisp @deftypefn {Function File} {} ncdisp (@var{filename}) Display meta-data of the NetCDF file @var{filename} @subsubheading Example @example ncdisp("test.nc"); @end example @xseealso{ncinfo} @end deftypefn @c High-level functions ncinfo @c ----------------------------------------- @subsection ncinfo @cindex ncinfo @deftypefn {Function File} {@var{info} =} ncinfo (@var{filename}) @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{varname}) @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{groupname}) Return information about an entire NetCDF file @var{filename} (i.e. the root group "/"), about the variable called @var{varname} or the group called @var{groupname}. The structure @var{info} has always the following fields: @itemize @item @var{Filename}: the name of the NetCDF file @item @var{Format}: one of the strings "CLASSIC", "64BIT", "NETCDF4" or "NETCDF4_CLASSIC" @end itemize The structure @var{info} has additional fields depending on whether a group of variable is queried. @subsubheading Groups Groups are returned as an array structure with the following fields: @itemize @item @var{Name}: the group name. The root group is named "/". @item @var{Dimensions}: a array structure with the dimensions. @item @var{Variables}: a array structure with the variables. @item @var{Attributes}: a array structure with global attributes. @item @var{Groups}: a array structure (one for each group) with the same fields as this structure. @end itemize @subsubheading Dimensions Dimensions are returned as an array structure with the following fields: @itemize @item @var{Name}: the name of the dimension @item @var{Length}: the length of the dimension @item @var{Unlimited}: true of the dimension has no fixed limited, false @end itemize @subsubheading Variables Variables are returned as an array structure with the following fields: @itemize @item @var{Name}: the name of the dimension @item @var{Dimensions}: array structure of all dimensions of this variable with the same structure as above. @item @var{Size}: array with the size of the variable @item @var{Datatype}: string with the corresponding octave data-type (see below) @item @var{Attributes}: a array structure of attributes @item @var{FillValue}: the NetCDF fill value of the variable. If the fill value is not defined, then this attribute is an empty array ([]). @item @var{DeflateLevel}: the NetCDF deflate level between 0 (no compression) and 9 (maximum compression). @item @var{Shuffle}: is true if the shuffle filter is activated to improve compression, otherwise false. @item @var{CheckSum}: is set to "fletcher32", if check-sums are used, otherwise this field is not defined. @end itemize @subsubheading Attributes Attributes are returned as an array structure with the following fields: @itemize @item @var{Name}: the name of the attribute @item @var{Value}: the value of the attribute (with the corresponding type) @item @var{Unlimited}: true of the dimension has no fixed limited, false @end itemize @subsubheading Data-types The following the the correspondence between the Octave and NetCDF data-types: @multitable @columnfractions .5 .5 @headitem Octave type @tab NetCDF type @item @code{int8} @tab @code{NC_BYTE} @item @code{uint8} @tab @code{NC_UBYTE} @item @code{int16} @tab @code{NC_SHORT} @item @code{uint16} @tab @code{NC_USHORT} @item @code{int32} @tab @code{NC_INT} @item @code{uint32} @tab @code{NC_UINT} @item @code{int64} @tab @code{NC_INT64} @item @code{uint64} @tab @code{NC_UINT64} @item @code{single} @tab @code{NC_FLOAT} @item @code{double} @tab @code{NC_DOUBLE} @item @code{char} @tab @code{NC_CHAR} @end multitable The output of @code{ncinfo} can be used to create a NetCDF file with the same meta-data using @code{ncwriteschema}. Note: If there are no attributes (or variable or groups), the corresponding field is an empty matrix and not an empty struct array for compatibility with matlab. @xseealso{ncread,nccreate,ncwriteschema,ncdisp} @end deftypefn @c High-level functions ncread @c ----------------------------------------- @subsection ncread @cindex ncread @deftypefn {Function File} {@var{x} =} ncread (@var{filename}, @var{varname}) @deftypefnx {Function File} {@var{x} =} ncread (@var{filename}, @var{varname},@var{start},@var{count},@var{stride}) Read the variable @var{varname} from the NetCDF file @var{filename}. If @var{start},@var{count} and @var{stride} are present, a subset of the variable is loaded. The parameter @var{start} contains the starting indices (1-based), @var{count} is the number of elements and @var{stride} the increment between two successive elements. These parameters are vectors whose length is equal to the number of dimension of the variable. Elements of @var{count} might be Inf which means that as many values as possible are loaded. If the variable has the _FillValue attribute, then the corresponding values are replaced by NaN (except for characters). NetCDF attributes scale_factor (default 1) and add_offset (default 0) are use the transform the variable during the loading: x = scale_factor * x_in_file + add_offset The output data type matches the NetCDF datatype, except when the attributes _FillValue, add_offset or scale_factor are defined in which case the output is a array in double precision. Note that values equal to the attribute missing_value are not replaced by NaN (for compatibility). @subsubheading Example Read the data from variable 'mydata' in the file test.nc. @example data = ncread('test.nc','mydata'); @end example @xseealso{ncwrite,ncinfo,ncdisp} @end deftypefn @c High-level functions ncreadatt @c ----------------------------------------- @subsection ncreadatt @cindex ncreadatt @deftypefn {Function File} {@var{val} =} ncreadatt(@var{filename},@var{varname},@var{attname}) Return the attribute @var{attname} of the variable @var{varname} in the file @var{filename}. Global attributes can be accessed by using "/" or the group name as @var{varname}. The type of attribute is mapped to the Octave data types. (see @code{ncinfo}). @subsubheading Example Read global attribute 'creation_date' @example d = ncreadatt('test.nc','/','creation_date') @end example Read atribute 'myattr' assigned to variable mydata. @example d = ncreadattr('test.nc', 'mydata', 'myattr'); @end example @xseealso{ncinfo,ncwriteatt} @end deftypefn @c High-level functions ncwrite @c ----------------------------------------- @subsection ncwrite @cindex ncwrite @deftypefn {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}) @deftypefnx {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}, @var{start}, @var{stride}) Write array @var{x} to the the variable @var{varname} in the NetCDF file @var{filename}. The variable with the name @var{varname} and the appropriate dimension must already exist in the NetCDF file. If @var{start} and @var{stride} are present, a subset of the variable is written. The parameter @var{start} contains the starting indices (1-based) and @var{stride} the increment between two successive elements. These parameters are vectors whose length is equal to the number of dimension of the variable. If the variable has the _FillValue attribute, then the values equal to NaN are replaced by corresponding fill value NetCDF attributes scale_factor (default 1) and add_oddset (default 0) are use the transform the variable during writing: x_in_file = (x - add_offset)/scale_factor @subsubheading Example Create a netcdf file with a variable of 'mydata' and then write data to that variable. @example nccreate('myfile.nc','mydata'); ncwrite('myfile.nc','mydata', 101); @end example @xseealso{ncread,nccreate} @end deftypefn @c High-level functions ncwriteatt @c ----------------------------------------- @subsection ncwriteatt @cindex ncwriteatt @deftypefn {Function File} {} ncwriteatt(@var{filename},@var{varname},@var{attname},@var{val}) Defines the attribute @var{attname} of the variable @var{varname} in the file @var{filename} with the value @var{val}. Global attributes can be defined by using "/" or the group name as @var{varname}. The type of value is mapped to the NetCDF data types. (see @code{ncinfo}). @subsubheading Example Create a netcdf4 format file with a variable mydata and assign an attribute "units" to it. @example nccreate("myfile.nc", "mydata", "Format", "netcdf4"); ncwriteatt("myfile.nc", "mydata", "Units", "K"); @end example @xseealso{ncinfo} @end deftypefn @c High-level functions ncwriteschema @c ----------------------------------------- @subsection ncwriteschema @cindex ncwriteschema @deftypefn {Function File} {} ncwriteschema (@var{filename}, @var{schema}) Create a NetCDF called @var{filename} with the dimensions, attributes, variables and groups given by the structure @var{schema}. The variable @var{schema} has the same structure as the results of @code{ncinfo}. @code{ncinfo} and @code{ncwriteschema} can be used together to create a NetCDF using another file as a template: @subsubheading Example @example schema = ncinfo("template.nc"); # the new file should be named "new_file.nc" ncwriteschema("new_file.nc",schema); @end example Unused field in @var{schema} such as @var{ChunkSize}, @var{Shuffle}, @var{DeflateLevel}, @var{FillValue}, @var{Checksum} can be left-out if the corresponding feature is not used. Dimensions are considered as limited if the field @var{Unlimited} is missing, unless the dimension length is Inf. @xseealso{ncinfo} @end deftypefn @c --------------------------------------------------- @node Low-level functions (Deprecated) @section Low-level functions (Deprecated) @cindex Low-level functions (Deprecated) @c Low-level functions (Deprecated) netcdf_abort @c ----------------------------------------- @subsection netcdf_abort @cindex netcdf_abort @deftypefn {Loadable Function} {} netcdf_abort(@var{ncid}) Aborts all changes since the last time the dataset entered in define mode. @end deftypefn @xseealso{netcdf_reDef} @c Low-level functions (Deprecated) netcdf_close @c ----------------------------------------- @subsection netcdf_close @cindex netcdf_close @deftypefn {Loadable Function} {} netcdf_close(@var{ncid}) Close the NetCDF file with the id @var{ncid}. @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_copyAtt @c ----------------------------------------- @subsection netcdf_copyAtt @cindex netcdf_copyAtt @deftypefn {Loadable Function} {} netcdf_copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} to the variable @var{varid_out} in the data set @var{ncid_out}. To copy a global attribute use netcdf_getConstant("global") for @var{varid} or @var{varid_out}. @xseealso{netcdf_getAtt,netcdf_getConstant} @end deftypefn @c Low-level functions (Deprecated) netcdf_create @c ----------------------------------------- @subsection netcdf_create @cindex netcdf_create @deftypefn {Loadable Function} {@var{ncid} =} netcdf_create(@var{filename},@var{mode}) Creates the file named @var{filename} in the mode @var{mode} which can have the following values: "clobber" (overwrite existing files), "noclobber" (prevent to overwrite existing files) "64bit_offset" (use the 64bit-offset format), "netcdf4" (use the NetCDF4, i.e. HDF5 format) or "share" (concurrent reading of the dataset). @var{mode} can also be the numeric value return by netcdf_getConstant. In the later-case it can be combined with a bitwise-or. @end deftypefn @subsubheading Example @example mode = bitor(netcdf.getConstant("classic_model"), ... netcdf.getConstant("netcdf4")); ncid = netcdf.create("test.nc",mode); @end example @xseealso{netcdf_close} @c Low-level functions (Deprecated) netcdf_defDim @c ----------------------------------------- @subsection netcdf_defDim @cindex netcdf_defDim @deftypefn {Loadable Function} {@var{dimid} =} netcdf_defDim(@var{ncid},@var{name},@var{len}) Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned. @end deftypefn @xseealso{netcdf_defVar} @c Low-level functions (Deprecated) netcdf_defGrp @c ----------------------------------------- @subsection netcdf_defGrp @cindex netcdf_defGrp @deftypefn {Loadable Function} {@var{new_ncid} =} netcdf_defGrp(@var{ncid},@var{name}) Define a group in a NetCDF file. @xseealso{netcdf_inqGrps} @end deftypefn @c Low-level functions (Deprecated) netcdf_defVar @c ----------------------------------------- @subsection netcdf_defVar @cindex netcdf_defVar @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf_getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. @end deftypefn @xseealso{netcdf_open,netcdf_defDim} @c Low-level functions (Deprecated) netcdf_defVarChunking @c ----------------------------------------- @subsection netcdf_defVarChunking @cindex netcdf_defVarChunking @deftypefn {Loadable Function} {} netcdf_defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) Define the chunking settings of NetCDF variable @var{varid}. If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. @end deftypefn @xseealso{netcdf_inqVarChunking} @c Low-level functions (Deprecated) netcdf_defVarDeflate @c ----------------------------------------- @subsection netcdf_defVarDeflate @cindex netcdf_defVarDeflate @deftypefn {Loadable Function} {} netcdf_defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) Define the compression settings NetCDF variable @var{varid}. If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). @end deftypefn @xseealso{netcdf_inqVarDeflate} @c Low-level functions (Deprecated) netcdf_defVarFill @c ----------------------------------------- @subsection netcdf_defVarFill @cindex netcdf_defVarFill @deftypefn {Loadable Function} {} netcdf_defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) Define the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @xseealso{netcdf_inqVarFill} @c Low-level functions (Deprecated) netcdf_defVarFletcher32 @c ----------------------------------------- @subsection netcdf_defVarFletcher32 @cindex netcdf_defVarFletcher32 @deftypefn {Loadable Function} {} netcdf_defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is "NOCHECKSUM", then checksums will be disabled. @end deftypefn @xseealso{netcdf_defVar,netcdf_inqVarFletcher32} @c Low-level functions (Deprecated) netcdf_defVlen @c ----------------------------------------- @subsection netcdf_defVlen @cindex netcdf_defVlen @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVlen(@var{ncid},@var{typename},@var{basetype}) Defines a NC_VLEN variable length array type with the type name @var{typename} and a base datatype of @var{basetype} in the dataset @var{ncid}. @var{basetype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf_getConstant. The new data type id is returned. @end deftypefn @xseealso{netcdf_open,netcdf_defVar, netcdf_inqVlen} @c Low-level functions (Deprecated) netcdf_delAtt @c ----------------------------------------- @subsection netcdf_delAtt @cindex netcdf_delAtt @deftypefn {Loadable Function} {} netcdf_delAtt(@var{ncid},@var{varid},@var{name}) Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. To delete a global attribute use netcdf_getConstant("global") for @var{varid}. @xseealso{netcdf_defAtt,netcdf_getConstant} @end deftypefn @c Low-level functions (Deprecated) netcdf_endDef @c ----------------------------------------- @subsection netcdf_endDef @cindex netcdf_endDef @deftypefn {Loadable Function} {} netcdf_endDef (@var{ncid}) Leaves define-mode of NetCDF file @var{ncid}. @end deftypefn @xseealso{netcdf_reDef} @c Low-level functions (Deprecated) netcdf_getAtt @c ----------------------------------------- @subsection netcdf_getAtt @cindex netcdf_getAtt @deftypefn {Loadable Function} {@var{data} =} netcdf_getAtt (@var{ncid},@var{varid},@var{name}) Get the value of a NetCDF attribute. This function returns the value of the attribute called @var{name} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_putAtt} @end deftypefn @c Low-level functions (Deprecated) netcdf_getChunkCache @c ----------------------------------------- @subsection netcdf_getChunkCache @cindex netcdf_getChunkCache @deftypefn {Loadable Function} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf_getChunkCache() Gets the default chunk cache settings in the HDF5 library. @end deftypefn @xseealso{netcdf_setChunkCache} @c Low-level functions (Deprecated) netcdf_getConstant @c ----------------------------------------- @subsection netcdf_getConstant @cindex netcdf_getConstant @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstant(@var{name}) Returns the value of a NetCDF constant called @var{name}. @xseealso{netcdf_getConstantNames} @end deftypefn @c Low-level functions (Deprecated) netcdf_getConstantNames @c ----------------------------------------- @subsection netcdf_getConstantNames @cindex netcdf_getConstantNames @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstantNames() Returns a list of all constant names. @end deftypefn @xseealso{netcdf_getConstant} @c Low-level functions (Deprecated) netcdf_getVar @c ----------------------------------------- @subsection netcdf_getVar @cindex netcdf_getVar @deftypefn {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid}) @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start}) @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count}) @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) Get the data from a NetCDF variable. The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), @var{count} is the number of elements of to be written along each dimension (default all elements) and @var{stride} is the sampling interval. @end deftypefn @xseealso{netcdf_putVar} @c Low-level functions (Deprecated) netcdf_inq @c ----------------------------------------- @subsection netcdf_inq @cindex netcdf_inq @deftypefn {Loadable Function} {@var{vers} =} netcdf_inqLibVers() Returns the version of the NetCDF library. @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_inqAtt @c ----------------------------------------- @subsection netcdf_inqAtt @cindex netcdf_inqAtt @deftypefn {Loadable Function} {@var{name} =} netcdf_inqAttName (@var{ncid},@var{varid},@var{attnum}) Get the name of a NetCDF attribute. This function returns the name of the attribute with the id @var{attnum} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_inqAttName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqAttID @c ----------------------------------------- @subsection netcdf_inqAttID @cindex netcdf_inqAttID @deftypefn {Loadable Function} {@var{attnum} =} netcdf_inqAttID(@var{ncid},@var{varid},@var{attname}) Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_inqAttName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqAttName @c ----------------------------------------- @subsection netcdf_inqAttName @cindex netcdf_inqAttName @deftypefn {Loadable Function} {@var{name} =} netcdf_inqAttName (@var{ncid},@var{varid},@var{attnum}) Get the name of a NetCDF attribute. This function returns the name of the attribute with the id @var{attnum} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_inqAttName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqDim @c ----------------------------------------- @subsection netcdf_inqDim @cindex netcdf_inqDim @deftypefn {Loadable Function} {[@var{name},@var{length}] =} netcdf_inqDim(@var{ncid},@var{dimid}) Returns the name and length of a NetCDF dimension. @xseealso{netcdf_inqDimID} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqDimID @c ----------------------------------------- @subsection netcdf_inqDimID @cindex netcdf_inqDimID @deftypefn {Loadable Function} {@var{dimid} =} netcdf_inqDimID(@var{ncid},@var{dimname}) Return the id of a NetCDF dimension. @xseealso{netcdf_inqDim} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqDimIDs @c ----------------------------------------- @subsection netcdf_inqDimIDs @cindex netcdf_inqDimIDs @deftypefn {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid}) @deftypefnx {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid},@var{include_parents}) Return the dimension ids defined in a NetCDF file. If @var{include_parents} is 1, the dimension ids of the parent group are also returned. Per default this is not the case (@var{include_parents} is 0). @xseealso{netcdf_inqDim} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqFormat @c ----------------------------------------- @subsection netcdf_inqFormat @cindex netcdf_inqFormat @deftypefn {Loadable Function} {@var{format} =} netcdf_inqFormat(@var{ncid}) Return the NetCDF format of the dataset @var{ncid}. Format might be one of the following "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC" @end deftypefn @xseealso{netcdf_inq} @c Low-level functions (Deprecated) netcdf_inqGrpFullNcid @c ----------------------------------------- @subsection netcdf_inqGrpFullNcid @cindex netcdf_inqGrpFullNcid @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqGrpFullNcid(@var{ncid},@var{name}) Return the group id based on the full group name. @xseealso{netcdf_inqGrpName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqGrpName @c ----------------------------------------- @subsection netcdf_inqGrpName @cindex netcdf_inqGrpName @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpName(@var{ncid}) Return group name in a NetCDF file. @xseealso{netcdf_inqGrps} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqGrpNameFull @c ----------------------------------------- @subsection netcdf_inqGrpNameFull @cindex netcdf_inqGrpNameFull @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpNameFull(@var{ncid}) Return full name of group in NetCDF file. @xseealso{netcdf_inqGrpName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqGrpParent @c ----------------------------------------- @subsection netcdf_inqGrpParent @cindex netcdf_inqGrpParent @deftypefn {Loadable Function} {@var{parent_ncid} =} netcdf_inqGrpParent(@var{ncid}) Return id of the parent group @xseealso{netcdf_inqGrpName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqGrps @c ----------------------------------------- @subsection netcdf_inqGrps @cindex netcdf_inqGrps @deftypefn {Loadable Function} {@var{ncids} =} netcdf_inqGrps(@var{ncid}) Return all groups ids in a NetCDF file. @xseealso{netcdf_inqGrps} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqLibVers @c ----------------------------------------- @subsection netcdf_inqLibVers @cindex netcdf_inqLibVers @deftypefn {Loadable Function} {@var{vers} =} netcdf_inqLibVers() Returns the version of the NetCDF library. @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_inqNcid @c ----------------------------------------- @subsection netcdf_inqNcid @cindex netcdf_inqNcid @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqNcid(@var{ncid},@var{name}) Return group id based on its name @xseealso{netcdf_inqGrpFullNcid} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqUnlimDims @c ----------------------------------------- @subsection netcdf_inqUnlimDims @cindex netcdf_inqUnlimDims @deftypefn {Loadable Function} {@var{unlimdimids} =} netcdf_inqUnlimDims(@var{ncid}) Return the id of all unlimited dimensions of the NetCDF file @var{ncid}. @end deftypefn @xseealso{netcdf_inq} @c Low-level functions (Deprecated) netcdf_inqUserType @c ----------------------------------------- @subsection netcdf_inqUserType @cindex netcdf_inqUserType @deftypefn {Loadable Function} {[@var{typename}, @var{bytesize}, @var{basetypeid}, @var{numfields}, @var{classid}] = } netcdf_inqUserType(@var{ncid},@var{typeid}) Provide information on a user defined type @var{typeid} in the dataset @var{ncid}. The function returns the typename, bytesize, base type id, number of fields and class identifier of the type. @end deftypefn @xseealso{netcdf_open, netcdf_defVlen, netcdf_inqVlen} @c Low-level functions (Deprecated) netcdf_inqVar @c ----------------------------------------- @subsection netcdf_inqVar @cindex netcdf_inqVar @deftypefn {Loadable Function} {[@var{no_fill},@var{fillvalue}] = } netcdf_inqVarFill(@var{ncid},@var{varid}) Determines the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @xseealso{netcdf_defVarFill} @c Low-level functions (Deprecated) netcdf_inqVarChunking @c ----------------------------------------- @subsection netcdf_inqVarChunking @cindex netcdf_inqVarChunking @deftypefn {Loadable Function} {[@var{storage},@var{chunkSizes}] = } netcdf_inqVarChunking (@var{ncid},@var{varid}) Determines the chunking settings of NetCDF variable @var{varid}. If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. @end deftypefn @xseealso{netcdf_defVarChunking} @c Low-level functions (Deprecated) netcdf_inqVarDeflate @c ----------------------------------------- @subsection netcdf_inqVarDeflate @cindex netcdf_inqVarDeflate @deftypefn {Loadable Function} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf_inqVarDeflate (@var{ncid},@var{varid}) Determines the compression settings NetCDF variable @var{varid}. If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). @end deftypefn @xseealso{netcdf_defVarDeflate} @c Low-level functions (Deprecated) netcdf_inqVarFill @c ----------------------------------------- @subsection netcdf_inqVarFill @cindex netcdf_inqVarFill @deftypefn {Loadable Function} {[@var{no_fill},@var{fillvalue}] = } netcdf_inqVarFill(@var{ncid},@var{varid}) Determines the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @xseealso{netcdf_defVarFill} @c Low-level functions (Deprecated) netcdf_inqVarFletcher32 @c ----------------------------------------- @subsection netcdf_inqVarFletcher32 @cindex netcdf_inqVarFletcher32 @deftypefn {Loadable Function} {@var{checksum} =} netcdf_inqVarFletcher32(@var{ncid},@var{varid}) Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM". @end deftypefn @xseealso{netcdf_defVar,netcdf_inqVarFletcher32} @c Low-level functions (Deprecated) netcdf_inqVarID @c ----------------------------------------- @subsection netcdf_inqVarID @cindex netcdf_inqVarID @deftypefn {Loadable Function} {@var{varid} = } netcdf_inqVarID (@var{ncid},@var{name}) Return the id of a variable based on its name. @xseealso{netcdf_defVar,netcdf_inqVarIDs} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqVarIDs @c ----------------------------------------- @subsection netcdf_inqVarIDs @cindex netcdf_inqVarIDs @deftypefn {Loadable Function} {@var{varids} = } netcdf_inqVarID (@var{ncid}) Return all variable ids. This functions returns all variable ids in a NetCDF file or NetCDF group. @xseealso{netcdf_inqVarID} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqVlen @c ----------------------------------------- @subsection netcdf_inqVlen @cindex netcdf_inqVlen @deftypefn {Loadable Function} {[@var{typename}, @var{bytesize}, @var{basetypeid}] = } netcdf_inqVlen(@var{ncid},@var{typeid}) Provide information on a NC_VLEN variable length array type @var{typeid} in the dataset @var{ncid}. The function returns the typename, bytesize, and base type id. @end deftypefn @xseealso{netcdf_open, netcdf_defVlen} @c Low-level functions (Deprecated) netcdf_open @c ----------------------------------------- @subsection netcdf_open @cindex netcdf_open @deftypefn {Loadable Function} {@var{ncid} =} netcdf_open(@var{filename},@var{mode}) Opens the file named @var{filename} in the mode @var{mode}. @end deftypefn @xseealso{netcdf_close} @c Low-level functions (Deprecated) netcdf_putAtt @c ----------------------------------------- @subsection netcdf_putAtt @cindex netcdf_putAtt @deftypefn {Loadable Function} {} netcdf_putAtt (@var{ncid},@var{varid},@var{name},@var{data}) Defines a NetCDF attribute. This function defines the attribute called @var{name} of the variable @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_getAtt} @end deftypefn @c Low-level functions (Deprecated) netcdf_putVar @c ----------------------------------------- @subsection netcdf_putVar @cindex netcdf_putVar @deftypefn {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{data}) @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{data}) @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) Put data in a NetCDF variable. The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), @var{count} is the number of elements of to be written along each dimension (default all elements) and @var{stride} is the sampling interval. @end deftypefn @xseealso{netcdf_endDef} @c Low-level functions (Deprecated) netcdf_reDef @c ----------------------------------------- @subsection netcdf_reDef @cindex netcdf_reDef @deftypefn {Loadable Function} {} netcdf_reDef (@var{ncid}) Enter define-mode of NetCDF file @var{ncid}. @end deftypefn @xseealso{netcdf_endDef} @c Low-level functions (Deprecated) netcdf_renameAtt @c ----------------------------------------- @subsection netcdf_renameAtt @cindex netcdf_renameAtt @deftypefn {Loadable Function} {} netcdf_renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute. To rename a global attribute use netcdf_getConstant("global") for @var{varid}. @xseealso{netcdf_copyAtt,netcdf_getConstant} @end deftypefn @c Low-level functions (Deprecated) netcdf_renameDim @c ----------------------------------------- @subsection netcdf_renameDim @cindex netcdf_renameDim @deftypefn {Loadable Function} {} netcdf_renameDim(@var{ncid},@var{dimid},@var{name}) Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension. @end deftypefn @xseealso{netcdf_defDim} @c Low-level functions (Deprecated) netcdf_renameVar @c ----------------------------------------- @subsection netcdf_renameVar @cindex netcdf_renameVar @deftypefn {Loadable Function} {} netcdf_renameVar(@var{ncid},@var{varid},@var{name}) Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable. @end deftypefn @xseealso{netcdf_defVar} @c Low-level functions (Deprecated) netcdf_setChunkCache @c ----------------------------------------- @subsection netcdf_setChunkCache @cindex netcdf_setChunkCache @deftypefn {Loadable Function} {} netcdf_setChunkCache(@var{size}, @var{nelems}, @var{preemption}) Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created. @end deftypefn @xseealso{netcdf_getChunkCache} @c Low-level functions (Deprecated) netcdf_setDefaultFormat @c ----------------------------------------- @subsection netcdf_setDefaultFormat @cindex netcdf_setDefaultFormat @deftypefn {Loadable Function} {@var{old_format} =} netcdf_setDefaultFormat(@var{format}) Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic". @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_setFill @c ----------------------------------------- @subsection netcdf_setFill @cindex netcdf_setFill @deftypefn {Loadable Function} {@var{old_mode} =} netcdf_setFill(@var{ncid},@var{fillmode}) Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either "fill" or "nofill". @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_sync @c ----------------------------------------- @subsection netcdf_sync @cindex netcdf_sync @deftypefn {Loadable Function} {} netcdf_sync(@var{ncid}) Writes all changes to the disk and leaves the file open. @end deftypefn @xseealso{netcdf_close} @c --------------------------------------------------- @node Low-level functions @section Low-level functions @cindex Low-level functions @c Low-level functions netcdf.abort @c ----------------------------------------- @subsection netcdf.abort @cindex abort @deftypefn {} {} netcdf.abort(@var{ncid}) Aborts all changes since the last time the dataset entered in define mode. @end deftypefn @c Low-level functions netcdf.close @c ----------------------------------------- @subsection netcdf.close @cindex close @deftypefn {} {} netcdf.close(@var{ncid}) Close the NetCDF file with the id @var{ncid}. @end deftypefn @c Low-level functions netcdf.copyAtt @c ----------------------------------------- @subsection netcdf.copyAtt @cindex copyAtt @deftypefn {} {} netcdf.copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} to the variable @var{varid_out} in the data set @var{ncid_out}. To copy a global attribute use netcdf.getConstant("global") for @var{varid} or @var{varid_out}. @xseealso{netcdf.getAtt,netcdf.getConstant} @end deftypefn @c Low-level functions netcdf.create @c ----------------------------------------- @subsection netcdf.create @cindex create @deftypefn {} {@var{ncid} =} netcdf.create(@var{filename},@var{mode}) Creates the file named @var{filename} in the mode @var{mode} which can have the following values: "clobber" (overwrite existing files), "noclobber" (prevent to overwrite existing files) "64bit_offset" (use the 64bit-offset format), "netcdf4" (use the NetCDF4, i.e. HDF5 format) or "share" (concurrent reading of the dataset). @var{mode} can also be the numeric value return by netcdf.getConstant. In the later-case it can be combined with a bitwise-or. @end deftypefn @subsubheading Example @example mode = bitor(netcdf.getConstant("classic_model"), ... netcdf.getConstant("netcdf4")); ncid = netcdf.create("test.nc",mode); @end example @c Low-level functions netcdf.defDim @c ----------------------------------------- @subsection netcdf.defDim @cindex defDim @deftypefn {} {@var{dimid} =} netcdf.defDim(@var{ncid},@var{name},@var{len}) Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned. @end deftypefn @c Low-level functions netcdf.defGrp @c ----------------------------------------- @subsection netcdf.defGrp @cindex defGrp @deftypefn {} {@var{new_ncid} =} netcdf.defGrp(@var{ncid},@var{name}) Define a group in a NetCDF file. @xseealso{netcdf.inqGrps} @end deftypefn @c Low-level functions netcdf.defVar @c ----------------------------------------- @subsection netcdf.defVar @cindex defVar @deftypefn {} {@var{varid} = } netcdf.defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. @end deftypefn @c Low-level functions netcdf.defVarChunking @c ----------------------------------------- @subsection netcdf.defVarChunking @cindex defVarChunking @deftypefn {} {} netcdf.defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) Define the chunking settings of NetCDF variable @var{varid}. If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. @end deftypefn @c Low-level functions netcdf.defVarDeflate @c ----------------------------------------- @subsection netcdf.defVarDeflate @cindex defVarDeflate @deftypefn {} {} netcdf.defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) Define the compression settings NetCDF variable @var{varid}. If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). @end deftypefn @c Low-level functions netcdf.defVarFill @c ----------------------------------------- @subsection netcdf.defVarFill @cindex defVarFill @deftypefn {} {} netcdf.defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) Define the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @c Low-level functions netcdf.defVarFletcher32 @c ----------------------------------------- @subsection netcdf.defVarFletcher32 @cindex defVarFletcher32 @deftypefn {} {} netcdf.defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is "NOCHECKSUM", then checksums will be disabled. @end deftypefn @c Low-level functions netcdf.defVlen @c ----------------------------------------- @subsection netcdf.defVlen @cindex defVlen @deftypefn {} {@var{varid} = } netcdf.defVlen(@var{ncid},@var{typename},@var{basetype}) Defines a NC_VLEN variable length array type with the type name @var{typename} and a base datatype of @var{basetype} in the dataset @var{ncid}. @var{basetype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The new data type id is returned. @end deftypefn @c Low-level functions netcdf.delAtt @c ----------------------------------------- @subsection netcdf.delAtt @cindex delAtt @deftypefn {} {} netcdf.delAtt(@var{ncid},@var{varid},@var{name}) Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. To delete a global attribute use netcdf.getConstant("global") for @var{varid}. @xseealso{netcdf.defAtt,netcdf.getConstant} @end deftypefn @c Low-level functions netcdf.endDef @c ----------------------------------------- @subsection netcdf.endDef @cindex endDef @deftypefn {} {} netcdf.endDef (@var{ncid}) Leaves define-mode of NetCDF file @var{ncid}. @end deftypefn @c Low-level functions netcdf.getAtt @c ----------------------------------------- @subsection netcdf.getAtt @cindex getAtt @deftypefn {} {@var{data} =} netcdf.getAtt (@var{ncid},@var{varid},@var{name}) Get the value of a NetCDF attribute. This function returns the value of the attribute called @var{name} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf.getConstant("global"). @xseealso{netcdf.putAtt} @end deftypefn @c Low-level functions netcdf.getChunkCache @c ----------------------------------------- @subsection netcdf.getChunkCache @cindex getChunkCache @deftypefn {} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf.getChunkCache() Gets the default chunk cache settings in the HDF5 library. @end deftypefn @c Low-level functions netcdf.getConstant @c ----------------------------------------- @subsection netcdf.getConstant @cindex getConstant @deftypefn {} {@var{value} =} netcdf.getConstant(@var{name}) Returns the value of a NetCDF constant called @var{name}. @xseealso{netcdf.getConstantNames} @end deftypefn @c Low-level functions netcdf.getConstantNames @c ----------------------------------------- @subsection netcdf.getConstantNames @cindex getConstantNames @deftypefn {} {@var{value} =} netcdf.getConstantNames() Returns a list of all constant names. @end deftypefn @c Low-level functions netcdf.getVar @c ----------------------------------------- @subsection netcdf.getVar @cindex getVar @deftypefn {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid}) @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start}) @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start},@var{count}) @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) Get the data from a NetCDF variable. The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), @var{count} is the number of elements of to be written along each dimension (default all elements) and @var{stride} is the sampling interval. @end deftypefn @c Low-level functions netcdf.inq @c ----------------------------------------- @subsection netcdf.inq @cindex inq @deftypefn {} {[@var{ndims},@var{nvars},@var{ngatts},@var{unlimdimid}] =} netcdf.inq(@var{ncid}) Return the number of dimension (@var{ndims}), the number of variables (@var{nvars}), the number of global attributes (@var{ngatts}) and the id of the unlimited dimension (@var{unlimdimid}). If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use the function netcdf.inqUnlimDims as multiple unlimite dimension exists. @end deftypefn @c Low-level functions netcdf.inqAtt @c ----------------------------------------- @subsection netcdf.inqAtt @cindex inqAtt @deftypefn {} {[@var{xtype},@var{len}] = } netcdf.inqAtt(@var{ncid},@var{varid},@var{name}) Get attribute type and length. @xseealso{netcdf.inqAttName} @end deftypefn @c Low-level functions netcdf.inqAttID @c ----------------------------------------- @subsection netcdf.inqAttID @cindex inqAttID @deftypefn {} {@var{attnum} =} netcdf.inqAttID(@var{ncid},@var{varid},@var{attname}) Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. For global attributes @var{varid} can be netcdf.getConstant("global"). @xseealso{netcdf.inqAttName} @end deftypefn @c Low-level functions netcdf.inqAttName @c ----------------------------------------- @subsection netcdf.inqAttName @cindex inqAttName @deftypefn {} {@var{name} =} netcdf.inqAttName (@var{ncid},@var{varid},@var{attnum}) Get the name of a NetCDF attribute. This function returns the name of the attribute with the id @var{attnum} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf.getConstant("global"). @xseealso{netcdf.inqAttName} @end deftypefn @c Low-level functions netcdf.inqDim @c ----------------------------------------- @subsection netcdf.inqDim @cindex inqDim @deftypefn {} {[@var{name},@var{length}] =} netcdf.inqDim(@var{ncid},@var{dimid}) Returns the name and length of a NetCDF dimension. @xseealso{netcdf.inqDimID} @end deftypefn @c Low-level functions netcdf.inqDimID @c ----------------------------------------- @subsection netcdf.inqDimID @cindex inqDimID @deftypefn {} {@var{dimid} =} netcdf.inqDimID(@var{ncid},@var{dimname}) Return the id of a NetCDF dimension. @xseealso{netcdf.inqDim} @end deftypefn @c Low-level functions netcdf.inqDimIDs @c ----------------------------------------- @subsection netcdf.inqDimIDs @cindex inqDimIDs @deftypefn {} {@var{dimids} =} netcdf.inqDimID(@var{ncid}) @deftypefnx {} {@var{dimids} =} netcdf.inqDimID(@var{ncid},@var{include_parents}) Return the dimension ids defined in a NetCDF file. If @var{include_parents} is 1, the dimension ids of the parent group are also returned. Per default this is not the case (@var{include_parents} is 0). @xseealso{netcdf.inqDim} @end deftypefn @c Low-level functions netcdf.inqFormat @c ----------------------------------------- @subsection netcdf.inqFormat @cindex inqFormat @deftypefn {} {@var{format} =} netcdf.inqFormat(@var{ncid}) Return the NetCDF format of the dataset @var{ncid}. Format might be one of the following "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC" @end deftypefn @c Low-level functions netcdf.inqGrpFullNcid @c ----------------------------------------- @subsection netcdf.inqGrpFullNcid @cindex inqGrpFullNcid @deftypefn {} {@var{grp_ncid} =} netcdf.inqGrpFullNcid(@var{ncid},@var{name}) Return the group id based on the full group name. @xseealso{netcdf.inqGrpName} @end deftypefn @c Low-level functions netcdf.inqGrpName @c ----------------------------------------- @subsection netcdf.inqGrpName @cindex inqGrpName @deftypefn {} {@var{name} =} netcdf.inqGrpName(@var{ncid}) Return group name in a NetCDF file. @xseealso{netcdf.inqGrps} @end deftypefn @c Low-level functions netcdf.inqGrpNameFull @c ----------------------------------------- @subsection netcdf.inqGrpNameFull @cindex inqGrpNameFull @deftypefn {} {@var{name} =} netcdf.inqGrpNameFull(@var{ncid}) Return full name of group in NetCDF file. @xseealso{netcdf.inqGrpName} @end deftypefn @c Low-level functions netcdf.inqGrpParent @c ----------------------------------------- @subsection netcdf.inqGrpParent @cindex inqGrpParent @deftypefn {} {@var{parent_ncid} =} netcdf.inqGrpParent(@var{ncid}) Return id of the parent group @xseealso{netcdf.inqGrpName} @end deftypefn @c Low-level functions netcdf.inqGrps @c ----------------------------------------- @subsection netcdf.inqGrps @cindex inqGrps @deftypefn {} {@var{ncids} =} netcdf.inqGrps(@var{ncid}) Return all groups ids in a NetCDF file. @xseealso{netcdf.inqGrps} @end deftypefn @c Low-level functions netcdf.inqLibVers @c ----------------------------------------- @subsection netcdf.inqLibVers @cindex inqLibVers @deftypefn {} {@var{vers} =} netcdf.inqLibVers() Returns the version of the NetCDF library. @end deftypefn @c Low-level functions netcdf.inqNcid @c ----------------------------------------- @subsection netcdf.inqNcid @cindex inqNcid @deftypefn {} {@var{grp_ncid} =} netcdf.inqNcid(@var{ncid},@var{name}) Return group id based on its name @xseealso{netcdf.inqGrpFullNcid} @end deftypefn @c Low-level functions netcdf.inqUnlimDims @c ----------------------------------------- @subsection netcdf.inqUnlimDims @cindex inqUnlimDims @deftypefn {} {@var{unlimdimids} =} netcdf.inqUnlimDims(@var{ncid}) Return the id of all unlimited dimensions of the NetCDF file @var{ncid}. @end deftypefn @c Low-level functions netcdf.inqUserType @c ----------------------------------------- @subsection netcdf.inqUserType @cindex inqUserType @deftypefn {} {[@var{typename}, @var{bytesize}, @var{basetypeid}, @var{numfields}, @var{classid}] = } netcdf.inqUserType(@var{ncid},@var{typeid}) Provide information on a user defined type @var{typeid} in the dataset @var{ncid}. The function returns the typename, bytesize, base type id, number of fields and class identifier of the type. @end deftypefn @c Low-level functions netcdf.inqVar @c ----------------------------------------- @subsection netcdf.inqVar @cindex inqVar @deftypefn {} {[@var{name},@var{nctype},@var{dimids},@var{nattr}] = } netcdf.inqVar (@var{ncid},@var{varid}) Inquires information about a NetCDF variable. This functions returns the @var{name}, the NetCDF type @var{nctype}, an array of dimension ids @var{dimids} and the number of attributes @var{nattr} of the NetCDF variable. @var{nctype} in an integer corresponding NetCDF constants. @xseealso{netcdf.inqVarID,netcdf.getConstant} @end deftypefn @c Low-level functions netcdf.inqVarChunking @c ----------------------------------------- @subsection netcdf.inqVarChunking @cindex inqVarChunking @deftypefn {} {[@var{storage},@var{chunkSizes}] = } netcdf.inqVarChunking (@var{ncid},@var{varid}) Determines the chunking settings of NetCDF variable @var{varid}. If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. @end deftypefn @c Low-level functions netcdf.inqVarDeflate @c ----------------------------------------- @subsection netcdf.inqVarDeflate @cindex inqVarDeflate @deftypefn {} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf.inqVarDeflate (@var{ncid},@var{varid}) Determines the compression settings NetCDF variable @var{varid}. If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). @end deftypefn @c Low-level functions netcdf.inqVarFill @c ----------------------------------------- @subsection netcdf.inqVarFill @cindex inqVarFill @deftypefn {} {[@var{no_fill},@var{fillvalue}] = } netcdf.inqVarFill(@var{ncid},@var{varid}) Determines the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @c Low-level functions netcdf.inqVarFletcher32 @c ----------------------------------------- @subsection netcdf.inqVarFletcher32 @cindex inqVarFletcher32 @deftypefn {} {@var{checksum} =} netcdf.inqVarFletcher32(@var{ncid},@var{varid}) Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM". @end deftypefn @c Low-level functions netcdf.inqVarID @c ----------------------------------------- @subsection netcdf.inqVarID @cindex inqVarID @deftypefn {} {@var{varid} = } netcdf.inqVarID (@var{ncid},@var{name}) Return the id of a variable based on its name. @xseealso{netcdf.defVar,netcdf.inqVarIDs} @end deftypefn @c Low-level functions netcdf.inqVarIDs @c ----------------------------------------- @subsection netcdf.inqVarIDs @cindex inqVarIDs @deftypefn {} {@var{varids} = } netcdf.inqVarID (@var{ncid}) Return all variable ids. This functions returns all variable ids in a NetCDF file or NetCDF group. @xseealso{netcdf.inqVarID} @end deftypefn @c Low-level functions netcdf.inqVlen @c ----------------------------------------- @subsection netcdf.inqVlen @cindex inqVlen @deftypefn {} {[@var{typename}, @var{bytesize}, @var{basetypeid}] = } netcdf.inqVlen(@var{ncid},@var{typeid}) Provide information on a NC_VLEN variable length array type @var{typeid} in the dataset @var{ncid}. The function returns the typename, bytesize, and base type id. @end deftypefn @c Low-level functions netcdf.open @c ----------------------------------------- @subsection netcdf.open @cindex open @deftypefn {} {@var{ncid} =} netcdf.open(@var{filename},@var{mode}) Opens the file named @var{filename} in the mode @var{mode}. @end deftypefn @c Low-level functions netcdf.putAtt @c ----------------------------------------- @subsection netcdf.putAtt @cindex putAtt @deftypefn {} {} netcdf.putAtt (@var{ncid},@var{varid},@var{name},@var{data}) Defines a NetCDF attribute. This function defines the attribute called @var{name} of the variable @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. For global attributes @var{varid} can be netcdf.getConstant("global"). @xseealso{netcdf.getAtt} @end deftypefn @c Low-level functions netcdf.putVar @c ----------------------------------------- @subsection netcdf.putVar @cindex putVar @deftypefn {} {} netcdf.putVar (@var{ncid},@var{varid},@var{data}) @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{data}) @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) Put data in a NetCDF variable. The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), @var{count} is the number of elements of to be written along each dimension (default all elements) and @var{stride} is the sampling interval. @end deftypefn @c Low-level functions netcdf.reDef @c ----------------------------------------- @subsection netcdf.reDef @cindex reDef @deftypefn {} {} netcdf.reDef (@var{ncid}) Enter define-mode of NetCDF file @var{ncid}. @end deftypefn @c Low-level functions netcdf.renameAtt @c ----------------------------------------- @subsection netcdf.renameAtt @cindex renameAtt @deftypefn {} {} netcdf.renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute. To rename a global attribute use netcdf.getConstant("global") for @var{varid}. @xseealso{netcdf.copyAtt,netcdf.getConstant} @end deftypefn @c Low-level functions netcdf.renameDim @c ----------------------------------------- @subsection netcdf.renameDim @cindex renameDim @deftypefn {} {} netcdf.renameDim(@var{ncid},@var{dimid},@var{name}) Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension. @end deftypefn @c Low-level functions netcdf.renameVar @c ----------------------------------------- @subsection netcdf.renameVar @cindex renameVar @deftypefn {} {} netcdf.renameVar(@var{ncid},@var{varid},@var{name}) Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable. @end deftypefn @c Low-level functions netcdf.setChunkCache @c ----------------------------------------- @subsection netcdf.setChunkCache @cindex setChunkCache @deftypefn {} {} netcdf.setChunkCache(@var{size}, @var{nelems}, @var{preemption}) Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created. @end deftypefn @c Low-level functions netcdf.setDefaultFormat @c ----------------------------------------- @subsection netcdf.setDefaultFormat @cindex setDefaultFormat @deftypefn {} {@var{old_format} =} netcdf.setDefaultFormat(@var{format}) Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic". @end deftypefn @c Low-level functions netcdf.setFill @c ----------------------------------------- @subsection netcdf.setFill @cindex setFill @deftypefn {} {@var{old_mode} =} netcdf.setFill(@var{ncid},@var{fillmode}) Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either "fill" or "nofill". @end deftypefn @c Low-level functions netcdf.sync @c ----------------------------------------- @subsection netcdf.sync @cindex sync @deftypefn {} {} netcdf.sync(@var{ncid}) Writes all changes to the disk and leaves the file open. @end deftypefn @c --------------------------------------------------- @node Import functions (Deprecated) @section Import functions (Deprecated) @cindex Import functions (Deprecated) @c Import functions (Deprecated) import_netcdf @c ----------------------------------------- @subsection import_netcdf @cindex import_netcdf @deftypefn {} {} import_fits Dummy function provided to provide compatibility with older versions of GNU Octave netcdf Function is deprecated. @end deftypefn @c --------------------------------------------------- @node Test function @section Test function @cindex Test function @c Test function test_netcdf @c ----------------------------------------- @subsection test_netcdf @cindex test_netcdf @deftypefn {} {} test_netcdf Function to do a basic test of the netcdf interface @end deftypefn netcdf-1.0.18/doc/gpl.texi0000644000000000000000000010433014674554453012236 0ustar00@node Copying @appendix GNU General Public License @cindex warranty @cindex copyright @center Version 3, 29 June 2007 @display Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @end display @heading 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. @heading TERMS AND CONDITIONS @enumerate 0 @item 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. @item 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. @item 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. @item 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. @item 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. @item 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: @enumerate a @item The work must carry prominent notices stating that you modified it, and giving a relevant date. @item 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''. @item 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. @item 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. @end enumerate 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. @item 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: @enumerate a @item 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. @item 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. @item 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. @item 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. @item 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. @end enumerate 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. @item 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: @enumerate a @item Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or @item 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 @item 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 @item Limiting the use for publicity purposes of names of licensors or authors of the material; or @item Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or @item 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. @end enumerate 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. @item 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. @item 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. @item 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. @item 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. @item 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. @item 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. @item 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. @item 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. @item 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. @item 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 enumerate @heading END OF TERMS AND CONDITIONS @heading 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. @smallexample @var{one line to give the program's name and a brief idea of what it does.} Copyright (C) @var{year} @var{name of author} 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 @url{http://www.gnu.org/licenses/}. @end smallexample 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: @smallexample @var{program} Copyright (C) @var{year} @var{name of author} This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}. This is free software, and you are welcome to redistribute it under certain conditions; type @samp{show c} for details. @end smallexample The hypothetical commands @samp{show w} and @samp{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 @url{http://www.gnu.org/licenses/}. 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 @url{http://www.gnu.org/philosophy/why-not-lgpl.html}. netcdf-1.0.18/doc/macros.texi0000644000000000000000000000624114674554453012742 0ustar00@c Copyright (C) 2012-2019 John W. Eaton @c @c This file is part of Octave. @c @c Octave is free software: you can redistribute it and/or modify it @c under the terms of the GNU General Public License as published by @c the Free Software Foundation, either version 3 of the License, or @c (at your option) any later version. @c @c Octave is distributed in the hope that it will be useful, but @c WITHOUT ANY WARRANTY; without even the implied warranty of @c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @c GNU General Public License for more details. @c @c You should have received a copy of the GNU General Public License @c along with Octave; see the file COPYING. If not, see @c . @c The following macro marks words that aspell should ignore during @c spellchecking. Within Texinfo it has no effect as it merely replaces @c the macro call with the argument itself. @macro nospell {arg} \arg\ @end macro @c The following macro works around the Info/plain text expansion of @code{XXX} @c which is `XXX'. This looks particularly bad when the macro body is @c single or double-quoted text, such as a property value `"position"' @ifinfo @macro qcode{arg} \arg\ @end macro @end ifinfo @ifnotinfo @macro qcode{arg} @code{\arg\} @end macro @end ifnotinfo @c The following macro is used for the on-line help system, but we don't @c want lots of `See also: foo, bar, and baz' strings cluttering the @c printed manual (that information should be in the supporting text for @c each group of functions and variables). @c @c Implementation Note: @c For TeX, @vskip produces a nice separation. @c For Texinfo, '@sp 1' should work, but in practice produces ugly results @c for HTML. We use a simple blank line to produce the correct @c behavior. @c @c We use @xseealso now because Texinfo introduced its own @seealso @c command. But instead of modifying all source files, we'll have the @c munge-texi script convert @seealso to @xseealso. @macro xseealso {args} @iftex @vskip 2pt @end iftex @ifnottex @end ifnottex @ifnotinfo @noindent @strong{See also:} \args\. @end ifnotinfo @ifinfo @noindent See also: \args\. @end ifinfo @end macro @c The following macro works around a situation where the Info/plain text @c expansion of the @code{XXX} macro is `XXX'. The use of the apostrophe @c can be confusing if the code segment itself ends with a transpose operator. @ifinfo @macro tcode{arg} \arg\ @end macro @end ifinfo @ifnotinfo @macro tcode{arg} @code{\arg\} @end macro @end ifnotinfo @c FIXME: someday, when Texinfo 5.X is standard, we might replace this with @c @backslashchar, which is a new addition to Texinfo. @macro xbackslashchar \\ @end macro @c These may be useful for all, not just for octave.texi. @tex \ifx\rgbDarkRed\thisisundefined \def\rgbDarkRed{0.50 0.09 0.12} \fi \ifx\linkcolor\thisisundefined \relax \else \global\def\linkcolor{\rgbDarkRed} \fi \ifx\urlcolor\thisisundefined \relax \else \global\def\urlcolor{\rgbDarkRed} \fi \ifx\urefurlonlylinktrue\thisisundefined \relax \else \global\urefurlonlylinktrue \fi @end tex @c Make the apostrophe in code examples cut-and-paste friendly. @codequoteundirected on netcdf-1.0.18/doc/mkfuncdocs.py0000755000000000000000000002766114674554453013305 0ustar00#!/usr/bin/python3 ## Copyright 2018-2024 John Donoghue ## ## 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 ## . ## mkfuncdocs v1.0.8 ## mkfuncdocs.py will attempt to extract the help texts from functions in src ## dirs, extracting only those that are in the specifed INDEX file and output them ## to stdout in texi format ## ## It will extract from both .m and the help text for DEFUN_DLD help in .cc/.cpp ## files. ## ## It attempts to find the help text for each function in a file within the src search ## folders that match in order: [ functionname.m functionname.cc functionname.cpp ## functionname_withoutprefix.cc functionname_withoutprefix.cpp ] ## ## Usage: ## mkfundocs.py options INDEXfile ## Options can be 0 or more of: ## --verbose : Turn on verbose mode ## --src-dir=xxxxx : Add dir xxxxx to the dirs searched for the function file. ## If no directories are provided, it will default to looking in the ## 'inst' directory. ## --ignore=xxxxx : dont attempt to generate help for function xxxxx. ## --funcprefix=xxxxx : remove xxxxx from the function name when searching for matching ## source file. ## --allowscan : if can not find function, attemp to scan .cc,cpp,cxx files for match ## ## --standalone : generate a texinfo file expected to be used with being included in ## another document file. import sys import os import re import tempfile import shutil import fnmatch import subprocess import glob import calendar; import time; class Group: name = "Functions" functions = [] def __init__ (self, name=""): if name: self.name = name self.functions = [] class Index: name = "" groups = [] def texify_line(line): # convert any special chars in a line to texinfo format # currently just used for group formatting ? line = line.replace("@", "@@") line = line.replace("{", "@{") line = line.replace("}", "@}") line = line.replace(",", "@comma{}") return line def find_defun_line_in_file(filename, fnname): linecnt = 0 defun_line=re.compile(r"^DEFUN_DLD\s*\(\s*{}".format(fnname)) with open(filename, 'rt') as f: for line in f: if re.match(defun_line, line): return linecnt linecnt = linecnt + 1 return -1 def find_function_line_in_file(filename, fnname): linecnt = 0 func = False defun_line=re.compile(r"^\s*function \s*") with open(filename, 'rt') as f: for line in f: if func == True: x = line.strip() if x.startswith("## -*- texinfo -*-"): return linecnt else: func = False if re.match(defun_line, line): if line.find("=") != -1: x = line.split("=") x = x[-1] else: x = line.replace("function ", "") x = x.split("(") x = x[0].strip() if x == fnname: func = True linecnt = linecnt + 1 return -1 def read_m_file(filename, skip=0): help = [] inhelp = False havehelp = False; with open(filename, 'rt') as f: for line in f: line = line.lstrip() if skip > 0: skip = skip - 1 elif not havehelp: if havehelp == False and inhelp == False and line.startswith('##'): if "texinfo" in line: inhelp = True elif inhelp == True: if not line.startswith('##'): inhelp = False havehelp = True else: if line.startswith("## @"): line = line[3:] else: line = line[2:] help.append (line.rstrip()); return help def read_cc_file(filename, skip=0): help = [] inhelp = False havehelp = False; with open(filename, 'rt') as f: for line in f: line = line.lstrip() if skip > 0: skip = skip - 1 elif not havehelp: if havehelp == False and inhelp == False: if "texinfo" in line: inhelp = True elif inhelp == True: line = line.rstrip() if len(line) > 0 and line[-1] == '\\': line = line[:-1] line = line.rstrip() line = line.replace("\\n", "\n") line = line.replace("\\\"", "\"") if len(line) > 0 and line[-1] == '\n': line = line[:-1] # endif a texinfo line elif line.endswith('")'): line = line[:-2] if line.startswith('{'): inhelp = False havehelp = True else: help.append (line); return help def read_help (filename, skip=0): help = [] if filename[-2:] == ".m": help = read_m_file(filename, skip) else: help = read_cc_file(filename, skip) return help def read_index (filename, ignore): index = Index () with open(filename, 'rt') as f: lines = f.read().splitlines() #print ("read", lines) first = True category = Group() for l in lines: if l.startswith("#"): pass elif first: index.name = l; first = False elif l.startswith(" "): l = l.strip() # may be multiple functions here funcs = l.split() for f in funcs: if f not in ignore: category.functions.append(f); else: # new category name if len(category.functions) > 0: index.groups.append(category) category = Group(l.strip()) # left over category ? if len(category.functions) > 0: index.groups.append(category) return index; def find_class_file(fname, paths): for f in paths: # class constructor ? name = f + "/@" + fname + "/" + fname + ".m" if os.path.isfile(name): return name, 0 # perhaps classname.func format ? x = fname.split(".") if len(x) > 0: zname = x.pop() cname = ".".join(x) name = f + "/" + cname + ".m" if os.path.isfile(name): idx = find_function_line_in_file(name, zname) if idx >= 0: return name, idx name = f + "/@" + cname + "/" + zname + ".m" if os.path.isfile(name): return name, 0 return None, -1 def find_func_file(fname, paths, prefix, scanfiles=False): for f in paths: name = f + "/" + fname + ".m" if os.path.isfile(name): return name, 0 # class constructor ? name = f + "/@" + fname + "/" + fname + ".m" if os.path.isfile(name): return name, 0 name = f + "/" + fname + ".cc" if os.path.isfile(name): return name, 0 name = f + "/" + fname + ".cpp" if os.path.isfile(name): return name, 0 # if have a prefix, remove and try if prefix and fname.startswith(prefix): fname = fname[len(prefix):] name = f + "/" + fname + ".cc" if os.path.isfile(name): return name, 0 name = f + "/" + fname + ".cpp" if os.path.isfile(name): return name, 0 # if here, we still dont have a file match # if allowed to scan files, do that if scanfiles: #sys.stderr.write("Warning: Scaning for {}\n".format(fname)) for f in paths: files = list(f + "/" + a for a in os.listdir(f)) cc_files = fnmatch.filter(files, "*.cc") cpp_files = fnmatch.filter(files, "*.cpp") cxx_files = fnmatch.filter(files, "*.cxx") for fn in cc_files + cpp_files + cxx_files: line = find_defun_line_in_file(fn, fname) if line >= 0: #sys.stderr.write("Warning: Found function for {} in {} at {}\n".format(fname, fn, line)) return fn, line return None, -1 def display_standalone_header(): # make a file that doesnt need to be included in a texinfo file to # be valid print("@c mkfuncdocs output for a standalone function list") print("@include macros.texi") print("@ifnottex") print("@node Top") print("@top Function Documentation") print("Function documentation extracted from texinfo source in octave source files.") print("@contents") print("@end ifnottex") print("@node Function Reference") print("@chapter Function Reference") print("@cindex Function Reference") def display_standalone_footer(): print("@bye") def display_func(name, ref, help): print ("@c -----------------------------------------") print ("@subsection {}".format(name)) print ("@cindex {}".format(ref)) for l in help: print ("{}".format(l)) def process (args): options = { "verbose": False, "srcdir": [], "funcprefix": "", "ignore": [], "standalone": False, "allowscan": False } indexfile = "" for a in args: #print ("{}".format(a)) c=a.split("=") key=c[0] if len(c) > 1: val=c[1] else: val="" if key == "--verbose": options["verbose"] = True; if key == "--standalone": options["standalone"] = True; elif key == "--allowscan": options["allowscan"] = True; elif key == "--src-dir": if val: options["srcdir"].append(val); elif key == "--ignore": if val: options["ignore"].append(val); elif key == "--func-prefix": if val: options["funcprefix"] = val; elif val == "": if indexfile == "": indexfile = key if indexfile == "": raise Exception("No index filename") if len(options["srcdir"]) == 0: options["srcdir"].append("inst") #print "options=", options if options['standalone']: display_standalone_header() idx = read_index(indexfile, options["ignore"]) for g in idx.groups: #print ("************ {}".format(g.name)) g_name = texify_line(g.name) print ("@c ---------------------------------------------------") print ("@node {}".format(g_name)) print ("@section {}".format(g_name)) print ("@cindex {}".format(g_name)) for f in sorted(g.functions): print ("@c {} {}".format(g_name, f)) h = "" filename = "" path = "" if "@" in f: #print ("class func") path = f name = "@" + f ref = f.split("/")[-1] filename, lineno = find_func_file(path, options["srcdir"], options["funcprefix"]) elif "." in f: path = f ref = f.split(".")[-1] name = f.split(".")[-1] filename, lineno = find_class_file(path, options["srcdir"]) if not filename: parts = f.split('.') cnt = 0 path = "" for p in parts: if cnt < len(parts)-1: path = path + "/+" else: path = path + "/" path = path + p cnt = cnt + 1 name = f; ref = parts[-1] filename, lineno = find_func_file(path, options["srcdir"], options["funcprefix"]) elif "/" in f: path = f name = f ref = f.split("/")[-1] filename, lineno = find_func_file(path, options["srcdir"], options["funcprefix"]) else: path = f name = f ref = f filename, lineno = find_func_file(path, options["srcdir"], options["funcprefix"], options['allowscan']) if not filename: sys.stderr.write("Warning: Cant find source file for {}\n".format(f)) else: h = read_help (filename, lineno) if h: display_func (name, ref, h) if options['standalone']: display_standalone_footer() def show_usage(): print (sys.argv[0], "[options] indexfile") if __name__ == "__main__": if len(sys.argv) > 1: status = process(sys.argv[1:]) sys.exit(status) else: show_usage() netcdf-1.0.18/doc/mkqhcp.py0000755000000000000000000001331314674554453012421 0ustar00#!/usr/bin/python3 ## mkqhcp.py ## Version 1.0.4 ## Copyright 2022-2023 John Donoghue ## ## 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 ## . import sys import os import re def process(name): with open(name + ".qhcp", 'wt') as f: f.write ('\n') f.write ('\n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' {0}.qhp\n'.format(name)) f.write (' {0}.qch\n'.format(name)) f.write (' \n') f.write (' \n') f.write (' \n') f.write (' {0}.qch\n'.format(name)) f.write (' \n') f.write (' \n') f.write ('\n') title = name pat_match = re.compile(r".*(?P<title>[^<]+).*") with open(name + ".html", 'rt') as fin: # find html for line in fin: line = line.strip() e = pat_match.match(line) if e: title = e.group("title") break # section h2_match = re.compile(r'.*

]*>(?P[^<]+)</h2>.*') # appendix h2a_match = re.compile(r'.*<h2 class="appendix"[^>]*>(?P<title>[^<]+)</h2>.*') # index h2i_match = re.compile(r'.*<h2 class="unnumbered"[^>]*>(?P<title>[^<]+)</h2>.*') h3_match = re.compile(r'.*<h3 class="section"[^>]*>(?P<title>[^<]+)</h3>.*') h4_match = re.compile(r'.*<h4 class="subsection"[^>]*>(?P<title>[^<]+)</h4>.*') tag_match1 = re.compile(r'.*<span id="(?P<tag>[^"]+)"[^>]*></span>.*') #tag_match2 = re.compile(r'.*<div class="[sub]*section" id="(?P<tag>[^"]+)"[^>]*>.*') tag_match2 = re.compile(r'.*<div class="[sub]*section[^"]*" id="(?P<tag>[^"]+)"[^>]*>.*') tag_match3 = re.compile(r'.*<div class="chapter-level-extent" id="(?P<tag>[^"]+)"[^>]*>.*') tag_match4 = re.compile(r'.*<div class="appendix-level-extent" id="(?P<tag>[^"]+)"[^>]*>.*') tag_match5 = re.compile(r'.*<div class="unnumbered-level-extent" id="(?P<tag>[^"]+)"[^>]*>.*') index_match = re.compile(r'.*<h4 class="subsection"[^>]*>[\d\.\s]*(?P<name>[^<]+)</h4>.*') tag = "top" has_h2 = False has_h3 = False #pat_match = re.compile(r'.*<span id="(?P<tag>[^"])"></span>(?P<title>[.]+)$') with open(name + ".html", 'rt') as fin: with open(name + ".qhp", 'wt') as f: f.write('<?xml version="1.0" encoding="UTF-8"?>\n') f.write('<QtHelpProject version="1.0">\n') f.write(' <namespace>octave.community.{}</namespace>\n'.format(name)) f.write(' <virtualFolder>doc</virtualFolder>\n') f.write(' <filterSection>\n') f.write(' <toc>\n') f.write(' <section title="{} Manual" ref="{}.html">\n'.format(title, name)) # chapters here for line in fin: line = line.strip() e = tag_match1.match(line) if not e: e = tag_match2.match(line) if not e: e = tag_match3.match(line) if not e: e = tag_match4.match(line) if not e: e = tag_match5.match(line) if e: tag = e.group("tag") e = h2_match.match(line) if not e: e = h2a_match.match(line) if not e: e = h2i_match.match(line) if e: if has_h3: f.write(' </section>\n') has_h3 = False if has_h2: f.write(' </section>\n') has_h2 = True f.write(' <section title="{}" ref="{}.html#{}">\n'.format(e.group("title"), name, tag)) e = h3_match.match(line) if e: if has_h3: f.write(' </section>\n') has_h3 = True f.write(' <section title="{}" ref="{}.html#{}">\n'.format(e.group("title"), name, tag)) e = h4_match.match(line) if e: f.write(' <section title="{}" ref="{}.html#{}"></section>\n'.format(e.group("title"), name, tag)) if has_h3: f.write(' </section>\n') if has_h2: f.write(' </section>\n') f.write(' </section>\n') f.write(' </toc>\n') f.write(' <keywords>\n') fin.seek(0) for line in fin: line = line.strip() e = tag_match1.match(line) if not e: e = tag_match2.match(line) if e: tag = e.group("tag") e = index_match.match(line) if e: f.write(' <keyword name="{}" ref="{}.html#{}"></keyword>\n'.format(e.group("name"), name, tag)) f.write(' </keywords>\n') f.write(' <files>\n') f.write(' <file>{}.html</file>\n'.format(name)) f.write(' <file>{}.css</file>\n'.format(name)) f.write(' </files>\n') f.write(' </filterSection>\n') f.write('</QtHelpProject>\n') def show_usage(): print (sys.argv[0], "projname") if __name__ == "__main__": if len(sys.argv) > 1: status = process(sys.argv[1]) sys.exit(status) else: show_usage() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������netcdf-1.0.18/doc/octave-netcdf.css�����������������������������������������������������������������0000644�0000000�0000000�00000001337�14674554453�014020� 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pre.example, .header, .float-caption, hr { /* base00 ~ body text in light solarized theme */ color: #657b83; border-color: #657b83; } pre.example { /* base3 ~ background color in light solarized theme */ background-color: #fdf6e3; padding: 0.5em; } table.cartouche { border: 1px solid #948473; background-color: #FFE3C6; width: 100%; } table.cartouche td, table.cartouche th { border: 1px solid #948473; padding: 4px 4px; } /* newer texinfo generation styles */ div.example { /* base00 ~ body text in light solarized theme */ color: #657b83; border-color: #657b83; } pre.example-preformatted { /* base3 ~ background color in light solarized theme */ background-color: #fdf6e3; padding: 0.5em; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������netcdf-1.0.18/doc/octave-netcdf.html����������������������������������������������������������������0000644�0000000�0000000�00000621343�14674554453�014201� 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE html> <html> <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Octave NetCDF - A NetCDF interface for Octave

Introduction

The Octave NetCDF toolkit is a set of NetCDF routines for GNU Octave

Table of Contents


1 Installing and loading

The toolkit must be installed and then loaded to be used.

It can be installed in GNU Octave directly from the website, or can be installed in an off-line mode via a downloaded tarball.

The toolkit has a dependency on the netcdf library (https://www.unidata.ucar.edu/software/netcdf/), so it must be installed in order to successfully install the toolkit.

The toolkit must be then be loaded once per each GNU Octave session in order to use its functionality.

1.1 Online Direct install

With an internet connection available, the package can be installed from octave-forge using the following command within GNU Octave:

pkg install -forge netcdf

The latest released version of the toolkit will be downloaded and installed.

1.2 Off-line install

With the toolkit package already downloaded, and in the current directory when running GNU Octave, the package can be installed using the following command within GNU Octave:

pkg install netcdf-1.0.18.tar.gz

1.3 Loading

Regardless of the method of installing the toolkit, in order to use its functions, the toolkit must be loaded using the pkg load command:

pkg load netcdf

The toolkit must be loaded on each GNU Octave session.


2 Basic Usage Overview

The toolkit provides high and level functionality for reading and writing NetCDF format files.

2.1 High level functionality

The toolkit provides the following high level functions:

  • nccreate
  • ncdisp
  • ncinfo
  • ncreadatt
  • ncread
  • ncwriteatt
  • ncwrite
  • ncwriteschema

2.2 Low level functionality

The package aims to implement the netcdf interface of MATLAB in GNU Octave, however GNU Octave does not support the import function.

Functions can be used in netcdf_functionname format, or an emulated import can be done using the import_netcdf script so that functions can be used in netcdf.functionname format.


3 Function Reference

The functions currently available in the toolkit are described below;


3.1 High-level functions

3.1.1 nccreate

Function File: nccreate(filename,varname)
Function File: nccreate(filename,varname,"property",value,...)

Create the variable varname in the file filename.

Properties

The following properties can be used:

  • "Dimensions": a cell array with the dimension names followed by their length or Inf if the dimension is unlimited. If the property is omitted, a scalar variable is created.
  • "Datatype": a string with the Octave data type name (see ncinfo for the correspondence between Octave and NetCDF data types). The default data type is a "double".
  • "Format": This can be "netcdf4_classic" (default), "classic", "64bit" or "netcdf4".
  • "FillValue": the value used for undefined elements of the NetCDF variable.
  • "ChunkSize": the size of the data chunks. If omitted, the variable is not chunked.
  • "DeflateLevel": The deflate level for compression. It can be the string "disable" (default) for no compression or an integer between 0 (no compression) and 9 (maximum compression).
  • "Shuffle": true for enabling the shuffle filter or false (default) for disabling it.

Example

 nccreate("test.nc","temp","Dimensions",{"lon",10,"lat",20},"Format","classic");
 ncdisp("test.nc");

See also: ncwrite.

3.1.2 ncdisp

Function File: ncdisp (filename)

Display meta-data of the NetCDF file filename

Example

 ncdisp("test.nc");

See also: ncinfo.

3.1.3 ncinfo

Function File: info = ncinfo (filename)
Function File: info = ncinfo (filename, varname)
Function File: info = ncinfo (filename, groupname)

Return information about an entire NetCDF file filename (i.e. the root group "/"), about the variable called varname or the group called groupname.

The structure info has always the following fields:

  • Filename: the name of the NetCDF file
  • Format: one of the strings "CLASSIC", "64BIT", "NETCDF4" or "NETCDF4_CLASSIC"

The structure info has additional fields depending on whether a group of variable is queried.

Groups

Groups are returned as an array structure with the following fields:

  • Name: the group name. The root group is named "/".
  • Dimensions: a array structure with the dimensions.
  • Variables: a array structure with the variables.
  • Attributes: a array structure with global attributes.
  • Groups: a array structure (one for each group) with the same fields as this structure.

Dimensions

Dimensions are returned as an array structure with the following fields:

  • Name: the name of the dimension
  • Length: the length of the dimension
  • Unlimited: true of the dimension has no fixed limited, false

Variables

Variables are returned as an array structure with the following fields:

  • Name: the name of the dimension
  • Dimensions: array structure of all dimensions of this variable with the same structure as above.
  • Size: array with the size of the variable
  • Datatype: string with the corresponding octave data-type (see below)
  • Attributes: a array structure of attributes
  • FillValue: the NetCDF fill value of the variable. If the fill value is not defined, then this attribute is an empty array ([]).
  • DeflateLevel: the NetCDF deflate level between 0 (no compression) and 9 (maximum compression).
  • Shuffle: is true if the shuffle filter is activated to improve compression, otherwise false.
  • CheckSum: is set to "fletcher32", if check-sums are used, otherwise this field is not defined.

Attributes

Attributes are returned as an array structure with the following fields:

  • Name: the name of the attribute
  • Value: the value of the attribute (with the corresponding type)
  • Unlimited: true of the dimension has no fixed limited, false

Data-types

The following the the correspondence between the Octave and NetCDF data-types:

Octave typeNetCDF type
int8NC_BYTE
uint8NC_UBYTE
int16NC_SHORT
uint16NC_USHORT
int32NC_INT
uint32NC_UINT
int64NC_INT64
uint64NC_UINT64
singleNC_FLOAT
doubleNC_DOUBLE
charNC_CHAR

The output of ncinfo can be used to create a NetCDF file with the same meta-data using ncwriteschema.

Note: If there are no attributes (or variable or groups), the corresponding field is an empty matrix and not an empty struct array for compatibility with matlab.

See also: ncread,nccreate,ncwriteschema,ncdisp.

3.1.4 ncread

Function File: x = ncread (filename, varname)
Function File: x = ncread (filename, varname,start,count,stride)

Read the variable varname from the NetCDF file filename.

If start,count and stride are present, a subset of the variable is loaded. The parameter start contains the starting indices (1-based), count is the number of elements and stride the increment between two successive elements. These parameters are vectors whose length is equal to the number of dimension of the variable. Elements of count might be Inf which means that as many values as possible are loaded.

If the variable has the _FillValue attribute, then the corresponding values are replaced by NaN (except for characters). NetCDF attributes scale_factor (default 1) and add_offset (default 0) are use the transform the variable during the loading:

x = scale_factor * x_in_file + add_offset

The output data type matches the NetCDF datatype, except when the attributes _FillValue, add_offset or scale_factor are defined in which case the output is a array in double precision.

Note that values equal to the attribute missing_value are not replaced by NaN (for compatibility).

Example

Read the data from variable ’mydata’ in the file test.nc.

 data  = ncread('test.nc','mydata');

See also: ncwrite,ncinfo,ncdisp.

3.1.5 ncreadatt

Function File: val = ncreadatt(filename,varname,attname)

Return the attribute attname of the variable varname in the file filename.

Global attributes can be accessed by using "/" or the group name as varname. The type of attribute is mapped to the Octave data types. (see ncinfo).

Example

Read global attribute ’creation_date’

 d = ncreadatt('test.nc','/','creation_date')

Read atribute ’myattr’ assigned to variable mydata.

 d = ncreadattr('test.nc', 'mydata', 'myattr');

See also: ncinfo,ncwriteatt.

3.1.6 ncwrite

Function File: ncwrite (filename, varname, x)
Function File: ncwrite (filename, varname, x, start, stride)

Write array x to the the variable varname in the NetCDF file filename.

The variable with the name varname and the appropriate dimension must already exist in the NetCDF file.

If start and stride are present, a subset of the variable is written. The parameter start contains the starting indices (1-based) and stride the increment between two successive elements. These parameters are vectors whose length is equal to the number of dimension of the variable.

If the variable has the _FillValue attribute, then the values equal to NaN are replaced by corresponding fill value NetCDF attributes scale_factor (default 1) and add_oddset (default 0) are use the transform the variable during writing:

x_in_file = (x - add_offset)/scale_factor

Example

Create a netcdf file with a variable of ’mydata’ and then write data to that variable.

 nccreate('myfile.nc','mydata');
 ncwrite('myfile.nc','mydata', 101);

See also: ncread,nccreate.

3.1.7 ncwriteatt

Function File: ncwriteatt(filename,varname,attname,val)

Defines the attribute attname of the variable varname in the file filename with the value val.

Global attributes can be defined by using "/" or the group name as varname. The type of value is mapped to the NetCDF data types. (see ncinfo).

Example

Create a netcdf4 format file with a variable mydata and assign an attribute "units" to it.

 nccreate("myfile.nc", "mydata", "Format", "netcdf4");
 ncwriteatt("myfile.nc", "mydata", "Units", "K");

See also: ncinfo.

3.1.8 ncwriteschema

Function File: ncwriteschema (filename, schema)

Create a NetCDF called filename with the dimensions, attributes, variables and groups given by the structure schema.

The variable schema has the same structure as the results of ncinfo. ncinfo and ncwriteschema can be used together to create a NetCDF using another file as a template:

Example

 schema = ncinfo("template.nc");
 # the new file should be named "new_file.nc"
 ncwriteschema("new_file.nc",schema);

Unused field in schema such as ChunkSize, Shuffle, DeflateLevel, FillValue, Checksum can be left-out if the corresponding feature is not used.

Dimensions are considered as limited if the field Unlimited is missing, unless the dimension length is Inf.

See also: ncinfo.


3.2 Low-level functions (Deprecated)

3.2.1 netcdf_abort

Loadable Function: netcdf_abort(ncid)

Aborts all changes since the last time the dataset entered in define mode.

See also: netcdf_reDef.

3.2.2 netcdf_close

Loadable Function: netcdf_close(ncid)

Close the NetCDF file with the id ncid.

See also: netcdf_open.

3.2.3 netcdf_copyAtt

Loadable Function: netcdf_copyAtt (ncid,varid,name,ncid_out,varid_out)

Copies the attribute named old_name of the variable varid in the data set ncid to the variable varid_out in the data set ncid_out. To copy a global attribute use netcdf_getConstant("global") for varid or varid_out.

See also: netcdf_getAtt,netcdf_getConstant.

3.2.4 netcdf_create

Loadable Function: ncid = netcdf_create(filename,mode)

Creates the file named filename in the mode mode which can have the following values: "clobber" (overwrite existing files), "noclobber" (prevent to overwrite existing files) "64bit_offset" (use the 64bit-offset format), "netcdf4" (use the NetCDF4, i.e. HDF5 format) or "share" (concurrent reading of the dataset). mode can also be the numeric value return by netcdf_getConstant. In the later-case it can be combined with a bitwise-or.

Example

mode =  bitor(netcdf.getConstant("classic_model"), ...
netcdf.getConstant("netcdf4")); 
ncid = netcdf.create("test.nc",mode); 

See also: netcdf_close.

3.2.5 netcdf_defDim

Loadable Function: dimid = netcdf_defDim(ncid,name,len)

Define the dimension with the name name and the length len in the dataset ncid. The id of the dimension is returned.

See also: netcdf_defVar.

3.2.6 netcdf_defGrp

Loadable Function: new_ncid = netcdf_defGrp(ncid,name)

Define a group in a NetCDF file.

See also: netcdf_inqGrps.

3.2.7 netcdf_defVar

Loadable Function: varid = netcdf_defVar(ncid,name,xtype,dimids)

Defines a variable with the name name in the dataset ncid. xtype can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf_getConstant. The parameter dimids define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned.

See also: netcdf_open,netcdf_defDim.

3.2.8 netcdf_defVarChunking

Loadable Function: netcdf_defVarChunking (ncid,varid,storage,chunkSizes)

Define the chunking settings of NetCDF variable varid. If storage is the string "chunked", the variable is stored by chunk of the size chunkSizes. If storage is the string "contiguous", the variable is stored in a contiguous way.

See also: netcdf_inqVarChunking.

3.2.9 netcdf_defVarDeflate

Loadable Function: netcdf_defVarDeflate (ncid,varid,shuffle,deflate,deflate_level)

Define the compression settings NetCDF variable varid. If deflate is true, then the variable is compressed. The compression level deflate_level is an integer between 0 (no compression) and 9 (maximum compression).

See also: netcdf_inqVarDeflate.

3.2.10 netcdf_defVarFill

Loadable Function: netcdf_defVarFill(ncid,varid,no_fill,fillvalue)

Define the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

See also: netcdf_inqVarFill.

3.2.11 netcdf_defVarFletcher32

Loadable Function: netcdf_defVarFletcher32(ncid,varid,checksum)

Defines the checksum settings of the variable with the id varid in the data set ncid. If checksum is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If checksum is "NOCHECKSUM", then checksums will be disabled.

See also: netcdf_defVar,netcdf_inqVarFletcher32.

3.2.12 netcdf_defVlen

Loadable Function: varid = netcdf_defVlen(ncid,typename,basetype)

Defines a NC_VLEN variable length array type with the type name typename and a base datatype of basetype in the dataset ncid. basetype can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf_getConstant. The new data type id is returned.

See also: netcdf_open,netcdf_defVar, netcdf_inqVlen.

3.2.13 netcdf_delAtt

Loadable Function: netcdf_delAtt(ncid,varid,name)

Deletes the attribute named name of the variable varid in the data set ncid. To delete a global attribute use netcdf_getConstant("global") for varid.

See also: netcdf_defAtt,netcdf_getConstant.

3.2.14 netcdf_endDef

Loadable Function: netcdf_endDef (ncid)

Leaves define-mode of NetCDF file ncid.

See also: netcdf_reDef.

3.2.15 netcdf_getAtt

Loadable Function: data = netcdf_getAtt (ncid,varid,name)

Get the value of a NetCDF attribute. This function returns the value of the attribute called name of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_putAtt.

3.2.16 netcdf_getChunkCache

Loadable Function: [size, nelems, preemption] = netcdf_getChunkCache()

Gets the default chunk cache settings in the HDF5 library.

See also: netcdf_setChunkCache.

3.2.17 netcdf_getConstant

Loadable Function: value = netcdf_getConstant(name)

Returns the value of a NetCDF constant called name.

See also: netcdf_getConstantNames.

3.2.18 netcdf_getConstantNames

Loadable Function: value = netcdf_getConstantNames()

Returns a list of all constant names.

See also: netcdf_getConstant.

3.2.19 netcdf_getVar

Loadable Function: data = netcdf_getVar (ncid,varid)
Loadable Function: data = netcdf_getVar (ncid,varid,start)
Loadable Function: data = netcdf_getVar (ncid,varid,start,count)
Loadable Function: data = netcdf_getVar (ncid,varid,start,count,stride)

Get the data from a NetCDF variable. The data data is loaded from the variable varid of the NetCDF file ncid. start is the start index of each dimension (0-based and defaults to a vector of zeros), count is the number of elements of to be written along each dimension (default all elements) and stride is the sampling interval.

See also: netcdf_putVar.

3.2.20 netcdf_inq

Loadable Function: vers = netcdf_inqLibVers()

Returns the version of the NetCDF library.

See also: netcdf_open.

3.2.21 netcdf_inqAtt

Loadable Function: name = netcdf_inqAttName (ncid,varid,attnum)

Get the name of a NetCDF attribute. This function returns the name of the attribute with the id attnum of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_inqAttName.

3.2.22 netcdf_inqAttID

Loadable Function: attnum = netcdf_inqAttID(ncid,varid,attname)

Return the attribute id attnum of the attribute named attname of the variable varid in the dataset ncid. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_inqAttName.

3.2.23 netcdf_inqAttName

Loadable Function: name = netcdf_inqAttName (ncid,varid,attnum)

Get the name of a NetCDF attribute. This function returns the name of the attribute with the id attnum of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_inqAttName.

3.2.24 netcdf_inqDim

Loadable Function: [name,length] = netcdf_inqDim(ncid,dimid)

Returns the name and length of a NetCDF dimension.

See also: netcdf_inqDimID.

3.2.25 netcdf_inqDimID

Loadable Function: dimid = netcdf_inqDimID(ncid,dimname)

Return the id of a NetCDF dimension.

See also: netcdf_inqDim.

3.2.26 netcdf_inqDimIDs

Loadable Function: dimids = netcdf_inqDimID(ncid)
Loadable Function: dimids = netcdf_inqDimID(ncid,include_parents)

Return the dimension ids defined in a NetCDF file. If include_parents is 1, the dimension ids of the parent group are also returned. Per default this is not the case (include_parents is 0).

See also: netcdf_inqDim.

3.2.27 netcdf_inqFormat

Loadable Function: format = netcdf_inqFormat(ncid)

Return the NetCDF format of the dataset ncid. Format might be one of the following "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC"

See also: netcdf_inq.

3.2.28 netcdf_inqGrpFullNcid

Loadable Function: grp_ncid = netcdf_inqGrpFullNcid(ncid,name)

Return the group id based on the full group name.

See also: netcdf_inqGrpName.

3.2.29 netcdf_inqGrpName

Loadable Function: name = netcdf_inqGrpName(ncid)

Return group name in a NetCDF file.

See also: netcdf_inqGrps.

3.2.30 netcdf_inqGrpNameFull

Loadable Function: name = netcdf_inqGrpNameFull(ncid)

Return full name of group in NetCDF file.

See also: netcdf_inqGrpName.

3.2.31 netcdf_inqGrpParent

Loadable Function: parent_ncid = netcdf_inqGrpParent(ncid)

Return id of the parent group

See also: netcdf_inqGrpName.

3.2.32 netcdf_inqGrps

Loadable Function: ncids = netcdf_inqGrps(ncid)

Return all groups ids in a NetCDF file.

See also: netcdf_inqGrps.

3.2.33 netcdf_inqLibVers

Loadable Function: vers = netcdf_inqLibVers()

Returns the version of the NetCDF library.

See also: netcdf_open.

3.2.34 netcdf_inqNcid

Loadable Function: grp_ncid = netcdf_inqNcid(ncid,name)

Return group id based on its name

See also: netcdf_inqGrpFullNcid.

3.2.35 netcdf_inqUnlimDims

Loadable Function: unlimdimids = netcdf_inqUnlimDims(ncid)

Return the id of all unlimited dimensions of the NetCDF file ncid.

See also: netcdf_inq.

3.2.36 netcdf_inqUserType

Loadable Function: [typename, bytesize, basetypeid, numfields, classid] = netcdf_inqUserType(ncid,typeid)

Provide information on a user defined type typeid in the dataset ncid.

The function returns the typename, bytesize, base type id, number of fields and class identifier of the type.

See also: netcdf_open, netcdf_defVlen, netcdf_inqVlen.

3.2.37 netcdf_inqVar

Loadable Function: [no_fill,fillvalue] = netcdf_inqVarFill(ncid,varid)

Determines the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

See also: netcdf_defVarFill.

3.2.38 netcdf_inqVarChunking

Loadable Function: [storage,chunkSizes] = netcdf_inqVarChunking (ncid,varid)

Determines the chunking settings of NetCDF variable varid. If storage is the string "chunked", the variable is stored by chunk of the size chunkSizes. If storage is the string "contiguous", the variable is stored in a contiguous way.

See also: netcdf_defVarChunking.

3.2.39 netcdf_inqVarDeflate

Loadable Function: [shuffle,deflate,deflate_level] = netcdf_inqVarDeflate (ncid,varid)

Determines the compression settings NetCDF variable varid. If deflate is true, then the variable is compressed. The compression level deflate_level is an integer between 0 (no compression) and 9 (maximum compression).

See also: netcdf_defVarDeflate.

3.2.40 netcdf_inqVarFill

Loadable Function: [no_fill,fillvalue] = netcdf_inqVarFill(ncid,varid)

Determines the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

See also: netcdf_defVarFill.

3.2.41 netcdf_inqVarFletcher32

Loadable Function: checksum = netcdf_inqVarFletcher32(ncid,varid)

Determines the checksum settings of the variable with the id varid in the data set ncid. If fletcher32 checksums is turned on for this variable, then checksum is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM".

See also: netcdf_defVar,netcdf_inqVarFletcher32.

3.2.42 netcdf_inqVarID

Loadable Function: varid = netcdf_inqVarID (ncid,name)

Return the id of a variable based on its name.

See also: netcdf_defVar,netcdf_inqVarIDs.

3.2.43 netcdf_inqVarIDs

Loadable Function: varids = netcdf_inqVarID (ncid)

Return all variable ids. This functions returns all variable ids in a NetCDF file or NetCDF group.

See also: netcdf_inqVarID.

3.2.44 netcdf_inqVlen

Loadable Function: [typename, bytesize, basetypeid] = netcdf_inqVlen(ncid,typeid)

Provide information on a NC_VLEN variable length array type typeid in the dataset ncid.

The function returns the typename, bytesize, and base type id.

See also: netcdf_open, netcdf_defVlen.

3.2.45 netcdf_open

Loadable Function: ncid = netcdf_open(filename,mode)

Opens the file named filename in the mode mode.

See also: netcdf_close.

3.2.46 netcdf_putAtt

Loadable Function: netcdf_putAtt (ncid,varid,name,data)

Defines a NetCDF attribute. This function defines the attribute called name of the variable varid in the NetCDF file ncid. The value of the attribute will be data. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_getAtt.

3.2.47 netcdf_putVar

Loadable Function: netcdf_putVar (ncid,varid,data)
Loadable Function: netcdf_putVar (ncid,varid,start,data)
Loadable Function: netcdf_putVar (ncid,varid,start,count,data)
Loadable Function: netcdf_putVar (ncid,varid,start,count,stride,data)

Put data in a NetCDF variable. The data data is stored in the variable varid of the NetCDF file ncid. start is the start index of each dimension (0-based and defaults to a vector of zeros), count is the number of elements of to be written along each dimension (default all elements) and stride is the sampling interval.

See also: netcdf_endDef.

3.2.48 netcdf_reDef

Loadable Function: netcdf_reDef (ncid)

Enter define-mode of NetCDF file ncid.

See also: netcdf_endDef.

3.2.49 netcdf_renameAtt

Loadable Function: netcdf_renameAtt(ncid,varid,old_name,new_name)

Renames the attribute named old_name of the variable varid in the data set ncid. new_name is the new name of the attribute. To rename a global attribute use netcdf_getConstant("global") for varid.

See also: netcdf_copyAtt,netcdf_getConstant.

3.2.50 netcdf_renameDim

Loadable Function: netcdf_renameDim(ncid,dimid,name)

Renames the dimension with the id dimid in the data set ncid. name is the new name of the dimension.

See also: netcdf_defDim.

3.2.51 netcdf_renameVar

Loadable Function: netcdf_renameVar(ncid,varid,name)

Renames the variable with the id varid in the data set ncid. name is the new name of the variable.

See also: netcdf_defVar.

3.2.52 netcdf_setChunkCache

Loadable Function: netcdf_setChunkCache(size, nelems, preemption)

Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created.

See also: netcdf_getChunkCache.

3.2.53 netcdf_setDefaultFormat

Loadable Function: old_format = netcdf_setDefaultFormat(format)

Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). format can be "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic".

See also: netcdf_open.

3.2.54 netcdf_setFill

Loadable Function: old_mode = netcdf_setFill(ncid,fillmode)

Change the fill mode (fillmode) of the data set ncid. The previous value of the fill mode is returned. fillmode can be either "fill" or "nofill".

See also: netcdf_open.

3.2.55 netcdf_sync

Loadable Function: netcdf_sync(ncid)

Writes all changes to the disk and leaves the file open.

See also: netcdf_close.


3.3 Low-level functions

3.3.1 netcdf.abort

: netcdf.abort(ncid)

Aborts all changes since the last time the dataset entered in define mode.

3.3.2 netcdf.close

: netcdf.close(ncid)

Close the NetCDF file with the id ncid.

3.3.3 netcdf.copyAtt

: netcdf.copyAtt (ncid,varid,name,ncid_out,varid_out)

Copies the attribute named old_name of the variable varid in the data set ncid to the variable varid_out in the data set ncid_out. To copy a global attribute use netcdf.getConstant("global") for varid or varid_out.

See also: netcdf.getAtt,netcdf.getConstant.

3.3.4 netcdf.create

: ncid = netcdf.create(filename,mode)

Creates the file named filename in the mode mode which can have the following values: "clobber" (overwrite existing files), "noclobber" (prevent to overwrite existing files) "64bit_offset" (use the 64bit-offset format), "netcdf4" (use the NetCDF4, i.e. HDF5 format) or "share" (concurrent reading of the dataset). mode can also be the numeric value return by netcdf.getConstant. In the later-case it can be combined with a bitwise-or.

Example

 mode = bitor(netcdf.getConstant("classic_model"), ...
 netcdf.getConstant("netcdf4"));
 ncid = netcdf.create("test.nc",mode);

3.3.5 netcdf.defDim

: dimid = netcdf.defDim(ncid,name,len)

Define the dimension with the name name and the length len in the dataset ncid. The id of the dimension is returned.

3.3.6 netcdf.defGrp

: new_ncid = netcdf.defGrp(ncid,name)

Define a group in a NetCDF file.

See also: netcdf.inqGrps.

3.3.7 netcdf.defVar

: varid = netcdf.defVar(ncid,name,xtype,dimids)

Defines a variable with the name name in the dataset ncid. xtype can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The parameter dimids define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned.

3.3.8 netcdf.defVarChunking

: netcdf.defVarChunking (ncid,varid,storage,chunkSizes)

Define the chunking settings of NetCDF variable varid. If storage is the string "chunked", the variable is stored by chunk of the size chunkSizes. If storage is the string "contiguous", the variable is stored in a contiguous way.

3.3.9 netcdf.defVarDeflate

: netcdf.defVarDeflate (ncid,varid,shuffle,deflate,deflate_level)

Define the compression settings NetCDF variable varid. If deflate is true, then the variable is compressed. The compression level deflate_level is an integer between 0 (no compression) and 9 (maximum compression).

3.3.10 netcdf.defVarFill

: netcdf.defVarFill(ncid,varid,no_fill,fillvalue)

Define the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

3.3.11 netcdf.defVarFletcher32

: netcdf.defVarFletcher32(ncid,varid,checksum)

Defines the checksum settings of the variable with the id varid in the data set ncid. If checksum is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If checksum is "NOCHECKSUM", then checksums will be disabled.

3.3.12 netcdf.defVlen

: varid = netcdf.defVlen(ncid,typename,basetype)

Defines a NC_VLEN variable length array type with the type name typename and a base datatype of basetype in the dataset ncid. basetype can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The new data type id is returned.

3.3.13 netcdf.delAtt

: netcdf.delAtt(ncid,varid,name)

Deletes the attribute named name of the variable varid in the data set ncid. To delete a global attribute use netcdf.getConstant("global") for varid.

See also: netcdf.defAtt,netcdf.getConstant.

3.3.14 netcdf.endDef

: netcdf.endDef (ncid)

Leaves define-mode of NetCDF file ncid.

3.3.15 netcdf.getAtt

: data = netcdf.getAtt (ncid,varid,name)

Get the value of a NetCDF attribute. This function returns the value of the attribute called name of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf.getConstant("global").

See also: netcdf.putAtt.

3.3.16 netcdf.getChunkCache

: [size, nelems, preemption] = netcdf.getChunkCache()

Gets the default chunk cache settings in the HDF5 library.

3.3.17 netcdf.getConstant

: value = netcdf.getConstant(name)

Returns the value of a NetCDF constant called name.

See also: netcdf.getConstantNames.

3.3.18 netcdf.getConstantNames

: value = netcdf.getConstantNames()

Returns a list of all constant names.

3.3.19 netcdf.getVar

: data = netcdf.getVar (ncid,varid)
: data = netcdf.getVar (ncid,varid,start)
: data = netcdf.getVar (ncid,varid,start,count)
: data = netcdf.getVar (ncid,varid,start,count,stride)

Get the data from a NetCDF variable. The data data is loaded from the variable varid of the NetCDF file ncid. start is the start index of each dimension (0-based and defaults to a vector of zeros), count is the number of elements of to be written along each dimension (default all elements) and stride is the sampling interval.

3.3.20 netcdf.inq

: [ndims,nvars,ngatts,unlimdimid] = netcdf.inq(ncid)

Return the number of dimension (ndims), the number of variables (nvars), the number of global attributes (ngatts) and the id of the unlimited dimension (unlimdimid). If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use the function netcdf.inqUnlimDims as multiple unlimite dimension exists.

3.3.21 netcdf.inqAtt

: [xtype,len] = netcdf.inqAtt(ncid,varid,name)

Get attribute type and length.

See also: netcdf.inqAttName.

3.3.22 netcdf.inqAttID

: attnum = netcdf.inqAttID(ncid,varid,attname)

Return the attribute id attnum of the attribute named attname of the variable varid in the dataset ncid. For global attributes varid can be netcdf.getConstant("global").

See also: netcdf.inqAttName.

3.3.23 netcdf.inqAttName

: name = netcdf.inqAttName (ncid,varid,attnum)

Get the name of a NetCDF attribute. This function returns the name of the attribute with the id attnum of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf.getConstant("global").

See also: netcdf.inqAttName.

3.3.24 netcdf.inqDim

: [name,length] = netcdf.inqDim(ncid,dimid)

Returns the name and length of a NetCDF dimension.

See also: netcdf.inqDimID.

3.3.25 netcdf.inqDimID

: dimid = netcdf.inqDimID(ncid,dimname)

Return the id of a NetCDF dimension.

See also: netcdf.inqDim.

3.3.26 netcdf.inqDimIDs

: dimids = netcdf.inqDimID(ncid)
: dimids = netcdf.inqDimID(ncid,include_parents)

Return the dimension ids defined in a NetCDF file. If include_parents is 1, the dimension ids of the parent group are also returned. Per default this is not the case (include_parents is 0).

See also: netcdf.inqDim.

3.3.27 netcdf.inqFormat

: format = netcdf.inqFormat(ncid)

Return the NetCDF format of the dataset ncid. Format might be one of the following "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC"

3.3.28 netcdf.inqGrpFullNcid

: grp_ncid = netcdf.inqGrpFullNcid(ncid,name)

Return the group id based on the full group name.

See also: netcdf.inqGrpName.

3.3.29 netcdf.inqGrpName

: name = netcdf.inqGrpName(ncid)

Return group name in a NetCDF file.

See also: netcdf.inqGrps.

3.3.30 netcdf.inqGrpNameFull

: name = netcdf.inqGrpNameFull(ncid)

Return full name of group in NetCDF file.

See also: netcdf.inqGrpName.

3.3.31 netcdf.inqGrpParent

: parent_ncid = netcdf.inqGrpParent(ncid)

Return id of the parent group

See also: netcdf.inqGrpName.

3.3.32 netcdf.inqGrps

: ncids = netcdf.inqGrps(ncid)

Return all groups ids in a NetCDF file.

See also: netcdf.inqGrps.

3.3.33 netcdf.inqLibVers

: vers = netcdf.inqLibVers()

Returns the version of the NetCDF library.

3.3.34 netcdf.inqNcid

: grp_ncid = netcdf.inqNcid(ncid,name)

Return group id based on its name

See also: netcdf.inqGrpFullNcid.

3.3.35 netcdf.inqUnlimDims

: unlimdimids = netcdf.inqUnlimDims(ncid)

Return the id of all unlimited dimensions of the NetCDF file ncid.

3.3.36 netcdf.inqUserType

: [typename, bytesize, basetypeid, numfields, classid] = netcdf.inqUserType(ncid,typeid)

Provide information on a user defined type typeid in the dataset ncid.

The function returns the typename, bytesize, base type id, number of fields and class identifier of the type.

3.3.37 netcdf.inqVar

: [name,nctype,dimids,nattr] = netcdf.inqVar (ncid,varid)

Inquires information about a NetCDF variable. This functions returns the name, the NetCDF type nctype, an array of dimension ids dimids and the number of attributes nattr of the NetCDF variable. nctype in an integer corresponding NetCDF constants.

See also: netcdf.inqVarID,netcdf.getConstant.

3.3.38 netcdf.inqVarChunking

: [storage,chunkSizes] = netcdf.inqVarChunking (ncid,varid)

Determines the chunking settings of NetCDF variable varid. If storage is the string "chunked", the variable is stored by chunk of the size chunkSizes. If storage is the string "contiguous", the variable is stored in a contiguous way.

3.3.39 netcdf.inqVarDeflate

: [shuffle,deflate,deflate_level] = netcdf.inqVarDeflate (ncid,varid)

Determines the compression settings NetCDF variable varid. If deflate is true, then the variable is compressed. The compression level deflate_level is an integer between 0 (no compression) and 9 (maximum compression).

3.3.40 netcdf.inqVarFill

: [no_fill,fillvalue] = netcdf.inqVarFill(ncid,varid)

Determines the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

3.3.41 netcdf.inqVarFletcher32

: checksum = netcdf.inqVarFletcher32(ncid,varid)

Determines the checksum settings of the variable with the id varid in the data set ncid. If fletcher32 checksums is turned on for this variable, then checksum is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM".

3.3.42 netcdf.inqVarID

: varid = netcdf.inqVarID (ncid,name)

Return the id of a variable based on its name.

See also: netcdf.defVar,netcdf.inqVarIDs.

3.3.43 netcdf.inqVarIDs

: varids = netcdf.inqVarID (ncid)

Return all variable ids. This functions returns all variable ids in a NetCDF file or NetCDF group.

See also: netcdf.inqVarID.

3.3.44 netcdf.inqVlen

: [typename, bytesize, basetypeid] = netcdf.inqVlen(ncid,typeid)

Provide information on a NC_VLEN variable length array type typeid in the dataset ncid.

The function returns the typename, bytesize, and base type id.

3.3.45 netcdf.open

: ncid = netcdf.open(filename,mode)

Opens the file named filename in the mode mode.

3.3.46 netcdf.putAtt

: netcdf.putAtt (ncid,varid,name,data)

Defines a NetCDF attribute. This function defines the attribute called name of the variable varid in the NetCDF file ncid. The value of the attribute will be data. For global attributes varid can be netcdf.getConstant("global").

See also: netcdf.getAtt.

3.3.47 netcdf.putVar

: netcdf.putVar (ncid,varid,data)
: netcdf.putVar (ncid,varid,start,data)
: netcdf.putVar (ncid,varid,start,count,data)
: netcdf.putVar (ncid,varid,start,count,stride,data)

Put data in a NetCDF variable. The data data is stored in the variable varid of the NetCDF file ncid. start is the start index of each dimension (0-based and defaults to a vector of zeros), count is the number of elements of to be written along each dimension (default all elements) and stride is the sampling interval.

3.3.48 netcdf.reDef

: netcdf.reDef (ncid)

Enter define-mode of NetCDF file ncid.

3.3.49 netcdf.renameAtt

: netcdf.renameAtt(ncid,varid,old_name,new_name)

Renames the attribute named old_name of the variable varid in the data set ncid. new_name is the new name of the attribute. To rename a global attribute use netcdf.getConstant("global") for varid.

See also: netcdf.copyAtt,netcdf.getConstant.

3.3.50 netcdf.renameDim

: netcdf.renameDim(ncid,dimid,name)

Renames the dimension with the id dimid in the data set ncid. name is the new name of the dimension.

3.3.51 netcdf.renameVar

: netcdf.renameVar(ncid,varid,name)

Renames the variable with the id varid in the data set ncid. name is the new name of the variable.

3.3.52 netcdf.setChunkCache

: netcdf.setChunkCache(size, nelems, preemption)

Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created.

3.3.53 netcdf.setDefaultFormat

: old_format = netcdf.setDefaultFormat(format)

Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). format can be "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic".

3.3.54 netcdf.setFill

: old_mode = netcdf.setFill(ncid,fillmode)

Change the fill mode (fillmode) of the data set ncid. The previous value of the fill mode is returned. fillmode can be either "fill" or "nofill".

3.3.55 netcdf.sync

: netcdf.sync(ncid)

Writes all changes to the disk and leaves the file open.


3.4 Import functions (Deprecated)

3.4.1 import_netcdf

: import_fits

Dummy function provided to provide compatibility with older versions of GNU Octave netcdf

Function is deprecated.


3.5 Test function

3.5.1 test_netcdf

: test_netcdf

Function to do a basic test of the netcdf interface


Appendix A GNU General Public License

Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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:

    1. The work must carry prominent notices stating that you modified it, and giving a relevant date.
    2. 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”.
    3. 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.
    4. 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.

  7. 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:

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.

  8. 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:

    1. Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
    2. 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
    3. 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
    4. Limiting the use for publicity purposes of names of licensors or authors of the material; or
    5. Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
    6. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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.

  14. 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.

  15. 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.

  16. 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.

  17. 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.

  18. 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.

one line to give the program's name and a brief idea of what it does.  
Copyright (C) year name of author

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 http://www.gnu.org/licenses/.

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:

program Copyright (C) year name of author 
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 http://www.gnu.org/licenses/.

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 http://www.gnu.org/philosophy/why-not-lgpl.html.


Index

Jump to:   A   B   C   D   E   F   G   H   I   L   N   O   P   R   S   T   W  
Index EntrySection

A
abortLow-level functions

B
Basic Usage OverviewBasic Usage Overview

C
closeLow-level functions
copyAttLow-level functions
copyrightCopying
createLow-level functions

D
defDimLow-level functions
defGrpLow-level functions
defVarLow-level functions
defVarChunkingLow-level functions
defVarDeflateLow-level functions
defVarFillLow-level functions
defVarFletcher32Low-level functions
defVlenLow-level functions
delAttLow-level functions

E
endDefLow-level functions

F
Function ReferenceFunction Reference

G
getAttLow-level functions
getChunkCacheLow-level functions
getConstantLow-level functions
getConstantNamesLow-level functions
getVarLow-level functions

H
High level functionalityBasic Usage Overview
High-level functionsHigh-level functions

I
Import functions (Deprecated)Import functions (Deprecated)
import_netcdfImport functions (Deprecated)
inqLow-level functions
inqAttLow-level functions
inqAttIDLow-level functions
inqAttNameLow-level functions
inqDimLow-level functions
inqDimIDLow-level functions
inqDimIDsLow-level functions
inqFormatLow-level functions
inqGrpFullNcidLow-level functions
inqGrpNameLow-level functions
inqGrpNameFullLow-level functions
inqGrpParentLow-level functions
inqGrpsLow-level functions
inqLibVersLow-level functions
inqNcidLow-level functions
inqUnlimDimsLow-level functions
inqUserTypeLow-level functions
inqVarLow-level functions
inqVarChunkingLow-level functions
inqVarDeflateLow-level functions
inqVarFillLow-level functions
inqVarFletcher32Low-level functions
inqVarIDLow-level functions
inqVarIDsLow-level functions
inqVlenLow-level functions
Installing and loadingInstalling and loading

L
LoadingInstalling and loading
Low level functionalityBasic Usage Overview
Low-level functionsLow-level functions
Low-level functions (Deprecated)Low-level functions (Deprecated)

N
nccreateHigh-level functions
ncdispHigh-level functions
ncinfoHigh-level functions
ncreadHigh-level functions
ncreadattHigh-level functions
ncwriteHigh-level functions
ncwriteattHigh-level functions
ncwriteschemaHigh-level functions
netcdf_abortLow-level functions (Deprecated)
netcdf_closeLow-level functions (Deprecated)
netcdf_copyAttLow-level functions (Deprecated)
netcdf_createLow-level functions (Deprecated)
netcdf_defDimLow-level functions (Deprecated)
netcdf_defGrpLow-level functions (Deprecated)
netcdf_defVarLow-level functions (Deprecated)
netcdf_defVarChunkingLow-level functions (Deprecated)
netcdf_defVarDeflateLow-level functions (Deprecated)
netcdf_defVarFillLow-level functions (Deprecated)
netcdf_defVarFletcher32Low-level functions (Deprecated)
netcdf_defVlenLow-level functions (Deprecated)
netcdf_delAttLow-level functions (Deprecated)
netcdf_endDefLow-level functions (Deprecated)
netcdf_getAttLow-level functions (Deprecated)
netcdf_getChunkCacheLow-level functions (Deprecated)
netcdf_getConstantLow-level functions (Deprecated)
netcdf_getConstantNamesLow-level functions (Deprecated)
netcdf_getVarLow-level functions (Deprecated)
netcdf_inqLow-level functions (Deprecated)
netcdf_inqAttLow-level functions (Deprecated)
netcdf_inqAttIDLow-level functions (Deprecated)
netcdf_inqAttNameLow-level functions (Deprecated)
netcdf_inqDimLow-level functions (Deprecated)
netcdf_inqDimIDLow-level functions (Deprecated)
netcdf_inqDimIDsLow-level functions (Deprecated)
netcdf_inqFormatLow-level functions (Deprecated)
netcdf_inqGrpFullNcidLow-level functions (Deprecated)
netcdf_inqGrpNameLow-level functions (Deprecated)
netcdf_inqGrpNameFullLow-level functions (Deprecated)
netcdf_inqGrpParentLow-level functions (Deprecated)
netcdf_inqGrpsLow-level functions (Deprecated)
netcdf_inqLibVersLow-level functions (Deprecated)
netcdf_inqNcidLow-level functions (Deprecated)
netcdf_inqUnlimDimsLow-level functions (Deprecated)
netcdf_inqUserTypeLow-level functions (Deprecated)
netcdf_inqVarLow-level functions (Deprecated)
netcdf_inqVarChunkingLow-level functions (Deprecated)
netcdf_inqVarDeflateLow-level functions (Deprecated)
netcdf_inqVarFillLow-level functions (Deprecated)
netcdf_inqVarFletcher32Low-level functions (Deprecated)
netcdf_inqVarIDLow-level functions (Deprecated)
netcdf_inqVarIDsLow-level functions (Deprecated)
netcdf_inqVlenLow-level functions (Deprecated)
netcdf_openLow-level functions (Deprecated)
netcdf_putAttLow-level functions (Deprecated)
netcdf_putVarLow-level functions (Deprecated)
netcdf_reDefLow-level functions (Deprecated)
netcdf_renameAttLow-level functions (Deprecated)
netcdf_renameDimLow-level functions (Deprecated)
netcdf_renameVarLow-level functions (Deprecated)
netcdf_setChunkCacheLow-level functions (Deprecated)
netcdf_setDefaultFormatLow-level functions (Deprecated)
netcdf_setFillLow-level functions (Deprecated)
netcdf_syncLow-level functions (Deprecated)

O
Off-line installInstalling and loading
Online installInstalling and loading
openLow-level functions

P
putAttLow-level functions
putVarLow-level functions

R
reDefLow-level functions
renameAttLow-level functions
renameDimLow-level functions
renameVarLow-level functions

S
setChunkCacheLow-level functions
setDefaultFormatLow-level functions
setFillLow-level functions
syncLow-level functions

T
Test functionTest function
test_netcdfTest function

W
warrantyCopying

netcdf-1.0.18/doc/octave-netcdf.pdf0000644000000000000000000107016114674554453014003 0ustar00%PDF-1.5 %ĐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ăd4›½*´.‰<øï·_•è̀f’W¯_wƠ«îrđăc;̣ê`GæUOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ăd4›½*´.‰<̀¿ß~U¢Îf’W¯_u½ªîvđăc;ZäƠÁ̀«Ÿ¶­®MfGñÏ}í I•]/¶́̃­Ím̃¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ƠÿEK{*ʇuÄpg6;µ̃$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­÷E™7·¢â ̉"/²îÑ7»¸¦‘¼ưj;{Y—ÇÊ‹"1₫t‹m×|‘£o¼irÛåI É‘c¶×º>[T̉›ÏEnn#×Ûû₫bÅø¹‘û̉î«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gÏR©đ133wÄ xAÄbêí;¬̉aGL6K& 0+‡}&ö"?‘á°(̉¦̉a/ ¡ć,•!£½¥‰î-fö3¤Ù*IĂx {aªùđ”sIC%̉đhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Ơ^C<ĐHàDN8đ÷ờV{Hôüæç=üúØS`¾Jñ m}u%Œ̉ßE Y]^/`»w¦¶oâĂƠå:1L·ÙÖVƯ‹omy¾èUÿ­àTÙ ÖĂ₫v¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”X[“ÖôÚă{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîF^‚ñÎp•=‰!9̣̀₫Ú4gÀêBË¥0pôù̃̃‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—X NˆHæĐÔ3$¤Ç˜{<Ư0*¢5cƠ~ÿP÷ơʯÂùƯ5WÂ42^!0^#rq‰xƘœE„3xÎü ñ ªz“)c̉gl1B̀î̉°ơ•?ŸXqû!̣NA‡¨W»A*dư1ùÔ)iȧΰÅç“Đó â9ç’†NVf¤¡–kô¯VäaUJü†ố?%Í5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›₫1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 308 /Filter /FlateDecode >> stream xÚ…‘ÍNĂ0„ïy C¯×¿W(­ÔC(œP¨$m$¢¤Ă3À©mq›¹¬¨ ªˆ‰‹¬e(+Ȱ!³ÍD²=w»áØwïéjd[2Ï)ŒA¢Ó.å ̣¬#o#V›ûÙôm›v@q6èÀđÑ@àÚЧÓ@eĐƒ ü4Ÿ%Ê“ë₫ĐåF}×ï©Äsók/>‚?[Aˆ‘¦V>¦è~ø endstream endobj 13 0 obj << /Length 622 /Filter /FlateDecode >> stream xÚSM›0½çWp$̉Âb̀W®ưØJ{ªªÜÚ¼à€µ€#cRơßẃçc­V‘‚ç1yóæÁ¢ ~,ªó¨nxÚđ:j§MæQÓGxøñmĂ(¯(yZÎï¦%e^ú¼äªê§ưæñ©,#–¥»lÇ¢ưÁµee•̣]´ï¢Ÿñg}ÜæMüר~p»ư½Ê"Íkh™̣œ̣Z‡?>UÅu­„§‡ÖWy¿2Vbêm[V¹ ˜ú¬<Ëó₫mÂ9Ÿơ0»SѳF"«ôL’ªL릉V¥,₫Բ(ínf> stream xÚ•VKoă6¾çWèV¨h¾ôêm»Û-lQ¸§Å‰¶„Ú’!QIóï;Ă¡ÙqjÀáp8Ï3‡?å2Ê Å •GƠá{î°‹ˆøóáN9*–jô%©L½\²Đúóæn}_ÈHh¦t&£ÍÖ›•ă©6uô-₫̉nhŸ&×öƯêûæ·ơ}F‚³’—åy”ˆ’ Yø¦±'©’•™̀PH &¥Y/óđø×5MàŸ(³Yèkå̀Jñ3₫ØU"¥­ûüåiM…'¯̉,6;K̀v Ë¥b!s–åé¬y;X{Ơ>‡$³ÔØoxÁ3X¶J4/âûU¡bTàí] ‘›à…?5´Œsv ºß̉ê aí0₫@4:V÷ô “ª™ÖP7¡˜H9åúU¢2S÷#P¹Œ«₫¸’yüº*tXơ\1£›êWô{¾ƒ̃6¦Ă¬©,MW“ÚöpúẻñÔ»§W2’ª*ñ¢ÀÁnœ/GLKº†Wt $f½T+ŒpQ›D—™WH­£Ơ è÷âƒ} ÿüØökegZ¿I!}]Ư"´Gˆ¦ṬüÂă`Jf·\0‘‹Œ¶€}U.óó¿¡:%T+.=q×;¬ /ă¦?bί?)b ïPƠ€8NOû¶"À‘#’•uKíIEü:´» gk: x NH|c‡ Ø̀Ä`1á•Ï"qúàDëÎk‚¬-ƯV"† <ø œ ­pDᨶc»ë¼{x£'®íƉ$ø ?àö p ^Úư¸ÍYeC±=C –/’_y*'|"Aiâ‚È!(ä ƒùÉE|»Àí'Ú4 A,t·M®[µ³¹7䆽éˆx‚fr²²í§Ù­¶› _C¸Vœå…¸đd[¾ÙÛÙÁ@f%¼ê?&H$!·¿·ÔÅ̉†B–Đª₫`Gb¾´®!æuÇ$Ï™*ËÛ³#Óù‡³́œfĐïgÇÜÉrXû±'9)­f H'R)ÆuvÖÈ»_6§±[h–Ë<Ê`ÂĐpD³‡`lúY}ÎYíp=YÜ÷3û<ú #̃•O³Ç“°̣*₫DË·Ï᥷Ưî»2â› œJu‚T)ăê,„¿2‚đ ‡/Tz‡Y˜{™̣ DÆ„*ĂG/¨DÆ9ô0ßúº}ojâZæ₫E;´¸^•Đ|áÜUÉÿT¨ưVèXiY^¶oHn–Á»…'±÷’f ŸÛæ̉E¢µN™‚¯°´,X®äÿË|?Y( äg˰.Íøèç?­×=ùlÙ<¡é[B|́§¡²Û~ØYÖY·†ÿª̃®ß†+Àd¥|u7Q¤“…ø5Ø\(}Ă ₫1gĂ€ endstream endobj 125 0 obj << /Length 3680 /Filter /FlateDecode >> stream xÚí_sܶÀßư)øxzK€Hô­±ê4™N3MƠ¾$y¸H'û¦̣É‘”xúí» Àăb!0ƒ™H'glé¼à.pû[,₫’U üaUÇ«®oë¾íª«oáÓû÷•ưáû¯ß0'w‚çḤ«Ë7z'eÅZ7U—7•ä¼–¬=>ị̈ºúa³?ûẹ́Û7½<>HrYKÑfj¥Ơ=¯XWs&…QmjÁUƯ˜ßŒÖË3-6ÛŸowgçm'7w7öß·w‡³–mwöŸj4–O8Uă¼)à xèu¦ŸˆV×LÈ *VĂÏ_lz¯j=¸™êjÙµ3ÂIBÖđ@PM³ùî`Ûvs±¿ß]=ŸÅf8c›ḥá$À¡̃388éÀNƠb;yÓ oè³sügƒÁ³× ÑX4Ï|§®|ÂÛ©9Nm—çÀ¢ík©A5kk&—c*E-x S'ä0åÓÖO¨îmÿE«Å:Y«UHS¤Z£t`˜Ï%ëúwÊ·́´}z…́¯́¸ñßÛ÷nÜûƯofœ»»ÿm¿û#u ‰>̉FÂmÁ(’ƠkßÂu¹p‰¾™e£È¨#Q5ΛæF‘Ynâ"ûÅ}›Ô¢îDïÛF!kø8üÛ₫ư›˜̃î~;ăưfgF·ö£›_Wû»Ăövÿh₫ïĐ(øÙ *œt`/MrVCbïÙ»v)/¡Ÿé˜°w,ê˜â₫MỜ‘i;¦sƒ[›9¾3K%?›5~?t™7»ûƯáj€È!dRăĐ †Ñ´±å0Ưê[·fSIüm-J%ăEƠ8÷I%ó\§Ô‚„leƯ¤2I+cÍÆ‰ä¹×M‰Í ¬D8TÂ…^7­¬&…Ñu+LÍ£Ë:íÙ·öD/]Ă\Ÿ5ùͲ.+æèDÉ ®ĂÊñ`˜è¬•”K"XĂê¾ïưfÊ`ǼQÊ €ˆ®®îwÛÇ]¸öĐÔBÔốè̉ƒ¦–Đ•SÍγdEñơh˜ƒṿ°eĐÆ¼Ÿ(I@›ăë>´́wPÛÀ¬¾̉)lÔ‘[>r{½øP«@€³ =;†­“L!ܪ–ˆ)+ ëxÑǹÜ2£ÉÈ喑媜PÎ’œåÿåúfeæO»ÊNꈲÄ(oĂñ±‚¹»¶B­t`M¸7V‰}kV<^†9p‘w-7êưTMÜ,W/®T54N \'uWà~¾ß?1­¥`]TèÙÑ>x,¡]°ƒ[²Bûê4̀!Œ\mÂQ¨ÁûÔ,ÂY~_,‹-¬i% vRG‚;à'û^]kXÓAÏö½V:0‡` iIgßÅ_Ơ}ÓyÊW6O₫Éa–Á#ˆ(\¨ŸE?ÇuË‘Ï<(u®k”:²ße²åz-°MøÿsÖ·›í}`̀.t…êV:h†đX¶€ĂÛ k§}¢köØu–Å‚(STM"dùq±iæßú0 ¾ơ¢AŸ ̀|( ° S4xûÁL₫zøï“רqU1zưƯ 4‰ ¥u iµ³}vË€ø;_Ft” ª&At–ëà9¬{·2u8l”:"­ó6å¤nK í™0!}±ƒë§åÓ~.­mW¡ Æ€v̉A{¢!ùâ°ùÉ3fåíel…Űó8+TMó<·,‡yoæ²RÇF©iPăöÂ&0‡rBđ"˜c&̀ßíŸxÓÜÖg&APƯ¢WZé )»9yKbÍå_‚†9́‘{,Ă>ÊU“À>ËWKåëp?5¼)I½“¨gyÔC9®ËPM@Ôß‚vûư}ܧh.—V|²?Á¿“…ǽ0sÉ:ߢµÿ}v9;₫̉—QeƒªIPåå:s ×L7©£h£Ô„5ÏĂZ‹Y¬± ë[xÑZ0#óç]…ꄃ óq=¼wĂ×¾v°§ö²&́1Ë"@#ªfđ"=²Ü·\0ïZ‘©“m£ÔÚ¼å´.°×»ÛÙíy ¬¡é U+q’ÎH­nÑÑØ°Bz¢[t°ë,‹Q¤¨D4Ẹ̀ăbY>Ü–­d0pRS0yÁÊơE&å= v‡ë‹ƯÍSëófo>ªRb~ØÉO[ \¡×=óơ¯àÔ–è±Ï,‹Q¨DÈràrùÓpa~êˆß(5…™ œêË$Ø„÷»ÇÙ„îŸc“xz™̃HÍ.Ós¸^γa§ ×Y¢LQ5‰påÇåÂôxm“:Û7JMá@å…('Û"gû< èßnƯ¼_¸L/aƯDV¨Ñuz+´‰ °œßHbÎ ós½H÷ËĐ̣AƠ$ĐÎrÄR¹>Ó¦|́Qj"»Ë"Û”kû"d{&²ï̀k¡Cw¾BæëÄT&ơ!+´]ª‡;©áƠ“!+q/êmÎØ!Ç…ª‰ƒçÅúpÖƒ@“:‚7JM¤÷y¤C9Ø̀R„tl!ưÛ»đÅHpo{Ëe…j½rÇJ B¯Ü+U±©®:ä©ZQº­0m„đn Ó{cÖ¾ơ%ö̃È)Ae…(I@óÏÿcR8à endstream endobj 9 0 obj << /Type /ObjStm /N 100 /First 819 /Length 2161 /Filter /FlateDecode >> stream xÚµZ]«7}Ÿ_¡ÇäE#•¾ª‚ $1^v!Ø^ØÄÜçzâ5î˜ëñ’üû=Ơ¥VÀ™́̃[0Ưêî‘Ω£o©ÔB 5È™Bî9䨧9j!·P₫롨„A(øoÉ婆œ’!̃bd%dáJ „¡à°€đg)j­¡Ô@­¯y”CÑ` e †ü•`VA’L=T@nŸJƒˆZ{ µbHPÈ.†#iâC… B9Ô¤ «Œ¤ñđ#¤k€*H×¥ ̃)ÔđˆqM“€\©¤ƠCCf¤ÎÈ$á`z#Á Qj.¹×2YÑ:Œê„¨ˆÜ5ê  ”Âxoˆ’èĐ;¢ 3»FAæºWÛQx¤ĐûYÚ‡àQ$ᥑï!³P$ƒPP£L“Täă`ü%ø(ø„|ä„OÈGÎø„LDN)œAŸPnÜđ˜̣a{D¹Ádî(Lf<"sYđ±‚O#$ăÂD¡„[Á5Y*…/ ¿Ú0E:2E+Æ"ë„5±h=J]ï¸2 w\Tôªg*m»ăªÈ%Üq5̃î¸FJ‡¼¥ç¬wÔÇ$ES ."k päŒÀ;.Û;®"ú qsÛbƒ#w̉wư>ÔdAÎÜ̉áÉ“Ăñå/ïOáøíë·§Ăñ›óƯåtwù:Ú̉óĂñùéĂùăưíéÖöáï§7ï^}₫9¼JøĐ¤E‚n®9²Ü€rä0n‹ưå—Á3€†'OÂñ™¡₫ƒGTÃéøíưùöÅé^Á§ÏÂñåéçK¸ÙÓ_5²>±âÁÄe×ñ™æm}̣Çÿaăñ«»»3à^i¦æä­t´Óà¶È‡ă‹?\¶÷¿½»û÷áøơù₫Íé̃è̉t )\ă@_×3ÅŒ¾†J‹I[y‰©ÄújË“áø—óËs8> Ÿ}s~ÿË»»·Ÿk–\£½ÎSk‹E;é± 27j±i’¶÷›Ò ¿ÿăù_íöÙ¿.—÷_çÛËëÿœ¢eèçû·§xwºqƯ¾ùñø?Ú…₫§q‰]¥‚¼@(Û»IOĂ«₫ôÓÍŸk/xŒBû3FzP¥ö›JJåAµ”̀f2{ik:tn^̀æb5¸X++V»‹Ơîb(ÅP¡TC©†R ¥J5”j(ƠPª¡TC©†̉ ¥J3”f(ÍP¡4Ci†̉ ¥J7”n(ƯPº¡tCé†̉ ¥J7”n(ĂP†¡ C†2 eÊ0”a(ĂP†¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡ˆ¡ˆ¡ˆ¡ˆ¡ˆ¡ˆ¡ˆ¡ˆ¡ˆ¡ˆ¡è˜ga!Ͱ̀°Îpöf©Ïp̀g8ṇ̃ÄË/O¼<ñf'÷̃qvèu^Â9Ơuj‡iXÄÔàj§˜·ÛùSl˜zÅ„±b§lÔcB‘8Rr¢¢úˆ •Rµ÷Ñ0ˆ‹HJ&jR®!ÀrÙj¬è̉2˜ºÎ<{"¾"'åéG¹‹,‚a Ó?Œ´£ë̀œ#Wv9)—H?Jm‰cAïCUê2Ơæ:=RsœŒ«9úQÎBlB±c<&X°j¢Xˆ\DÎBÜ)‘¹Qî"‡Ä:T$²dcT£á+rRî")uFÙrl»ˆPSuáœA¯’•Ç©©;ă^S)÷B,„Q]°”Ŭ Ơ¨v‘{!NÊUˆ~”˜¹DfƯ A·…óH‘XÇe4ËæªÑ—D7Â¥ °®» ]§¨¬h”¥újœ”K¤å®{]±cá•›h• XăIơT¹S.•~”K%SÜö’:B̀µ«À”z}ßIå¤ÜU:R.•]{ƠmƠF÷5;V£¾*'åRéG¹T¶3–¸¡° ÄÚ®Xư‘DNÆ%̉r‰¬Øg̉íM Ï¢»Ư-a7(»ªœ”K¥åR‰icC)Y…- J_•“r©ô£œó8 ¢:¨c›•*ÈơÁy<’ÈI¹DúQ®¢D'̃tWÛ˜$ª+‚"®*'åRéG¹«,èÄƠù“±4QgƠ@F»ªÜ)w•”Kå¶ï?Vy]߱΅]UNÊ¥̉r©́5n¾ ‘¨¶22ÔW•“r©ô£\*Ñ‹‹ºkv¨“úN9¶â«rR.•~”K%¼3eóT¨3¶¨S…¯wxüH*'åRéG¹T¢ïêáÀû¨jEø¥\UNÊ¥̉r©L˜R"¤:"6íKFód_‘“q‰ô£ÜEâ$AD»ØÜh0¡E)ƠSåN¹TúQ.•¬¦>yX'„aspqU9)w•”KåÀFºI±ƠÔơà ǽ8âáªrR.•~”K%zq;°G±Ífáûáëk y$‘“q‰ô£\"ƠEĐlAºOÙJ,%»ªœ”K¥åR‰N¼§¶–:‹Å1«˜ÙUäd\"Ư—Ft9EÏá½f= 0°ëªq2.nŒK#\“™i«BzD°́ă!®"'åéG¹«̀’‘zª±Rï[ÛÄùDO•;åRéG¹T̀vx;•·#™¬¾`_•“rWéH¹Tb´ùÔuøRïú‚¯¯ rz¨3Wœ™”K¤#åR©>'=sÈÖ.7Âè¾2'ç̉éȹt´HëøÚà8ºë«sr.œK'éé.̃:;/sÁ‘Ñ|uNÎ¥Ó‘séÔ³8¡¦̃YƯĂĂÙÜÈT}uNÎ¥Ó‘s׉…$o[":É˺Í5|eNÊ¥̉‘rW‰ÎGÏ뉄N·FÅUädÜE:2î± êz^‚p2C²#ø³ 9?ÆÉ¸ktd\~hA6ªÆ´•#nDÄø_Œ™} endstream endobj 243 0 obj << /Length 3883 /Filter /FlateDecode >> stream xÚíQsܶÇßư)ø(=ˆ%’ ûÖZu&™Œ§MƠ¾¤yP¤³£©,;’ÜL¾}yX,XÆÔºNfb[Z̃.qÿ» ¨øOTZVzPơ tuóáU3ưôñ}eỵ̈Ă7¯Älw†Ẹ̀ÏW¯₫đ¦ë*ÑÔc3êê]Ơ‰±nµÿ¼«Ûêdz»»óŸ®¾{ơ—«ư'u²«»V%ºm¥ª{đsÑ鮘¬ë~Y7#üOÈé2ÿ'øzшz_7]»ûb¶XM±«ZÖr8¿è›ǽa÷|sûn¹—_÷Dß×­®“Ăh>ưÇŸê~÷¿ùm2üPÁ‡i»¯₫₫êoCĐæ6z?„»‡_¿yüôæ|PgŸïÏÅÙưÛ›ó qv½¥ +Û¶ÖªĐFv±¦W8*ÙÂưỈ0„zmÿè½üa‚É₫đå~Xq”&ÑÖ½j½/ưác¹áƒº™d Ä*ÛIܳ-T-:ñl ‘*íÙʱ=¦±mÂSC¶q–í·×vÉ "–]…î+F̣l4!YuµhưNäcê*Ö°F ÈĂ:uĂa¤Gë|ªûq¬uÇQ½Xí©VMƠæºq(Bµ‚£zµïº;¸çÎEÎĐ=[ÍAèîDƯéÑeZ¿‚‡’ñ·Erê†!9M{Åè~è뾑ʳ•CY¤¡ ×ÍO_Œ2Á¢ü×s9œ]?î̀ŸÏáPƯƠcë.ä†jk4ªu-ưX¶Áơ¥xXă ï(#Ô Çw’Ëñ­UƯÚˆñ=[9¾eßpÜP¾q–ï§éf¨»NVè¦bHÏÖA¤…¨Ơ ư6¨ÈĂ÷H%yÜGÙ¡n8î“4[l†̃70Ưf±Ÿ­ö* {¸®Se°Ç!ößßưüO3;ß=†ôKQ½¨Đ½Å蟭ƒ¦ ôKxpRÇFÿ1>‘c]äñ…†ºáxORi¹q¾Ơs‡ăƯ9ÜÛ4Üá25tEpGíooîÂẠ̊FĂGïM¹1̃Óû'ĂL •ó Àă󰯽Jö1tˆ ½\…>E³å˜WªÇ‘ƒ~¶rÔwiÔ«¶–ª-B=°ÿÇĂưƯ‡Ë»á¯Fïî™ƯZ A7ÊDƯ6ÅFçW÷°†3úîóxbAƯpD')±Ø´]6ơĐ²DÏVè>h˜7C¢q†è§Ưă•Y†ûưÓùüqpă _ÈoœY²IƒĐƠ8 OøÚf›§¿0kœ#%äq……ºá8Ỏe¹¡æ­ư8p ÏVt:\7*Ut€>=œ_?†“v3¯è*t_ÑY»µNÛaÉDu~ Û³ùÑzXëf̣:‚(LÔ ×$)¸XGĐ-¸ƠLG°X¹ -ùÍ\§Y¢#đBpÁë_̀¨ÿùáßwïĂ´7x́îR.íÍZMB·ÓÈ#M²Íµ_Îv:₫¶³p#AƯ08§i¯Ôü½`/idi­Íiénæº^•¡‡àh¾Üư«Ươóé{)jªB7¾[ë =l¦Ă³•̀Ú _fÇÈă; uĂñ$ÈrĂu?ÔxÍ>[íoÓ2ß̀uí Cp€¿¹;ơ&`Ÿ¼×º·Û³uĐt_MÀê!i Ç£é"ø(4Ô^­Ÿ¤̉rÀwpk‹•>-?Î\Wæ9Ư‹ñ~˜ú/»G%Ă|W9-ñ£›Œæ»Zë Mè~Û ?¢Ëÿ§‡5Ñלrê†9ItÅfæ° 4¶,dz•ă8-®ke-t‘"3/̣·—á° Í-]̀ܰm­ƒ† Ép°Û¶~Û°}ÄË́XyĐGÉ¡n8è“ÄZnô–C­G®´t±rÔ§¥Áur¬Y†z¦₫éĐl}T¢B·Æ̀ÖuĐáld¼(6&r²d‘‡{ê†Ă=I¤åp]Ư·\]ÚbåpOKƒ3× ºH]‚ÁưXṾàĐM¥$ÂÑ68˜ çùß@?™T8¬•<ú£Q7ưIÊ-6ÇMåvd៭üiÙpæ:-‹T²y!|œóeüṸ³¹»­H#.ÖA+øø‹±Ÿ¼¶™ü©îÄ!éäơQ¤¨®7Hr±¹@;Œßζ.V®;HK¥3×uºHwà…đéóóŸ¦jÖ°œµ±„£ûNæ₫€6ôÓœĂØñơi+=KV§ˆºaz€4é–ë4́B\ Übåz€´;s]+‹ÔÀy!@°cÇré ƯÓ€qĐ!ÿ½Đ~Û~2ÏX+yüG¢n,ÿí*ÿIÊ-ơ<ĐöjÚ‡bđŸ­₫i™uæ:©‹ÔÄy!<î.wïÂg›Oƒn)ú,0gßĐ Ï$ e1ûưcYë ṭz‚(NÔ ×$ ¹ÜL 뫪™\G–”×S d™E§ÚÀAUkÏf¹¾Ư_ÀÂcÚ a|¯ưVØP=Ê1߉"ô,Ä ‡y>ËQY§Z±˜ÏV{λ´ÜX×À U¡›î­Yë  èæ9'»ơ؆ÏS;¾k&¯ˆ’DƯp½@’‚KMÏ06l'0[¹N -ç:€V¯‹t8„§ßnÂ-61åÏ¢;n±Yë è4oK`XOÄĂZ€”×D¡¢n¸₫ IÏ0ù¯;ÈËÀ™öckB‡wÁ j­Vh¶ZŒæî`ƠÿÑ<&ÿvq¿ûÏùt€¼Lí₫üB)uöîóĂÍóƯLJ§ÚÂí+ä6 ­µ¢¤Ă6ôZª÷ĂÜ(8Úg S¤™£§n8>“„\lZm?U,³ƠOéăysÿñiwhkæÔÈ3Ï5ÖADá<^iă´ÍLOÄĂŸH@y|FENƯp|&ɹܸ eƠjàjÍ«=  Å_æÈäƠ˜/ ÷1Ü¢”µb @d̃y±m£̉Élc±äa•6uĂa™$ƯrX6T=q5_‹ƠË–`ù¸;p¢™} Ḥ8­u8¡»÷#Ú¸;ÑrL¬œ<4£̣¦n84“t\jF+G›µ's±Ú“Ùùd̃î̃J”œ o+äƒ)Œ2ÖAHae”‚1/¤Më'S‰Å’c\ÑÔ…±_ƒ1MºÅÆI©í©@ ³ƠÆ> ^̉̉Wæ ̣¥ÑZ!…o€U"?¤M̃§¶•5“eTØÔ e’‚ËAÙwµæ2g£=’:@r%ÉØl~ŒpB¡óẤ”cS˜ß a3Ç´1yrL:Áä!“5q™¢Ưb3V8í¶çVxf£=Ă*ấµÙÑŒ¾-£‡ÈÊùfO¶4H l÷KpÛụ̈Å¥£/<°˜P‰°í•đàơ­æêơ«=cc„±Ë)mÀ¼Ă₫qđ50dÂáơÈuô5Ö:ˆ”¾Ærî…đ#Ư@{)Ö°CÈă.*_ê†#/IåĐ“°º!ÙÉælåöÿ½RY½Ăo–°~ wѳj­u=¢^ĐïxÑm³Â#>¢Ë#Ũœ©Å$±›fëùǾÙÊ‘("$Úw>è•w>˜üÎ}$7Ñ´ÖAœ´DÅœ=úqnļœ½ümç!Ơ)uĂ!–¤½r£Ôk4’«7[¬c2`́à1Í]-*ä"ºÚilƒxè²6f¼x¶ñídvè±ṬPŒÊ™º±(êU“„[ E9àƒæ F+‡¢"(̃¯ä̀˜•KXAn˜eN³Bƒ óÁµ&Am´œÚË‘°d²°ŒK›ºa°Lp©I¨Đ°Đ!Y*g+G¥WËYïnœ]8í@ )̣Á¼|J8¥!…ûªư6bNI¤™<&£Â¦n8&“\n΅ÁJso,[¬”^meư~÷*{H>C~˜±̉Xa…{‚Í ü°6¥Ÿ˜H3y`FÅMƯp`&)¸˜°¯ÖJ®:c±r`ö̀”3‚̀aK]…\Fk¬u!Ư„óD̀à‰#ÜzqƒøKσ,*Tꆃ,I‚å SíTÛÏ@6[9ÈtÔ ?_?Lc`x̣³lä,ẓµb ØÔp¦¾Û6Ơ›XyèEåKƯpè%ɳØĂ œ-$K̃låÈbä½…ă/ĂWYvpê€ùxç1zZ–µ$øÁdÀlznp|Í\küưæÑ•$uĂÑ”¤¶r,ç«|X¬N#Åiơ­0 û%+ä‡9ºÊXa8º ª¼°6‰ŸÚX3y`FÅMƯp`&)¸˜pèÄ ¹ˆÙÈ•Øû0đêÖ`Ye°aîăc«*³1 †T Âb°ÙÀÁl¨œV¸+„"e9qbñÖđLt©Iè àQ‹ƒs6rp gdéslÇÊyá!À˜Æt víqL›èO­ & Ǩ¬‰Ç$í,{xöâæ°ÖÆÑ(Whüö2̀µ»~{/Ñ,Ñy‡Đ‰æˆ̃@ă6hH^ÁÏé#‹¾˜ˆ} {):-†œ₫m¶º™×[#ŸZÏ,Ąˠz:Íy®‚Zc­‰€[ë{/®mByéØHyo –8a@‹)̣¿q„¼̉ endstream endobj 138 0 obj << /Type /ObjStm /N 100 /First 913 /Length 2125 /Filter /FlateDecode >> stream xÚµ›O·Åïó)ê˜\8¬"‹Á€A¾Ä€`éDđA‘c×X­çÛûUwM²€låLOÏ{ü±ÙƠd‘bT‰esGÙˆµ‘tÁ Ÿyâµ¶ư!nƠàC·?RíTÅ&?"Äs̀ 7|½¤:ÎÙûø 3N6ai8Üá̉ºé°vDItÚ‘A26û$YUè‹dK»pßÔªÉk¥Æ“aÜdâdjmÍ£₫M«tjĂªóÚ´ªê ¶¬ª:©ía'/êuAY7 '£*½YUSÇ;¼êJñhÔǰ#úœvD©/«ê¤Ơª Q=q,RiûÂcÚ ‚³’v«*^ªVƠ)¤³Ú‘Fºp)xv̉Ư¬!•F7Z”†9óœ4dÚ‘E£í~á¹ ¦[•ưk¸˜ÆDó pŒË06TyuuÛÉJSª(÷bÍ¢»(Œđ*ÚíÊÔ g}M¯^Ñơ]¿}xÿ@××ôæ?̉W_]đÏ_ÓFU+}O׿üơoè ¸₫»àÜùùçn§½y¸:”̃€|§¿A“OËƠ0nŸ¬'Èy~}ûøđéƯ*K×·¯ßĐơưƯ¯Ỏ'óÛÿ¸»\ÿ›»û§Ï Í~n”Ÿ¾<~º³C|úîîÇŸ>~óđëÙh́"Óº£Ö ~ûñ¸„çÙGc~†·…4«‘E´³Üg)ƠKöRβù÷Ư¿ï₫}÷ïÏ*q́,ƠËá¥ûu÷ë®§®§®§®§®§®§®§®§®§®§®7\o¸̃p½ázĂơ†ë ×®7\o¸̃t½ézÓơ¦ëM×›®7]oº̃t½ézËơ–ë-×[®·\o¹̃r½åzËơ–ëm×Û®·]o»̃v½ízÛơ¶ëm×Û§Å£³d/ÅËæe÷R½^N/——®Ç®Ç®Ç®Ç®Ç®Ç®Ç®çưS¼÷Oñ₫)̃?Åû§Å³t=q=q=¿ÅïD×k®×\¯¹^s½æzÍơÚ©÷7́ÿ¤¸ẫ´GŒ´²›2z™h̃Ù‚×ïˆRÿ\¼Ỹc¢ePr-ÓG Ÿåxæ<s1Ư30=oœ]ÀœZ‹¥Ygi’Ëyó ÎDÏà\½t/Üe#¸Ư ‚\.§{₫ûy眓‹ƯœuUEr©2s1OË L´ J]Ñ´l<1ǘeÍ‘KyZe¢ePvEKÚ°y" Ï*"®<ă)/„éÁ™èœc1àÀ|«(̀£@L%s9Ư38=ƒ“ÚrÏ”ƒSVé̉s9Ư38=ƒ³ÂkÚ$QMÛè>™Ó=ƒ3ÑóÆ©[Đ–˜vv´)€¼H¤r̃<ƒ3Ñ38'&¢˜(`Yl¤k•=%—Ó=oœ™Á9À‡±ïE-4c¿g<Û qºgp&z§J±¤’ ”£RđÏåtÏàLô NUx6tZ$ú°¤–‹éÁ™èœçVZ.¶T¤Ư°ZXgÏåtÏàLô N„s[´„­åĂ; •“9Ư38=oœ iEAmÇ@Ke=—&Ö—á¼yg¢gp"­ÈÈçcÍ£`íuà2Yr9ƯóÆ™éœc¡-ÅëcÈצMË8—Ó=ƒ3Ñsaôedž¾l{ẴåØâ0Ù„dL÷ ̀Dϸœ?ȈÛ̉FƠV̀>G.¦[fePZn¯ơ£ÓÚX³aBˆ¹˜î˜‰ÁÉMió±c ]4™Ó=ƒ3Ñ38±Ï{ñm.R¶¹^sƯ/“ü‚¯a]\åđ¶5œmgqß¹ŒîŒ‰ÁÉ;ƠöïÙ†/ûÿ«Œ̀éÁ™èœxˆØÿư°/˶ê›÷ÊåtÏàü]¿•ÄJ2 endstream endobj 327 0 obj << /Length 2884 /Filter /FlateDecode >> stream xÚíÁră6†ï~ ¥ƒ±@à̃fă©I¥¦²»\’›“Q­-;²]›¼ư6HĐ$€ ¬ÉĂJUlkZê_̉ÿ±A¢̉¢„ÿhѰ¢‘œH̃×wgeÿèá×bøåßïΨ;‡Às+̣—g{+DAK̉–--.?‚Ö¤æơ.o7»Ưnûóå·gÿ¼|y)ÁÒ[1NjHt.Ï裉€$e ÿ£¬ûˆư|ZR"¥To &¥¨fÄacT/NXµ=¯Ër³ï®o>‘Ư₫·‹Ư~K¬¬HYVÀ;̉Á Û‚XY“¦d® ¿oÏiƯ ?jç¯ÉB₫âƒk†è‹a÷ÓÔÜơÊŸñóøüˆŸq̃>Tβ˜äÜ)'TĐ¿À"e ”ÇXÔQ†E1Áâû F8qHme ᨣ=QˆGÚZ6®¨•–S;G e<ƒ.Æib&™Ơ%0ÀºmI#bQÀzÀG@V’ôYiBêhO"1À]U+Ga=ÛYè…ư‹ÓDĐKsébů–5©adaOGö̀̃Û­¬6÷‡»«'¿ʾ¦Y©‚pˆö”a₫(¡”ºÊÖ xÔæø³|‘Ç_ĐĂ8MŒ¿$—.Ç_Ăá<•ÆøÓQ†?‰ù{wxè|¾½ưp½»ñ ¬ ¢«OÁä A¨£=yÂJf¶¼‘/÷bs„Y_zaA—â4aí,aI\lpY—„—QÀt”¬́ĂƠ]çÅA¼¨•'–öd!°8ÈâÔ•µÚ₫È2̀Ñf9!¶ eqmI¾\®UÆ5DÛô/g`+_Í`h^(V̀†`¬ !'༯­m+$_ ĂUæ«Îƒ*dL”$†Të–#s̉¶m )e˜¢L}¿ersuèöê§¢Æ+B›º°2KÙí Ä¥L]Ѭ]k);ös2Ëy¸]‹ÓÄ€K2äb#F¸(«(p:ÊÇ&€ó/Fª™4É +Ipvnˆö4áé9Iʆ»V,^ÏJË,y4-ÓÄhL²îrơ¯„¹®VÆpÔQGqün÷Ëj<Ù&§(¼ •+2E ¢=i₫A)\eëơŒ“¬†–-̣ø z§‰ñ—d̉Åømi›c”áÏkU™¼,Y h,© +I°Ñ&\"¸p5­\¼rh›% ǰ¥qiÖ]jp*$%¼̉¨£ ^³ÊÇưíî&̀ưZÈ¡· :á¬LÁ³À!Ú†g àÍ1W×ÊËÏ0˜ơƠçt)N,ɈËƠ»ZBŸe#LG¼n”ƯáR]hùăa{?ü©Ö¤™ŒÁQg«ICư©ƒúcëó4¦l'ä4/N/É—Ë'ÄæÆ(×̉Ÿå]ü±&¨¢°̣ÇC´' 5ÂUµä½¶îLÛ2y\½Óô.bå,—I^lÄYQ̉VQ,u”ÁRÎ`ùÍç-k6Ïûÿîö[ºùƠŸÚƒ₫8èXiƒs{C´§?["wU®£Ăă™Ư³¿í<À‚.Åib€%yo¹ÂÇ$iÚØb 1ÊÖÎvÑưTRqơÔMMđq˜'°F&øT´§ÏŸà«håê[,怳,\Đ´8M ¸$C.P5b ƨàªr¸·»‰XÉÓÀY«•+²îGE{̉üu?-k]ië`đ”Ïø,{äqô2Nă0ɬ‹,áÜ©j£ê(ƒ!ĂđQƒËÏƯfă1ĐàUƠUae ©£=‘¸kŒÂEæ\q9¢¥ơmçñ4)Nă+É{‹Ơ¹J¶0[Ü3FÀØ `S«[‘¼F¬Ê Ñ0\åikW×zùä„/ŸØîÈ‚0ldœ&aW—ƒ°©ûn‘„:Ê@Èg!ô§́`XHkZX©‚Ñ2L¡́WØ9ÊÖÂs ‡’9 -{äa´2NĂ0ɬK5«Ă>'Q u”¡ĐëbùầgºX¬$)],XÓt‹£i­\¯¦‹Å6KAKă41“¬»\QTäc-Ö:ÈÀè6±ÜëiuG8ªôçn&Ià-ÁX’ #má ĂÇcKZ§ù^I†9@}̣ø y%褳t¦8y98á~Ă£tê(ƒ§Ûóđüô¦_fä¯3*5Ÿ&O°\€"Y₫D<,qT­î>Y¹sLZ–Ƀ2èmœ&†e’—ă^HÈØJˆ1ÊpÙ`.gd¡…•%H¥ơ$a&ƠÚ^$i…̣d±Ÿƒ̉rL”Acă41(“ü»Øy%­x”Ie˜t»cƯE÷ÉÆóïVà8VÏÖcEx ÛØƯÆ´ÖSÏ0¦åœ<0ƒîÆib`&ùx±j -ă°MRl¥ÄeÈl™{؇bn K[èµ® +Uđºëí)ów6k`ÈQ¶t—xl_dñö0Ná/Í¥Ëñ'a[G1F½đ'Ê ₫¦v¹MƯVàâ‰!ÚS…Ù«û]=U+Ç™a:ËyĐ‹ÓÄ K²çR£Q̃€PeNGæèsp’ȧNañ»ÚŸÓJY*ßïæ‰•ùKåƠ\££l­y§¸ṼöE~Aă41ü’\º\̓ûBH[+1F₫܆›ÇîI-’j‘Ä7W×ê·ÏƯÔ†•ú LÊȆUÿé"…₫†L=m…+%G·¡§ư¥çA4*Nƒ,É‚ËAV:[.1FÈ8† ®¹\=ß>½U…î₫‹‘îàcßLl`-Xß0c%vÑNÜ9 ‹¸`{GçÚ¬~·¿æ<¸‚Åi¸Ø,\I¦[l «Ç²¥£ [fkjIma#Nơ–L’àÍ!ÚÓ„ç`z–D8Ö³¬×ÖBj{&Ê ³q”I^®â©{"ÈØB‰1ÊPéöË<₫±¿ö„^XƠ‹fe!©£=Axa¸7#h-<¯$Ă –ƒ̣ §‰äg˜ Fr…[E´•’ŒÏµ§ë¨1Hă©+æû»¡‹í₫đ´…cß|z̃_?íî÷ĂŸ?•¢¼èƯ5¬ç½¿¨?:U—6Ya‰N‡hO³?:•ê¸`‹^>†Ñ©ơ5çq4+Nă,ÉtKN–RÆÖ3Q#hD_ƯÜY¨é·ó›)„5Ü&çÔ“9í'I~ü¹,nà¿E°¿ÛÿúÈ»BƯüˆĂo·ÅÎ₫5©£V '˜«c¨Á₫ˆz¼Ëº°̃XpDl'_É₫¶.°̀”w\±…’Ä )¾®ïƒÏƠ=Î2ºU;9l@bí¶C Ê+8cÑ1ô‚ß<ÀˆSXv³û~kÄæ |¨0­²y÷áăđÀ»nß®n‡?¾₫åvw=ü₫ƯîºÛ?zóª€đá–’À{£=áÚ̃-å\ª]Y[W₫‘h–-Œ›ZçøS₫ÓÏ|—8Íà@î;ă²Mü:*QơÑ0¨ƒfh‘gÁRÊ€u@¯øư₫¦ûƯ+ « ë¥Bơ@G{™‘‡(Û’×n₫>,~µ瀳ܒ\Đ¹8Í0œ.äƯÿ)²M endstream endobj 251 0 obj << /Type /ObjStm /N 100 /First 905 /Length 2030 /Filter /FlateDecode >> stream xÚµ[5…ßçWø1<àq•/eKRB´)ˆˆ yX’I´b5ƒv7\₫=§º«E°!"[R÷ôÚçøóƯn3çˆ2B ̀ !‡œÂJe„%Ô¦ïkh]ă· £.%ŒÔREvi)-BHsÔ ¢@FĂŸ ̉'xÅ`]ñ£°à¡é[ü½âG«cÇ"ˆX‘²wü×RÈ)áM£€Ôú¹Ö,2lr®l%ä̉k‡ (rYBîTwÜzÈCÁÛ%D– iV…²ƒÈ¡dͪhhV‘•̉4«RCͪ´PºæN$”!P–jÀ…Då„ä(»o:đéµjV‘91;ÊZ4«½†Ú5«½…–H#Kh”i‡ Ñ2 €aÓ œyP@!ùàĐ$!9~´ÎHk£hä$iÑÔ#‰¾‘ ßñèAJ̉ä#HE©¢Œƒ4d5' ‚Wxà ]Ëñd «ƠĐÓĐÈ5t&ÜBÏY#KèEÛÚI¯ZEÈR#9¥Đ¹Óºï¯31ڲц­X´0m¢#£25´µ®É%Œ–x—©‡!¤qF@v´¤0Đ ñ@hii¬Mơ‡&‚'-¹̀O€™ÑLSU ¸ă --O­´]ÖFœÚ¨K§ $ÊUTYІsQe­±\T¯£ rÑ´í##x*p+ª¢-D›&¡aÀ­jÚQ̉î₫ưƯ₫Ù_¿Â₫ÁñxºÙ퟾ưåfùưøâøënÿđtơêp't×ôb·ÿîđ̣&<Q́h ƒ#lzµ«1Ç<‘„û÷Ă₫iØuzv ûGáơÏÂ_́đïÿV*±å²V®Q{©§áF(#¢NhŒ8P–}D4WÂƠpCt4Ü[C!¢»GF³•ÓđE4ÇÑÑqc¬ň‘œ%Vt¾Æ¨ÍêÊhăG;> Ï1Ạ»°ÿáÇŸ0:¢|FĨq|{yùb‹vv:̃,Jgh,}~†©ƒxưhû'W§—OÈSØ?ytöÏ̃„ï£=9sØí¿„ÚáxsQH4¹Â\Ÿ̃^½<\/Ọ́ê›Ă«‹ó‡§?Wâ:jÔ©§”đØ“ó+H O®±—2»†·NÉ#‘×p¬aIkˆ¡l ‹…ƠÂf¡¥¯–¾Zúfé1 ­![hzÍôé5Ók¦×L¯™˜˜˜˜˜˜˜˜˜˜^7½nzƯôºéuÓë¦×M¯›^7½nzĂô†é Ó¦7Lo˜̃0½azĂôƪ§óë’…la¶°XX-l…ƯBÓ#Ó#Ó#Ó#Ó#Ó#Ó#Ó#Ó#Ó#ÓcÓcÓcÓcÓăUïÅŒñœăÀ’“S‰ –œÑ…}ysœC Ÿå„¤m £/êF8Å"ĂÓ<'¦£çœÎ†Àœđj¤ N‰™}97ÏÉéè99{‰c S_ê+́H̉}9ÍsÎj“S(jß,˜A—,PL|ËoÜæj9)-'eí‘t·"6X!Í̉|)WËIéh9)KEIb­YĐfê…1Ísr:zNÎŒP´:µ`ER•êËi“ÓÑsrb́=ŒHmç÷X¸ør绕µŸçäLđ̉C̀)¤¤‹_gNóœœs›„íuÑs8xK̉ÓÄÙ•s󜜓›l]Çcoû“Ú{¾œæ¹qzzNŃ´IOàx¬œRcggN󜜓³bq ‡´)-'Q8ÄÿƠ“Óqçätô|wŒ“ÖÅP‹8 ÄQ.‹ØÓ,'¦Ÿå¤dĐI^fÏŒ°f́XÄ—̉,'¥Ÿå¤$œ̣º“¡ă]¬B·§yưúó-ƠÅ}|›ÿĂóë‹—ªđư5n¡éĂ·¿®~¿8ü±&d}ơHÿ\»áߤđ endstream endobj 355 0 obj << /Type /ObjStm /N 100 /First 849 /Length 887 /Filter /FlateDecode >> stream xÚ••MoÛF†ïüs´…wvg¿€ @Ái (Ú$'C­l¢¥Rtÿû¾#%lRs0vµó̀;Ÿ’2ä| çp$̣G¦ÉKl3NG ‹ ¬±8#Y«Ÿ3YçhÈ®\´dT¢#›ÁEH±à„¸Ơwø̃"4Ö%>ÙØ[†^̣$ÖT9ˆœl¢ieC‘Wf’ ½,È:Ù“Ïú)0´s¢à e &†)D®Ä8 đ#GL è,ÎHQĂd¨Esˆ ~l)¼³£d57OIô=P ¶N”9gÊÊY¦́ào-e8đÉQkñ”³‘Ø0BóØĐlLqIĐÄ6¼.j.à‚6ˆƒ»ÎA\Æ%Á$pç]b‹t¢lưAŸÙbp‚„Ù&©²3 ĂƯiƯA+î. Ưdm«¶›µ/âTÓf“€ ‚ÑK€»¤XÉq?´¡î^al {mV…ưFP¥4˜ƒÂØ(W°.¼4hð2rÆÆpÔae8j]؈#XÚ}ü¡`°6œœ2¼à &ØNi`u8s¨t8;}{özAĐ UÁq>ÂY÷Ư’Ç"Y#Ø6l¿5¨Éc•¬¼7,3ă‚/ÛX]ưÖ̃?Ü1]ù¯tzÙ<öÍØîúºkǧëêƠ+ºù‹ñî>́èfEWö^¿®®̃í¾üŒ×íW³¢–MJß”“’Ó·yûDF“ưeóp:gœ¨¸ß7ÍPê±üX·‡ừm¿ÙMÍ₫›êë æz§DøF|Ú¹ôÛH‡²­§†8Ó0ưpwµ*û¡4hÏúîúûÈ—Ñ“8ñk6elÖ›¿ëÏ»a¼5ƯîP.B»ưÓ¯ăe­3c~N­ËfƠn§TzI½ö ¨Oơ°ŒzóđØÿÓö÷ËèUÙt³Å̀Á·m×-$;|z(ƒ³S>Oø®ô—±nv2Ï©̉¯QĐ%꾌 ´@[ù¦F!K`,ïX÷ăO ïëm™ù=aó̉avø/°¶ÿw 3[ù,öûj!¨e,Ag¿³ØlhKÈÛƯ°­Ç%$¾Œ·]÷¾i× ñ3ƠŸCU}!₫G[K³^Ô‡wíçOe˜CíKôL&ÜǾk·˜Ä"ч2|xÚ—%́üΟ°ÿñzø endstream endobj 509 0 obj << /Type /ObjStm /N 100 /First 846 /Length 824 /Filter /FlateDecode >> stream xÚ••Mo1†ïû+æ¨ÇöŒm !¡VEH!8!¡%Ư¶ÛƯ’l@ü{̃IOMb.±w÷™ï׸L„ùˆÅSLX%{)T%f[3qP¬…X=‰gâ,X=y:ïñƯ |ÙûD^3ÖL̃¸à( ¦ ‚q!RPƪ2’‰¢s„BÑ#nt́"’3.é™­³ïºÏAb~x ‰Â€Í¨F<)ĂŸDRÄR#‰4ĂN2i1GÉü F²:á#%{/”üi¢Œ5åè;A‹2¾IbÊ–O T,Ÿ©x{V*Ñ‹_Åâ-¹bÏÎ[’›:A—Ø! Éh¹ƒ½dôÜYrMgëFA×ÙJ.0gŧ±Á“˜{¶MÂ& 5„a¯Ü©sØ ¹ê`đ£È”ƒ·70è±:µùl`­:nß>l0…w沈B$Ñf5™ˆ3AmÈjBÙwÙ”be+ÚËRµï ±°„@gYm4 kBÎĐ ê³¡ÁÑÙÛùóLgôŒưszưú¿®Ç~*t¨Đ—ëqlEG<Ư›à ̃]4ƒÛ&r¦“Ü|ßƯï–7ËRÁâ!†́Nb›=o ¦₫nh û@^¬ïÉ–·Ă²×ÑyVh9¤QR¿—Ëys×/-G”tÀư™VO¡÷óïăđk¿ºè®wÓjYÏÓöÁđÈ·^ößçÍÉ´_®Æy;œ¦æû?ơ¹p›¡~đôv5\×gû{»¹oÁêó¯aÿ¸Jjøñ«¤F@ư×U’ÔÏư!7Ögô¦«úa}ŒƯ K‹·›§ê) í.ư´üûG|ÛbP×A~„ámaêÅ×°ê%_­Œ´~6jX[è=¸m!̃uåÄÁ¼Üă‡Ơúª?Rư1Ô¼7â{ü Ïú/₫uç endstream endobj 755 0 obj << /Length 1279 /Filter /FlateDecode >> stream xÚµWKÛ6¾ï¯ĐQV´H•cÑ6HQ4@°AM\‰¶…•¥…$Çp}‡R¯ƠfE€H‡óøæ›1 bøGƒŒ™äḌ,(Îw±Ưí~|zG\‚ÑḶ§‡»ư¯B4&yœÓàá“X棾‡2ø+¤»¿~»ûåaT$˜ "áßùª—~ñ´dÍ£"1O/XJb³ÂW#‘̣đÆM?¨º®ă.â™USâGƯª̉́‚ykGâ b’ĹSöp̉p…óphwp¶ơS5àÎyDzđ̉»Ơ£=vÂ>¬K\â»< ‡“npËXàê•ë’E4%ÔôÁ¼'yX(£I²Ù-¹|Ø.Gs’§,5̉XL¦ ×*|ÿÇç­8@Ds¹úX jÏ|ƯMo•U§‹¡¾áêеgülÈÀ²« ~́«AßĂN.¶Ăg<ÿ†ñ̀o·½lû%¦<‚lj–ˆrF2ÆÍ¡‚¢¡gLSéñµR.Ơ²5\›EøU÷Ï.‚ÍóYú¹H?àjÀÍ“êñCá¥~F ßÔx„Â|ÜŒ ÛÆéó=åëê±SƯ ¾Ä"^×ç’䀄T0"¸-"àđ (³u´Ü™”¿M÷±”ÓyæWØ8œ†á¹·ß_¯WriªR \ Ơ]^ö˜–¦¨|¾= WƠé=º¹_;DSNR.‚”ç„gù„ॣ™ø­•ZK œỗ·†Y!K_ȉ…dæ«pUÈ•«̃¶+uçJ́ôơ—¢Đ}¸Ô¶(&˜$ONïœMxQNÑ· øQ”Ï<û˜Éh³¶Â–eOåe¶=æÍAÛn÷ov¸̉ª0zO´Á„$,Íߢ àÎ8y6̀=„¨Â2 6 Ö ¨wƠl:™¡w“)aÙªà—¦@Ÿª!2đÊmµCĐ4Ó'“”M̀.sæÚ±‚…mZ^æ„?[^ĂFá¸Ư(h&QƯŸƠp‚;Œ!_1 °gĐ`O¶i´µ%\lDªªVµ¥I&ƒÂ…g“,|²"G·<Ùœù[ •t ˆ´E"¢CÛym—Û#Hg=Î#ÜÖ5̉&J® £0¨ ½¹̃v…l÷–“4Ï̃î7<—¯‡†ïÜ¥UE”Á¯ªæù ̀„áa*?³đN›oGºfXˆ,î8ÔjĐ$:]kƠ{Z@+;„µ9n®µ¼>=\+Ï ÂÙjPn|˜5Èoâ›z|³¾§̃éqmÚØA›g̃ùŸ ¡* T…ƒ*lªºÓª¼á¥k÷¸é|“ZÇ'2́°²ë€Î Bî!;Úî†Ë«;MíÖnv—¦™ÏwĂđCßcäÅ…°åư8̉ar6àku=Û­º/Á9`\ÑeË¢;PxµÚ¸HH₫?ƠÆa"`©X”Çv±aE”À " LXäøÏf]¹-qË·¿CZeæơYƯâÔƠư'}T]YCÅ«0ö‚³NØHË¥D5ÿ¡ûîF¶À¹I8uc©¹ëf'e¶l˲úg‚ïN½»<²* ¸36ô9£c‹ßsf‘3ÇáÓqÄ3‡œÍ¤¾à»1¡xÿ»ér1³üđ/¦¹WE¿1ŒĐŒÿçbG6FˆŸKÿ~ÜÍE endstream endobj 760 0 obj << /Length 854 /Filter /FlateDecode >> stream xÚµVMoÔ0½ï¯ÈÑ‘ˆ‰í8Ü(Đ"TZË zHïnÔ|,IÚUÿ=3'Ư¶‹ P´̉ÊŸß¼ñŒ-¼~ÂK¤—¤§*ñfZk¿öhđùd!œ_ÁçÑrṇ̃XkO„< 3á-W–!ÓlÆ[–̃7&ư‹å‡Å»å ¤¥æ:R¸ëäưhëTz"áRè·Æ(d̀Cü¢]+vä –Uá*Ñ́ë¯ Ïo|%˜éo*³C‚C ½@¦<̀Ürƒë”bcçĂëê«j$˶ï|™°› ¶*̀ƈmªơ†¦ó¶¤AmnĐÏÔô¹ºn‹±êÚ¼ @¼uæ®'„à`O _¨j×dáv}5:«bgf|óö˜<A°Æ.u¿‡"ªÍÀ)P.â*å] i&n\ r’½G"‰,yÔ«&ơî‘ûí/$2ư; ÇÉƠƠu‡ífî䵪¦T^£8Úg”̣,̉À*æÂå”Iq’Ç` É«-̃ä£9„8W‹ª²§Á–Ơ°ư-è©Víª{v¢~™ăssEØgç•a₫Y‹ûØâịC%HÁă‡e*©LO±L;_I¶£̉|®J•)Ôeny]ùZ3Û9e*Y^5MS!+V5ÛÚ4¦EßÑMM­‹råüÈĂô«¼pÓ›úøÚ‡ÿåéë#Ú\­ưä́+ ΋1ÇƠÔC_€1Slăć`ØÙ@ Ÿ#̀xËŒTÈ“TLª#ê‚É- -Èyoç”ê?%µ0jUdçÙp½ƯRsëÅu±E‚™d‰03@¿ÀüØá»Öög›Œ½stŒÂL] ±5­É[ú¸$&ø³ëÁ”4"ăIwÿ˜ïU g*‹c/O¢ oƠo¡WÂ$PàQâí¬gă).£Úû²øtèÖ—xï†ÊB驨¦s׿ă÷R“6sá-‡ÆÜÑ4 ª{]C“hö”DC1ù^ZjÙµśx= ‚¼ ,£{yœï“}äGº‰Kc{bt–₫‹.đrA(+Wđ®́i)újëNĂĐMçeº´WwIÇO>zÎ G+%ÜFƠº³àùÀWĂßOƒ{@øô(û ^th endstream endobj 763 0 obj << /Length 2153 /Filter /FlateDecode >> stream xÚíYƯoܸ÷_!́“ØåñS¢rèK“s›Ă¡‰Ñ—\dIk ÑJ®¤/-ú¿wF¤>Me×=瀢…a,%‘ĂáđÇ™ß ™Gáy!÷B-ˆ¡—¯h÷¶¾óLăƯ®˜í·‡ûIÏßß\}w­”Ç(‰hļ›ƒ§8%TGƒ¼›Ôûà‹íÇ›¯~¸)®ˆ’âÂYû̃O¦ÖÜc!áLIœWÁBñÉ̀ºWđ¯·‘ôOẻæU¹Ư‹Pùï²CVge’¡ZËPoÏ5 ©Uưæ>ƒABø+¢ÁGé'§Dl¹öÛâ‹éăÓç­R~œñmaæ¥ùm$é·ƠvÏC¿*>å­y×¶o5IßÂwíg©ygŸ Å?~otÆ•K"dÀ{#Â"mN.ûÜßƯï‹́óVpb 0®e& ô¢£hÖ‹+“¤ÎâÖi6[# ¿L™±®·ZLl«¹Î‹́£xŒ‘H©n û^5cûÉ~¦₫A8í¯"µî{@l3—dE"¬ï¹s ‡™?Çơ()H$TßTc.[p°_$À`U¦Øÿ„-v›‡ºzÈêöËÆ)5TD°p[œœB#àØ %„¬yÏeDä̉ʯ @çÎdg,ïΤMEE›ƒn¦÷dÙ³y¥$J|r¸¦Lºgu±5`û­M""""Ù÷%®cºç<$Q¨Đ„1ëó₫›0v"ÏN3réàª}Lè?¢˜gÖóĐ „·ú’>trŒË™‹2§&K_YÈéÄDÔeø-9X!a0veœjÀÖÆµ EB>@₫M~̀Êfôhsi ¶Œ—6 ó¸; ^Öñ#éV^lñ^ ·®;WÿÅ|̀Û{Ó2 €FÚ«cà.7æ‹528̣mïâ¡ĂíDÉkÓ|Üơ²+ûîmy0c̣®ĂÛ P`Q¿íwtªlW̃Ø *‹ü˜·YJ¶{)¥ÿö`ăR?Îî¹Fơa ³ă«cV mg›;ÉL—&‰‹¸6míé›üt‡5%.°́-.\̣†KÜÆfev.¡pĐ'gđ"ÔˆH£¸¤~ÓÖư1ÂGluVÆÆŸ“Ö2svđ] Ùn3ơºW³èZ̀©5gp̀Ô8̣̣P9= „¨1b ºfÊ%Đ›ÆœüªL{²‘ œuFs¯kÏ;;³˜[.²ăIej>₫)k_¿¹¶XíṼ¹RôA_¬ÓiĐưw8U£§J³C|*Úù@¹4Ù²±ËT0ÎŨI«Ó@æ’ØóŒñ"¢DE=äÙËB¾cU}Ü» §ê]„uô7÷ùZ(pL`Ô .W¹̀Ú$=È>wøûđ€ơ` %‘ÇtàĂGê¥đñGz]Ï£'€Ëh̃û«¿º̉À9¦‚¢¸²œ?)â¦Éçñ€ƯF_]„î@L("µpE$ïœF6róÆÿuêÍD9ơ H©ÀXí‚¡ƒ€úo[ûCö²| tŒơí«Ư9]˜†jVø ˜æM¼FøYC@“©yèØ[Ú­Ó|Æó‡¨«`¡5Óóbbó¢ïÛçÜÔ¯²»̀~¸3½—ĂîÔtB½SôhĂïđkd~pÀ1₫%?ö‡áØ­‰Î9äBÔoŸ¼7nÅ­‘<Íôó½F}Êî̉₫Û7?úÍTîSW$h3;̀ 9qÑ fô¢Oäë>ÿkƉ ÿkƯ…„Â"°¤Yá‡_âăĂ !›æá¼ˆ0-PmÚ¬iI™lvĐ:>ÀϘovÿÜU¹Ù1ºÛq»Ùqú¯Ưæº#¦ĐÓR› .æ{JÊơ0›fè †sBƯkª‰âiv9ë³¢©^9 I(e+è\^ö“PÍË%x{Î̀½TwÑ#·LkÀ¥?A4%k¥kÎ +B÷q_ă-1Á0 £Y¬ü;3¹ßºÙDV¤óºj¯!ˆƠûªh=׸οzk•Sâ?[_O Fÿ ¥·2‡ endstream endobj 769 0 obj << /Length 1839 /Filter /FlateDecode >> stream xÚíYƯoÛ6Ï_áIjVI‰ê[›~¬CÑb;`h‹A±˜X¨,¥’Ü´ûëwGR2¥Đ™md†të~©í¢ºn-·xt²ˆ ăƯ/¾I¢¤§8óôââơ¹‰ÿƠ@ñÈ+PJ‡3‰ù³×K#v?X±ửa·/–çÏ_r+‘(a÷²‚Ób KR7>6 JbøQF¨ ‡ÚÉ‘ CÿëÏà}Đ1™%ÈIŒæŸĂY›¿ÍÀ†É́VSnf̀*PÎ.Î~÷%(MB"¬"Xc0 %%Má!…|2”KŒlFu`oWƯ¶Q¾¤%‘»(ª«Úw@D‰”ƒ[ÖYk8gy^ „d¥y‡̀åª̀ơnäệNªÊ!± …†ø½]+ȼƲ1?×M½½1Ÿbzẩ·¹AÖÙe©̀Na₫ºUM¡rb¤•Ñ ‚¸ÚiHp$=‘id„~…Ü[Ÿr!˜-!1ă#B—Y£ <6 X©Ü.÷Û<³fNƒ&›GIđẮ́l®_o‹nmH5̃à̉U]–ờskŒK½ù)ÇH)IÊH HÄÁÉ·ÙFy]* •‰ƒœ̉ñÁ U ˆÙ^öÛM­=[w†Ä¡.ÚƯW¹/œ#pT"ÀÇ^œ8¶ˆÏ¢Pè($ujJ±êób£ªBßQbZ}ĐxY+(̉(|¶ ”|8ʯE ±`µ¹åƠ‚sB“ä´Øe2¤ ¸ {¼µV²è§X¤‡§´‡Ys ̀&{̣‚đ€™B́m£VuÓ¨Ö0­û{*§WV]¶ó‹E*d1Åæ©[e->…/J“˺è{;3ø—Ø—ÑSº™̃«Ù„¿¯‹OqåË¢, ª–[¿¡̉âMÆ_¡ ̃ª æ¡Q§qØ_lË­%ÓZÀïđ›xùbqđzJ³ă×Óü4Ào¥ohđ+¤®L¢: ª]Ñ´7˜¬·IßƠ½Ûñ¡d¨ÍMçxf’Œa?c0€Çe*#²N½Qßđ|UzÑ6…‘ˆ[DJñ88 w >ç=?óZ\ơ«MNç†̃@ÓáNˆ?±V ?.­êÍ $(´éq1«róî>Ødß‹ ²Ün,èq]óO˜=´/͉֨½ đÇ£)âö1Đ7GS\m]¾CSPÚ!4FŒŸMÜv}S̉Ù₫©Åû#û‹cÛKƠ8Cº-Ú¾#vDwW{ï–¹̣”îñ|­ôåèË…ñ×` ™c+˜îiEy,ƒ‚TÏ7Ë€Ñbtø<cUu檦yg†â ‹3Ö]ˆjW¢œ–ù ăóË¢ƯnZ³®[I|ضIđÇZÅu¯µíÍra9 ép§1'¡®&N“1 ”ÿSÈx|K|:gô₫Ê2¹)NJÑÿ·E_c´ƒư‡½-̃[F£çrŸ´n}Dvl=©Tˆ°́ëFưÑ̃ö‡¥$é'»z$n†Ñ•FÆYÀ<ê.úÜ´’q?ô˜>8èFºÜ›cöyÈüC̉iQ'Uxôí»ª7´ÀC««Ë/̣1o_Ü'¥H¦Ú8₫n5åσIwME*ÂÑY¾›@<=ÄÁ¢ê$đI)Ê|₫׳?—/4h†£î`kÉd¦HöáƯ‹_ß½_öÿâút]° endstream endobj 773 0 obj << /Length 2680 /Filter /FlateDecode >> stream xÚíZMÛF½ûW{±´;¢Ù_üđ"‡Ä±Á;́Å1EÍH…¤<οßW]Mä´’Y±§…Q³»X]]]ưêuÑbâŸXÄr'*HT¼È÷ÏBÛÛÜ.¸qơĂ3áäÖ\$¿»~öâ1 i˜Åơv¬êz³ø°|u—º¢Y­•RKơrµÖÚ,߬½ḮLˆ^̣§kj৬9é¦U*32Mø¼*CDI4Úÿ{µ9§kêU¯®(ñ`|ÛeMçS¤D ù—â!+ÔÇê)F5åÆ1  `̉¿à#<¯̉I~¾¢´Âx „`0ëI'œ%b“ .gé‘Û§¤“ [¸mêưl¶!ó)Ơg>Ïœ"Œ•êÓIđÜœ*˺Ä%ă$2v™Ë¡ĐÛ­w2è4ñÂô"ôD4Û¿©&À§Ç­Wb!‘CÈPÂñh#ä …/fÊ`Øiư6ÿê8]% 6)¦ù öxÓ·Á‡́¯ƯjL32ơP¥ß]mM°Z'‰`regÉl ѱl|«X PcESxÖÉØ÷Øœ|ÈögeEÉ\É>$kàħ²Ú”yád‡Äú&c₫àÛó$ ̉ôq{T’ö–sĆ‹Ç=ưu<°ár-ư»bïöÁ½{f¿…Æ¹ÖØo4Ó!.ÈñZ⸋tNñ̃ưôر­Œ—…åB÷Ô_`# XôtOư5w´Ç^mËO+æ·ôúx9à?CëFûphZÖÀшÆ'R[ä]ƯÜßƠ­ĂѾ%:D à_=+~?f;¨Đ²jûk#P¦´ṇ̃¸§†[‡£·!6%́nm¢¤Ç¾ »6´ü¦~¬-^½Æ(VLúN›è̃÷!€ĐñcA@!¸/oïúM‚öáJAo«-/å₫®̀i‘w¼ă |/ ăÉÉÚŸÂܬcĐÍÚkV#úÊG}w,Ü(KéåÁº°niÍmy³cÿX=c =ô[5ÅØµT¯K•̀…zîh¦^Æ]»î̉" ‘Câ…U`B{“₫đ1\l0ˆÉ/î­äp+c:˜»Åûgỵ̈D ̉$µU%Q)°‚!í₫M¼‰–Îv W¥´w ^³@pÏ/€N‹d_Z[kSvYNWBê¾á ˆm_f—¼"ĵ‘>̃F°âs^hq?æûL̃qỆs±IÔ ¨C̀4:åXÈOn_xû‡pÆ›úÀ÷JÂç k { @_à{%ăÀÄ©U%¤óư6#`Kh‰›b›wnÂ2¶Ú^Á¨±Ù<´7RÔXÄ×°R›Ä^o&VÖàʦȹ|́bD©™"TèŒWư ÇåØöƒFƒÓ‰½Ü³ÀĐ?»chslÊ ›t;“¤“‡¨{99zIOé­È7îvg;ßñ¢ô•„=fO9^J)DHnÚ³-†%gK>{¬Hˆ%_Å·̃ÈL­€ï<Àb‚0ơ5æLSâh:ç„ÎN*2‚ÂÀj₫áKà°§Üïz ´•ùæKa,¦æQÏ }‚O°Ư²> „éKjÔæ”LÍ’Ë+‡>Ó ª.c9@mh¯©Çª^I` Uˆ²‹B’¹¿#¶B­AÅâBEŒº,–A©2E1â)P§A¤´UfàI&Rèhç̃¸ÓÔÁ ƒ‡ø)‰bPú!U&ÑpL$\YĂï9\ˆU!G~ cb\Ă™1.ÀFH46ÊVLEL§Öv3ÏAăÇI¢¦´ôªèM5;2 MÈÈ„Ñê›Ó~Ó̀¬véA+ÿEiDZùE¥År¾({|û[Í|"â;§’É”B#I§tû‡]}cá_Ï>rií¾ bàôm¤l9Å‚­rY í³ó${xZöß|ƒœ‰/|Z .˜æOu¤È5ĂNX°×½s±û5û*₫©m½àLéVHñØMÅ N©“³QSÔîË-¦A”Ë.t $³j×8çÄ»‚Æ>;8Rê>́Ùd=¾—½Ë;ËúBơË„×RÑ‹₫O¡M[xé¾D!OœJự=YYÿÙt‰å‡¾àüˆ¬©çYó¶Ù9 ØçöC!¡ơĂËLƠH Ú<‰GKúÎ@ª¤ÔC-Ÿù˜Íß&GoĂĐï˾tûbhơ+ü&́ó¯N'i>™;2îÙư!¯>ïëimy[ÍcîáUÿDMÏ7üëo|`™)ë˜ṭ‹#*B[ÿ¸ÅĂS endstream endobj 776 0 obj << /Length 2576 /Filter /FlateDecode >> stream xÚíZ[Û6~ϯ0f*cF$EQÊ¢/›6Å^ Ít÷! ‰*KSIÎLö×÷’¢D›ÍtŸÆEÏå;G¡«₫Ñ•d+™q’q¹*w/b½Úß­̀ÅO?¼ vß6n;ÿróâå!V4&yœÓƠÍvIê¦Z½^ߣê×ÎyÄ_­7I"¢7ë,‰öm9Ö]‹O’è'µU½jKµ̃0)̣̉˜9¡$]oDÊ"ûrˆG’T¿(bf^}äK ̣èMƯ¨–@º¢”äB0Íy¢àä]đJcO±œđ̀)öK,b»K. &„eí¦-°m‹ q1a”N;¯C´(#B8b‹₫­„“œ‹/ ơR0%L¦ ưhÈâ,NHÅáø¨ø¿Á¿̀à>ÏàÆ¢C„8K±/¢Ô×UĐè\’Tdç¼`ĂDN(çÖ ¨Ùư/t}&Eô}±fYôÉRÈ—DF2™Çc—4‘Ó–±3TÇ{e²¢½àÑǵHY]Ü6*Ä*§àpN%»{q²~úJˆÈœ—ÔíÓ·j|ưƯ³øKL“9 ³qß)†¼˜bCƒ [V@ØÆÜ:Ì­Ë‚pz`Ä£*ƒYÊ¢ ˜™S(×phB@-9¾ÂΠ6¬¤DnuÙ豓ü"®Ô¶Ø7£Y &¢¹`¶€ èUu,eˆRöR& Eß“²Ó¶®*_E5u7MI)ĂKa±•_C‹öƒ̣\ôE;l»~÷9t¢Uû î̀-â_8üW¡øz:6RÎH É pĂWØ(O‰äTSâa'ÀsÄ‘Æ)`¢ô9XR¸NÑy–<-̉Öúvªï"~2+kùĂP™‘fÏ"´%iœø’u oAxy"´XB‰LÙsÈÀmÉ<óe°¡ê)€đ*̣¢m₫₫©Ø=4Ájˆ®àÛN₫5@1‡ÔƠ[5–ƠÖ·úÚ¢KØQœ̣éξö®6Ÿªb,¾±´uÈ›ˆ°húqîp£}́đ}1:.ÂpÁl¨ÈÜù,²Àu&mĐ$SKYjƯЉ@ ±û„m!iK¼¹6+ȯđdÿ́"oô¶/½„T˜¨D4¦Úá(eăä̀H,å;KAô|=©w~’Óy–"½Y TóăúlƯ=°;Ơ¾§Đ$·ïŸïq½~úëºwˆÿ•¤ä,U"nïl×Í!}Æ̉÷ÔïÆj«@lÑéŒr‚:朅5ô}̉Vî4Ôq¾ä2i£V€—¤PƠ“ËûoƯÿ^²;Ưs'YâÂÛ×ɦ·c­t…ô‰‰œGFŸ&8À€’ÂÓƒÖ'½ŒơCÓƯ"¼ä’¹cs]".Ó¨,ZóÜ"ysSM»P_l©|]|êëư€Ø2<ơ,O:c_…t€Äœ÷¾ Q$Ÿ§ÍwæNFĂD9Ù4»ë»ưƒYÓçe¬0„½ Xzñ́"^Na&ÀØQ€­ń>!ü–“5»­E.ñ£̀ó̃Ö;l¿0î`b¤²å«û̀ÄhªvÜç>3ùÇ9(<*đ£±z0…C”̣e& × Q‰ùôy±CbÖOU|‰|$ÄHđhÆđ¡€û®íïAó¡6‚YvÖ»Ư}[CØø¹å_X}̣z bè2°èå>Ô_¢–+7®,¸¸2pĂƯ¾Ñv·ÖúWÇp&T‡Ï“ÿMáî₫~ơGôæ/Ă3™‡g†r s‹{µ+₫—°f(g₫=“pÀÙ%Ÿ.Ø̣éâ´dz¾iP)ᡟ§¨g™nX&\rĂ%hØAî`óùlm††Ó¯ÍH̃ ¥à‡VX̣°…đg‰];à5₫PÄ®-û•Á*€y/tùŒ:wHÊLউ4øL¨}C¸âmËưÎ\Ă$r_û>ˆ²xYIÁaÆI‡ÅQÖá7J‰9ơ‘ƒ.g)ưL`Ÿâ4]Æ:Z*÷ê²'^C±C»OwNk}{´»Wú”p₫ÖŒú!µ•ö(Ï‚Ÿˆ+Ÿ)r¾}i!©â&º2üưŒ0è ̣$Ø".cíàs?äDjåT´f7zD#îØ­÷¡DÙë=……„‹>|ùIÄ <[»™Ê²‘/ïơQA½‡~̀¼Fú“ø ܆/@‚µ‹.!ßs ºM¼±lÂÿd^Ó®¤ßWæ“¥¹î»}S™ëÛi¤–ÊUÆÇOÅî3}¾VK¶|ăÚ­»̣'Âåo“?·æ£—̉FêP¾™>uµœÈ9àÏ$I’Å×½ÙlX…a3`Ç|₫Äøú^‹×₫ú®₫O0CµYdŸë`6¡½ÛñÎ5eø3 Tk¥ç‚U7´|ăê£₫l®ạ̀Ư—rù) \xØ̣‹ôy1_ß+mú_øÄ₫‹ôĂh ûÉ,ƒ††ú.Ù¨í¸éö?×Ûƒrđ»‚n¨Îû̃nªm¤c‘́F7³®È4Àüñl= endstream endobj 779 0 obj << /Length 2331 /Filter /FlateDecode >> stream xÚÅZ[oÛF~÷¯ü$Ö”săÝC6nv[ lëîK´4²H¤—¤âæß÷;œáM¦"ºÖ¦ó2<·9—ïœ1ŸøÇgF̀L$Y$Ílµ¿ ê§ÅẰ]üüÏ+î×-±pÙ[ù»«ï̃k=ă‹ƒ˜Ïî6}RwëÙ‡ù»ṃXÙb±”RÎå›ÅR)=¿ˆÔü­ª4Ïèÿl7¶°ÙÊ.–Âè0›ÅÇ»¯¾¿kyk¡™Vr¢ Íê3̉F!ă4EÈ­œÄ·é̃f%$+!çIaƯÅ ̉5Ä\û~Á.Ư§Uó0Ư¸ßƠÖơ[À•Ư­IpûÜ…TLk ‰kÆ¿f %·v ©æ,¢fiêYïÓ²L³‡Ü…ƯÙ²<â¿nÔ!ª³¥€ÊJÁB\2®¹#·³ÙCµu{T“Æüm˜Äô đì"ă?ưÅZ÷]²+ó7c’+Í"7’g«4Ûär$f\1©BA —aÀ“œé@¸ơ’‰ÅRC¹ŸK>ÏR̀Ÿ–;ûy!ùÜîÀÚèùÆ»Rén tpk »J`LÜñ›dạ̈z`×£8nù0î8e–XU«ơ¦ñÁÿµÅuÀ´³[CV¸Ơ‡Ál—?Îđ <ê¥û™bÓ†íf¿\ưÇ9ßP®5‹£JoÏäJ@Ñ¢³¥02Ü[6»÷á§•c¼M3÷bm)T3ÿñ>¯åYÛÑ XÂm)q YaÏă…B4´ûˆ©ˆ0£#fŒ>ö1eZƒÓ9t±!C® ‰T“ß {k7l,$–QP¯&ï ubz\ ç2ñ‹Ä…V‚5¶]ị́̉~눨™₫eñ®VyèÉÿ¶Ơ»Û÷î!yk£áSể·j–"–¢âÁ\ÏÅZ5hVŒ»¿&`¯ÿ«ÿ+cX å%ü_™™&ƠçuhÛlBđ. äô(P¨ÖJƉ¢‹ø0€́¨_̃̉ÿƠ7/`ÿåmĂ6 úlcɤP=G Å„3-ë›1:!6̃4+>'Å8!à‰³„Úđ̀’½=Äè@±Où¡£œ¿P¹ØĐèX.2g³‹ˆÉû0ß»ü1¥jBŸ4è"©ª"½?T₫– 2F´ªCÓsk0æHăÏK™0e32‘ Uøl·êMµ~˜oü¼¨}ZLjb@ÇBµŸ7«Gs¤̀t& 1àD Ă]ôa…œÏ#}./‘&XÜv·¸8 „‘ô‚ƯơYͰ bT±£†HF?4“q ư^µm<6̀„²&¥b¿m]\ Ó9‰ê[3¤·ơÚ9k̉£̉åß›§‚đØ¢Cơ$*VÄ/¢D~‰ô4ơ¸fFG]QÅnÊx~Gy8wzQjGUúâôơÊ>̣́ûdçu±I¯QCÅ&F÷ÉÚÊC¹g¶‚<¯)­"`‰‹(Iåóø}X•8Ư•J‚Ư·!¹~ëŒ×£ư.œ°Íl̃ #”D„ ¨ÏR9²®›¼íÉÑ’=)€w [w'‡=‘¡œv’v/6nc†nÉ HLƒ™è–£XO¡Mæ‘oûÅŸlûOù#¹‚‰g¸Ô¯sHÙø­°´qÈ·µ+V7§D̀å%D Tñ3ú11:Éôåq륦ƒN©¹ºè”*@µđ ¬ ‹Aʱæî<Ă«)hîï ñµÀ´ñêäèV”h£p“b̃uêM„gmÔïóµ}EßÇQ:„ĐGȬV¦¤×®j ˆ¦Ư£‡§q™àØË §oN%Ä5u¿ä¶1F!åƯÎĂ•Ç0I‹6˜Ü»á”-Æè!æ#•.MÄûÍQ­S·x*R*ê f°¿§eUë¨Â¦Ă/É{nÆ8s[|º*™Û¨F#sB#8F›j„y«ÓÇ¥9§Ủä¥êI…MFiäñ0XÎ+ªû´GBq`ĂĐZ¿ Åèk‰T3·Î¡́ÿ± ₫uø³ [Aæ=Ô³ ÀCbº¨ơZ¶|êg5û¤:í0&́ñ ¦N¯ê”Ûw)à¤̣ëJ¸–¢Œ § ăÖ¥BƠø×í{MÏDÓø|OơÏiæ#?êióQwÆ Ă£éJ—[:̣Û7̀üƠ ï÷ăÎŒV‡¢hƒÈØd];=ƯP‡*›´Kü°4e£)S1jM˽ÑÛ ¸›V‚ZÖẴHƠơŸk¶‘¿:Íqp‹PǴ̃724̀\§ =]¬q1cPßê»P1ªèë¦~R׉‚HÑÎðú$̣‡l0a•8HÀÑÀr•”~âúcg=\øRĐœMĐ¡Ô(̃§™;Q覱’Ú8"B ¨®^¥]æÅ8 ¥Kn=øưïÉ₫qgOô=Tí T‰Ô˜Đ󳀸æ9¡‹bÖY ǹ®W84)ÓƠ'úrwí’FM€±ZÄú¨¯«§'¨øQO?|Ê{˜®®Ăm¬Ăm×@<ËV×7$NKèy7ây+2ý̀q IíüÆÎD íyïăEç.z:øçt\æ<’hQj­åXÛ Ä¿øÇiơ ôWï:Ơ!úw2NDÿÓNj¾Ư°ø|Œ ¦~QW©Ov¤ºà¨ ̃öN2›Ê‚‹î/ê¤Ôd©̃NG5X©›œj(DÜ/´I¶>"_ÿ™²ÿvŒ‡‘ưö®³Ê0°pÜó~Ë2ÔĐô5,ÈÏgƒ_;÷B}À„®!úÓâ|ă ŸŒ R‚¾­"G¦Nưɵ«œvư)#Ăê"Gʈú0n“Ä)̉WÛˆơ§ª endstream endobj 783 0 obj << /Length 2654 /Filter /FlateDecode >> stream xÚÍZKs¹¾ûW°r"«LïÇVåyµÉfăTlůË5&‡k©¡vfh­óëÓ `Ẻ¢å” 1F¿¾î؄›>1V+̀dqû‚ú·åơ$ ̃üô‚Åys˜8ïÍüëƠ‹?_*5a”8êØäjƠ'uµœ¼Ÿ^Üdwu^ÎæBˆ©øa6—RM/gVNwÅ¢^o üENß䫼̀‹E>›s£´›ÚÙ‡«Ÿ_üxƠ®­¸"J#mf?àỌ̈ „» ·\ªdàVNôl®4ŸÀ ›Ö‹åªáä÷–÷µæ_‡ûôd0]¿où˜o@Yèº#‚uÜB]ị̂—ØÈơI@1ÚÿxSà]F ô4¢•V\six¬Ơz¿9J>%b8j9Ú”Å\C$w5Œ; qÿ:>Ư°Ơ¡Ă0O Jå°ô˜Í¡–f(PØjwûZùµ/eÛ'÷mv;¹7üBĂ,í5† –‹.1°Ü¬X†Àæ¢!•Û́ơmlDôû~0‡ÎÇ4;Îq U&×cœkđ!ôØô4¬cô°ƒ’@CËÄ(û4°ÓgÚÓ’ÚŒÁîr½I›6€ñîÛá.¼÷°ÊigÔ¹Ÿ _mÀ,¶WÜ_Hçs¶Ùå‡ï9́ÇÈIé\ˆ©­ô×Àp7›yˆ¼¸rÈl;Ü'_œÙ¥Ä-Óă)Ñ?u< ˆ¤ÜW€²A] áa¬Æ[Đ>âxƱ'Åj‡§¸Î“bJ·½{™ö³º̉µ)V̉<ôAU4ç¿ €ª>XÓÔ¸'¦+˜ª#ÿú¾\×yges_¸À÷¾ĐÄ®èMø9¢±éXJª t%z=F#-h̀’84ơ@ỆIJĐhî<%JUß:ƠèpRuå%æ5 û¹ë(æÿ7ïkỚ:ƒÅQ8mƠó¢O¤„1G4§” ̉””Q‚!Iđfy}RúÀ(ô+-¼‚ËB¶©¾5Éz’±46K8l†ûM±™ÁÙ‡ ?6#)-í›/AQO„dv<$3i€_wHFZ̀º¼1băø&/? Î́[ 3̣à×ß‹ÑØxé¢Áÿ]‰ Ü/~« =Má*$àŒÆUèÆ÷]å‘&v¾p:rù[@~Yÿ¶U|BP|ÔiŒB`YñĐ`^+‘a<ÆLWéă`îû±Á= Áx¨å8yª@v̉m ¹5ûJʹÄv£eC¤{ ÁT¸„Tƒ̃2‡U™# ö÷–ÁÔ=áâÁå/?^]üíÇ7­ÿ µÙ©=Ǵ ÄÅÜïÜ¿ơ[÷°^q{÷˜júQs*́º9x†ñ6̉]á‘iÉ:f̀a9=Ê*ú'›$\N« 2Đ̃’#UÔ»,ºNölq¨Ưñw ^ÿ tqñ·ÿùg„u£NÓF̀Ăâ=ïn[­Ü}çÖ˧¶rLJåºB±í9óå: ₫ḍâ(Ä%MåYÎ|¡Ă ûäQôeÑÔ¶{~!¹FœMi6`cæ›ÈFë*¤açE3h0 endstream endobj 786 0 obj << /Length 2220 /Filter /FlateDecode >> stream xÚƠZmÛ6₫¾¿B¸O2³|'U r›¤‡"ĐtÑ/iPhmíÚ8¯¼‘å¹_3"%‹^Ê/±vq‡V¢†‡3|™%₫c‰á‰±‚Xa’ÙĂmîV÷‰»øøëóă¦0pÚùÏ›«Ÿ̃)•0J2±äæ®oêf|J¯ùc]T“©"?O¦RªôƯÄÊt[ÎêåºÄ'2ưXÜUQÎÉ”¥³4›|¾ùíêíM7·â()NÚ~‚Ọ̈„ Bn‹–kB•thá„ñÉTi–€…¥ơl~×Bù̉ÙgÊkMó² ­úL“9<ü-¡DÁ,ß¡‰$’Y¸Z%\ưĂÀ´ Bèȼ¸ûsU”8󾇹6D¨,™Â¹ơă?½_çóüvU8GƒƒEëàÏΈ6 c$S£‘©P–èL°æư¯yµœûÙt 0D+Ûû\Bß _₫ö(ÿ‚[±Iă$3º}¹œÅ§€u€ÑvÔ«˜%M¸1íˆúûcQæÈ–¢„3vÔV‡é6ßhoĐoGÂ"Yl; ^%„$́)S̀~SüE™,‹ jËî¥ohGèÓñl̉Dksº± u‹Ú,ÖU#Ä˂٢”ˆL^ˆf*̣£ÏËSMA*Á–EQ!mî̉ôQÂÄ+Û“¼zQ<–Ñ äâ]ûAÿÄ za¾Ÿ‰hW­óx‚±>Ÿ¿Œsæë-²m̀1Œ(¦_Í 7j‘W‡ó±ă'¡̉mÖ5½¶N m̉Ùºª#Ÿu9_–÷î~‰Jbû€Sß:fªÜƒ|ăØ›{3fBö®z[•ÅÜéÙ[¯L°TpÚ3"¤ ¬ƠêH™HÊ/R&#–óÆÓ¾’¹/êëu¹©sîÄ•27 /¹Ëâ›»@ÖwH÷Ô>\ú-7nH³LP °̉–âMp‚2j(@ĐD*†₫Qxsùj³₫9JôªD­¾r¬#kØüLË´'' .4e Ë\Œ´úîƠËË ¾Gé‡_€+¬…̣êU»M@,%T³Q€X ¬`C Ẹ̈ –J~“Ă p ÇRó–tÊökQqz-ª2¥f6J-¶̀̃‡«×Ó×#–£a©µ_vơåêu]•—X0™±‹ËáBk~ze9T¡6€ôѪÈ`±_U®º©)9ơEgi^×x„,o·µ¿ƒsÏc“dÇCuˆ¿]¥S>Ö‘±²D6yØ:t¢tÚsê^ª̀~ ̀äR¼Ú¸ˆN$hå9¥ÔÔ@ơxƒ1¹öó4~u×¹/)æt½_­oó•?yÁé̃ăøçvSf'vDÆhJćeP$'ÂWŒv9²¼†3Å¡ü’czXÖªs„Dză«»um@e—>‡ĂT®Ù/C̃ä"y$º¥çñfv”7Ñ&ƒ$ñ&v@¢)TW-k½n¶±&NÈQÊÆ@ÀĐ•ÜCđD́Äh Ư€o:Ú=Ú’§Ótˆ#cĐÚb­H*Êù›âî8e©Q)«?«¦ưY®èN’ ‘$\FúB¡©S9„rÂ÷ΰ÷EÓåû:q”¥¯Z}Ărú°n4ÛÜûOü÷Ä›wîŒĂ‘ñ£Ÿ™ gzz_k/y)ôB`cœèƠÏ#zeÓÚÊÆ½hkÙV.ñ„A‰œ₫$_ÔùB5d<'_À–¶¬Kùñẽᯠ¿ƠZđÑ>ç´ †0[ˆaVd´Ù&Ø!‘v\́]ªÍSEÉxuü[ƒqÙ^#üWè Oç]o¯¿®¶₫Ï&ÍQKº?»l÷̣²Q:MÅKA8AŒ¢¥¦†…Áw»/y0Üî›vÆÂƯ˜Î?眂û³|µ+X®mPÁB¯Çê@¬s^{‹ë²i;§V$YóÅ¥/d÷æk]*=p€b ë́,1k-u™‡´̃ÊTœµóë&z\ƒ8’æộàËÚï}9€n/'Ê„í̃ÁS˜AgZ¹B:)uÉ)Œ­+È)ÅTÿÛz¸/Ø@Ë›æ ŸUºB̉aỔM1ÏÛÚ+×8f²yåi£CŸÎ€<Ă¯}fD[ªU3 ¤Àmùïë|†W‹âÅzŸ²̀fùŸâÙ LJ‰]p¬‡ÍñÏư'˜z¬âá±9₫#æ ØŒîjóÏÈŸđùơÂ9|Q`ËY8*Œ0OÈÍ+XÇ% O¡zÊ·«ÚƯu-oǜáÏrwÓo|6­¡Yí²Ë2°&̉½y§Ü£Ợé"¯¾ăÖ䮄́ÏÛ­Å̉/¡3‚pESZûđß4áï> stream xÚíZKoÛF¾ûW=I@´Ư÷#@iÜ ‚MŒ\\£ %Ú& QE'm}gvù”I™¶e·´$wgg¿™of×,¢đÇ"Ă#c±ÂDóƠơoóË(4>½=be¿tœµz₫zrôó¥"F‰£E'mQ'‹èṭú*¾.’|:BLÄËéLJ5y3µrr“Í‹tá9ù”\$y’͓錪Ư„ÑéÙÉû£ßNêÉWDI1RÓª÷-u-˜ ô­ÔåP%ƒº‚pÂÜt¦4Ÿd  ›óÅE¥Ê×Z>S†Xkü`!J?=£Ñ>¾(Q0ËwßuI"™…Ö2ú|ô{ŸL "„î*r™_¦NNâ'ßF™kC„rÑŒsbà×9ư°ñù2 `È¢ù,Ñ&bŒ8¥8 ™ e‰v tóăq—“év?ÁˆË^¿L[ùƠ¬TÔ´­¢sDSVúƒ*Ú§ƒ$\Ö¢³yºèS¶’Q]ơzÑ'Gnêßâ¼ÔƠ©»ЉơË4%`ƒÑ öˆ)vwÜ]+dª›"΋Ǵ’¦Ü¥Ă&=ù&=HP­Ñ|}“=b·­‚^îà’?̃n?NЦ€¥%½vcˆæ»Ănf‚B˜Đ¶k9o“̣ «&ÅŨ|ë"_¯B«|ñ1)^¿ íoS¥’S´:¹ ·““ˆ ‚ëpµ€”‚̣«ëRº$‚×ö“n‚Đ%˜x²ØÖ¬V»­OßÜŒ["\=wƠ}Ñ«€!Ö¦°¾h¦‚ÎÑL2 ̣N¼m Ñ°Lö+tÚ́hËè»ÓÓªéb€’UŸv…(bµí‚¨¸Â8ÿ.ÍÉ_ámXª$ñ| zé*É6>AÅNèĐtvoÂnŒY¹-‹ä"¾YƠ\ë–ñh@$&óbƒm–[ ĐïŸ$_oĐ’_ô! 5¸ˆm{Êî…APÂlÇ–P¼‡~àÍjÊÍäóí‰ÏϹ«I– ,̃‹/ÇV_pyø‹ă _xø§E‘dá!^®³ËR jP|jh ]5p02†0±Q[#ïë¾jÀ=è³ .ÏúBÈLŒĐƨ¯C0Êîiµl¼ƠJ<Óä`›V™LSÈ2Á†‡Z&x,¼‰ĂOí¯øª̉:¿)|’ û{råÙ ¾\4Çfđ”×±¡™ÂÔSèzzöZpxüWti'ä”ƯÙ$íåW€¶I²·2Ÿè£XK”î$•(¶–W₫j çtv\új cMê—mÍÔ Ëv¤ªN­ù}RƠ™Ô&øà:̉/—ëóx‰mÚÀ½éÍΡ-µ|Ạ̀æqVfåƠè–Ñ5ÉćÁ¨ »ÈŒ‹$gDó¨¨, éaÚ‹’ט¯×dÜ!oj‚ºi«8€â¨qÓŸú–®ˆáµ •èöH„¤Uă%¡#!|`°/ÈÆ×îÆîN6Ä#îP˜ZĂ…»Öw¥…n1 "îĂu?%:éÇƯ¦D>đªƠn/”ˆ²”±Û”øîøÙH±ư»<"qBí¢ÅwÇCŒÇ fvFưoÏ{pƠÙ€_¶AzàSŒwăOÈX1ª[̀3…-ßô“‹¯ EÜI/é.½́œ—;0-n•ëG¦ëæ3øàœ#(MI5:ækƯ¥´Î‰ l·î7.m’¢—´í@úµƒÚ¤lQ¸UMmX{{lÚAv£8íÆ®” Ưf7?ß("ƒŒ‡Hë¬ß@^ưˆ€* đ#!£(ǺOdB¥ỗù„D& vÄ‹˜=™S¶ŒïÈÄx"ăöt…ËœuVW¸ ‘}%‡úîPßê»C}÷”ơÉrë=Ôw( ÿ§æPß Eˆ¾Zäđ®₫‡ªGÑ¢O‹ n¨Ù +2 8W뜮öȆ]ZØfĂÓ;‰aˆ/ï[•-“́2DÛ[TƠ!˜³À¼·Pyæ:näÆpë0# 8Đ·bÄmEÉXè]xmê¯$\₫suw‡ŸææBNPa¤+o¯47ØH¡±Îz}›>­S3×·ÎíĂ©Q¡–S¼;¾§;«{¸3‹nO₫ ²Ơ]ƠŸïß­Ừ&¸^ËƯ¦÷½‚®;XÔƯ>C¾ûXÚ>–.ºµ3yă¨¯ëkøÿÂÀ Wûp$;ŒBªYÿµc endstream endobj 792 0 obj << /Length 1716 /Filter /FlateDecode >> stream xÚƯZMoÛF½ûW=Q@´ƯÙï ĐCâăÔum¡—$d‰rÈ”CÉ úï;Ă%)R&m©¢Ưäà5¹;;;|oæí8qü‘‘u’9i£ÉÍÏŸf×Q\¼;‚b̃'k3_~>Ñ:Î<÷fuS£iô1>₫:¾]'Ù`(¥ŒåËÁP)Ÿ œï̉Éz¾Lé/’Y’%é$ …åÆÇƒÏ£÷GoGƠæZh¦•ÜÑÓrö=wˆ@2₫–î øVÁ]Éf0ÔFÄ):ñz2•®|«́ƒ¶̀9›/–J“ơŸy4Å—ï#Î4ị̂#Ÿz)¦Àáh]ữæɤ4MGæé·7ó›Ó7+Ú{;ÈÂX&µ†B2íEXññĂr<_-’kŒ±,cü916`^kAF†R;f¼F×̣ơÓùÍ|Zngê3•d^Vó~Pp1:™/¥ŸŸ¸æm»æmµ8̀§m[à×nÊYh ÚÎ Ö0cñÜ=Đđ¿;÷‹6K† [͘§“ÅƯ4ùr;F¶¬[½öz4”Ca"]7cy‘¬ï2¤¤đ2^%2zEJ̉UNUzNÁ Ï“OTL‹çÅûqx{–¬ßœ„G4o‘0$¿„øtVøăÖ†9µ}ÎûÄ“Ö2+Dd ̉ß#²ïÊV6y×ÜR:`‘)0aß<®áâu+ñ¤C¾U>®Âéà"‹2`²0è(Ñ1„p̣`d9ĂÅ«|±ªæAxq-ïnĂpœ Nñbµ £,ÿfɔ« >§µyÂÅwÓd6¾[¬Ë-p99M¿”?Óå:́[8 ăÉxUŒ6Ø̃ †{÷è·RH4oUd0Á ¥ùV Mp€Ü‡]¿•—ơoEGâÄVL· B(Đ̀‡_Ç12¬»L´Bñ~Ù¶̉ˆÛ !;´Ô #đÓ#Öp: |÷ E3 ̀ˆW£T^‚jå¢8X³¼ 1!Đ|*ÎC­ÎÙƯëœÀ„³½Ô9#đ0̃TŸ $Ë́f¼~¼ÖÉ~r₫¬¾Ư>9ÿ$_Øô=8Ü%éëG34XLàé¢LĐFóÀX”©–ÆÅẸ́1å–ÆÄéxä^·æ_á™äªÅơæ×àå L7€ 8h¹Ú¦7óë¯Eú2â+tq±ÿ2M:<›-Ă$… 4ểbI&̀ÓëMµgüæ¯×æWJ²çĂÿ÷ÍfûH rWhÆ3Á[»ÚºÑ~€[ÿ·Anḉ&hó«lœưI'e"„˜|âF‘f†«^úDXUM!]–(Ô()+w₫  endstream endobj 795 0 obj << /Length 2279 /Filter /FlateDecode >> stream xÚÍZmÛÆ₫î_!ôX̀¾ï2@¾Ô®ƒ…ÑÚ×|q ƒw¢îˆHÔ…¤Îu}ŸÙå«´t895X{Ëá́́¼=3ĂđĂ|aÅÂ:;i7»̀ï–·‹°x÷ó ̃Đ­@¸P₫ơêÅo´^p',á‹«ÍƠƠzñ!zu—̃×Y¹\I)#ùăr¥”̃,ÅMï z¢¢wÙ&+³â&[®„e&‰¸X~¼úåÅß®ºĂµĐ±ṾLI[êGâ:±à2f·W˜˜iÄ•±ˆ¥Z®´QaxT߬7­(tü¹¶±sÖ¿,•&î>²ÅY°Xă”Ït·P±â«íâư‹MÉÀŒ¥4cẠâ·7ùN>V±06–:Y¬èRúÿاëôz›MCĂ²ƠđÇÀÄØçq¢µ &+©]l Áüû·åư§¢?Đ iµ‰•s-åOKR.´CùÔÈùÓlêÎ NIÚwçNÀM8ëdy9ÅÉÄÂÚOºËNóP|J+Á 9/x£ÀwY}(‹ ½Ûr¸KÈëô:­²uØÚ7Ty]…gíđF'Á¤Í ï³Æ8é¶Úÿ8%˜̉±S½²²ß3"æ6YøVîØ÷”í\̃låØơÆrµrăYĨ»̃Ïå}ˆÑí–¬aÇn»J”—ÜĐÉaüèóăÇ([Ë/?Ä êhïđïb›ï^ç»êO‹¡¸ÎwùºrN«¡c;F¼³±$]̀Z,ÍÇ€PĐÚlÔwYpî¼ơúMë¼Û°đ·Íë¬ Ü;+*¨ªÓwŒ̃fơ«×oÂæoŒ«m3ÉÈ0äUJN\rl?ÖRÄS‘·’ÂÁmÈ9-c€îd*‚™…†É9¨Èp]m‚(éœw:âóÄ#ΜqZ%±H̀E"x1¦û«²̣j)yô…²'² †̃ØÉCïĂd˜–¢₫rŸÍÁ†fÈdâ«đĂEL«†äúKUùŸÅ¬óq‚’n:œ‘́­QO­8́6y¶ÎAc(?C¸›mZUÓ’)'²³ÀÇÏ~"JØÖ(x†¥—Aª#?Ág3‡êó29Y5Œ\`“´±ÑÉéœ)a[„@¸Ôÿ,÷Kᢇ|Ư8o^löå.í‹Û¶`H›ÄY…z93£DX,)R¸M¦­‰E~¦s$s±í­8¢ŸN—Ö0̣ă¿NḳÁ©³L[í˜RÄQ°âH•F†gWt’{´éj¡DTzة£º¥Ư÷%–†G×~?„_»á'^ [ùÚS±¨X vDqÊp>!Q’-|Üø¿̉b>%Ĺ¹Ô¹§-ư]ÙÈÉÁ̃H¤i°â ơœü¶X¥P<`ư ¬»¶ÖyD“A ̉t¢.!ƒà:6’÷2¬³Í¯ÛÓ8;\D‚DÄ[Èg$Á4b 4Dư²íù­’•¶lâ…ª¿}™¨(-¿# .öŸ69̀“ˆsºM$>éöÍB¡}_+Ïl€U¿¦å°™…*…2z2A>«Á}Hˤâ±tâ$RIt¸‰P£Ôô:Ă f—Uè®MQN„j|»zXjymùƯ3«ëœđé¶yǧ·á»oƒÿ†Ê&e^ă­™ßq`BW̉à  ®;öAXÜ$=¸¬t"¢¿o¦Q1NT_3́Ç“BË£„ÚËØróÄ,0:LQ\#VÊñ֤ǩkp[Ñ™?o”¹An' “‰&…Aƒ¤Ú€¡Ơ5Œ7ª6‚¶`$âa”Y˜‰`é3AMæùX ¬n±ØªóÛĂ₫P…íÏ%z¶æå´̀ÂfÜ·rD’×wàŒEï“=›p¯†±úe‚YZNi»Œ~–úCơœ¤v ß=ô®§ND¾•½ÛÎh{Bơ–4wabl ́Èp]m³‡lr4àhÄ$§‡ÑT +{ù£‚áơP̉1(s̀|'¨<[)ˆK¬Ÿ[)‰T$³•‚2M‹§ŒCRÙƯ—YUù¹,=é‹ú«-h}²8°̃ST8eæ̀½G|%vø¾9Uô8È¿ø̣ß´Ûíư›vyËđ©v»KÏ" é¿­ºÉ=÷°‡ÂƹztGeæ‡)Aµø4‰ÁÈeêΕÇ÷"Fy5yÑ£Z1äsµ@cm9N)1Ʋ)Ûä[/£ëe[Mc:gÜ8-tÊnưwl4óv?  )đ„…ªbßé­ÁaAÿëN÷©±Hë£̃énÍ'è¤ư¸¬Ù.ưOîGưøûÍ2™¬ưØ̉1ùÿÍä5fÙ́"#yp’&9ÆÉ^âV†ÿôy endstream endobj 661 0 obj << /Type /ObjStm /N 100 /First 846 /Length 1320 /Filter /FlateDecode >> stream xÚ½W]oÓH}÷¯¸åÅö|̃™B‚FE•X„ E»ÛV«¸`‘ÚYÇQË¿ßsIܬL ûĐzf|æÎ=çñL¼Ï)'ï5)ÆĂ’•#/¦`đ¤rt9'¥ÑgEÊÁ†̃y¶¤BL<{̉J£Ï¤µŒG̉N‘9i>h̉ăˆi´Œ;2ÖâéÉxy2I„HV™ÄGEÖx̣Q“ux‘bûèÈFgr*âÈÇÈѹˆ§"‡Ü87䢌c®̉ ç˜cúˆ¼8]î¬̣nMFî›?̀5x¯€ụ1$ Äkå‡`0¦5¼¶đÚQDLÖLÑ`´ˆ}“SäḾl [!I©< ¢aRha’+Äc ­•·(‚’ Å”5ÆL¥Q4¶˜¥%Å, ́”Q¶K_ îNKÍ@Îy ,•¨8*l ƒ—C=ƒÄˆ*j‰Êå(¹±(eîez@!0£ƒÅ910Ö(µ”PÑéj㤰E•ÎÑ.Bb¬§½hÆZ<Ñ¥I:`efi Ô «˜\ʼn“CŒX4°3¢!‚¬Æ fŒƠL,d¸̀8XDA^#á È°D ¼Ad4"LÎAü0T³’‹Îj©–±irgC$¯Pë„{̀ÅÈG顱¨o!mrRíl~›–Ơ?/›åêỊô)eï({Y_Ô”MèDÅ'ốÙ6îUùá}Ñ ‚¾•ó!¸ËjQ̃MÊ»AA/WEsñeYô±:ßǾŸ6a§ŸÖƠç²ú8>)nÓvhgåb1º@ïSÑ=pÂùd0p5¹(ªGpjW/€–ëöyÛ=^¦]XS@ó¨jzW Yvƒ„é"‡ä¸*ÚÎG§S”đ´̃Gƒ̉t½hÏêænÚ™pÀI{¸/Ơ¬:¿[ÖM{Ûüv]ÍÚ²®V̉¹>™˦˜ÁÍóë'›8Ă Ó(»éo²éĂ.ƠŃͤ̃èÁđ-ƒŸÖË/²;äs ø̣ơe÷(ª¢™.¤ùfưaQΤơªœƠê‘RWóâá«]ˆ$“Ïeo¦‹$;­«¶¨Ú‡ ÉÛ${[¬êu3+VƯÉÔ ư^̀Ëé‹ú®ä̉‚¯|ªqéV¥!̃$ˆoµ€ó₫¼ªjD¼"9₫0̉~̣¼IÉ÷ :\’½¨›yÑlbç7’À¬¥+œ3iÄYêmLƒ\)´K•kQâºÜ»ơ‡¶‹óª¬>#}eùö|óïäSÛ.W¿eÙưư}º®Êù´¦ëÙ´I‹ù:[Ơ·í=2Ï65È:™†ç‡#ÊŸz9á½Iå†ă-§Î«_›ÚKăè9³?₫ü‹ä¨ô(Rµ^,n~v†̣wÉ¡üa?ĂQÎ_›(œ̃Ô²7M={W€<Ü39£́¢xh÷‹ºo«î»g«pŒ­¶‰Åaüăh₫¸\);¿éñÇEm¯ñ߃á‡@*·¯# 1p©óöÛ \MUO%Œ È}{Ë÷ăô‹}ưx¬~á8ćđÜâ¿-̉¶vߥ8–=÷ƯĂcƯĂú8öÛ,wª¼½_¶-²Uưm½ÖÂ÷µ°cµpGjq€ÿÎvÙ¦`ï­EWđí÷´ƒ¾*{0Ï!µ`7@³í3D¿^:V³ĐßKAÔ,èñG̀3í±ÏíOĐ¢¿—‚«…û…ẒÎÏĐ¢¿—ÂØ½¯ÓâÀgơ§œ7Q÷´ˆùH-¢úß}q4ư₫o hÆ̉ÿï[ø¿AW¯ endstream endobj 799 0 obj << /Length 2410 /Filter /FlateDecode >> stream xÚÍZmsÛ6₫î_¡¹OÔL„ïdgú¡çÄwisÎ5ñåK.Ó¡%ÊæT–\‰'÷ëïY€oI[Ó¹›Nj ‹Åîó,ä“ÿñ‰›H–H;™ßœÄ®u{5ñ₫v«~3tœuz₫ơâä‡3­' ›4ârúåâ—“7ÍäZh¦•ï¦ SIÓơË”v4ú ;ë[CỤ̂;Éèßhí›+#%̣óbÑ7œr×ük¶í$9“ØƯª´â}[7“±f©P“Ü€ëjï^ç”›bï°yØ·̣v1ĂƠj5û:Ơ:rær­;̣μ,‹ơ”GWƠ˜Ị́`́¹wâÓ×g₫·²-²KŒZƠ–OÇJ8‹jÖ:Ơ&ê¬7tBl¹Ië® »”èí²W,oƯè~P)Xfb’”Y²Ư R¶‰)„©•aL…“)‘0e¤¥cQoÙ±oÜ0+ư/*c.³Ơ.…çT“A×̃‚dZˆ ĐIỲu¸‰̃ZØ$’a“è’ Û4Åÿï¦"‰r'ÇZX`6ü¡©,®ö›ưÎ7ßm‹²œmsßè5ÏU—¢¼öO~›ñĐúFŸåSÛàÖ ¡ùe ,“°™50ó,óÇ1Ă’$yÏ2½~¤€ÖºëGÖD×Ee”úï¢Ø¸-jÛÂxßªÍ ³JT›áǺ\t\ơ™Dj–đä!gäRa•pṾYÆàPMÆ^”¨úA_ä-đ•äåvŸ³ª» °$c¥ÊÑ€M«•̀+€o~́›EÁª5@>@s*aqŒˆ”)3̃§Y!\–,!“(‘ñE¾üDå@œ©ZbH³$vCƯ;<Íçiø©…§I–­WĐáéŒ8•<ºÎ·RŒÈØ!2öü:Ÿÿ±Ûß rh³É?y ¹“”v 2(VÍsƒGԌŠÂ$L=̀ FFÙhNHCÑg,÷ºÂ‡ïCÔÙdâó›C]<đE„đ",ø]E¡X°R …‚ÍĂ Y™ùÙ¡nß\‡¤¡):ûú`ÜÙ©Èz¦LB€¤É¡ÈÑ̃3ÜÎ7;?¨ÜoׄÆôL©<½[n¶ƠËëº[›t¬ˆOAÈOû,',m\¶̃F\γÇĂMßÚ4HGˆ.‹{5r¯Ø®Ü¶l`BZ˜0Ùă/½S Oh°ù́Ư›‹Ó¿¿ùĐD{ ÔrfLÓ÷qiŒÎF*z}·wÅ.÷£¢ô¸àPÖ‰^ ¯†Ă£€¶ÇÏ|₫«8ươă¿₫Ñ'àkÛ ú˜uô±”Dúg æEiJ‹”‰TAS$*†¾4ơ’íøF€½••ch"`1ÍCEÛx¾ôé»S¤‰Ù~ö$ë@Đ!{ăÙSă¸b€Qc°'É’Áz{¾}ưƯs˜z¬sÑ–.ïŸ5k5M8 ÇiCv8«—I‘O¶Æ:‰®³›¼O¥PÎ0Æ;{@£rÂơ¼)¾Á0)dưŸ.´û–ËlçtŒÙTB²B/̉¶bh€öIÀ> F0nSôÆ‘–«gƒƯ¹(à!D̃†„đ)3† G“ÈP…̃¾̃ ¬@ă@ '}&Qq }»ï‹»ÇKX/â>ô„®y4t¹µ83D®¶=$y,µ`ñtÄæ¶>b£m B©lXµl°Ư1̉|Ÿbí2ÿó<¯ÊN:ñÇƯÜ·S~HmƠ{:¾Çá2®¶›ưíÿ'(•ÖÉ(8á²rƠ¤ư1*7ê0DƠñ!*QÓHƠ(!J¢LW÷U“¬ÿ?” Ëo·yË{G̃ṿ'L·éñå7”Ûÿ¼ —&¥ăS°¬èŸÛ e«_‹EåÅçÅ›¬½ ªs†*¿8?í¡T\”ĐƯH¨TÆŸG©"D±S•t>½{s>”Ü`®\ñ•4Ün3_t—îùơ^yû¶ÜàDØnAĐ 4 Pˆ7Ử@’Qi` (`PA×¶Ç'‹Î ‰$/ÄU”¬®¢.®«Å/ƒ+;G Ç´₫º[°0ÓWUbH§ø*Úª¦l½h“Æ>3zYôŸ)9ßViMª^æH)•°ÅGJ…4ÁÏ»©íSYb0}Dài,n=ê–F̣PÊ`áÔC'GéF8 ×øîxIÏKBöâdb"YÛÖ„(·JMçCØÖ,Ă:ëæv¹X¨{ú0«ñăÁûf³È'aè°ĂâûÚcĂJ”ls;D/- ·"<ºË¥~Lg¹aˆÂíÚ<ùîƯlÜ¥Ú¢e{l á”^ô_:éne«c„ÂÍGs½̣B Cé§ŒÍ C¢b[mÙ|µÙåOºR1ÇÇ5]k#F‰kwEVk}»/¦{”²|<°Å89g«4s=kx&C¤Æí~>ñx÷]nJR*z^ÉÉƯHŒUrª/nü—p—ûéöIM%êƯ—û2wẹæà7aV²èJ̉-f4ăưÏyæ®Óû. ªçí-ÂD!Q²¼Éû}QLµÓ™c陋iơ~<0ô©®”’Eu»!EÚK4§íyS̀ÆÓ§ä…°¶¬R@‘DƯoPđÓ­»«E×̀h¿+\Ù@øï †̣b2E{FoƯë0}éH¥˜û’̀0ùƠjs™Uó5́úÍ/a#b~@µl‚r­ë¤¶“¨â<®—}M,ÎórI|Í& /$é:ºÂΣhSf₫c’œÂ{*q$O¸ª¬Ù#‰¾­Iôñ’ 2ø4eø÷²Eđ}Ü3BM’ꪌ₫³3wÉê™ÿ 9àÉ_ endstream endobj 803 0 obj << /Length 2048 /Filter /FlateDecode >> stream xÚíZƯoÛ6Ï_!́Éjß{ÛÚuĂ0 [́¥+Åbbc¶œÉr³ö¯ßIÙ¢#×nă¦Ph(‰¼/̃ưî4+(üc…á…±‚Xaẹ́‚†·ÍM/~¸`ĩ&Nz3¿»¼øú¹R£ÄQÇËë>©Ëªx5z:+o[ߌ'Bˆ‘øf<‘R­mêi;_ƠøE^økßøzêÇn¨v#&ǯ/ºø₫rË\qE”'JÚ;'®å„‚¼¸\ªdWN¤O”棄a£vZ]w¢ü½¥Ï”!Ö°XH…Ô_½¦E*(QÀå.L]’Hfa´(^^ü6$Ó‚¡sAn7íïc'Geƒ̀÷­̀µ!B¹bZeă’W?¯Êª¼Zøhl0²èŒü:ÑcÄ)Å‘ÈD(K´S [X_{ÔơOäÜqƠ´ÏƠB¥í¦ÿAM³LŸ¬$\̣-Íé¼â r3ª»YO†èhÂÍvÆ›²&$–%dºUÙ–CºTO76dwfÀAĐî°}L}1ûÉf_·eÓ>€>iÿôÑưè´{́Ëö=₫öMW›ºưüq́ q`î/đÿw„u ªùAJ†he Z&ÜǤ9Ơ¯›*g#ñ0×ñozüÅ·OŸ=ă7c¥!ăÏÑ ”Jà†—3ß#ùºL:ʈuö¾{”!Zt³æëHtƯ®_årµǾ4Cœ“D°-Ínz5È÷¢›¹º̃ă”lë ª´%‚Ë,Å₫A™< ƒ&ÉpɹÓn"‚²¹!W{n`¸É,hD̉Áđ´.¼›×•ÿ'ƒªđƠ—Ó17£Y|ªæK_¯Cñ‹“ èäª\‡­€e]¥‰₫ºÜ,Ú×*¾-ăă›1·#?…-́ó£w¾Y­ÑMŸ );1”ˆÜI1‘Ö Ú‚BQjûj f¢Ú8 7Küÿ ؃@Mü€̉à_¿đ l ¿Î¿ :ø7­‹wͼm=v ¼i±ªo™­ñ©³Øëó†k̀aÚ øM¶‹/ÊÅâ¾8](ƒÓE%3«à& Å#œñAôÉíÆƯ%¢`7‘Üu¹¼]̀ƒv=&Hä"Âvnj²ÓĐk`Ío‰¤<̉}éSº*ëƠ7CrHÉ.ëÄ$5ĐÏH âêBY°„‘ûưŒ4Ûv `#̣vf¯ÆṚœ(”qĐx¹È××Ơ3ÔÊÛŸ ²ÄN-´?¦×‡ÙÓû0¥$È-Î̉‡)%ˆ±ÉÀ¹»ë1Ư+!(1†RBˆû˜ø1…̉Ä)¨”öJæï;oZVñ¹ö“%îSÀ(xƯ<Ä:̀é²߇æ và#à<æQÔ|ÚH‘V8©8G¤ )iØ"Å)RƒÑóœX -Éd)u¹ôßHĐ>~Äæm{(& ‚ƒeî¿VXo ­ƠŸ¨Â-Eû)ç8­Úß½Ÿ;^̀BÆơ^1û"2™Ö©xÓRk 9đjÓúø§TĂÁM¡Píé{ßG¹æD@̀HH²œ„̣, ¹R‚³"%ESÙ³IªÁ›¥ëW§™‚1'‡:JŒAà²ü¤JCï‹îÈ,ăØ*àhíÛAnĐ½ZöÀ¢º <º̀êlpœà XøªBR (á²+Œ:b4 ¤„:¶+’°].ÀÊHwÅd oÂúđ w.›³uMh¦˜ÖĐM!¼¬â¬ib|u³X]•‹½µñÓfíc©0jø̃ÑÁÁ\퉬E¥pÊÊvˆy$Åi‚ÜȪ«:˜w؇1¿[ QÅv.÷Ơ±³̃&™a€&T«R²¾`¿^5ƒƠ´$ʨÓZHAœ9’ø­$ükÆâÆ}PâwG?ˆ 9âayÀ‰ a$q\uMØ-nâÛoĂV¶O‰ÁáXCY}1¸(WÎÄØs©á:„iVÆBDï đ¿“ €Ü>ªP“Yíúuȳụ̀óÔ Àø‘k8M8O r¨f8ñŒA« ?P3R*z øx7og{3æĂ5„•vÇ£}Íï5ß:K²9ûaqt ĂN¸µ>V2vȶ9 G$×Ù1A_̉å ä*…–*͉‡ ­£2·ûÖÂ’«Ÿ¶CÂRĂf¡CBR’¦v È>¬CÂ4t*0Áù;ÈÍ΂LHK¨>0}¦[Ưļl₫¯ ̉§'£R̀Ÿ{‡O Ÿú“à“Fíiơ ¸´Fí¨£€Ơ!Œ‚B?ôèÛÁuö1ˆ‚ĂQ–#Tßul\Øè.~H@£Tij*P™ •µù•ÇQ¨ŸªBmÇÅ9 i¸±v U¿cÀ–ÍÂ?®ôqŒó³À̃[‘¢üîé s6ơ_Oáø]đÑ̀?6n!¢3»Ĺî0s=w*Ô{!†F́Zk¼-X¼[tï'Û¨¶wÛx¿¼ ?x8Œ÷3Zp*cˆ”{·7/}¸Xq,Å$ vWđ0ÅB~†—'Ơú¯ô6Ư§¤`æn#¡F}‚?>{®âh1¿jÊæ-₫€ jÍl¼¡¼O£¼…û ßI¶J/Ă5 âp0-hƯ„»Ù> stream xÚ½Z[Û¸~ϯ0ú$1—÷K€}H7¶‹EîЇlhlyF¨ÇJeyfçß÷RS¦Æ6ÆÁĐ2uxÎÇsùxh6£đÍ Ÿ+ˆf¶||GưÓú~¿₫ưkç-`ââ`æ_oßưp£ÔŒQâ¨c³Ûơ¡¨ÛỚsöÓC₫­)êùB‘‰ó…”*»™[™í·Ë¦¬¶ø̀~-ÖE]l—Å|Á Ơ.cj₫åöçw»íW\%Å™v³Ôµ|Æ¡ o§.ׄ*Ô„%æ ¥y¶eXÖ,WëN•ÿợ™2ÄZă_R¡ôÏ_èl_₫<£DÁ*Ï~êăLÉ,Œ6³ß̃ư;¥Ó‚¡cEvEó©XçûMs3w2«êǼA5ÆxsmˆPn¶à’8ÁĂËŸ©̣U~·)́·èà₫„h3cŒ8¥8 Ye‰v ´ôïW›Ơ×ơá’úp¶v„Ênês„°Bœ¾hí_ÿ*ZMf_+dz-aˆV¶›âX „WÎ °2&ÿV4;°ŸĂ>a° º…í¢~\­ñ/f₫«h~útÆ›̣®Îë—đ!߮ .}½¯đ­.Êj¿;±â’ïÂ9ZƯYP~;ç6Û?u¹„Y†fOs¥²|³/̉‚à¢ÈsÄ2„4Kh¸èæ-ómXà"ÏfŰ o(ØÖ½ñ—”P€Ÿ'¶3n`iÊgÚ(pt=iú˜04"™‘Û[J˜p JË[Đ–›|·À&pÇoÂû”C˜¶o‡AhF˜» B+¹aĐ̣®l’ HÂ%?i€ư HI‰¡ê H)‰‘,!$$™tg˜&Ư«&8bô 딈V£åE@,|¤/$çDƒIQÀ'AbEHà1ª·€Ä(Úļ(m0­+F^e]鈌—½b˜v‰ĐDƠ€1Ê‚&¦¯m1̀7»êCJ0Øle¿vÀ&%”Ꙇ¤ÈÔÛ Q ©QPºÛÊ]} ixÛZ3…d=|êá‚Py>eÑà Î^…± (m]ÏXnÊÍæ»’”ÇjU¤hƒ̉DZ;ÉQPÏIjB5¬̉§‡í²\¥V€€èeÊX’–œÔ–ÎØi’#(ÑÔÄyøơö!Ôºe!0ø2 ;c•=Ṽ£VưWÙ1{`ÔçÄ J̃Mñ »Hk¿‚çRƒ6*[åMô©µ-÷ùûñ؉èơ %yvÛ™Û’®9ËváAO–5R)|tŒÊÊ]H̉7…‹ˆQÊW¬’ô ̣‚’úü$¦cqĐñ0ÿ¡(AçdùÂó™²59UÈPv¢¡ÔM–CqI9ÜVÓqA´Đo­\B:×Vöç”% Œå5ªJBBô¦2 Î/ ̣’œkÔ”%Mwr}Ù.¯XâT9.]N‡5§:LÁ̀Yù\Ÿ̀Á|JEIá?¨r]6Å®s¬M,çÜd!-Ưûưh'4Uû×g#è}¬Ê¹XößV„?cÂ`Säx|BIüö5"ºáưÅ ₫2&D’0$œf$HɈ5ú¡€¢´́uƠ®8 ưÍ£0€ºh ï í̃ü‚€VsÁ³çŦx –¸3FeëÖĂv©à¢&ë\/°qT‘²4¬êdÓ‚Æ>ƒw`ú”“ZFÔP}ßè¤2T–ˆ'| uT˜̣ÓûÎĂv¥ïĂE> ”½i•ă/±Àci%Ë·. åW¬Â·e[ØVź¶}¹/é ×{l”áÀƒ¶ÂûÇù»à§ÿ]hÉ×5¯ï4E!-²g(ưaFñ½:1sÓØĐá—Чâœáqêrq 9¤ˆ«—TÍ!/¾|́^Đ4¢°— &7âÚÔü)¯Ó‚ " ËO ê]a›?§æ 9`Ø×jßœ>+œiÜ ,Ư“̀郇ƒºăøàQ}+1c@$x(̣¦©Ë»}Ó~D@̉>«$¡BåƯBèé*hhrôÓ]z̉–ăÊEÄñf©Qwh ºë‘}p°Đ êKê$ØË₫ơnv2z0IF+…C&M^˜U§¢~ *‹̉2-°Û Ä£ă“–q2„Bd؈@ ĂE¤„âM»Æœ†*¼(ÚzƯqrí¬<S‹¶+Æ0ñÑ.d±‰½“Tµn¹ñMö+X' »Xu–u N;Ă%œ~™.»EâY³0#C5} æ¶¶̃oª»|Ó>¿Ú‡’‰T‡)́ẹ̀!dë{¨L@’ă¾²±=1èÅÇĂØM`ó%\€»¸‹ü$}*†~»Ä ‡¾¬â\|@ùè]£yŸv™4ÓĐ@Û¯ yL4ê"oTó‹å9<ê¶Â§Û€°O«‚ö]1Ũ}I¾€&LµÏä•̀9èL©Q5öǼÁ¶Ï¥ tt|N×bμ“6©ê=6ÜŒ`¢7¼¢…4†÷Âk­E¤Î½·=?Àè}‹ùN.öăÉåiÚeAPĐp¼®6› ¿{.·÷áQˆØÍ¢K}–ÀÿÇ}±ûLM Zô´¤à˜q×ṿê©;(óú =́ Óªm Đgl9À¯)‡âr×x#!Q´û·C÷yŸn÷A½¡́’N·£³ÈLX$±mn.´;·̃/‚=HOĐ’KÍMi»¬Eºˆÿœ¶¹¿B‘¦a¾™Y`¯Ü¼©ƠÁa Gøqéï~À1°½±ÿ䘉&-f ¸{Ö¤Ư¯`àÍZôëøgëî‡î"1[» ÜåÄÅ«=i„xƯˆp`–ïñ“ÍJ„…„ÚơO7 ŸqÏXöˆe$XÖµô¡uÈFǘéËƯKî!wy]L\¹;yꪙ2º¬¶Ë}]÷!—ƯW̃å“×mÿẹ—!̀‘¶â¼ÔK‰]JhíyAµ)`táÿ\%ÜÀ胘ps̉å]î¹s´ w-}Å~Ç6$q¤éÀlq°‚AL. ’ ø-™̀₫¹=jUAói±̀»NKÙt}.ô‡Ô-˲zÄåïÊm±7_̣v>HñµdW,ªt©áÿg}PV endstream endobj 809 0 obj << /Length 2473 /Filter /FlateDecode >> stream xÚƠZY“Û¸~÷¯PùIª²‚¸ÈMå%c{s:{²/ËÅ‘ k)r–¤<̃üút਑<®É¦\c‚ Đhôñu£!ºˆà]¨x¡F¦›Ă‹ÈôÖ· Ûxÿă êÆ­aàz4̣×/~÷VˆH¥tq½“º̃.>.¯öÙ]«ëƠ1¶d?¬Öœ‹åÛU—ÇrÓæU‰_ø̣½̃éZ—½ZÇ*’é’ÊƠ§ë¿¼xsƯ/.bAggrÚ~Àn/(#đÛ±K nÙ}ó5;Ü׆ÉñÎ'"V‹5UD27üPmcXkùû¸ÉÛª₫w$¢R·›íÜêöª*›6+[́}¹)²¦É7Ÿqbñºè+;‘‚‹ók` K†íæf>₫ữ›JƯÜM¾ơxsÄ6µÎZmè´ºiI¹yù Ùé Me´îv"Å.¤Î#èÊè®Ötihoơîu~°D¤ZPJR!b$™é±ăm›€¹^ÈĂ0 Œ6Ă|Æ-qd<´"ÂcÖM5»,LĐHv£^…(I«~D™ô÷ Sè2D†&$‰ÓnªẠ̀œjG(zê+ø5¨Œr”>cbÙî]d«Ë¦÷¬û¼ƯOFŒö”—¡J’T‰ÀÖ=nâ”(Úë(+·̣°ƠÛvE—ûĐ ̀ëT„Ï)íååt‡Y›5º ‘—)IµŒŒÀßAÔ Hẹ́º#o­Ôªq©5KáˆzcÁ;FØTÔyc»kƯëRoIĐ›('T±‡̃$C̃ôc}÷¸7•ú₫óœ½ Ix2ïP@ÿ´CÅÿ‡ơ¦$ż'°efµq[WÇ;Ûc-È}aËwVÄW¯ßÚwœ\h§-¡Æë!¦‚¹3»ÎƯ-Q4Ơ!₫¸ ïưÙÉ9/97as‰@ỀA…̀á§UÊ—Y}Ê$œH¾dơ™KAÿ#‹ø)«ç-B™¦¿UˆưÚ₫z$Äèsf ©n„‰NÍ㛇k™X /”w6!­)ÂăËJHPhƯÚö8¼Ơ[˜®Y¼–1QA9ź0´0î¡)uÔăShª"¢bz ˆ@„ălĐÑ*N–¿‚_Â#̀-%1ëcĐ&ś̃x3üÄL>D‹—!¢öÑ«÷ưĐiÅ‘ƒÍÍ̉J&ÆäQ$’ÉùüO2.'ƠùÄ‚ ­9“rV4§Ớ«º 2Å ́™R$æô|Ig¹ûféóp£F^: ²ƒàÎèó²s<ÅOJ¢”>Ù¤¿E<’­‡‘çV×ñ$C,z^é@ Uö,@??/;Ûêx3sä¥DPñ¼ÜlPQû.Çy€Î}¤ùÿë*¬;¨îä ärSƠµ^»Ô^%$•̉ÅÆF¦ªÜæå-4Óti,çxÀÿ]ªí‡¬Ág̉§û¶×‚¹›:=¾#Ä3äæ̀£î²"7IÑ“Åûz©‰˜DÁ8é#׶ψq…¶[ çF¾‘åJy™•V$‡ăáØ”m˜•)|l6Y‘¹v»7Gh {1¯]·9:ªú€íô@. PTØ›Ơuæ$‡¯˜‚~ü„ –[ûº›>ɘp‘­¿Ø·¿’.ßF•!‡£|ûj¿b V?£Q̉ÂIîí%ÓWûñ<ù¡œCŒÿÁ¼›ƒ}÷sØüáÂl¹WvL¼9 ưË=ÎÓeơ!ÿnB̉ÂlẈG“o¥ëđ`̣ ’DÎÀ¡a±Æø·Ơ‘é…d¸…—ƾ§˜ç;íŒĐ½ œ6æ$±½Óv&ÎAFjTPưó.H5c›/v ¢’!7“]7míÙ±'ᆜ‹ƠN~è̀z #ÈOraÄ'­v<ñU`z̀>ቂA0ÆvÆ j<>³æ³Ñ-<{ª :>Ø_Xül,ÜÈf'û‚x®Ø¸Ú”¤3ê…<3uz9÷´ëma^»À h·²ñ*¿=VÇ&DQDßp89¥XƦÅê+«ơÅR›_Ñ1¬*Ă*ÄäÖÖ>‘V t]̉Áà‰ÈZ}*‚Ák½+úYÓXí„ư_Æ9œ»]ñ”X0d¥cQHñ‹I}.ô]„dŸ@›²Ç#‹A®ÉlíQt™&46Ơá®Ö+CÇ(ªÀ[M }N4‘2>;ÈtNh47jâvbÑ>âHnpŸơQ¿ÂÊŒ‰+ådóÓè0uŸTÄ,t±^T˜±­¡Øîr½Ñ+DĂ}ÁôæN‹“ %¾âàđ"ñ—₫vAi÷#<Óï?~[ø×hPđ_Ü›‘‡sđ],>¼ø§»ïôóóˆC )t_̃]kølú*q§>~¹ºƒª¾5)4ï _¦nfđLqĂ—ÈÎ0·ƠuV `„₫̉çøÔ»¶aËÔB%R9d_óƒ;í8XơÈ]†Ÿ4:QÁ~›Ņ؉Sf+Ó4ön®~k9rY}̃Í́ø̉é|É£~ü¶g¾>­àF—ǧ.Q\<æærbjQ¬­WăÊ6€o&•‚á}ïnÓC'ظD}Q¾̀ù\¾L½4\ä!¤N¡ @A4M„)–ü¡K!³¾ĐĂ‹ PIhâ£*Èi÷JV­ KOƯe( é@51€ç©q/„ ¬')龯óV»vVkÛ°œ›l Ö¼7i1Ø÷ö³Cz5°T+œ'Ø:iL´ 1ü¨À3âêIZ‚H¸O§p«–@mdNbRÊCRl&r'î¹ÅƯ›ÓAvƒ̃`0ÍI§?dÀ8ç!i¬1TDư%₫¼U‚%qpgÊỈ'‰ƒF1àAjHaq‘Q¶•3?ơaäçp7 ûùé)ä/Ô±œ²×5‹/­¦˜Ùfæl(ÀCÉ`t'CÁéèwK‘ûÍÏÍñ„ïÈlûQøpª¢ñÜơ"Wî8ˆ {LƠ<™eMï€Ưø†ØíMđÚÙ:W©»˜ôÆơñƯ>€-y§DRïn̉[ï&{ƒ7”ø[”‹n(׉;¯9Á“ÉÏlH0tí@,¼K¬º²+4æÏä"1YăÙ'è·{s}ơ§7ïÇ3’½ô<Åà.ƒGF1cF÷4;F÷4½fëF‰‘€Û̃=f4¦Ơ]ÎÚ]wÅphWî«ÆV$¹ ^4ÅÁ$x‹»Ä₫V0¬*HtFUñ3U4úeF¬g`s8==~ßñî ‹«¿~ø×ßCÔ8dˆË´á½û=Ѱ­^îö](wÚËƯ₫©A±Ù²7F”ÿ63 endstream endobj 812 0 obj << /Length 2217 /Filter /FlateDecode >> stream xÚíZKoÛH¾ûW{¢€¨§ßƯ`Y{<‹Á ÀfŒ\29Đe K‘^’J6óë§ÍWËMK²c±ˆù(VW×ó«j±ˆÂ?+ˆ&Zí.hû´º‹ÜÅûŸ/XG·Âå„̣7?\+1J°èf3eu³>Æ—÷éC“U‹¥"?.–Rªøzae¼/VͶ,đŒßg›¬ÊU¶XrCu3³øtóËÅO7Ăâ+¢¤8Q̉ú‘¸–GL ̣öârM¨’N\Aa|±TÇĂâfµ̃u¶ùgôõ6c$Q#-¹ \+ÇàsZm×Né)0D+ ä-Ùß5UÖ˜̣ÿ…Ö`Œ“Äè₫ăb^¶ L{ª7!NpczæëCV¤»,ÄKQÂ;Êké6­3ä7Ë‹÷”°IÖQy†—`2đ0°S̀Q_e¿S&‹¬Ï¡*NñŒß]ö̃ñŸÁäđ 1‚GÚ&Äÿø‰FkxùKD‰4Ñ—–r¹à=̣è·‹…œ˜)EŒ¶-+-¬“äĂ¯?½s«^(¤Ú¦·yæ€íîûNĪJÜÆ_Ư«fÁMüơư:ÎÅ—­£…—÷Ư£¦ư©lÜñœX&™ ®F¬̀́}9ùÆÛ¨FØÁù̉bí–HƯâh;ü*Z «‰•¶3£^§Mz ç:.7!á@qV0Ï)¼O²II´dÛ=hˆơK¡È(°'<̃œö$ÄÄiÍù2Ÿ¬̉NèÛÎÊC Œ_Nd2̣́oA#ĂG1Z /N‰¦ú(/{½>¤Đ§Ë³R M´6§3{@æêû²j‚ÂHµæu…ÙÏJ#(‰|¡4K)4̉ÏŒÇyA,Í‚ba ăô™bÂÄ[Û?%OBđêUåéÄÑ2èE‚¼ØlÏÔOX A_đgJeW•i8ÂØ´¿rÖå«mH1Œ(¦_Wê>­f²ó±ü“PŒU"8ÖÖa¡M¼*«*«]ơ)‹ơ¶¸sÏ Dû.}ëJSå^¤µ«̃ª7cÆOUÖ́«"[;~Û!ÄÜö¼Ë˲¨›ÔyAˆ.ă›V–ê‹û«°»:@Hµíøok÷·_µ«·>è^2I 0ÎJO‘·è‘7J†èq₫v!xÜ4!dy¾4¿m90m À§ä$,­OÇ̉ó¸¡?HÏr_ YÍ4lû ‚»Ệ¬i4§ää,N›¦Œµ½Ư7Ư\zHL‚cÄÏ¡L¨uZ€8]ú°9Ă$I’×µ'Jơ%‰S̀è­ä\¯j×Ă—ƒ˜·̣è¸4–oVÄe·N«XwvÚHÂÁ»¼¼Ms¨öNçx»¯³§¢qtâĂzÉ΃\¡|e₫ªs ¸^+û¦¬‚ ´q£??mG¨²æ›¿+´‰]¡XHéoY§¾4¯Ëƒ]µ =H ›·­Z›7sÉ/”®4%”³@º’̉UV¬¯²Íé©jJ¯ét¦è¸¹d& —öÇgujê œpî§_³¶—ư¼p©Å]~_wmùrW¶e`ƯÙƒÿ¾½^];ÏFÊpÄ3ăMNnß́Ă)@~páÇR ÷êÉ“Ăœ6Íé0ËiÓ$€ß̀=3$0L8ÅâƠ&ưkÓ³Œ3 K¬Ÿ†n{)8:~¼vI#ßw·­WaÉr·ƒsuU¬M§-n¡ÁÊÈ©E"@¼çŒ@îpIƯ¯˜¹§3Ëuï¹—³áù*Íóp¡¤₫̃f %h«½Bi’AxƯƠJÜÇl¹Ôpyb¹Ïc‰W.q=à~߭׫TûD¼¢¡Ó|É´–â¸W´0¹÷µWôZ³4…̉œ¾CîÍcÿd=4ƠP—¤—̃Î+º‰Ù‰©ăpÊâèOyùæưP~¦¶–ŸCµÓyJ!û,eẫ´³µˆso¦6W‹`7R©#\a’Ñß$ÉäÚw V}fº±'¸QË÷|©]çɈ…Ơ0×{ëùAÚGVƯø LÛëDaîU1¯¶ÙèKBjû°Hdܲ¾₫00ÿŸĂ¾D₫>Fsú¼–,°É£#²ÿ/Ơ¼¬Og­è˜ Ơ¯y1ó—’g•ü,Fă0»Ü/²Œ¼ƠYëµ­ơR‰`kÁv¾-}ÉQ€#(Tjç¹UƯà…ÆâƠ¦*wîª{ĐC¼îÛ;lw±—‡Zwă±A8U‡©ƠpF4’©Ăa>! Ó¼L×x,âK6ˆ=•'ØB'Fxơtwjˆ¢vÚï÷K¹Îº 3x%eTv y;ư‚üiĐy¿€0#¢ºê!T´ÚúzÔ£ÆÜwí³m±Î₫ëºƯê8ëw·̃î²¢nÇ2H„1M—øÓ‹µ{ß₫D¥5½ëcúµÊ‰ÿèn,¹jÜôØGÈÄ÷H7ͱñYU"RcoB0MáÙô¬úđ˜ƒYÏ}7,²qû!Ó™~₫€Çt<Á¾3ś»oû7¸=1ï¹›/Ơ¶i²ÂƯ¤yÙâkT¨A…âƯD¡x‹ [ÀöĂÜé=Ħơă}ÙÚ ä+Ë5 e‘GC.::Ơö°é©ÓƯCîÎ6ñÜĐ­Unđ•“₫÷]Ơ¡̀, endstream endobj 815 0 obj << /Length 2101 /Filter /FlateDecode >> stream xÚÍZƯsÛ6÷_Á¹'j¦Âá`fîÁMêo®i/Ñ=%™Ù¢lÎH”+RIûßwñA A‰Ơ6ăAârw±øá·‹…I†ádfJ3¤™Êî×WØ₫º}ÈÜàƯWÄËMApH~?»úçÁ¨ÀÉfËPƠl‘}È_?ΟÚr;™2Æröj2å\ä7Íó]}ßV›Ú<áù»rYnËú¾œL©Â²È‰|ưûê‡Yo\Pg#=í¤Ÿ¹«iFÂàoç.• îÜeˆ!'S!i^ƒ3$oïKTƠ¿w`²2#BPó6Φ” ­ưËœŒT¡ŒDTI´ơ¢Z7)MŒ y±ï†©^Ñçùö%ö=̀Û6­I!)ñvơªZĂüªEJ›¤HĨÉ~˜Êÿå>ê² ̣G,pÊPÁá{ŸïÓ6`É î¥@ñRB§´€UV€ÀÄI¿+ÛƯÀÈ ÍÛÇ̉ H^O¨Îwë Uùfn€l$6K÷¹¨&$_˜”ucÁl^ÛÏâX&R#¢SXˆ¤…§ñèe¤ó‹îửÖ/}àÉ?O„ÈçÛj~·-›¾1tàœÑíµ¤€³âk…Ù” m±­ĂĂjs7_)p–2·ƠƯ®-÷}Èw-Q¡XÑ‘Ï ẴV>œzáÖw3΅ÜÆ3z`A^µ¥–°[øc’B!¡ƠàN‰¼f-?‚¸)ßzgêMàËÔÇRHñ.–îUç&'‘›œđ¼jüÏåưj¾í„¦$~ºµ;¢\€u©=go¶NæmÙ¾~sĂàGLøªĺú³|S—N¦yǗV^÷®)ƯÀ£ƒçË₫û8ÆÀ₫g¦øǼ›?æËT»U[=­J÷¤[÷-\/«¶A.Ø1ÿO 0 `gJ)lÍ0 T¸0 ‡ö"¹à·ö÷§̣¹`UÖ)5D#M‹çŒK¤Aˆ¯Ûvˆu )tíñ₫BêJ+:;wÍ×åḲ€„W€Ă"́ưX¶kù8 µr¿?9"ó–6` đĐ>z| 1ÈVˆÊÂi_vï®Í«”Wh˜÷«,“±ß¶oaÊi KŒ0¥È,2=äÛ7© wPö<‘¨Çæ ¬_ùgÙüÚ yn\N?‰‹Ë̀z_ñ´‡ñ%R$æä®̀`Pû¤"=Ô Q;´Á/ưâ4B¢û9}M%;$égăÙ3›;0ÚÙ4³0kVªH&/CJÑA›POH_•”)CBÉ̃ǵ“^ ÔHDö³«‚ˆÚt•b2̃Ù‹y;oÊ6ebE9K@1¶‰; “¡:€”ÈlJ4;º/\€,Âm’!Å*d1vª˜ơS½Ÿ×Î̃]HE~Ï=@Z̃ÔM 2P¬¼nđX§â¢ô?’UR´gl?·„*pë34¹r&A”PÁ$mó7ó%;—o{àè!âˆ9(Å—/G*ÊiIRå8₫6̣u˜HâéÅgÍ#ŒJ‘Ü„Œê6°KO36ú0R`k¹WµFü×–f/Ă6=V{²Ü7&à›«‚›È„êMÈ̃Ä!±v¬ú¥jS5®—'T¡•z4Ñ ©b̉%{ư#H—z4éîˆtKûđ&HÙƒĂ·”ô<®•*àZĐ¾?$âđ˜̀]ñ}ßáŒé¢u¹„k`/ß)öƠG؃́Kx0à}ơ_˾᱋ẃkT6êàx™öÛ¨Ăi"sÿé¦ÙP› æó—Ń}¹˜Ă‡™—I4KờüÙÜÑ?ŸÜcKPæ¡ûèIĂÛÍ’×Û®n„Á¦₫sV°·oÎ,ÄHG§†—Â`GVVÿqØÈK§~đơè!ˆŸ¼¢”J‚BØT+Ïđa˰#¶µó§£âLLÈAL4cAÑ|Å{*Ä×öÍceS¢)ÂäđTơí8~«ú~µ[”ÿ‚®g¾ơˆoôàÈ(EÖp¿à`M ¶"Íï&Vî÷̉”Hu×_øÇ^lî„:r4?¹ ¹&ûí2ÚP$ÍgÛƯ£ưÚ_1¥ *\CÓØÜ‘ÁƠ؇O8[ÀC¨SWÙ+¹Î×¶±¾Ễ_ư×_÷œœa{›Ÿ@Ă~ÛÙđÚ  *Xû-W5nzæú€aÚÅă¹Yf¸:¶(´¤A»Vå îÁĂv³{rĂùÖƯÜ(èvs¨0™ø ólQ.çĐmîLÀëö¬_ºÏzÓ:»̃åcăGC— †}rµ8\“gV—/Z-.ɱªˆĐcW«`áj™9ááJ’C“JAù·±Jßo&…¹½XÏÛd¼ Ïâ´ûâEÛéƒ D́R$HB‡ß"Ñ :1c?3;6{&<̉ £Ôlo~Ö©°¢¿5ꮫ‡G¿-¥ Ư­ªw¨.<[nV₫‹rçH´ûW£̣KU?¤IPV‰} 8}Hº1Ê~~÷Óµ9qÎïG¢4ˆ‹ 2€5çmÇȬI¨J£É,½ưw‰ÿ\¿û:5.Ă ÚÁyèƒtxxø„†`— ĂP(/ †÷† ’;K.)>ïư’P象àXAéÀ. Ó½†•"ñö‡™½oMLZbtßsON)Ý;DÛd4d(3:Ó®ßNÇÿR1¼ƒ@kÁưˆ„½ü’nØ‹ ‰u¹&ˆƠY¨Ql· ˜U0ÍBGfÏ۹Ƴ?]R ® endstream endobj 818 0 obj << /Length 1165 /Filter /FlateDecode >> stream xÚÍXßo›H~Ï_Á#He»¿J}iz®t:EQê»—¶:a§H6ö”ûëo† ö‚±\«$ë$O²eâù< :rYä}›ÿ~óÛ¼u®¸"J‰Hë3¸!w˜ đ6p¹&TIWAxèùJs70̀-—«5I³>åû™́Íæn™®ƯÛ™ÆH¤Çɨăs˜ ¨—₫˜ïÿÎZS¥»¦J†đEeù̃C¼à°ë¬vô•*jsÆ%Zˆf!GFucơÆ6“&@k1E°Ûª؀h5º‡ƒôQMt½T1V 6Á=76:5́@±…U›j¼*º­Ẹ̈ƠJư¿jq—OaăótñÖá$/&́²O­ÙUuÀ—H́0á4²É©8é‚P;0]Ư‹S…ơÉØ¤‹<Ο½P¸öx1IX ,ñ’¶x½~;Ú¿^!u± &ơ¯*!….‰²A-µ­̣¼m…We-±WÓ9L™Ă•2R¶´ø3Û¤Ûévˆh»J·̣Â.×zú5v¹VsͤcÜ4:ƠrÓ2©™‡…'j·˜ ^SIk`Q$á̉v’ëáç´±°³,xH$Óµ•æ"ÉçØƠsתº¿\<>–ÏûdH‚ĐrÆG¥̀8ÁQm²x.“"ư÷‡&kĂ2Etö̉œZ^-;l×i²±ç}¿,N·ÜÄEaG&‰D›Üߌ†̃£¥ƒW%p[!û)ƯÑR K”‹ï,é…®†£Üï˜F„kæưeƯç;Ü,Ÿ̉Ủt-ë]¾wH»₫ẹ́P˜k'Đi‚âË ơ©P«»Äé0ùq ¶ê’†$8̉س·KTHBu‡ô´®¬â“ĐæKG$Pá•%4/8Ñ #¥«_½›£?((pBk®Ø¸äñt øªllz«B御fî¢znô×<đ–̀£tUYQ{Ø¢ÅÂäÆ?VG´D.*áTÿÅÙÊ * K ¸¥L+Û¼Z+í§ĂY­ía"Íåá±J-… endstream endobj 822 0 obj << /Length 2535 /Filter /FlateDecode >> stream xÚƠZKsă6¾ûW¨öDUYX¼A¦*—µÇ»ÎfdÆ›Ëd*EK”Å=<åÙÙ_¿Ưø Êŕ=¤\eR Øh4¾₫ºÑ ›PøcĂ'&$f2ßœQÛZƯOÜÍû¿Ÿ1ßog½»=ûë•RFIF36¹]öEƯ.&“‹U₫PƠt&„HÄwÓ™”*¹¦29lçu¹Û♼/–EUlçÅtÆ ƠYÂéôÓígïnÛÁWDIq¢¦Mï'ê¦|¡ o£.ׄ*éÔ₫̀t¦4O¶  KêùbIÊí—_§™Ḷ µ‚9ë c$S£:™qA˜PNÆG×G›~M¸ÑĐÓöØæ›"&tf´íu₫¼œyưí!*I¢Uvº¤E¹)û·´Íë:j%ÁˆăûnŸ¦¸DÉ÷`bª(غµsccMû¸b,%°œ₫íßà˜&’pÉ;딋·°̣c^5‚BÂǸxÄLđ”0PÜ1Å\ïëí—CY{À»¤I¹]îªMîụ̈;¸¦ÉîPûßîrSÔ—Wî₫qª4²̀ïÖ¿b"¹]•V K–SÖ8˜o© ÅúwUÓ\ĂU¡,˜̀ˆNc˜ ¦Ö”Đ̉ZsÆU–Ô«"P̃;0¼d̃®=…Y~{°“jâµÎz€¼ ‹’²^g\9³Jæªr+d·tÍ€₫b»·ÆÇŸ'ª0d&ê2¡ ˜ÎpùváÄZ£à°[Tá°Áÿn™‘±G£ºPyw¨‹¸đ¤èá•ÉÀ­́Ú­öC‰6,„e0dk˜êQ$͈äê%kL«ÛÊ­'÷1 ´v©‹û&\̀wxˆ“·Û.Êí½kï+9GHñdoÁ 7 ›¤̃7:›À6ƒ«!iæYÿCQxUÖûƯw1Í¥"©́`رF²¼º¾<÷m÷ ø\í•đ:„Ag¦)¡œÛ¨!E?̣¤G"ÏÅj*Đ©?£̃" íë]•ßGÇ$êYl}a¾½>”ÿ-¢!Dsb:¼c₫‹U~ƒ S¢%ûs†I äơ]mÊ-Æ¡==m̉€÷•åg ûx_Ô5üØ»>èÍØÚºÜ÷ư5J¥°k•mâÇ"Ê€vu!º@*•\/£R)á|S¡óẶ‰´u₫á¬÷@y}`w/j`tÑđ—˜lÖmE÷í7k¸œk@uŸ±G±ˆÈ4`GG4½(#¨z‚̣p% E$¥#(¼EÁ°ö₫Î#¼–Ư5ÙUy^0¼ ._ĐGɘ· §À⢷ÈÀE#‹ É—è¼êØ"’uiZé§Üf|‘UP§›|¾sÑ¢¼?4kL)IS.̣î°.0Đ9KO‡Ô¹ n`¥~îå٩“vu±­ pîQOeTË>ú-9†oIâáB€.̉< Ù‘pqYüF™ÊëâmbÅê°\®ß$V,åzD-+J¾XÔïëâ±XǦŒ¨Lœy.ûZ :PÊÀ#©pÙNÏ'úGóº¼T§ĐÍ$\>FNnc₫jb ̃?k #¦CÅ‹bM*ơX¬‘Bx·ú!‡DĹ́‘ju(À—e8ëm7·AQ†(nPÎ3çépm¬eoü *qVđ±3)l€*z{ ×p~œˆ̉Ñ b)äK[ß° “™jˆé¶ºññ,àáJ¤™|µ=7áI~=ùpö‹¯Ø öy¨×J̉€(;²Ơ2í´îøxHñ0Y›Ä£u‚$üÇî ,Û…ïJƯưi»kMæÙœcÙ†¹ :-ÜữaáÈ5s¿QØ&ÿO¹ñ[¬̃£Ù·Bâ|ˤۯùV̉#|{U®×oSÚư¾‘ơRªE9ùú%[¥‰LÍ)܈Sc=è*=‰÷^ y÷U‘ÆnHˆ2đÿQâiÎSb˜\¯gÔĐ\¶Ơz®e@ÀͽǦdưwo\ös?xk„!,Ñ.¿|–»úfâÏijn.ơ„5$¨„d]©ԯa E-©Å3ë”±f9бi@FmºRA鹄ư6̣±È”çc´`3ácX#a\ÅXz1}z1PeÙÍd\Đüµ*ëæå¼*\£SÜæmØ¥¬Wîέ²iâ]çI¡á3ÓwàÎ ÎÎ`[!Àd˜¨f¯³>ˆ€6^´fËDa$¡®ú02Ú— qzÍuQî1Đ-ÛÚƯ‰[ ؾÈo‡̣ùA´zdØ102“m¡Áê5ÖÀœ N”:¬ă½zçS{È âÑ åAÉH4`Ç¢Áë5«¢HĐ½—ô ƒĂ.οƒNí$BsØÎv¹ÎQ¢† Ë®Bˆ[¿`€E^çntP76–e;axÀv½e Ư™öóeˆ××K—ÂcˆȳvBäAköÄn{×́²bàÇCµEŸÇ{—úg œGø‡«¦[?ç·I4w¤3MI6(Èàđª.¾R‹§›èƨó0sO›MJv¤„œ¤z¾”pơă»Û‹¼{ßøi(62Z›Ó v “Ÿ@áêk¹÷ƒ²î— z•„ñé0@Süô‘o~‚Y\üóĂ¿ÿ—†A¥/™G´I†1OÙ7lˆ´„ ÜcĂëËpœJŒ²£¿§j;À<3o¿v§e¡J¡œqZ¤jƯZ|_ £đSúZ“ÍK›Z“V ¡å.ß~¯´óBÊÚ£µ–PN"^uNe8'xzÎ’óàđDXt́_vL"ÅQ¬íOÛ₫ù=Öÿm‘*Q%úY”0ù‰2°Jk¼I‡E hÉcÈL“B[xfŒ-•¶?Eëc+*µ(T]Å›lBV¸vŒ-ØÖ;¦á4î«Ưáá($ßîèî…à“Qđ­Û@øºƯ?~Đ1öyDF̃ßDIˆq¢º˜q÷ ¶:Ư‘Á+… vq‚<ơŒ́4¢â';<{k*×9 ,ăµ#a.ƒÄ́çj‡IÍc¹hêÿư/8ú$ë ùæâéÎÍÜM‚h₫̉̃ J@ ̀Äà™€/áưúă»›±X‹po·¸¨_÷Iªứ ătGNAÿ‘̀ ZOưÛ†™ñHN¬ñPÈD1 »“ ụ̈Aài+¨·‡+ËÂÀËàĂ3Kq@|[~S7Ư‚‰¡Gú3 ;{Xăüê<(Bº3£CÈ‚4øa²   endstream endobj 825 0 obj << /Length 2108 /Filter /FlateDecode >> stream xÚíZƯoă6Ï_aÜ“ ¬Y‘I±@z›æ}¸Ư /mqPlf-T–SỸÜö¯¿’’H›ŃdÛî<˜’†Ăá|₫8 åđGgÍTÉIÉƠl¹¹ÊíÛîẰ ̃ưåzº.Ê?ß^}q#ÄŒæDçÎnïCV·«Ù÷ÙÛuơĐ›n¾àœgüËù¢(Dv3/‹lß.ûzÛâ—"{gîMgÚ¥™/˜Ê¥ÎÿxûíƠ7·ăâ‚ " ~¦¤ơ‘¸%›QNrw—I’‹Â‰Ë '…˜/„dY ÂЬ_®îÉöĤ™iQ¨/n¤QJ´ yä³ăDæÜ±h—ơÊ‘ ’qJ8,;ª¯æ("¬áù›ö‡\ä)ö¥"¥¦Ư×i«I- rÂ((ߤxI”(6ÛU’hæ#ˆE=Udè-%‘è N*¨£₫;(• ¨³x¿6nđCN‹Æ8căé'ÍlMKăœ`»‘è¼ië6Z°€Ư¡+eă£…¤N°B¯’Ë€6”(RâHb'Z°B© ë:g+É#WzØ÷_Ï9Ëú>¥ûÁ—¼;z÷À9½̀CéÀ9̣¢ l•t¡‚°IS§ü36ûóîó±êÎqô“ŒFŸ>åÏV q>ŸUƠW)Å|Nú3Ë8”đ₫́ˆ¯ ú`kvΧ*üÙßLÿöúÆ¿êû®¾Û÷†`jSÙíºöÄ÷Q‚[…œÄä¦ă|÷¸¬&¼ „2–PŹ®(ʪí½c;.÷q.D†«îd`,¸Ê!]8ªa–̀sÇ+*¢Ë8!˜ÜLOÊ‚—> $ÖƠ°Ơ —ʧ8msжqœƯ¾½´û¥Ơ ïë¦q£;—¯’ÙUQèc÷:†9Ë f+ܶs‹h¶w•_od—V?EHv‰úK’ó1(—•ÏƒĂ¾́ƒO#ÀÛv× dÆ~ÊwÁ¾Á‡ (ˆåŸR«BRdcÚñûK°ạ́Nœ>Å W­–sZB”ú½ñû«ƯöËd¡'5|=GçèÓÙCvœ̀U*™7×ÅƯSÉœ&óïúÿ½d~qVó 0³ŒưÿÿBq–]ÿ F̣, Èg-À†‚øĂ/·Àr»oûÿ‚`bÉ”à¢ùĂ’¿¥%å$l-‰r¹"Rè_1¼P®Î‰ áư}pA—¹!Ă_ÿ8 8p1$ÂîqØÈ lXNI©Ëg±TG¦½"’F¦»~Û(äê‡Ci’(„Oˆø9(+Eˆ£•¼`à4YÎX§á-•DÓâx›`‚•)?:¯N€ÊªPùc1S̀ϳïêve₫í†v¯đƠTK„†k÷´ª7p·G$Â\/¼¨Ú•'4÷Ơ¾é‡µ¶îmå?"Ö2ËÑđ´Ï~1Ưv‡~ú&‰„|óX½Œ·¥¶Í´‰hÛœ*ÿa`'î7ó ñwîƒ=)À¯i lÖ²ßÅ_p;ø;!jxx́ê¾7ˆµ)¸S³m?x6£ñ*±b;§Ù5 ́‰HQ^qîEeÏ$² .çv&s4@*Ø¢I”zbQ’Oe¤̃tPvƠæ¡©íÎ8z‹Èt₫¨u;Kµ‡Î<€Îå±ú &Hg®Íưù¨9 ?¨WPă=§^ñăø{Q£@ ¢‹ˆúÍ §¬á´¿Øà^ÇN”U«;“ó ‹ÀŸ̀‚À¬‹SÇ]¨ÖDä*q¨Ñ Ë`sáŒ&Ơ¡…́´¾?e(OĐ%Óg¡† Ú>¯E cÍÜ6«½²·:ơ´̀ă™¼NWj(1LTêwVÉ©RúÊ$¥ »ø₫ta©ƒư=öŸÇÆ9“ŒpÅg,,@7Đ6ÿ₫Ç|¶‚ßÎr8Ï-åfÆa¿RÍ́ưƠ?ưU@œ† àÈ ºWO÷­8̉è°öF; úVB“‘R¢»³³ê> stream xÚ½XKoÜ6¾ûW=I@ÅđMª@/»A{HÑd‹’À%ʺ+¹’Öÿ}†íJ»ÚÚ …K‘Ă™á74‰0ü‘HÑHi†4SQ±½Ân¶»‹üàĂ»+äRL'’¿¬¯̃¬„ˆFÎH´®¦ªÖeô)~û5¿L—¤Œ±˜ư”¤œ‹x•hïb¨ÛÆ®đøƒ©LgÂ$)UXf1¥É—ơïW¿®÷ÆHpöLOGéw5CüƯ¥aÁ½» 1$X’ Iăœ!ñP”êÍpØTv&ßm†U’ñ¸í¶ù`Ư|³’*"eBP«G)eHâ•¶›̣¦ 9–¶8ÑŸë9˜̃›5•³ç¶Æ/Ù#’!¢Ơ¨ä¼-¦z”u$HÍb˜R!"k@ˆpfè!X ùjü ôÎù`ƠÛÊ₫̉ƒä{3¼½^ùñ¦¾ị́îÑäMév]slá¾3u»ëŸ°gÉ{o3·G²!˜:ß$TÇ»­éê¤!â|³3PÈf™œ!Mä"¦3´˜D„²Q®Èoà2YÇæ…ÉQ ă–”₫t!¶₫Ư'9U`ÓHÂ/S̉¦ø§/8*a@\Eßœä6bˆ*ëâ&úxơçRÙRa™SEx­Øä}€-Zpôóđă’…ˆÔ/‡I‚Hö*00)¥zƒä·ơ°G”Ó' ÿ8ÇHañ pΑ‚ĂÏ@đ‰/¦3Ggÿy„ ))F‰¶[̉Ơª$¿ˆÔUzÊ)Eä ̃¯.bD°ƠA»¤ôElI²́£#Ă\@Pø«æâGv_±NC'œ“dJµâX-YÍQ%_¢ÊPe½Ù<“·mi–¸JHĵ>KŒ+°p–±D2Û§dSÔå’¸"@JUç\“„xRLơ#JÈÓ̀Ê0’XÍÉ îHÍ%<)óÁà3&0„±ˆ·­#“r¿4{ÎXkH vpÂj8́]â. g3¯ÇßoD\æCî§ú%Ûºqøœfđ!ÑRÁi¼ˆ2§÷{‚z$–đ‘s|D\÷¾1P:o ₫aÊEÊç2Z^€§ÀưrÎưpϹß}˜|^ly@6J_PœáÈKÍÓúAhÁ́Đ^϶`vI nÚóÙ*g̣¥‡r(@(äÓÆ#NÏcS,UæQË;HŸk º5Q—u³¯áÀ³‚ÿ;Ñ,îêÁô>Er—È0(ªbèPwîdA`hĂ¯Ë~x/•µ¯ÿT¸{4 6&·wƯ«iÔ¶1ŸAAE{oßZ±i&Đsĸ¤¾çsD,©R4\®̣¡ßÿ¶½·—mÈ#{W"®Âk®÷ŸÙk5]äƒ)Ø̀Ăk##A{¶×ˆ×_OôŸ²©àîVÅ•å@q̀¦ŒŒtÊ+ơœNç. ÷^èđV—Â|"K1OµvⳌgÁÏ›ªú¥ œ&Àơn»µQ‚G•lư¢Đ [Áº4¥Ÿ±á·r“¿P´Ûû|¨oë ÜP!˜~ú´?‚µo»ùÁn5]ï£ä+¿̣îư_~âb˜$Ÿ;€á̃T̉=Ü!V6‹'¯xf¯û-÷¡¿$·BI¯“ f”XÏÊ1æÏZĂB₫À…Ơ¾¿ ×!†ÙẸ̈®Ư^&ôÉ́‘=!w‚0´€áf¶ă|îœC}leøÍ}}ßæ½{́Z §-úê¨#Û>|;ü·¦Ê 3âö™óS‰ endstream endobj 832 0 obj << /Length 3156 /Filter /FlateDecode >> stream xÚkÛ¸ñ{~…¿X+zP_?åÚKp‡  .{=½~ĐJ´MÄ–\JÚÍưñ)Ú«´‡«!9$‡óq̉Mÿ̉M•mª:ë¼Ú´ç7 ÍÚÆ_>¼Io ˆÛó‡‡7oßÅ&Mâ]²K7ûM‘ª¸̀•?ï¡Ûü3Ệ»=üüæÇR‘q¡̣?x­Ă~uwm̉*Î̉BáƯøŒ¬Œáµï.—»mFºï̀W€ª"zw·-Ê<úđ×_yüA÷Ú6'|O¦eø£iu?j¤ûö‰i¹‹wµÚl* ®úû]GÚfèaGù=³~UôóÜk™I’ ƯlS•Æ)”–qd|̉Ÿ‡Ë]VG/ÖL„[¨8ƒç%qí¯ẻJ’¶ÍăØ ư¤Åê#p´ö²€&¢î=>Äj¡ơ󰟈绬«œaî»fÂ÷¦Ñ=¿ñ§¾o«,®’Ư¦¬•‘ ăÖb˜Lâ4#‰_Ï„¢wû·Á¬veøœÛkèUÇiº|ÿöí~Üǃ=¼½%Meu\¦ƠißÖA‡ưk¾&I\oÊ¢@|Bjû‚Ÿµ@Efd^‚†̉êÙL“îxnøÛ¢*TÑ ^–;3NÖ<Γˆă ‘´}iœưF£å‚aÏNG¸U)}Ëă´`êN¢ç|̣@Ô´óY÷¤{"X¸KÆÙcÓLà3]¿§µ9¯:º‹Y Ñ`}ª̀H]§5üƯÅi^2=Ÿ¬nÎw`´§UăCê=«ưá¤gå-gÑ8p°³h ¹ømø³¿Ç·g̀t°¿“Ơ§ÅS¸q?XÆÅ4j6 :…„À0µ`~1}'ס0đK›ûeŒ½HÀª*w3n®j¹¦ÏĂ81´B 2°́ˆđb›v2-1†ÙaåÆNæĐkÙHßæ é° /7§çå<̀r2´Î+ Gʽ«£ñÈ₫d'ôæ»Ư¢^²0øµ-UưđÂóíÀzj›uU¥Êí@¤ÅÇĂÀûx€½Fà€¶>b™#R1\=#åwæÆ6‚‹G$»ˆ-Y€#ÇĐ«áë^ˆªäI¯®ü«qátâ1l *#/‘1'Èx^́p°Íù?îô³—Ư5»«ÈHákơ¹1ư¸öœ=ûüB­èÎ’̣!ÀÔ`¦‘yA0ERE¿ƯƠ*BSÊ‹ˆ0‚ £Ï«\9aeƠÅREÀK(UˆC¦]Q8/eU&ü U¦bC8…<¥ï,K· ø<-SÄDÄk.—yWœÆwMƒ̀ôbt& ®;æ«OºQĂhï‰ÄÆ08™¾"½f A)ưƒY).»éÙC#Ư/¡Ó^Íb»’X«Æû I_uU¿!R€Ư‰GÑ Ơ*¥Qƒ/NKfsZ‰¢Ö ŸÑ€óúê ̉Ümơ^[KQç‰Ù©w3´³â؃Ó 2GW±+¢¿‘Xá¯0ˆ!n`…•Ÿ[dâ#Œˆ'đ%ƒ£‡âˆ ÖÍÄøI¬OΗ9ë5.yoFz»¸0…Ù(×ßÚƠk[ø=)ñ;¥ó¶–ưN)&En«̀gü+pđlÆ#”¢~¤©¼U°*eu«Í“wG%7ÛVà–uª“¡»˜u€ƒ„9zz(û`A£Œ%¬HwÙ~¯C ôÀµó6ơª/¬ &·Vâ©´”oL.ºfwAß7ơú™'ÄÓâ¶ÀĐv•º¾‘ÍWä~é%¡¢óÜ̉Ê#Åä9ŸăÜO»̉À₫p“vȶr€~H›t‹T€ âº.W˜Ưåb°ˆƠ™=OÀ& X°#—˜ó#ắ-…K˜ír »(Ó\¨à{Ñ=¼4ÍøÅÜî]aX§h¼ƒ>É6s*Çcˆ«w˜7È_å»<ĐzÀ¾¶p<¨ƠvjX #'üÑÍ£9™‰ótX" ¯³PäéuªcŸØ×äÖsA³êV¡w¥r@œ¼‘²`¹&Ïb–fïÅ÷R GxuK8*—ÿ6Ö›<_hYR¡\ )!ɯFÎ̉ ªê¯Íùr"úk¡»Êº«›¨ êŸJêø3û;5ü ”³Ÿă5.ÁüdÜ2·wmSöÚ.'\QuÆÁ¨ÑUœE‡/˜èƯË  ”³́:¨D3ñK^ rö*)øy8ăB¡¹Pñ¼¨¢wè%qÁó×tĐxt×8œ D‰ ̃åDg‘w|©GzaÈ;Üu;3bJ¡‡XQæ¿h~ưipµ₫xËOIséK À§,‡Å#/Y…U = ŒŸÍt”ó|.ê5Nú2¢Mƒ3Ád Å@ÎK ’àªn_5¡œ²®t\‚«µ|n©FaïËø>ĐʹF„‰jUô@K&8¦y"¿₫jÛI¸îWAWeä–;đ×=-à^Ễ0Ñ ù-èéÜW\äÿqaiÍù½f¸“ Èê@ơƯw¼ÂñÎæeZ/EQ–’À ë-–’{诗Uy0ªœ’ÚÊF̣kđí₫Ä\=ËM§×’–̃Gî”»́³̀CéS̃~ˆ}~Âí{dÏ€Ú‰C*¿cX´$O§JE+r]ËùéXưïÙX=:Â(ï.ƒPZ¦´œ-8.¨W„ËôQ^¹½å»)“ÂF_’Å yÜß8Î;”bAú'r6g9ăÙP ÷Ë‹»z0¹ü¢´å–ó0KrÜĂ7E¶Éú5ñB·äåÎỰçaY"iy*m÷,¹}$u°@zß÷·—ÙJ¹< zoˆç–T6ƒpqbâ5#»Y»VuÓ¥5Ư@™P¹¨×?2 ơÎLÊÁÈl»Q$ªS9IxỈ2 ́:¤ô¿Ú2=Ø éé×ó-*e`Îß₫M $½MåëƠÏĂ`™Äëä.đ¹Ÿ“Á,!₫ßßü’́ÿÛ‚œ¢|n…VƒéUÛ8$<ÑY¢ÿ¹ÿ¿Z° ? endstream endobj 835 0 obj << /Length 3227 /Filter /FlateDecode >> stream xÚË’Û¸ñK8U#…o¹9¶×qjmo­'§8ˆ„$́đ><|}úÔĐ®-4€F£Ño*¸ñáÜdáMvˆö‡(»)êW>Aûó w~ÿ*u;X¸[¬üûĂ«¿₫’$7¿Ïư<¸y8-Q=”7ÿö^wƯƯ.ÓĐ^!L÷~ó̃ư₫ñ ”%̃ëOo¹óæó§·>|₫ôIºfB²Ïƒäfäû <0·KSß{«¿úAܘѴͰÇÍ7A²O¸<Ưg–m_ƒ(~¸˜aŇ[fW¯Oº—™±åöÛ]˜y¬ ˆ¸iO¼g¼èÓ£%Ócfú]à<”ó˜<_(;̀”½i»;xÓç̃œ/ز8 =U -÷j­»€3đ®7́*óˆÍk*…ƒ'Ù1^Ô(»®z `ná*=wMSʼ'¶Oˆ§í‡{Bo˜ „\Ưàníá…èBƒ®MÑ6åTŒmϼ©Ơđ8¬o¿zäez¿ơí¹Wơ-ܳ? ÀTC׿AqÍu¬“%›G³¿äÑÔ”xá,p¾̣µG°µ‹£̀{§́…˜ôêÚ_Å —*Ë^|¼½0̃ô™ÈnwœHDC·²»)çơ½¦Ç6Petƒ29Ú…µ²¬€C ̉™§y¯h¾™öL @ ³/ÑögƠ˜ÿ©…º\½ÈĂƯ–áûæDCƯî̉œoª¸yBrˆÇqrEJ•đçGABÏ”yÏ<:ơmͽ¶çªTƯ(˜«j9—{êe2gÅ“ăöøî¼¢í¤† ªîÆ3ơú¿“éMsF3¼"‹‘ík3  éóÀê .jlOs§V-’‹­]¤¿«b\Ÿxwˆ=à̓E‚3U£Ăâîøq+€iNÖfÑ¡g;À³¡yÔ¥³j±jbûØE³=Óª¯ é̀.ÔˆdGDtkÏ<*'ơrÀ6âÈÉΦ¾1-.²í-́Ár1t†áZƒ¾;y[có'®æ®ë+ó/X~ªI(9x™®o;uV#ú0ñ0œC Ü'Æ–A¥àăF‹äfà¾-Eñäq JëÖ0́‘?r85¨đØ "cHƒ]Đ—°A4™I\đÓ¶\P₫‰[f*.Z÷BVÙj”¢2̀Æ':µk†ª©¹5W¢h^´‹Ưđ¥Ö#qÈWµ6ßë' Ăœ2r>gk¦̉d/@ˆ[ÇÈ„aº“pJ/O>̀ƠñÍØÚ•Å?´ëđ%ZGh¶ª/zA—KÓgÿ4JBwă£ù˜jüƯ ‚·ÁªtÉ¥ ˜ă@“Êư6s¨âñ²îŸJá=[_ u,5O¸OY©­÷g¶ªŸ²Ăk‘«¤wkDœl´¯aë¥w¦/q#û(„H¦ª¤äÉ+² W‡æR¦Ï’¤ °b“ÏÑ«ơ[³™eQ  ŸÍÀb~Cªø6W¤Ú˜K<§ç­ 2g erl0đÓX|&?, •è0ÁÀå­Đ.²Ä±o+™¼´ƒ` oX¢nÿ£uu-uw{ÜÈ[J¦YËIä±ă >Boèµåă_Đ¥‘÷ÅêyÍÁ eÁk$Àù5«]7ơ"¨äƯRyÄW ¶«ä!Óh«®‰àS¯¥'q¤`™MÉ–Ư¥Â[XÅĂ^ọ́S €©¶Í]kíP84 ûØ]?aLv–î×ÙĂ¹@†˜)æÀ̃Đja°ÈWÈEưBµ̉~»†¡ĐŸ"Û¡D=›„ƒ3 !d 6÷ ÓlY«¢ÑÊ#¨\|”çí8®́5 ̀²‹I%%KUû^Ê ‘o3m]¬ ́—ÔÅ‚9Ñ[{s:lĂEɇ&RwI:„ås£à7‹/lly—ăD4©x(²µ©Ú”döƠ²ƠwkS`í••sa¢ä²0ÊÚ™ó¼Œ?́ă$è$+Ÿç÷8G;¬u9aæJ0¦¦ΖjT<‡eª„4†3óŸy5cÀ`×Ê"€đÄ…øMod‹̀†hW8aÅ Ú̀qÖMÊÅíÇñŧÔáÎX%íø?—ÿä•z endstream endobj 839 0 obj << /Length 3156 /Filter /FlateDecode >> stream xÚÙ’ă¶ñ}¿b*/Ë©ÚQx“²Ÿ́M¼•ÔÆÙrÆv¥â<`(HB-…‡gçïÓJÜIJ@ƯèJîbø%wUzWƠٮΪ»¦{t<Ưqă§o™÷‚™ß?¾ùăEq—Ä»}¼Oî!ªÇĂƯ¿¢ï.—û‡´t0_î²,‹¾û†¿~üyôA÷zT-C?-O­i¸ưÑ4ºŸ4 HöU¥Åư¿ÿúæÏî@EŹ<û?OogÿöÙ®:Ê]\äLÄăÎUô~G=!EU4Eư‰áÿ–±¡9eÔk}`h?̀Ü0ư}MIÔ.Đ:6Ơßg^æ³Ă3ŸỜX–I˜G°QŸ4"AlÔa65 Û2Í2 ~H²]R$LA£Úö…™z‡ù>̀g=2đ¢ÆyâæpäQDMtCÛÓ]3Ư0vâ!&}ç6-veR†l”7ËO wl<ÇA¢øóŒ¼ÆÏƯƯ?”e}¯&+Ÿîá̃ơØ™i2C?ñâƠZ+ơ-JsG£9q+dnºßG§/.eK ;€¹ 2ËÉ=‚Ơ( ^[óZËp₫|–)3At‹i† ™;ƒ‡̃î©y₫§qüƯ»-áQ=n˜§rh¸Ï߉…tzjeä‚—0 ‰¿›ƒ–uóYÄÚÓ¬f oPfdå₫NÏÀưt₫‘˜‚0Ïèè/°f&¡Æ•¿ÅI9vÓêø|ú:ç¬ÊA0–¾5¡`WŒ“½RÎÇÅKyVÀj±„¯¢ƒ}s‹Lx'¯̣¥ÁĂ2_–™Û¬|‚¼'EÀÚÔÙONlfm·jÛ%i !y’‘Äă7\5̉ÉøD2Àm3Dà8à¡oe‚9̣0SCDÀ;bÎÉf,[j¢á"+L9Îs0ä#§+{„D9¹x̀1;ï.1EQÛ0/q5K¥wx¬.“E$Ç{VíñC8úºĐ¡,¤̀¨›™}5tÉÊaƒø \£ø£EJÓÈβ‹PA»æÉ̀2‘ †ÄṢ̀•·³”¶¼=q›4¾î°›ưỆ3ëóP2r·“9hwgä 0bĐ-©÷}ÂÁ,üÂc¬›7̣÷r]g.…&G§/Üq$ÆŒÍ̉ÁÖ7́_9àÀ¯¡f&¨ÎÈ̀µ/7ØYëløá| 7x&r̉âÁN@ÎA9"è­ˆ¶÷Y½0‹he Y¿Ă·"¨Vt°“Ä–ûlR…‡ £ØIàỢè•L!“Lâ¿7°úö3æpoÛG}²÷ûSÀĐˆ̃%eß±Y0ï‰å₫¾Χ„a¼°•ƒüˆQlUp̃y±†ăGèMg2oØc§„ôJwvf‰ eGU ¼ĐWƒ÷ÉÈöư¿;ê¦Å$bÈĐ'Ó¨–QtZMË(ÓDHnÚÖÀ© ưœk¤`æ%dâÎqiѶ-±!ĂS‹r²>a²6ÓXTI"kü弿₫åÓß±•²öV«¸f¬ B{.œƯ±ưÙé4Æ)‰₫̣E, ǃq”́÷%Ås™qœ9AÎ̉*²'B†ö‹É†a»2îy4h®K N¨híQö[(¬>3TnjÚ´)¿9¨‚à:+;½0\á§üP¸ơB”?Ôkœ4¦$ tÎC§eæ”hpæó½đá”ÚÁ¼Û“‘-›¯+%‚Đ̀¡•P§UÜ£Ư*›IU¾}™%à>ñ™́­R­X(mC$¤kÄAÎcæ¼ sc=6f’à1 SŸ B¬FÔ®-_x«ñ-vE°r²d°K57nB —îmfRÇ>´ÀÎÁLM«LÇ=w±Ø1R3 ¥5Øœ2ú {1Xפ„‰)k~]ä́Ăf™p䯓I˜fXM U‚F+ ·ƒ…¬WG CàúŶ)¦_Ÿ̀¼Z{μ$”„rªO>₫Ưë‘ơ0t1ăÁWó 2y˽ֺ|ct1¸`Ôç4¯ù Ø̀@§Eă†q^ (€k½O„TÓ’?‘ÄÆú€£ơ9̣VsÔú•ô¨xỮÿíº”î_•û/H>dR¯?¹øú^{~dÉF}&( ™ø¤&Ú?‘÷‘D́?Üûô æZûá›7W‰#,ÏBÛMŒµ?"/I8ß„Ay—¬_•ăw’}ămh™Ut'·H{`Ƚ•Uë·²Êçä!kÁ†0]†‰¹́|å€*÷Ès|­:ª…ºĐ¦;Ó>I——È£«vL¶FEE=—JÁ7„«Øí“+ùR"_üàRæaÄVRɪâ’öñ„t¦sÄ£ÖT̉¸w%enơ´ œ,‚Wa$ăe&¾}o•¦AL™¼ơ8ͯ 6G "xP«]åâç5ơO!ơè—™†^P°CÎn]₫r Àc@V'.ÊHY`ëT @ [4 ®Ü“Zó S¬ù&Ê-7/Œi`f±³ª¡×9Đăù{v#˜èåàƠny0ȈÏ7đ@à)…O·2;2“•ÀἉ 1vỎ̃2æQ¾«K²ü3E}䥳lí¥CÎÿÁ̉¸Ú¯¯º‘«ö¦ ÜÁCÏ?‘¤¹¥&„ ¬ĐÓ kZ„)Y†neâ™?Ïg(àÉăsn/ZWû ²X"(zå×7XŸ;‰Cyk†"kp~nËĂ4iy™E Ù‰œÿ#€ïÇ„S"ªÑA›¹7ă,|3ƇâuNffÔ`0e€c.Xç%Å'̃A‚‹<óá¡]!•(ùGÊđëb~ endstream endobj 844 0 obj << /Length 3197 /Filter /FlateDecode >> stream xÚƯZKä¶¾ï¯ø50Ưѳ%9'Lj ÆÂ°×‡ Î#±{èí–:¤äƯù÷®)ªG»Ùs° 4Y$‹¬ªUÅ̉d)üËêü¡nCSÔƯơMJT{~àÆÏß¿Éd̃&÷æ¯ßUƠC–Ú´Í̃bVïú‡'ßÜn»}̃$zèÍÇƯ¾(䛯ù÷û·¿b£L¾×ƒ¶êÂÔŸæ§‹é¸ư£éôà40ÈÚ:Ṃăî?ï₫ùæ謁:Teñ…§÷³ÿ‡YV@üxH«’¥pº›̀8 $yRóê{ƒD¦Dy¯ h B£ "ÏGØ·=ä¹øS¼ưM̉×›¹(qJ@ ëßâÅñ•·Gb„́™éYÖ̉M£¦CܲđÈl•fè5^‰ư¸f”áHœ)"…‹ưl–ƒV(ú†Ÿü…OÉ!ËÍAM3¹(hë8Ôq%-̉L| PÖ:–‰^V:–HBôå|ØU~6 q#ü?™!°"Ea‹| lù è.·œ-b ‚Öi´Wn)₫¹({&uCûÆGü7äˆ:Êè8¬’„ăe¾j>­†Ư4ZpákđÉpÆ3»ễ̀aGÇÄb ¡Ù N÷·¬(ƠùŒAg̉_q|2÷l JŒ`>”…fµ›/“Î~Å`Íù™î®„V+ù¢BX/»L¹˜«‘ÁpƠuäV8&f¨… Ë\Ø_à0Ă¾û„­̉Ç)hÄ"eÉ_dºSi>q à@ +ñ ÇY1‚d₫0ưŒ̃H6W»q…°/ë6ùaè.3…Ÿ )è¨Gºđű}}áq̀ïÀ=²xä×Û“9ÄóØÈ…€F§f'S&I 8-h$Ô·‰ºƯ(ĐRă~đ18²˜ Œ^y øÅp@"«Ă±©Ö!̣(!̣ÛqXđBCoÇaÿ øåNbów;@=ÜHÇ,Wåÿ¢)3ûªBF‚NƠïQ'ú%R³¥₫v•ä,ê2|üH °vS`úïEá7°5ƒËµwê¤dSø $Gu¼wém-P¨·@₫‡Îmz¨| –miÜQ7r«[)i¥\Àă;Wp{«U¯.2̣íháî3Æá°º7¶EP>†Ö$è§đOh!L‚­“!Ï£ßq4Eđr:Äé:a »¯i“êĐfwxP›m+öhŨỤ»&k¶-[³fkB× p¬2+É1ăÍQ†ơÁ†7„¶2YñâÛ3Ñtä:`ÚÖ̀¼_“ü–V©AÁª-8 ¹ñêè#m®ăD™Ö'€m†‡É!9ï­àƠ`.›µƒäu¼*k|ÚÍѧv›Ún\?•XĂÛ§€€åŸÎt×4Ï€¢7ä:§ñ?/`tbá`…ΦX¡ºÚH膹¤ ÍÎ]Å?>‹ăùäg}Zˆ ?°!Vˆ̉y*ÊZ. …™Acẳ•œ}Ö.Óî´JC¤qœ́ø÷ùbxЦ4G¡%/ÈOÑéxÚ–ŸÚtSáâp{í¦jŸäb‹ ·Åê†Â£5ÑBÅ?đ”ídUkđ£g*ÙL-å JHÙ•ƒ*Eŕw£›¸E–Î*€Wo!,Ȥ$NÆ mÍaK!˜Đ°ûÉÊ Úê.Ÿ˜7:i„J—5|Ó€ˆ0̀†9*ƒăqK¢¡Eé̀í¤éqÆx²£„%x½P̃øpLmH2ẉe'CÙs”˦u»&ƯV0Aơ‰Bé „gá Ă#ÀđËg­=– «KNj_.9tå+a…¬4¶Å/ør >2“ºZI-}ÖÁ¯ ’0¹j#CÔ‹!€Î†À¢$Ü3)JVèûP#X< y°AŸá«L5—Ù*´.¡¦±_è:å¨vËdŸ(Ăø0Êö[(ß̃Zn!Y×K‚-;`¢â|‰#@¼«üÛèilƒÜ~ ˆ}0Í_jÑ[n §x(~j´•mqxí¢ÜüÛØăÓÔ#ï³²w ÿ¾!¨!!‚Ze4—Í©!ôưMÆ6_<¢̣O¯9ƒƠ)]„>Tî:በ)“‘µè(ˆ‡¤{̀åEÉånJBSRº(Û(À₫ïl$¡Đƒ,Î-µú%…´Ùv Üp>²ºLEĂEkóÄ©« Eo•íÚ¾ç3VƯ¼ƒË‹J–cK”…£\ ạ̊=öO³• cGif¶<‡i •2s_ÊD’EXa (77#ªqæ†(›^9‹¼2z)IÛĐ×ơ)oW.· …‚ï?œ˜eX!ꑲ῀÷–,T`«¸,[ƠQ́À¼Œÿ‡—đ qíß¿Ơö# W€2`9?«¨N©I1JÙ—ô†ñà»̃ûxvd,.IñcÖ¯¸Êđô-W©LRÙÈöÜÄ´™XpôæQ$LSfǤ­ ‡‹È8p°>€%sïqüM£MïKuä‘ñUI…¿[<9,?Nz€·/­`€4·¸éï[S®}"7]Çf’ú'`î^óÂ1—M#¾›(z„‚,9lÉñsô™°„ïÉKø̣Á%J¤ÄÆÇ‘gÈïd2»¡¢̃ŒÏH÷û“ Ăwé1_ÔŒ¬&EÓdP–mÏâÁñằ¸$H´¹ö_øjTüYÏ8ŸŒ…¯xPŸåä´đo¬Bs°NüDD|íB÷₫#Üä?»`9½,u"qÍüéüÜƠ;·­üV—ù,Ö¸ÊHg Ÿ[W™Çxp‹₫đÀ£Uù*ƒ—’Te1ù¿Ï¡úÏ|½++ÿ•@‹]Q…•â[Å5]ü¤4÷H‰̣C²t‹o}'s¯¯U«4»”Á¯₫ˆÅ ÆDă3­e?IÈ7“à{Ă«ưµ$¶ƒ.]´6匾¸‰¾oBûGód•ơùs™–₫ă(Œ‘®'n‡†®\ùi”Û¶éæ»±ơ€iÓû¢[úù8íáµøĐè]ö ¾ úö+}HÇ̃OVî*T¾b¿@¢ .*&¿!…àæ«Ÿw³ 5©Y|ơÈÏ’øs%̀ºj5È&ËßJ@g‚€a'X₫ámưqÊvÙ߇öÉç Gÿm”̃Ø¥ÜåˆoX{å‡RåKÜQ|-’> stream xÚZYoäÆ~ß_!ø‰V oÎ8Oë$6ØĂ–qZdSÓY9á±ÚͯOU}Ơ¬0¿yzó‡o³́. á1º{ª×[=Uwÿ ̃].÷ñ!°må>Ư?$I¼û¿ß½ÿ•?̉à;ÛÚ̃4€₫4=7®Ä÷®´í`iƒèX„A\Üÿëé¯o₫̣4_(‹³Ç,M~çí=öÿ!á˜<æDG₫f)ˆ΅à^Z[Ñ­8èz₫‚¡kR®-» .ËŒ®k=üx0vüT¯ ´MăÚ—Çû‡,;ß+~eGÛŸ]K3¼́x²z°®¿ô°¶ÊnđŸˆæ‡(yŒ²D”];LgÙă¸]üö₫! ó ê¦ç± ”f°>‡“iÏ&à½%|"*@\‹ßÚ0T¦:=°«ußn"¡¿X¢<ĂàÛûC2ăv1ưèÊ©1ư†³¥>>é:¥uóụ̀ƒÏø6øYí)ăi°=ÑŸư¿EIÚvư™ˆư³èV:Yï g<¦" ƒ²1Ă€OfYœFJjáeg|ÓWƯ¢†´Åa4ă´?n™@cf‚¢öÛ£ç%¢«Æó“,jÆx=‘µø´œ±CßúÄ$ÉôD₫2dëtÎtOz-ŒO’œ§‡·ǿÏ~RGR ~F´0Q0†å=+L‹ƠáHƯRˆbĐZ‡HÓ, ̃ƯÎlO1;º¸2­0YÖIXNÀµÀx,æ@¿‹a‡±^l½Å¼₫dà Ó3É–üIŒN˜V6Û—Î4¢ÎGP5 cO€=0ó̉( Ú®}X®Ïå}Ê,kqa“³GÂWo/ä,@Bt- 4̉€ư§û-Œ̉R¯đYÉôøơ¼û0ˆ̉}ÅÚˆĐ#dÅólÔ߷ı¦ñ₫8‹ÉÏÖlè ø!‰ºđ ¾‡~~…‚̉̀O+ëälM;(¶Póƒ3‰Ro#Ú›óơJ[M½ơP3bï₫kv}\3Γàƒ8³Ï¼,. gN®Ăn!€̃₫gr½p &À Äa ¶0ºº"$d:¶œØjxà…"̣²ºÅG¦“< 4è-jƯ?¿N«v{E<øàơ¿p}Ixđ<'ØOWú ê¾;ËpsKêñỜ§A€?u=É®¤£œD,Á!ftS_r )͈~4_”đƒ~»ơ3́sµ›4*6¾ê-Ù´°Ô+W|âyuTåÔ˜ø»¥ÖƯ±'?h”j¸+V9Áêä<èƯËiö₫ùu*¤¦9P€Q3Î3‘ä¹r$ÇUxúŸ{&0èÊyĐœˆˆ‘ù¤œĐN»\ïB9¤»¸9Éb½ƒJ«×ßqbÏ0z÷Ÿk>B X|ûÂ’,“dư ₫ª`[9{pns¥‘~)¨Đ)¯hpÅ}•´)Xoz³dlE{G¬{Q¼¬̃÷ƒyđ‹8Á/Ôkóa[”4;̣æC5b¨z=Züc¬…DX LIÙËÅ´Îïø¬lÅ–µ ă€̀ÑOÜv|3é₫r‘[íBx´çEÂdfŒFʶÀIÍ/˜d¸ Ö:M×̉bí]hÆ­i5Kf(]£¯3Zfz;×̃‹X=̣Ù5nVªT54ÍçĐ½„®=Jø‹C“ôÀrILÙ"é`±ÜÔ›h:ûúÚCXGÅ7ñÀ~2çKĂ)uZdËúÅQ̣Hœ7Ÿså¼Ó…"a2³Ú~æí₫ö#kđ®£—0·‚e ä=ôËY«®«ûJ•²N¤PzV Rđ•øÍä÷1¿ăp²›‡Mœƒ<̉÷‘ó%ùŸo‹”_›(]?*Äö©7¢™>j³¾7z¼(•Ó:Ưiu1a“ÊŒVk‰ÚO-FV Z<'f±/>æ¸m[Àwr0ír%í¸ˆ–ʼđ5&}lœ/ç¼ä1ơ~j|¬°¡©üµƠT†HqZl‹Së´Đƒk@-ư6ó-¢ÀÔl²XÂ!w$È&JExífY¹Öb́ûR³EnätÇÇ^÷Ô„¾nBœ0'¢i!Q÷€¨›æ+Eă)©lđi0»ëg(Gt†\¤3+=AƠ?–ÓyU đG $´·e°Ñ£G ¿æVz>W’Lƒ˜qyn$;+4];øt­Đ+ˆ<­ :c‚̣mOSLŸO†Âg•ÅI¼H½9¦Z=rIÖ¥áÂgSŸîơ^:½º Àƒ/Û÷dSûZij/F\ÓR°·ĐÎ̃U·$™‹ª’́=…4‰yGVÖüm•¶à6jNí«ªr̀SßMâ8@I怵{K¹C²YF^×›úÙI>|°®Đç­ƒ~"JR SÍ:µ:ø̣t»Bœ†̀9…̀}₫äÍ¡'Άٳ£ öSi/#Üù®Ù4¥CÀ»GÎús×{H­rqo(ÙÄe#iÁç[²Ö_±P¥›ñ~kÎɱ²î5uXb_iÄi ©”û½Â(½ôæ Lßu³U| ¤‘Ô¥7ÍH`–m»éå¤'©n úªƯŒ4s©üÈc;ƯC¥ÀÊ«­a·=ź§qÉv Ÿ,àËj`Ö0ˆ,™RÛÆUúz_*.$¸™ojÄø_9¡§ă¹’Ä•Xxï[±`;ÉØ%l·ø̉î¿—p~«Jˆa¾4BĂ¥ ½:•4ÁQK£õY²Íđ‹Àƒ%|T£ÍAß3ÈẠ̈n`Đe×ÔèÙÏÓèW(¢]4fG(‹₫$Ü Ả§&Âôµè ÎlCỤ́rơçM3'ó‚'‰|xä°O^¨₫!/~ƒY₫Üáì~ëc£ÚñnL ¨(IÍ™·8̉„Ăç†Kh#¬…€³ÅËn.j\x5Ă9iƠm‘IÄRă…%#Ÿ€¹ÚkÂÆÑ ´̉hSơÅá`ŒÈ£öƯ…Èí6A/>I×ÊÄ2Đ®̃µù÷’p̣,ü’…”'ÎÖÊLÿÈ‘­Êw4e¶Æ¯ö›ÈWÎ^K²çØ¿Ê3’F3wäȪ̉:àçÆ‘0p‘À­ ,<§7ÂE«tM¤}ćúđœ/ ±¼Jæûæ.`SÉ´¼Ö~‘ư™ Λ|l}ˆÏÇ’ü‹/̉_Œêøy‡¯eiöxŒ®²J£ éŸƯ@/ÚÖç$×Í ™B§ACØăŒß8ß›ÙÇ:©RYÚóc6”xK»èƒÑ:ạ̊4Çú|ÂIj¥Q¦YU[mÓåEÎQ®éy ~ܰésúd=¤vä–7ÏÊ›ŸÅ]Î xyGíQơ,=uôÜ  …-b‹ ” ä—$yb́†"tƒ)êXÑ´—ßéP»ø#½Súµ/dû;ßüƒ3G|®(›}ơ•~Î*½àƯÆĐ̀¸!Ͻ÷7dxå†K£văÿ£$^YH<ûó*CÿZfüÿɺ™ÿø·ư_¡ÿn@ï( endstream endobj 852 0 obj << /Length 2975 /Filter /FlateDecode >> stream xÚÙăÆñ}¿b' X)l̃Ê>M®uÇ0ŒÉCÍCƠÚi˜"å&5ăưûÔƠ%Nb,0́ª®¾ê®̉ª‡ ₫©‡&hÚbßÍCw₫Ö}}àÁOŸ?(¡Ûá.¡üăÓ‡ßÿµªT¶?dơđtJ·z:>ü{óx¹lwy»1ĂÑ₫ºƯE±yü?ÿđO”›Ïf0N÷ŒưñúÜÛÇßÛÎ “ Ô¡É6y»ưÏÓß?üå)\¨Ê«}U¿ñöúÿ(“·Ü=åëp Évª̃ç ¾jömÙ2ơQdö½=‹Ạ̀¶à£ppdpBVăàBºggz€G9Vàq2£{øôùƠ“ÂΣe_}_"’hóx`Úx̃«Í'¤O||xª—q̣T#Oư³éz;đ[«l3£TÀO§=ß jøBàÄđu8Ç”³ÓGC⦙„ùÆó ˆ®pÍ omx‚ßi< †¶abbèt^7qw@Ü©kx%Ù₫dÜ+p“¥LK>ñD`C±¯êrɆ“°á§h39©+œ:tbŸ¹˜N÷tÜÔ?‹e3z82i” `y]%¦˜“}xÓAü³×\80€4ƽ½Œ¼¬‡óÁ¿åVƠÉŒF́‰‘ô%«2fXƯ¼B<á_Épƒù5›?̀ØÖ+¿Ùù…Gp)̉ §»ùểÓt=_f¿Göè­~¶½7™ÔbÅû 2Q÷ú³Î^¬øÔ‹ĂA4 ¨<»ˆ{7%,çư&ÙñîÆ´SzcD-œ<÷ßx=£Y7hÖŒ€=ÖnÿB¨w‰m£J’j ^TcÏZ™«} s49{̣¨ ¸peÇĂ/qÑA™,K›'ơñhñ̃ZÖÀÏ“L9¡'OŒ–r±ù¢̣tuñH³³½ÿwŒB³ăf'xï^ÏF‹ïhâ§Z0ÄmB̀*·»²È6 ñd àiΠ艿¬ûW&udh‘™U–U¡ŸyH4€‹v3oÀ·‚%̃ _ÛAÔL9Œ3ÚơP' ̉O[¯QE *13ÆN qc 9qf½q#đsblÈT­ûÑï.f#-K@˜wO ¸Ù ÇV¥rü¸ö–ÈƯC Î!XO +ÏÉçͧ¢{s#Lj₫ô!é²#;•îzin˜îWñî|ƒpwF-x|e¯ơÍÆxóĂä7èŒÏW.à{IhW+Nè“¢m ²ß‡*£n«¥,ZI¯Ÿ9:P6½÷¹üƯ‚!!yÜJ%́ƪ`œyN뢿»$VTIq{‚kËÍJGî3LD[Gˆ'+'ĂJ}ê¿…³‘o¯p„øL,n$TßWD)a¸Q•íæqµ¨ ă3 d|[*’ oñ~0°Ií„4qêV¢]›đA°²7‡8áÁhăIKkLè)ïÄ+]碘[¿®™³ˆ’rKåƯc(­‹ă,<€9Ô`¨ƯJ₫̉äIÔ(*ḾĐơ×#;@…”‹“^€̣11Ä+xINp£TơNî ²rb:h…°ÁE—*¥wêŒT kŸ¥Ç‘"̣»‘k^vÊkYđx'nÏ|£,àÊ©$ôB¨ÏÇ:¾çñ«ûĐj¥íÓúFI¢Èº…2@1m‚['x0E¶Ưµ×² /ÄíµT$ÈƠÂö؋ʋZU˜¨CjçƯQÅ•¦–r¦Cª1‘kîÉsàêDD¶au„f~,QÛó́Ç*¹)2Ô+[ĂkÓ¥̃̀º Ó9e^r´¡ XEƠxZ¤æ^¸,¿GEo}æ·"U z ÏÅe¨t”Ø:=óF#Ú¿w=iÛO²r|/̀’ÑIBÑâtR+ʘ]bD¡ Gͽ ´_xK*ù&1g} âØ]nêŒáćéa(9Í>v„;t ̣$ÜñŒÎ¤û#W¡‰×i J$­ÁºâT¼Zêw]®±É‚ÊÀ˜]d¹ÔeÜjM ¼âÄ+̃IáVŪ±f$5ê¾L ÇÜ1ç/"9qƒA"9½ä–%‡Ø´É0‰Œ”Ï—:Ho§›½ñnZÍßgK}º6K‹ólƒ ¬9 JÉØâéËj=£6™¤€rE¾xK̃o˜§52N£Iß5íú`É,Qœ 1ÁƯå¡lÆÑ½4î=‹æ£$L> ¾5÷2VŸ. jÅ0M‘1ejE4Œ2Um2>`"eI< ¶Ă ơj,ºÉ´̉ü?83ä#̉X°M¢TID ©÷dÑʘđ2ˆ!2O3­ˆ€ºtØ^tÚ(¸˜èVA­¼‹¥à ©àá&X\ĂA%nñ3„CèËÀ(fjµj¨²LÖùư1…‘¸#Ëî,‘R!˜áæP/%đ5>Ñm̃ó:0ưEĐÔƯĂ,h±Ñ/ĐăäÈ€Qtô{V ¹yăAp«”w"æ$-ô»^§èă¤Ï¡ï»ÍEà0uç»p°!ønÍpá±Ăt\¾rü«¹WïË“·´ï˜ÿ˜.ûậO¤¿¡ÚÈ}«4§^ë̀Bˆú̉H×q™Ó¯P’Í"¸«‚@üB×€º[ÉóT1L\e‘æ÷Wé₫ç(Hót¿&Ç¡ƒt^;zV…ZA²Jie5ç‚I'¤ñƠQ–vB’.¿éÀùùŸ¡~{ÓËT1e}3jøMÀ>ĂâKN¼B—°cHtܸƯ<îÖ$Û…4¢ÂœPâ`áë|ᔪµ"^â'̣¡̃₫L$ov²EKt`±í/è6­ó»å¤hkà`ÿ“¾ Çîô÷Ë I~D~8ô Ñá9™ŒiBV.Û£ßh”ÉX'âÂQN\Ô‰ˆ1nŒÎŒ[c€ô ±ªqOüóJ¡ Úùß}6¹N¨02µ Áœ·#щ¿Ñ@~ ¾"‹> stream xÚËră¸ñ>_ạ́%t•åđbn“dwj’­­©sHer€%HB† Híưúô ¨¡³[®2F£4ú e7)üe7U~Sí‡]QỨÛw)AƯ醿|x— ̃7æŸßưñDz¼É̉‡:­³›ÇcLêñpóïäưår·Éw‰éöånSẸ₫Oüưđó?±¡’¦3N7 ư4=5vÏíŸ́̃tƒY]¥I^ßưçñoï~x *ọ́¡TÅïܽÇ₫Í#<¨-üß>¤¥âSÀèƯf»M“÷ÓØ·z\nĐv'>Hdđ_û;8̣s7ŒÎè–Ç~1{{±¦Ă‘qxÀ“ÜäÙC¦n6YơÖ[^é½GŒ3LÚm“Ѷ†[¯í'î́{"ó ÿ™W†i?48s`à3Mv_î¡[×Éx¢.̃“ñÔMC”KÄü,±w®3DK–Iăo aG×·t¶ÎUÎƠüAÔApfÀÑ8G'BˆÈâèú†¨DB¦ôî¤;û«F"p%ªÂËá!¸Í—‡Q˾Y pZØ(= fHká·3H”H„nç›=đf‘H'øW{&¶Æ~Œ:»©`Ó+̣í…‘U䛸¢ä9©eµPKójÉ=¤©Áƒa‡Ôˆ Áë›DXt=(́y™˜Ù|ä,F1z/_R&W4Vo!ÜûlÙ¹ÇFMÆẠ̀9̉<°ï/^ƶ"[15D œÁ ÿ"€=_“­aEPmaăˆ‘ñQfÆ+T~¯œ)päÈè,…‹3X{HaSĐ€,ónkrÖF!T́û©Đɲeä̃Ԍభ,ôÍö“_V;}rúrÆ{ËTriüˆft0“g6Ë+ÆïÎȵ}<à ç ₫̉»ÈF±. üưäÈ Éu!l„kñó"é„̃%…d̉ß*í@¸‡7É q¿ÄAÄÙÔF<1Ø{\»¦Œpq/ g-¦Ïüơ{̉œ̀cĆÜđĐwZ̀3(Óç4+zçưđ•ơö“—»¤Ơ"ÖyY³ƠG¨m=ó Ø` Úq‚ă:8‹ă>ʳ¤N£ămá—ư" ˜nÂSĂû@¨ ïfqù'´áp¡#Úádp²­k¼ÂƯ —™w%Đ}_•üHg$ó¢Á]’Ñ8¡À́°3„Æ‚-Đü™Cè§èz&ÿt3ây^ïv*‘Q¿‹‰M6nÚ̀ZÏÍwỳË[b„.X}fáNXáΑÈ`"ƒû8øđ+›‰;³ˆ@‡E¶³à¿FÙEïpôsZ¦¶Û7ÓaƠö²–‚ +đ²Ô|³o´mǸÁ~̣†*%¬v<»JÚàó0ÙÖÍd¬ì)¬#>Ẃø"¨s„đúa… ¼Ö£u‰›ăđ¬ú‹ÅPătÏư ç{VÈÁ4ÍÜëQ= quˆ¦Í̉©?‹2d ø ödn°ưÉơpÓm<©ˆÎˆ¦†EÖ‰ó.ÇÛ‘íĂf%PÏ2I >‘ø¿Ù¿Çe*ÊB̀dŸ Üv·<Â"GWïPgO@às߈˜V́•iÊ4!²₫Ơ‰‰…¿B™ö–—ælƒhWQvÖ’J,4<߾׳^”D³$Ï~‚´­ăïóÙúH‘„l1_v¼’=éÁĐÁ„GÆ̀#ÎÚ4xm¢­–d0gñ°°à¯Á﯈éÊ¥°°Wwè^o׃môuåÊ*¦œ½£ --4 ) f ·ØÙJPzßFglÉ6)¬„!öĂe™7~́ÉË=´ß‘®‚–OA y6âÏ0&mÀ¡ĐàåSï¿N–bŹơ‚¸FG1#µ̉'k0À̉Cqv9h7Lc¶,2&VÚCß®¹€VwPJ ‘'lŒkíH6a³= .°È"#8¬ưÛ«“gc•‹ɼÑâ…ñ¯"₫êyQÊ}đ?H°N›Áñµ;8P†Z3©ÁÊ‘«0 ơwmŸö.9Y—'iú̀Ië»æ•´ÑBóu2”Ÿæ‘ñ“grrØ?Xjµg¿¶rbeåFh́)æ¿V4ˆ¸† m#¾L.DƒfÚV  ëº]fq-»onQ¸IeŒt̃\di‰p¿"a!jđ‰:©eåûU¯$M!̉±̉Üeơµ¨ Ëùq®/,„Î_Q\@‰Zêu>–‰–iơ s)§Ô4È+_Ă1î‡Ø/çœa]ßm̀ pr̀”[yĂƯíÁĂV"½ÍÑĂ”bă†ư.âj>,Ëóßi±Èø¦œI^^/,)dZ¬MsJœbÔÿ…,¿€§Á·Pç%g“(…'pˆ ¢dj†ƯÈc>bƒBÚg QW#Å/”–¸øÅq‹/ÍÅ/xL)#ñPQ<#̣²®†́ïf5ŒEGÄÿ#séu FGp.TÛxæØÎÓƯb3dºÄâ’5&¢f.®på̃o¹G¢ ßZaǼ\0·â\r`R@߀V=R’¢—˜¢·`₫WĆV–ÆúḮEéüQÙ!«̉ơ-”,G̣^ª–kF\ƒÈ¤Èg¨Ÿ ûđ“W™wqÁ ¡­ÑƯ°DôͽùBˆH'ߥoG;0\§™đZ°n.ÎzÆs°ä V82¤—/ëvû­u±1R6#-Üca‡¢Éâ“ó«Ñ~j´ŒÄÏ~’!OXHºrÂûơ2ºQ~é…èµÜÆÑ«øï ·ËH|”_1ÿó‘l…'%'Œṃ“ƯKëÅϰåBD0/°̣a±H¹ ÆËùar½‚ªy¸z¨E˜»z¨w–’ û{ç¶Œ Ïboy¦w7ĐœU:g=›]±$å#J9?…fÁîâ@ă…Å›“7#éÑ“f<­gƒ–₫Ñáªj"GÈă"CÅÎÀ‹ƒWFY¸Ä|Å9”寔¿s%Eªbs“*´är®T:o[qq¿åå&wÀñ|IE­7rL•naă»'pFïOiN[Ă¯ö3¢­QưYeµœ†jïÈ>Øá)ä7¨áøÛöN 6”Ü$ó@gG„tf)ùëÏ ×âƒx#hyă˜‹̣^ Úüđ!“zÿæLu‘Æ3¼l³mĺáă· ù0͹°„?ø¥+ƯÉ;Đ^ˆ;#o‰Å®ö9.‡%øÁ̉ ù—ƯƠ‹sLM̀Tµ§yü³ˆ]œƠøè‡ ÙtVcç9RQyÚ0DŒÚORˆVùrPFËÏù M8µâg_•¯h‰Ê¿OP>§Sù¢´ rOb¡Â*vĐ!–+ÿ”Ú¾­¹äˆ*/ç 4̀<“K₫†(‚«„¥×ú”Ǫ=_æ‡s^¬R=§Ø”+p¦ở_$»ưƠ*\E·‹WPc¨L¥8?Kcâ7¥|8Q~o+¢EÄÛ<¼&–F³Ơ2É‚₫œ¨2‚T|·Ø¥ U©«_Û¬\û9sXj0W…I½c_ׂ5k!,¿=˜ë *€…楆Đ-̃DđWXÿíúA% endstream endobj 860 0 obj << /Length 3232 /Filter /FlateDecode >> stream xÚZKsÛF¾ûW¨r T%)xÜ›’(¶dY%1ë¤6{APD…¸iIûë÷ëÇ $»\%N÷4zfº{ú5Î|ü βđ,Ë£«<ÊÎÊí;Ÿ±Ưó™ ß¿ ”î„—åów?ü’$g5ógÁÙ|å²/Ï₫í]ïvç—aîUͲ~=¿Œ¢È»₫‡ü¾¿ÿ±÷¾jª®Øöá°ØÔ¥Œïê²jú ‚Yæ{‘₫Ÿù?ßỪ톒0¹Jâèwo¨¿r„Yt•â镟Äzl'¼]±¯sfO°ïm̀öh²îå÷Ï —u_vơ¶n}Û̃ÛwJ³̉_e°lE6úỉv¯$M¹9,•÷K½_ŸNÀưZñ}Ù’t3OáÖđñ^™–-íøó9QuÅsuA2„<.ƒè*H9à®k×ơ¢–o|W«d\½V]Y÷ µ« ]ªD­Ÿ”-LËÖmS-•¸1́èëhæ5msỳÏ*‰á»m;—3zjßëêç5k¡EN²_$Á ñ f¤^¯XÖúA\›Í›PX¨!^_ÆQîưqG^{©mA,”cĂêâP±cá7ÁBC Ét¦«tƠµƯ_±à‹7"ÂBăÓÅø¨ Ÿ¶Ùíu#„Ư·‚Æ…ªĂYŸ«­µ_B²Y ™~µ®»å4?+Hɽ3YÉG‹C_7U¯Ó¤8Ââ6́»zqØ×ÍóÔQúvÅK½Đœ ¡UÄ,ơ^Öđà¸Đˆ…mñ‹’  ÛæMç$ÿ®•JÏI8çœ.¾̉¶^÷«êu?bˆ9l§›°Æ¢Üןk+È\¬™~ÇB’a´ˆ ÂHÈv¥àU*q6s¥B ưÔhCW‹­Á÷Ê–Í‚>Ú"1œ̣àY³ËÊĆ¡ƠaCÂ˯«JºSUưÙ(4"É<˜¸–_@«®Ư ñ_̀\Ï,æ{‘“}ÜÈC<4€?ưÄ/đ'˜:ûV,½4UI^ŒàTïˆ̀́äØjÚ4+'âÉA›tđN¨xb3N“³ UJ» ¿Éx0uàè́v³-–ꯨàøZ¶}5a”̣) ‚úâs“˜ù/X@ î Ư¢«Ù[\ Y"¶H–~G2¬2i¯áI]¯ l»<”p€2;(Ûí®̃Ī ; }©÷o"M‰Gªẳ¹N »)" Ö3|X ¢5‹ptAjâ:TˆúB°|‡.[$`c‘Gÿ§»bÓRyCÂ>²Û s?]IÄkCßÏ®́ éb–¬pßÂ7«¡ëÀ‚Ë倹soK¿F ”áÂæ x¸óƒ¹µ…~[½R¾¢̀5=à ¸­÷vIëfxưínSWê/H,t‰.bÍÂgBR8;AXβZÑ)äµ´‚­›UWă]’˜ : Ú|Ç`n/œ’ƠB²™+ÄQ%đÀ°ËÅFidÇvi\3]‘Ά£°,m¦nâ‰q€W|ơ!ï½ bƠáL¾ Bd!)ní}+Ú~:t]¥±<$]¼tª₫{~¡Œ¥«ªe»Î.c5[rûA&™œ̃@‚%ÓrRBË!’0tá‰dC ^êe]©€X˜Ø‚/JÄɽ Û{¾ŒªxÆæeñ´®a´#‰¦¾æºbY—`Î4W¦{,‚INá,”\·îĐpAGÔ7!æD¿œß!̀ưĐ+g{zÄư~ĂÊzñ&á$›Àj ăĐY@Y4¦X`ĐÆ“Œ³Í0&;̉©#oHÈ!Ô·̣KW™¾Ü+ÜĂ÷«7ê-}tǾ‹¦jưæm´­N –M½~V~jñ6»ömv8~'đ5º;8 `ơÆÓP³y$!Ípy@ß.́Â&¯eÚ믒«₫{¨R59NF/ÿ²© ù=0®ê2ó^`øOè0A&Å×]"¦«×¯âdÆ—T?Ëdz„ »úŒC̉¶W” ơÈJ:²L#e»ÙT¥Ù™àºVHáf£ùáÄ9à‡³Ü[áβø ˜H\™Fí>×´C†|m2Êủ“Đ̀*„(_ë·”Bµƒ[’”Ÿ 3m³Qb‰˜êʉă˜=9_N‘•¢5ï(ËÔé·œ·d&u >SÓ$œ˜.Pƒéfù(¶<+å¨źªU'9 j¿uWq’•1̉Ü„œeéÉÜá¡cQM„ ơî –°ñï1A³´!u²´h®E6‘m¿­MsYf6íàú öp’%„i2\ñ0Í'üN,ôsƯsNI(vi¬¢'Œă«³Üq˜ZnzÍ%…é¶uÏé…̣•Œ659Ô¿t1ỬQâ±€§™*J≒&‰Ư¬II‹¥‚9™Ö̀P?5CeÚk~x‘à9̉'F}ˆú@ ê£4›ÑVoTo_;Tû%NÚKP!?(îŸ7Jàˆf)Ó ̉2 MÅX&ÇAçÖÊ®«z„-ƒ+Øl@<7dziˆÓOÂ$³nPÉ©&¹l`s9àAçùvâ—̣¶7åE+×̉ oI·síüåÁ¸¼W ô‘S̀"´JöG_ m*èêÔÚ:,8 “$qé§Í±À4Ç€ƱB[À”½»ß$̃´A请¨‚ˆ±‰¯¬ºFÜ&jS/B=©’®=Vp4RïẼ¿(TËeSN’PÏó-₫Í5Œ3M»ÍY™zOÜîÊl»Ë’âFăÖëYgv¤´~-@g¶L qÓ~`…‰¦z‘ă4zÁ°µ[G6b`Œc*®XSIƯ4Ͷ¨‡ToÇ¢_*}¶|dí˜>lÿ_đ&‰p¼IRå™St@ö‰̣«€£'÷uë®Ö~«]z­Mß<Öæ—ÉYX;”¸´ @({YËE²íÁVè]ÉôÍï´̣O7s™₫ôëͽ̀|¤ƒ íí“~ü4'×|ṂĐ…ïö^¿|Ô-Ñ£ù?L£ƒ endstream endobj 865 0 obj << /Length 2820 /Filter /FlateDecode >> stream xÚµY[oêH~?¿"'#%¾p;óDÀI¼C€±!Ùhgh‚µÆF¶ 'ÿ~êÖÆŸƯY­V‘âêêêêªêª¯ËƺjĂŸuƠ³¯z}Ḉ;½«Ơî[›¸ùûÁĂ7Kän@đ¦&y·øv{ßé\YmsĐXW‹M]Ơb}ơc¸ß·ń¾¡̉uü£uă81üÎχé ×xP©Ê£„¹óĂ[¯˜Ä+• Xƒ^Ûp¬Ö?ûæ-*ƒ:vḈ¸Î_´^KÿÙ?ºf»ă²₫ô j÷ŒÅ£ÇÄh6 ü‡Çg“±×²Œ äñp:¾LÏ`‘óVß5†A«ï ßÙyĐ‚ø̀đß³?ö.6’Ùô¼¸±ÓêXlÖC0|©¾müa9îơf?ü…™/₫âq¶\0÷¥eY6́ §‹WfÍîYn8Æo₫t|Í<Ï«‘₫û<đÂĐóüªÛ"zO|Vwz¯Ñd9†¨Éø¬b:bâ?ù ̉ƒÅLäØkTÀêx€¦[b:G­ÓEă"̣äQ¸F Q̃ùưµ»m<&îưÅ’Å7|Xçç4ZN†2=_óYè™<"k‘đÀ®Àk²'đĂßZ7n, ù¹˜É³uc¨¿/‡l&I¢™H̀½@Œ{NG"‡Fëy­«„sg|Ù ¿á¤^gK±?„́˜Œ/|Au=­N3tz̀Ø»÷F ÿÙ»æ1¨”đ…ạ́É;ÓhA©„ f5ŸÙp2ájŸz#8û+³B8O<üg$Ù̀À›ÓÙú©ĐFF³ @»fS“öÔ0-6ë¶8dë¦ ¦Lâ]\Feœ¥¬#Û°I½ÅPÈI\b>1XÛWe₫ƯíCRă³gxÏ̀ZN'”`ȼߗc¹{eîp>̃M<æO†äè Ï¢KÈbØO¯^ÈV°uC$_APeSơc\í¾Åơ¬há@+¸æÁ Ñ‹ÉJ^ ÉzEÈ́ËăŒơ?ÍÆđäßsµ'<@qΦÏ̃«LpÅ÷,ï1 ¨€ Æ dßÍPđÑö%î<~N| çהǨÙẈ´ăÔj¸c Ÿ8Ô^xÍÜ ÂxÇø̃Ô †‘ ç`†7̣+, đ™đÚ À”è@BÈ ÄtÚ_,aæ0Dî×`8GâŸrO¸Æ2‚¯€) ¾`–m°h¡áèRàziwÚµ€  A:Τ#§‚ồÙÆd†uà²ÅIJ$ s)áAêlœo8Í;pûPZSÈ`ÚFà1ÿh°ù¤h Fép̣₫T/§Ê„'eI}ƯâÑÆMc P_LnÛO,v ¯º¼üÉ2đDàg$ÜÖe¸- à%ä₫ɘ H§)ÊG̉F5ÚdÜIkçgQ±XRLù˜B¸–£Gæ0 0ÍƠÚ®º—uæî«¬à*µàPX-X6¦úôC¬ĐqĂùQê:rƒ!æÎ1GÀ;̀U¹¯ ×EP t(;zµi€yq̃ê Îû)Ê–*ßçª ïCµBfÁ\«ĂÏ(]ó4̃?P`÷:F¹Åö´×5Öq±J¢x§rÈ6̀?¢QGl ₫ûäÚE“ÚeT_àe”@hôeD³û …>pN±ä*JÓ¬d[ßc“ư’ŒZô´à_+QïØÛ=XưGÛr `bu¬¬²C^LÛ(IÄ™ư>ùdnÍ.GhơQo‰k;̀›¬Ñ*É JTś~Ä»¨T¸wüHåùVdÉ¡Tl,›Ä)g :”$[Xű|Vqu¾ "Å«,M9Íx|ŒË-Sœ<@̀ó́=v¨A×8¤‰*FPÜưYNÁL–ó3*Ăn¯÷tÅt÷«™.ăn¥1ÄƠ›¬²}]1)p´É®6™±lEvÈ…̃T¶đÊRTL·÷}ûÊrMÇíÚøº…ơÛ…ÿÓ¶å}ËĂØ̀$€ç€É¡ƒ t́c·êH9–9H¤³–ca® h™ÉZÎ-̉¸UøbIdkà˜§ç¯ȆåÑT‰.ñ»`WÎßñ´¦e÷O(̣‰q̀"~KDà@Áq:•¾jé̃ϯ›²“d\{ 7Gư8dkÂJñ­pf+Z4¹á$\§mĐ³&¾‹₫U“‹Eû&Wå‹lS2BPyˆÜqó6,${åÏT„VˆHä €¼̀ă7B2Nà+,²Ê(}×KÿÖˆ- ĂhVº¦ÓƠữ§^Ë1ÖôtÁ»X'ieb W*y:ñ"Úp:€¤^Ú`®®ÜÑÊayå¢r­!5ÔI“ƒ^̣•îWgN¶]VH:ë+'–¢ùp]ª‹ÄT?VÉ¡₫”óMXù«T®-²®§­«[Tl³C"R[ˆuT¿cIGÙän¢"öÀ9Ù‡ßh4¦æñû–̀ù……’8Ug69 Á_ϲX÷1¢Tuܪ\í rHJæÆ̉âl²Cºîö®úæ Ûu»́¾Ù''º=q‚¾™‰uHá¾ø„Bs¶BH~Ađ:s̉h'säüxËcµaºafÂ9̉ÅNṣ\gª“«f2½mº]y¡ÊöWY„ï,#l||ív²mXO ?U”_Z¬‰å{߈àß¶¥¢ ºjÑ?„ÉH…"Ơê;?ב Bâ†êÁ€X̃fbï.[ÇÈÊS·ƒáăÓ à¼U~qX%_wuO«9ú,K„₫,‹ưYéê³,Ù£=Fb«ä¤ß~fVµÏ}P¢!|̀Pꆯ™¡ _̉|¨œKÎO<ûd¹&Vpyf•¤Ưó$MMå„ûS */Œ¨@ư¿HÓ©JœâôÂøm¶¯Jë²q"Çñ&2pOC½‹§ ¶)âƠw`”¡G$^ä[đ¯Z5$úAöQể¬x·Obmô‘đ´ü¬âÿ5¢đ%–¾ÂV_`ëGQ}€¥¾j’i’iĂ úèJă꣫'olª!aÜ₫ké»9Ơ’NÀ5¼)ÆIÑx¼¯ºRơÅ@Gi4̀ƠJ4£€₫çÿ\k_#%̃üúđ´æ‹ôÓaóek¸$[ ¥.N±{€ÿ̃•íùÀrèç³sf{ÿ,›~W9çÔ`Ñëoj è–3è¼Ü…¼Ù–å₫ûííñx4ßÓƒ™åï· »^Ü^éZ–éö­33₫«–₫÷F]ê$£̀¦&®Ñ(¬5säÈäâ^K¿§ˆÍY¾«¾;@W"ß¶º…;µ=¾(̉-­¤wøÄnƒ{~•߯VØûá—"VeaûÉ?›Ơzˆ}$?¾IÛ°ƒ¼nlEéMŕĄ³x!wI?ÏsxyÄ)ư^ç€qg­³·̃ª“LÉ+`ö‡’y? r™­Ú[Óú®d5̣¡áI™‹j=_–ăTÍÑçQ³ôÔĂAXØ¿5\Ç¥/̉±ùÚ8=³Ûéë¾âÿÜ`Eü .2p endstream endobj 873 0 obj << /Length 1321 /Filter /FlateDecode >> stream xÚ•VmoÛ8 ₫̃_́K v,¿{ûÔ[±C±½‡âzÀ\[I„Ù–!+đ̣ïGă¼n‡±H‘/b3~l–³4 ½,Lgeså®ZÏhñ|Ŭœ ‚îḌnyµøÇ3æ{¹Ÿ³Ùr55µ¬f;·]7wƒ̀ám%~ÎƯ0 Ûô½ÿö‚‹È¹ç-WEMܧí{-JZ?ˆ’·=,O}' æÿ,ÿ¸ú¼ƒØ‹£đ7½ßKŸAÙ,ọ́$‰ó}/‰çÇXnD?Gu§Sr­†ˆR6Ụ̈¡7´º½ûóñáeùùá•èoôưëöùùöỤ̂ơ‘+©hQq]ˆÚÑ»Óê{?gÎFÖüµ‡Đ† ±vê×₫»RÜèåJ…â7DmE‹ÜZ²’¯‰ơ@̉WñJôZ‰÷­¶;B¹@lÛ[ %W€¤Ư‡î[ ÙöŸÎ‘°ÊëËÁ0`O3 ²îÅe‰ÇÆk“Q9›9dØ-u¤̃p-JL'Üd `ï‘ ïÖp25̀¢ØK³ «ä¦ßpÉ0đHr+|MvMtñ¸‹„¡²đÜ~ù›ö#ÔÙB>ÔƠH"â(Ma/:HÏN‰B[FW(Ư“\ …ñƯ ½$! ¡Çb›Pc%FpOp¢-F$m1zs7e™óˆöŒïVơ˜dQW€^ƒ¶l­\÷¤?¹ ØlÄn-u4‘ïÔ$ˆ¨Ä›ÏB®xK̀$RFy‚}îç.s^¾y‰Hä!ØÓ\­½Ă6c½Ûß­!0¢Hn±Ë PÑă…QA^É­&%Qóç‡CẠu…tBLï É¢î%­Ö\Óâ.¤xÓƠÆöQsĂeΛûbu$OÄ€Ræü°ôöKư†+0Áˆ'íQ}‰– ‰ oÏOœư1EK^»£­ç½X·ûCÎc!+eg”•¹̃̀±‘«øÙăm•u!À§ÈèBqarÖí̉3.·å%ïûB§<Êè/ó,röú Ú6ÑàV³ÛM-ˆ$ö_ =ó†–¦jQx,'# °ÙÊ€Úªw$=ª­d7–:¶-ˆéd{z°HzÎO‡WåË‚Yø^çàđ̣bØóü₫X`¦Ø1g:ÎöúîÄMä£îszŒ³Ñºû¸X Ăà­Û­'ƠzQS}÷‹S?#?‡±ùùïCv/}îƠQ›;5j¼¢‚x¥dâ´×‡,µ±eÉäƠÜñƠëL¶‚(\Q®ă¸F‘VjâÛljj„¦Ñ–RÙI¢ }Ú5ñ'µ Ôø @¶×Èq Z0̀1HÖó±0áÜRù+æwO­u°ùf²#³ O¿}WĐDËi»ïÊÔE„ÅăĐ%`»)¨–. å^˜ym kâ6¸‚&¸ÚÖ´kà /“](‹Z´?(Fq~Ư0°h`›wpß¾“p%!pa‡â#%¬¦ùgØV¦O ÈFœÔ¹4)°SI L’Ø;æhØÂ\ºêz‰RœM²,dlŒoS$ lÓÔ‚OE:rE"IœNi ƒôÎL`Ằ‹T¯³0ëˆq xÖÇ <Ïÿ£Ó́¥Ư‰ø…NsjôĐiđè_„Ig endstream endobj 973 0 obj << /Length 3916 /Filter /FlateDecode >> stream xÚíÍw7Àïù+t´~ 9³·4iÚôơuw»É^ÚTyœê­,§²Û´ÿư‚R„$¦iå½®Í×C‡ À/~€1ká?1³rf{ƠôÊÎ×/ÚíO7fÓÿ|ÿƠ áÇ]ÀÀ 4̣‹w/₫ö¦ëf¢m†v³wW³NèÆ(½“÷îröĂ™Rç?½ûæÅ—ïv’:Ù5V™jĂè#Ư½œ ÛHÑi§Ûư5¤iZ÷;§öíúrüĂiêFi#ƯÀ‹¶Ñä*Û(3}9“³¾ŒÙóƒèn‡iÔüçó 9œƯlî¼X4\ÊÆ‚ævù÷ó aÅô‹Üû¸ÿÏí”Ⱦm„ÛXƠˆ¾ÛRÁ€È@@àä—ưŸ`nÂóHÀ–æC%Ûđ‰îØ–¡QÚ³…&6Œ>̉¼¢M§†™Qª¤œTÁ’(ü ùírq~¡´:{;ÿ0ºÿ•gÿøư\ögăæ÷åøéĐA4ÚÚ§èQtcu73¢o4Àđp`¦ç/€0ûJ¶î”$/È”^'yé¬mŒñÉơU/‹ƠÍí˜ÈY ª9ë3ä¬ÎÈFt¶«ñná̃C¿Œ%A²mcá©gÅ…÷^9QÍĂ²%‡ F3p¡8‘h®»׉E¸jT]ƒ?r':¸º"$€„h/ÂRa[2 â4;ˆzÓ˜.0´zév¢S'Pb`E=4;éŒÇû¾ªƯó4S(¼ RÑ¢öƠ&7•†*“̃¿(¿̀ÙD×—¯Ç«ä&¢hk;ÍB])Ñô™$!4s~̀}Đ![r¨;ĐœÄN¶œ=ïo²ª›̃¸ÙÔoëÅỰf=Ơ–|?^›q½H,ắ°đôa$JL$Ô`ˆ¢_b‚%&àTEGáƒMÉÀçPq¨ëµßJø*'k}ï¸Wæ`†¹NùÊ”Pp¨Ô#ö“2…1÷$0lKŒf˜ˆIeIáè°r{ŒƒÛc|5÷«¼ÄN#Ô}¶CƯjôaó,g#  ÙÀabØ@¶ä°Áhvl´-̀¦bÊyu³¾½›¯·‰'±×Ç®¶NƠ3–uÁ¯åÄD418x 1È–bÍ@Œ€q:¼Cˆùn~=̃&æ6PƒiŸô¹AAđU1HIÁ^@h °-p.¦jw*û1N³Æ̣N/§i÷< +ĂR4$¥}µÉù1ènL¸-đuÎüøkWÓ¸]U­Æsq6•ꯦŸ\mW]đÓ›ơ|µ¼sôg¢€æ8ưS9!–U¦†ÂvåË*$€\V…1|å>6%‡F±K@0¯ĂY¸X¿»—Đ>đr:<°n;ơ|×ÚÁwåPD48@äZ›’Åâư\¢ZÛÀôÔôp¸1„Kké\¢ ̃øL÷öúăî"ÚöæO„gË̉m×¾?nÆÁ_B^ˆc®„ÔMo₫jơ°‡W…i”́¡–DCæ}ø 5<Ap¨dÊ ’º¶ˆmɸ¶ÈiVp²%à s ½§o‰Âë-øu'V)ÓH ÷ƠŒuơ?üÔÎ.á¿™¹™°™}Ú½ÁDă »V³¿øWBµ`÷Ú́ë^ĂQêåUz ç¹WNSdzÿ•“Đdâ 1d"[rÈd42;(3Ô~™¿\ÿH#ª¼ê•ŒÏw€¿cÀ‡¢´(€ Ç[ô$hÈ–ĐÍ4¨÷º@£w“¡`U×5Ú‰’—÷z9SQÍ-Ă²%‡)Fs`JÁN³Ñ‡L½}¼X¦¥¬T•Nϼ§Ë9hp8-91GpSº7ô#Gnÿ0±ë,VƠ÷!³ÚßÅÓ»µ(€†ÇÙ’ £9@‹?¶»êfXokÚ9ÑË̀{¼œ§(€æ ‡•á Ù’Ă£9đV ˜§Ô‹̀•Mơ’ëĂg×̃½åđD4<8† <È–xÍnĂ»Ob¯QĂ&sm ̣€œ[Œ @b³=lK6œæ€öˆ6Û±›Íơ<±.Óªî”$àăr‚¢ H† dKAŒæ@庈K0¸Ó<®Vß-–—‰RE϶XŒbÄ{±œ‘(€f‡J $#È–FÍ‘®‡k?3B,­t½v_6ñ¾,'%  IÁcHA¶äÂh¤è~»¸> %d”äƯ¯¶¶W¿vṇ̃n+‡"  ¡À±a @¶ä@ÁhP@1†î Å?ƯÍj׉6Rm%ëyVïÎrX¢3dK,Œæ‹;ÉDçYËm²m]kë‹æ±³ïër’¢$P†$dKIŒæ@ ÑƠ·ËŸ·u…ă&µ®î o]mü€,ä½[ÎN@³ƒCȰƒlÉa‡ÑØit0•^ Áe#ëf̀c³÷u9IQM(C²%‡$F³'I×Nï׫å5́î%rP%̉j¨“$ÁÅ $${±¢!Á¶d@Âi¸"Gtơ₫vܼ۶Z*Í̉Kí¶^sç™ñ^-g&  ™Á¡c˜A¶ä0Ăh̀@Ơ¢DÇM܉ºí{ª4ä^T@#…#+[)dKRŒæ€”ÛÛE‡P¹MääĐ=÷«»Øy–Đ€à81€ [ra4@ LP ă¦Œvr°;$êœ&Í÷f9+QÍ Ă ²%‡Fs`E»ú²—œnëKêáSïär„¢!I!dKBŒæ€T₫µèÜ)¿ŸÜĐ™g¨¼WÎF@³CİlÉaƒÑØ"^l¥Ăp‡«&—̉)÷t9GQÍ'Ă²%‡#FsàÈ}¯9ºM¾¥º®®¹‰¼Ë h‚p ‚-91APƯ‡o`‘Ư-¬mܹW|]NR@“„Ê„lÉ!‰Ñ́IRîƒ&á¸ă­ëƒ²Z¹5÷ö̉0ôDg—¾EÁÍü2¹‡«ÊưƯ<üĂ„ÏƒŸ=˜ÿüpLÄ’i“›’Ä¡âäås hi}Vû6ç̣ù·Ê}Û¤f G®Ư\.ƒ]@cçÇ܃2%;FqÈCđ²ê¬<¹ƒˆO¡7J²)ÆÔeHvE‘pG=éÏîÂåƯVÎD@3cC̃3Ǧä0Á(LH(Wr‰©GJè“#¹)vØ^Ÿy>=»Âd"ø­xÆ‚3–½à‚mG²%‡ Fs BÀÆƯ 2©H4?!:Ÿ¨¿Ôé&ơïƯÿåËÿ½Gô¿ẃaKF™’ÙÅÉ©‡ë᥌û|—3ơX/¨/;B<Q·`Nó‘ĐMU¶ªœ;$€ä.ŒI÷[ $aS2¸ăûŒ"áDƈÔạ̊öcºÛÍP«ơNú¾ q÷₫/‡+  áÂA¦áB¦äÀÅ(pA™§¡•̉b¹¾ºIÂå̃©®Ï—÷9\Q 2 2%.Fq€ ^r»O.­Ư›0Q2*¡~¨ư> \̃ÿåpE4\8ÈäD›’£8À½[e0\óTó%è×Ơ’äâmæeïír”¢%R%dJJŒâ€’€^_¡Ÿåzñi³LÎØE½asê½êàùr¬¢+^Cb…LÉÁQ°j¡ƯW§ö°J¦(èCP¿“Tpâëư\Q@C„ƒIC„LɈQ́!°]¬…؃èvá¶•~¯çÉ+C­cy .-æ yÙ‹É 6%ƒNqे6_æ¨7îaK^8{7n0T™Çµä…/fÛµóŸq7àƒé¾¬|>ho+x¶œÖ(€¦‡ÜSŦäĐÊ(´Â× ÜÖB­îSRœ‚V¬v±º¹ML÷\¡TåôœzŸ–sĐœâÀÑœ"Sr8eN ô+ëM&§0x°Ă)8Åj7·'Ê/·"î’G OüD±ü„ x²œÎ(€¦‡‹¦™’C'£8Đ Ÿ “Zg̉ ƒµ²§ «¥Î¹`ïX´ơ`"c‹%¸³Ñ(€FÇŒF™’ƒ(£8 Ûp6Ư‹( îs D±ZøÎ:ƠÑÖ(›>½ËÙŒh6q°h6‘)9l2›®?ÿî€ơ>6¥ûR>›X-° }}ˆOh×Ó–MïÇr6£M,²%6%‡MFq`SÀU‘»œ®Øù$Ëy¬ؤ¯̉Ă]ç®æÎœ×»wi9¦Q))2%SFqÀ~imî:¾uÜ'YÇcµÓ{¯ç‹̃>ͯî8đ)‡-  aẴ§aC¦äÀÆ(ö° ®°e®Åa¬•§Xc¥‘4î¿k„¤S}¯ÇÂ{ª½ø> stream xÚƠZßoÇ ~¿¿bÓ‡̀ 9¿ÈÀĐ$pQ Û~p‹eDƠ ’ Çÿ}?®hƯÉ«‹¥Û]y¸›Ù½~äGr†3{]sH¡«â¸´À¬¸F¿IÄ!kÅư îI¢PsC[Ck÷%ôVCmŒ{e…O‚O’ đ»J=ăFD„§ˆ€”5pMr!ܱ$tJ ¹r –w2:EVB̃{ Ê‘thB-âK0)§ñaÊ€`ë]¸˜5‚ŸL•6.flmm•1€LíÖé@ï¦\‡Á £ :6\t='2¬2à´̣L&<’‹ỉVrIvÏ“—¡I…ư‚¹Á6ÉX+Ït*6YRÀ¼À‚‘Yà6ĐÊî–R 8Pj…à'©…¡‚Ôé^á9ŒG§„‚[è@N¨Ñ0¼ —PóJi YàÏbA Xj„ÁÛˆ ïj²Øh*'hØ‚Ú FÖÁÀ^ö ¼PAêJmTHî-´JÖéBö°„ÖÍRđØ Y mÀ‚–=)̀-" .<…áRB/l@h¯°R¤!-Ö`vïf2\ÖƠXµ‹„@µ0ë¢Ƽâ“MU㱆Wµ¯Äíæ&m¦d#  ‚JS3”`“"º”!U‘"ZàAEîhEÀi§CEv(t]=y²Z?Ư]…'OÂú)\%ÈÁgè™̃m0¨––Ÿú}H9¿@¬̉§Èc¸Ë.¾ưvµ₫ñbûæùæ*¼ ëxÖ/6¿_…W+üdđ/>ođĂë·›Ơú{¨²9»ºYjĂWëg›Ëíû‹7›Ëa&nưsóË»×ßm/nT­‘»E'EÑW@{}`9 ;Êá¥M-ƒ~ÿ₫égø**F„³÷§§7Ê|‰‹}óoó²g₫-^¦s!)Î…Í~“¸°étV.vṼ˜£¹hc.ÊT.깸ă±Â=ÚDù Îç̉’ñ£cÎúTÎ₫¤¹D<â‚̉D.ˆ&sñ‰ ªc.̣T.ÊŸ4.d̀E{¤#.ú‚qq÷Ú{¬ù_ú?xéă®±u;ơåˆ3¶BíĐ‘˜"e}ÈÊ÷áÇøö́ư°ú¾{³9»Ü\–Á6s©g“mÚ¢ĐÇH¦:â:”́Èơº­wLÑH0uH´2'ȱbúo<\Ïê™{¨ƒÓøØ̣đ !²µ\¡NÆiñp}¬:ç'ïN·—Ûó“ë'¿†_Ÿ¾=?'Wÿ=} †Vƒ³„g®æ)œi×áziå,°û‘G†{ù_·ä-{›½-̃Vo›·Ư[ñÖå‘Ëó“-%—G.Ï«o%—G.ÏO<”\¹]ï%4»¼̣́¼üỌ̈́²ËË.Ï+ZÍ.¯¸¼ậËóºQ‹Ë+.¯¸<¯Ê´¸¼ậªËóGë­Z·÷à\))Úë"¼Vœ‰÷ ¢1ăe[Ă↠ÏƯ$üß¶/¶ûƠƒóË=1Ḱ0¹Q‹ óư &—X‡•sŒÉS!¯Í´9˜p~ñ ²6‰y˜æ–0Ó11µâå³ö˜“.‹™%â…ç³4èÀwS›gÂdööùd®1%YỒ̉qx³ç΂ûí;ÛL˜bßsgÁzƠÙ9fåˆW̉;̀*Đ—ÅDÙ̉e³à½Tm c¦X±ŸºÁ̀ :Đ²˜„ê°ïùå̃É-‹™pJ–véYp‰Ó·E1³öØxÏŸ)Gü­âǹ>¦`†ß-*Y9¢Z2£*ÛsgÆLH‡ÜÙçYȸw`́¨eÉ1HÏ™&[fdÊnéd¶ù~Qbñçœ́îr@ơĐ\;&)̣do®ÅŸq0ʲ˜‚<Ù[:ñ¯#T%Ëæ ₫_ƒuk@„ÀB™°hĐ"¨ä=;-„/S}9$B¨Ô=3B…ÛyRQ[f¶ÿ]a“-z³é¶÷Øẵm%Ï„i}”̣7˜=E¦¶,fEU‚íØ &öïX±ï ™ `B¦Ü`Ú¡L™ BĂvïÓ ]¥/`₫¬u₫· endstream endobj 1019 0 obj << /Length 3172 /Filter /FlateDecode >> stream xÚíKsÜÆÇïú{$„1̀#·Ä\v¥lÇf’ƒăC®dVÈ•L®Êñ·OÏb°ÓØE7[Cø .ÊU¶Lúßî₫yó„Zµđ—Zy½̣Á4ÁøƠơư«v÷Ó‡w«₫?|ơJåvĐđµüËå«/̃tƯJµMl£Z]¾Å¦.oV?}½¹YÿïüçËoVÖêÆ †v¿06ưôƠ_/÷Ö;Ư55BW†ÖG₫èUh¢svđF»¦íl/ºYo¯õ¿î­EßXwmµƯ™úéçvu¿ûfƠ6&¸Ơo»–÷+Ưx×ÁŸîV?¾úû± jÛ&„8V]on^¯wª_¼ ¨±iƯ™! :¿P^ơÿĐ£SOÿî³à€lăm·cb¡éàwMáoJï ÿÓ1< %ëPd—†x́Jl ¤ »Bc9´f…–ªƒvJ†¥J¨Û9°ÄªïÖÛ?Ÿëx¶Ư£©}£T· ‰~HCZOh1@óF\‘Ê'B[Û8ëe„BÛ0  Xự—DèÇÍ¿¼º>×á́—ơ1«Î6ªơ/‹U ¶zØ6œ6ä6F`sÑ4Ñʪ´‹p3G•©&Ú̃o·W›]§x̀Yéè ö†`U³‡ ́2B²‡]°Ç 'öàR[Y)Nm­™£§©°÷íƠưúñ@§ƠçG T@=PÅ 3 rE#œ€̣ºéŒ¬r¦¶̃̀Á₫yÜÙƠĂÄ«]l”?ơQÇí®¤ Aüt$ûç/ $Ç"»ø«–dù"a’QNL:£dauºiơ,«̃n~=¦QA×lÔ2ĐŒ3D9²ơ¤4©8} ©È ©Œr"µS .,ÇĐÖèYÊ1VRé‘qlZ³tŸÓPæ ÖCY ĐPâL1P"_$P2Ê JÛ6V K:´uz&±hạë×S‰¡1JŸ•‡9pơ4‡8; ‡È ‡Œr⺯…eÚF5KǪÄ4L™&Gư¢+:E]R=uÅMNC̣EB£œ¨SPô´ :hªƠ,$ ̀½¾½Ÿ\AñN/ÅxÇ>~ơ4aD)bX,HP¤e‰m*tÂ: mûéíç’ˆE{§j0¬o¶!œŒw9Zơà4y8% zÈ {Œ2À×XNÉojÚ9ïHu obvĐvM<‰Ơd‚»!NƠÜ!$w£d(Eq‡}pÇ)'î‚k¢l@ÜX¸mç(¿X¨{“¦ß?Ü_m';¾“Ă¡́#VÏß₫y?”†¾âˆ>Z6±çaKL++¸©ís1#M`難;ü>̃Ư}{}{3±lÎÅ EWJ=^ÅÍ<̣EB£œs°½¥–Uhëâ,e«öăY ~îEönj94ơ¨4j8₫ jÈ jŒrB ’d AËg)¤E³`6ôg}LÚ|¾›Y(¢v1¨çixœ¦©™aiï…„$R3qd¡SˆÂªmuœ$,Ú£ô}ˆ»zXỏ̃¨©-+0Ñú…oÊäèÔCV Đ˜á0 !_$¨1Ê 6c]‘6h c€9hĂª=mƒNhƯÉî¥P̀¡«G± QÄùaPD¾HPd”öđG‰Đ4„Y (ÿvûŸỮ–ơĂô$ˆ÷ö„'AúXƠ“·¥ƒá®8"Á–MÔ)ƠÄ ¬¶J7*̀Á¦G©»UféÿÆæĐƠSX Đâü(Mrˆ|‘€È('[Ơè ,ÅĐÖz7XPüÇæîö¦'ú¿₫;t<¾•zÊ2z†2ä‹„2F(³Ü— SSS?Ë₫Q,{\?\¦ÑÅïÎ/àS#đî×SÉ1ª&®ûñ/EXH=aÅM;C̣EB£œëB#<Ú˜:7K…E¢…¯×ë·ª»Ú®'gïb{/s96ơ¤íŸ§ACág8+H0£eeÖB̀ mœ¥Ă¢³7·S‹ °rÿ̉F 5¯u9dơô4~8/Êü!_$2ʉ@ă›Ö +)´ƠƯ,bU„à8Đâ~0zâx#n¹3Ưn¹ƒà1±Èb€&gAù"a’QNPÂÁÊJ·ñf· x(±*@É­|D»09Éda=“ÅÍ$N”²$“È “Œrb®^0KM™¥†#чơäU¥°?§ v©ß‚úƯ³Íưó4™(_ ˜Å —´lÂnǰ¹ÔÖͲáy¤ ›œaß o`†C/æÈáW ¬@èP}ưđ<{!ü¡Û₫ ¢«èËå¶tÅüS[́÷°Acæ` «k0ô¸úx·åîđ z¿˜Eâ}̃s êá*h¸p´UGÂ…|‘ÀÅ(p¥u-d ÚgƯµ‡ ©[Ó`̣̉ârû(‹fÆz2÷ÏÓ`¢L1\G$X̉²™Êt¼{jånÀ25ÏZº°É>₫¾¹¸v.¸åăO¿ 1­† )%Æû"àôP¾0 lc,Üj·CƠ§ÛÁÁ“¦‹yÜư] v®Œt«‹ƯUÊù£ï`S©¹¸»Ư¬Ïaœc`.—ŸêÓ!ïÖ¦è̉0™ón´LÑúdº̣óÈÀ1]"=]$\È \ŒđĐ Â X 'Ú¿Ûs®Î&¡-nYÍåF CZsxëÙ)hvpiv+vátk¨Akÿ‘Zû· -óâ5Ô¤>ơuoÿ<]öP’5 WqDÂÖXv²æu1-Êçrö½¤æ=±Âß \|Ọ̈ë€D`üÿŒ™̣M9èơ84O8³ PÈ QÊÓLÓk•_̃tdô¼‹ËüQG;“ä?§K+hs›§D¾Hd”‡n ̃ĂpỴÓëèÎ…2y÷•ƒ[N1@£ƒ3È ƒ|‘ Ă(èÀ§M'Y7qyÅÿjú¸ÖC³f¥A¦8"!†–ÍÀXxmÁHׯ£Y œ!¸ƠØ $7£ ̉à`_ä*O¾*YXƯÛws?J^•ä ÔÖ/'ahJ·ƒ†gtBÈMSnóMÈ MŒ̣ĐAM²*|âÚ²óîdëíS–#WÏE1@sÓ£5Ẹ́EÂ£×øIzÁßúï$<\å%¤{M'Vuà ®e듯˜ÙQ¹¿`Çl?é±3$vÜvüÿOç( endstream endobj 976 0 obj << /Type /ObjStm /N 100 /First 912 /Length 2116 /Filter /FlateDecode >> stream xÚµM·†ïó+xL.Y¬@0`GP. X:$tPäA`ÄØ V+Àù÷yk¦{¶Än–Éåpê!‹Åb‘^z*É‹$"A©©¶̉RcC鉅“SIƯĐ(‰£ƠdøçÔ’Wô#NT˜ON=EOH¬]5Qóèk‰z‰ÎH*¤Ö’H+%²Îµ&rEçÚR-†ÎèWkäÚchÑYRå1Ø̃ëuUDQñTƠĐ̉Jªæhi”Z‰QbVb¨­¥†ï£Â©µn'o“Ơh‘„†è£©i‰èÁ(Z<µøªc¸\B5L‰I¢¥&•–PáĘéɹC}5Z$}4±ơh±Ä.Ñâ }1æ“wT(ơÂÜ:C7 CíÿÓèܵ\ÑG°T0º®zT©1çÎI8V§÷$½F‹$M¢=Z,‰…¢»cEcÎX4¥ÑBI+ÖÈ¥&…†Pi s´`]¢¥'#T$©Æ ¡~ óˆ9Y ¨8lZr-ÉjW Z“µP4´elè£è#¡h—i@!Ô, •X(Ç­…}aaˆ¡hë±ÔøË$Ö¡œüót₫îñé‡ËSúP°kËÇÓùûËççô¡“äă–Z2F—zí¹s؃fèư¾M¯^¥ó»t₫ăăûÇt~~GöûôÍ7'ü÷™Åsdž¹3I3›Ến9–çÎ,’Md.Ó,3¶ÖẾí<—©X?˜Øi=«µ¹LÑܽ¬Lí¹1½̀ôƒ˜ëW7»Å¦Ëâ>—É’«mvÛ;gx©¹̀†ơăÍnñ/ É\&XøƯ˜­ÁGđ\&aưd°ÛZ³´:—Y8Ś–j†Êdo¹₫¶B9×nÙ°~ƒ¿e/Ù÷üíQL­™ËVrÛñ·µÄÊ>ø[ϾăocvÊ<ø[î›Ơ¹L.Ù‹Đ#Û¿=ŒÙ°~ƒ¿åf¹îøÛĂ˜äøí́±‰t›ËDlRˈMˆæÚmCl¢ƒ¿eÄ&¢“́ñ̃ơÔ‚Ø„Û›Đ¿=Éa€́0)‹l”­m;¥5ÏVvvÊA‹YĂÙ³¬0¨¾ăàûAÓ¤£Ư6gĂÆ©Ô_dê1Hœ#´;²*|¯½¬Ùv²·¹;î̃̀¦"¹c÷o­đöe*²1Ûá́ËËÎà ó©•a²›Ï«đơUÚT$5„›ËCö ₫~)!KÍ‘ñ¸# N„½ÎD’#¢Íư½4›4l Ù,–àç‹ËLW€,ÄưØpEâ£ÑT$¢¬Â›“%œ@‘³›‹ »Y,áÊJS‘øµ̉ÁǼ²XS‘±xđ±„ăgÛñ±v’°)KđF¶ăcB"ÀºfHW$ŸmÇÇ„t́‰ÁÅ"s˜uÇÅD4É>xXœ;k¥™@ņü«á¯>(؃wʼn“vœ«́Ø ƒoEüÑw\ë/€¯Ó‡¸¡(éût₫Ë_ÿ†BWD==|ưé§ÿg·7ÏW̃$íÖư RߺT‘V^›#£}­ăËç·OŸß]0Ÿt~ûúM:¿¿üüœ>₫R-o?ưăr:ÿŒËĂó—Èz{|?4ñåñëÓç˵Mom¾üđă§ï¾é«;̉F¸¿ÁQƒ†Z̃~z‚¢Ưº_U₫øøAÅaưVö¥”¥Ô¥´¥ô[)e)i)ëR.̣d‘'‹h*̀eFV·¬ns/ƒfq6a«Ùó²i¶¡T«Y¼–ÂIa;*4E>{gḳAHAzló́ ‡“½÷‡!ămDÛV¼ñis™¸.ÓÁµă¶'ŸËÄ}Y©Ăj6Üö9º]¯™×ôÈ=ùù_̉#‡1 ¬á=FäGđ^wÎƠöÊ,8,l=Jq«S‘‘ ñ!­ ´srÔư½ fÆkë-±}æĂ> stream xÚ¶T\Ù.‚;‡wwwînM 7 ÜƯ%8„@ Á%h°à\‚»»…GfæÎ̀½ÿ¿Ö{«×:}¾ª¯jïªưƠ^‡–RM“UẨÑ,ëècå`cH)Kr°ØÙ¹ØØÙ9Ñhiµ 0(ø/3­ØÅâè ø/‚” Øöd“6‡=ñ”nP€ƒWƒOÀÉÎ.đ¢£‹ @ÚÜb Pf(::€]Ñh¥¼\ Ö6°§e₫ó `18øX₫H؃] s€²9̀lÿ´"È ĐtAÀ0¯ÿJÁ lƒ9 læö®l.Ö¢Œ,̀ v»¸ƒ-¿ ¨˜Ûƒÿ¬Œ  eqưÓ®éhó0w Ṕàúáæ` v<-ĐTP¨:₫$+ưI`üƠÇßé₫₫âđG°9ähïdîàq°XA `€ª¬̀Æ0w°üM4‡º:>Å›»›C æO„?vn•P˜?øWy® ˆ̀•Íư]"đw§.Ë8XJ9ÚÛƒ`®h¿÷' qƒÚîüódí=|₫VK«ßEXº9µ În`é¿(O&´lÖ`€‡—v€=A6Àßéµ¼œÀ8ÿ0?Uàçăäè°z*́±?ư¡ù¸»ƒ07°ŸÏ¿ÿĐ88– `¶†8 ư“ưÉ ¶ú?¾ Ä`È₫¤=ûïßßoÆỌ²tt€zưCÿă|r* ềVü·OR̉ÑàĂÊË `åäap°?-Ï÷ôâ÷ßiỒ!mă_± V?wûÔ¦ÿ́Øư/0ü5Œ€ÿÎ¥âø¤Z0€á‘±ó°ƒÿÏRÿ#äÿOῳüßD₫¿’uƒBÿp3üáÿÿ¸Íí!P¯¿O¢uƒ= €²ăÓ8ü/UüçĐJ:B-ÿ×§3 kèßM„¸ÊB<Á–jÈæO­üi×₫=cPˆXÍṆ̃ûR°r°³ÿïi°@vO‡ë“ ÿpŸææ¿—”q9Z₫0N^€¹‹‹¹ÚÓ?!€ÇÓ$Z‚=ÿ0Èæà{ <ç°rtAû}¼| ÔoÓŸˆ”₫ñ±€²ÿ 'ŸÊ?HTưñs€#§œæÿ '&èoÄó”ä}*÷?–'9€àÁ'ôø¤U ă¿ 'èô/Ⱥ₫ ̣€°Á§Tîÿ@ΧT^Àÿj!ÈÍÅåéùCâOưư₫ăƒ=Á ´Ù)GPíç –ë* 2Öa‘ Ú Ư4FVŸY—V·[,ädÆOYË.—Éư8 k2 âs>{5È¡M‰êÍw¾÷¦ñcÍh3£„=#…{_¾‘£¾dƠßô}pöƠ °ƒo„kS¤}ḯÆ¥–wíÑ-çùåÛ‡ùÁ© ơÍO¼¯Ñï?Œ³FkG”L̉æYdÿ ¦B‚±’£0½8öļ¸œx‘;̣H¡ÏŒæ·ÍUäcđ“3ææ‡÷âG-N×vbrø‹ƒct>’Û)DÓ>¥ÅQË"Ó9|á±}sAƯ ?^ëP½Q#v *cÉôWjĂ£iÏơeº@u@#*:z/(>Á´¥rV‰•Ôư¥¦Ù/!oo¨É5ôà,™[;^µïj·1±od%F5Ï0êèp’' ´ü;¤‹„sr¬nIïøfáè…Æ`‚¹xª̉¶f=ơœ(?˪Í<‹'¯é«ïße)¹îá|äô ÉÂ07…Û‚6YJ6rÑ“#lÀ¯›uF.½:1~Ă'<=æ̉€+p³hR¦Óp˜ÂÁ«UY ,‚¾¸7Xµ×î =øÚàNüë2Rn×H0à©©!†ºœ‰ăÂʉq¥:_<ö&zƯM×Ñ}ñ |‹Ù̀ŸV°`xÍ65¹f¯Ujd2}î›eFGöNºpYv +A\%y¯̀è†+²î§°Bj•] Ûơ³[2–đƯœ¡Ÿ–Óú~”T+KåÎØôăà°2₫ç¹Gn^=èà&w/91ï|Oµ±í<¿5ơhG‡OéZÛ·YІ 3&d-¹.7¤kÊ;ÊÙ‰é ÄyD̉V—$M¬Xôöú”ÙºÔF¿jSw²JA>(W‚óMøúĦ9?¢ƒ{iK)úW*Ń# MÚª)Iîµ¼›¬>ÜHè"ƒºmwoÀˆ1+ôHz¶C$4{7ñí‰'ï‡1‹N¾äLU¹‡ï-³Û!ߨ„=7₫H’çf™bÙœ[ywß¼Ÿ­½¦©¸ œhÀPuxºâcœ̀9°6×mtªÎ.5´mâ®ôLÑè3RNSlz~+Yê;cØ1-<0µpêZúeuÔZe§j>÷¯"®ôî,7~l×ÔͲ·;¸́Ͻ³z7ú«Dwxá{aa₫Mv‡2­…½.fFW3*cî®Ûr{?D £Ó£&h¬ḍ6Nß²^%ûi 4Dt$ṛ́Â%Œ8*¡8R_ßN»S#ä…M¼ºT#²"œP$`ïf¦Í Ø” 7đ?³gY³1Íô½<£¡Ăz}NÑ!F®kơEw¡rœ̃-<6¾@Ơ*̉²htƒ8’3ßkÉ—ëfă|‡¥Q5Èë+d¬¶m­/—zm:x¹îb–¶Dd]̀ч̉a§.Ư•¶ Í¿rȶGḌ"täÀkH‘ûU(6'í n½ĐĂ#¹ûæ÷=Ç­×å(æTV<-yY7âØÎmƠGN ¡>a”1!œDr1M´S–Ă÷3 f½I{w¸“)½4̣е ³Ö0?PÇqÀ¬}w݃Réc-ă;FŸ#‡ÇưÎÂç6xæ¸Ù8&rüï¶P=++uquHoæT—-æ8Ä•0Ô3’Npx¥}JPe×·«ªûWhoœç@'VÖà†ˆb¤‘ŸƠ8Ï'à‘…×jóÁó¶ÓÔ}ó4;±M5¼:µ½?áKĆ´̣á0O¡=Ù4ÿé«­Ụ̀ë1œ÷ :—éq’ÍF w á–|êd¼ÆV‘{°úKû̉Êzºaá Ÿ́ï₫ÄLGVŸÁ ­Ơ~¯Ë\=áRÇY§çë í¯R>Öäm¹Đ¯.Äï%¨]×0CSĺv®¸Íbx^#nơS}×Ív©YœĐÔfJ„¿°ód$ö䓼Œº‚>6puk4oÜä²v¼đÚÛ.i—l~Ç‚3ÚêG’”:O a[¤6Æ7ĐåCóssÖNŒ²èV¿k[=¢œ™0ÉŸ©Ôø)UË+Êr¾‚Åäâ˳Ăw[½bCgÊ-•¯I¶ y´#û́Sjê1‰‚3ÉăîÉÉ{¾eMo1÷¶3$­;Në’rHa!¹Ư[RIw8ûyØ(€É:jÔ{Xy4S?—/üBLG~vx]̀m$^ûxv‘9q|ø®© #¤;M?tê­j{ÿà¡£… ¡+§d—d½} ̃[A!ƒôw wq„ CöơŸ¤‡ư$yktÇæÉÀ™g6Ö[—ú+®åÙ‹¢’ •ĐÛk€>ˆâƯé·øư]÷F̉[i;ở’]Đ•l´§;ăÙÄêG”©UM®lă›a.Êê½Y$3Ă@_æÛÀ7̉/µ´[ŒĂ/ṭ®R¬!̉¢?‘¨§ Óˆ—>ºæ¤e°>øÍ†}UOC²Á4Z턾yV ẽ¡iÑH¬œª̀ñ·#© Å[}³̃?7ơ©pưU`FÑû« 'nñ\埨ù[M;O¶¾WYJä„ÙtUMvÏ·«˜áYcị́đ»0úŒMиt ¡;­)+Ê@fỜ 2Qu>ô”O^Ư¦º±A8"ÏOo›S bçסÔơjŸª(*©eM¼×“æĐ!E Œ~/U °~í½êà -ÔC´àố² y®µ¯‚“¬¿8,ùî÷×Üưèô,¡éB¯É«}D¹Ø<±wí—+ ø™ăĂŒzÆq*[ï]÷«$vC¹䕬̣G,Ỷ˜vJæ€-Q.Â$ª÷¨ÚJ®+[ục¡ 9³qÓP…¶x¹œù›*j[úâBmµ.‚«^O“+)6ê+^m§½]3™—¦^_ơơ‘ +ÛÊ’nŒ¢~/Àû—\88·IbúÜB\l”€ˆ9iKX„ÿ”Ï?÷a¾ßvÆhë8¶o1Siÿ́˜R®œđcoQÁXÔ#50“tN.Ás¼@9¾¨Æ“xÁ”wHú=„Ăaä¨i]́F¸¥ày]ÏUß*u:Wô×GÁ2¹B‚ư”Îàv…Gâ;̉ƯPÊ©đS9!¦WîÍvâd L˜•Û=¨£¢zü½M%yäXà@ç.D”*VÑ¿˜¥x“›P@Wˆ!øh”åË{¾‘¨˜2;ÉÅ~1(³ÑđdzdøN±̉ô{r0±ơ¬¯öc¹h? æP£ àBK4>X’ÖGÓæ2xóKMo'CLègrí>—>ͯÂ6 …v(F…˜Ưe mgx@ôÆ̉Ơîlơm‹Ü>Jáûgz"„pæEơ³âרèïXđ~~+çb-5>]*¦s´¼‡₫4«2³Ê‘+˜pbÂ(D,}!O£#"Vh† ccf\i “–”¼uÎPĂynîß\ëúÚ¼đ[âÑͧØơo=|^í<¸Q Bªq ̣¸ /ë‘´â;áoI6´xJmáq̉±ÙQa aÏnñN39ăT^íóøÆˆZÏz$™)\%k9ic¯œÍYBéw9àŒ5"Ë'ƯÎ÷×Ñ%öE“‘Lñ\Îx—]Sƒ‹„ú x|]µ—¾#ÛÏW7ôæ€\¤ó)Ú¦8dP¿3́}¾]‡7Í(¼àŸ“8"G¥£n›ª§="%¿¹ï»•î+O2g̣HĐ.{H Ö3Ä$}ÛP¿B£S÷yĐÉĐ@>¼LYiØ”Óú´Œaö.ôƯf«Â¤Ó¢¦evƠ£OTô±Ê‰ÀË8T† »¯$Px‡fg«â¤ß)¸x˜æPj+%îĐXÔù")¡¬Lö́Ùâ»›»Â†¡-áß@Hñ躧óÏbd’+Yå¨Ư·cØi¬$áÉ98oœÇ\HÎëz®]áË7VjFH7ÆÖkÛŒBV9k¨‚Đ2¿¨¸6¥ÛÂƠ³¦ơ8‰1¿O”:«j;£4 0RCüº~µđé1¿ơ.’è,'nhÔ÷¨°_× _Ͳ.@|  ›Œ̉† ¾ÂL¼éĂC‚¿¢ø®²\“•@ƒ½¯¬_Ó.» œÂü%ÎøŒâJ9Œ|¬!èP¶EĂ>‰œê7A=LÅ*£Â:÷¶m–ôƠÊ•¡&´è²¼ 9z£ÄøÎ["d7Qاm7ëäê’óâ¼đ»×€¦'RvD4k«øịƯ$Ç¡ơ[mûʇ†kuôƠT\iŒgú¢³@ÉGzÊ 8®ÅôÙù–› /üBËfµ=f¢y~? F›‹z^‘zđm\9ç°|̉?lpIlîeA߸(ó=&!̣áÛî¤ÖÊM°³MÍ owÜûB(}ÎØƠƠq©=]B†¼˜nKr³ç/­ö'CnQ´̣E ¼×đ‡«-iđ@KÆøÿ%d‚·c`eà×áà‡—‰æ–Ú·̃ 9Zđ-ß¼¯o £w¾?èÔpû§́J̉ÅÖ"G‘Û0î§)KáṃºÙ 5́ƠÉÔ0¹ei‚rŒ¦ùeîßGRù cN.˜ëGuIÛnÆ₫o¼XKª+r8™n;º¦­_èSdÎÄ=²¸d=/£©YµÊ>‘éÙF“ffäŒ₫HmK“4'—߯¹â;沉SÇ «¸' ƒ×—̃1lĐ_p'siÜÉĐÔSn”YjH₫  ̀êD ç†{âK9…é)ê…)^ÜMl…*Ĩ¼‰a=¤d/¿ÄœB ¢R¼¸lA:Ỷ“ê‡s@i,º×á/ºVè{M%4njFe3±yqñđŒđë§Ơ82],7Yƒ<~GÏÆ"Ê0=•LjăÉåZ†|,(ÏßĂÈ®ÛØ÷Á)§„JF™™Ơ?ñúoX±èJûX¶6«BÑ?fñ2u1†!Àcp¤©âVMîDD&/ÜØú´ûR\©c×£æß^¾º2tîXw̃?Ă%ÈJÍ̃U?́«éU"¸G¡fùvÜR@ÄÂT4؈²r@ÑN̉$»’D¥3[èvb¡RXê/ÅZ÷IP¿kijƯ‹ZÙ`Ë©¹3wf-­Oh¯ÎAbå”ơLÄm†ÑË:5Ă·¥ÂC¿„Ë£ù~Éj5#Ï`̉?äO*Ñ%¦Ë¦7œsóx±%»µ›£}OOF<Ï&+˰fq˜O¥¡V‘¦7ÂpÚ! ̀1FC„O~_èü5€2ôYT,¢2\ÂŒ¿m%:f»̃́“,së-Zˆ·)e‚₫Ñ”đ XƠ ÛPH"¬iØ=Qr¥VÜ@$´`{‚o»§Ö~W‰(t×g-+8 #Œîô‹ëK”©¦Ó븙÷ù¯†~aøcŒ¬Æ…|$}Íäë¡Ó!Æ–2/dÚĶ$zĐ¿¬=¿ÄbÊ“dVÔ(Đâ₫¡+ÎÍđÜ₫#·át -tgªó¼V/³wï7h4ísXœÍ’’ö>¿Yl!¿‹¿ẓA®Êq=‚̀Rä{å¯-X ÈÑñ¡̃'ú^ç΢A¬ûq=‹I6/g[¬Lâä*C€_9 rVÎFU-y;{¹ï¨œ»Ä»Âø§tƠ€JJÉa²­¿Bsâ-NMäº Â—ehßÑ“Ë˰f£v~A¸KØƠñû2cUYPW d6¶QÖ!gRP-ŸE`ÑD¦r¤sâÀYw±üyƒuX±WơzÖ*²E¾‡…«%a¿‰¿¨7‚¯Í7åê“yO‚ŸUzº9pKp¹‚©#3ÏvägáS;₫,«íf|‘ ÷ƈϬ–è(42:Î…ÇO.Ôê[ƯóqG5»ó́¶¾¸ăưË]ÎSDg»wƒ#ă1c̃"‘¼§Qaơ„|3ó†âäá•W¿„ ~ /–3“§MÊ-g¤́²Æœ–¨Ü K‰9“]^{NNY^Í'{΅IÇî+Î ̉Û".˘; DÀSRE:¢Ñb1h“Ñ€³tỢ^Ç1ă=©?ồ×ç̃ơ˜ ¾1/¡(ºÈï¶©‰FùJâ†đ ưd˜7îb :«QfĐŨÄÑFô¸;Y2/ôÄKvºeuĂwÛTÉÛcº¥ŸÊYxáKrb|v`—hÄC‚{)zSoÛVk¥ơñ«ÿ³øç³´&H×o*w*¥¬ư„ {Û%·©ÇÏê5¦ƯNÔ6uỊ̂Ăçư™0R!"nÈ!¯oÇưPáù`!´…+d}>ÖˆC"ö̃óN(úBt{ïùFjµĐ£Ô‘‘HÑ,£Đ!<Ưî|¯>ˆ9Vo¨^ƒr "#2¦[m±¯l-XÈ*̉^½kƸ$'ß̃jʉ“.ÙC,- ỡ¸,²æd«3Fö "!~=óŸNÚ’R£FR ÅFÏ ₫´aslˆú&—P°ÏûN}ˆŸñ8F¯̣ Ơ t“B%Δ¢Y¯•á­¤L±{mµz*¾n[úøŒƠđ¾ëñ>F.wQ]ŒW± G.±ßW̉ Ơï³ó•yàSFñ•ƒ§oüêkX—¥ew¿~6bÎó@ÉEį¡§í'Dµ“C‹ Äu ƒç?kl^"rEêÏ¿f³$Ö HûUĐĐ5 ƒ%%ÙK˜0¶UƯ/pó‡đΠ̃₫ÓV1ß $9̃Ou:Ç•”Of¨O²®#7Âö0WøÖtü¸qnøtÓï›ø?7ó’—êfë,ú­ÎóGÚ¿à(†0 ¹¥̉®ó¶„ư=#Ü÷¾Í.đbçi“đk'È#-¯Rœ·b@nL è­ u»¥Ư`"«—€­R)N±ó £ˆzgSÊLù™‰·umæEVÁẉ’:ó7ô ÔƠÈ­OÜE¹­ó9¯ĐpRÂû›l²$ÙÀev V T/ÆkEh'‰ÔÈ8Å<`Å¨Đ…?ˈ² Y!·`œ >ÀƯÈv‚—/¢²Ø r›eă[ư¶{»«PtiT@뛼đ,C£H˜"~¡g¹H/â3nÏ·ơàÚeër’q̃²Bsz¶!n)¼ç<¶_{dôRu~øÄ¸I7e_¶ÇK‰ª|+0à;~n0ÓØ5=¸ªœ̃Ÿÿ£Qª9ÿe³đuITÑx$WϪ“àW¹‰ÔŒ±\iñÉYÙũ«Ê/ô :=!C± ¬­$'~ø RY–F°r‹º Fu¨ÍƠ¬~¾&ˆ;…@Bfµó.e®‡>ÎḶ;×5Đì½ơă-”R₫sÛêÊ­p>–Ûl¢?PËV~ö-> r0ë¤_Ok†sO:h´˜Ä̉‡¯ƠÛ¼µ¬ƒ±×äæi6QëÉzQ¢†prM܆‹µÎ]J´e­tĐäöT·Ÿ§r-˜̉y«GØb¡”‰ €¯Á·a§Ơ?Û†•ˆ̀FMÓI7bT©°çưØë2÷5-uçXûĤèưœñ`˜á,Ç·ơîsÆtÊNÏGïc–`»8WíŒÑ_!µƠ"loW¹¥U„qa˜äxâu”?óXF1ḿă¼’ñó́ơb!zđEPĐrâ4 ÊAnơơ ôî,«Ø‰†©\NœÁ̃@röwÇûu ̀|ü¥Í°I´U9Ÿ5®í8¦4Î6&•µ(ͲyŸ²o»ö$Ơ¯™ËûûWѺD<ÎK©ó¬Ó˜T¥Ññ ¤PZ|̣püŸuækQ|k¦9®Ú¾ ‘6‰¾êMfîU\„¯©rKvbăˆTøÅ$)f퉿iûèÏ׬·|₫ưĂĂ/¡îë ´†®"³~mÿÍœP«ÅĂbQÎđ®n¯ë8)‚“RßPàZ‘ÿæDƠKUNô•3A²d·*K:dïx¡A¦ Ç iwàö4NǪŒ*6V7±tăëø}à ̣í+ÿ4(hŸC—yxÙ5ۘ ½¬F•Ÿ´Ÿæ+w¯»0£̉Qª’æ§âØEª I†oÔ(ßûơÊP¯¹&s9Y`£­m32‡wlǻÈ₫fÔQ5›-2ỷƒPDÀ°P± § st]­¼Cvˆ„2‘„/<̣Yû/V)́ÄÊoÈ̃6|fö„om—&x‹æL«8đzÇ›Of÷R{TFÅ%äq¥ǽÚßëï¼²|ˆÛeư)¨©Ù›9P̣ÇÜO³"Í©ùüÁCGD'3÷) ’ø‚ùœÄZDT±iCjL ÇE#Øư“ä1¦—¬Hr‘søáà́ "ow|‹-.₫,û\ä‡iz/EY©Ó¶»zä»Û B»©)d)S€̀Äñ‰·F÷?ÔpÆÛ^ÿœêÁ÷·blôöäPÿJ̀Vb¨m!ß}Ù#Ç»‚µĐy¸ÿ)n¼à'µêø·ÈA†‰=£âز¦†ĂB>TU•GĂjëD~}Üch7‰¢±ưM?aè’ByæÉ¹̃ ĐÎ¥Ó *†âU¥€)b0Û}¹c÷’ÊÈ4ô{é]½ö½»C¼è‹µQ|Q~ăߢ̃ÀvX p› T¾œḥ`ÓOQ`£6aC" ơÆ9Âl[oºu‡o}µ„:ø‘>¯d¶VˆḶ­;—«e¡ [/íP¹ONĂDä«|½&Ö}5M7Om"p™ÙúZ]Ëx‚́‹#öQÎ ô“­…XÂ’/‡ß4…ëºIŸ̀V̀ÏÙñËân +ǹ´‘Œ×JÆ¢ƒ¢bĂóñ&<ƒbˬ7M–M‡?ÇC©ĐÛ́"ûêÛÅ 8+ûy¹ñƯưóƠ®XÚç¡j₫́¨ºÖ#ïÜ<§G· E˜”¯¡” ¬ùYŒùȯ%ễăñ3ÔY]lQ »£p t½âV1ÆÏ}˜‘vŸ5¸y2¢%+ơTcc3đª‰+Æ(®èDÜ|ÎåŸHyñé™yÜÉƠe®ö€K%,ç̣ṕ˜XV罄\°}0ÂW\>¹„'чÆD–gơ^BÑJkÔ2˜ç˜< Å 6í|$·J¥Èlù«Û!»°%8Ư‹‡fơ®`ƪú+ˆuYæ}X€‚êTHj†ŒÊ÷ÜÍG@î̃áœÜ7æËX‘Q. ¨Á®A‚…ă% Ï×4öe¦ëf¯É́·mÉ‚"W 5ßÏÇçD0R»Á<Ü4w3ë|„oö“Ⱥîk¨üuS,8pI—ƱÆRv’óÚ£œWDm5®mà¹*íXqºkVÔ%¦IJ²¾—‹%'ế‹ù‚[o ưç<ߢèÚx¢ >WWÇVE\Wilj ơ¼\nÆ̉œH:{&¿*íU-BcÏpíe•GÛ ^h A÷È$“1Œe#k¯eܤKỐ”Ï“¨¿ß¢) E{đå1ß‹0P[ûú”›¼Ÿ‰=éxCMëÓ*wkbú¾¹Ñ‘Ô|̀<¶çh¨oz©ÛifÛ0ëñi–Áå/Êäl^åö‡₫3. •gRÅ)‘é›lñ•1ëbÑÈÓăjƯÉELu5QG©Xd½æù°ăWxùdứü _˜zÜúªb0Ú…(ăvåâḮe³‡¼‘f§Đù²Ü 2.«>3ÎÔÔªư)«9ÍEÆÀ‰“Ä¥Ë;æ…vÄƯ²³€t¯ô­ÙTàs…©₫¡m–‚œQ’ư×ohÇîè6c— OèăơK¤8«WÚvUÊK„b9¤5û¾Ơ7ïïXqW&\ ~̣ÂÎø¯êùYù>"̉£ïÊt»e5¼À¡’(GÆhú~x÷ïÔh¦¶Đ2RÆíU=Å.Ị̂JÅ:ñÂÚ÷Ç¥À¤7ă]á8ÿ%Ôƒ endstream endobj 1037 0 obj << /Length1 2303 /Length2 17092 /Length3 0 /Length 18443 /Filter /FlateDecode >> stream xÚŒúP›k× #ES܃»»»»»4¸»»—â´¸Cq(»{±“½_é~¿ÿŸ9g˜ ¹–_ë^ëNæ™P’ª¨3Z8¥ÜY™Xøâb:¬lv&6JJ 7đ?rJ- ‹«£ß?,Ä]€¦n`™„©ØPÑÑ ç°²X¹øX¹ùXXl,,¼ÿ1ttáH˜zØX™r@WJqG'o+k7pÿ¼Đ˜ÓXyy¹₫vˆÚ]l̀M¦nÖ@{pFsS@ƯÑÜèæư?!h¬ƯÜœø˜™===™Lí]™]¬„h6nÖ5 +ĐÅhø‹2@ÉÔøojL” k×)Ô-Ươ?œOăs×üƒÀÙµ₫ pví?œO÷¿ˆ¬3ưƒÀ•™ưA`Kóÿ¢¿N”ÙâÜà!øÀ˜ÿ5L ÀÅ[₫`sË?¼Ầ–6°₫%ưÑÿǻèị̂p`«@0}ëÿB0}ko'kđÿÇ,³ù3µûSư‚¹Úÿ£X0×?¡8Á®à₫‡̀ÆñOv°³ăÿ¨ÁƠ;ưQƒƒ9?œ@@Ë?ưá`ư·ÔåÚÆn¤ø.qüG«ÿêó? ˜ú?Ă æéú§Ö¿Đăà›»‚oà?à‚ï1f7kà?Î\¯›§ă?ÀüƯÿÁ­óø³÷üÙÀ̃ÿHÆïư‡ØƠẹ̀¯Øÿ³üæî.à^¸ư}=ƒo†ÿà¿?o@/ 9Ậ‚£9˜m}XÇC­('ă₫¤à,å¾v-£ï²K§ûo¸TÚœM—;ÑÔ‘>´µ]I[‘’ß“ÖF¸È¶Ơö'¿gădµéưv„¥ØCSE'¢ ƒDï 5Dü^œư´‚í [!»å(óœƯyPT 0<¤½+VÇ#öUj¸äŸ+fă5ă ‚Kç(óÍ>Ïă’Áº1ÁÓ}¸đB»½›ư;ơF"—Làÿ+½ØWo‹-áq̃g½JƒÍµO—úöĂø4•¯ØQ΢oYI¢\Dl‰%‘ÑB‹P'ª©3Gi÷²@ÅØÔöîOă`ñ ÔƯéˆDsƠJ±‘Ÿ ơÜ.Üy Ü¥3/¬Æ…®ª]‡/Ø>±Ơs9.¡ÂCvn§*l‘™ưAÄa·4°]G‘Gi‹\KxCƒ¼3ÔßE’—Ø̣̀Ưô{}M½O» ¸.ư§¦¤à¿èßhè iü€ !7eµ&Íå‡59ư¢=<ôơĂ›$Ayü4”¼íxƯ¦\·Ê[¿̉—óPá#ƒG$¨­Eg}÷°%‹ }àtB–-Ÿ\¯Ă»1ù§r6ơ‚ZưO'ƒŸÅ̀>W)B†8†Ơs×”™¥EPă‹´º)½W!â›lœ.Ÿ‰BüiQ#fñÑoZ¶âÇY¸Œ‘g”"ê×Ê) ¹„Ä9ëçJví”Âh¦ñ×ƯrLØ\‹_çˆ24đG~‘5 …¹à̉àU)…|Çú’†´J-Ô¢gÛ{g]0̉DŸ¡ùêYóv¹‹đÜH‘´×ÿcÇ`[[‰I¼˜FkÆà\éà€0¯³ï;: ̀œ¨đÈ͵·\1B¥å¾±+ÁÛRƯ»l{¡Ûl }¢ß„×È)aèNeg8©VÉƯeVAĐƯºdfXbr9¿­We.Ö¨Ô·å LOÏÂcÙ¤&ƯÄ*1{ƠaÀƯ®L±'N¨Ï¾*Ôü\; ÊÂöÓ§i,s¯¶ ́BÜô |¬z1\KYœ̣«sY ³ô>Ïè̉ù,´=.ºU)1|‹5˜#æØbÈåùܲZóÁ/0 ûyÚo­Ùj†ÈM9¼0zzÙDö~æ8a‘uIÁ#!²öJ™Ÿ÷O‘ị̂đX đ^,²]̃--¼KíVx €_YŸ8MÈ®îA…„æ‡ £¥^9 Nﵬ E~f.6×N•Èø₫‚WÆ:ú[mˆÆµ,¬m£àƯẠ̀LwÖ3…ÓF é2¢µk̃†85€ ·̃•yÎZ’!ư‰0W N?sô=>¬}cƯænÏG &Ạ̊'- =Æ´̃¯™sÚ+̣iNM5Hgßó4Üï‹/”OX±’«Hƒ L³©¸9Baâ~®ÍtÂ1¶ÑUhIᘰ²×á}ç±D´₫e s jÇ:u€OÚ4ÍÚo i¹Sêù<×Íw‘_ªŸI1‘kÁ÷ĂÆk!ÓöEüI‘mÏdœÓå«Bâ5_!î^CÑđï­ê®‰€­Wó¼‹&ï˶¢1H-y…Tküá¥Ê徭`–20R›3àöá9R:ˆx|€Pđôr¸§0xvèxHB 2_*‡!5…jĐ?lĐ¾ăÅI“ÎeÄ4£Ÿ‹„Mg{èH²Ï²9xœǜ áR—Z₫ëfPH¯̣l|Cx*a‚gGẺ₫( –Ü(¡r3UÅƠFüé‘·ÄCĐZ²ÇX‡fÈ;)Bé!†¿ôÇ‚sA `C‡£¦ƒ4ñIG<¶V’Xî.¡²«Í`iÎP'·-¸ñköó2ˆîÛÜ8Ÿ.a£¡Ó÷]ê7…¶§ÆïKz_¾‹4|Ư>̃VÅ|h·Èd-àc₫ °"eÀüĐ¹æŸ¢:IÇË®å èJU-œHmj̃Aæ† å'‚ôv¦ß>¨¼D‘kL =}àqoẸ̈́c~%'TH–£Ör^ÙIÇ8Ê-À™¦Ÿ¨¦G!`'¾á™ÑIrùÄ¡"ñÉÓÚ¬;Pæ‘ƯF̉?,¤IµØ₫—Ï}ªÖÑ́3´¾d‡/Fø€“³öăOÆ÷íÁe¦Æ²0M)öÖ)@Ë+êoA‡úÎÙ-¥đLŸÄYÜ 5 î‰~uRÚ¯2ˆN¿÷d$£çh Ø(i-Ê$ÿ ‘§Ó†êŒ®q{g<Â(×ùé;¢ÑdadáµEâE¹udZR}l‗̉iyÁ†Ón¢+tÉçVi… eåbk¡ëÜYÇø›Ù“¼²Ïø=+rürôö“$„rxO\¸£}vx öÁ¼d°JH‰™^ưÎ À‘5—§¯(ª¹€àÆWÿ́qTñâMøº?WÑÅô_–̣Cô7Ơ¬¤ÁƠñ¥)êEƒ»äñÆèt†D_ l.H±å&lrFÇ2́ạ̊ Ëμ(o:ơGHÿ»hi-.OÓHœm ûú4=U#…ùC¥c5ç¬;̉U:îwåIA³À‰€³gău¹÷/â!²Âœ—Å0ˆH>®¥§₫î &iKA]dÜ_ä»f¡ÏîÛ¯ö"Öy¼•±¾WWIE~y&´Ä}L„„́ùË©̣©x˜…Gï3; ́ơYi3ë®ưŸ%pÚ·fỠ¢Sû4›ƒÆÍëà*Ù~%‡R?{K(6¢«óÊ,]¨Æẁv±¼‘.5z6àäŒL%ß]öÀ̉×j¤Å:Ä–ßS/6"l phͬVÄ×ybà¡*ä6E² xM_OE4rcÖ₫¼ä=ƠØ=€[ ]ÅñMŨ—vYp"\[¢ĂB¨Ưx¼¢—í´œoÆDQù¨đf–èWuGîCÆƠ-¢@¢¢3¶éc†R’«a>sïÿ|JK‰£°$o©̀†º₫5xg @£4ר™TĂØ|ët ̀»rGR«lơÓ°a µQoƠËœÎ"mđN‡0~¢}́~r¯Cèq§Ç5ZÜîq4ưüæSn®à™‚ư !«ÏSå1‰ÿ~'¬­ô«ˆE׆\«cs~¦`ym)5Ç\*ŒX1₫ÉmrÜØt‚4o yǴØÍđÖ'Ä '¦jă“s¦ GÑÉÑ ¶âï²4́yˆ́E)ÏÀás 'u‚áU`£^ʱÓ0dÂâbs‰Kđ°J’iØê¤B 5#4Á ”9zÉÚ=»´±$̃!uÖJ~¢Cù°‘TâL̃ucö·wAAkR]ÊI5®rcªm¿{C}á̃?wjltµÜ°}ƠÂK₫ªäº9“đt…ØE)ºbwµJA¸È°}-”{‰íøS>}…LæóT Êjà[%Û¤Z™æ7µ\Móy;Ñ÷́é«jsVÙơ¤í{&Pê¤íˆ¥mn™J#ëY»ÛÈ×:í  Ez{ù–°Ö¡ï– dk̀́…5üOwiǛܽƠ‚cŒ‡j”A1[i„rbÍ„"o\¢,?û¬{0Ơ¤xks5|“h ¨2.(6Ă“ùÆn¬»ñïßnßl{áÊr‘–~Q&IAáh…½­DIï {´„À ›¨ómđÉԆƛGPwx³+!ậÆÖtïơ†Ó›«o¾o@%œÀcÎnum/„̣Süî&'Âÿü0oG„Hti¹a–Ÿ–—;†øơCyH#’'doéí…R{Ø@ÁKÙ[™­L»+ô‹¢ ₫̉±dMă¯Ïó ÏdG¤¿è,qé³I!5E£“§F¡„Ù?ốzq§]r‘t¿™’^ÇFí’c<½ ¤¸ăÄ|cNÙ”înX#ȨÜ”˜˜mïÎSܹvÑN'1—àßó&d;bˆi¢Ÿ,seÊă,ßÅk̃U“d6ó’áj‘b́Ry¡³Z”T9gØ¥ ¦Eücè±vDÄ×t¬ËèŸÍÚ“2…nS÷™)´ùÙ́y8ăM₫b‘ơƠ7vFé:ºm |Œ~˜5¤I8_AàÛ¿2ek+ÆX[ó ÏÛß•Î]ø/RÏ7”ªú=èjzÀs´Ü%Ư6£cÙ~#‡̃‘¿ÖuR<. )`̉z–À(|vkÈÏx}‚ +í¯NAlê‡t¿íˆ´ØlçN}î™öR“î !uœ¶áÔßÈFŒÙ2à/K·Ñˆ#&>%ä-œ¥l< ÓÁ‘₫á™o'µÎḶ0OË0ŒµyFëâÑŒ!”,R̃QÅÂ,É¿í̃Ûxî†%‡´Ñx•ƯGßĂ₫ ¾5ø̀¦× CF \Ë’~ê˜yđ¼0V]îó¸ơȽ+ư‡É‚À˜ßCÆM®Ù_†Ôëq>1˜º•yÛ@Ö]N»¼¶R6^I±ă=[¡çoÄR(ú/­– ³çJØ [›Ä亸[m^̣ßÛ´wEc!8JOgÛƯ*eÏÅ>8˜üöXħeËJ]Íü¸GA~̀ơ8íûzÿ\y¸óµÙ@ÊăVó—6bwè ̉ Fߪqí4Ü–+ øƒ8âÖÙÇFv ñúsoÔ¶5JÂWÚ”ÍÚóR9Ề˜h™̃Ơ#˜s‡×zΧå+$6²áÁ%¹âcÙt^¡ƒ†O‡i´7$6¹nzÙiZs†öûÑÁZ³É+ÊO)ÁA_o;h­ l^[®(¡ä4‡̣ô-k5t¸ç˜™đĂÍ#±cƒá5ßE1Ü[sŸó(pL¾÷9âåÛoض}µwñ¸ÍV¹I Gú˜oäuƠ¾k|ß^2¦Đÿm Ñ»2¢"%´öfuZM„Ù×̣DUü̉¿̉b´~xñ.`i×¥á'i 4GûKît̉m{œ¥J¡cËiP·â,½5CÊ—1󪶯ởÄÈùsôtÖñ¸íaƒºÿ̀ë©\¤â´kD̀|ó^̀ö‚-Îû²†Ÿl_gQµk ÚX>%u9…uoB[£/Ÿ¾$j‚L"$¦ÑøđC^Zë· Lb¬œ vPïUñ†GïÑ|(Lmg¤ç! 5´̉Lˆ©ÚR}9e<+̀΂,땇đaWw°̀]2ö éëu“̉ÍK¯mÁ2QY'ær—ÙúÛ~Qk<¤[¾Ô•÷ƠAĂ₫í%Ơ¹ïµ§ª>½^ŒÜÇçoô­Û"ˆç»ö ›¶’–²Höˆej̉D5ïªuQjxú²”ÂqÊ ß>Ë£Åđ‰‘V â( ÉaÅœR/2ƯÙơø ¨ ÷¥ ïS0›́R«5Gl;t¾£ Ư½ÊÊçÅÄä‰!YSBu7Öø|œÅÚŒDBuF,R2¢*u—ơ»} £[`)o"CäC„L²ÀQ‡»¨®́ăúªéy«L&¹øHôăâêDP*±_`ˆ$uZŸ,Ü‹}÷1óVÏ×7$¾ÿfƒ„) é”ǵ;u³̃ûÆ̃ cSJ+ ä€öÀ$³Ư#yí¹ÊÍ<Ÿˆ+È»‚ØQ¥Ïw ²€À3›÷‡P ¡æçĂêmóƯˆzfX̃t&´Oø=ăAb—L6†¶y»K⌟áÑ8qÂ}Z Aü%Un„j=”˜<½¿¿ưPÈuƠơ–h$ç@|•đ5-7°åo¡p(F³Í¥˜—DJ£vJÙG2%¾[3GÇd]°@Ay}6•”DYă ë.Đ?©̣‡áâ¦\jË< ²cf“m¶‹¦®.ơ„6Kưpç÷_w'ñk7¨GÊw©‚ë.ç ˜ƒA(tBX¨ḉ,Rk‚‹)[{ƀ…·âw¥‰wT¯Ïö½Ü÷áÛø₫ïqa x¸AŸ;ô{hn3Ö$«vĂ“r¨åI™XÜ~̉V'¡Y^ÜÎÏ]s§Â&€¦²=÷urưF»̣¿]lxⲑ·̣ùưèàÚÈ_äy¬-³s¹ ƒL(¶¿™»̣̀¨®1cèÓỊ̈ª ̃FÓ iÉØr!TÀié¡₫MÂ>ÆgR,Ê- Co|Ñ¥F.½'ª5àf#±aÜƠHú~%h‡.Ø}fƠçÆl§6$£–à¤̉Ewú´¤^)¦6·™̣zÏ âj_S‡Êz"+iI¹ëđú÷Öœö$[Ñ îC$tÍé3ÀF)of²̣åÅÛ²ÓXưlYè‰ÉÊä_ŒKúáeøD,•øyØBç,© ó6¡UG̉¢.ç4<ü¨ư¡Ưø(R-Çàzµq, ₫(%Đ„Ï>—ù¬ưº¾£D‰½¡ kä9‰»Ûï›M%YÇW`'@₫Ip™E(VV×"ëWœ0¿’]c)_ncçU H<óéµoú@œeÿ½Ü`j‡ VÈXزë̉.Swâ¶½̣¬Wº_UÁôÎđµ×§@€´ËvĐï—m©/ƒUZ‹`_ ƠߌôBdÀ–‡ê¾”¶§1YLG\ws9ÆgœÖ̀-ơµâKöñ@HÏë£Í` X6–z‹qëèç!¡ÅBÂư´ø MÍƠ.'Zö$}+Ç|H N”@Ú¸ăŸ‡¼ôNQ¾Q´Eü° «99ÙÑsü«”j₫_¬zvJ‹µ:öäÁGëK–f¡M$O%îÊy#—¡Ñư§ Ùñ₫ª”PwÔpº,5̃Í«f²s>&è“€É̀xªê§ˆå&÷Ÿ ”x¤éM';Mó™/F´Ó4"¼!tCξ¹đVX›> Ú)t蜡D”XóÊØq÷6U"¿T5ÇáùáđH‘¦o\̉WƯöê­©ß«hqxz¢Ú•ùºaÙ ÷£É“o}| …ÊđH±?›®…+ùöyÇH±oÆûIÚ¢ơV°”‹´’X~Ăi+™!k×Á©›X!@[‚̃ÏuÔB[ëk½7+œY%&œŒ¼tq=ùÀ÷ô!û<£ 6Z2™̣¤hÜợØÔm,~¦ÈD ùyȱ5ǽ’ü…f^×'Ø¡¤Ïa}Ú̀ö©}£ƯCé’[¬nçØ˜â8†́±óôF\÷KS÷Ö_»HƠe·4¾•à„üfóa´†Ç€«˜«ajxehöƠĂ…¿s›3ú¦n§Í'1‰ í§̣^NS«=ZÇö\gze"6IJ›¸°̀ÅÚ“lC̀§hWä´XÎŒw¨´ f à,E#}Ö· ‰áư¦{Ø]ïH` ü™VupàF<A»̀dbÑ_ưai>5«{¸¤^ i‰ÚW™îS~=7¬ied4T Æ\8oNBÖæu²ê7´WÈ£z©j<…(:6)4ÊåÖ¤₫,í)pÿhÈÎz<¶={A¥æ‡BÍßûvà7MrYêN2àŒ§WM!ª\:ăƒç"•tBy³ü¦§e¸[’OB¡“G™¦kaÀœ…û±®A-!0œĐƯ²-[×:&0L÷ô<Ñ_ă ik3­ü¢ ̣ˆ"¦ưÉt†‹×»Ü˺ûÇ̃0_Ê‹_îÆxhNơóïô‰Đ:°8 LØOX…œ6OMOªmŸ,5&¿gR-nuĂËé¿Ö®ë‰|ï¦"—â±Ù}oÄ›Ư,æ9 ¤Ïg,µtå[äd{`œ 퉕Ă%±9më“á`_ăÚ.ƠdÔ¯L]íB_9X`1ª…CPoªM¿~˜NV0Fg¢G *‡₫X6­ùnu%· §z-몺¹̣– ‰"ñyÚđXV©RÖẴU’ÔÅq´Â„}†ÛrK7$œ?D~G¤ËÇ̀á™~ư¨‘ñn7̀.W؃W)+,ª[*›‚sj‰SÚaư)³söá­÷ÂfG¥P¦ơ%ˆoAPºtïñöB'¶Ø*í瀨ÇÛđt!Ó¶ƯFcܯ[É#Đˆ—ú“!]QpAÎÂäX:]½œg<<~ăNºçûÓNAî¤Ồk\ taÁx‹×„Ñ¥€¯AcUô6…”Í6ơkH…Öi‰£0—ôí=̀yÙ̀MØg蠃 W¿‘Z%åVÍ}¥o=øê^VÔÓÙ¿.e½-Ö.K̀a'CM[,öëAÇQ* ¡Æö5¨S3i~¯)”z¨âưÜ1ñôC"r¦•’Ơöíª÷F—Ö °h lNäK¿:̃‡«`ʪϨgYØĐ¯†o„¸• ›Ë5'ùơ˜Ơ |˺Ç5­S‘­ùƒ,Ă¿„ØđËê‚ÆÅŸ9x[Bư·F^&*j1¼›‡øÑï58ï= JĐî­Í¼â…sa“u']̉H1ï¢ZÓºcQ [œ’ÆkI\YyB\ÖnD9‚³ƯƯˆŒ¼!ư)ôănœ'j•ú¬m©Ơ¬ ¿*s¿’tí¦êíÔ¨S–=xÖJÛơéjÁ‚ï®KV¾…̃ç‘Ór¾Ÿé-h-¼]ŸOÇœßT󗦿¾1!y»=¹ºÇOJúÉ¡Í1`(î˜Ys1íp^ï¥Ïån¼TV—Opg1T×U¨ăÔ«¢yKßÁ !ÙÄ&ml˜æ2¼OƯv( ªq‹ ‚_TAZ†ç—ÿ†f.Vñ˜1öÓé‡rßvơ¢_êI…-ñƑ׷ư åĂ„ ‰ܵq0C÷ÂBuû‚~ÚƯ°´Qc°¨—S<2ư¬_S)ˆ©³đWnmÓEEnÙª6Ê—hqÍ Ổ|̀NëYH¬“s/>’Wz1Ë›/k¹¬¢ƒkH™”„ëêjJG~ç…G_¥*‰ëŒSü!äoч٘Ï̀uĂpMÆ ~øô“ØM̉¢̉ÔÎ’nê+í—ÄáÍ*ổ}"O‚ô30›Pë$ ¾Đ\5ÿ‰h₫­ÇÄ•ƒ‘ˆz²~ÿÊ}¢Í³ÈnÇçªÍè]6¶M±ÿ‘‚ó íª/øq@ÄX¬œvHÏ÷­,Đa‘Úï`ÉæƠóGÎ'wï’H}¢›³¶ËÓWØft]”„¤·v²å‰<²|í»Æ#‰ăä<Êq=|'¢öëŒ̉os—&}‹ÁUM¦Ób—V +?HkƠp@áE¦ÜB>N?•ó²\\àØ,¬?jÓ~Ù°“>œM’(«§fÍđ‘êêNàÅ3Pt™×ÀÈc0°oÏÛØ03Đ¾$ñbU®¿mO„ëNb(í0Fâåö³k‹H×đ¬7+;­ú[7ĐR„í§yÇ&%v]MÓLzÑM©Làéd0“zÿFWLM1‹p[–̉•¿Y€ß(Ùuƒt6r­¯/CM•2±É´t–È:69x,ÓDæÛÖoOKư†,#a× -±ó‡/ˆRKO¿Â˜Æniñ#~ÿ[CêªÜ¶Û\—Ó«oæ Q₫Rñ"gërk0m›/¯¾Jö YåÍÂTiÎh–¹·}çgû“ ÿ²́%[¢sÀ™ºôÊN\ó₫ ¤9Lµ=BƯÜôK+ö;:b#0c̣Åc]Ế”A¡úâ2¨NTú“¿. fø]ˆU•+ÎÓ(6d»µ7ÍưåaÛ\]¹re₫³Øydvʾ뛾"C(µ~ÍQó×ÛOÁ\5JÔjáÏđĐs8“Ạ̈‘r|$6X ¶¥‡! Nè°yyDº/­Röq?‹ø[»­±́Z» $Ù'*‹0o…ƒo˜ăĐù§;́Ϲ7_®ˆ…²û/´|,ªXÿƠ””:ËÊñÙù™IÓÉç©#ơ ä́æ‡̣êvsôC@Å€½”´WA`9­ÖJä™;‚àO|$ô¦_ç'₫đ;ơåç*¦?)6;*÷(+QÎíù¬9”àS;\QÖ̉àäàœ6¬í ú¼ÑBíûÍä±Íơ½"úûƒ•º,ÚFÄÎÂ"!4$ÚƠʵP/æ¡‹s]¨¶U™Œ”’lÂ1Ù­Ô…¶ØS _ƠMB}V7—(3K ÏËDŸÑuê\ÇŸô‰}¹)£đT y1C2¼·›(¯>íQi’%냣+>CE®#ơíß%E O+^đ—©ßọ\ϬEĂ05—k!Ä(=qvơhp@hØ"(ăÖØÜŸṢ³ÑrøË–›˜:¼”₫.JsN5î–wªäZ¤Ègs(₫9טL¨G`ÂeDå6Yÿ«-¼mX –=•Ψ=®Dmx?v÷aF‰«A}ªûºF³a…Zê ¾¤>sJ.°Óx¯|å÷¡2Eü9\à:0©‰KtÍÏà·ÇNN¶:køyâÔMĐôäPp2»´ø˜T²ØîUÂz…bZzߺfë{û7µáèCïÁOÉ÷ª-ñlS}Ơ¨x…‹[4S*xjY*úhƠƯšԟÊ:é¶3Z§ÄÖ{LöN¹C̉¦†•® Đèß2+×6h²ơ¨=ø´(­ÓV+«\2j@w—K7ƯAüñäXÎíPˆ„‚—]‹^Œeë ăÓ‘ #mG2d̀ ~ïbçKK…ûºÛ`“5Ñă=cằƯ;/úÔ/}Í?¡E,*Ôåèn?xqE£¤ç|ß¹ˆXẽÂCskĐOâ¤sö­A‚=ºu\‘0¡“\aàpɳA·ÑTiƯ×  à›A¥SÑ^Sué²ai5È–g™«_%„D¡Ú¡´²ûœ‰D3\; ăÙ¤̉%\^±5"s‘‰Ê¾¢̃̀:»¡U4&`6Ry“soèĂ\PUâËÊ₫ú‰ï¼µƠƠbæmPèˆÍ"7ö„Đ-E^Î! …OJwÀÁ>g]“W§å~̀$I®¹ø&çÙƠ uqûsSºpO½´$á²PÍôƯơ Â|ˆa †*l/evó:;E±å»×C8.´ßPf—÷/*Œ–ÔE„ßâ[ó°‚& 2ÚC,¸©Ï¤Z-\B/„đ)‹v ¾qă{D—kĂÎx:ºße:¨~ƒ¨ÓIZטå¹qsí I½é`%°Đ!®cC]¹„)>2ô)û́γkm^½!D¹€^‰]¼3m›Đ¸èhî{Û1“§Ñ¡Ü%Ăç—ÔyèÜÈEßkcAü~â„C×à[â¬1¾̉˜q§w漦ǰT§øˆI ÷!Í©°a~ÜÖếă†lùqư8ȵæM›Âe5öf¤v̀Z(ª¿WĐºŒ¨?v ;e0 »ôu"YÀ¶ÊtĐ wª‰ ù¹e§„Qï®9«3GÊ]µÂï·J₫̉jƒ̉¬ÆWX/ 1 ËYØÇE®$Rïñ¦X˜'Ϫ_\çv¸–["yh£4ÎylŒH&”×®"O¬%"w«¯<ͪơ¿Í(¹[]̉>Å.ă”Ú̀~ ¨̣y$µ5Ù ª̣Àó­OäÛÍƯÏ‹ÊIÀç©% ŸÂx¹€Üô$ɱ­Ü#„KÖ“×îư|vHrë¥5Üøp×›bׄ²<½T+eϸ!è'cc˜9¬½Ag”QU“ˆ‚@–8åÔ×LMæqRàAóno{ ¨Ñ*tĐqàá2ă‹—·\ØäÚ̉éG$ZYÉ1D'ß;ÆÅ-VŒ@•¤A } çåF0í•ÆÈ!ÀmÑçzºú 1‘x®̀—Ú¬2$T;hº©§́ÙKc̉\ïơé́©ÏÖĂRRù*Öúå.⌑jºz”îá¢RG₫.ˆ6"ßá½Ú’aG™×giºi‰’GÑÎÙ½.̀ü_e(+ú¯ÄFQm}-Úg–ơÄMÈŒ)  ½ èD %ÊZø¡Ÿé¦äû’óR&`+v7‘øFÙ‚°—†le„ÙL! ¼PpăfÚP1Ó­¤øLÆrS¶Ysט2D$º̃éæDÎü"3’ØÁ¨ơwc%¡d;Ÿ…}2eaó° ‰Ơs@2"̀}£OÍèl)×úù™Û®+¹&moÚÿ^ËDZrƠơyÍÀÆ¢™Ç£fẸ̈ âû«&_EqgẠ́w‰UxŒr(#M-UfXúl3t£W­;fbÅWŒÓÀ~jêDó-ºƒ4 eUcyîf!¥fæK”âBđ=ÁƠăWhÊ`71dùA‰ª©ƒ¸á°Ûü¥CôÀ\ H˜ü³hñ£¾Ù.F"l—OÓ­Q¡Đ±ấjÆ8!æOä(ïÏ+jfL„¹âFÓ©,!zĂúFt÷¥YƯÊ.éz– T \è' R†¦ dºˆ&R/;'©X Z­đz<°ƯV/ »àÔj•Œ~–_¨ü%¾Øà Û®?£_'@0Yù‰ö›¥ÈKÛĐÀ­́ư€WD1Âñ•ÍQâœÜ :-T2][VĐ„ÿtƆ4…üÀªW˜¶Cÿ¦êÍOZÜ?é 5«˜†¡Ô?’Â5::j;ØÜô]ÇÄ“}0óè‰É1íËÏĐUMANǘ•·p‰@™­ÇQ­xÉo%xŒGŒ¼s)'§L½”ÑbÚâfûĐQăIL¢ªÇFf:¹¸4íÄŸX¡ăơ Hï”ê9́Që×vN4›*~æj†uOô0"̃‰Hô¶ù%`¢i(%Đé8CƯ±ˆÅ±wñ;tZơ†À’ èưZ¡>–Ûd˜µë¡†ŸgN8:̣re5Ẫ/¤¸Öt&26וŒ'}Ù E„ï ï¢b`5¢¯¸¾%<®  ø÷ Ă‹<ôR¢)'‰çu£Ó§R£Ï2đ J´MNî)4|_ĐaÆ™Â÷¸ÔÇôÈJ‰¤Ï®³M|Ë–¸èOHW’É|Êe–¯äG,íÏ/ûD₫̃æ h¶ûđ­7|#J{¶•Bó₫gnƒ>ïU«2O h^F6Măı/[*;³:è^hÚˆó¢Äeá7?í6Q'Ơ¸.̀dªJ¹ôVÆ-ù¡*uđ0ŸH̀œl–qTÑî¾Ô>¶†}k•ŒœḯeÜ(ÁÄ<Sçă2L? yG³¼±(¿×§ß²B;)e™¿ Í·9=®5J¬Đ–¬Ê¯È'?“Sgˆ®¹xy¥ÑÜẬIÊy{M ‹É~“Ṭç9pƯ ÓĐTvÖ0 ¾7¯D[Q~í8T¦Ă¼4UáƯ`̣&vz/¢gª‘XKnƯͶóº+µØúé¥*ădˆMÎ aÓT‹ë}¾Á²8€+¦:êÈ®²â?öơP̣•ƒ ó«I:̣çZÖ–“QĐü*[_éÙ¤{Ù¡²âN«ûD¼Øä¸h5ˆû1JTÖ@¨s¡¿×úÛ†œi± sÑỶw ïX½Ưuànv-ă½º!^•,l= ÍZzU'ŹmC Lüdž—¿á>pØ¥wiœ̣Âs¢igâg}èDX(„KÇ^=U–a°ª;}zâÄö;Χ‰-”œ2+U9dưTë§?_*ß`ư¦ºCÊß’”ó¡•rƼ¶ơêÙw˜J!56öu"VO=ÁßëÁ.…æĹ{̀ÚơHøñ{;ơM/UºVZQçAà}¡xîGiâD{I÷ ó" çLk»r5¦ûăüfûÚ®”Ç~PÚ®@ƯxÿÔn.ä­ŸIDO¾Ó“SzB¥3—›ålø—ˆ•Ï"tƯ^rÉJ.FWGÏG(¼íÊwêÄ:iÁ 1Ị̂‚GơºPi¸̉Ư+uÙ^I¨’º{s}Dz}ưK«hÀ°€r¤R¾Œ̃~Ê mµ°6&HĂ¾ĂE…g¡pÏ̉Œ½¤µN­÷—¾£X-©bT–3¥O™²FÅFùÅV1I¨­2Đ]!éÇ2h´›Rü²$g«3T“ü*yí–8đ§‡á&d”±Ă)-l[p#>¿SBT¾ơ Blùç`u°®öC¢ÈêcƯi¿;‰B˜_.´1ûzë+\BÈu7ÙP̣·ơ"k²}»Jf•M!3ÔÓƠqö Ûuê9qŸréaÏQÔÍÙ£²Çé²ăB[4́迪WS¡¤óŒŸâLZĂm"\€4p§8$CïFµsăp§fƒă…b©ÅSy¶IŒe0/„wƠ¬6ÙÜzö€"]äÏÓ’ m¨d ­£q½o±|i5}ä’'/Y½/ứKç† £øº!+®U-2È™ p;5} :ë YXÙ‚-4+Rö'ßäÖ;µL­¶¬Ù“fÓDåàÀ¿á§½¶–§ÀÓwü4'RJ„;ÀW3‘øàbg@¸Æد)jØøƯ#mBCÂz"%5ˆœÿt9¬̉m˱V (Ñ)í›äø>(êz«ä=4:Ø„¿;~æ'× #ît̉ºum0§3愹‰4“è`Á|ĂæûÀ$ư@1[Œ;àutè´w¤‘hfù3]äUàô=‰‡¶‹Idí‹vE¼UÁ˜}u´Ø©Ú¸„ăg¿ªäKjº\(‚Ta,¿”ƯÙ÷Œ²Ë’ë͈›Ø9P¥5‚Ơ¾ ÷ù=K ¦‰*%Á›ÖÈÎÔ Æl[G'b(œŒâ*cÉÑ`.ûx÷]]̉́G‘ÆÑÜ'nF»,̉àÍÛ“‹Qjf €¼:¨ÁT»È_û°™sSèc¶Úùª#g1’è;¬äÁ̃Ö¾UÏxPu|œ‘“\{®Æ+U39ɃDLR ềƯÁÊ_fä/JêS«GçOĐ PÉ1”̀<kb?³ K6æ$"@¸Quï<…é¬=Ù½¼åÆƠb–G-tM¡Z‘ô/–f–₫‘‘ù ’§*ƯØ?ôË\ó×È%ËsIÛF9æ[e·±i>²|ü%ơnh¨÷^]'·hÉOƒz«e«S|óóŒ!_6Jfë”S‰èµ6ÔzCæØË퉴Vë[媶ó°óĂJṂW=·ÇIv— ¶¶Ñ!̃Ûv₫½î\| rÂ+S9{a•̀3́8â¥ù´8­ñF­ÙÓÂ&¯æ¨íEJî™.…º/ä÷*a È–¾käÄ ß!®bV1y#™,Ăô9ßëêèA5³9]Ѷx¼¬üeJÆăè©D½„i&)¾¡œẾ̉²Y¦Ó¦¼µ ư¤`«¥è1;cz|Ơ;Æ:O§Ưÿœ•đªöú3Œ•‡ăQ₫%‰÷\'d0±÷A í-Ö–FÔî¶j«Æ§0 4d×y3ûPxÉǺôÔ;GjơœjX¹9MÁ±J§¶1`›¤l›—óè xmzëçj̃º5g<™Å@ƠmÚí|XiÜçí£&dËÀ”-à¯IxÎ!Óˆ[¹Tn¶ưè ºÖ‡Ú}Êѵèï•:Ës®óí@¤ÇL¿a$N“ï6¼'ˆ«¬¼'µ§nƒzm¿è0H”ƒn+#e*‹÷NHÜ?Ư6¶2ªü¸‚Q¦t₫Øô“\ƒ­ưV_Đlpb‹ûÔ¼ªOr ¢Y'5?w0ñøÜx‘ªV5¼”wçóE:É̃ˆ²wä`Yr¤DÛ–D¸Ư–Ä7,²Ç×KF,Ø×Û@†X+ ¾Ö”ÆôK4îP̉$}%P4ͧéΛ@ç,ÔK`Œ‹̉"] ̣Çx•ëbܹ+^$÷eWè/‘ư6O Vd3y™Zaiv„V®XoÎ:¤̃%E)˜3Ùß²´î₫®ªZ"h¡†˜î³ÂÎ j!­¨ qC×:0Œö20ß@ÑỌ́¯ºUöïb—° Ææ4!lñÉÀYDeÛ›\¦ Èo‹l±̉=@Ó•äßOän§ô j lT‘uå°Q{O=Öp±à»XMøØ¶n§đơk3m¾„µöÁû:Ü»Ạ̈˜ ËSÀZ²wkc›Ä~âÉ`ájV áaïÙA 6v1ͺÎY„.ööª& 탫Qø[Wí_Hœp»¥ d(Å₫ñÖ‚›E¢đ ư= ̣ ?{[¿Ñji¸^סÇT;ăfWhuyw:ËúAư-ÔÑ7ÖK¤8á¤C/ƯôêȔ⮒#×åue–3vüzÁß?Sü¸S™z*·®™„t‘îÖÂâÎ>5%2ßûÏv¢4:¾—¯:o^¸_ë,{ßđ7(AÍN@Ê—m»öÜy(W2^„/¼Ư²£X‚XilË6—Y‰—U>Ë«QÛ†rvF&9F$ưøª›‚öÀßjç‡ân!K·ó«d¹̉Ó4†}’¤R Y5’B xügÔƠu¢û¬×¼ûÊÅƯ:#pLTÊïf(SvgḄễÔÅ$$Fơ5…æå­ưÅ“,ÈïĂơ”u_̃)ơÿb»i¸ú†¸³Àƒ~%û^¡̉ ¶w!!C»c¸ÏØ[]éF¢íQFüăξTMWäj´gl÷,,%å.öÖ”;ư%q¶²¬û ¦ Â~†`ăóY›µÛ{ûsa„ÏÙR¹ç†•‚Q.…6á+©qPúÔ\ˆÄ-Ø{%ú;´x¿& 6rôm¿̀¨{áÀ7e´ÛCó#̀Ư¬gĂO¯p>/ƯóOmrî¸NSäKSpà®đè°wơ¶Äq+–Đm#̣¯:êï ₫ŕ-,̃·}¶ é+¦Â¾₫Kƒăû^¿`qÄ{8¢L²*G\,Ïféöa’[CO-}¢ˆ$>”ưÓ° \¬!µå¾ ̣„pƠ/\ y. ûOÅy¦°œ‡ÎQÙx|öؘXVeÑü—°Ă­„SJغ₫i-¶³É†ßÑjÔçE43’"_ 0ƒ² |¬àW·!•)Xă2²,hd.s9¿•=!Ñ{U²¹K·Ê-S½n€üÁßÀLïǽ¿ü¬ơ×¢)L¤ºî§Ă†ª̉PÛ™k¯Pîurœ¤<Ô<‚ư†çê íøÍt̃₫{öhŒq9gøÜ(ŦܳÀxûµ ,Kp‚‘=4~UÏ{k₫â(QQKJöƠ¯₫́ËtĂ™›8®æ¢ê/¢m/¹2̃ÇrÂĂ₫ «­y8([o"hü|8lƠ±øƯB‘ßœ~µÎ|¦ÄïÜ®\•YȦ{k.¾g¿%@ÇR¤І‰3([{Ÿœ”Nzuó5ÂëÏ-*Åæ.dø½@É2Éë9”ï“ès#ëb'C`/}dh/guQ†̣ö³º¦^Å |-´¯I"EN»µ€Ç"MŸ*Xßÿ™e™yøƯŒbú=Å p†́ÛG—Næ%€ eq§…¸…4+¡…«ßœnÛoñÏLjwîs¨PïP_­½©>‰vÁèk‚Î=̃ñÔ¾yóềhj̉wIă‘â73—¡èQø¢­áe¿q¶}…ă-Ôö3¼5ĐÉ“GÇŸ»d+ø°§÷aĂt5:•Ÿ̀~\YưÍȘyỷjËa₫v®"9sQ£æ½jŸÁK{”àˆ¿È\†S _(“ƒ˜â:Lç›D©‚ơ&́ˆÏmA{AöêÓơ[¼ѧö…ë†ĂjôgâF„ùX²¬†=rŒ" ª›]¿ML€âàÊSˆßöi|¯ÉVk‘Ăp!p¿OZ_!7ßµ Ç Ïym_ê3égø²6¹Đä;Ị̂¨ñ­Ÿ—N˜lnÖăua¤O/ÆqÆ:ö5¶₫ß6KêT±+€‡Tkd½OđZơ1n¬÷ sËó;ŸTçOñ̉D­ơ=…ó!#†Ù̉àĐ‚‚¨BV÷b:É,CPâ2BÊ_`•T(í©LÊk?u>d~H8Lûh5,ïâÜo_Ù}TƠ¿!¼—ß…œ?{}¦L4ÎăÙ'R‹Ú2g÷6Pê™ñê@X…äøwóż²q^âöÛđë9·ñbJ}‹(’xƒïăBd.£|̃C$XQk€Ô‹°²ÑÚVd{”¸̉ûóTó—Ûüúö5üÊ¢ ×|Rè}$=ëŸơzv£Ïô&§ú|Ñ B³%º²sÛ}̣ÔRr̃)·®@ëgBd‰²űŒ$V‰vê~ĐöÀJ3´$ÏÉÛ–ïá5iø,êøĐ¢"WÚŸ «µÄüeLÚCƒr_Ÿm8¯Đ2q†HÅA\~Q®‰ï̃"lÊăÎY_…PöặWóƠ"½Ë̃ #µï̀ˆhÀyæ5áûI–×Ú±§†LưpµỤM躰~jÂ2ơ yµÁ=÷‹9ú"OA&₫Ó)‚W!S’I°‘²=Z*“Đplßvx0Q÷ÁiMNϯ)R¼ QúXâÊÇo›\”£(ï­ïöaXÄ÷¦yL?¾Á˜ä£ç2n9•σ4§íf£́‡‚}]»\x ‰=<é/ŒJ+æçÛ7?J^đu)èfÍœqʼ¤ÅÈçĐÀ{½‚\›¼«5Ê‹ ó×çÑ̉Iª̉Iªa*Ëûr¨̃°Œ¦a/qd= „ô¥¬ªºăÕls êWp1¿ù¿hHTûØ@¼7·MáŸéÇAæ1‹¹ê["@Ŷ.qY*µ%jz5E‰%´SyZ,ÎlPË5î!¡² lÂZêAßf ^{–˜s(-Püe?Ô¹5Y#Up®¹/:‰˜XTƠàa -0¾í[¤źJo£×˜=q;ꕲư›ä­ù7MƯÉT1H¼‹¹;È₫±MdÛ¯7(´¡„bZ8Ê0†6ÂKn@a3ù*́À(£Ÿ¤ï[½ù Ôwº%ÉƯ¥ZËÇ4¤)„0żc̉@¶\[º̃Èakñtư£_.é×èñ'U§%"IÙ7Đ2Z¤aä´m`«¦ádŸÄ¹›_Up@ ÇÊ”n®«Ù{ĂEÍuCϼéa˜ÔP.¿Éưó•±.á“ÖӬ߯¡p§0oÍ%#¦íí8ߨ­ºR ̃&ùF[¿‹KVï¹°ªøˆcáI¡wc+”4RWư‘zăQ°–­P:OW~Ç, &’c-ơF°,ËßßS@ƠÆFǬW¤6Ÿ6ñªJ̣½/¹sél¯F¢“œó†Ó`z|íˆ5I‡̃’ñO¾LØíj“Z¸¯;CO²d}¿Å´ SJ),‘©NøNmÜÖ~Cùÿd›ùsôa:L¹xLvăö†#„ '©t eÅËC™ˆ}•q#hàg AꯋéB«Mjí%ñ#’â°ä¿Uµ*‹Gü{[Ïsé^÷2'2BÄoÀÏ”µYcÎ&2†ùƠØ&<µ‡ñ\ˆçÀ"اfÙSÇPz‰\å+‹=̀0ó¥A÷ađLùW,'̉Tb2²f¤¬Ă'Ѱ«ƒÉ̃`êÇ…’R¤±P¾Î8jNƯï>ºÄµÆij§»Á ï̉¨êú¿ÀK BúiTYÚ¼í&RP6ó2Gº+£6ŒmÔÈÊ\Ù³µư0N?ă§Åp<ơÎ )èĐ5ºRç-·€%8GgÁqàÔăG¨ÂjØ?™”đ@̃«»|vÉæ¡Ú†bùÿf,W†₫‰ÿ¯\–Ä"̀‰8Cđ™`5x+»:eZ¹3dKèL°đ÷Â8.}%GÉ´xÂûZV'·MRS?r¤nÔ§ˆbà§Găpm‡“a@ç̀6đ?ư΋†ƒÓ„"OÿzQQ!äăÂkh’¼đrù³Æ#ÊÆƒIÿONˆuWäå=FØl₫ WcEm0Qyº–ÔÄ+ƯƠÔĐ3»7Ûû0!róUˆ æ̀Ä‚³‰†«¥Y›i—₫ïTö|Ñѧ°„háÑKm̉ºu+9Ă₫  ơ ³ëeypCÓ%̉ÿ*3Q,t®£wK8À±ÿ1Ă5 .‰dKăÄ "0Ñ­dẺ89 œkÛ‡ñ;>Áă‘ăX3Ë4È›@À0rLŸ†–ñ9Yhßá›w' åË¿̀2°¯"• ¦30·‡QUñ "›æ„º3O4O%®Âtr§Eø´«ß̀'cñXà°ơ #ë₫ùƠœ `–?lÛi]Ï#.GYº¯†a˜èă×`˶iVR!¤çc@9¦FƒLÿ{»–ƠƠª¸{YâT9̣íĐÿƠ}«[TwøźBƠ ̀1¶¢~¬\„Ë¿Èr«GÂ+K·[°´g_éhTÆè̉đ/}×8üÿ·q¢¢ọÄéªƠ/ûÿzáß±8ÊFĂ‹ÿl1]#D&^D9Ÿ™›tËÀ`̀·GJṿ²8¡­ư_e¡ªô¯–Đºr„à—…¼RnG  ü,mû ”!r¶p‘¿¥Đ“jzTB₫‘M¤₫uµg /Ÿ ø¸‡³qc‚̣®ùøM«Ûør׿â·%V!!~ÇóFy›n1đè¬̃G±Eí6R£ßÊ~ko !†±†MhB¨¬“ü8ë ¬̀ yù8$\ˆ(Bêă«dw6—»Yiy>=êự qÜ™ư†¨<­w2ê‡Ïø\Ơásbs¼¨}÷TƠo¬đó†nÁ–wÄÆĂ€Ty†+h£)‹¼“¶BX› âăạ̀§ Á×'À•rÚæh)ÏÖLä'"Ñ/\/üzeóUt Ñ@’ /Œơ\E÷JC«ơơ‡EÔ*`êh9 c.Vº_˜ß”øÈ«lRzøY©#s¾́AĂ¹̉ü…Ä́Höđ—ó[‚;$Øë ¸jÀÔ½ º¡ªyaÑj„ùª äjÓÙZ@5’̉̉ó0Ï¥´Vó ,åBתiä^“çĐ̃ å²)ZICßD1ư…q‰Ưùƒ%¾sm/é‹cB<ˆt'êàU`bê¹Êu†™/ˆ—O/mVÆÿRøÓ… ËÏLŸ}X»ĐÆ/eÆèØT¸ZIÁù*Çyđ›R̉Ûh ?– §ă¡ŒIçă+{k3%åñ̀oVˆ£W7mU‚ .~¡NN>¾OQMe@.¯ 3Á¥A0Ï^q4ª";,è̉ØF%< Ö ,P9Îê®ät£³JùĐMíÊlgº¿Z+\N¯ê9ÛøáEo9?₫â –ñqë! Í̃à鱋ÙP—"n¯Á#chåÑdi®^Z•WÍÍ^–AëÉY–àïB€ö¼-,¯°»êó(6WÀQé§ú†Ëÿ½Ñˆ••Û8Ă'yêXĐ&o½'Ư»ÉÁdiC/¯ñ`/³·Ñ(¨d¦Êû¨k¸Ñâh₫ƠṬÏHC¤×i™Z­¸&ĂăÔî5çûd$J¥ëÉ{KđÑî¿PöÀ‹ú‰ endstream endobj 1039 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„ ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ĂĐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmÀ¹ÀÿÖ¸Íá,…”₫„ Átª¨‡BµƯ]€`1 XR|K‚@·ÿ¢0̉@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aơ 8G¸+!#â4AApœ÷?BđÊ:âphiOOOaˆ+V…qçz"p@c8ñ€Ă€ç-ơ!®đ?­ ¸¦́oƒ Êç ÁÀ…  Gb .îH$dhé Đpäo°îo€ đÏåÁÂà…ûă}üå BQ®h̉tÚ#\à@u]aœNAÂÎ,àñ€ \ vÀ¯̉!@u%# „ĐáŸ₫°P Ă c.ç=œ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ĂuF¢<‘>Kö$̀₫¼ ˜;ZÄ ‰ps‡k©₫ÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØĂ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0t₫ù×ÉÀ0 éâưoø¯‹¨˜ikê« üiù_Fee”ĐGHL($*‚AâRÀ[„ƒß?ăBêø_-¤= x́¼^ÂEư]³Çđ₫Ù>à?ƒé£Ô…yÿÍt+JøÿŸù₫ËåÿGóó(ÿ+Óÿ»"uw—_ṽ߀ÿÇqE¸xÿA¨ë#¬° Èÿ†ZÀﮆpwưo«BX%¤̉B`qaøo=«đ‚Ă 8¨ăoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.Ă KơÏ:ÔṔ|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) 0́\øGl¨;CH₫‹„ÄË¿Ö÷‚Că(¨L°SupËA¥«§Đ̣ ,éfêÁQ¡Á‚û¸.µa›…x“¬̀Igê`ơûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8́bÇÏö.Œ&ǿ³qÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓø₫UƯñ1Á“‡¡Dư–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(NM¦—MUœ¼Â|:ị̈Ïœbtz;+°®çs|ÉƠú[K[Ö7xÛo9Ú&ÚGƒ¿àÙéĐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶́»³vXˆ÷ähÇĐüOw-ËwƯÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µǗ²HƯç̣»{>xñÓ¼íÖVeI·(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­Ûă*ô+Ă·¸J|ÿ@÷(% äÈ~º̃Ă$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù Nêеx̉g†Wè‡Û${̣º¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Ẓ›—èoÓ-„ Ü—ßé%.(̉8ú ]™â}DưÁ¨7h-₫qt‹̉üNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»̀aÙjĂqfw†²¹ú]™Í¼`î¨ûa?yư–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîw©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Đđºưø} äxÜĐÅê"7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|z̉2”CMÍaÅ̃=~́œ+x?Ú.>ư;¾¿‰BƠ"n£L¶¸~…”~ú¸{đ¼)04I7ræ‹E]µh•©zœù<‚¤ƠK¾Ï₫ƒfÍ‘%‡µ©Ú̃+§tẵHcª¥%Æu`z*팋Ô₫Ît<ºz''#Kó†ù₫t ¬₫F}€ Lécgúr Å,ôÓ×Ü2ŸƯá đöv@߬ۋ}EóGûßêæä¯L.Ơæ~́E}3öLY„]Ï€7mD¶(#WÙÙ^11zm¼́œ†[™¼“Ồy+`Ë 8ƒk1W’ḤÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ư-&í…‡÷T…ă}₫W:U¾V;ïFx^©cÑÛÈä¯ëŒôđ~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Đ7óJÆÁÑäS"Å’í₫ư -gåøđîS—ọñ³wÖe?ĩ©́¾èåAỵ̈_À’ºWg†Ă ̃:¼³ª‘±N¦¦ç̣SAcg–3Ơ’>óxÙ™øaÚÎ\Íô™“†­Ăp˜Ñ³ªjJ̃¢Ï2ư•FÔfÁ*h»Ơ·2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätĂö³ï‰KrJÜA3ûq1Î"ñå<»—̃ —Ö}¤ ¬Ó½k~ï™Ưñ;Ù– ÷'FyµQçê€êwºÚuc[ëôÄ™¥Tîe,ơÂ\L5Ùz‘ç̃p³îØ¥‹Ó™‘¨1A_k`…uÚ̉ +¾)pF¿œ'‰%Qc̀ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹́”̃€jO¿ª‡"5üÜGSvIÎ ?ïVy£¼̃×;•Kñʯ6y™Jbå]LJ¼¦Đœm¾úP»ùú!™G/«3$$×’?=`ŸZ@Ỵ̈Á^‹Æ̉YXQl„»åÇÓrÚ·gåơ¼¤mVB÷nD3_Ï̃Đîḥ±aŒöbëØ$ọ̈˜2Ùéú‰ÈJ8ÓaÚ—3̣̀38½Å(ñ3ü&«t̉Á<3F]C…¸º¾kú*å+&z{cˆÍ1êIù¤ËtƯïöĂ—/-ÿăÿàtÓ¢#Ku]j5kkÄw+ûFƒzä\ß@dă)ËÚ¤n‚ŒÍ̀(Y[‹«¾9¹ăn/ïG&FWc·Ơ+ûùÚ–Lñ₫öă´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Ç2ÜRk".´0pLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwđ„ܹ²¡•ŸÑ=zó̉jª₫ơĂ7gŸá([ø…f ́ZáË»Ṇ̃Lû1•Á«dUOÇ›,H÷Đ¡£ÛÎdyAƒ½J¹´¼ÖzK̀èh(iö¦cï– $U¹̀¼{ï-ǶSr/¡ÈŒç:}Øư: êw6‰D?~©ôرƒ¥ ynKªư6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+EƯˆiµ1ê ¾­â/₫Wûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•₫EÇËM¬£p₫ ®˜½,c-ö½ïÅîpP₫€ÜZœbEs¢đ¦èưyLM¡t/»¦|)|ủp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨̃Lc¯öúyË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×în.n«r>?óh‹jÜu:¥#QHÍ9îWbiX‘.ÁJ·Z÷°Êh–‡¼¬Vpi«­†2Đ/îïÜ€SäO­ áÀ>°ˆôÄÙɆ&%LŸ8‹,û̀‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Ø̣f£»Aï‡ôḤ̉ä5Ô$`ƒUâÆ³ǿfPRä§IÅÉơ₫Kª”#7¥d.=x²U{¶½Ès½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸđO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄĐ́̃¢ä€—ʬö_¶è.ùïkœ‚ÔR)‰ fÁKơ…1^ˆÊHógn—â+'–Ñ£?;è_đô¶·ÊœÆº¹~;UÈ₫X¨S´'ă³»kÚ$₫6´=çơăbư¼ÍQÚy²VçùNؼ×+-G5¹ âđBëxk Đ4¾Ưºù›ÖĂă¯¢3̀å7© Ă.¦®wYRV¦Æâ¡î'̃MfÆÎó$±„7’º¾ÖçoÛBƒ}[îæ¿́â]ĂÏ­»úx¼|Ô¡ăÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûƾ›wú=¨:¥É)ÊC*„¤̉Ùô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SăTÙÙ×p47¡µ|(e`Ï«Ÿ;VªuƠHx«ỏ íưÙüC/:³xkLåÑ}åÜ…¨ƠJ¹ĹṃC¦‹[¯¨ơL[>œ5Kg5TĂ₫E¡x ÑÿAu?&uë2ĂU:[C“39™3µĂÖŒ íˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJƯ‚Hëø‰ms1À§ûJTe fRƯ=]¨X~4öÛ!µZá‹s±"̉H`{@Æ8.™!êư.´‚1x¢̃ïú‹Uµ:æ¦A7ŸK±,Dg'¡Ơ¤[=û²²‡Ơ ôT 9¥rZ»kÅÚ=¶ßß$̃á3öÚœ_‹%éô¢”t,¹IѬªÉ¼3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸ₫¾[Ïæ(Gé®́˜`ÚN8*6•:íÖ[ẓk—\J¹]đ; tˆ?ös‚ª¡¾¸UừÖ‚ÚÍÆÈáư$Îơç›39;ñ&¹G¾ÚT|g;VYÉü‡=̀Teùú“7­ 2N ¾%½ø_úivMă}Ư«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,Ư¤Ä¤q8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézƠ%œn˜ÔP(¥/Ü÷ƯÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.̉¨IêE6+]rg ´')Ă·—C•ü˜XQ-xß§”ó²‰~ơÜŒôÅăö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köơä£Ó²§)ë@@ ¾ńK!aí,S4§X¯’"Ï·â˯ŒŸF‘…·'£Döă†X¨¼¨’¶wùoƠoj¾³90’Ưa{` ‚L/ÔL9I¤Àî`’5UÁœ-Đ·–Ư¼‡e{®/xQÉíez„_ü©ñÁ¯̣nÓ7<4mt§â‚ø‡«ùøo©nẓ¢…CÔÓ §˜A9‘*6°º©Ÿơ±'sÅ&ÜlxE•ê+T Ơ¥½¼Skz‘.ç̃¿—8óŒU÷ˆ%ôÖha™†À½ö₫å誹ȶu¹F ~@Ó[Ï¥ü„Å̃LïnsIz-Åqµ£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"T̉1UsH÷’ê-œ~^+%¡U{pÜÇÓÁđđ#YwqÁÁƯ&aPíŒĐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+̃ë3ƯGw™sKû¤t4l¾jn£vđEAßú̉=d-[StjZÚ~›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èđ¬ N&F¬CA­x,6fơÍD_ZêI>ă_׿(̀fù–Fí¸‡'QÑ ©«̣‘’Ô‹=₫|©”ñ€çO{îxJ¼á́_đuN+á…3s‰0Íj?oƠ jœO¸̃³û*› ¤·‹ºéˆ2]ăîÜZ¾ dœË+_È?xD9\̣¥WT"ܱeu³ÙWKXÂư•­‘a₫₫øC>ÛOSŒŒzê×x’ï‹'H0%ƠÜ/ ~È 7W g§Đà·Uxk¬®WB=ßp:6à°øhƯn?9GŒ$9%j•èÓÀJ â¾êtnĐ[ê¼Ư(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Ơ´)y x¬eú+,ætĐ;c"́[ÂÍd4¢iå̀ê˜mÍäÂ35÷D½cFºé5­AÁ×Í̃Hª̉%DQtD!Ü|Ää ¦Å =¯„“̃NƯ”#¶×0z₫#é°qЦ¨ơ-/̃/ÍâhªrC©~6á‹́ÙØ~;ÙƯG5ÖºF¡ M₫ƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ứ²̣g6¸ÊåÑJV-L›t£8ơ<\Ï]…p„_ú¬ªÄ¬̣ó•ăsË‚&,yºxÂÚÏVFº —Gơ°·Í¼/ »Ö9X¸Ñă’hî%¶kớ̉·®…̀Î?R+‹’3y‰ô¾†đô5Ö;ºªÂ)Ëày‹¨û0\æA®ïă³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚₫ăSÊĨ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åŸ\£û8̉¢AöÁ+}÷h³¤Å®ôPnƠ¹ç[²|2}u^c(hÅà>¡Hư\ÄI-u¯fïf[`¸9–Ç£x«úăUCαwÅ6z5tz0#K̃ÅiÖ²¹–Ñ÷x̀¯ơ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 1041 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓưû6("LAB¥a”̉0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘₫3ßó~ï{Îû³}?÷}Ươ¹¯ë;NV=C~E(Ú¦FáøAB̉ÀûÚÚê a ˆ€0€“Ó‰³‡ưmp>„a°H4Jú!îc``̃¦ ÆáÚhPĂÙ‚Ä¥ẢBB@a!!©¿hŒ4Ṕ‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èĂ !`PŒCÀđ!`{ !‚„áÜÿ•‚KĂ9J ººº €°h \›èÄ!€0, ăƒ Ô;À₫Œ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €₫“îOôÏDHÔ¯`0‚vp£Ü‘(8Điêªj àÜp|@0 ú¶Ç¢ññ`0̉lƒüj TUÔ‚ñ₫™ Á qX,̉₫猂?Óà¯Y½vp€¡pXÀÏ₫”‘ïî‚–û…vEy₫}²E¢ ¶?Ç€:; £NÎ0uå?¼ đ ĂÅ„$%D$Å0' ̀ ‚üYÀÈƯöË úiÆÏàíéˆvÚâÇ€y#maø€'́â0Î0oÏÿíø÷ ¡Hhƒ#Q€²ăÍ0Ûßgü₫1H7 ¹~  ĐÏÏ,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ư€ü" ¿°˜$$,”À?xÿ;ù§¡bƠQ¶h|Äï~ñơwÏ.HÀơG!ÜÀ'ÓAă© rưĂt !1!₫ ôÿÍ÷_!ÿ7ỵ̈̀ÿdúw¤êloÿËÏơđøÁH{÷?í›x,"Ö ™˜ù™-₫̀*;­jàÛ\?̉3Hs4~e¶gÁ₫Zkÿ®4v/DiÑÏÓ†ávI¯ fü&Y°ếwT<®¡kGơj DY·Œ¼½¤æ icäàx¬ Gë_í + €Æ¦êmư1đ–Çg‹êjà 0•ư“®DÜxQÁé™t_‰Ä¬TÜƠ¸ø8¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒưd¶³ ·®UyôăŸ6÷·÷F¯O–l 2:T µ-_̣£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªƠPpgít<¼xGBüÖ¹½óe®RïI¦GĐ•n¾l“³x%lÎ_ḷ¨q© Ơ‡_ëYoơ›Öz.±ZÁ½Ê\f@₫n"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°°…€Ù2?Ä‹B¬\éI¤Tj°À#•Æëư$ă>å— 7 4U[¿Ü\Ư¦RO”iƒÍŒ%ÈæZz‰¿ZT9uçª+è^®Br«4)O†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ƯÙfˆ™è}‹d€ó?ắ÷–ôñfµ|ª/s/s¬ƠU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒĐŔR’l%ªux1dûä"í%q‘Mê’†ư|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ư;„ÆÓă’ß®Q±đV·z<à́Dô,2¶NÙ|¸ÉNóƠès=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶƠÎSp.—‚wn•C̉e`aßP³èÀJÉ^!M$´S£Í|{º¿Ø1‡§K‘ ‡‘ügă ƯÇwY2³\ Đ=ù¦ï̀€|…Ç0³Be›¬éư˜µ©€= £~BFǤY œ0GF·¤¾B̀ÑŸÇ̃ÖÅ–LUTÁ}N^4\aAT|ƠÈ́å~̀üÊ“4¥0í¨l©3ôĐ—ñN©é‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–̃_`Dyé²…]søôp¥'µJùú„⻌“Uf²ƯÜĂÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ă`#̃qÙNOMUyI‘+PNqÅÉúÇa­hNî23µAÔÙg÷cß­Û]ë£'ơ>)Á̉§:¬MúñsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZ$n₫‰₫Dđ ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6Æ]Ÿ̃÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wơ‰„ÄRÓ(o’|@"Δ¿‘ïèùí9KË̀¼kî7×¾́LƒË8Ơ>×đa<“Pb9^{̃ÔT³s®çé^Å  VWs[í1ÍM£‹MöƯÜØ½|‡¨:́Çä`Î @n]êz”(¤Î8¯"u¡ƯɃî:˜L7HkÛĐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Đ’Sº(âT:U‡§O™>y“²Èçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .á~‘ºuséè©%UcíñƒœÀƯ…1UѵÎú½âï_ˆ® tâ J,j‹ Û]Íđä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Đ ø̃gëa‚•ưI¹´̣Ö ÷ă7r×0—oˆÜ¸eÁaÑA›5̉ÓYyP£±Aä}) ~ĂiîªÂĂw6ésÏÔÑÜ|_+Ôç3„<’||/Zư.Ïô ‰!3ÆÉÁºt‡d#̀d=Î?ÜpKTXXă-¿¶́G5ªLº7vÊp©*rPéÙ©™˜èN«¶Yñ² ┪ůªjvONF)÷̉_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúB=t+bÅ­ƒ…·ÁHÜv¢ÄDưfưhc_,!B©ï¢«ÍÿƠíß=»eê>Đd«j?ó…ñ¹nW˜É»\¢–ZéưñKk¨’"ˆ¬°gÊ%±w ơf[0Ûơ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3Ă¡üĂà́DØö€̣Éøb¥[.êÓØÊ–£E?h‹koA€Xc\²̣fVẠ̊¢Ë^đ,ÆæîZtm^q¥MY´‘{¬ç±¨|#—̣Ü̃ $ëÇø ƒâ*ˆœß­½SR3èa¹Ư20OûÆh£ă{n7°}ØñéѨç†ÙD$Áq$‹ŸôƯ)âÔ‚£²ñ;G/̣ï9 ŒǼRÚ»^Êóè́ ½ÿ*öá„}<¿9̃ë[f¿sL«Â^`-iw§mf—Ù,'<@̃àÑ{Ô ñô+́‘»ßVùvạ̊ÔFÉ,(Å*Cd¬gƯ),¨¥V¤cWÛö¶ 8>ọ̈Sö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—̣ê 9æß7ø̣c¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ĂzëŒCvè ƠMNŸ êa€úèá¿À ny@‘çÂêØ ±í>—=³{¸đ†râĂ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºƠ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5̀3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“Á̀@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«́øx™ó1A@Đ»ó8Ơœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑĐ2Ø48#̣¸¢d6­°c-6R̀ơ˜*₫¾Çû‘RŸ%i§sƠ‰G«<,ÏLÁ/́jƒ̣Qê ñ–&Ơ°.ẰB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aĂ9 ºÚ,Jh¥~±û$Æă×ëÚ3^Ă•ë¡ÈÜßhÖ§’}ĐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaƠ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlƯ?¿TÊÏ ́"Q\]”|!¢hΖ·‹kAø̉ĂßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7T̀¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ưªU}íÖ-„ëù@Ù3·§̣?ØôÔnꦨx¹{¼Đ́WÊ8M ̉ßäHŒ4›ơ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…₫Ư-̣ég”ÈB(V½6‰nó₫e›-ă1¥ÜN₫›¸LØ{c#‚°lc₫ñ^®Ëö ŸoÓg„e¼Ơ®~ÄĐ™;Ødº<Ü©₫fép/#°œy=Î܇Kr₫ɤe¾#âc¤MZ€_̉)Gb‰NrZâxÅỶr@zNMÆ_“„LØơ€̉*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚́,×›X_·*ÛYU÷-\&,ÚøX9u{Ơ‹ä˜Œ½YtÍađ)¶­L|“‰@!ÚÖv3Ă~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´đ*̣®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=̀ØđyyUà?3ỏ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïĐp)},ƒ́¸…ÊÁóÓUăG—ö߃N£i£¤ßN3ơêT–—­WŒ$è]5˜Yjçc¥¶ĂiójØ|ahZ—蟅«Â9 l핯ô¿̃H&n&Hó }ó âMx“ÀơHzỵ̈Rk•Ú^i>çp?³Œ¨₫qÿu ̉Æy*~=‹£ó/íưUØåÑ»ĂÊ2_‡öRÁ•ÎÅ˘a‚üǴ́¬¶MûijßF‹6/OnK̀?}" Q ô·§|NÇeiG4í”OÙ¾ẠS¡UxtI^¶5fhÙ"ªs7’à‚“—*=«|öfJ AȸJ(́/BOrg h ³©5ñàÊ5ÉŒ®j̃„áá‰ÙÂÚîµI>Óí…ëeơÍ,¾ôå̃<¼60å)_¡¯aÚ›.ŸK/èÅv=ßPÉŒ›Xơ1,4§Â¸2zß3>o«…¥©$@‡*~°ÖKù7}2¡SxœPé8êĂ½‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_̀g̣ºyÁ$îYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€đ S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à× ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹Æjg¹¥âǼ`×̀œYß’Ä9ÈeÊñ³!¥å­1‘˜«‹¥7  ªÙ “xóơA?öPÅüU¥+øÙ‰§ùD˜v́/Gù¬¼ˆ?ß°?ƒ_¤jƒ_́œ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDơ‰‘3mc* Ÿ&|T²-Hyt(uư³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}năôgyá˜dùƠôjÓÍDLK~â«dâKô$ߘ¬œƯƯ™P×̀ +˜sX¾̀IÓ·LÉæ®|₫Øöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4̀´Ü~›RP×y'щË$đ́Ù1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥Ç9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xỚîŸÈtEĐo­¦«i´ơm’j¿z(‰ÊR·½°r‰}2×̣“éêùÀ&md›‚Eè/½dĂÿĂQ <ÖĂª/=ä&|ˆÂ¾kï xpímTëưX²ORcṆ̃Ơ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖ›»n]^{¦›Â ¥=ĂTd~@Ư $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛƯ#È\®W› Á”Ï{îôb™ê¸ ‡‡.4+ &±›ï6wójóë> stream xÚtT”ïö.‚€ C "0”„twHˆ„0  13C HKJ*¢€t§t#©tç )¥̉ñăœóÿ{׺wÍZß|{ïgïwïw?ÏÇÁ¢«Ï+g ·‚(Ăa(^> @AKKM ñ‚$P”#䯛„Ă‚@Bá0‰ÿP@@@(ŒO„Âà´à0€º«#@@ đPB@TâÿÂEÔ ÅP‡Ă H¸³'jk‡Âó¯W˜ ..úàw:@Î ‚€‚A0€eqœ9ôá`(åù\’v(”³?¿»»;È ÉGØJs?¸CQv€Ç$á±ü  r‚ü™Œ„``E₫ñëĂmPî €q8BÁ“á ³† ˜ĂújǵXóààïƯø₫]îoö¯BPØïd wrÁ<¡0[€ ÔĐQÖäCy @0ë_@#ɹ  + àwç €²œ„đïxH0êŒḄ!¡¿FäÿUsËJ0k¸“†B’üêO€€1×îÉÿg³0¸;̀ë¯a…YÛüÂÚƠ™ßuq…¨)₫…`\$ÿñÙBP ˜¨˜0â€x€íø•7đt†ü ürc&đñr†;l0C@| 6̀‰ä ®¯ÿø§E" °†‚Q+ˆ-F̣Ÿê7ÄæY>ê0b¸'₫úưûÍC/k8̀Ñó?đßûå×ƠSÓ4Påù3ñ¿c̣̣p€¯ 8€WPD1/>ÿ,£ ‚₫møŸ\5˜ “ñ§]̀=ư«e·¿ àú«nÀ?‹iĂ1´…¸₫Ăr3 ŒyüsưwÊÿ⿪ü¿X₫ß )»::₫sưÿaÔÑó/ĂZWFZpŒ`ÿ }ù£Z-ˆ5ÔƠé¿£j(F r0[ ›y„ù€ÂüP¤2Ôb­ Eí₫pæßđ—Ö¡0ˆ. ươqÁdÿĂ ́€ù€ 1Äü!1jCư^ă/‚ÑÓ?ûP‚áÖ¿„'(̣B @$˜Ơc,€—F¡ÖßÔđóÁà(L 3³À ùµf1¿3f7pë_~’Ô»"˜ĂSsđ¿́ß ‡@< `’é 8øQ}EPăI™ƒ;ïÚ$₫^̉‰± ïPö3"T—̉ˆÅrœ~zÚŒF̣t§€̣3ûmy—“Œ…Éï^èJæ*Oá#^få [f«˜‰ë#́±x¯cFÖ :¬¬' ̣L]Xºw#n¶ËXÛvésPxß«è˜wç¤ÎSUnÔnn-ËKÓ¤e7ÚYyŒª·ê5XùAw/sÅ):p5̉,,Q;…UC²ù”$νôæRO_ïeçƯ¶u·€µ}ö—(J¥G½ŒÂ„¥FsïÈ/2?¸m§PyY©Ü’Ư¶î*\äN8©Đ>´Cn›³Üwé̀¨¥ë$ÚÉÑT‰{‘’Ơ';[ö=Öl¢(¶@í!0Ô"ăåçQJ?`uú2§/X^HC  ƯƠ¢…#fư"½ú¿.o₫ ÆywU\ •–Ô@¼¼4äeÚŸvAµSe|µ[)\ç°ư™„ÛÀäÈÊ'F3wbqd¤N¨F}ơÖ ‰5,đ‹(É#¥N­Ul¤û`vk,mÂÑŒúH¶0Z¼€Ư»_0+>«Ê¬üN÷Ñù–@P¯ÖÙ'ooü­RWH̉Ͳh˜EÈ'B³ yߘĐkÈÈ’œë¶²jçéưºr±©’§¯Đñ‘ÆƠ³ù¡¥8Láo–ä6e7:ö¨=)îÖh“ÉÈrh™Ô§'§Ó0, ˜ó7’Í”øaơqúªƯ¶Q.å:¦›2*ÎíH°—º®%³Aï yÚoïE₫Vd+xÜÇEåG ¨¸ØI£vẽ ̣„lyEªØiû±s蒥Ƴ¹8D'änLv>ø9¨»«QPFF}îåB×̣ÚIĐ =­ó°®`‡̃bÑ[‚ÇÏ×UÔ|“ˆÔ(?LJ”²P=T¾êÆÜtM À)ơÓ0£y ‘y7{­°Küjéën¶¾¢ÀyzC•‰På™ĂfEÓg NC ·)úøÖvFÏ•‡Q‹Í¾Ư…ï±[¥¹å è¨=M°—¦Ưë Ô›N­ưè9ÚvyÖ®"̃V´Î`̀–ư#Ä,Z&¹§¤8E‹±èà…á}Ó冷QO› -çóV¢E\Ûǯê½È®X÷’{®•¾8ͪû7›̃Mƒ©¥S·gíơtÍÇ¡d ›ä(å±5†Ôđûë&twmáxÍ ²°ÎXß'+đJÉ£C ëdîÔßÜYç;±Æ¹m@F̣¸Í!7 w÷ÊyơÄ)Fy~£‰‚½ ïd!ø½$gdÜ–NZäÁXPéWÜØB•ªºLÆ·œSăy»:¹Dvjøü‚ûq†Ơcœ/I/}”D›÷`wÖ±c±ç’™$ôà;=¬X7ăŒâ·Ï\]›8“È%A±t|ă á—>;Ñ5m Qûçéă??-z’̉ă+}äRê*¼^pzmxÖ̀³œÓ̉Æ!ấxEÄVƯmÊ2ÓR§̉Ö5hỤ̈ăZªØÏ`Éæ—]Óêï0×îæåC8àBïXK“¿œw§­„äSP=ÑÍ£’6ÊBÍR–çOƒLV’Y°EnkD ê¨ØëízÀù>ºă¹rLIsđT–KXêë±ù i|O¾XI•z€&lC¸̣Ú·¡gêX́œOÊ‚́̀gÆ'[CíêC¦s& w›?a¯µI“ܧ üÖï WßEMå:û§₫&‹›đ4½‘ª9R#;Æ~ĂWºI8aFéæï öüJ×*Öíסsån§–cijË?UKûC¾Jn®ë¸;Ç.§½âÊÑ­û ×̃ñwă‰ga·Ë•Yº„w.¬$¨†{enj‰û+„–É£gnMÈ– ·7Æ6\*=*¸A˜Íkç•yâ_×cƒKÓŸG|öÂú#pú*GpiKÚ/pûIB6˾&ơ‡±…­gÆ7q1Ÿœ ¾•‘̀—Ç~¸z\Á”| ;âœ$.™Äµ2TÄÓX›¶él¦+Tkû6K ʉËÀظI…#üP7m\âÛô<«x.|~I "yèù` Ûϼ8…ă éè¶+G9̃,KN)ç1’‚…&DŒf }₫Â~p1†ưî.Ń缒1ˆöñÅBíÎ =e¾lÛ÷lm±»–oÏ®^N¼xnơƯ <:.‘àëˆz”/¡– ô§Ụ̂V R±âµôö)îŒY0•çüøåÓưº„Z‘*•»Ë¯”íªy%ừˆ»ëÀÂïMüư3ƒ§lW+*)F ̃ë…c=†V™f=¨[0ö¨µuo)c|qe,X5.¸ÏÏL+ÏKAú˜WÏ–öxw¶Ăm—8 Ä5ôÁ₫ s7.Ñq,àZûƠ¸È 4¬@OUl»úă„!c²©ô'aIđ±́ÇÛ‚â8POe’D*3%­A;Á¶Öù·g¾œiM̃ºGI5''x̉Œxô#Ïư£àÄÈ}Ç-ó^ç?dQ#ëâ%x,x:îÄdJ,{¡4¤ ®ÆV#Jˆû9-uÍg$h7·ËĂ›,l°Y«÷—±ˆ’<Ún$gñ@óøWd|¢æå–ùW-\³P–:; b:8Wú­~ñœycOßL̃m›‘­Aúƒ™Éߢ­=>*“Ë'![0@OSº@yê¢ñêŒL¿g“J^u˜B¿tç|P_=BơM6Æ¡è:FO{%sưQ†…1Ôäưé±Ư‹1ÙU‰3׃¯ÔC]†¢%øñyTăR~SàµË©‹|¸Ø¨j̉ÓEwßœxĐAú"©™ƯFå¡ÁN˜ÖXÜJUÂÈ,)1•s¦9 ÷ñâö¬K( c™dBí‘ʺMo[»U÷ &6,?ÛPqákhpÙnăuÆWo¦6ø®’ï2¯m0‹z°‹¸0ˆE’t—(8ÚM‰fîĂK7́¦5ós­ˆY㨠|{Ăᵑ¬„P+®ĂÚÚ´ưĂÆ‚N¥uø &Ơ—·vÑ U²¶ííi–2ăÓÇ7¯×ßqd{sˆ/¤^å”W—ă ä¾²OÜ,jgaLX~)œ2e$`yĹ‹;oÅX/*ŦnZñT,°̣ö£¡_˜"F[íª|8W&4D¤ỊƠaê3€SÚz¯±¡.4Ínr2Çc‚x'̣̀oÙ¿Ür<ô:qµÉë+ă.h$»à8*†ÄT7©Øœ|+ÑR<_ ²00¸o±Ä®Ï?*-ÎzÄvSm̉½Èƒ¥1^àtS²tw"ßV?ôHíơÎÍ_Ï”à˜s _ &?£Yđ̉S¨µL¯ô Öë9Ú‡Í;µR™P)39Ÿ JH&¥íƠùăÄl7_y_Ó=tµÈK -R̀‘,•u~k¼́p‹S×ó¡hÿêƒRWk5ĂáÉÜçê!)÷F»¬ÂḿĐç_p—Ê©ä†m’‰TưµHăX]˜—¼o¢Q(`áÅíl?éèÍ~“ H/°ÇL©Y°Ôñ— á0ö¼Í“ÒöC«<ĂƠv•ªĐëx”R©ïđä"AF´RSÉé#€Zậ`íªưœ8ÔH”¹HíŸíÀ=~¡tQûƠï§băë!9““üÜBëå]­ç₫âÖäí ï È5É'm`ơêd|Ă[&Gè”×﬽̣ôn4lăÅÊ|¤̃ ¸ ¡DG̉•ï ”æS}¥å}öÎ kI¢Æ­W ß­ê¦́~$È"!ơđ̣NWÆ…1ë[5½¯Ûă Q^Sj¥›_kdóŸÑX̣¯Ê¡5ÔƠ²_ôÊÀ}à¸dÉ Dư4ÚÉM/jÖ²v́”®”b̃́bl¿đÇsy`/ËÁ©hWTüóà~W_~°0o"Ëè¥Kèă³®qxÀ‰́3©C—h5¯_k_ƠđÓëü+¡îÉæÁèÅsjöWĐ‚×È|~^FkdÓnBËÜx\Û|mö çä½gßoåWíLH®f(Qáô!XÛ̃ƯÍ2ørÖqjZØùAß§réŸMƠß~91"XZ)"»³'́¦¶’(Ir.̣¡P9 ̣î „’©†.‰6M?%•àG"[!ÏVÉ•¡²̉’“HNæow oR_@‘7|xÅj(AÙ”yZbEă ùÏ._:tϯc/œöëñr+/ªm÷̣œä»í6’ﬕ)Ä[rS₫hwXWKôÙré˜Ù*’¡wÍrµa˜̉Æ›ư(ÏÑ©„U‘S£YÊŸ‰Rág0«ƒÆPÁƒ¯e~ê¿€J¾GŸtb×7²êªóÄ ËXÅ1áäy÷ô¦æ&pMOÔŒµ6¨txăÉ„×tô·Í¶\ư¯È¥ư$’ÂóÚi48”N‰ ój»a7gUR‹§Ơ‡̃˜¢7ûqÇÕ̃ïƒ<Ëü×Ú,ÓíÄf̃Â(̃÷’rôc¸`ï”\£¡₫›6|iÂ8­6`Û>Ơr%XœU0$r|ù º]JƠe¡Íq–;̣MÉú6%ïëåÚ“ ¯äÊe¯´$ 5ïø'à“R~%ägùxiÇØÅTæ¨4đbñ̃´?ÏaGùƒÓ\á‰Dâ€GÊpV’¸È‰@Đ÷đƯ§—Ö̃x°ÂÚÍ¥ç´ï^O"¨øH$—ég@©K3²aO}DùăØLÆÄëï=„»|OÀÇû/5ÑĂ*wv×?JT…o›Dç~2Y"¥–̣Ơ N{Ps7˜́>̀¹ÚÓñJPÖ·7Ó‰t-BĂ`3‡/NA­¥Èưvâ§9Ơ=Œ?{₫ùÀKPºe|sL…À¼3ÙÄrwz(”ú\ ïÀ>¿'äË–ïƒá®ü’O+JĂœ ̉6 ÷„.û¥'vä°*ëԪ͓KoƯ¸=¢éürevy—ÛỞßđÉ>.$|N2ˆËr!"¾b×~J¶²ªG‚Ÿ̀ñJútÈcD]0È@³z₫°´ <7¹+†SŸÿ¾OúXă¼-³Û´Ó©ùëĂbuzåé¡[ªŸM•å]ÆIá&$O.NÑGQem㸻b>ÍLé7JV¯%ḳ¯‹qƠÚËTÑ.¨p|óÈ×¹J4¹ótfIÖ́ư-‰i|®ùúĐ›ô…̀ úJØ?Ó'ƒ€’`Uœ́˜+5¸Ü¥2(ö¡ï#O’±q»e—Í¥¼9iê7ÑÈ‘äøœ…®&C̃NÓÀĂ}ŸQÈ;c•j.g"¶V»£Îjöô¼-eÿUN¹µoùk@ê] o<È›‘ÁæÀ¹Yă¼́-x’ɾ‘zBh0[¤»¤XA€Ö7®ND_§½©£üBv5> ư|¹“‚{1ËH÷Ö$Ư)¦³”·Q₫øKœ– ßÍkơZ2Øâuơơëí6ƒ0Ü̉½§¨#Â?S̀Æh-ëÎÂ`±KŸY¼‚öÂÖÑTQ̣æ@…Ưƒ–z₫Œ>/·ÁTÉe¬´ù J6JùÇæu¹U¥êëR_̉])̉®b;Ă¹C×»µ[ÜGb†²Ëă…ܔӫ3ư]nGo9 T<«xrzç.Ø=o0º?ŒëÖ‹ -q¦nߦ€.>Ÿ¤w4hÊUñ¢ÇAÅF¬ê¹;¹Ç†Âậá KŸY§j̣Yóf5o¯±®"öAÈ÷ú¹™VΟ²%°–öÀ/FU%W$\7F¾s/W{œƯsܨ˜¿/ưi<¡BFk›øƯëú†ùÉÚ)q»bà£H¼øæº,Ÿt)ûGFƠc…P¢ûRˆË¨lN6J&ĐÓ¤;4@Ă¡ë\ÈJ́sŸ;V¢(û&jµkIz“YÙÑ©*<\Qsx §ë«œ+¬₫$FăV~ ™²feDÜ=́¸a½„ î§Œ<ú̉9ÍÅĐëÆÙDæÆÆV¶{«?îœѧ29đuæñ÷¤ñµ€j©j½'̓]¹QuûéäjLơ(:=|îÍ(rjE£ øEéT){Qrøè~QTøCƯ·Vá Ư?î Ï91˜&Èîè¬ß9wŸ£v/Yliz¿WÄØ‡&‰«ªn½µÂCxå†î€º‰‰ˆz¥si5H´¸Â.ïè-|è£üü.&Z|À̀̀Ⱥ?ơ<µàêVơp>¯$î°p›̀Ë–çÑ&N~ßøĐee«âđ/»­Ö‡­5_Ϙ›(®Ñß6t¼%Óœ₫ôµï »WUzûÛM¿qê:w¬¥4q¾¯̣FơfƯ_p"9—ƒ̉±ïRV‡h¿5–/霃–´I¹‰9UMu1ë°}̀êËJOTó^ˆ“#LO¹i KiPÓĐÜeÄÖxëñá‘ äÄ'ùÂ3:Ó§føơØj¡Ë­›^L!Å'÷×kwˆØ½‚6Ûßd̃-‘óe&ß­DjÛÁ´iäU¯³¨Rù¼­đ$R}.®CÙÏâ¦*V™±&Î#»¾à´'á²Ï»<¹zÄÀđé4—-`­Q¯5™OÊ‘ú$ªm};“YíV„côöíCö©–*+rd]F%©5).Ü€jwØ{¡Ê3̉Ñ+ß´§ï°úṔ®Më̉ùḍÖÿ¬́́í4Ôq)xyóâÓ~o ïlÇûÏ}»{í‹)Ó”Û‘?-¦ñ>jîê?Nbû”ơZ2 &(3Œ¬ç‚Ÿđz€+G²)Q•²Df󺈓Ù§PM?û=âépYñ£vËGW~ăỊ̂DblñoÉe«(QâgĐÁ"CVVÉ– ́K0]¤¬k+¶íṂ”|*_i)Úf4₫l¹á¢jP³F6ä–Zñ² Od9«bB]ŸÈb[ơfx§ü23JëtI3&c†ükIq.‹é=Úo·ôÇĂ“ÈÁ‘t3z\–7«~0ø‡-£¶s¬ü§̃˜iBí†üơƯfêñp.»¿ÉLM½À·Äaß+i}4<ô½HY¿u/LaŒùud`3U×%ùpÿư!*Ÿ‚̀­g5_ù[Œf»9äx„+rßÊ™®îp+èɦ*êN:Ư2…î÷OƯ¿014ÿ¹:Á endstream endobj 1045 0 obj << /Length1 2696 /Length2 23804 /Length3 0 /Length 25312 /Filter /FlateDecode >> stream xÚŒ»P\ ´-k®A·àîîîî4î®Á%¸»»KÁw îNpn¯33w’¹ÿW½WTA¯­k[ªhȉUè„Líâöv.tLôŒÜ9e&F## =##39¹ª¥‹ đ1¹:ĐÉÙ̉̃û' ‘ H&j䲓³·H»Ú˜XĹÜLÜŒŒfFF®ÿ1´w∹Yäè̉öv@gr{O'Ks Pÿy  2¡0qqq¼ÿË d t²41²È¹XmAMŒl*ö&–@Ïÿ„ âµpqqàf`pww§7²u¦·w2ç§~p·t±(Nn@SÀ¯‚̣F¶À¿+£G ¨ZX:ÿ-W±7sq7r@K 3ÈĂƠÎè%¨HÉ€vË₫mđđOoLôLÿ†ûÇûW K»¿œLĹmŒ́<-í̀f–6@€‚¸,½‹‡Ë{€‘é/C#g{¿‘›‘¥‘1Èà/æFq!%€¨ÀÊs6q²tpq¦w¶´ùU"Ă¯0 .‹Ù™ØÛÚí\œ~ñµt€ÚîÉđ÷d­í́Ưí¼ÿf–v¦f¿0uu`P³³ttJ‰₫c!ü–™]lŒŒŒ\, #èabÁđ+¼ª§đ/%Ó/1¨_o{€¨ ¯¥ôÁÛÙÈ pqrúzÿ©ø/B`b˜Z¸Œæ–v¿£ƒÄ@³¿1høN–FĐî1}ưûJ´^¦öv6¿Íÿ/ƒ–„ˆ’†íßÿ«¶÷xÓ±2è˜ÙL¿–ŒôÂ÷¿a,ÿ¡ñ‡¯”™=€ëo¶ 6ưc·€êŸă ü7–¼=hkªßK®ËÈÆhúÆôÿ¼ê¹üÿmø¯(ÿ·%ÿß„Ä]ml₫RSư¥ÿÿ¨l-m<ÿ1-­« èä́Ag`÷¿M5€­ĐỔƠök¥\Œ@‡ dgnóo-Å-=€¦–.&oËßrµ_WfciT´w¶üơ¶ æé@§eb zëp­ä_* èr₫›R̀ÎÄ̃ô׉1³±ŒœœŒ<@C!6€7èM-1€̃Î̃ä•ç 0³wBø5Qv6ƒĐ/Ñ߈À üqD~#NƒèoÄ`ûq0Ä#&ƒÄoÄ `üX R¿+€Aú7q‘ù@\d#¹ßÄE₫7qQøq‚¸(₫F .J¿ˆ‹̣oâ¢̣¸¨₫F .j¿ˆ‹úoâ¢ñ¸h₫F .Zÿ".¥Ñ¿ˆ”ƯÈ´[–ÎÖ¿M@îÆ¿ˆ®±“‘‰5ô02sù-gùW₫÷Aư«å3ù±‚™ØÛ€–éßœ¬¿$¶¶¿YüÚ2Ó? (%đwP¥Àÿd`b…Ú9[ü₫/GWе₫*Î́7˜ưYAËߘí₫Ăû—óo5Ë/èö›Ó/Áos¶_æö®Nd˜ÿAù~³ee³đt°Úưa’ưÁ‡T¶Ơ47ë? ¨­– ê¹í¥‚úù;2ÈƠtºèA½°ÿMälÿ5¨‡ßjP0ĐÙî?ăgeúGúß᳂X;€ÖÉ₫q₫j•ăïơwtµwÛü'" ëoÅÿÚ(ö4ÿµçúGú_c¦_“ưc¿ëü» 'g ­åW’í— Đíi°‚8ƒwÿÖꡳ͟ ÇÄbơ;-è9ÂàbáücoA}sq·ÿĂĂơ¡ÛÄ̀ươy{üAá=ÿ€ &zư&ätú;Ỡ‹M\@#rùëi z£₫ü×ï>@ ĐaqÎ̃„'ØêSpû]Đ;wºƯq¾̣]4j:ïE§ׇ·°ÉÔµYëN7BÉCßPV¶Å¨®—ˆ½Z`ĂZ•Ú} â•§vÛ&±ú'„>÷ÀăÓ© îù<;ú¨XC¶€wJ“ç9ºr¾U,@¿sï•đøÜW±<:·«´WË.ƒøT1M­¥P:Koœư‡Æ…íÜyöúf-wâ•H:Á÷8¥Ø[{ƒ9æ₫»×j•*³s.®6ä5Úè…·đA4ö¼wYñJÿ‚G o1Q.̉ûÔ:úæ̀ZKåH»¦z·ÑůL;yÉ€`Êwưè;‰ơåMN$ ˜µm‘è.ơ,Ö@‚ƒ¯f«í7êƯfV©øK\ÓŸ_³HZG₫ÍỮ «CĂưt·¡©­wCMĂÛƯ¾¥}øæîL4b:+ËÜ™©Đ.c]@) ”÷KnÉœOĐF!¼̃ÂxL[EŒŒÚœĐ=à£ø§ly>1¾Ơç̣_7fQçmÜÑô‚^ƒØå_;SÏÏ‹p-XÄ ³B©̣3ź?æ¯ÅR*ñ|6ÎU0œoTcÑ‹–{É&l±-\ ³JIốÎ× EèzZƯs̉ŸªW«µÅ±*ïG̉4 …ôrƯ˜lƯTV ëcګߟW»‡ Ålªrçüª́ŸÛå¬.! Qr»ư½̃˜ôDUØØ¶)YC•ïa{¬«äÉư}…”(9eñ¢\Ÿ̀!o˜Ï¢̃‚hqn¿ ÖÇë&æO wT`o²PVcȳö–!I :†Ô/^đ„ß©¨̃zm€ờOmLm“yÛTë–²ö6xØ¢̉!mâ)ˆç·ư3®Öù¨¢"^̀"×ÔÜ…–đë3gûëǃ£P¤°,ŒüăÇ’€¢rʬ5ÙbZŒ×¹Ä«-¯lÁ¢Øf¾gƯOk×¼!•|º]Zàdë¢áj?à'÷Ø“s§=$̣•́*ßeDàîXÖ’Ï%åÏO!È2ƒa×ëäd ₫Ü.ö£&2 Ñ „39@„ÛæưN‰1ø)6åB]‘E,Ÿ8˜»•uăeRè­4r-=ôbï'éq0i— 0o˜8öz̉ơÉÉ®£ïs’ßß%^E2”¿Ÿ7w'gKu¿P 'ó©} °WâßOEDœ2üđ…7›‰±Ü.ư•·íĐö¬¡é~!kmÈâ|-/x½úĐ®±±®.S`×Pà#å Ñ`4Z'ù맇"/+Ów‚+>—‰;I°%d$öô–f_'W¦C–Ç 50hË ¬I—êOS3¾78„s/LÉu×Ïüu[[÷XXƯˆu2 n¥Z êÎ>×>aöï™Dâ1®T^ÊIßËåj1Vƺy³¯ă$Íé̃ơ œr‡2HXpùn!“²U§µdèWdp~ Qw¿Ç––ñ6 Ñ–Èé@ $đ\¦z!CÚìÀ8£ZĂ.¥HFfóxøPƠL—ˆ½¡Ó…s4 ¼ÀƒĂ•§`&7O2®ơ »•ÅMïjÿA®¹ÇkÍ5!=/l–&£¦©ïRåÔ+WçxÙº@o¡L– 5ÎÈÄí¦î¹y®K5…@ùv̀DïÏG;Ơ#÷Ľv²œ3&tkåÛ{Ư“ÜÕø“÷VwN aºo®m2ëÙWô¬j ¤,F]̣…mOÅa°¹™̃Â-¤˜Â•z²ßv-­đʂqdíØT.Ư)Êéfêjs$¼îʸ~àđ R&́P>·K=YÈ?4̀yï( ̃¦1Aʺ™|·Å„¶l,é¢$‘;₫aÛ+ؤñ=´§¨ÚvŘœq1 æÁ0ă¶7?q=‘Á́º'Û¦ƒ\QŒ9Ÿ›P]ˆZEX–a·ë” ½B$G¨pư6Û†§Æ{¤ ‘´uAÚN&., ,˜Ó[yÁ>µ»W›jÇ@ăÂXèÅOÆÇ^Ñ}n&Uuư?¾ÉsGîà•Ư¿2¯^¿ăÖÈ%‡NPé(Ÿ!Lü‚(é ‹'!iú¶ ²œÜü¤DŸöóª¤mƠk«×D”¸ ¢»ù|oĪĄ]7úPɵå¨^Ü\:Z HpÖ·>)p6É´{ëß []¸_Ä=‡/›ă…«ƒz^á„Q\Pä&/ú5RN‚ƒ‹LJỌ̈…"QhÁüƯ¦ »'x˜4|¬¸Bă%¯ üî‘âX‘BŒΰ[h¢ßÚ´MÅ~ăÖî|åâ8˜Æ̉änEWc€ à3ƒÁ̃rqÚ̃8ï›ç@¯—dñ÷\pOúK<–­U&!×ế7Bô:¬…* ̀ÆîI´&—̣¢Sy ¾èè§UÄ>’tbÂ;•<´ºEî¸hZ[ú«lb5c+‰˜hø¹+-)·›ç‡₫T„BolЧN™ W8]é¯\iO·I®øyÎßûy 5L‘#Ø·Ơ®çy@2¦9¢Î â¢i0‰{LœÎ¤®̀_lă£=Ô=¯—P§²IôH½>ख:¸]v#e„Ƨß,ô•Ñ; s}$Ă´kÖ©azèu©0$½-ă›´–›”©Ï›á)́ú1›h ₫@ƒ¸%Qγ±YlúRơíñ<¡åi¦=‚·¿$?y»=½̉¹«„‹·Q"ID̀0Dư°Àb£c¨—S)q\¼Ø^±£wk 5Ȭ"®ƒd…¥ưV‘këX;Ú™+ œ̉p»éØiIă[>©øxĐyæz ©‰HÆ,èM–>Æj3«;Z¹âÙ,³Æú'÷Ơ₫c.ă×Â]…’\ôá1q4½U†CÏ(¥zøđ¡$]¥äoïÄi*V,U±.¢ôå7¦…r†AE¡*䪟å[e8bkáh•Óçuœ3Ÿµ®ûĐO´¾íơ øo#o´Â~"Œ‹ƒ«‰_½DÏÈu}G–Œ¢üÔÈ®­$8,µ¸áB^¸ó’Ơ¥SFÍÑKñơ)ÏbÜ.ûM=î¡ǻ²Ñ·/ª=”N~³ëé vvÉ̉²ùXˆpT)‚ŸöóF&3ªå ¼eÄ×—Ïơ­3×¾Ùưø€ub([[¨·lT¤–̃̉çưæ¶u&»¾̉ºWÀø“)̀ƯÉVèơÔ9ă[ÿƠ¥ö:$Mz_ùí°óơ¹}&†± w¼ç"±ˆQ¤7¶ ½†Ÿö—ă3Â=Fl;Ä c‡sgÅ4S2º)Ư›ÚñÙL Y^‡N(´fdô7>-28è‡zS¾Đxy–¹m|öªË ưÉ,à6Ûñăªưz>¬Gܨ˜÷{‘-BÊr¹û"1,ÜÇ®8¼– §̃‡‹\ˆôê{{á¹ĂªDx¢”l7bÆûƒ¦ñ¤À7«ë§åbëF:áfw¬₫’!y˜>?`5x–%ç0P´ĐIX„²-^=íƯmJê’̀TêÀÜ1¥Œ§Ÿ˜°ÉßqU8đ3sH· ?_5:3@F|1§úYî©ô₫­ ¿NÍçX¢„s_s7‘2—;Eøƒ­g µe#n„ÛĐ¡Ơ·²HÙ^ea}ea#›Î#ÏyóZÙÜŸØäJk¡Ö÷N—1Î"`ÑcÚª‘ßù•=2X…lô-æû®&‰RhàûV́̀)i¶ÁH®—î#ºHU·Ăû ~§_Ô¿\°Ă¬tJA1øyl·đ é«ÂÓ¶‹<4,’]Jdª´Á–¾AȲ9FB㇬₫XhCºɓ2á°µsv`ï—î¢Úøf₫¤›N%‡øP¼Ê¿ê®Đ/Ù÷Å— Ñ<°*¸”oô[®¹w\ ¤ë­`xT~£b”æoÅ\Vr„ˆ)H²V¥l9ÏAáÉás|g·°ăàb#+”¨Ù `ĂKEpŒŸïuœ.؉œôbQ¡íÂ/Tdêù@‚PaCd©”N‘[N¶¡º˜i$ƒ#l)í2Ø:ȳÉp€k<#|¨{–ÖŒ"$Sª7´[fjY]£Ơ|;ûz÷{~–Á`¨¦ˆGR´’€ƯÏ‚KÁÍjí–Íäâʘ‹Ơ6>f̣ /Jé½óWaº^Í´¢Z¼ƠQ •µ¨Đ¢Û ü âôâiÄSÔ’(ÿ>ÉCȯU>…­†"ÈæŸ°º>E…‡p—ϘƯÔ4$*iV€²íŒé„è±’‚°Gÿir®¶6Â:µfɦ—‡"¥–”w)£îGm6µ#î•iØ4Đ$P°-e&¨"I‘Âû Ưp t³ăDÈÄ×ƯV¯¯`é»2ª"öôlßæ¾˜¡ÅÈ1!.ô8‡N 4{™û¸É`æË²’y4R2°M"Q‚Z½Oi&ç<;K¤©¡ö́ûtÓØÔ¬ƠÛ­è?;On56@,ùơ,RẠnh,†Èà₫K$ÏAاñK¿ø-éf·ü·ŸôVHÈa+—)E,Ø̉yƒUp ÚNFêº/«q²á3Œªüé0̉…üL"Bḿ5Àä¨.caœÀJI— ç'í´¼­– Y|l Üj [)¥ḷư6ê‰ẉ¯g¿ {'ÀˆƠ¦ñ;è#,X)XCf7fn;Ü=¼©ætơ\!sºLY½JvE0ó5q́¡eëöü@ü¼ª÷=ûáƯ]×ñ[µ÷Ơà_]̣¨÷,¹%/ó¾*„ô.SƠ ÄƠ¿¾8NÂ`ñW¹lổIp‡o^ôzå„dJjë’Ǫ¸-t"MzmëălŒG{’ûË«n5aáĂ©Ñ<Úh·ÅN¸Ă¢›a ¾%°Ü—\‰ 0›z¶nV¦?ʼ~v£ô°¥G£SÙ₫&Ú6ºhăùD„Ă‘ˆUđFëzNäsuŸía£₫—Z W6‰LØ»ÆE¦’Gd†¨YÄ—èÑ­s„ ÖơLƠvá¢ü¾0´{fæ\de}àz‚gr÷† úÓ-27ZÉ R„Níxáô×Q±œÂoîxƯĐÇF„ï̃ä{íY^Êc£ùZ ×í >F́úöùy ïi|†Mßµ sIc´£yëư¶ÖF@»Üë*2y-’¿yŸó„ÈNvb°đ̣LÆ`ØPF₫Í0¥àtµsȹB Ơm¤­__÷é#MæÜ³̉đf™¼±Yírû×µà{øèÅR5øv¯©+óæcF;1q® âySé¼=è«ÍU“4íƒæ7¯¬̀zßâXË$3Æ 2ç/3ô»'eöŸ²̉ÔN®>¼¹-NH˜äà?¦î/ºJ—´‹Ëh-«â 9ô Uæe`vy–ëøyï¼[âÿhÍ%¥ù3Á¬°«BPë«@Oцعû>¿G ×–oĂœÿY{‹¨…­ lôú6{sÎ̉>­‹đeÁåäåEk“Í0[üƒA¦Gwt¤ZO$¥fBă@X°„ ²Ú »¢.Qzđ₫Ê ÿ÷ºÁ#Äÿ÷.)F_¬™F]ïL¸3µ%¯₫‹!×ñ,3ÈÑÅ¢kÅơ²aj±¸pNäÀ'µâ¬wêssôˆLÇYî S+̉â–Ú̀p XÇÄâ¬vg{$ºÁH Øm’j¥É0ˆ½‡]€ö¥—³OH oa¯́÷ôˆbn³ï¶í¥ß„XÎbçÎU™{ùpăçt>›6-$>Igé®|Æ"¬Æ¿Ä29^ÂñºGöqùjÅ4ƠŸ)´ïôYÓ5Uó‚;*íöí½ ‘8üeCÈD²úZ\\BÚS¦RpƒÎʯZ·&7>Tà̉²€ í ùF=ü‰|Û° Wè]P÷gđè’¹̃¬Ï檇í«;úÆå}p0ËTŸhÈQî0UwÔ˜Q‰Û!ụ́ÄNƠ=Z^żšØN©‰¡‰ÉÅÏëe ÜÊ%CÓ»`&çUjÙÛú°i¡¿I¸}8z\çW8@º4àmZâà>Lfù`ùƒÈË)qLÍÛÎkÄ—]EïOÑ`û+àc£* ]IƠA©X^Y§4âVÁ¾èYC½‚̃´³Ox>ơ@H¯{_±fE¤‰‡Üeet.¤zO…¶Y£I§=€tôÆz\R˜Ôx†èƒÄ=¢OLá`:”|ê´x;f×ÏSû»{‹>ÑOp‘&I%»­]„Qÿ÷£o-t°D(à¿ôå‚Yæú¼¼\\Öƒ>’²̉E’Ö„oÖ†oÙ GœfI·%ˆ¤D‘áKZœŸ6~ºAYêIy©º-hƠ\Dgh£¥È©ÑI#4àƠ”¡ư™f´££±„9µî½¦_D È5ơă]¶vÛËO²EF wTªÀ¦Á¨øöe°·̉M×_e ́Ø̃wfçQ¬xÍdF[s‘noî£ËÇvV……ΣùZô¹Hß|DJVÈ€|é‚nƯn]KœCa«0i\•̣Ùøaư”ûV°ßö$BcÀ7xïnååä`l qí‡JØ’ÊîŒd—¸ưrºRMnà×¼ùpO&À®é°çMƒ‹ ÎÖ”%¦¯Æÿ€2]và`!Bw ¦2>ĐyÂå§ơµáJ̣ˆèF¶MÏHdh‡ûå3öç̀Œ ă =¶{”Rm¼¯è₫ôíú·qÑF+.dy’÷Uq'̃Ʋ³»G@÷XOa,¥ù5néô³bÖÄèEØéêÛ–½6Â6ß̉Tß`IxC0 |³Ø̣sÇwúÈ×ßư.H×>÷ôê»́y¡|ø̀û º´Z!£qξÈRZøtLƯ^~-ó9:UvñÙá6ß1äÔuXÿ¶₫X¯ª>₫Ó;«'AÓg‚¦Pnåó7oŒ¾²Xđ+ïƯwñz¦,hđ[6}vr>6w`M¯Bxâ'?BSßm01Í9n›˜!°Gw«°¢îmZ²*¤Xuo—IpÄm‰Î Cï?œƯÛ@¾#é ‡—áÛ{U£ó>okËïh@"%Wï‘ÂsÍܳGeÚăÆrĂ_+Iq;! ôÿ̀PâDGzL=…!÷½¼™Ëa½îrŒ ³¿H˜"sfÂxƠ`rô¶¯˜?¹_%Xd̀6>*ÊœùÍí–Mhå™ÿÚÊÀø©A!±©¤|-ÚàơV>‰m j£®w¡!«¢KTËäܺ(&AI!àa±ôva£’&F€µ̃ •e¾Ø™2&g㓉Ơ ×:gL}·¸K‡g|2̉ yJ`iœ-_{M6F{¸JxäRJEiU¢IóèóÊÄÚ̃ï›éJ u—ÎûPG~.S©ÊcÇ¡‚+qÓÆ%7ïŒM+Ăpùăt?ûËatGÑ=•thBâ9e©™J5¢n…&:œóQ×¹œK̉PÍœÜâ"wpÖ|Q3–I‚N)¯¾%×Äö m’wè?=ú‚û¡Ê¾hâ:V¡gÅûE#ͱ=Ă8O_Äê«è^İë™f=]3̃ê9³?Ơ>^O|áû%¤™û‘\̉=soa«¬>|ØÄ?©†:}º»% ‡Z̉‹ Pl,é•[ữ½ZS‹Ư–,ºU–.±ø²`,P) ¶"”đKf}ëä5ÎÊ£0qÎúØ7U*9Ú ¯|T.OF*–¶÷|iÖÂÆåÁBäƯÅ ZpeWÇí…â\OT¢©›ÇMmÈÁ0H©¨:œ‡>Xc.ún[} !Ô£V£:ú€¯ù½́Œe--vÆ!¤´P$û†6̣¸Ë¦"đ ,×éGgœBBŸ×7úÜe¯₫¢ä²Ú¹ˆmå"Z l1‚›̉´ü±‹Ơw=µÍ…¾£$ø`w°Å\b[D RJ?S÷ß½Åt ‰¦ưŒ|rfĂúĐ ëƒ³̃´̣KÓ>ȇªJ²{¢ËûLÄB¥–‡ơ#!~‘yURɺ~Ä'ßîˆÆT%/#„Ñ*Û³BJ"uɈ…E%i¦Ú†I}2úö•₫;BéÚ©-›nbi{¨Ư×#C´Ó#ä”i¯ |eäT¡>̣áWöU’§Ôy^ˆ–+æ!“vđ«̃VQxv®³«¦¿ÿJoEQ$N1Féßv'}̣–©THdk¨&f+Èè6¬R®!uÍD漆;ÔuưÜ,ýĂ©Ơ.ĂƠ‹´gÛ÷£=ùøn%?̉ígî¶––/̃3ó¢âa±ÛzBtf»o›J{(Äg£®ÆFƒV6ƯËæÄØgj”ßÖQhª¦Mn,%³ßCđă㻤Ñ*MLP欸¬†m´\¹&¸Ot7‰&̣5L”+9S´pĐU…ql-Q ‡Ưû‘jƕ푛>|eÔ†cïëÚp<â¾ïD]rí '©<@¢°n¼g£Î"‘mï°]"([L¦œ®FF75|›Y”§Æ¿â€¢¨‹l|#1€&`W!Û-½{‘øá ëy?±ơˆ‡—o#R1»Ê-G(½Đ×¼è0‘ˆ*HÂÆlƯ—°j5ö+«|fi]”ÏÁ¼ANTøÖ©=C*<&’®ÉvçjÉx4TRªÈ†ÿ¬ ='•Âö8á•W‰–Ëg°¹ÊgÆ¡ưQÿeÅ• đö‡‡¯E/Ơ¢@ƯŸÆhÛƠĂá )1‘QAÀơưÉ́ơͳ|7WI"#ăxsIzĂh—s”_â¼pÂÛÓ¿Øñy½wú"hư½ z{”¨ƠEG+­ÖäwPùíăÈ<¥êósèûµOcd“’•S{‡h\‡ÆƒbI đqÔđzßÔ“áé±åJÎú YvB?¸ê`ÅB}Đb³/¤²-kÓƯ~Wq9³„¶´ÉÊ¿s,©™æÈ·¨>{Lr ({*=Ô–LĂ]‚\/÷™âA©¦¡$UÖâ$Ÿf˜wṚƯă₫Úöée‹y—, %ÏD1B¹ç"s{»r×/Z±­t"̃:>i¥”?~¾„x‚²vMsơ*û#3±8UÖƠjđd»ăºÊLsx' àN°hyđĂ½(̃5££8á¢Gµl̃ñ¥„¥\ !#Û©®ûZW럃]‰Ûög2Úë–‹Ù0 µ‚…{œD½Æ(bhKËŒ©BY}@…¯öô¹h-À%¶”=̀¡…[gU¼éÛʈ(Y#£D‰‘Gđ±ü¼k:X‰µ´Uæ¹Ø:´Zà‹•¼+×p=x£hsJÎHëlÁ·.ˆrÆGIđ³=a íùF{i½7woï%ª–µDÁÅB\m<Á—̉púŸZ³_”÷‡̃gP»Ñú2¡ä&̣fâ ¡÷’1>@€w+́ØxĐưđ,ßÛú8øNs—Ê¿J}Ø~¹P(ËDđƒ…äTa-¡cî7gxêYÜ)Ús:5½Úº@ú©¢ ĐẠ̊¥7øø[ñV¯§,i’}å<Â~²úc;É<—1hïÈ~p¾qöaă¤PÎÆ„rê&̃3Ñ#Pñ*^`GF¦–đ%!|Nhn_ªÉUluXÚTiv:XøÁ¨ë¨‚¼ˆ=<}­'=ÛL"Á‹  S¥ṛva¥I+«±‡o=̣“u¹å…h™å8 œ–•=½m-µ\đ½ôÊM¥”Ö³e½Û₫³'y–ûNS*×åcºv¿(ïgùÏL›7‘¢rÏîîà@ÜÇWÎ"u‰©^(²NæSk»gmæ¼³cHĂ·öù®³M¡²o2,«”KÂKf̀MmSX̉˜ăú& đ és…z‹…Ç€?YđÁÆë“%gQSưÇ/gdÓ`Ø¿v/^¿ZüSAg¼)¶]<#VZŸD]F̣Óư“€âµªËơ`³!HHr  ™K@ )&ùtƒ-ùy°¬ơ¢wƠ¡úZÉ«…ÎH?’¥2˲cÔ¸3yTO3äŒu]w’#™î{‹]¥–.{:½gÊÊz/7Ă vîĂªP Üüú<œ—?_îk[w§qµ·˜†b^?…í«JAQ5ùûÓê@ÙLœ=ŸÆˆ.–ă<¹}qj–ƒœª÷£ ¹ËŒ¶áиb@ *q̉±52‘.ªÊEăCh́YAYĐ"W¥Vo ïzW0˜8M_y&ü`R«Ç–“q"AP·]Mh¦º%ñ¿”ÓH;…ÚÙ‡<›’Êư±ÛȨî’&tøÑwr}ÎUYăœïÖåèçd¯}Ư(c±œ™'÷E呪¼¾®]@ub2ƱhîYư,¼Ú)ít­ĂL¦ÓWxΧ˜ÜS¼/n/Obn¥&Áq¸ƒ(ÓëSÈ•ïQq̉¤Újñ (–ª"’½’ºhêU‡Î1…Y(ªy8 h ’`GTØÁ!<‰]±đ‹º́(ÂV\É„đÑnÎå³|eưÓư¦ÓÆm©b SUṽ×₫´+É¢XóüM]ùZ3i‘ç±Ê½[̉Úcøó<2 ưYÚDeC¬6 3‹’ ̉h'ín*Fq̣–j3Ćxÿ¤ƒÔ~oø̉¢ĂÔN–7;̀¶.Mc¦änx†Üb°uV D\ư‚s"œÜªüyÔÂѵÏGF=²†¼ ¼£¸Ê™G…½Öö!‰IB ÷‰[KïÖư“ûB¼‡çù¡«t-Ч\rßñăđåg±aœ-û€³8R†ßˆ¸ç´TƠĐÆwơCPS>ï¤ïI‚¥ È„+) âó½1¸)•vñU ŒqŸ¦’xÑͰ ïL!=sCl¶µÓ‹~ơyÁ¸¥Ưœ)ö¡¿âJ—áâwŒî±\́º(\Q–TwL^Ŕí¨ÏCW”ø8—ñåK9GDÀÂÓ,œË$¡IÅVB U½ÿè•hP:́'W¯~0©ÏL°çøßVI¦Ơ „Ë:üª‹‡̉NƯJ¶æ€:Tê€è':¬¢›‰Æ8ưÓç{~«<†ésáÏÎ7wfÍÎqâà»ñ0v‹ÇGƯ 8ặ\®$2 ÷̀-é0₫ë(‰¸3₫—NÏA°Î¹¨ău¦ØiF7L,₫(Á˜²#Lß8¨i3ưb}V)?ºñô@'é(‚SûAÄGÏ1Â.9Ûˆª€á)”h Àç—+®=MÀÈkö¢p¿kn#¦H™̣ăVBĂ÷ÖÀ­ShCgÜ»ø=¨]hU¼y úAÍŸ„R—G¦ïK#ôC¿¿¨\5¢ÆØbÖ¡Á»¿ç$©%¦¢®k:U áƠ]4mÔ±z]L<Î¥d³ñÀ‡®n¸æó”Wɲwâñ±t¾Å™–@›[¤ç̃)URJ;S¡L 55Hô ËØHˆ˜o*—ÖæŸ?”†áädåö÷Œ^ßø̀í¶èú¯vù.ĺ«êđús8æóT8.¶¨ôÙUFµèûLß³BsØƠz_ÄƯ˜́đpnæTqî„ù±Gu–Y>äƯ`ÛtŸ]«¼ë5°+.›®v:©L)]a!ùîŒV™ơXÏJd7ôlíJJRg_Xæ1ưèíjMâÁJ¦â4^Ëú¨¡ÙÀ‡%ÜÜ̉–ißæ₫Á;êº$JD=÷qzW$=̉ ËZA:‡0 ¾$G3 Ñbm×q¸‘ˆ­kqœ*3₫Z§t' ·a³²ë3:…ÁÍÆqGe3o˜ÇB[_ä̃$íåÏ(='ÑnL5Ùî@[M}S ˜WdkÖ¶F÷ÉÔ‚/.o Ø7测*1mqÎNxºü6==lx’¹äFŹ]ù¥áÔ§Ăkb”áÀ$ç₫lœØâÏ-•–C2ŸơîrfW˜ĐÑñ&̃§¶÷Ä>¡j#tM5lƠ… -D7×Z s17r{ç׈Ñ{₫:xÊDÆ+„¥œßï±hu|FbÔ/µÜC´:\]Ÿ-ùäIX:…NÏá v¢:̉_ûêë¾ăvÆ ¸\|Ó°ËÔÄrºƠf±:xđ€Ë̀ùÉÊ·_)Ç"x£=QaGrA¡ü ¨ú™¨ÿIí²_Ÿ‹é+o ¿æCó—üg”·F†©û÷'|8#CṇîÊU2­¢«éKz¼L>Œ[‚S˜{y í6„nO'vMgäÚ%ÈƠe‰†é0§—×¾„:Å)½h$/üï_ÖËä4EêĐăV¬×$fJƠ,™~Ö(}Âà‘Nw_ü&́¾́rVÿwAz¨¼M( ?Ûö ₫ <½É7#Væí¾ấ¤ưô ®Ư™®²Æê°á|mZ†‰¥´X ;=—³ƒêz~æÁö-˜Đ¨B.cñt§=?öÜFncÂ`ü‹±/mú¯ÚC+‰4‘ƒeTÄÀtl‡á°—ÄÖ˜DG)f 7~*̃lú‘"ÏV4̉gœÅP̃×iy[ÖV?‚́UÚ̃‹¥ƒ½ÿ>5lÏ»ÜDÛø¥ëĐ+Ÿ 7;8L­åªơ©«}èđ‚Ặ2cĐöbàÄN胟™Z!RøBZlàßsVơÂ`GYxäÎûĂ9¢±c–Jú ë6Ø r¤çK¨k…`q™¢ÏùçÛ̉–ÂĂ7ÛˆđéæëkDđ`fY mYO!§Ăt;{hwp₫@±4ƒ$'ÑB̉‘"&EPÜhp£D ¿Ihiv[¾œ̉A("„$àtâVƒ1ï—,'g©}2ß̃Ÿ’è.fË/<* Bù0¨ vµÛçÁ™%a=ø=4iÁëÂøñgĐ&¯_£̉”Œlsaú„́z´ x~ñ],**6Yơ±Q¼-œÖ“<[ˆ‹Ân¶‘…k¨'x.₫ A]µ›3l p©Y¬eâ%…¨«pÙUn_̣‚Œ̃f̣C-:ï-ÓÅđ}DµÎ»+7äf—’È)'QZ·₫Ë) ¬·£Vj¥=SIóJRJéôl,Đ~β¤é„ɘ¥>ø;Î¥ĐĐo1Đ‚•»:{+ˆ»¢ù.ÓÅïDef¹­l3Cjc†¦s ̃Ưç¸á€’3ªA“î:wt³ûF.¯@=VÏâ.êÈ÷ÇƯâÙMñ¡†ú½KÿØÓ¼‰<ÊkR@‘Rùlsn8 áÏ·¡rײC®³“•9̉ÿ;wåïä»Ï²\o±ÄYđá!lÊ`Ó¤ \é3|Ìx÷Ѭ¶÷Í›Tß/ˈT9ØL,D0̀³»T6œÓW³¨ea®ñBøđà[øC˜ù“å¡ĐôhZvYL’ÍP*m"§küꋈ9IR‹Úùn(7́œuÆ’oo¾7mỊ̈i[Zv<óÛáB²`Ÿ>E­´B¿tÈ|ÓÊ}„ËθM ;6•í§‰ApÂï¼—é¼áô°{ïoë‚èœ'•œœ£0°»©­ZXạ́¥“îk|§|ú, ÜÆaf⥗†aơ ³ù]ëzoC!±œ¦JÍ®2₫…öđĂåi=OS"Ul<”}ÆUbÙ¬¦$Ǥ„~ç•ĐX§tNKmóN©F×2Ñk×ĂÑ z%izYùR&6'XCMåP[̀v÷ªƒïgOGrÍ€Wî6ú¬`vP"¼ü̃L@l(S6ø4ûG³í¡^@iI|.ƒÏÇÙo÷±è.H°Óo»³E%+²ƠƸêؽ©]{6÷ôü´½ï®½_-›:yî~¤Ø˜,Ä[­Ü“¯1(3L42Y¯ËƒWB»¼ÇêG9I©;A0-Jm6ÛÓ›ê[j•®•ƒj.?¾cÏ´åó¹QĂñYzĂ܆N0L-×›RưÉ­‘m)(C Q1¡¯D}ÑĂ›Äx±ë¹™ÓïÅ@‰¯íÄûàµØ8v¦quûàĐ*qóĂ“=Ö^k ûPppƒ÷÷FÍđp·oj×q E˜i?VÖq£/4¸ÉESêè}ĐNå ²·²B¦HR÷ÍßIN*÷“ÿ$pF"×/+`…;m ’5XÈÿLË9Đ%Pw±–J‚»Em’¸Ÿ„C_g÷CánjjwÇ›r%.³0Y?Ŭ™́j@;xÀđ‡Hxd+”C\s8 æbÚ#!Äg³߇oläxûXs‚…[{|R₫ Qïơ]9.bN0*´<Ơ|l¥«9 GR÷¼¬X~í#“óœAGZΑ̣_‘Ä~eÏ!Kèµú Ô#E¶ 7ÚÁoÂKöÍíSÊ2øŸÅ—¨X¡V"¡ºïÊ•·-tE….6Öåe8bµó ¶Ă×cÀ́ïYr\ b’KÛÛ#¤ODĂM`…°_Ï· fh( ¯æ7"̉û$"!÷w̉Ø…¢µµ÷‰”øă|™æ‚§̃"Ÿä¸ÉVÿøÉW7Ê•oƒ₫© >¢G½IƯº(2¦8GyÆçÓbÏ^YtüEñ;›3Ù¶-eÀÏ*ùÅôaƒ3Ȥƒ"OEN«EË<$µÜSµ¼Y»®ë¬’œ2ư¼¥‹®Ư₫œÎQñ¡Á:0ÊLÔª³íµ†›q̉ù́*̣Đk̀<<&7MÙ‚]15·H¶‡×µ¦̃ụ́ƠBƠ₫{ơë³Ê¯·€»¶·̀ûMe’ÁaLỡ±É@Jœœ6Ø Úï†UñG &5 íôr&;Y˃{«SûôóÅ~¦J[+óèc5-5.º\Ôºt]Tkq+b‰íĐNÂÚ8°ƠÉ)˜2û–xùú¶£W ‚“AÈ)¶ss€ă™ákBéAÙ{ ĂKS€˜ăZŒuÉ“ QÏI8!ébt‰Sæ˜Z£›®ÑṆ̃øPf‹ÍµŒ̣Đ{óïîÆ.B” OcbmPÀ[U‘XRÈM=`(§7¸æ#Œ ^—YgÇ»Jx‚pZEùjr³ÍẦÛé₫Mr sl½(6cn­¨z"y‡î₫R`Zú₫_nÚ!lô=E9ăYÈ́R$säDmSë:…́„’ ̃ü„Â",˜‘ ½?B¶T’âŸå̃Ê+Æđ ¦¿™=x½ [́è‚f§Q†=ă`ÖĐDB%Fö×ßË¿O¿TĂ s—í©Çsè']tAàÆ¡âÏƯóH₫Iá¢öƯˆ,ÛÊ­Q©tẒúÏd•₫Ø̣bFA!÷œHX];ƯªG*Y{¡u ú  P6oăèÄm{bµ¾i¶"W¢è ưÚ›ñ°r".‡ÉV™.âSCξm»ó†¢çƒè;±ựÜ"ƒ¹æ%X7ôí¹́J¼ơت:›ï:Püưè»äÓ;íFªƒ±«‘–›ˆÁÏ’·`ÊÁ‰÷O{¤ß¹V«e îOËÈ!ơeÓ Ô@ÿø}¦œ}\—”‡&ŸÔ,8¢•ï¢ÜÛLÇ"Ûr•ÿ’€̀%_ÆË̉ÙmbÆ–)ÈJîƠ7k+ù¥”…®¹"@˜ ¹#pñŒÎ‰²y´|>?†a@s̃Đ„lL×`‰Á°~ÿC—ßܬ’4ª’$8PØ0(ƒ;¾½óptíµ¥«k8À9₫y°‹Æ¥`s ÿ³̃0Ç%æ‚Ư")t‚¸C¼³F‹&V"ñ]r|úÊÓ«xÊ¢V÷å©3œJÀoƯçơüG W+£6„˧Mئ/DæÓöB^ia¯₫´Æ4jă÷…³đö₫ Y…¢²ª̀Œđ êVæ¡)x‡!‰ÜàÙĂ1Éçô–Mvc³8ÓS ñ́B¼Ë̃ºôYñ7C -V*_ƯÀMḅK•Ë̃[Fsû~¦ưÔ?ÓÇ¿=«AUV|@P6Τ[´¹Ù¯·rFo2VoQ¤[(®Ơ ›W—§`IÛy'ÎƯ¨ 5¡<ù̉牂ój¸z]åœûte‚ĩ¦¾É¼mG¬g¯Å‚„±µƠÎjAtîi†ÙQ'́ëlàm(–§̃!zơ'˜oñá|”£sr»üĂ ¢ó³mềM!b¦) ™ÈêpêÑÆBâ`°Qº?¶́këÁđ˜ÁZCZ§ƠaXB̉"“×ôơ‹íĐÚ 1wÛM¨GgÖ¬ÉxbÁXû}3äâ-̃̀> ‘ Y’N&Œœ£|E•_{ÍÛЦ€ôy}ĂÙP¶¸¡邜v€7WœŒó6Zµ̣¾r\‘ 3+Y•‡´ÉÎ8˜2 8Íuk.­x‰,”ôû„á«>Ni¦\—öÖ3ÏÔ[ü‡Fd̉kj^e½Hâf-’4uô ½å<ƒ?*àG{7±À*TAî*®‹¿Đ(r·^3\ DYÓ—ñsr² |ê;5®ø/Û1Œy‘)çOï èM7½£\Nˆ›à¿f` ₫¸ÓÏ*H£ßæB,ö7×A.¶&e\0èúaĂÉI°  Ä½iH¾”*È`@”ăT́‡¤¥>²›²‰Ê‹Èµw|'3@½SLiº¬§4`ă‚ñ]UGv½¶RuH¡₫˜³ñựé7;’ TS[+zb‰§­yÿ×=#/r ÉÓ’ÁgN­¥TiTRüÑÉâûsẳA#yÿtŸ(’ȵ#Gôz‡éG: º3»F¢̀>ùk”Ûܼ,Ơö¦lƱùjđG±¤‚6ÎÉéÊŸ̀pB¾!lvÀ:q»ˆöl:7¼a­Vv;øÈ ÓÙ—ÊCÏ|æ³QYơ„Ôhră ‡áxÅ¿W­Ư.(D¶ÆLJ,iw ¡ơZÓ€S]ì¥&œsEHÅ©í-ŒƒĂE,uv̉M÷3½éjÊöcí&œüT\²S ÔzXtV̉Ó×{6é ¬s^=ϲ„DNßùú9q"kdÛ7I¾^/¦ă5ó…¯…́öêr~t̀O«=éµî¯\&íùani¨¯ÂtÏDá='€$«ZÇW#SÖ́í#Z̀b½ơéÆjj·äŒ-éÏ `,ËÛHø.…o(«ÙĐ#PƒëŸñ³EÖ fGZ­/268fÄSô46—ÿO!ú̃[v@ŸRO]cYàA†a‹)GÁd¦¶ÍÍ~o2T<ŸÓaÍË_ÍÚJ;9Aï†&0ˆr4~îéQítpÜt}É\âG¯†:„₫ä¡MD₫ë¡ûo.³üÄăøñ²înœÛ{5¿[âq–Ö4.x†XÀ̀µ¬T _?́„—k‚_ªc3É¿›°T&Ăy Œä¢6½¤}ÍQ£Œ#‹ĐrûR«ñ«oHĐÚ­]ç@NRŸˆ ·«¼¿¿ô$^%MxIÀhƯü•¶ÁÅo]‡RPø˜C"¨ù‡4~c éîpn $ªû?3x÷ è•;`8#k.t”˜À~ Ó'ˆ¾hơ× ÄÓqư–9<¨C*”uôkÊzVĐÁÜ|¬vËÍÑn₫íwÑ©µî\³mÁë|l‚ÇqH‹ƒjg0&rîÎÈñŸØ̉¬¥zµ"èi!rP¿(êGµHt[ĐæĂßk®!Jó·~ø ç?$óS;´÷Ú-Eơ°™ Ëf4 ÛDÿ¡¿ ~ @%ö†KsÏÜá0,đjP?´I°+Å‹-$7#×N k^đô”§«€~80̣æçm5iéà|ḍ¹Î8§ºĂôªo´¼lU¦ 1‘G ›\$'ç>O#6|I[Èơj>‡—é'Ô!”ÖJÅVÈæµÜÔrơéF|NYï¤Ó†ZN¸Ù êÍ)AdqHe¼ÉZiüOAy>´}÷xd$}§Hă>¢̉·ÇÖX½$`; ̃H³ +]ÑcaÏÊÈYø{û%Dö“niͤç¬ÏXl î÷»ój E]Jÿ\,ˆ…J%ª·ø̉3üµ@©#4æUw>Yª¶r ÷0;é¯B́€”Đ“—+ù}•GßOÓr\,×lâ„B7̃å-—'} và?褉jc<·rŸÛ{gÄ̃*†§¥ùHöÅ\V;d¶đj¡rrùkŸûÑát˜± R1Ä;À,‘¸‰CÚ€r™3E0v,#ßU«)Öÿ2‹y‚ÙRÀ:1aḰ¡³të „ï:, Âi«ó²X=®H"‹êBxsÀ–Âđ§zî~aß§M3_ch<áÖOW´6ËÚÆSÀqÛ1HKx4‹Ö-Ó[‚›¯RŨ8Ú{×̃¼5•o9Ö”ö6¶`yÁ k×Q \ŸB̃vO5…]>eó*̉AØg~päaèF…eLG¼%mÉbƯ¤åíEÿgŸ‹ó»iÎÅŒ]ØëhWp™ƒ—TF¼km²Zx¤dôØrÏG7_Ơ¥m÷ß÷ñà:=d<äüă.ÀDE₫Ÿ<|‘-üÁ‚XFơö¡$˜®Pđe}p‡æ_p?Ư/.Ó#¿"Ư çqlHɼ¬e´~(=œw¼ `—̃úäCRï?}¡Ïă”°3Ư g{k™‚çß±âHØÉƠˆ«… ¦n˜:ééʧèMđ&¾äeáv·̀<Ép"*ƯXüän¿²"Hœê÷^F IÜ9äoø/Â<Øwß7|;LöGgÄS»,\=¦j5·2•$¸4œ`k€È₫FmtÂ`up+EWNTl%àæKâXMO0QË̃÷‘]‹W:;i¦ æP)%¯̀á6èDÇ®ĂÉÓn7Í\\¢v3KT9BéÚ#Å6¬SF/Œº£tè) /-- `Í©ù§–%đÊ,^f/ú‰Cx]¢:Ö̃Œ₫'Y`¹W¾”gmÑÍŸî­)iÀr@=¸È Ư#˜tĂ|xÎg(ăÈ^ÊNâÜÓavúmPwüS+÷̉Ç·MÀ·”xpùÑ"›±íÂà¨&pƼ\¾¥ZóƠŒWs~sz¨à§•åÙœh 1Ï]s«¾Î 9ß°÷âĂGüc£(P\X| ú̉Đâß6å³­¦÷“±ñÙ„8€«$eÖM€hṛ‹¬b'î ñ¸Äªp§Oï’¶ĐO˘åÄ«K79d́}ƠÖ(~Rñ‘¬«:°£v_€R{í76ØÜµ̣Ơ èŒ)̉CL ̉Ë¡€r¸´+l¹,ug ”ÇÇ|P…‘#ˆˆ́} ÄdØm*ˆÍˆÚ5×ñ4hIO?ÑBÁÙà₫ưŸ_¿$– rXÚ'̃^èđóL C9ÁïÍœ.ºrdr^}o¾Ö¦Ăôëâó–â–i¹qsŒi#đƠÆå¹bå kïíH-m¶øŸ-ƒ §¡)gSÄ́/œbBoLÁ»ŒƯ31¾Ôé¯r³ơoÓf¬ h܀РóüÍơY‰ YJ6Ä»‘Ưe!cĂ™@9ÓÖT¬kU@ư¿½ :¢È†êƧ#;fû ̀7,IÅÚ›~¸ œ&Œ,óP₫'́¤—#»Î}£@ñä&uíø-ơû^*ŒS¾đꫪa5Ÿ|3‰H=f_âñ[îë6‹.S!ܳ6óªol³́Ÿµ̀ùScs|ÔåƯX~„â)dpoÅí{MơaƯ“}£SÀuÊ€áÀîàí>Ú² ³@5];Qđœ.bîU31ZEiô(üg–¶(6ïÜ·evâ=j̀·Ê¦ƠĐøơœ¸ƠCûëJVgƯÆư5cơx]’ª6Gr¹­E¢7»DÖö±••EDüg),E]E4â½à…€ä–AÅ:”ÄQt›.hÛÊ"tYFÚ[j”¯¢¥û …‘Ø;ƒ×)2ưëVˆẨí̃¾6^< ,qªÁ' Óú± zï2Ïr÷*Eä¨xpäáëĂܲ ê£ú#ÿ)¤%™À­´) ÓLyó/P„!”27îăJC$£ vî …gNƯ h¬$ĂW>ÜG* ›Ơhnο­ˆ¦€đ‰5~2vé܈°ƯÇÆ=Ô+ÂĐ`~g­ï¿€¸Í$–̣ưƺơåĂJFÊăyăàÀ~“sWˆ_„J«>a>é÷”¢æ^ ÙZ¾¬Àă“Îʑԟû6˜ƒ³â0HÊsỦ¸‹j‚¥Í,÷ö“í "œb“̀¦%Æ[¼Ă&èeX{„\Ñr±CđpbVƠOÂ9̣aÔwBª°ĐJwơj´́Oa ̣™³¬’´;:6+€ ú{+a,xxưaư,œ –ï++pi h‹ŸºÛ[[ÓƠ­÷®²DQNÙ¨ -f¡O^oÉ5;Öađ!§̉Zæ?Ï`ˆ6HFJpoÆềÎÂ7¡WÈc †‡Ÿµ2ü‚«Ơ ñàb‡vi§Œ¨4đHcs“Æu¬4YK±Đ[î!›ÿ®"s§é’ S|"SĂ₫?­¬6qOû~ÁÂ*ôyUܯHN©Y‡Á·Á‚?ÁƒÓ&·^ŒUHJùM‰¥É˜Ë¡æ„×f̉TÑù±HY?~ë §¬èG³_»_ :2 c‰~z!¡BẠ̊½FñƠG¶̉èÎzu™₫`¯=¨i”wt3^ET…±}±jIfŸíc:åÓ¥,£rº@GæHƯưq«(h›Eơ Iá~\ç±4É–ÂVt9̣1Æà%Fs²̉Är?_,`Ư;€_ŸAl¡Qsg6Ô¬-GØ©DKyÍîŒRea£sU¤V˾]G›;tî Øñ=D~m+ä¢đÿÀé·U@èpIz#b’Ñ—lh-Ùÿ ‡¨as¾¬üƒṽ«´°$¹0.b„ 4ư@qw ̉ïL’ÙeÇír¼~B›q3gäצ­O`¬p•æ_”®32Ü·ư pL¤̉_?6ˆ¬ Q)_Đø»`¢Æ† »YÊj˹Ó~vÈd—Üd^Ú@MP¹&f+ƒCfͽªÜ鋆jÀmf'ªÍç4~VOR`Ñ V¥ˆ{exüÄîVÿviQû\§¸qwÁ¼ †ƒPF ä>ínơ½ø@B¾́²̃¡ê«öJ—Ưsæư'UªwT8‰K¶ öW“p'0©Đ;°ÊÄ¿́½ßW×€EKéEè&²mæ¢H„In;{0̀—®SRV¶íˆ`ôơf@E ¡sO#±Ÿưˆ©ÿƠàú_â…œ8~ưÍ+y -øÅlË[~ ï÷ĂÎØfK¨\…ç₫=îD¦v¿> y‰Â2lßf‘SèÈ)½Áó¡A—‰¼¡€÷ÍGC¾ ÓĂí„–ÙÆ„Teb%Iă Ü/dˆ s̃Äóm昫 Ç‹î൧ ûúó©$K¨ï.¶“l›˜”8ưƠê†çôR¹Ưp›,tÿ!+`)ꙃ‹¥¯È₫²ơ@;ø´V[¿B5£›Aéƒa—ơàæ©ÆzNî„c ?Y¬R®¡hŸ¬u£Dr¨•ÓBúHJ—ßÔ»3»̀Ơí ơ đÊlƠÄqv¦\_fUœA‚2é—ă­`Ⱥå]bMÄ?®ÈÂ?nWE¦7HÉ2èIˬ*¡cc_‘$m‰¾̉₫çlđç²ás‘ûcV½q XÔ•&°UËé̉ƯÜÏ€Äï• ‹> ƯéóC}1'Ø*y®ÊÁ¼‹…Rûè•â,ă#nÁ₫v%[Ñ;!Ă9{ Fº»A16?k?4t«ă{~1úvÔ…/G?AÉAL/4̉„)dwG̃ĐVd÷G¤jíKÏ_h ZÉÈak,y} ‡øÿˆ È™ÇUă¼¸yt¥ÍƠ)”ÑÈn=wK›Åơ*^®¾d³Wûô9hJGmf{Ü)jâ:lµû"₫“‡:Ë´!đ±UèLÙ‰K«PÈ<_±'̃߈́‰v²:‚úbÉ Ùwª^bwŒú($#<­;5 »ü-d]L;w÷áuË[!c"6ø 8â§}PĂô„mºk¡£²ß ̉PAósaÔVé—‡‚"ƒØÉ÷ñÇÙO§çàl8á¾9—-Mlø@p4ÍRÆôx½D³‡$ơNM¼KôO« wÛû+ćcö#˸9>p#ƠÀ:°Ÿ"³̀P{Ï;Wxµ₫ñ€qh…•f‹‹ç¥đ†<É+—đcïÆÇ:—{¸< ·}ÆĐiO“|̣bU¾ùïzỒ`óñ è²¼6ëđ¡ q‘WG£ØœG¨î …-É¥µ¬…¨ ˜)¶ÎØe—'[iá+rËlI\™xƒ6S̉ÛÎø»|ÚVfk(¤„‚}úfF•fæ2X@˜dGY²QJ¾j]̀…+ç¾÷†đŒƒÂ WQ`YÆ÷{J/ÙȉHe¯ª©©^ÎƯÂ-‰đ`–ôÅ<’‰̉„ç¼ưüÊU©.NE qDtY©«² Ø@]× Đ%–œûÙ4™{ºP 2Ÿ.œĐă:U|^Îñ]uF€Cä aY»̣@´·3öq9j‹£FawƯÆơûsls-%ÖƠ&¨ºx‡+ m‰EÇ)Y'Û²wn×!,¸"…·NT›Ă'3n ßkù{¢́ €h¾O•Äqh¬v&˱²€ÈVơù%¤Ózç8'"AăË'à´¡»Oô™¿ƾÄ₫s¤Ó*œ©ºUôlWÁC¸”ç B }Đ[VµÎ6@Ă 7ác“Ă)̣Û¸¤́ζ>¼äǵSKUs¬Ûç{wha÷L” ̣½©¬ïœJư YµÁ#@æœpGŸ-x`áÈÆïß̃ȹ( „{2™Çë‰x{³¥jĐ„)¼ÊjVßtÙåxØÑ;•/YΑ }S’è.Ó¶AâCJuyBúy´êUu…cm LH:#Yª1b2 4e49;oï74d+ÿ\†K I}f]K’oX5^E€ =¥±…IAº{Œ¬Ù°NË«mN=#êîË uä¥?;&á^Ø^ ÚM!cǘ£‹̉Yÿ$<#y‚>ŸsĐE¤­Ñ5 ‡ù‚9!.}̉3¸­rP{q.ÓÖ˜méC\.î͸áîª*‡’­*çz¶uà?ÆÙ£ 4_Ë+™-µ·ˆÔε>.­NÎE×[ËJ‰À z¬¢ L½å¬3}P“U‹EóÈ₫«ï€J¹æ>œç̀.\tªeqz̉‚&±.J™§2$Z·ÜĐ4a(U!op2Ư<Ưf5@7¢ØORPÔC îX=Tj_ßUÁà0g‡»Å™Åú¬Ơ»O_d['.ƠW>´GU€ư_×Ù‚ªóæ:-K©Ôû­̀rà ï²ù£l w=Zó¸}Ï%îµơô._Œơö ©ñ(ÉăkĂÀƒOyÖÑv/ôÍÊ+b¥ŸuÓ¤bLAđ®Tq₫™=¿Ö†8"9ăX˜Næ&†gÓ!ó˜>„ø€ß§Ía8Í~©/8ѸSgÆ2£Îí£IèCŸs Ḳ‡áØ _:Ö£€2§³$JOqètW P±áiøkƒÊă!Q0†=öR.×jÈÍUéÅôÀƠ‚so*X¹øëÉPDÈDXWU¥¬}±êÜâtPtD,@?WÛ®„„¾;ÚCo6 é(ÛDf¨¼ó TD}*G2¡”8Iû]¸ÑÙ₫ô¤ŸH7O\\LwÔ–xI~L®CK'˜MΧOÁ2v—Ô¡iÛJ_«-`î:¯ü >f&(‘×DZḌ`à4ß“,dàp­̣Û̉WX„OjR¥$ï·3ả’hë~µ5¡Œđ±ÀÁq<]7~Qi­úßæór‹Z‚q‚T)«JyDD ¿«%·[Ö‘»)’Fă#HAù#PoÖ!yú_¡e;ZÉfy:!ú3Q© ê³\ă÷DÊa>ú¢+á̀Öüæc !aí<ÏH̃{lj‘Hfđ®Cæ& GĂO >ÏÄóZ= o¹`,ÎW‹w{̀…†[çÀçF! bÙëF•5À3d_„O„M̀è^…ƠBÖ׿MÔXl°>°”cRÏX@˺́• chE@äs]ç»É &­Ê ,ÖÏWU&KEăÖẪcü  YWf¸L¬©–8­1]\N%tÖ%fˆ*‘QBä•«7 “=”Eust¦\|ŸÂå%n¤ØüÍ!&9ŒÍ\½•!WDAP^$›Úñ܇ºd̉€f—3í@¦̃ˆ5,°ƺêÅÁÔ˜Ö¥3̉ LĐ…Â\́FHÀzư“‘v§„hÄÏJ(EUhÛưƠ¶ Äo¦‡³æ©ˆŸ?¤ÑÉg—Aơúº!k‘ ̃˜ €nkºÁtB”u<»bíÀö‰-£<º]ê; Á¿ÄÇ/OWă€;6o¡gÿ‚¹4FÓ:1 d¯L₫÷ˆ"În¨z;đÛ¨O’ \^JRx×gc(³ü ä=1ëXœs ÿ=£=°5J‹*xî3p“ơȶOê“)ØÅ(ĂZˆÛ ‹Eù˜¢ ˆlȪ‰̀¹{Uh”£̃2Ä‹­¾´;bÓÇ-URă`_¹ûHÉ× -+fÇ‘:w6ûoNÿ%ë÷”̀ó“KZfW©ù¤”Üt!ȸ•ååÏEµQùHVH纰ß]ÔônÈæÇ$UÑË ™–ø¸8̉ƒH%VX,{’“éÂÆkkÁwR•Äúê˜ö/c’: fΠƒ¹~£~w¶“EüI«¶öÓ)†ÜgZ²0dçagc³C+ׇÎ5mÇÀ8é¡2O>V)êơ5Uç`₫ |w+‚sé\ÓÈé“|Û6øƯêzđZÜ\Á¨4“ë:Áüyq`z¾wûÆ MßùÀ¡‡úĐ%áE£Œd(vŒ̣x®©ó½=é_=j¡¢9ÿªÔ½ÙXḅˆOÿ¡Û3mjË Ă ñ²zïîN?úĐ6mPÂɵQL±9”¹ Q묕l‹ø³«̀Uăǻgç!¿ï™S|yƯÏ:ơ³·«/̃¾Ùc‹́G>jÎƯø!HñHr¡X ă‡,° –I²Á|zZPhÊ–}}DûvÂÅ@547ëOÙg/»«Éư%ÎđĂÉ2r•eÍ)WÇê™VüY/¬»Í·vO}₫>™ƒg-„Ó«¼ÏTêÉwl;ª·_±¼_ơØ “4^î!Z’5As%‘G!†fB¥THi2“¦¼Œ6= ªÜB1©Ư²¶R¸M€7™\4ª™úL'ɨ(@ÏPÑ‘I_S?2ơ¾µnsÄvx€s›97,̣¡̣(̣oưS4<¡ùu°¯t\¤0\̣gJ†Ê'DàÆVsṛ3ÔÎ1fV…}ÎÖ¸Ï@đÿ À.â(Ç:‹äwăƒY_Ơ7l0?¬j¤Å/ă q ÜíeƠ.<í-úñé GøÓqR† ç·QÙ% {prF2I·́κGß§ÂÎÆ",‘æ‰ƯĐh›ûA·]nR¿»jS 4?2 *@4K$èÈ‹¯¸, ‡B`.à‚móèÜ«?KoÀÆ"¢»§KcÙ ̣1§Q ˆ7ƒÔO—FY!Ư}–R:L‹.¸´GCt2u /_H{÷Oøq“÷¨:}¾æư®ñWX{KĂó:‰JzZ̀¯²pu°˜8•-¯¼Ú©Ël „.·̉°ZeîÏSÂ₫h-̃å2ë̉³^ï°˜©í‹ß´Fù,§M%$Ï[D´K‹Ö&¼¶Pµ8RbR%ú9™¤: ¿Ø[7AÛv¬´&Uå&ăËSÜÀííYüû<ưlĐ>0Τ¦¢ïŸí Ö—ØÍ,P"0üÙQh ƒdón™Kj ̉í†É”ƒ«‚Ơ›ùPl'ÑR4D« ]Äzæt÷L>ñeÑ̀“ưA:†K¼EAîdŸ"¨êN†YØåy/&«ß~¿Vq]AÈ4 kÿ ưl9Âr¹$â´¼À“ñ d8å+̣Dz̀Hc‰]Yøy‡²ÁḯO¸˜Ï ăQó¹YÊÁ\è&nC‹&pÙɨ;˜ Ã́5–3£ùB„LZ°\P ×÷ fá/ºOÜó*½„̀L£L2äöĂ«o©̀5P*™“}Ñ_C–;K³ÿÖVb¬âR;*́z`LUó9µÍ‚åh¾´rc@øa1ï|•ü{Ë+"=^gdđưDĂ¾*ëÅhƠ°ÔqL“—”‹ŒíAÀy †¥Óö/·đ´•Ç$H2áUd+ÑÁ0h)äOÔ„h%…E¨÷ªÁñÍ¡ĐQ*VḶrµåiÇÛ¯Ñøº *qcR+Ó¢‰»J=(àO×έ÷¤íµ5¼¿º&ØÚ¯ï2ª³„ÿFœẸ̈âˆk»Ăè”Ç«(—Îï@f±•á p–y× îamßµˆ_ꤛ€º¦ØưÜk7~Tj9^̃j1Kă«t3ÛM½Àc¦ endstream endobj 1047 0 obj << /Length1 2171 /Length2 16990 /Length3 0 /Length 18291 /Filter /FlateDecode >> stream xÚŒ»PœÛ¶-Œ{pׯƯƯƯƯƯiœÆƯ=¸C ¸»kp‡àî‚[Đ đØûœ{²Ïưÿª÷*øÆô1ל«)º¡$UQgµp4J9‚ÜY™Xøâj¼v&6JJ 7{࿤”Z@WGß?ôâ.@S·w™„©Û»™¢# çn`e°rñ±ró±°ØXXxÿÇĐÑ… aêacPdÈ9‚€®”âÑ.6VÖnïY₫ç@cN `åååføÛ êt±17MƯ¬ïÍMíêæ6@7ïÿ A#`íææÄÇ̀́ééÉdêàÊäèb%DËđ´q³¨].@ À_tJ¦À¿‰1!P4¬m\ÿ%Vw´tó4ũö6æ@뻃;ÈèxÏ P—U(;Aÿ2Vø—àß­°2±₫'Ü¿½ÿ dúÛÙÔÜÜÑÁÉäm²XÚØÊR Ln^n SÅ_†¦ö®ï₫¦¦6ö¦fïn U˜¾óû7;Ws'7W&Wû¿2ÿæ½É’ qG ÈÍá¯ú$l\€æï]÷f₫ûXí@ ß=[Ú€,,ÿ¢`áîĬ ²qvÊJüÛâ]„đGftp²°°pó²€Î —¹5ó_Á5¼€+Yÿ¿×ïïëäè°|§ô·±¾ÿ@đu5ơÜ\Ü₫¾ÿTü7B`eXؘ»̀€V6 „?ÑßÅ@Ëá÷“w±ñè³¼+€å¯¯ÿ<¾Ï–…#È̃ûù߇Ë,&§-)¡Kÿ7áÿ¨ÄĽ¾Œ́¼F6N+ ;€ûưÁÿ¿£¨˜Úü» –?¾² KGï¿}ï̉ÿ́ñïÓ§ù÷bĐ₫;–’ăûÄ4Ü€…“Åüưëÿó˜ÿị́ÿ7ƯEù¿ øÿ®GÊỮ₫o-Í_êÿÖÔÁÆ̃ûßú÷yuw{Ÿ}EÇ÷ ưoSmà¿ÖUhaăîđ¿µ²n¦ï; ²²ÿOm\¥l¼€*6næÖÿ•É5ÿZ0{PÅÑƠæ¯ ÀÈÊẬ¿tï[en÷~i¸¾Ïăß*àû̉üwJI¹£Å_ÛÅÆÉ0uq1ơFx?âwÄ đe}_C  ×ß `f9º½»̃éù,]₫:O.N³è_¢!®÷úƒ¸̀â€Yâ?ˆ›À,ơ±˜¥ÿ 6³̀Ä`–ưƒ̃3(üAï1•₫ ^³̣Ï{•?è=¦ÚÄ`Öøƒ̃9h₫Aï´₫ƒxß9˜₫Aïù̀₫ ÷|æÿAuŸÙâđđ?đ½¹̀ÿ:ú?ï%Y₫ïæ– ç;kK?XÿØÿÑÿǻèị̂pïVÿ€ï­ÿ9̃)Z{;Y¿_Ă,̃e6ÿ€ïLí₫ß©Úÿ¾suøG±ï\ÿ„â|w½Û?ôïlÿdwvü/ơ{ơNÔïÁœ̃_@@ö@Ë?ưá`ư·Ôå¿ÛöW#œÿßy₫£ ¬ï¤\ÿözüƒ5绹ëûµøÇáư`₫D¿^˜Ư¬]€ÿ8¸÷âÜ<ÿáđNÖưđ½Oÿ€ïT=ÿ@¶÷x̃(½Ûú]₫́¿ÖĐÜƯå©Ûß×äû₫₫ûô#¬-;ó‡Ù6†u=Ö‹x2L .Ph¢eô]sévB†M£­ËÙqyM@ƯÜ—¤¹Y'ùí{ÖÑ ù%EµóÙïÅ8Imî au{d¦øL´i˜QCäĐï·³ŸV°dx¯e¾³;²J!Æ£ç´WÓpåÆdẠ̈êa—<âKå[Ơl®}xxz¸D÷è“sT¾bÇér8+¾å%›#«^%$y26Q™Ù>×٨ŀÚ<&×zX¿ç§¨ F0¾§4T´a»)cƠuÇ`¸5°Û‰{,Ŷº´ú-m3×yç›̃Kܤ) r£<§¶tøúØ ̣å<¯¦/’>ÉÊcÛî=[âi¿àü–Å?g²óŸ˜Ô6̃âlˆ+³ÚĐÖ»ÏĐ~P~ Ø4$•'ó]sq?—[,‰–Zç:û%—ƒă&Y|-fT4g‰L-ÀÖ“d–ô=™P½Æ;Jˆ¹ĂnçĐ´ûÛxJ ™íơ@p̣&®Û®¿>ú:9V†¾Óả11"́Åu!†È‰.́Åæéxdzë,Ú4‰{Àæ óGE ‰8½ỏ². ]ó¹_Éóf„mN[½ÄÓùè8»ø|tj´fz7!Œ„çį')̀‰ƒisÑÉƠEÜî©êlow[ÓÁçH½Ư&ä-ȾX’êå̀„ 3¶–\Ñk8´ư¶?”¹ËΟÔÔÓ“ i¬0Q½ó¦5ÙĂÙ|´²âIÉf”¸h2ȼÄxƯ[]pDÈë\Ö|Hđí_ ¬nú™’•ö!́û„âµùàú“²ˆâse‘°Áç ̀(¨oñYp>”yPKø̣Jr/)&CUÅó₫ËÚ\í…Cù¸¢pq*¨\J'±ŸÉ¢¹M:»6SÜ—”Ô/uDnèl†^½d7²é”™É̉ûÛÜXù)́CÆ&ß(? â –ŸÈ Äè ưWÖƒ:Ÿ±¨GKƠỘK°T&Z2M#¥îOêaizrq›É‘;ú*¶0«7zĂ*WÅhæd ©`EĐ̣÷§¾“øG1î}âó=đ£hwà{„ ‰¢₫ê_ºP†akdpú6ôEhßơ÷0}̀jxÏ”a³e‹9ƠưG!#8o«»r 0©EÖzÆi¡Ơ•‚(̃âˆhlEI•yv·Z€0ỹäªÿƒ±IX¦ÿ:‡{¢©9.”—K i’x_W¢;r$®¼Äi¼ ªcú\—ù/; û̃8a¼́=C̉ç­̀• ¡¶íư×Qâ¸ƠÖ0«°Ô¢…p[A!BÖ†ÀTỸ'R“g=ªÍ4,uƯlƠ G ÚÁX#üJï1‹t©àwĂga¾s¦ëĂ"À‰’ÅHa:Vï£f2g]U¥àe1ß<ÔcÁÖ¢1 JR.”Ơ&:•ê~½¬~‹€v‰p+Å`¡c†éw•ađé³ ÁĐÛé8ä ×ÍQ²Ăï÷߆ú×±;&˃9°”ƯơôZ…sPÔœT/nº¬kƒ ¾Ụ́œ™ßi6[¦ÂñjáŸ!PͶđÂM;áè%&+¯ñS­ƒÜ­´vË·!]óèê¹  OÁCër an-Ÿw2Ó»̣ûÆwqÔ <å<àgÔœê¯h"®v|ˆă4QNÍmơßø¶§ö’ 2̀œv%×è/0YĐjÀEÍ-t^Ásª>+`XËßÉ·^\®₫—c·‹ó¿đ&[w¨í#5&_/ó2›ÿéÄ©¤ÿJ§æí‘JqÆgÆ|Ñ$ĐÍư*ÿ…ákY¾¶đ‰»vä'ü/¸=¡lÚ₫ UđI$\LƠaø¨>#.¢i±™VZq\Ë́û¨>«vÁÙ¢°ØßMCƠ%_FÈ1$óĂÏâ[¿$¤;RÚØ¼¦ukđ x0PRùr­’É’©¸ iÚ#Í—‚>û_åä}Ư¯,:…]q?…;¶….ØôÎE‘12 Éưœ(DÇ#Ú0Û³-ÿnmÜ\¯½¸é|85°I£]qj“̃Ï‘í`¼Ư“SEVÍ|:nư?·‰] ³́“•{vpØ£2`Udß̣ˆ·ÁcÜ-]nk;ă%.¥Q=T¤MÖÅêA˜C•‘¢…#â/Æ“ª]VVøeÜ-×ÎÊêæçö>¬ë ü–<‘Q¢¿—₫ư()“¸Ơ–h̃¯j’É{È;^b 9 k̃âGù9Ù á^ æb`6ñäUŸPTj+Œƒêî„P®Â[yögâ— „¨ñÛr(?È 6¡]Rº¸à`jühÊăè¥`$äenBˆÅB'!´7Ú.½¬°Ưă`ˆJ¾ k|ôơBƒ¿Kné!§̉ÓïÛù4ă'`iϬo&ʶÜÖW JlY‘TskÙư3ÓH650ƠƯ q¡è~ ›ø2´̉hµÎvå“́”2¬{4÷†‘̉/.ë–̃Ñ\é€"m(ëBSËtGo•%¼;ØMpÜa¢ÙñW:&^Ö;ï£ềWù8CÆ5Áß–.©h'it™˜qîơzµübbè¹EçBü9*a[ƒwN:vë½»:06æÙQÑ®îs®’)k:eù;4È5¾—f®*¾a!Àk4oØ‚ơ{3vg›gÉ₫̣ô ªêgq·sq»»jt̃|́ ³­ẦuW,£hưv°HØt–óô}ư£V÷0͉é=y÷®¾‡ ­&Ñ ́S2O«]óDÂĐ”Úó½ÿƯ´ ½̀çÉÀ}ư\©ÍO6±In¿|HằOyÁÉ,¿æ™cAkI p9èËäcé3“ê₫f˜?—°K•~)Ṽ/LVw?¯È}C₫µSz«*²Ùú&ü ƯC…Å@&x» „PpÉrŸĐÈA}8¿Ơ'Ữg‰V‚ËñÛ†·ªZÇÚ±ª; †Ce¡ÑgQuvMçrú œ%¨qܳ~tP)N¸ bbѬ_¦f˜‚AéĐù,œƠ} :ܵ±!dƒ…Ic|{tÛK¥ûî&ácºƯ‘ËkQ¶ÍÄáç…ŒWœ~Ȫ5q#ô)›1‹{»¾ŒŒỄ±F́ÙxyJ!F’mư(Ϫ¨Fë^Ü÷́!Ư†la¢³]Ÿù`;;×̣¯å₫¶¸́ơ%Ñúư=áwsù̃¬”£©+Nk̀…¨| ]Ôơ³ ơƯ`éˆP€«ús¾FI-s(¹\Ûf¬â°W6ư0Ơa¥…FSA’uÎH¼]±>̉–çP}>Ât2/¬'>g¦Sç7!¿%ơ*­·ßÄâàçL¥å…ÄY§Ơ]YÁç­Z Ï[¥µóẻ¡,Xư\ØjºÙH'2T¼VQa°…B¿ÖX'mˆÇµë2e…G2†›ÆJÙ"̉~ẹ̀{/„X9bÿZ+û̉đÜ a…isÔnXR£ư¬Z;àmÜË…'ŸÏ:b,‚%ăkâ|„àu[`lƠhe0,ÛæuỊ¹!>æ#§Ăeđ§ËE!s »†ç9Tè÷ hgÿ¯é%J÷‡¿Ê^w›^Ás eẺ??RÇëˆC@Ï!Oó”Ç9Æ /½VÆ<32iè„ô‡¥y›ë/ûÍ™̀¸%¡×Â!ükzj0Ơoh$‹—¦äf%‘Ờ½àM̀@-t?>Ö§5Á·I£e8Ñ6æa~DæÆ"MV=],~Ư1qD†åưUUfí{$gÇ+†† ÀZûó¬ÆÛ‘FW:‰‚%s¥̃½†ü‚AY®”Ç/`ï’,öjæ²citP¹ÑÑf¨Óëø›øƠEj' ‡¿ 1…ÊѾ —%ùëOê¾m”ºBOÓZJçÁ£«1awö#[Èp¶¹‚ü^W±¯C5wŸ¿°£Ь‘Jߺ5v®ZÊâ…ÓÀƯeóƯ¤µqaăaN·ÈÖÓeµĐüµ’:i}¢ùê·ï̉̃ iĨhG=½f¶ßä`¿‘äÉÉ„ÜÛÀkªÑ — ²L[\5HŒOÚƒjlAÍ ¿ÔÈkúÁ û\O2ê'’´¦áMhÔ¹C&ÔƯµv%`ô"1)y"WíPÉ”(„€BV‰Œô_åí‹ ºhFŒ#—Ùø•䇻ù¬ÏÊ4rñ[íwnă°̉ia£Ö¦æfŒ6·gàÍê¼3­†Y4ÂämƯĐgäSƠ?Á¸§6"0$–¬ȳñÁÓÛ÷ªÇWÎu7npEbÍSbIjçS8„…¾Çp¦W›Ajä‹p"6 ¹u‘Öj…úÚbÍ>ZV‡Âfº†[đˆ¹Ô»v7¦åjæÑ‰àFđqn°kˆBÈûRđŒñ›ßQtµD/ɦŒXƠë—Iâ¶ fæï[!ĐVsË¿ „Ơ‡p¤~) Jöƒ¸†·Ï5wâ£5SN-×¶ Wº$‘Qf½~×8”töD¬/gF@—I«™®<î€đú§é–! ¾Ơý¤í°ưN>=̃½/]q;%:ÂÆÀuíèø%¸ÛÇ8§?ѵù¦d\»yµ¡˜a-÷ÏÛC¤Pi-—H‡UKOb¯}o±…Hi3½ô³‹¶·8©öû^‰ ÈEMˬ!_(Đ9§)¬aCgø—I‚4½*hư2‡ÔJ,áét¥&̉d00ú\‘ñCHèBz†R)8 }ÎíẦ́~z”ÓôaÙÑ1¶R'ÛÖØê•́YL™²Ü"~i₫¤›H¨}i›±̃T́ óÁéíÑ\`økùª°Ä\đâaƯ¯‡¬øƒ^́¬7±QiáF²f²Àr·y^ÉGu\Ú1ôùa±ï^|¦{§á–Çpu1TƯ4¸ïß>+¥+P¡\0f}îƠ€Ü«åâ…ôv’n¿ÚEưa°C-î  ÔI;?|¥u°zßtE¬̀²Eö\_uµ€' 0H®ø86ä™ơ:uâ}ï£DÆT@oª{%KF¯U¡ÙăÉ!=°™N3½·—Û´Z‡{Ïa! Ư eÓ́dÁù´v~FöÂáđDª¬Û4½ûq'ă²ñ†Q¹^Nbúù†î#2¦&½ÅqƒgZ₫è7­2‡üæ„€®[ѹ×EÚ‹G?Ùï̃Ù%mY"8…‰o¢”qY, [ \d«@<»!J%2AŒ ‘üÅJ=Z1›rïŸæPrTgv{î˧®¯V«ÚĐ[ø’ú$jD8èü‹´Å8ORº;ÁÓ¡ư,î ˆ8 a52¶'âÏă ’Ús9AÎĐ<&ªÉQqDÍ—LGúHĐüäjß'¤I¶+̉a.:h̀d”x/N‹ÑeÁ¦ïâØœÇrÉ>Êa;ư$ØiBï²™LPXñâ=c¥A´ óơ2R»_¹Zœ×Ù²R§#¼ÑIÿi6¤®@ƒ*¹µÖ3V.?(ÖR%Ï=•ăªÆ«gGuæZ•× Vµ¬ø: ÿ2¡ˆZ.ĐđôéåE¥ƯbvÈúU.‚°;$`s€‚#7¶.¢ë(GYÀ;XƒÉ›³\ơqײ!Ÿ¹=!äyă ª“àk³P¦ï“Pe5v´n‹¡Ú_OR4Áx­b e98¨KÀ³â7yŒshAN&úí ‰Ñ³$("F_ÄÅBsIØëok·£vfÛɸ_Ó$¨m–ïÎf G*>_fó‡jJƠÏ^́´T¬vr™» ÑÜöM÷5Á¨:œøÓ:XĂwb4Ÿ`|é¶ieuÙƯ%CĐf«æ^F¡­6÷ö5M÷œy2§úṽ'½́6`}”eçŸáˆ·Ú»seh˜=<ˆÂÍéḮ߸°PuE:́²ûHtn¬Nê\_~-ä»JđƒD¢Sr˜‘ĐƒZ<<ñâ#C’)a²Œ¥®‚è\ÀoçĐ£e–‹ &ˬx6Đ½¹#CL­ƠgË8yDûƒßI˜C ç6́ÄÁ¼£ÜÓŵxs›£»/âzñ« «?ö2¼ .•Æ»₫B̉vzÀ®É¯ ›h–_A·<á¦ÎÈ«öY¤1(l»Í?^“‡Ët?£ga„tºÂúgÔKÆa+HÔIϨÓÑ(ñDq̉l0|Æơ¼l™Ïấ^ä"Sôq‹Ï5Ü•£5THɆq Œ¥“¥×剩’Êv£—á`«j%g×ÿÈŒ>ˆƠk|A7f[_JÔD(^⟆‹ÍèE–2»–ZªKKâ¹ ÄéäµdÈ%C‰*Œbï“èB>‡92¤<©_î=à¬A%èʺŸ{ăê¸Öc O²æơỡÎ&đKC×ZÔ9ƒ—ß)QÈYUB?\¿û9ë~5´ÅKk±|Ơ[w9‹¾»¿±éÁ¸åltR…©êoj̀wæCäå}ÿ#Œ¡Ú‚¯xdäaoå/êËL‡ô»ä&/rtÍ!tåµÊ.S+|ˆ¬Œ]̉¦¨dR:f]°lŸ†•¥èûD* N˜£´º`4¦!ZọÄ`% zÉs“qÏ"?nơ(óå4~wi0?äS,åu­Dz Ï›s £“H~̉ưdŒ¸ &k&$~ Ô¿Œï™-3¤ !* " —ç!ÉY<}:S³Mʶcư,t@EjÔ¸uŒ§æ3'h‰u’Nûhe+º•Bíi&¦b!P·_b4ϰ@2Xà±tà°(GÔ@'PÛÀ¬̃16!¨8Éë¯C¤¿¡Æ¾÷$ÊF¯jqFöÍL ^̣>Yÿ ¥`zAOI)D‚€hàˆÄ+¶Èư‡ü‘ç| 'ü̃Ö‚=lD(=G§÷’H9Ö6tNü¬Ø̉¥¾.I{Wê=|5£É ZlZTj̉ơTiI£_Ž–¢ ¼mÜÏ*ÏZ ~̃—¸ J&¦‡›n})&¸×cs@¬ÖÏÜP-g7ˆôËá;æ¶r=ÄëZ®ç€§²;̉è#²˜—ytNæ›VÑb?oµ̀€3O=Ûxñ ûuáôÍÍJà̉ç»ÂP¦`ơ,ú1*”îè$ƒ¡9Ă¾3í̉B¥í§5,ÓÁK–dË„.û„-P炤DR³́±¸ ßuư-ÚÁâ¹**”`Ñw°¤c̀o“9Ú-Ø<¾ÄIâ«mümªn¯û9úµÑz;•èh¶#YÍ~ºª$c‡âXzÀ™ƠKÇïOÁÂCÎpê]Ê[ËÀµÚ9Ç;”×Áfº&mÅQ:ç%Üáà;9ô^ÂƯ¤Ykb ¶–Rˆ#´K¸Mø—lê‡Q0íïl"#üyTWØxu=7°¹'5̃z„́‡Œ>qä$æÍTp5áø¬›KâG™‡ Q«@Ù]{RwP\ơSóHc=̣ )U[Qo–œŸ¹IAq¾QÏÙHvƠÔ–EéUFåÇ‚:v*Ouï…öĂÔÍÆ1aˆS&Kêd0"bǤämÇÏ£BbA˜g…¦s1 … Ú_kZ>]xª÷¯Í¬isr—±̉₫}Î ‡„Ÿä4:̉Uj:w+\á—íă£ÁEÀ*íOdÂÚơ?–5”»_ —¯Đ§MÔ ú©\T»z»ô¸ !x̀J#×dù 8é›5  ³¿› Úv:¤<¤ƠÆÎt¸ ÑP$ªpjȨË5Üḳ}ÿÑ¡AJ ×’'Ÿ–0>„qđ;jªÎA;47ÏÊ9đ§J«̃Yå«€a•~,™Ö¯Bø¸"a}‹|9 uS¸KfÈ·¡DùÑÏ/¯µ4Jú̉;³ ÷)ă J_xß΄‹—Ë ôËC«Zs³ø·W~€¨©•GZ蟀½aAªÍÈÀàß²~{S3ƾ' Ëư ,'£Us\ˆƒ§TT¹ư¡‹°80ºỌm‹æC?3#¿ö ¬­OŒŒshÿO4ä:RImÑh,/6hm6c´¥*Ơ™qˆ>TơO=g€£Ïí¹JN¾!k¸£©‹Ư^í:Ó +OR0§„m)º¶‹ù6£.â5CÁÂatFíÍ\D•úưl (1#ÁdÆà¬ré Iʨ%¯„(MgÈ÷8¡Ü°¾963–£"fîEû ̉àÎÔ ^ F‚&Ôüè}¤~@üf‡µr. ₫ĂĴ¿³ü©ÍƠzm¡Cɪ4_{99B«DƯ0½^ỔͱïåDç8túƯ7U!e!ß—®(2³Ơ]Dt»öÀÛU½ù:Zö_·Ö9y±…I‹D˜4N4˜"t<½)úا~gîƯ‘ç1‰4ohªÓ.<²e“ÜJ]D Ùùßbm5ÉJ ¼ú·đ^*Qqql©ạ¸¶{bÚ†5qW¶{邨gĐßJ«§î؃pÖ°†ËYZ†—.nS¶"‡«Ok$‚°tMxë¯Ẹ̈¦m»lØơ#¶ &G;js·œñ$û}Í{|¼¯gß®/²AÂüÀÚyb¬\°/ük“pN¾‰€#/ØÀ’!CMSBIÊáÇ|÷OÆÊơăz pÎ)OT²¹CXtWƠvzkdFSóạŸXÜL ¨Á̉²̀¾Îư‚R1(Ÿ—–/•.B*;oÛ3̉)…‰E¹ @l´Ơ åk\yTfâïă-đ‰{¯âÁĆ®çño.z/5 æÀ]Ï'Ø|ô!/×ĐB;—VºÏoLÑÇÚ»EæÎªúú[”‚ÈCeN#t2/ßö¸xc™ơÀ ëú8́³ö̉lKh+ m+?#²x\Jº́¢¾à¼yëDè‰ú Ăªâd€á̉Ë–^ëu·LÛøC¬U;ü G´ê[v´ơ4ˆÄùUơ_’rwRê¾NƯ–oÁÈd[t¨uV¯4‚˜¯G¼ßâĐÑMdpđtœe¯x扜üÓƯ5»/·‚È ø8íˆ<a«ù¥üÓëpĂú(/@N-´fL‡Ÿ¤¾ËtÔ¨̣M|ăå(xxû&^¹Y‹Âø÷’p;®»Ïz¨g2Vw³´öÔD¢ỰP8ª«ßév₫~~б„9#¼-qÉÄ7¾׿v1”đO₫OÚ¿ö*í°¤ƠBEû[46<ë¯1$Ă¿ï¡ …ß=;đUMGŒ\ôçïØăPDƼù8…Ơ‡ç-ơÍ᧌ֹ‡Ïµ„ÉA´Ï í¤ÜÆ0×@̃åH¤V°¯] ̃ u?ÉU¡K ±*æ(ö Q¶²Ùgíâ{Ï?¢KưDF̃à̃ü:uỔ…ê;àm-‘çè>î'ã@–æƒ}íOÁ\SøÂù*̃ª?)Ă¦Ø ĐuO×u¿ªiÜ~dgäñç —^(?¶é©Dœbl~…Î 6à™½\è]“gc¸_¿¿,†Íáå!ûQdhÖä´¥idf"ä ñ&Ñs*„Å?°ăôMµ·Ó\Ré;­{Ă77M“ŸÎlØ|,®́íË@ŸÖG0¥Ñ‰›K“Fw÷(l5„ü fÿ@W'•đ(á§3Ø”̀x†F\µÏâ°ís8XG¯wW®¨ÏEÿØë‡œŸ›°°ú«ªóp2‡kÖ´PÍ'&àP%̀D£Áß·²ú[.Ø-dºÖË ØÑqx̣̃₫—ÈE:¨«E±MÖàu¿5¡̣­Û­Z‚¢€7ôÜÜÛ\ªi,²ÊDªœF¬ør2ư>ztij́Y‡< đüWON›P8¨÷‚gd̀l È„ØR…”ÖÈ¿‹ 07FlÁ€!…‡Ñ+Bù¡¿Ev“~¿M “3×97~' êÄÙ1hpËfz¼9ưöí^ƠĂ®Ăhz2ÁUo"{7· áète'^@ 1ï¥m¸À§[®›oEU]̀Ú̀đêöƯ@ra“YvöL±ƯŸ)¹±ÖÚ†\ÏåĂ0d\\x‡)ÄƠ~:L˜¬ÿ¤ ‡Ă… ™³#BŒ®èÓØû¯ĂÍäM ZD³<Ñàf’ Æ2V<ßjV[·4k+æăŸ"·đ}†̣:‰æÍ7ß­itØ̃ü 9Wú®y¿Ư˜vÆv‘w|îAË'»L• èi¹ùƯ§Â]gWơûɤ "p¸e~¥TË́t₫NíU$äâfG ñäJ§¦ *lÔ3hOYË 8Mkp*à(n5…Ư¸V¾¡|̀á}¶J¶¿QÇCµ»ißqÙx#/·Œ}»³đçmºEC¯ă°̣'S6|ÏĐDđ½—Í×?mZtuÍ×§@Ăa†öPXùê6PÚS e±eÄêÂ-d€øœ=½Eº¾‹'°ä ‚æ²÷!3̀±²‹Ó@¿ĂÉ”ˆ„r@Z %ø\‘?ÈVFI‚°åT ÿMƠ CWB£o<8•2ûBOpMÔuà0:2Ăö .¿¤æIim0b° x2}hX°DÜe£÷ô 1BCÎƠöG¯”a}pM䨤¤qgƯkúQ5ù©—fë¶}% IHøu4±'KĐä¤âO¥jU wÏoVî †’¤Ñ1%“›7ÚoƠ¶¥%èưũzUeÎT]QW9á‚+KhhñÁù?®ïƒz3 ~¬àïz8 $ç'¡WL;Á$GÓH›y\ĂQ®?BĐÖ¬s’V§Ê¸Mhl8´v$[¦²Üo-0ä˜KúHŒ8Ä/Ư?™/*śXDÁ÷l•ÛI–‘7³ÙÍ,¶ĐYµă4@e¸ju ơNđ·ÍƠQ}/ØÜ~sK‰x*‚Cmª́A@SÈîÀ ª‘"Đă‹Ï úÍxPd’đ¯.o³]k(­/ 4Ăs3C…ĐMÈÂC25À/t¯D< U[X<d|ÇMqŒàmÏ Átw™]ñ^µxơƒË–ç ©·Ÿ¶öúŒÎɹ|hŒb]S/́c¨î’’úÉĂ»Î#º¯dĂÅvô*sÔ?$j…B柿‘>à™·aĂç§\ûļ~zÀ´'QΗÅ<­`ˆbv ÊL(ug̀“~Z.„ô:´F\ó%¡"Ă/îù¡¿² YáVNë<]YïgëŒy·ĂÈüF|dæÄïÁü!Y6Ø!Û´8êŒßï˜@}´C½¿‡ưåÜS‡cÉ_‰ô¢I` úî)0Nx4¦MÊÙ‚`tpw~åYÿ)ó’†ÖOP‰Ç&u¦…%N—d7¾Y4O±ÑËŸ…ÿHgp“Ơ¯Ô“‰KØê»Å*´Ÿ‘ÚîƯ†VB‡B±*ÿ÷G&¬Ưçp¥àieSƠÓÀ ²J›û‡¾çWËœxN0qèö‰Rµ3‡º øO8ê**JtWU}¶₫@º_¡¸/éÏK¥îQeßÏ¢I²{¡rx¾Føzø´ˆƒâÑi”M1rÚ¥n $´ÁGïq̀åưŒ„Ưç[næ¼;Föu^+ư‰Vç`:b¹`’—™ë$§N©̃đQ¿Ơ¼Ôû·Ë`ö!oê²â›’Ѹ·sđTxˬè±Ô¶%î7̣ø#oL2•xv$q8ZáVÚ¤¯ŒH7áÚÁ́(K?€‰d́iYg̉Ôt­ñäßv WÎ'ös$9Ä{Ê…dCùê]b}ÇÂl KüÍ%7Åể06œ¹Yđă@ 7~=Í̀Tú\®t÷#…ÇRMUѽë+÷W>ïÇP#¥¨57?·E…j̣¢PÅ9I´4ªÆÁùTi~ñO9=ƠÁu;ÁXØz±Ááăù]?=ÏÄ f{<ơ+é:Œ =§ä{x«̣âñọ̈bryûAA“5Wà»veë`Ñ\R„Ê)Ø@_ơÔÅ~U"5Ö^ú˜-Íu3¡ts̃Ú\ÜÚᾜè¶Ü}ÜÎ}°!k.åO_É~TZº>&öÅ7ơño÷zßüÈ%¦1Gq₫ Z Ëj¶2®×¶D-jN}¬:竨½Ï%Q&ÖáË`¤-…ÉD%UÑw+bKP5Ö^éö‘%#ÄƯYHs@¼ª“Z¦Î!(Üg³XXư Fµúô<¶¥@‡¢^Gyé]:‹½?%!~=Ư€J÷ư€M롽³ñGmÄ)»r“®U8Ê÷ ³„¨º¡ÊÜâ‰;{lÎƯoh×Ei_Ls ~öK>m¤ cÁ3Z| $cˆê·ñ)&̣-ú¨?Ư¨Ïº'ƒ ®‘ÊFº˜Ơ|ÚM}ëÔhiăcs—¿âÛ]¶éN¨éÈkñ ¶ê„†ùô” f]¡Œ­û€‚ 5·“|x’¿¦ØØ³…«—\^ m₫ûAƒí(·Éå·-Œc “ß̃"¬_₫D`,MiüŒL5ev?äô¸]fI5Râ·#¬å¯Ø?çJq°ë–‹"v1cNăç:G?jyÏ?¤N´ÂK:ièâG4ötN¨©ÊǸ+ª1]Jae³*: 4¦~ní8Đy#sø ö‰¯ «E|ü²€5$¦Ắ/@Ë}êÏF{†hưej%3Ă<{¦H^:1 ”¦Ûï₫\jÜx9w_Ś[XUÓ ¶¥]{ùóÔKK©ôev’'¼0X¸íGÂ:qm9;'Q-}BÄæMËZ}^é£YÓ³Z¾;+"¸²h3l‰Jçi¢ŔC’¹m$iœ‡óƒổ 7ợ”O Àïª5è™ñF2ÑOz¹+ÚJ4|É2~Ÿb~?̣1ü3z;$µß…üä‰èÉ._!ơ&æ·}·ä^ S Vq3é-‚Í–¯Èè/”M* !™²,Ñ8.“ ¾$hIî;´Ơ°™’{á T>…)"ZâùüCˆúÖ_ƒyî8&\ µ` ëâ‚z‰¢œôN¤Z‡­QÑË\1Gff̀}£Ê*‚Óåå‚Äâ£_¥â.ˆÜbÚl*̣2ỤèI¸l³§Q`‚'+O"4U¾ăƠ^“]y×÷C¨5&!êrI$z Ơj'æ£@HDv£ÛđơŸƯ›)\>gXÚx¿Ú…”IªPûûƯC¿b|2‚d* <£~»Ø=}PC…f<ÛRl‹¯Đ9ƒ’ ‰Ëo1Î[5~TH-p”aܶ ˆäH €²ÛÊjP˜Tdô3Æ?Ô~:u÷O–_Ÿt &úÈeDHÎØÏG6(kWº(a)Nà\«¤ĐH`ÜØÍ—^o2Íî­º8(Ú#Ù–óóĂ&óÀ/đe­ s$ĐzIÛĂ„L‚*ÀiTÜ0 4}ú̃ ho¨~Đœ).¹5êîn=»́6ߨÊüC•¼ Nd9:&Æ4/^åøê{ïyMÉ €Âă¬½ØÅ ¥p;WC„çÜë’{TkBPßpMĂ¹øËÁŸ‘W(¶₫.Ođ,\X°Í_¤N¶~%㔫œ‰•‡kK˜Ú̉K­ÚƯ¹æ–‚‹ÆmëôƯn_´ƯsFq8%$uŸ`/Ä ‰™WÔn®ù8r‚‚rƠ¨“_Ÿ²jǾ‚Ä̃Pç³Ù§‘Ăköœ(bIo-ˆ¥#=5Ơy oÊC>gƒ @gàr¥5lg>Ù¤9+B#‘ê[FµîÏäÔÆëh—àé`Øüơ₫Âü8F¯A­gl¸Ù‰q9œyB¾¦ù}{wj¶œ…ƠmÍÆÇ¸T*Óú ̀¥ç¹ÅuÈĂ²Xă/zđd˜nß ø×#âZ«ƒxn†}{2®,Đ”/¿X–M¢s'=‚£„(ă® QŸ9́5™*û…̣³Zz‚…lÁ¸8Ă¹W03|Pt¤–S¢](öUå(1 ½p̀»=-v—ÑrĂ¥ ­üêĂ¼iƯY=tNjÚçÂujmY]uT¨DP%ÿÍ–ƒ’JÅS´æàväÁ·d<ƒrq/ăBÊY0"Ù ;§]=Ѷ !×° ‰̀R0î1Sj½Æ¦j®–T ’½ZmÈK{Á§ö™"x.×€-}´¯rä϶#m8ØBHÖư#:aAíz=‘măÁXÀVcô1~!¶Æ¸æ)&³}Ơro¢®?E a ÂÈ(”uA#j]æé]öA`©)çËÚM€}ËåMäXB[}èSt¦pH̀k½b#+äB}—M{ø2–¹# ¶o ;̃h¼ơ°,§¡–œ¢̣n¬èØ–ó0à¼ï„Åߌc+vx6—c`hơŒ2(ưĵŸN;…yµ²íŒi—Ü7N£r3`½™q€ôi7KœC/£d*²áÄR)Üt°̉:ѯuvº³Mq̃NsØ–çJ3–ñsˆ„ µ6ơÂïưÓµk§n ·ŒÉS›Ëy:\­‰}ÖI/ÏPoûâ¶ÎÂĂåC¦ÁÊJĂ1Mt »b<đj18£`zÑ4×¶ÎN¸’ÈÄ¢éÔ¶·F†ˆ „ø™@?¶ÔTÄiØŒGQp=ÄÏe) øK´³́wíåĂØ _¸÷M˜XC¹“QÉö†‰–fÅ<$?Özûy‰p›-S®_êøĐ>åµÏKR•µ<>”Î=K$ ÔLk·˜ƠéYA7ÅÊ×¶Î&¸ƒ9m__çΪÖNx I|‘@à2á5Ø¡åüláí+©K=M¤½j±É9̉ñHAẹ°ª[‰RôBWØô4‡®©'·êÂFä`Ë–!y{tß^Ä̃˜ăv×P‡®&EèKÓûḉ˜E#~ÿXpUƠ₫R±, ¯|W z’É#$3¤°¾ÿx`Ü\«ƯV´‡êŒBf¯ÿ¸/Lcwü9jÓ9²¤~–Ç“¢ăküE6 äÇ@Ư-}•!¯v¾6«~»Xw—¢Î9=³%çÖ‚×8Q0kÅHPû&LǤíÊy#€ë̀×$n×€Üû[æ¦^y ‘ÚĂd‰Ÿou(—%ÏL4»Z€D®›œñ÷fM(¬&̃0vnWáà-÷ø›$x/궇$°ù’¨Æ…Î̉U<ÂçS<‡ÜXÛç”7ü2È?¯1»kۻܥ5WX7L,+1/ ün¿̃ûöƯvä÷ÛÜeáÊysÉ#ªêY₫Dt+DCp¬¥…Wgæ×E¯- YlÀÎöd”CÏÁ |gö!æúåÈ%n.Qâ´{Ü0Ö!åSÑZUà1ñæö =̣êfÚÊtè¼x.Ø̀ ˆ…¡éKỤ̀-©U‡yévô—|ïéëY)ˆ₫M泇DcQÅ»},OÍÓƒ‰—‰±Yl¸=ñøäL]r•EÎHî¤,Ç;­˜£;éưlôôE¡v»4œïŒùª¸mÛí©̃b̀Ïwd^>hÀ˜Ó"¦̉Ođ[‘¶},é.êHœ=!Đ;fè !ª¥h‘™\;›·jY ±₫v¸Y²P ËúYöáå‡Vؼ:iđºÄ %Œ›uUŸ7ƒ~UPHÍB%éX1×I÷䬛ËF…65˜A4^w´…‹áÆQ»8¤å|ưq£Å( TáRR¢,]æÇK;”Ă²32f>“Z Ux³xơöÖ̉)2́);7´"0}ṭ)ơr«3KlƯḲÓĂ5¥duÏ)•cº!céÄaXéWX4v™æDGéá₫!ßô!ôI¤„ÑÏÇ®>NẠ́·HÉíå¡&²qm_3L>„91)5"½^4¹óÏ—Ø?́S…L/ÚaGƠj!Æ„Gµ °‰p0>¯¦°u÷…ØO¥I„mÜđvp˜ÍÚơ~aY—‰<ĂZÈŸ»ă Ó¦f"ÿå7‹đ‰ÿûˆ51ụ Ư–`^z‚˜‘́70A@³k !pOÇ÷l­r뺣°O%¯ˆ¬úÂ),á—£Páüs3mQ‘/hË”cYÊ”'âơ— ¼øđ3'(Vö6Ä0wîéF°·.ŸÎ)D7ëwâ>Káï5rØêDîäf¿´\G±C>È8•ü½–BĂ2¾×* {ÚS„;MÍíĂV±R}íư }ơđưav; § ¸¯ \b+’í¶ø1»ëÁ]¸¢ 6÷̀9²0¶}5¿éh˜#?£âoF §¨ÿÂëĂ©Ù579x<Áá꫉̉O.7’i9fzÿ{ư2ØxX•‚~S7ªÎ¿<å³—uö=>+¸ç¤†3©‰ơ ú½÷ăt^,*qO}2¬†ø5:¤¼åågØÄGíßƯ´œwp)‡Ă©–.¸L3Sý¯¡ă®‡O–àîné7>Éi†¸rV 1œB¨çf€ ¤Ọ̈X«+rÿ]ye-Ú«·ÿÀâú„Z3ê •gÂÂ/!ÛóƬ3¬mà, À:₫M¢¡ÈA„Uđå¾åöÚ{g{mücêÓ„3%;’zđl)/¼JQuùˆä]¦à|>d ˜ƒ›îá¯_DƠ^ôđnƯ9ä:ÎâŸ`jYŸ${‘ûqWVaÓ‡[º"bĐ5±ÂÚ´•ï<=±¨đe—í¦ƯƠ÷†|«-¨8ÚÛ•6Îç®ÚFÂ7t›ª0Œ ’ß_Å’Œ×ùî¹hryÇ\:ƠƯ{ üÉQ ŸB¬Hù?ñĂ.†RHu4͘‡ÀIñAº%hÁ¢Á úê='K|(¯G™µ¹đG T’}ÖĐPßå{dË$˜®~›UT€Ø½XĂœRKV&ôÂ%ѳö́4¡ß—±U5~TïÀi´„ÎÿD—̉Å]V–—ËĂ²,¥8Û§ˆjôpèp‚0¸é•äÂ`'g@³´,wŸ! ×ØMnÚ(dBQgcº”D÷^5¶Œu¯œ<#Ùÿ.Å0ôA5 Æjçç­‡iscÀT5øüé‹–égoKñla¶ĐØÿ x N;©æ̀ê8̉âo3y ?|ñÅÉÎ!7¼? Á0öB)&rB̉§+9úƠˆ‰ƠÚ›»³& ÙÉ»>5&…TyJ‘àO;*["ư¦'p á-g'œ³Êd×?»ê'¥m̀Æ₫¨ï>y>­’I¯À'#ªé̉¿b²̣z₫*FKŸ•%ËcçhiÛ( Í¡´—…s N§ÍăSă–¯~ÄG»-¬PMcs"Fxú©‰6 …Ÿ‹QGW₫5y{ơ—DxvOơ7ÜŸÏ \ΆPJüB¾¸ÉHxKĐlH¬¨ÛÉ“W¢¨!Xg4̣àƠ›¬ä™Z{ÓĐ “ö@/”à+OăK ̉¹‰R–PÑ&É=¶W̉>qz> zØâv¥“Æx¿È̉‹^ï_çOxÍâ§Ư`†<9鋜¡‰G/¾Ü’‚Ç|y䈼ïÈœ4H °_nØçÂN“üư© ó©8NG_@±w]½Å!ùĂülgƠ§¦hMÉŸ3FwD©äÙ#îÅSÿĐ…3đ¨5Ѫ‘ÊœKe/ ôC!Ëđ÷ÿoêëÖg)Wrøi^U¾QzDÇŒ”Ömñ>ºƠcAÏÿ €-àö[{ïö®̣ï]é¶c5v†-—Ï´.\†Å°»^’=¯¦2t¦Ïb”á¤đ}¼£ ƯœªºỖlÈssuhÄ́e¤¼Ü‚Ëẹ̉&ÿĐD8Ơî·ë?¨Ÿ¤‡N°^ïH¸»-ød/ùuăÙ×ß‹$Ô ÆÍS:ø&:ƯOWƒƯW4riß”®Hû€fPú(öP} ?G>Êûøë ¬3ât&Ñ?L#Ëđ!ÈƯÀcøzûÆ€Tŧâ!“;ÛgO´¤¯Ù́$Ï[á/;²´r̉{Ÿ|0¤đê;Ûéáä´ÏÇ•’ÁQßQw¦ÿ´„e£Êq‰ eˆô²UXơû¨-̣̃9³́… -HÅs~éó©bN*LkS‡ÖNpüÙw³ ÔưjÂgóô16=A† ’ ₫.… Å])˜œ=ƒ!‘vßë½>`%ç·Jó˜\—Úë¸Ư‘#5à3qZ˜üûA5ơ₫åD,Œó :1¨p¼†²ó•ÙÙ-èxg6º`ÇÖE3âA±É9k9&S$á<”·Y]ŒĂm₫mBg‡TÊ­Ç12”KåÖ0 xs¨!,-ù+ù>áSĐY»±ĂU@±¢‰$û|´*¨F€œ°\Ù“ÄŸ­Ù6¥¶>ôư sÜWg}óaÿ¨¼ăÅ‚rvjĐŸ2‹c˜€ đ£éÍCŒêÂÊùJ̉»4]¯ÛÊ&.°YµAœ₫L/nfûN€­öóƒ Ăa É´¿Rày˜Ö¢;Å̉}dL€'‡9̀sL¢ °Ê”¼>Æ%˜À|»ătÏđ‚‡;•tr3ĐP_1Ù³ºÖfLë׆˜ˆ¯[æYs|–Ç-̃ˆIĂRáa™ÙêO"oLµbç¨%ëÖ» Ô–Ùc©m|“€‡S‚çY ¸ØµÀ¾v™&ŒZ2i€oûĂ`6vsæÈ/Êc—‡áTø‰/„Å*wÚöåjơ„b_=qr9í"̃‘›f‘»R ¦xÈg.Ü f¾̀1-̣(à́BÇj©¹‚këÏQAÈ’FxK°ÓH®zkPÏiĂe¨¾˜ó†3ÑÛÔêƠ'V1ñø®ÍB‚æ,¶Tz'5PÉ.ƒ/­j¼F*¶Đ‹ö@… @ endstream endobj 1049 0 obj << /Length1 1904 /Length2 14217 /Length3 0 /Length 15384 /Filter /FlateDecode >> stream xÚúeP\ÛÖ€ \ƒ{ „àîîw'8 4.kp‚wwwîîîîÁ —-ḉ}̃﫺·º^Ï>çóÇ¢ÉI”鄌m â6Ö`:&zFn€ˆ¬² #€‘‘…‘‘‘œ\¶₫g‘\ hï²±æ₫—†ˆ=Đü¶&j~S”µ±H9Z˜XĹÜLÜŒŒfFF®ÿ(ÚØsD œ@ÆYz€”5Đ‘\ÄÆÖƠdj~‹óŸG¥€‰‹‹ƒöOs€Đdd` 5›­̃"X”mŒ@@°ëÿ¸ ä5ƒm¹œé ¬èḿMù©hÎ °@ è´w₫( g`ü»4zDr€Èá/² ØÙÀx[°­̃L­ö€·èeI€¼-Đú/e™¿ho€‰é¿î₫¶₫ĂÈúOc##+[kWµ)Àd È‹ËĐƒ]À´kă? ,l̃́ œ @–†o ¦nR¼Uøw}Fö [°½Ẹ̀₫pó¶ÍbÖÆ"6VV@k°âù‰‚́FoûîÊđ÷áZXÛ8[»ÿ‡L@ÖÆ&”áhË j ²sJ₫­ó¶„øÏ) `cddäàâí@#3†?¨¸Úÿ2ư±üVƒ§»­-Àä­  'Èøö…èî`à€íîÿü/!21ŒAF`€!Đdø÷·e É_üv₫ö €6ă[û1ÿøü÷Iç­ĂŒm¬-]ÿQÿóˆTeEäƠh₫.ù¿Baa€;;3€™ÀÄÄ̀àx{đü_?  ¿óø—­¤µ‰ €ë¯tßöé?);ưƯ”à}ÉÙ¼u.@ùO£edc4zûĂôÿ¹Ưÿ4ùÿ×åxùmôÿ›‘¸£¥åŸrÊ¿₫äV K׿5̃:×ü6²6o³`ưUƠ®,Đähơ¥’`ƒ·i²6}ëh:.zVö¿–Aâ  ±ldöWÓüµ®úǸY‚¬ 6 ?.#ăÿ‘½Í˜‘ÅÛ%âđÖ™€o#ô¿aŬlŒÿ˜5f6v€½½+âÛQ¿Àém(.ö2€̃Úüfx+Ñ`bcøÇ¹²³„₫Xú‹8 "ÿ'€Aô¿ÄÁ`ÿ‡˜ _₫!vƒ̀?ôf'÷_âd0(ÿCoñTÿ¡7;µÿ×[tƒèÍ‹á?Ä`0ú/ư±S Æÿ·l€ÿBfƒÉ?ø̉ÄẠ̈₫C úß̣û·”ñMÿ…¬³ᛳÙ2¾¥lñ/|Ëùß®̃’¶úßf“Áú_ø–´Í¿đ--Ûá[\ûá[\‡áÛÆÿ…oi8₫ ß̉pú¾¥áü¯̣ß̉pù¾¥áú/|KĂíOüŸ>3r´·»sÿ¼̃đ?üçºçlŒxüÍ«ư[î+…évǘYQú®¾ßÀ«ïˆá;í+úđ>\³ä„.ù́…>l`3¾6Xhà0Zè®{$…ră,Ö¶À˜nÓzL`đ=;È82ïI··ké³X›âœ7* 8ßNSá̉Ú]îΦ~áưÜX~WfvGQB 9 ‡ÇÉÉ‚ éß*”ÚZ.\%4=Ó&ùÉáJṕ4†Hüđ!©w˜™m«o©˜öh3‰đèÅVú&ơˆ?ñ ‹@Z0M¾Ó%†÷Ié{Óâÿ̉ĐaDY€Œ'MrgâJâê,M£íụGĐƒ -R-…®ơÜO yi¬–Ù̃(Y‹Đó;́~ Ö&+%ưYhxù[UÍæ0ÁUnóĂàk°N”Ë ̉ys®–ª_…ºoưÔr©ÂØÔ˜lY!(á;ĂJ@ÓBª&oÙ`Ñ×ă&ë~›Ẹ̀[W@kƠ'Î "=¢×NËytxoP=A.JR\}\ : ä'£0ñ¾*‰’Îa{mà́|¿k}N;2Ưz†)p̣kQm31,i° FOŸ×O_½†Iû¹XG;K†>¡Pµaeó»́es¥×.Ô£Âí> :ÍWîZgMG¯®[|¥S—Çû³ªá‚íákµÓS P–É®ªpWj–ü]q§́¾ Ç÷d%¼oÍ–,Ç¡%†̃¬‚SͶ(lß8lóŒ¿q³*[XÖ9L¥{zsó¾Ø MPI’ ßÿ(†,³¨NNFóĆÏ̃„^ $iHo}æ‡\ùEûøÅ8 ×^̀ä‹§Ê/₫Ư¸–àÙ¡•å5ä}©+&°S{Ù~/5ܵQ8÷´ÛêiÙëÇă÷ ×^œiñ°ç¯ö)©¿€~z‹.×Q¨›¼£ZØÚ«T]´ä)?R¦"^”̀öÛäZ”!†.g±ÎaA‘g'•"†úƯEï,ấ#lÖF0Ă\¼®̣7¯r=ư(t¦¤É)†‚#E-¡_[0`¥Úv¾¥ï*½Zy᥹‰c9# Öơ¿ê.&ëÅ-íµI„Éá Ñm†đ1?³êâµjº²¦ËIơ "ª벿(grf~ Çù¡Z2Àï`† ^Ls<Éyî‡vî€óưv^ 7¬GL燳܋yŸCƒ¶Hốk̉âNu”ˆq´‹IMù ´‰h~~<å´ ùĐĂùPp gHzÀÀªV̉4"ˆ&É~V%mÁx6®?I<íL*÷8¸P|ù̀º>OG4z&¼Ó@Qâ°ekyí7¥éQpqWCûöL˜_1kpÉ??Hs‘̀¦S2è,$y/ )3§̣c»<ë¾@̉ơÔ|÷ø± =·ú†¯tJÛĂïa£¤ó"¤âÉƠKü¦vư­™©-ơ«E¿“{LËZOÔÖ­WĂ0 9Í;l p̉sĂễ)ósÛ9?„‹ü ń͵9>Ù–¤|ÿ»Ÿg÷P;¥E–´ëbÚsƯ)yÓ5rŒ•AˆßtPéơÚ‡q‘‚́r­º5ăñM#âæâ¶V~#°‘xG¨'O@vlÅxaç¯].¥(¾¬¿ÏưnSû£”ß@ ‚ôœæ`æĐ!³-ïËè'æßHßÜÔZĐÏÚ¤›…Yà:°^)~#Q\Ưưø´®|ÁdơËñ8˜ĆT¡7 ûˆQ”Ñ !Ć3ˆÍ ₫ÓœLÜ·4*øú쉫5¨ơ¸h‰ –¼µ"SjÆîhú6Næè‹‰}@ëMÔ1QÎÏÓ5˜—Få˜Ï¥?Jv?_¥àBMâ³hfŸ– ‘L HAñ©¿;́Û Øăw][¦lÑ%}0Ă忨û|¥uº*4©¯4Å·{Æê¼˜jvYN§Ÿ:O7yæ¦~ªW®­ƒ¥`1<ñ±a…÷Ê« ²$œØ J$Ö|,/üÛwçRRÁf:›s¦÷K¥†UFw±ógÎ".‘·´Ó—½î¼°óÅ“S&@QâÛ©íÈ Ă¾¥49JEè%ÇrP±üPÔÑ̃P…Bû›a¡¿2Ÿßé‚„¨g…ƽp~奂 Å[[7÷äéVH÷M¥ĂÑZKù„yøáÉÊ%Ö¨ñíx€¹röxKοư1iƯé"¶?b7¢ èP°›PÍ…µđ¤µ´¤ë~YÚ}†L|‡E¸ÀÛ,_k;©2›b¸]đpè0Oơ{9% ÇQ̣ÂR¥Ÿ₫½h¤UW ÂѨ{¯h ₫Wđ`;ÅÔܾ‹°KøŸ»T‰dX!mĐ]Œ.ÇÄ #H6«åÔ£M딽ø@Œ°jé ™jÎTééùÆ´]êêF…®ÜÅÙüM'¼]†+$ÁŸ‚*Â] Ñ¶$¾mÍÅÛî Yßî»(,\́8„H;×½”c>‹¸7[”a‡6̃ûQưª b…Éus‘'àÓ ®^ â>o„V=^éÆçàÔ<ØÇ©çZ… Ôl,Frtơë}¹ÊÙ5àê‘ûê¯ma…€/! ·j0+yhÔ…c¢è5•|¤¤{”s¨£Œ¬ß¯âLγ́ÿ™ QóQ$ÜĐu'-ư©q¥œ‘¹¼Ô16w™lÔP̃¥X¿Ó ‹e œHD›oRK9|à¥löôàÍ™\O &_C´ï@Jj´Éâ}µîç2Ă*ßÅojAĐ́¡Ö?YooLøt?0Á…\±h6=ÛD̃ồ©ª£Oçôä6ưD̃ŸÆ¼¥zd^´hè%~ô₫̉«ZhróC„fŸ÷®ŒBÀr$ŸøsUKKú•ZaÇÊÅÀt2s톇B·ơu |¯?V{%ơ;³í) +sÖoÛcÖ€1 HÍV÷&Ö·c]³Ä¸.cNve·,¨Ä‡+a€í2îó˜®IÁ¼wÅÔiEÀar‡Ưºáѳ?~}Á?.3aN»k±̃a`€Ús¢÷Óuî†'~ ~;g·°+bCÏùú0ºdØå»bË~ ¸P$Ưe'ˆÅ1ºx}Ÿíª†5H¯à6ơä̉ ˆø¸­$‰WèeXÜ»ˆ; ư¾z‰£é!åˆ,…lçºăè̃¢ wb¸‚¨w—é'¸ ²0u0=¬BLC9%'2}b₫}œM~y-ÆEËA+#A³k©)·øá 6[kW8Ú%4l^çk̃v朽ïƯí3€€LïGf>i¬1tbÎ%¿=¢]}pWǪB£ñD1£aÇ5Ö”_kw*mV†ÅÎgA™u¿‹¡jN.yG—¼œ@sú}Ïërw‹¥ôÍë§₫K§N48^ü¤kß2ÜÈ—”¡TpmóÁT¾Oå¼muÎØh̃Äí•„ÛíÎ:&‰æ5y‹¶ƒü¢/Y$ܧ1 7Jîm —”·÷ ¸ÅÛ^u ÈÖ̀“Á™Ưêå?̣˜VÛ[OB˜0;Ï#6ëưŸ#ư³‘£¿¿\øÇâóđyëLv¯X Jj>¦2)ezt¦“×A6 ùû§Éœ½Đ¥>ê\ÍAçÈP×FnŸJ’áẬMƯ„­đ]…W,J>+ iÁĂÉS‹,YçGWpsÍ_¹u#¼ÚÏ3M %°z8`_FƠIÂm'¤Y‚a¼‡‰h´&y²a-éBlö<ă­^nbY|mªr¼á́K°Ù-Ö\ü_+–[7\Ư e/æ]±·‘LJ»So¬Ù̃§Iê¾ ~AóWK(ÄqÁúW!´D5emFmJ»lƠ1d‹Eœ†½¥CẳùIû@Kº›W¯ĂŸñѪÅ.¨œ9 ÙK’¤|‘Ρ« c¬j/¹k¤e?fV:Â#O‡IZ¶ÓÀŒ:—fÚ“Ưư¼„"8gôûÖä\¡ÿëÔĂqtùµ°‡ .cîŒ̉I{ÔVÁÁ« DL°“Ơ•¬XÇ!"—ÈÔ<$ßnYÓ~ª[r ¨ñ§dƠYôÜMqêµä6qn”̉ÿmTôƠ’×I*Ç]ÆMîÜB9»ÛQËå¡ÀH )âö#~çÊÁÅæQÿNCivº.ăl±=˜®g£ï^($4̉i”ÁÍ™_•Æ­^ú4à#°%íNÏ.\Ó:Ÿ ":ÿé˜?_`pjpTjCc5í®̣ ¾c‰zxT+Î2 ‡Wó`ĈÀµc`¯7•÷̉p/>@"¬4ü5:Å«CâÓç7uoz÷[6&³Ö+Æ'û‘ûe,ê‡I»Hù€l\_ëÓ’c΢=ùІÊåËïăÔBV &Ñ8­éKD[ UñD•Où…„†üÂE«‹u½́‘¿úê»Å媦!¥W\qØ—¹Ø¯*ñ; R‡ôU)ÜÉïî²à„&¼t‡‰(I₫®¾†¤f^pṼhCMÉ2W¶yu¬$Çø= ú®û‚3O›¬æÈk÷.mù–lIûĐĐ’ÉÆiùƠK—₫&G^doM‹*QÏkâE J¥X}’m‡+̣k2Ó„>+9{•Ù‚¿: ‰mï‘wúVZUôhôù!–Ô2µ₫Ú$îR<†üä®jƠ‚ÛnKÔüµUR™>–Û5w;ʵfàw"ÓLƯk%Áæ₫£»®$èèÑÙó&–×₫Dùé0hö²”¨¥Om8?Æ8Î6¶ü'9B5Đ>ê_+àî7vø vá æXRÄưrv¢'L¬Ó™é—‘JFÇ“ô½CÉl—lqr̀¬–âàÖ< ZŒÍđ˜Ù'MgÈúÏ1{,~m÷WoUê%ja%¨éqT|t½|j¿`WmF©‰D§0炇dBh‚€1ß*wŒ?‡"Uù¾ç$Ï»œ¸íÆÓí†O7±¡{„‹y‚Ÿû1½U¤sWK5”“ྔœ̃€"ˆo4imÑÔRŒ= « 74â{¿|:̣µ̃‚̣`–‚ñĂÙ0%Ω¤X đJfXù̀$ÉÅiçå狱K̃Ô &Œ ^üÏƯúµéè!đ™3ƯNº•k£0nŸ¸ƒ_>ïS²´wÓ)`"jL,á4Ûạ/đĂ®µĐà"œ‘높(NÛĐçD:ƠÿŒÄœố‹:])"À¬”~r} ›̃»F2åúxă7ÊkåPó 3Ü]€öZÈøº[Đ2éQÜ«.¤.î=ou͈®ö)çưj³ơf¤iÁ7[¬!¨ọ̈ô´×!1}¥Uà½äËJ₫:m'Æ.¬ăàIƒ#9ưÚ˜Yÿ ÇR^B2÷X U>yy¬‰Ú¬»ôSMR̃uÛ¢„^àùăé‘IÙ^† ]‹5+1*†¹ rÜĐOب2]9Éb´²-”µ¼A·LߨÉ_£XU‚·w|6<‘k ŸO£³Ya§\£ân{Óv—Êcâe3¦ŸZ¿^*»¢îơ"¬¨l#H¿ë¨₫Ô”/ËsîGNYăü„ÖÊf~ÄçÛ|@·Å¶:‘̀GZ蜓…°ÓăÉ;¼ HhÖ’æiµîr{O„*¹ XSƒdïâ66µ× tJ°Ï†Àëp­a…ăê0ë¾»‰r‡íÊŸ‡©ơ€=`@ס$=Y~¥“Ô-€ÍjĂuáS@q¶¼][ó@x-ÍÖÁ;ÇÈ<!‹²Øö àÄă!‘؃âRy=ÜTT¿¯J\s¢›h«_đm;ʃ¦păt ÓaŒ÷¸Zjåf̣óŒ(Á…KO~gL,¼/Ëíô;u-̣¾–œŸ{‚;pä*E$¿~Âi¬gûŒ8)<£Ụ̀ M÷ăùD­Ư7®Íİ'È|hX•8 7)ÿ\6Ü)#»]:¢c}¦6שzäáAV‰̉Ä£jYªtky÷—<¤Ù₫¹F[…Jªø¥̀Ưâ=Øîîw9&m~Åtơ«€Ü÷uB'üKc·Vă×>V£„r ›œ¡D–ܶۖu÷JQñi<#­öÎÏüHæÀ¢©æ+O₫uˆ)lY ÁG~ ÿo¯³baDkóĐ&%Lî,¯fU=Ợä§U,±x'~qÚgÆbH7AÍéJC¼ø*R‰ăôP&9fh€|\74—£'0”–åWB{s“g©[·•FnƠ|ó"C¸‚¶©{’·D ø…?=``"¥’[ÂFR½P¸dGnèuêÜοc‹ËlåST®¶ÎŒ¼ư[À]7iVœăI¸B/™ŒC@µÙƠ™ér¡“,„e•üƠhØz¹›¾T /PÅ9YÑ ¯C›²Ë”¯%èH"¸P±Å”ûz°ÎΗܙ‡Ǿ“ư₫&Y·˜µ³v¨¾=DÓ⨠KM ¾‡—aJœ7Ư‚i¿LçÀÏS3,À\ ï N]O¯Ơàɵ“¨†pÓèk¦Ñ́—Ñ]E™üĐzw+”wÔbEÆÔ¿ÁBs„½ưóô‹¬Ø(â •-÷»®ăºÏǧŸ°åê_Œ¼$>»,ØÖï—:ØPÊ­Yø« È`Gâ’‰Îî×’55;%gWÙé1ucZ²oÂÊàH¯¾v£œvi‡‘Zä½Ê‰S>³Ú|¸ÁÅ,%åÚ \ỏÛºạ̈OT6QđĐ\¿­ë°+̉Û KzWr9ט¦¬‡ ÛŸÊ2 wØ{h,t å ~?|LϤŸ6Ü$“å(“ÓèÇ×mꔢÖZ”ÙH8AË0l3ÈË­ Ó°TªlÉ[›+5±b¦û6ó™³Âz‘ÑŒpÓ[Â]xQá1‘c’ieĐiâ#‰i>nâï½̉ெ7%u¡p^Ÿ7Ä̉âhJÑæî~ˆîQîL´`ôøB¢Q¾ádV,RYºrđ́®ƯdµóÀf²•̀ơ.u ¨ÎœÀÜQ'CåÅ3ª?¦e;H‚úlêĂá¶M* ÓˆÚ0)]ß.û•›§u”É4Sđ…íLåoå”,½×צt­öæ»ÁÍËúˆÓöm>5•g\hø†ÖƯḳẴÂfñ–§Dó8ÄÚƒÎ/đ5̀*¯ÿo™°~íCø“Ø.“‚'Ê&²»ƒŒơñcÁw”¼ŒÓæj6@ƒ ÑqÉe¡5°]Ü¡‹f† ¡ô{JÀ]>§(éôgÁ́§3í¯d͸UjƒÊ¬Ư‚z„`®Â—ö¿ÂP’'̃}=sÊâ~æo÷W¾–Ă2mđ¨"ó/Đƒ»Ôư%ë1̀ávÚ°ØmrÖ̉Œ+u sa0|¬+˜‘Î.rO’¢T8bmi$ ¨Áê°¿úßÊ#×ư£Rm0úÛG¡~‹lSúªonÏ̀µl¡1%r$,Wh±xJC¦¨Å²-{’J•.oµøûđNĂ; Xm°™©+u#̀¿RwWSúưe˜•d…Bléô!K¶aˆç÷Œ§YÿÂ5ÁºÇ!دaå Ö÷Î qX/–á‘ Ùéü‚”¯©4ÿéyN ’́ªYïù·C}3q1#ªpà"&suüZ ·Óä„âE¾Ø`k¡¥À\́©½NTÅú™„åïŒ|¨Ä]Ç `ñ9¿ˆ6O®dS¾ û×…!êe‡&ƒC“ÇÉB©t*‡úyrơ K™¦ÖyÅ₫©ÎYcm÷LêÇŒ6á|Ír¢¸éŒ̉ùqÊB-WÏr09X³}À‹J*uÍ“’sáL]ËŨ€Ö .ªUŒ#{®Ÿ·8k‹‰Đyđ”dÓ|w´rO»½)ÑÂK@|Ơp™ Ơ3E)»°zuµP–"‰º3"}Óå$pFx[Ÿó^'·û}jY&pơù¶mÜz9‰rKº¼EÔÅœ  »h˜̉™JµU³Ö= ü)7€kÆ ¥Œ°·PµÁïy=וˆ÷y‡¼`ĐÅL¼­ƒà”S¦U°¢ ʶ.â¬ÛI ïq|ñ"”ÙÜ i^²B>”ö΅#/ƒĐÍe™Û¥à́À²ú¯ªư½{˜ñ¼²ÓиÈócø"£kæ*ƒeW3¢«\¹¿*ĂxC¯=Àt­(û¼Ô÷÷ù f]1³ø¡ ZV¼ª8Ÿ­0%ˆe¶ư8̉_b‰ºü5îüª„4û~½IÛ}FcÔÀg^.å2 …G¿ó$Ơ£Xcyé¤dcTkGä!…IT;|OѵüsctbéÑl埥8¸&î×Z‰­ûµôíV˜#ÄŸ́&HKáOÓN»@ư{Äá6j~Á±n™ ûf9Üc“½)B×Å(¡‹ÛÁ3äÔ2Ăß÷Ó±7U|“B˜ÿ¦&7Ñ–ự~¦á AKŸG¤®^Ỵ̈ùS_êăÙ¦ÛƒÎâúfW#³°ôK\”A¤ô€Í̀q">Ö×k¡ä¦”̀ dO'qAùz£ëÂpóÓ2RºoÜüÍ-ưDE¨ÏöZU2ĺh“%'' :j¥\\mÔW®á]ÈĂbÆ—wÔ;:¼¢°q¾¢×Ôê¹NrȱƯ©_ă„ă{4gBÁ"á=º9ÔJ9*Zjó;pylÏcÆ®?Î̃¯Fù*FEƯlƯóÓƯÀ‡[oX—¿GXEĐÀ¹÷S̀|Ư†XHŸ® ªwFXä'¹–d³NkY‘aÚÍ›R{VWèđÓM'a ˆ|Ñ Ad,;wÏIåzY±ªf¾ÚNA\æaGßWÇkŸ•ˆºê “₫´¹â.{ç1¦EÁjĐ›¥ûvVÿĐ ä¹q¡̀O¸ Yk♿å¬}}nÈ5¢íJj1äMHU £è¾!ùÈv&T>ÜPÿ]ßÍ\ØœsđT°ûË0ºÂí¥ÈŒ9"6Fœ› \fj;“C°ËưiaO1ÍÁ8²6±HË£sÎ1“¤~íÜj•èȽ¥å=q«Ïçûéƒ^(@J„©ơÙªéH&Ú_ï Ȫ́D—gzö½k1«Ưæ;²Œf,LŸRÊÑ£ưwÂEØT~ü§ ư.•cê¼ôͰäl„-Üb®äÖ́L₫I°₫îX\cÈú«táÎâq£Z†H0±WrÜ D%Bx|×ç̣å „‚KZ¾6 ¢D_‰pJÀÙ+"÷ơY4/rC’0è9|í¨qñ,OÓiO@è}¬÷Vß(Óë7l‰3:oc¤:t9$ÍE]#–W¾‡?+æ̃*À¡Ư•—·ổÀ·JFÓ%e·7·đÚ|W%%x²Á̀Ä5ĂI»ÉƠ/1¼%ÏṿüT ÿ‚Iü[́lĂ!ßa¢é¾i›Ăᵉ߷Ưf=² s›iÑEówºD•r£Zr0÷—ÀÖ®́™³>é”6ßC CàWùí¨tæ'oïM`>@‡ö UFỊ̈pÂÛ6¥}OiGæ•"ıCĂÖ+{z6Å­ !è5=¸ÇSôQ0H̃û™Nj ROg„ÓÑj¿!¨üqEʉæ¶KlèHœéajïk |€èÖüQùˆ€¦t¦mÖUÓ‹¿¨†)•J9`́}h™ ·4ÁÎ +®qéÓäÔoS×´uÏ*ùjWÂeÇ¢́…‰›a“º@V‡u ø²Û=øÛ(nR„F ¥ë·4龌qăæÀ׬R¨à&N¯.amnAû#Õ+ø+;Ûi®–åÁa®TßB«Öî5NÓ ̣E2ÓơG n5dqäqú6ïËơ¯i)»Ös‚ê›̃{³ÛDè±N-?1~DYÈåu  üœÿ*Đ䱦ôW„ăáO«W¿́Ë6¿ÿ°qi.¶:µ·€üÙçw#Á÷×ñ‹ÙH¤x;”„~Ặo>èGú£Td°ø+ú°/zF)Qj|X ^3).¤Q †ûŸÔ’u'3^K˜Ơư¬qŸ‘G&́lzƯ(ŒÏêrMùFËiloöß8|19€Ú†Ê*µqΉOÜ6—ćwùhUD‘Aä^öÑ‘–C0c¸2wwäGgôï"D,¿́Yt¶Ê&„ŒÍ¥ÑoÔñRߺ»Ph—w"ÀA}É&#¿ =ă¦\̉9.ÜX?· ›))Ó±]£&Û‚À$ú¶vé«êx,¨vƒ^¼ŸoÜEE»*5~Ư>CÂuÊ™êwp¾́d”MäÅ₫e_¿ÑlÔƒ.™ưN.pæûṼ²X"ÙEÛ`CÔÈ¤Ö [HCÜpơ ù 1ä %*YKÖ]È í#µ,¥PV~µ£˜µ0I½́‡êK˜nÄ̃4'₫à‘XÈ׬Rèƒwmyù=Ï2¹CYĂháÍÚÓtă‚I™r5d£qúeîA²‹“bKP~‰]È­í¾pÇ>'R F¸ÉyËjÏ‘?́*WSK±¬믵qđt)¨5‹ BíkéÅ‘ÓKÁÑ ïß~ñ(ó‘nú·~¬ßÆ€ èkåALècwiC•.3O9¸‚`7Ù¡ØFßúW’sØ{ßïb§̉)ưÂïù­ ñu"Í`é̃Ù”ñ>œúätAu«̉(H³ÇˆKÇj¬Í¹ K. j‹vÄLÊnGŒGrn¶ö,Θ¢vW Â]ûïô ~;TæŸ"Ÿ4ÎÔ‹“́ ^̀Ơƒ(yŸÎQ:gç¢Af«àÔ¶[qÁ2ø,7˜LBp{øx¶´÷eP ŒÀ4E/ ®Êï>½̉)<²êè^›ÙëjÇmJ†«Î˜HßCåq¯|7ûªÅçÑ›]Ïú|fLÑë _Üù\v“Áœ+—øeƠé/OV:³£ô¦ôËÎÛùl ¤¦µa›ú¾́¯„S9ö$R{¯–p1´…¯}?øf²P¤°¡kÜ}x 9‹Ầ!)Z:¾¥ßc,‰/ùÁÛ“÷Pe7B =ëÂnKܬ íà\™ÙÆdæ`ze.Ûˆ*í“65™ÔtñzY¦!QU!MLjÎñŸ;vđ!áWB)ñÿ2LëißÑ·üʈª¾ §ªRNé*ê©MD‡âË\ïÑûóö æ̃Å({×é6Kb¼RĂ6ŸKvE¡Ào¾`€˜¬-”ŒÊé&ü¥÷@p(ăkä9ôëBy7¿ ¥Ă¬f#°!ˉH98éUœÇ¼1³(‹K ${³{hR¡T眃Ġh±ư¦°7¶ù¶÷sP}›ĐI¨NÙ} øÅ¼zqÄ}&ơK`ƠưĂ¡‰€·h¬Ó´u|†'à#ˆMgÓ3’ợóWV”S™œb´â1’œƯ₫¨hôü]ñßd9_¦>² Ôă^5¹e³¬‡19Woô”¬EC§‚‰ (9͵=Ö~ô­8­¢Ê-æ-€v.1¢(–D1Ơ‘ó­"‰ï„ĐŒ¯^ß™LË2ä…|¸Ơ#¼i?a“¢øÈ:ºÑ(_éơÎ4+ûHº2K®Sô}Ÿ3·̃>¹ªomMàÜOWÑÂÀùN¥áöuëíOˉÜ8nfˆ̉kö˜7 –‡Ü}vTÑíV2[Đw‡«œª0—y!V§ ùj!%µ( cU””¶v]wǺờ± `<;bưayD¨ÓØ₫¡b.ïâœ̉U[3ÔK;逽3¿DkLĐn·ó{ö‘P«í­ ô†-‘¼4‚ŸËÚTrơ˜³G„¬m¡|Đ…l.Y/¦†åKà8øJ¬öaÜ-æËÛ`q¡½e¨é©m·f¢n Đ̃´{Ă€{‹FŸYº!'Ø8 KÖŒYœ/cl×Ûs‹w,]Fơñ–‰h±é\˯‘BB̉ñ69‰đÄ, êü¸iBPgÚ—©Q!>¼®Tû¡Â¯bXtßpxaÎP'àF+R<4Ó‰ˆW &qOÖ._­›²>8äIÈѤtײr×,í÷j±¯-ĂĂöqÉyL!x \ïb_ºù66ö«ǺûÈa0>}S°TöFú¤Ï´Ùœ«¡Ë7(N4¶{¨6¹Û-DyY®–p1́—ñ£ƒ»|{ÑŒ”Nê%om<Ëü̃ư”íîÛÆ†ŸAíL¸M=¤ûH1.t₫…H1̣8X¯“ờtr@¥U“y¦¯0>v°µñ/ûغUƯ₫!F4Ÿ)é^:B…ăơr›u×EIÛ d³̀yŒ±±Fuî`k† ‹†¿‚#{öÚ¿‘ä:ăÊSfß"s´ÔlA8Ơ3kU:/*F#Kï£ ZÖÅGoY½`K Új`Zq¢´¡&çëLœdT“PUY.¯xĂèÀ>˜mëœY¤Ơ5}¾åáá`á€4êÇ¡¾gƠ{ͺÎ[¾ ÓôR¾q‰É?ÿ`\êdmƯ5e_1ù©”đÂk·¼“˜$bX̣.8­ùël‹= ñÄVë‰À¥É}W˜\ƯHK4çi£Ïí+’•5£+SJVÆiØé”!a ,IaK_̃èƒf îÔ5ܪ‹ăïϳƯw°|¿ƒÿqo¬{ê¥Àj"Ø|å‘’rƒ&81đÓ= B“Od€U–I6ơçeúÆgÈŒRaàyyé!q*–^̃É0 ¿AÎH9—|üœuäêØ¼Ó¨ÊÙBíVzƯ+Öhf¶ªAE.ø[f6§ÓÉ• #^Q(2ë¤:cnæÈ•²p¡ơ¦(åÀ;U¢üë¯oS€ä­Éu †̣̃F–mΓ/"ÚY™îµ2Ççʱ‰úN9¦FjOá˜y”tVY±ø½¥Åi=ùRÓOáW{ÂÁ[̃\ :O¬¤t)?œ¿ªPG—à ØÑÆ+j!è]œÔzDÊ·»dÅ­{Ä>潄T]èæP-bz¸.̀ÏÎtU¦…“ା —xEÓƒ æK¤Ố[Í:í~à£:HûáAĂÿđ‰8¦ûy$q‚•wpC!PêÜ oó^Vu‰îû]A=*Ê ª4ára[6́åHĐ·‰QÇ3¢̉èn0¿êDzÛçô.äûÓZŒ0ĂäAá7|5ÿPñÖ»ÄN¾|Ơ”î ¤sÄ+Ñvñ`)>*8«z7ƒ²Áí¸ŒDQgƒå(à¡°|4k›å!ÏƠMÁ¤+óéX&vtÄÏY Ûuáʈ<£@±é…gỊ̂5/D„́jŒg±@·¯Â@ưƠœ8+Vé78̉^˜đ6ª?@đÔĐrØà)i£¿ Ø‘?Ù䢪q;ׯß\eøJÓ^ấƠOlºƠ•Ÿƒ²–H<‹Öz½ÓÁI¤8BcâÖÁjÙ¢Ö!n/Ị́C„®™£ª.8U‹¸æ3Ư}]@ç>¾9ÿ‘K4™bĂ#²¿₫ïµ¾H€j©ç¯\)´ ª;p¨«´ÄkmăÔf”64ú¦TßÁfÑ‚»ó®u]bHµ7ÁJ €7§f)ûP­Y½đ6RïR<»%…À–K EoÂ₫……zE—Ê „÷®Onâ‹/é|'2wS°]Úù~!’aö“!Í’àD:Ç™­àøVṬ¢)ÊCçĂ:°n¼¤™9̃à1Zÿó}gíðq"Ç®’Êa©”qƯ›“_±̀¯G‹ü̉¨Ÿ" 3¿½çö‚«Ỡ•é†äsßHƒwhg(G æjSÔ²u¶>3Óhth‰V¡hærA*¸;ë–×ôjhá±kn7„R8Ø¢_a–@ו±*đs`~«Ö^Àà«eA-aư6ç!Ez@Ăf:Á™OfQó̃“Ïg^j›‰c:›ˆ-r-.•°8À²Ñ̀ú°-Îå3zÄwn;Ö%wJ¨—ï©₫øàº±_ÎC!1•Ă>Óiø\Ơ³3ÊBBóUÜ]øăB‹t×qgQ‹r₫B–øY†Ư¶îØCö BS¼‰½Ó–æ¦Â³É( ¿$>©ägfä̀먱÷pQíº÷e&e5b+©Ñ¦í¾ÓÈkÈÚ©$Œe×ö̉%(Ö̃É`¤ŒxP#ưÙ ¼D˲ù†¦\x¢v1=J°Éè¥="œ¿¼zđ.O”AwïHÏ"¨₫"i˜¿’œÆª«êưÔn’§<­ăa’E=Ñ1"~ n Wơ¯ÇÓƯ³eÏX·®hiG?‹9!Rê}q{Ân&gû†‰F½†́óƒí]«o9!ơÈ“b‰Á¦â>Tă5Ú3Û<§_ªÙóÓ{3̣ă´–;¾0égZ,~ÍnăSWt¯0ø4˜«_b¤?ä%·˜‘̣æƯ[»yă³ºíơáX¿Ñ*×¥]0~Ɖwm†̣(U_mî ¿ù^έpdñÔX²Û#2‹£"X ¤Íao [!!ê %`Fpû́c1-úưđ©úª@ºLÀc¼¿@0¨œR€ăDß¼\Àbe­ưËWØK!¬áØvWÊcÉn/PĐöØƯ•|m) ¼‘‰5 /C;¥Ưz{Ư}w¤Q`%Q Ÿ¸U¶yởb|®„Ÿ%Yí̉|`¨NeOú*Ù3éz³7£ÁKCÁÉÓ¼©¡äím*8Î FNói’WđŸ$}g_ÿm'¹N;·Ú#B¤i­Éó„¸Lgg1ê nx)× ó€ËM¯9Î’›Iû³¢¿Å/¾à#¤\ZEåŸ÷ư^«¿Tœ\i‡Ë…Î̉cEqÙêpµ̉t.^W9Ôzz¶ưMº^GrƯ£i—åapqè;ÖûlSè³ù;h`Îđ9B…ÂlHŒsÜÿú(­)ăó⬽Z^4äùúz¨µQneêø»£*fg«Øƒ#ËugănJđ×…"ÉCÈĐ}M¶×9g…¾gÓ‹‡Jl\h㙇džđf¿ˆóƒÊƯƯŒ˜NFçÔĐf/uvϾ̉MY,ŒTôÎö̉ñĂ—4Cá€|!x1£,ÜÑÍ]‹í†ÍPOÔ m}…¼£/|^QüÍÇáº×°èÖ–,Pí9möTûV.j^¹gg«ƒAÎNP̃OzWH§ô Ơ9Ÿëa« ±Ñ$! ûÑ÷s«¶ơX„»²§À¶[x¸e$g£ —-{tç₫½WÉ@|ÖMßçªt¸wr[y™8}ºơr™ ÿ6Ñ;›0ŸpIÙO6Q ©w–aBø\™À̀Üׇ…ù>»ƠU胟…/8S̉Ă•tp0ÉTî₫@Me"å#· ¦µ:QиXX“ă³É׳{Ù$™Ÿº–…y²½yé…]11Ë® v$U“OjZ¯póŸÍo8Ḥw1Dzéq¬…¦= 9n¸öôv1«Zơ% øirSd7óɖʯ÷iS:̣öe'•–[ÊF­ Đ;^¦Èàÿ:;{lF†nzåÆ ß®,̃vƠ.RkÔÆ›Q¸EÇuGÛëî±MRB̉₫=Ơ‰îAj_qüë ޹¥wPÀ£Í£€€>ÖúN1ÿ]Zñ‡ị̈đ·-> [˜’KFmơÄæ´¡GÜOó¯pq{øª£̀¨¿“»û¼T¢} y!nÜ‹èP̃«q““R³÷̀×@>ù|‚â==k­ƯIw§«QÉ0Qˆ[»́P.³Ë°­²œ4ö%8*~»º„›3ß¼u6ÄÂ#è Ñ€ ÷E_¥éHzÆÁIXŒ́{̉yÔ˜Çûë~–U¨¸́‚đÿî¡$ endstream endobj 1051 0 obj << /Length1 1812 /Length2 10289 /Length3 0 /Length 11420 /Filter /FlateDecode >> stream xÚweTœK-îîNÁƯƯƯƯ!h¤‘ÆƯ-¸»»K ‚»»»HGî™›™÷~¼ƠkuûXíSµO­¯i©4´Y%­Á–@9°„•“C ­ª­¢£ĂÉàààfăààB¡¥ƠA€ÿxPhơ€®n °“Đ1̉®@ È‹MÆ̣ª v(¹;8¹œ|BœüB.Á‚]…2 k€*@ ́tC¡•;{»‚lí /+ưûÀ`Åàägù+ étYY8T- v@Ç—­,Ú`+âư_%D́ g!vvOOO6 G76°«­# À±hƯ€®@kÀï¶jÀÿ4džB б¹ưí̉Û@<-\€ƒÈ èäö’äîd t¼¬ĐVT¨;₫Vù;€đ¯íp²q₫§Ü¿²9ư•laevt¶p̣9Ùl@@€ºœ Ä Â°p²₫háà~É·đ°9XX¾üẼ '© °xéñ_ºY¹‚œ!nln ‡ß]²ÿ.ó²Ñ²NÖ̉`GG Ä å7?+Đêeç½ÙÿsÄöN`O'ß° ÈÉÚæw+ÖîÎ́ºN w ¢̀¿¢^L(ÿØl/‡ÀËÁ]@/+;öß‹èx;ÿrr₫6¿ôáïë vؼ´ôÙ_~P|Ư,<€ˆ«;Đß÷OÇ#NN€5È °Ú‚œP₫©₫bÚü_Tà ̣s¼ˆÀñûóŸ'ÓYƒ¼ÿ ÿë ÙƠ”µÔÔ ˜ÿÓôÜRR`/€/+€•‹›ÀÇÉàäøÿw! Đ¿ˆü‘ªèd₫Í÷e£₫ÍÙă_B`ø×œ0₫»–øEÀ@Ă?z7áàå°zùâüÿVư_)ÿ/±ÿ®̣ÿ¡÷ÿå$çîàđWĂ¿C₫¯ Gƒ÷¿b^$́yUđËP8ưo¨>đï)VZƒÜÿ׫±x I'Ûi³ ²ñđưm¹É¼€Ö ˆ•Ư_2ùÛ¬û{́@N@ °è÷U`åäàøßˬYÙ¿\'n/êüË|¥ÿ^UÖÉ lư{æ¸xù®®̃(/¢ââåør¾ §5Đë/=ØÙœÀ—ÀK‡₫°+Êï£à°kÿ6ư…ù́ÿ »å?HÀnơô›+»ơÀürØm₫€/«Ø₫ýv@^;èøBÂ₫øÂÂáøBĂñø¢xv§?à đđ…†óàˉ°;¿hüïb.î`Đ ô×¹ư“ùBÑơøBÑíøR ̣|á₫ÏF½Ä₫u©ºY]ÿ,ù̉ˆÇđ¥ÏàËœ²{ư_ñ₫¾4âóü¯Ó·rwu}¹ÿÔiüÿuư^@+”…Y°•p؛氮»FIROÖQîÏ|º?Ư)yPâ ·Ø`>©ÙW‘̣Ư¤åÉh Û‰ƠĂªÂBG$’ÊÆñ{Ú Ju³!âà†ăÀ(D“³µˆ¨ ¡#1Œ_p|&IzK”Qp í=¨pFUóĂVLzG;ŒH~g´·ï¢@JQSR‡¬¾?Ë(Hđ3äT]Á!@Saúk Ç›È T¥̃¶‰{z%#Ô¶ă[ܺnó™Ù~)t̃ÀéyHó¹%©a¿PÏH/×O»ne‰è,e1…ô{W,e_oT`“h^‰º̣k|ˆ¸J-—‘›=áz£§nế)66Í&4‹–ùÙÆ3ø῭Ná4̃'Ÿ¿êèkß”ĂYÎd/ḥ»9Í\Z¬AD‘â«Héyư˜1Û…pÉÎöcâÏI;r|I¯ÍZ‰‘ fR¿@Ö1P†‚t”ôjö°O€,¨đ®°ê2}SæÊÆ%d'~̀ă ÙĂûʳx²r:Æ]œ^©[ô %3BVư“¦Fç}µ»ỡ-cªœ̀IU>Ç­cܦ!’uÄO^‰&cIÏCïOSü¼˜RbÖơRa`áƒö£̃m~Öá<:9C˜R€öï4êƒz®–üÎàƯ'Vj•Q‹Â,¾{? g½DOg5oŒgBb½̣}€e!`>:Æa@ZµÈ1ƒư#.kÁÓe툆À>éd ºL®ö¬hŒ  ă<âî$.º÷¡Uc­—IÆ`+ew(+SƠ;z²¥(¿Ö,A¬> Œ¯B($ăưÑ#„á·|x¸×RJ̉ä(ĂVú“Ở̃INă³Ä–âêdA¼k: 8g[»EÍ‹SR₫‚±&ßP6‡cđÔ[¾´÷,Ăë]çj`Ü×+‚EÓ°¬>ễ°›NM±Ói³YO;¸}Qy•Ùӓ̓ÁñtÆOEQ3̀uSÁ³³îc‹ëÎÍ{ÖEmËCâ,œ¬›Lêú9ÈêGóUàNF=B…/,/r}ûñ»ü@‘½ÎOMSiU.ŒB_„ÜŒ28ơœ\~gPQbµÛ0Ă{ ûI FU6 Ó»¾-Ă×StoÖ¼êqnMÓM«Ißâ{lu}–4–r«è™ûÜÀ̃zíœT¼̣̀ŒÉÀÏÔ9 Jăûx¤íMđù°I†Î$)TZ7AÇEëu{4“G¥Í­Ôz5?JÊrZAwûJ₫5ŸYÄ̀ÁOrÖư'¸> @Î¥rxi©°¨É·-_zRÙ@ ¨YÚÁg»moN*ª¯Ôº;»ÈrÅÛªûx‘Ê£̃ºÑdº²A›Øt;~·‹Åp5™²^™szÀü…{ƠÜ̉ªĂ&ÈÂtNIª¤aá|$±XŒDăFkÀ‚`stôC3́rât9 ¸=¤—íbÏ~C‹$Ñ'¡+ë3àDjÄđz»9¦UM3• »ö!₫jßZ‘3~ÿ­­§¬Ù‚†¤f§)ªd–˜·M÷AVƯ—;9₫¸5 ÅWâº̉̃¢‘˜}mp—F©‚Ṿ*œú×Ô¯‹+ˆp̉`c¾R0ô8¯ö_.  >­Ư ¶ndª/Ȫđ"ÎÊ}ÅZ²ÈĂˆ4ØiƯ2OĂVoä(™Ø‡›ï—³äŒCèM‚÷]^·%2pâĐZ–?˜É¤7JS{HhâÜd{™•ÿXΤÿ¦HÅ6ÚE¼ {‡¨…­é-]«°ă™¶FÍNXT­c|`Ơ…e¤cơÖ&$>(’¢À‡­&¿XQBîơDsÙ‡JÈ;&ùn.7Ê®‡ÍP•'ìZÁ”Ă#¶“ºÓ}«RɾW‚ZI1I+²Ư}ÖHC8Á¡]%í]vS|"äß,69\F̃˜…¿»€đ#p–ä¡%1qỂŒ£ßÓçIäư aEOt U@ñ“$W%zdÿ€m©!ÀWªnÁ°â2`(œ¥÷b©Ÿ”?äËYÈ+̣ù§àú‡5éh†)Ç̉©ûïPPŸ²›8|.ƒÏJ'Óc&úŒ¥@M(:¥lÍ„đÍÊÄ÷ăÙhú-₫î;Lê(ƠrCVF±ÿ´Â™5 ‘)G$±xi[,a•₫/́kË>اqn ÔÈ*hÎE Ά¼¡V ¾«L»Ö]üëÜ-̀ÈtdưgỊ̂OXÛ2‘Đ4^{x%apă!–•HC+²Y·.@?È]œ$ñ@øÄeJqjïº#Â7ÚéO PÍ«®ôê§O”ƯäOjc¹¿ö}×§zß?f"N2’á”hZʲ(¢Á±Epû9ç²đl‰ëÔ₫Œh₫ÊsôLúơí<¬ï.ùM½«̣'€î]QZ€×cÊÈ ö™X1Ɖ·2|ª#ºVVpnÎ8­7QHˆg<ÿ;XœÎ,̉lb•÷>“­hßĐ„ IK³¬>¯nÅÔT”¡ ̣ $Tm«PÏ,8₫.÷í¦CñoáÁ…t[ËÛk…¾Ç´S̀KVç(y°ÉOrr̃¸è¤Ç¯n01¨àÜ"x)ĐH5§/ƒÜ·Ê₫;ÎM^b…”a!çè‡æ Ø„›̉³[Âá¡wBÇ&À̉ù§¾×½—)*vwíđù>¾ßÛ¿J*ê´ár¾œ¼Ơ³}¾C~߀n'j4Ø…ê…zĂ=T©Ÿ¯;sltóË Açˆ&_-€ Û߸œ¬ăÂyu¼ÿN̉Đ8ßR̀WIØû¹QÿêM´˜aGöƯØ3"(ô¯̉g{xñ˜@¾–Åùű¹₫½•`í¯¯¦̉¨iw)Ó5.RkI3G.¡Cç%|J0¬{:m†‹3.ª¸†ôº×ưOƠ½çă´…]w¬ªÖ+įđ"Yq§áH£â¡¹á½Ùʰx„3|“t²SR 2§(Ôs–›·™­OgƲ üÖ´Ạ́£Ï6‚‹[:˜{PzàcQ&₫¬?¥̃’ÂLcømÛÊ6 êˆ$„üÁơgd媽$ù®ü₫δ8¶ßĐÇϳÖ]3ĂcxÚ½“̀Í $ƒïï ¨I&[·3.ÁG₫̀Å·̉±:ª2{chuÿ–íº†Ơ„Ëzăbj³Â3s‘Á=i1”ơØXË́©ßk6ÿªyÏø}̉Ơ¯üM ç̣̀́W"Å@/á)Öä5µx6ư#³ ’®óT`á«ă§¨1+t* Éo":O…„Ó­O£̉Uû̉á9˜z4uĂ''Åzưe¢ó Ü+-ZúæNú;Ä‹î˜̉1î7PÔG[”‹ (" ëƠ²•6hsk vki†Àƒ²ø¯îë;ZñéĐÇ'`₫9Ç«®%˜¸Y70!C̣Z/lđ2OÉ)Ô.ÖV¡¯ “Á… ËU¤ó¾ç!‹ä¹Iî¼÷¾cĂ3Ó,µiÑQŸ»<3đ½)¯…“²L‹À+1$b~<¨Vb×ç––"—ơ=|ÙDxo>u<·äăơ…o¾&.çӣɮ̉¬FMùû)̀¤ª?`<”ăîů$ܳª×’k(̃Źº0¨jö@ ¶Eó…à6!“sÈ‘L¬ñj†•(ÉYöpµAæp;4+f—_>w>70‘Í̀…f²ỀO¬M©ËÍ̉¥›…‹:Á±́hIùl.1ÚÈGiï5|{@ܼûÄŸ~_ 5”ÓÎƯ}>ÁN)“ ×Bˆ£±Ư ÿ á́Æ›?NE₫bE{ÿ-làVESxLñÂñ­_£Iz‹÷l…GưÊ#¢Nä>hñˆÆ—å.R®—Jpa ¡6ï@̀ÓW¿}ø,¾rßÄeÄÚư÷4ˆ·¬d1­¶]e¦%’ë”I}C¿‹é¾9¾…Đàåä$›ª¥û­&₫8Äù­Ë$ùYé•ZEP÷5ªß#ÉÖ²óÜb+‚EuËŒă ?‰15 ÊfY—…´¬²c¶|vt\¿`Ä+âaج‡À‘p“—=V–oÜẠºƯ8cSé{)ÖFKa¦jb£Ọ̈=¾öܱØQTe¶ÊMÇ€'̀™)̣¾₫Ò«JíïÀ‘ËáBϦyö ¬Öj¬Ư£¾v’¢ ĂŪ ç´Æ‚¬bJäS ï ËÄ%ר‰¡vá4¾èÏs úå[à<¶5bp¹ẲÇ\´— æ%éG,jZ«‰ñöqf¯ >[F£.¼A‚¤’‡sϮƸ•Đ=;r?l²Ôwöđ¶¨u)ÁMÎSuT¥¬’85NLËî̀̃Aă4Kv‘ÊÑe.:̉SV—Ư’‘–‘,º/Ơ §Â6€a_ZÁÜErá(ù”WÏM¤7îcÂuϤ¿x¨•ƒÖk`k³k?,îûDI·́¡\¨!ăyN¾âóU ÄÊĐhíIPßfYbFÀppâ(”™Ô¬²)̀o¤¨đV—øH>x0Z ̉Óđ̣aDZPˆwR›ƠS{â¯K²Àv›7(6]/êm“qPØOÀ’#ÊÙfÜɇkªJ¡‚{mvÄéËÓîîå„ULåë85L)^Î~GăH{iÜH¦_`±¶P!ĂkÀ&SM=đ¿P×$Ëü¡µ{}¦"Ê {€‡¾h@ËÇE›n@hôa„›7{)>e"3̣ºÇ»ÑØY ²¯̃ï¶¿ÆÁ«j¿Ơ³7ë% ̃Ư}3û4Bä0£UëJ₫llÅqR天ô8?dDo2ă=B‹´±ÉđVt̉ÖO³Y°ûĂsY€Óă·Dl.8À—¾|­çz‚#₫¨º̉X—RÑĐQö°¾#Øü »7ßå'×cdH|¢z¤ø{( Ñä$ëê‡Ư¯an˨v…<× 8W<ÓäT`X­5p±ä%Lo[sÙËHÀU;́ï ê$_‡åé“¶e¼Æö±Yö{|HÙ|úÉJ`CïÆ º»|¨hø†íؤ]»Oüí̃Ed¶“èN×—)†ceÁä¤#à’V,gcî–o£ ”i—b^kÊưÇƯ ¡Wü̃D6™â/¯¹)ˆß7û:sîf.€ÎW¦™È½X9|ođÇ£¾l °̉“bPNĂ ¬Jv»£¯+kAu½vG¢„¬]9H¿ê«Û#A$rt?¿ËÜ—¢ N¢hñ‹ªè—oE´kđdß¼Eáö­V¸»ăOœ›<›6¢'ä%¿(¸‰’)L ñç‚çËßÏul]!*꺈5ö8n_A¢$o`çú`’ö@|4ä'<YđPƒGcx–VTç-¼ÈN;ktˆ§gp«Fïoă®EĐ¹iîW‰?àMƬ#]Ơ[º’úĂR<lt˜<\>¥«©·uo—äỘ{—+—Öl!ôu¿ EƒM$Ë‘Ç4lrĂUÄƠº¦:vét Û?+™¢ÿ´HlÜ“ ©̉7t:rëëvËø¦±aé̀ÀHwÏF\Vr›º®1/úÅ$0×*a—$ÔÀ›tó“ya•‰)rÁu¶èAØo¥{ơLÿ^_ƒá³á|ÿ¥¡ô—5̉–Ă~a©®O=ŸÆÅ–U@j}k‹÷ÏËä!ÜS‚~Æ`:Ù7+¼kw† Ÿ§¹ Îl.›¦ÇsŸïơ£é’ø^Ûma₫ÄÈB<2·ĂĂ2̉»—¾ÏE‹ —:PÔ<€>[ŸE}ëEy¨8Só]^÷m²©Å¯uñ¦̀ZÊ¢ ¨7¶ß%oŸ-#<¹ÉÅ2  ×¸6ÜÛk(…æ–Î÷å 4©\lZ%ÙkÖZ|ÿñ¶ii,± [“©“8¼B÷4ăve7øJç¯ê»wô+‹¦rü@)Ê_ÿ`(ßyÜ:”³6B̃ïÏR2·Åo–x‚hÄB_[!äÏ×6s+Ï®Á`̣C©–o1ËX¥›Ñ•2<ÖÛ hÁhƠä°oµW‹Ç~ /‹ ÍÜG̣”SV₫VØÙU& ª# ’d`LƯé">Ôbă?=æ₫X́Ëï $J|Ox/v¹ú…Dó"VWÁæûœỵtóÙ₫ÛÛ†®%ÑtŒc¿ÅqѪí)ûn¬]Ưxơ¸Đi+ñ6ÇùO2W.5k>7ØøˆGÊĐ_@JJ-ëƒËơÊp6»"«ư*¦xbfFiŘVÚ8ú{ÄO—bæ>Ù@{³lƯâ@¯$±ƯÚ*c;h’‡oáw¨”~BĐ÷o%áÑ'}nb–Ó»ùVTçÉ£+âÙu]YK´ú,^ÊË Ù¨’÷j«¾á§^®5zÇ(.¯k+tAûéNöîgq…cåă*Œ ÁLÄéî‘ˬ“•œcă8a}…@zœK+t º4́“£9Íj“ÛØM†{R“ÍϯÄ–›Ø‰ö©g¦+”Æ&ª"oáæ+冇‡‘!ùhj7í,r}Â.n]·Ä“^~tbV9{̀H»ü‘o+FîË‹È&ö"}ùï¤7Äæ­4`ih_i ä¦W±9\Cö!T²̃Ư}X”•Xè \®Œ˜~˜]_Bê¨÷¼æĐĂñD0Đ@Ñwøl¯đoư ©Û!ç4Ç`º’^Â?Ợ2ĂĐâ!7bpÖ¼Ëeû&¥X̀ä]ñ¢Ó_ΔÚ8ƠFƒ¿üˆ¡‘ĂOÛ¦¡á¤²EĐ]»Ñ–óy ¹ Ư„Åäú>4úuî¼ù¶óDD\Mqmï6ùi‚\ÛȤè¹å8pươẠ̀²n–L\³Ô…*ÍcÄÀ©̀₫›£Äù4{°+$e^*÷ªđµ’Ñ*åơÚƠ×ÑS7Ä›÷Đ=J„â¬ñơªË7-¾h‹®Ó̀ZÍ¿f»ú3#¯tyƯĐZ Ú™D‡Á~hcÍØ˜ú©•¹„»¡“D`é’7¿–Ó·\6P*%żb; 5ưïMă^kªñƯ$®Ø-¼[à)^ÀÈp«5“¯2+\‹Ó1– /RDfưe‹Z2èöä"®ÔsUZg¾x{5ÓŒUG4ÇM‡qsă ÂÔU4ơædZª+ç+üNµ–Đíœ\>ëpeỷ]µ́Ă¼«æ¹₫¥OB"´w¸ºCºM që'㸄ư<{j4œRÓ̃yøÈåưaÍE¦]Wc9˜ sÁèi§¾íà*lzØ`Æư¯%üđ92)ƒæª´ê°·å×Eúö÷7ÛEZ̀4÷œ¯…QÔÙ0·̀¸F zOuïTñ¶öÈÄûQ°“²¯>¡¸tv˜6.R_WƠ{}Ö̀C×ó]³¤l(̀,$ª>ŸÜfÄÎßH9ÆÅ¶–@°B®4¼i¦XM´8}9uh‰¥MW½(gጹº»øFª!vÍ×;ƒÜ‹hjbæ¶á ŸG}(O%«›På±Xöœf]y¢ØS»œ2ï̃!Ô…‹ÓöUÓÁ) a~ôÈ|UÓ*8Ÿ’»©äÖF¾ÔaóĂi7 Âˆ9&8·ú Î|Ï$Y”(́ë(ºÜ {rèÎlé°ưĂ;EC°†úa~₫¹® d´xèœv­ Ö7n₫¹ôwÚ—•=z8$pT̃¯k“«¾!AG4VQT 1ë\à9(´JŒ´Y7‡Ïçn–ßhQ»@ ®¶lă>‡`·đ~!Vûl›+̃q…¶üËL¶ö㨠̀₫w³¢àÇ1ÅKÂ~¡®?$Íj|²Ă‹)ï@‘³@çùL){¯ÀE~&Å4ÛÀ±̀©At—wˆD«Ù”°XB‘\Nxw¶#N:wQWi{«©':Ø_„¾”%¶®üE_ơè¢|Sü}¶)¼æä=r•*³P@¤¸_Râ`²b—~ÓU³GéÖYÎ]÷9Úüê¦À±üé·8–}G‹Aê²üVÙ±>Üøƒ₫ù~éÔt?ØÜCÄ›±‘h¾ŒÉƒ w˜rࢨîæ.•˜ŸH‡Ăs›Ï+ÆE‡MØ!±#:€ÎâGxö÷̃̉…̃)<%"ê…\V>¦(IbúĐ#«XA>O·`¸6~óBw¦œ¯ă÷7C=ßÛ´7Æÿ «%ÜÇIf §Ă)B&*GïË׫cá› ‘­^ƒ/ú·4Äl’çÓÄ©LQñm€RNñ‰½é©‡ ̃" ÷¸Ne`đÓV®…"ú[³‚®Çt'>Úyµ±†±é˜6°*I×F§®t-L̉ñAÚÚî¡v6©1ùüÎ0OBˆ+3 Ơ·0/‚_S;Á·Ùª³…ÏN7Foréœú¬˜ă“ÿüg;ñƠƒ ¬1g!a_“(ÂuRkTĂ³Aqf¶˜-ßf—­V6Çd ÔPŸZlăñÛ'¶uÂDó h³î·üŒ%a,ªG₫´{Ójµ“P˜µÇå­×CU‘ Đ÷DÊÓÂö"(T`”‹ŒD„—vQæœ"¥§PFx¶çºÁ’uöÇäóÆ;xÂ&ªa£ª¹mºeáLîi%”€ÆúHÑR\Óă©…öÁ'Suw<«On­÷F£©‰Œ*÷ñŒ+T¦ßCBÏ’ÜZ›‡ –ÈƠyP΢o¬#sЉû ^±@©¨ªX›O5VË]¶tóªàf—LÖ€oY—•$wơN„uàIÆäY›x¼5zi DHÆ3fG̀nƯº|áYŒ}ú+}&>zµØ 2’ëË\W’~ƈ¨´ư™‹‘´ơo•äH®ÜîçÎÂ?tµ·ú6ÛÈ-Ǜ-6̃âl4¥È4¦ ê}ÂU¶$¤ ẹ̈uæªH´⓺Ä̉†s®i3Œ%U¯7($yEƒùöh_‰ÿî,©ă!¶´Îû¼¿!‘Ø€ £ặ¦i×MƠœ‘—œ/ôµ={¸ú®á 5û ÜÄ&ùÍ/¾WöØNÍö&®M%í±B?¦$óÚ½8{çú₫„p*´D¤/ưÉäéœ2:ØíøÎ—"ûuÛAÖ‘ødiÁæ:&¬½#êvuÎMôôâ#ïY ̃Í"|‡Ö<Ë U£ÀÀ]WÊwîOÁ?¶áUê÷̀=ªVå—Ăé¢í‹¶æèÂnqû~‚?N’¹2âDSTMô vbO røe>Z =»&áùÖ¾¯3rÙÚ¦̃¢‹”&²™TU_¢₫@o÷)‡ Œg?O8á¬̣‚¡×ცơÿèG6  endstream endobj 1053 0 obj << /Length1 1401 /Length2 6058 /Length3 0 /Length 7007 /Filter /FlateDecode >> stream xÚwT”[Û6R"ÀC7 ‚¤tw0À3À ]̉ ¡̉©H(%]̉ " %!̉Ư)~cœs̃ó₫ÿZß·f­g}ß×]{_×^ëaaĐÖ㑵ƒÛ@”à0$?/H×ĐÓă /$€Ç¢Eº@₫²ă±B<P8Lâ?̣0eS#Q@ 8 Pơtø~ ~Q ÄÿÂ=$°ÔĐàTá0EîæëupD¢êüơ °Ûrüââ¢Ü¿ÂYWˆÔ 4ÀHGˆ+ª¢-ØĐƒÛB!Hߥ`—rD"Ư$øø¼½½yÁ®^¸‡ƒ47à E:ºÄĂ büĐ»B₫ŒÆ‹Çè;B¿zp{¤7Ø  .P[ ñ„ÙA<Tu@OEĐrƒÀ~ƒƠ¸?›đọ́ÿîOôÏDPد`°­-ÜƠ ó…Â{¨ ĐRRçEú ¹0̀î'́‚€£âÁ^`¨ ØøƠ:P’ƠÀ¨ ÿ̀‡°ơ€º!¼¨ËÏù~¦Am³"̀Nîê !x?ûS€z@lQûîË÷çpapo˜ÿ_+{(̀Î₫çvn|0¨»'DEáeÂûÇæA H $@܈­#ßÏú¾n_N₫ŸfÔ ₫np7À5$jAưáù#À^éá ôÿOÇ¿Wxüü€Ô Ø@ 0¼²£̀ûßkÔù{@}3~üèçïï7 Ắà0ß࿘OIÉDÍXëÏÈ;åäà>€??À# ÄÅÅQaq đßi´ÁĐ?müG¨ ̀ˆÿîµMúơ‡́ôÁü;—&E\À₫ÏÍA [Ôƒÿÿ̀ö_!ÿ?’ỵ̈̀¿̣ü¿;Ṛtqùågÿ øü`W¨‹ï¸H”4à()À₫jù­\ ˆÔÓơ¿½*H0J ²0—¿7P‚ú@́´¡H[Çß|ùm7ø©4( ¢ G@̃-?ô_>”¼lQ÷EÊ_.J=ÿ.©³…Ûư”™€°öđûâP\üùQz´ƒøü¢1ÀÇ ƒ#Q!j¼@Àî÷óL…@Ÿê€¹@́‘?]¿­ü¬¿Ïï§ù_Um==PNä/f ZúkưKéˆÄojn+îT̃rV)Kăͳü{~±5æ‰IO´0’ơs¿£úÍŒ£îrÖve”©Ú“%‘#4œ;gC>æY!s)ʹH4Å%¹=ü₫óĂœÚá£hj̀̉íƯDZ"k3L3¶$£‰«ÑNÁỢ•‚ï­ˆUSñMÀ(:e1wˆbå¾5bsc¶E·|–1Xx n î9½0cäjkçX/®¬b9YX£ÅïàFÍi±}xñªˆp2ú ZíHTE-Ç͵8ó×̀où1ơ!Ï G¹0g¯§ûº¶<-NxåÏç}:„lIÖ EcºíÈ&s°Xs…ôA$ù½‰ŒqV]6í“ß6ÛΪ3ô‹«okb.„YÑăØnCZƯS÷hÍåƠßơ9iMưèæXùàè{Ó#”+»Å=ÿ O£"”p¥RªñMêÀú„ÓG¥Ù4®s·AĂIÎƯêë·z̉ ¶[&ä›^Đ-ñpµz^ó¬&ë±3c\ÑíŸ'%m=ño‘D+¬Ek{Uí¤Z\³æ¼ưó¥]ˆ„³K-b4'0X·°ư—zÿ#”ÆëưŒëºá¬‰­S:Q¯Ÿ·̀qË‹ Pàngđ́ ’"eS?)<ä%C2ƠM@GÖH-Ü]ôD„´Æ)×jZF!ë&g¥ˆßăNHƯ‘kÆN¸4dRydÚ2Mº“Êæ‰…}YçíkËâ ¢1tÖmbé#M½p ôGƠ£æ9L Ó¸^ä‰Ă˜iº€fñÔ‡G¾¿đÇÈz%æ`læ¼G³L{?Ñïu·ÊŒ~ëdúÙ·–Ü›Z*£ C½ù}¯C˜åe0±#¡Áü–Ò\é¶²–LGùnKRÛMáz~9ei#åæ¶¡hÏŸ|sa£ë>Æ9Ư¡ƒưƠ¦°ºFÇ–«Ö´ûêËơ` ×r6el:&có³Đ’ùeÇS …Ơ×öóˆù‡@Ù%µư…†Ó±ÉĐiGÉæH­C b̉Àø†Ø/×V½¹ÇD»~"‘ÆJ]“ƒVMªÁ¡ë¥$Q& ¤Xs»Wc ?J#íO¹ơYj1Û¯ÅûÁM©:¾¨éƠ'½Œ©u+¼EÆw"&¦¥ơLB¦°–sÓÜ 0Ư°>$–Ï+jÀôDkÖ¡·)Ù)O*É®đ©øZ¯‡b19Èä+C‘ôôº¬¢îƠëoDXïÜîF̀½GsVíß°¥  Ú}¦G¶ôüùĐù«jÙd«"̉L^÷äWÎÚW¸í/.ZiØđ¬!M£9̃ÛÎ…îŸäMd[Ö®@©»Ë&sb}AäpP9ÛßM,IῈSs§KJ;wØù!\#-Óư)%tiépüFTÀ'Ưƒ@f & %̀^¿nơ×›Wµ.ï›rŸ̉Îv>K]7µ›$e%: :”…fàÓSnÚô“̀T§¥¿¬ƒQ}´˜i—Ö L˱k«¥z]#7 êœñ™û{AÓ"º¬ éÙlû‚ố8û1`î÷Ú—Ûä†̃Ó >&đØ~ôæÊ„Û¡ÔÛei*Pƒ’ƒZ̀qƠ *E€y” úF(ÖÖÔA>ï+¡„ufÈjƯ\µôi¡{[—¼ï ,—ÑŒk¿œêÍ;GS'»AGçÁ‘)] ¾ê'̉¶W2Ôª́'(lºă- {w“f4Ë Ç$1_N ÷aèŒå*å®`ÂÆßXwíMaÔ4!†d8d“GZỊ̂ 'Åmu&ÈâG‘% 9N‹pµ6~jơR§Ñ•\Îå‰Â˜J›h^å£S›ˆpäÓ̃é&Sˆ•*ă>_#ñ¼̉%Ó¼ă‚¿¼ĐJM¼­é[ñ₫@(“̉ÈL¤3îÎMhæÖ̃ÆcăÓ;?’#&¾$óèO3üyäjí!ựXŒÆPođᡘ¿èƯ×C†[<ƒy¸–§g^!ùiŸlå3‹%́Pù>Fèiß7Ǘ ~®bæÊ©»³°–>ogNwăëv§Œq<Öîj|ô©‚É+‚O²•ë̀=Uï v&c'ÚçêÅ€{œ]Kg<‘¯9’¬4×̃ơ-h±9)>i³'̉̀ÚÀN/4₫5)Pp°üeßXQ—~Gb¹wØ”µỨ1•g•?Z©G…Qê'K~.YNöab>#|XñˆÍ¤ºôá²o7ñ9W……ª©bq× ØGĂV¸Év$uW?¶s‡qY₫ö›|uR™È‘ŸOơqø!‰›ïˆ̉»kÑ܈x‡~Ç?<ÖÙO+ê¯^„3íß¾́¾ÁÉ-¢FÜăæđDæ“æ DB6I}±dNé«ỏ‰§ñáfm[62Êơ—D°˜¡¹fÿ2K—T‡zBLe/<Ɔc{̣å Ù)!EaèÖaÿ:ƠÛ7Í[xVÏaXƒ{™ Ơ[U,¯'Đ ư"´Ÿ’M̉*¼hI^v7e2uPgÛd!́¾Uî•#«y×)ó¼ƒQz¹U6Ú7÷¤’â9¥‹/ñ¼^̃Ç(K88ưÔç-¨sûƠAÉYav‚¾̃^5ơ`QnW†ƒ-eA·Úh»?ñG%.È]¡—SÈƠ _â‹À9s½nß' À?=s(˜o¼@Ó⡲ôG¯e›¬iˆcK4“ª8H«!eg3‰ Æ»n.‹¨¾ÄÓiês»°ñÉ5Á2¹¸×{Ö±ơó¾]æ­Á—µS_•6«³ûSờâƠ¹ צ—\ÊøEùÏåÍ̀«X„g#|_s¬-ïÜ2¥1g Qºf^äë&O•¡»—>Oí¬6ÍBß2ß×µüîê÷úȺ̀í¢¦ŸXpÖÆ<Æ»Q»jØ$]’ÚøY$k'?âßÉtWtymшÀPî4=±=v|8́Zgq1~¿Îy¢.5ñËƯm/ p´”îUơÛxl³á: Y•¸E²êè»d ›´äª†¶1ă÷ÉΑkr0Føđ ÀmưUÏ¢J̃đÙ»ä>Å•8œ0AC¨Ía,ˆ*›à}lÿU0ư¾€SX&\•”ĂTss#œ̣-=µ{ûª,^cR2̉ËÁ‚â©àÇè2í…yø;} 7t¿¬o¤Q¥„%æÙ€]Ú¶0†TÅœ‹ U†™­ûx1)êvCF ÆMǘNñ2H'È»d«¥È™·K2‹N™NºS‚ŒªóM¥ÊI-gˆqˆ ®·óù"8hwàÁTgeù ¥”äO–¯Zí 7 ̉!•ªy¨·ÑB¨C´&‡¬æ™̀¸,l°Ç—†¥ÛwW"ă•mJ7éáuY*_„2 ×V#ïḤ›%–#Ô- ’®¿µu~¥Ù1Ó_érb*s roûFæ@cËU\Ê?‘ ÷„§*ÇËÅ0<¥N#à­»#¾zŸ+úË„ƒ&Å1ê‚?PI‰ñó‰×̀”Do³;ïMƒ7z°ña₫OƯ(Ă= Ÿ¼×iërwÙ°Ÿ²wz ̉À1Ax÷‹Ï·øÛ ÷̃¾˜Q™äN½¼=h{ÆkSx‘ă·ííFÚŒ̃¸ÜÀŸC;ßơØ“J±H_¹µ§¸†§µ“‡a 4 äôŒå&ï»qºöÄùđ*̃éÊ;µĐº̀öÖ‘åü†£j³Ơt“#ùcέĐYYsg©Íâ£2I/¨ˆZưeDñY„ˆ3/—̃¼¼­¿QôíAók‰§d4ØäuK’|{•údp¤:4­º&–ç¸h.[²§”×áM̃²@FâîQ´4Ùø=®3PK¿–ß0z/̉$‡ús’̣8&¯E 5ưbAC—J³gZÈÉ9Óáœt«h³Á¤~‹ó³Ïµ¡¡…¤G¦.V₫́”F•ûaĐ|£Á[2‹ wMM–Óú¥åÆ-dú7Å3CæÔªS­Hî,ºD²÷‹QÆoKÓǪçÇ»Ế˜Ji¯u®¾K÷'Ff…nỉ̃Sđï‚ƠJÊß1%OI×<‘-/âkzbåk{ư¾û®2œë g›ï=¬«·ÅéPLAÊ–ÁNA ¢ÀÑc!ß7Üà;Hsê3t^9-'!±ªÀë Ø9)¨èX÷:³;×;,ƯúI}\̣Ơ¦ù¤ÓÔ¶Et‰öáÔiß v*µÍ•ô>7¦N̉¶C,fß[Å•„Ç ½!Ü+E]”Ä׿èŦ³@mX¡Fu¤­±vOG˜>ć§bÄÛ«á\æ[Ä-aê#ÉƯ¶G.¹g̀æx;Ç›¥7SK³²U¸ŸÅ)Ơóq†|†\ÓK:™¢Í/Ëcñ‘:Q‘˜$ơºÆÑHI®Ú{œËîwêÙ?„d«zjµÚl™toîc~=pt>p)UDç,ç~óăÅQg4&H'÷xPnkù1ï~₫ơƒäµDÂ!t:j8ç²tśΪ¹‰J;Ăt徯Aœ¦cP Æ´=}<‡6ÏO ³¿ßÜŒ~wÊÇÍ%Ëd1¦wª{„òÆ®ÿÆM÷f̀¤´¥F¸îyÊÄ̉ûUXÈ+ƒZyánüÜ|³È2ù¨Î·Ä±̃4ç<«¹V9"®ĂV^ÙéYÏ Ơ^©ë½­'‰räz>©ÔδÔö¢Aº%¬–̃‘óÓ1óÓÍ‚!Q_ÊDH½^äKë$]—ÀÙ’œ]̃÷> ZWöÀWÍ Å¼è^ Óú,!°”c–å(<ê₫`‰¼÷“ 5 ©¼“¦¢ûÀGñnEÎŒ:×ö˜S7CíS™éR%<¥äܵÓü«••ÉK.{˲0÷ z¾Í̀x̃» "ià"h{˜ë¾ưf̃£-h©TŒ Áí£ ¥I>–o²ƒÈ̃9jͤ€úÓSÇŧ—dcX~­Uk²?of¬-½Ávˆ»Â£Ă1~9³0?YÂ.yÖ$­àQ̀Ÿ¸B⪥ÁtˆzÇ~1¢ĐĂ³Æ?Lj£ÛÚ¬Ö;Y¿ụ̀Ư¸2›ºª¤ y†@6ăg‘Ûă`»¡6¹BóoĂß `geØbÓl¾ÊơÑơ₫K Ơ·jvL [̀¤8Årܼ˜eáÙ œO V¥‰3‘꺣‹˜bóÁs5Jwú²ñdóùvc2B7*đ6ψ HjÍ{ă—Ă€)¬ÜÆÜ;zÈƯByt…̃^_ôƒ^N°A9H¤ˆ~ÙơøCỵ̄QXe.¡øKΕº!÷¾oÓñgíaAf+¬ï^œû²³‡»¯*hÑ(>Ñ;í º˜ú›XÊ2 i?»ă9ÂRϺc;`¬v™0Aç¹|{§{¨PŒà ±̣Ỡ£×‘‰–}ß@,Té_‡Œ« R¥ơZÅ ÍZ•±[ó—fŒrr®*RG {¦˜‹5ª; ”‚&_Đô&È;Û?.`³âÆà‚OĐ^„jêă »Yàâ3|0ÂVø‚]Md[¥SŒ>‘]ÛƯk$ÖàiíQ4/.́[Ôµ[Ÿrkù¢¶bßW¾¢eÔ=©·¨¶%̉Ùî-‘YƠf×PŒ…0ơ”Ôó`?ê¼ÇÚỀœ̃©c—å~YƠÊDH]5™·ó ̃TYœÈ‘¤Êª3ÉB©o#ô¡ŸN—QyÂä–ÙH]ô„^‰È÷iËøçûỌ̈[[\ñdÙ”>q…]̣PÈ>¤¼ûăÍ÷>U—tDñ‹0%₫FM™4€¢KÍ' Ça幃̃`ø¡t«´û|ÁóưIÍ3_wåó^ăx:|»,°=¨s°ô²Çêîæ^³̃µE…è]ӱɵ ËVÂ3¢Ù'âơhgç¡ĂG‹̀6LtÈvbơigo¢Uăn¤ œ*ỗ¤;†ĂȾF¯zâGùç=h­"I×c2±©’…QØ–ÍÂôÈœÇ ŒÙđ÷úă5îÇàÍçă6£NÛ[L–Å—:‰—̃ÛÇGoö çkarj.Ÿt"·Ô´M̃œc·qéTZ7†u»|ç³bï2KëêĐ—;mËC^’ñúI|Ç>HăU•xÆ̉Œ}ĂQÏ%̣󈔗ӾÇʨ-zc%•ß₫æËÛ\+”KÍÛKa5í†Å2ư&É·¸Nå#̀Ÿ­E<U®B}·­1T÷*/û©—5 >6#†pv›wªĂ5ĂLŸËsúo˜}‹PŸ˜Æêp¶±;Wà5T?ox|ÿưÇâ8…‡» _ºâ#`£³#‡ăï§,ơŒÄÂC¶'«GlGüa®Ô]%ô£Đ·²aûñä^ƯøÍ…̣ä—:Là#& f₫é—ûúRcR[– c¾ƯƯÜGLÏ\üu+¬'êÅaø§¦₫N„z¦oEk#̀øz-ên„Ö;ØX ¢€H‰¸µDmú@¾ƒKºÍ¿cŒđÙó3‘¹ú‰(‘Rưç˜"̉γqööÅKéƠXW$E˯öˈqœ̀‚¡>vÉqr¿ŸöçTX5zṢ†FZ}²®ưÚƠ™ø endstream endobj 1055 0 obj << /Length1 1406 /Length2 6162 /Length3 0 /Length 7128 /Filter /FlateDecode >> stream xÚx4\íÚ¶è½F¢×Aôè½÷AÆ c3:ÑkDÑ{DoQDI$z'B|“ä}Ï9ïùÿµ¾oÍZ{ösß×Ưçºö̀Ú́,úFü v[ˆ*âJ”tŒ,„€ PD&`g7†¢`¿í́¦w$—ú„’;„BÛ”A(4PhzÀB"!1)!q)  J₫ D¸K”AP;€@‡ Ø•®>îPGºÎß·.07@HRRœïw8@ÁâƒàÊâ‚®ÁF0‚̣ùG ®(”«”  ———È)€pwåæxAQCâî ±ü  rü5;ÀØüă0BØ£¼@îÚƒ‚!p$:Änq «Œ4´z®ø°öà¯Í ư+Ư_Ñ¿AῃA`0ÂÅ÷ÂöP §ª-€̣Fñ@p»_@ ‰@ǃ$ØêB ¡°_3 ₫Jƒ̃f¸ÂÅG! ~ơ§ u‡€Ñûî#ø×á:Ă^p¿¿WöP¸ư¯1́<\MàP7ˆ†̣_´‰àß6 ”@Üo°£à¯Æ>®ßÎßfô ~®W€=z HÔ‚₫"đC‚₫#VnH₫i½O·́ù¸₫7àŸ¹thæB\ÿ&ú# (Œ¾ưŸé₫;äÿÇ̣_Y₫W¢ÿwGª0Øo?×Àÿă¹@a>!Đ̀ơ@¡U ƒ@k₫ßP3Èéê@́ .ÿíƠ@ĐjP€; Í/t_xÿT…zĆô¡(°ăÖü±›ü̉ ‡è#Đ_Otø_>´ÈÀÎè§MÍß.ZCÿ¬«#́~‰MXT rwù Ï½ø ¡Uiñ₫Mf€ B‡Đ3́î¿VH h‹̃#4ÁÑö?&€ ê†AÀ¿ñăEÁîîh₫fº£¿×¿åxCÀ ³°t˜Óë°ö‹z/₫Ï£¸+«Ñ }Q¢(¹~ÚxYjSníªî§ëÏ—ELÎúÓó́]Œy?êÎ ^NSÏCa¨ô­+đç~?îv€0Ù!èÆÅÓ£×Éö I[b[r&›Í^…‹÷ˆl¾úRxƯ‰Ü|(¹ pŸ‘²¤Ñ£)ävnc>µ`a[E Y<"#w·̀đ0Ö0¿Æ| ;Wl¥ưî³n—9´´ô.§¿/]ä¨@«·Z¬*‚‚–̉W“%w8i€–*1G³ ‰Á¡(z¦T–ÀJ[äÁ±ŒơX|ùÇtA[ Gƒƒ®Rđ½'#uÑY™Üå#›lăï‚Dw›“¢ùj̉ÙÙ«í0Ά2ö«E`y½ØÔLܺÎ7:Óˆ’̉s m̀ÅÆX¼'¡"Ö_&î^<~–•($l•*“øôRQLÆä:lo¶xơ @AÇN¡¯¥Ëâ´ê1|Oàôe´Âœ9~̣µù]ûPOä‚m‘j*8Á¼#kûíVb“†èÙ{2S1T­Ö¢Ë†;>7~:Đ0/[¿­SMú¡¼äük¼©I¾1Ùœ±ö&F†îm ©p… iRb ç½2ÆW‹•b#/dBeR%‚€O>LÜR6؉'­]¿cĐóÇ:ÁÖư@PßZ+¯ó¡ăă]NMÔưhăvÂƠWE‹©àñÙå<ÅŸ&6¥OåÙ?ûwºỷ°Ÿg®Pở5¸nór„±ăaCÆ›‰̃ÎÔMoơ†Ë3́ Û!5©Ö°"XEc¼h«̉R?U´‰e?H»ư¤ß½gľñä;¡å¹ôư`Wë¯ ºû®?ÊƯ•ä$œóá’"ëU:A’~Ø„Q¦ÊD§äD ‰†áY¸†£}#ÁLNk‘º`Û’íis YƯ¥ëÁY/ĂEk-ƒ æ€/ø«(DU⇧¾ÈÇO‚æzbï|]µ{O¶7­̀Üè•CtZp£,G4“XÄÏŒ˜ë«h_ ¯Û·Ü©j)C¨§úÑxOÑRnqvµ{Đú·!ˆ.Î.Ít™ ³TRw3[â§1O~p¤¬gÀ˜Uo¨j“a: ½bR͵=,®à„)]X‹>ôpá‡1xÚÏ ByíÇïæèlï2לĂäÀ<ËQ¬{UÖ†•_¬Ê]"6HßCK´Êơ§âX4îľ~ưcóî©!ÙOÔ´™tf×ÈaÆ€‡<×½rÏH Åô“9~₫ë§§ ‘Ϫ¥0¬ÔÎc óJz¼Â)T’º™BiOƠtË¢ẹ́ÄO"¥Ö!ÊPSD]úÏÖÜ$¹ºf锜Z™á²|aưë%X+¾7¦fÑLîâx*¥Îaç(;ĐOËÛđåPçt8“S?³µ‡m*h\è[c–×ez-dQÛi ªû:sÏEB½$0Å ï ™èkÔÙûi•"é ÷F-ªÛóww<»ăÇ-ó[~̀35k³ëåËogª‡F$“?XÖçŒÓ|9ü!Đ3q†¯Ÿ­ƠѤDGî¤n[n5Ù•g6LÜ“xF惾2`]$Y¾P7IÔú@$5Úøs„}k€ÎÇ 82´E;¬¨(>ưe8üv˜aáe’¡ïKăcûo~‘ÖdÊOløef®)¦oÍ\¾é_ÈE Ûs*û,¯ƠØ ¼~%of’H®…Ó‰»q†̉~¹¥uußYO†f÷g…ü¬ ©ô#ŒoI¡̣t™æ‹3æûLbq|7,ËEÜó˦±ù¯Óm!ÖslM±Ÿ¬È$`©ñMȰ°nÁ„µ5kî,ăÏoƒ@Dǘ«•{ u«ÔÁF¬ù̉ñ_S¯<¬1Œ¢ D2ÅeÈ>xÂ?d¯ăWeÆ×·³†O—QX ậøEMöÊçM§ñ>eÈ‚ߺ.ƒÆ\áƒÖë§?Íø•é–…`́;²#¿—;È`´̀­êR‡l|®4]Üí•eY|•›á#ÄÜ=²EåĂ’3IÅoô¢<{lJp ¿ÔI&¬±ôwY \Ïow'ĐŸ·¸‹·wKƠ=LûÚƠ¿á9Ï$éLèCGƯ äă*M§<8·Hv¢ƯÊ™:0 ³ª\ʶơUS’ceñ‡,y±|­M{6\d¨ÿ•íKS‹ÔMÇ{îÁ8•{ó_‹́8+{?wÑó·4¾Æ¤ï°ÆD.tÑÇΤ!t¯~xE÷¶@›XbüÍÉÂ3đđqĂ8‚r³2&[[½è}«ÖÇ“ăÆ\îŒS<·\̃¹` ŸÔ¾Ñ¶¢¼́[6:#±×ùåëđ€ä¦¸×ôœ'9ăµge(£̉ÁB;¹¥Zs*l ®P‹Đđ·çκf ovUç|U ¨Kûæ\÷¡oÅp—kqfÜZxˆ©pu½ăÖ†;F̣ æï˜~·SvŸÖàs+UUX¾Ïs ÿäøEOf̣}̃' …yLoSTÀqï_/`%éôoÏ V1Ro£æĂ±®Ô!Y úJơßG)- ¾E=iḾˈÀ)A0̣́¦KÆö»Ïh<ÍG8U›́jQx;å· ÜæĂ½àµª™}}HØ«‘ SÖ̃7xˆ%|̃¨ÏGœ´up>˜°èXÁ…đï ^Çæ‰Ç̣¨ˆ̃K·‹<,DÄ¥ùY)•˲ưÄR½íëÀ2ÅóÑ1ăó_÷GđîhÑhâH"¾OËËÀaé™k5qˆÀlLÔó±íZBmÓè''ïn®.\ˆ(a 1"+vÊÖâÇ me6¯   t®oÎú☆đđI˜¢>æ¡ñX S£¯¸¿0çïbŸÙ iå8WTŒÄ8-VàÓĂ¾4åj¯W™Ư¢›â·Aefߨ}æïj¾n™7/¤+èAiøßv¾À¾Ưg™|¯1TùÊû$W×jỦÓÚå Ï}w½i»1¸8üN!Ù–½d(O5ư¹Ôiç¦́@{–Ïè²6£=æè3ª^É$P’“4/£U0̣6÷Ä¢B’CoÏV°¹VæÓFNß…‡Ç# Œ‹Ü·á{găwêfŒÛSÈz3>h­knï}³V†–^[H!<ÿØ,ÜĂrH¹ly韑v÷»¨iضư¤Ì–›~pÀùƠ”¿̀MlúÿL¨¿~/îWd–äa S\ÀÆçdF^W… ¾¾n§ aQ2¥Áñ́Ó¤ư´ê†ôỷ@o‚ª¥ôôƒ-ĂÀ‚4”aÎjk ¦+ƒ„Đ‘¶‹X?èdcÖÅơhO3Q/_S»–|cs°¥0(R²f@ơ­K‘Éôä Û¤JA+u‚“ ÁS+9@Å×ç~^8Ơ6$¢"çEª{Ó]u÷Ÿ+f~ƯÈ̃Q(­ _íp{=~0L¼̣fỵ~^ SdaÂÄĐ+}û»ïoWóÍơ剬·ă0¼p/,±L\êö|ü‰°½¡öÇ3“®@ïs5¶›<ú°¢­q€ü–±;#)M¥4Ç;UG3SÀ5µY‰!2w«ºíYhn1ó w” à nzá¾6”hå’_XxåKnîïƠåĐpIÏ]z)kỊ̂Î%r8$?£&6»a2URÿzñ\â½3ÍL"Ο‹]"P ̃VQiGŸ@qÿ>&J·¾èmLø5i³³‚†U$7ÎI`£QÁ—‹´x]È3\ǛøRë8ÆDÎ+°<ÉÚƯ+¦Aÿ+c}…éçL“t»5ä7[ å¼)`⪠ÆùO|8]v2M¾Kº²Øtb–´/npëf«Ơï¯âdÈcö•¾q²ª'‡‹˜ËjæûÊ-(ïÉè^„ßê°…1>ós£±µà’e]àùú´spÔ¹ÔGä±sñt­¾̃C¯́µÖraUDØAŸ@µm÷ÂO%‰j¨¨÷©Wđíj&™•éê¦#*ç̀×™ÍÙ™Íê₫v5öؾ9ÿ²´M Û,M₫høø‡Èó³tWf˜Aơ‹dƒ/™Ñض«¥T‚®Ç·_0'»uªNJ`ÛüœQ Kê‚oS¼Ç»)pÑóăđ•~0Ó•‹́r´n §®ßÎyyÈÉC}ífd| ~„z@?ë|$ˆ/W&́BË;‹èb4j?DÖyë{ø%R#Û[Çk.ôsỴ̣̈?¯*Ë7y^«zjr¡ÏÚ¦5Á[Ñ>eÑ §Vp¥áCíè鳴륜ñ$»É¹,4øba_îI?¡Úü¢0¯.UÿêŪ…:£­PrĂZ›ú€_³W耡µÅd-1Á 6Ở÷iêÊ G¦tr®Gx>“é-”úË́ª2m!=ư‘¸g gùjZóúuOtë-›±5†l¶¢‚”đŒ©}—§́oõ~0–{|ëñ}ô¯²Đ¬&gûơêÛăĂÛ¸$!x‹JƒÈÖt…í @ÇMq‘ç¤[ơG«[]'Z̀ürt¦—EäæâŸ•éY}—2£•¦$ódN'ÍÀ1_“Æ SdNº]bN/ ¿ª!-—Çb\¸Ó„¤̃Á:3±Úx$3ióóÎu’hư›˜ ÷ ”¬LuÏz°­Vçk¢T½‚{m>Œ³ñ¢¯8ơêøÖ£“óù¼Aí`̀íĐ|ưdqó̀CÍWZËá₫âñä3&é&nÖoủ—RÓz<;†®N•ÔÉui†¶ &©²™Ôe7q1Ox?jL‡iY‡¦+&e¶ƒ‘ß–wC½V«så,#^WbzKOsƒPÛĂ¢d¦kĂeu¼•dEM•Uo®ÅcêL!Y¯fËú}6?½MÆ3΋U½RswX3Á}K*:™Ëá_ßĐƒÿ$uI­|c^"7}‹(¿WÇóó — ª$t}@t8^?ÜͶ³ê3À1»®7ŸHåB,û2®êà¶¡e'ÍDB÷Ó½/ø?9C6ß¶ UQ̀¿‘`&9¤ø<Ë%5‰¯•; X§x˜yŸI+Ê!»¬ïkaOÙ& …|lqe `†tÆỄ¯åÿØ@+àSÁ»ơ#刜ähâ€c ë·’׳%m›¶t`̃@•.^9ÂAÑâ(˜ä‰y‹¾́Üá䶆ꦔ\*e>×ÈDo ÜÓ$¬äbYô©BO\6ØÙ́̉¹¨ ¬sؼ3ôơc1u UÏ“’×sº$´vNsÄ"¤‘²„™÷èéÓ&Qœæ©vT’¼*⵺¸ø™v±~}VG±.-Ï#iïô’æ¶ÍÅQÙÑỷ>µÀŒÀµH;ûÉ́…p¥8ù–É’©̣Vÿ¹¸ªâîø['}ɵ£*Ö́n‡dŘç±c} ú{q'̉ÖñzeÉ"ß»xïˆÔ…zÀÛ°ØV4ú‰·ṇlôp!?¿'`Î`{³̣8$€_’Ê@đmÑg:HP®Ü|÷ÀàÖTMĂ-&̉Ç ,«˜bÛƒ®Û×ßÚ¶*l¶„L^Œ¦ơób“î zÊk,Çsj£h5ó–éɲë$j„,#B7̀{â†F̀<¢k´]Ÿ́=̉1U¥̃Œñ:k|6“”µO (kN\¼m<AE6VÜ´æ;•G÷ú³–Ô9ÙK˜%È´¤Öq̀ĂŒ³ §ªăGˆ;S­üL¾Çˆ§ôƒ¯̉{̀ÿYỗ-RÏ} ªE¶¾93ºëXr§å¡ØÄƯp ¾åIG#~³‡äñÄXcw9›j·dJ7>zé~~^‚•KE³]艮èo„yơÚLD«cX´–E¢'†Y­?O~wpû) ¬µWéç’ve•ù9dÈvVCîÎ( o¯ÇÜÖû~¸ư˜|¿Ä5)Ă¯y¥TCŒF)MëZ KĐ«æ¹ %^ÅÇ!£÷l¯ ~0M*iŸ'6S{gxƯ₫ÔỲ®Ú¼œĂAô„5lC%Yv4¿Qú16I¡çö æÅjcË]đ,®Ơ~3†U-Ư„ÎéÙJn˜ÒÊÓ{FÊĂÎ ‘Úă¡ åkc;Öạ̈—¶¼›ƯzVó°jïOœb^Gëb毕H»”µ˜ôđh»#í³¹佬́‹M3‡{,·ŸlÇ ©~ÿÆdM¢ âYy{`M/Ûsª¡Qø–'!ïågăæåËaàÂ¥í½³́[–Ù¾>ăI3lØ¡ÊÎ3¢év† ;¹úÂåưdp|̀d»¢6d/«7}ä¿ôƯ´˜¬^âÿ~¥Đ«.=öK;xà£h+^cáđo=À‘/‹|¿ŸÏo—ư¡ĂccëFÏ(æÖŒÀsN½!*Ù"?€ơÏhzÛ_ZϼJ¹Ë=“ÉïפßR£7{)LjXÚSOâưîë6>s”A₫‰—¢ĂDâZûµÑu[n6ë\9,Ûöà̀Wº¥6CĂgæ‘ÊN÷đV´«{©³a“<®|„ăÍ ‘Ô XïP4ÊèüË[vÆà]®†Ë oÊYï 7xd¨@’D/xß.Ô Kq̉áSÖ¶”œf|Ú´2xMwrPc#Ïsê;$Đ̉ùâỷb.­=a Đ̣}¤K™¶yµ~N­²…Ç·1"“Ñ¡APpṢk‚L?JMÑ™,O6Ë EͽKf%é20k}ªw}:™xŸGÏ÷G«¸ùØ œRaÁqµ̣q~~œ"~gKf[œ<ÅânfưÙÅ»ƒ->QøÆjLª`ÜƠHLæ*‘)P¯+xC–“ê/>ŸÓ½¬tØö_WƠ—`J[P{b Äo¿Íq똱³ƯË =Ị̂NΤËaÍ4ö÷/ed=ɼ†ˆÅFéKæ{yל¾sÔ*ûă~́÷£ñîØ¨]åÈ"?~y₫PÛS¶'ßCüîô›×ÓO‰±´ˆ_‚æI{i©0b}ÈC°;D«IÇá 7nAk^nmï4x)Å{ĂVùóă3ÖÍ„á/¢9r—ENÖä(ñÁ3«Ú’E?|³™s‡…Acg3¾₫ơ+U­ÓˆGKB!MS´`™9~_¯@‘‰gKKVXƒƠ$đD‡®Ư8ÓXÑ0ûHîG1%R¦¯G ̀ º)Yç€û3̀/)ÈbL#ºmÅ(¿ÇÇ]Kl±tïVå‡áx†WŸ»Ó‡‰…„J†ï9fZ¬"/!8 —äk¼™DöK₫ẻC×.UñÖ ừ…i‹év˜ q†ÎĐ‹æm ‡Â”Ùï¯æ̉¦c\½¼¤^éYˆ¸í+4ĤÆéỴ̈Ö>ÔtRYx9i" '6‰ơ)K¹üvø¢³Ík3»­gVÓ¥&+ơiI®Fi+^˜¥¥Ă›ởe‘…È'Óz[ Ù€¹W7Ô't(ÍÎmHXX₫óØ‘Á¢Ï?£´âJ‹^4Un8j:̉/Ư¥UçJóç)Îû±L˜%g7ȧƒỵŸH¿b8œ»ơÎØØ$Ü:J“)Èr¬̣ÊéûÏÚO=g. ?ÆyîƠ ̉gfæÄJ‹ÆÄ-ÿhùÓ̀ endstream endobj 1057 0 obj << /Length1 2490 /Length2 17175 /Length3 0 /Length 18622 /Filter /FlateDecode >> stream xÚŒûPZ× ăîî»»»{Ñâww÷ânÅkqwww(EZ¤ÅíæÈ{zÎ÷ÿ3÷Nf’<˵Ö^{ï̀$¡$SQg5s0J9Ø»2²2±đÄ54XY,,́L,,l””V®¶ÀÿÉ(5Î.Vö|ÿ²w»‚dÆ® CE{€œ›-€•ÀÊÅÇÊÍÇÂ`caáưŸ¡ƒ3@ÂØƯÊ  Ès°º P;8z9[YXº‚x₫÷@cJ `åååføÓ jt¶25¶(»Zí@Œ¦Æ¶uS+ «×BĐXºº:̣13{xx0Û¹098[Ñ2<¬\-j@ ³;Đ đGÉ%c;àߥ1!P4,­\₫R¨;˜»z; ­•)Đ̃äâfot€Øê² eG ư_Æ 0₫n€•‰ơŸp{ÿÈÊ₫OgcSS;Gc{/+{ €¹•- ,¥ÀäêéÊ0¶7ûĂĐØÖÅäónlekl2ø3uc€”¨*ÀTáßơ¹˜:[9ºº0¹XÙ₫Q#óa@m–´7w°³Ú»º ü‘Ÿ„•3ĐÔw/æ¿ׯ̃ÁẴçÈÜỄ̀ü2̀Ü™ßÛ[9¹e%₫¶‰~Ë,€®Nv6Đ ô4µd₫ƒ@ĂËø§’ơ1¨?GG€9¨  Ÿ•9ô‚àăb́¸:»ư|₫­ø/B`e˜Y™ºL€Vö¿£ƒÄ@ó¿0hư­<z, ñc°üñøç>hẦ́m½~›ÿ¹Ä̀r̉ZR*ïéÿ.ù¥˜˜ƒ'À‡‘ÀÈÆÎàdçpñrü₫EÅØêï,₫å)koîàư+YP—₫—°ûß@ó÷ö ü7–’hnßc₫…“ÅôÄúÿyØÿtùÿ7ăDùóÿ›‘”›­íŸz¿ ₫ôÆvV¶^[€æÖÍ´@;Á₫ÿjÿÚ¸@3+7»ÿ«•u5íQ{ Ûiå"eå 4S±r5µüs6₫¿ÿcŸÙZÙU\¬₫8YŒ¬,,ÿGÚ\¦6 ÓĂ4’ª€ ½ó_FI{S³?6'ÀØÙÙØ 4IlœœVĐn4z₫9Äf&{W TÀÜÁá%åâ0‹₫!ú q˜Å~#n³øoÄ`–øx̀’ÿ n³ÔoÄ `–₫Ø̀2¿;€Yö7±ËÿF v…ßħôø”ÿA< >•ßÄ öÔ#³Æoâ{ÿø4#ƒÎ?ˆT»ñoÊÅäÄÊ¢0q66ÚÍ]ÿ%æü[ü×Đÿằú—Øèú{^öäÿÇ”‰é?ˆÄmê` ÿI88₫ØÙưÎïÉa6ûQGƠ ü×z'7Đvûíj¢ùo—?ƒ›ó¿ô l-₫A9X₫ÎT¹¥—£%Đ₫_ ™Ơ¿ ¨¡6ÿ‚ ª₫Í*Ùî7_̀¿C±ƒ"Ù»Ù™üq́Xü‹t2;üÎtÓ₫K ªÁñ·̉tÙÙÿg 8Xÿ–₫w8@s-£Ăïr€êw´usùW|Äéw’ †8¹9¸ÍL₫UûßB«?„ß¾ ë5—TáïÈœ J\€vVÿ]uN‹ èNø'!PC]l],ÿ”öï"@§-³«¥3đ_ƒê«‡Ă¿@1Ü~Ï(‹?¯Sç' Z+÷APzÿz׿ ¨ë̃¿“¹zÿ¢üÏÁeêæ j»ëŸw èTû₫ó£è 4EX[v0åµ®í¼ÿ"JèÁx8-¸@y¨•AËè³æÜåöˆ›J[›¼í|+:Ö¶¹/Is#²NúâsÖÖѬÚñäûl˜¨6wذ:‹3æCPé"eɧ%e%1Û‚+¹,´L`Û“C¤¾=dßùôd1pYl×x¥')ü:˜ƒ´àsƠéêÏPVđèÍ=<¤¤ •[K F#àï"éÍƯăa•¼|v× ntÎnäϾ×Ïèyë™ïÁ#́ao¶ˆmI¼D8ùa)Âư:âéơ-²Î.§¨ó°9w\đ<̣Tï®”üᆂ[”‰†Y”ỜM9–xS‡Éñ¾–·Ă ₫C­̃₫ºÔû &§«£W<̣ÕDM^¶)3%²œ&-¤Ö¦‰ßu±« P2£’¹ó–Ç*äëøî߉Èm˜Ơˆ̀uHƒO)FßơV<™¡¿³ ¯<lù&t µ¨û)Â8 µ%]‹(Zé+Z†S‡y}_@·~¸è[QAÄP28¡äT±̃Ä4U~¬,b?Ç·¥»[䘘4TñëŸ2×v[úÎ̀2Ư—ª‰B}û"¿i—c{k°I¥µˆûqk㤥đ̣ÅNj`뢒øSczáúRæ{‚”¼¿,Nx1··è¦â“² J4ÜVBŒ̀8½U¸v].¿_}̉}.Ö‘ơöä[%içgΑÇ1ÙÎ’Ư‚huÎsy>·£jW,‹)¸LæâÇ¥›̃9²‡N×@ZVîá'¶N=×Ùù±ñ´ơÏ19–¿2£[Mrv_éÖˆ!(̀†‹¢)*aHaÙQ|AhäÁùWå´qå¾ïç.†ËÏb̀qa*1%\ïÑÍ̉ûKó«²s8§~vĐ6ư°æî£<³yKÇÙĂE§ÅŸ‹œĐ`›u$x¿9+uRw—ĐÆâ*9<ß²U(‚W~„Ö@ 4¢:'̣ ¥Á“âc?·’ç-́ñ”bÄtß“|^äđ4ä$‰<ŒÏ_kÎdø•[j¶gËIm2a²åÄ&sËPN₫̣gh^IÉ₫NwPúÖÉm¤e¤nY1¢ûWŸÅÓÉ¢3$¬ĂwºÁ®4ŒƯönÔñ –ăưDëz?Ô@y°s´ Q‚YÅ}b#a:RnÓ„>/ÆuF™Áüz)ÍÓ:k{"¸öóª¨u™&ÔÏNÁÓaªl‚s+’5Ÿá¾¸exŸÂƯÅk?ª½÷¥ ê¾ÆI…́ÉÁ*“ơV¾zŒ |–d¢åù,ăjDŸ>ípºvWSâetDæûPmLW3evü1 ––ÉU–È̉)qå5’„2ßéG`{]`­Đq¨öÈ{ø!öảÑønÔÁ@^e×f=vߨKNgÈŸmĂ«¯O«<°Û©ZDN C]q>›ßê±’GÍùü57Zo”“Ú)¡7P«|¸&c¼ûRfYbÓ$Ërj4à\zŒtß9Èrbç¼tÀŒ¨›^h «áj¿+bVªˆ¾6O Ô 7'!‡̃¥¿j—R%©uJœ!ê—±)†‚qA!] [̣̉PMb3‹£™‡Ü¦%“á¶³D6]º¢µ( }„Ôf÷îbƯ¦à¢Ànñ{ ̉Øfµ>´Úăæ:~¡è樂il—+2¸Oh¸©~shăÛº¼̣#n’lœ(£ÙWŸ˜baJî©cưJ‹hö„ó1äƯÏqY˜)₫@}\Œ®±¦«65đ×Ôço©í² )ä£ÂÙŸ’ƒn÷MẠ̈f¦GŸWx|77¤gr¿n]|ào—AB°̃…1e‹Ü®ơ$Ơ†ÁÊg%æÛÁ̃EoK;DĂq}G2°ƒ#LÙ6w—j­̃ÔóÎÊN…ùÆ·-iÓ%Α ­ĂàBÏ•C¹Üo¼ƯDLBà?Á[y6o9o`P9÷!£ÈŸÂ`Äăǯ· ¡Ă!³ªŸª›AÿĂ;Ô¡øfD[Ô_}37ˆ·Âó£']ñ^ CVJ¶FĂÆó2ÛÚÂ$W&Ù ‰†¡oï¢2‡ˆ)f"²ÈÑ©§â—N@•Á‰·'ĂºẢ”©¾sö—CMKxSÛMÁè×*W™dMñ—™@ª2ÿ¬Ó^>Ï–Wk‹X¤ƒ‚3r  yos5@ê~Èî&„̣î# ÆcÅ£«™K!N¶8¸’·isGVéS0§´ÿTÀjk.pÊö‘xѬ’e¾̃kÿ8i£I´åvdq̣Rđqù5‡mêlÊ¡ÈCm¡²́v7~ö ³O‚”·£™ó'²9aA×$é#·ÜöỤ̈Ơ}èÊBï]£ú§̣}ê<Boü¶3“¦âS8ÿá °U–‚º₫û’)oÂ}Ù…j²PdÖj Å$Áeç̀ùßÄÀÎ÷‚¨$3`xú2Gá=̃ßåœs¤¯®2ä́X•Dèm·ÑWơuèc~)&ѵ|̣o'́ỡløêô₫H|V$<]çs8a„~ûĶۧđi®'?å|I& “&]ô¥6ÿ,tCöhÍÂÆøù0„j'äñÄ8Eơ³M§—»((ÈåáréqZ}T=Øm¾Zº4¡§³2 đc"GÓÜfÊŸÆC´>†'^ă×nVăæ̣¹àRº“Đ‘+ LÂdx¬́Yó*É~€Î挵\ÚBeüưp @b²ˆƯÇPk¡lO̓=ö°h N‘P­æ+å#Ơ C³¤¤;â¿}U¸lLÑn¬C^ÿú ‘b¬s(d„áÜɱ’¼$‚ÿ`Ö]‘̃—ŕ^ˉƠqÚĂ Ä”0W£o1T±‚xs©ÜĐNä!~ÍZœµ³û˜µÁ/Y]«p:¨Ÿ#ă[­Üÿ¥.¢đîf´¶§ộ~‚¸±ôđøKoÇ0j…í1ÊM=áCæ>`ô®́:T ç!úèXô£¯‡Œ<NLGĂ- f¦ÎG£@Ă8c:282¯rÂ;{Ñ"¯¤cñơR»Ä̃5…µ€VtÅg»́₫bß4dåK~be™· êDyºúÚ¡é±­̉wÜƠxL뱈r,.7Ă¡RH<"–m<öbĂ»AHæoÛªW¿Ǜí"\QËÂ+Av́ a:YW\ẻ"ŒÇe-ÔÓç6ˆbŒ̀Ï:îu”sQÉ̀¦ˆó.Û9Cûp;×cü”~ ä‹¸–s~møJSi!mĐ?ØØà_ë©rc(¿÷u·oGçQ'Lb"™ü¾5…Kؼ…›$}=kÛ½-I{âÀá[ä1ûsơ½FĐ—ûÆ?ÏóWª;if<å†0y‘‘bµg †À«äOœÆÜáfezä2u è`ªëÛ܇M!>ª7Gb½¼ Aœ'¿{ªßéæ'`÷Mô–ÚƠá¸Ơ‚]U'’ÏÛ-Í=¡ơĂ¢̀)5ÑëAW¸âÇÎSóˆØn‘¬æü,L«uèÈ¿T#Ëơ#"E‚úƒYô7ù‡_.~l1ø>ª¢´r§®°Ú;qØV́n1j́ÙNœ‰&¾$₫gI'lO½Üø&¢~aAy™Å Ú‹Ê\ÇÒhÔF|¤3‹W]=‰e$íàØW<1²à7̉ ©o“F^~̉§%9¸ă´¦I›Đ_¦e½qïÊ#’ñˆwÅÙ‚1m"A8Ǜà4-¹Eº#È·„ª O±è Tw^+ä:HB́._¤ hGå‘ üGvZéáÉPºẃ¤ÛÜc½,Xx…JÉIXOJ¾¨NWÉ6#©» ‰Éj´Ä,-º_c¬¿5«uظÛRøV[Ư³89^v!¨z‚Í9;́Ë<ªF6dº{_g…\#×®8âÊF&å&wí•ԵƗØ$Hưt»S8đ#à₫ÅÅFƠ¤Ü°̀“;gºdO«‹×AöÏ{#=é->-1–°R|áTHùªˆ.Ë(ô³”"ûŒ5Ấ]†ïªLÙxȰwu€™!‹¸ífSº1tpú²j́M)-{³pE¿5·LÈ–àj÷¬cSaC EN]‡A‡-¬¢²¼†yóüpHÜíï̉ưB‹Ï«MgS‘ yhùUû6cú’<˜-Ây«FÆ‘J̀F0¥¨ÇÓ{'llVe®đ4̀zƒ"û¾üâ%Û`úÆÎ\ûKÚ7È¡Z­ â£ÁÀ”qn£TÏ£tŒÊä ÅjwH,K®N0yÈøÇ˜®gF{è{ïªF.³MzRJåñÓ}Lä³éç̃‡:´z,Y_³'ơ-Åú&ªu; £_VR?–£«?.;È.k~„ƯĐ·ZÖ°ư«g¸­ÛdxnNTóù5…³¨¶ŒZ‰ÇU1’–^’Ï=!zœ<²u¡â¢<`7ٸćF)ΨÁé®nz{}qQNnâ²cå$Ä0H k?N*NtD7ßRù)Ù»}* À+æØÈÓԛܡg*4 39-£p½­L`=ejö[Yè3{®ơ9¨Èv?¿ÛlƯÆ™ô^₫!đˆ8v•6:ûy Œw̉æ+^SyI°ksæx…×ÉlÅræ9@_+ ¯y~QèóÖ> d.úM©J‘XR‹±®øØpv´rî©zP üKĂIà’q)Vg|!¯Ơ>ç¶ ºÄ‹̉]=) µ‡B?22ø!F½5yê ˜–{ƒ—â´‰¹{v[ÑĂR¸ lMxÚ\s§´^°yØ÷Alªär•^ÏÖF*Y ¼¬̀·³¢x+AÔ‰ôüõ|Áz~€,ÓG¡e¨9ưÆ‚cY[÷/•_kÏf1 z$Á®èí̃süs–`¦Å¼iµ'ÚHê<ç>ŸQ–>éTÉqØ`»´]RS8Óg»f½DqÓ†̉nÛQ}TĐT]D̃WàN¦­n°¸ l _ù™8•ØLÎÙÛùfˆD“̀~¡ÛC@ư‚«8~̀ÇMT{cM`—‰TAÖD]ƠƒÅ̃æ‰5H( ç øqP ơ#*ÿ̀>aË Ó¥}Œ/Ï ]Ñg€W2y¨kb’gnKlßU`]ëƯYƒ–Ë<{’_?ZĐ‘¿₫Œ’èËœ'Y ̉wó”KÊ×ù̀Á‘û/ưkDÈç‘g «=ªËû1ZU+À'̣ *%°HjPp ]cQØ. &ă-1 ¨„̉1<ϵ8±x)-ʘlåÙe`œ1 ă«û3…1 ÚưŸƒtkZ€{ ç&/ë̉á7Í¥´—8‹^™:ïON–0FGĂ} ;åQLqü«X.ÄdˆÊ¥¢·«j4ü“¬aM ?µ~NfúÎÑX·‰ÂP 0Ç·ÉwF*_oô Ẁ;‘ª|p±w†>.oàx̉xø‰ô+]ßAà¯ü¥S-»±“Êè×óK Ơ¡:>ÉbtÉ%ÊđÀ³»ƒêQGË}’Âw‰v‹™Ly‡œ̣1S¸6ªÊ¡Ä›“[¨oùξ·–Ûå-˜] ¦ˆ´ª{ü³ÛPé´gÍzo,Ÿç;ƯµJ¾«`î¢ƠÈGå"ϳà‚tÖß@vAâËæ]¤+UÁ½w)=ËTj̀S˜3P­Ư£äÈ^K>l é‡F¬”TAθI‚#|v’n”˹Á‚·ÜƯ+7n—¸₫Rǘ;>¦ŸÜåÍ€äN_$™=6ăC_jƠÙ±ët£Ö Ma®D‰Lûzûb}Á¶†˜N&à’O«J§l®™ª† „Kk÷hhS‚°À²8§Á*5ûNÚÀ€i+¿uƯGä[Gø •ơ+ă@ỵâFĐ̀9û–ï₫œnÄ\ —oMÁ$íÄ‘2ŒËÓÔÍÇjü±™̣%9(G&¹m)á@èCNûRÊ-ÀVd¡À¡ô…ËăÂéÓj°‹—áư¹ïØ0ï¢ëv́œéçqbk¤ÔƯ…:0Ë“·ag”'2ȾÇLjqư¹¸4cóaûÈg»º°Í€ÑwÎ͹˜đûM÷¿î—/P40Ö Ï‚ Öb²ñd–ùíë?Ù ©‡hơÉñ:—  äÜU›ë¡A$’̉×;Ú ̀₫L÷Ä´+yôñQîv÷º[Fh̃'~[h N¹náÉR̉F:øµè[7"oQ̃#\gU½…ƒÚZ.̉œ•,­̃_©F[ <;ÿ‹?¢gzŸ7{€ÄAñÆ‘ƒMvé5ÎKy2OM1U¼©$ë-TÔµh·Í3æˆñŸBOט½9¿qªƒëƯơSX₫E=¬ú3 µéơ…p1$‹ —#oaˆƠu5Â8²f··­C₫èÖfúº7ÉVψø[zócÀØéq{{u+M6×[lm|=§3d+ºR{ï—kÓªSÙj„¬ïi-™I´ê©¯ă3ÛÇUWØüQp¸¥{Êg‹%O=ábRR³ Ñ „Qi„o+ÄQyb³68Ù­Z™âѲ‘F2ô&¶&¡¹Ă‚i­yÛi¥Ñ_äß¡5Û˜etª…`Ñ“.긻ùHĐª>”ÓCß?5Åä| ¨ñd¶&(́Y D·̀ë’&êÅ-Ƀ8nÎ)CÆIÓDĐĐơ)r$¨™,WˉäĐ£Ôº^:QΈ?D„V¼‰‚C­ă ¾ÀăÓdôI?!H)QÑ1Å’X Ó6T›ïLÊ,¾ă$ơ¹Ç&ÀR‰úV&»˜=#’nLŒu ÁM7Ip'²nø#Û~4ZD.º̃ÉîÚØÏ‡zT–ÑÇ Wxc'7¯5üq₫¦ÆÄæ©t]p.VÆÏéAŦ„ÔQ¡B@n= C²ûØGdÚÜ¥ºT:w"ƯH"V´0»3¶|ÁñÁơØ‘ĂƒØfáØ0Ͷ‚—ë(nq¶jî^‹•„ÛZ¥+—5Û Ø*±Î_Íîª Ú÷Ö÷ë&¨VXÛ¨Iä  ëB©ísp[ 4>E¨₫€"Ÿ&¾ư[èư xSb‡†ÉƯ×säÛ‚¢?öa1 •³ç’§ 4bazˆ…>ỶDG³É1æc7•zÈt•T jŸ· Ă}Kúäˆl3ØÄr‰¥Áøëó‡Ÿ₫Fü’J÷aº]drôºç²0vh¹\ïƯLˆ€½Åăxb—hm¸ƠŤSû8/€…³ùâH”I9’¬!̀g*x!²¥Èg™@¡ñò̉”,çr™’‘ >a‡ 'Ζo&ñ—]ئ'EünéÛ¤Í,+ƯÖ‹Ưđ¯₫¦SèYL¡eLQÂx¶EûPzYÅ9e_tc»́Û›÷«®w?6ä}—ơ3¹8ªJ“ẵ'r¥­]ÇAïè¼oó§Æ>´ Û4ă,1Ăq²#éĐcGâS/ºv†—„ƒ£­ÉÈ>.æ̀+Oåt,B£ơ¯^¸B¥ê+§¦^—Úă)^üÅwƒ.ÓNTx%CÖư‚ö—¼¶· .îo¾¦`—WJ;̣£́ß…$e¶-ƠÚ|%åçç·Ê‰Ü+³6Ù&ëơ{¢Ù®œKYK͇ºèHĂ´²»©ĐS,‘yZN Ó¦ÚÏ‘×>£¶åB½©¦€rÿ'o'~`.8‘7xn¼êABItHùc«—9Œùäí%ƯǸR!$,V́Tåö¥‹PSŒöÈ&¥ÊµÈ‘¦åöF́_²–̣Úư Ơ;W¡X%Ö‚ª°È,n\íê¸Oü“Ób>r Ơµ¹•G’̃Zp̉DÙ‹öl>EÏ£ơ‡ _(®:ŸLf”»œÖ=}vx‹kQÅ^µo¸¥3ßăẮ}³ÑƠyBH2-j^{É„';á(8 =¥‰¯ÂÄ¥¨À!1¡?Çvœ~¶E­ÑÙÉCS°¼ûZr0FÿZ0‹U;*éöú́oXÂEG~Đn†MŸiÈ;dv:ˆ‚¡(Ju§<¯ŒR r"¥¼ËöµU ŸóE†8× +k¨xûÀîĐÓ”̣¡áàơăW¥́®è›/«VÛº_I„°®0zc÷ưRñùªÁÓŸ¦y²½ªX0µW _æÍJ:¼Fek)$Ú™ôƧ½Á ¹ \Q°°_]£‘¾ O@ëÀ[̃ú¢]²„tDưDÿÉW.Đđ­2vÏɑ߯₫d–XĐ=Ûđë=vWHnJÈ,fH2aü“Ébˆs¾ÈÑ3ƒâKÑW%VÛl˜”Ÿ̉ö]Ç+GḮ6ñ¸{²‚đ¹ÑădùùĂ:T<̣SâÊÔŸI€î5#ùç 8Cï7®Œ'Ơ‰ŸiÉ́w>¼ÓĐÔˆTÚ./Ơ‡Âe¯Æ/®>êê„ÆW'ç~_ä?°qPD¾ÄëâøïÆÜDËÿ ẹ̀Âu„w†‘îo¤¬3v>-’d„VJzy‰µ¡"qk ²‹™Æ8!8€Î>â•§‰£¸®3¹¡Ñ̀élFµÑu; /̉+Æ Kü¶ˆ!æñ¼×zQ<:×¾Êb[…nßTưŒ₫®èĂƠ{°Î¯Ïâ”Å@g¿§ ¦húï;ܾû®†'Ê=êM¿Ÿ6Ñôn¿Ó1÷_7ˆüL¡w&‘;¨.J{'7_ß7uøñGwظó}%’‘ xnèQâS%×FŸy'l£ ¥ÙóÓ›Ó au£́Ơ.“d•¹9!i»1zƠF ‚â”ñyO3ǵ>T·ès™‹?Œ:¼OăÇÚ´B©/{±à(àH‡­´²Ư8Œ?#sBVWơÚÜhÉÈά™P[£b@ê^º̉nÚØ|xkW„4~*¨_ }­đÎd+¨â{ç+¦RÙQÿRHÁ̀'ëB¾û¥K(ºcÆâw÷ơ,—ñ^Đ:¡|«‚ŸÅ·¥Ø*QƯó̀HƠSĐ’ù7„TCü‚Ɔ• uœ-́QL5™7f1 /3cåCßÏ/1æ­¦fª”87äÛ™Ÿ“ËhV\8Aiằ‹Đ³Ñ4ûÜ‹2*ÚåÑm®Å;ßUË9ª'~êtâ|Ê‹MDí$ölA¶¼ ù{è‹éÓH: ´—¬®”6\M¤óä[Á7RPõuµÇèû«\ÿ1R‡ª˜ ưÑ2Ø‘ÉN²ư*Áa·ỘD½S› p…ÿ8öw(w;Ô9˜î,\¼9—úûñx”¾±ÛIC­…9ä–#́`¯KÇtđ˜ŒùàÓôMÙ ÄMdUx‘=7f4 ₫¢aŸ};»ß{aÂN%…¶oqvç×|Ư ¯ëÙ<`ŒéûÆBüH- 5Z¢«å z¤“ÍûZ‹yB ßë¸æŒ [`[Dd,Ö́@£îm4I}‚X[¡P¡ ¸aç~묄öX²EÅwî”ÊÏm¿Bơs!;CÉÂÈ­§S¾´_¿«¦÷̃ÈôÓU”áAÆÑ$ÛÎ~«̣El¾‡ó±€ÙQăFñA~ñßkü9]!‡vƯÛpV óĐÂĐ*Ơ¡ƒ™Ëˆ«ù¨C2«ñxæ+Æ$CèY@§R­vœÊlx¿lÈØ¯Æk ơ1€å3j­ ”8^ôׂ£Ö‘/ ÈËW— ¸¬ù;8´çªHß́0zp̀»̃À*Z¶J¹±ƠüJ -i“xqP´¿¾ùC ºÖÜúÀ©¨t9«H¢úÔơxæ “3ªtm4ûO.Ô~™~v¨^Ç/zöTe>z ´¼„X–WIJyÊåwÄßÚßûd‹ _…íjŸ̃L=¼z´«k]Ë-…Q̀(N<ñ:ü¢K±ÚWĺ’çä¸ƠÇÎt&ït–ê brĂx÷“¡÷F)QƠ&‚}“k™ÊbWơÓOà*±KËQ†b1ÚĐªàí+ï¼đ"ÜiÎw4TcúûO)å,Akß}¤³̉’TJBÂ^_µuy qçÙÇ\¼´9g’L Źªo(P‡!ơË(wt"5Öoä€?uR˜ƒo0ă÷p~. R•`gÑ~´P¤iJ˜†æ†§™,÷í¶iă‹ Ÿ üU)ª¸¨:íz™º:X;”‡̉ÿ¾÷& )ĐưŒµ1Ï,À;Ó°×n¤=xa“· y1ÿ¤ùư‹}fSoä5#r"́;¾% ßLä5èx¿o«XƯCÁÖ]‘ OS“ïŒÙpDñ1C杻û—H.•O%Ñàq%!Çù¦¹Ư—Aipf>¤ư|kÊ/‡S.ß\I­~¨$ïĂ"׆ªĐ°E/e"1rZ­₫HŸKK¦¤Áñx4f®^bS¿ÛYm²ÁI¢€B`,+¯ù%áßhŸ•ö$~¨*bÈme$ ±ÇÀ̃Ù_ư„ÎÏưy•|µxoà0R¶&'lt“áV₫ă·¸oºPxưUḛà ¸BO|n!Î’‘,X„̣ƯBL+¾¢u’8/N0Ẹ́hĐL·e.¹Â˜cÍ–hXËMï`ר·Ưc÷ª‹éạ́µVN{ÂÜ.J¹ŒglrƠ]¼`\ä²ü3 ĐÉ]c©@¿y¶Q́×Znüi¬,Úes—G6;ôËñÑ+’}êÎÏÛg›'î̉))Í«.mc«H´reö»„^Naç­¡/áú[|I8¢–øÎ”vOë_ZœĂ«p^¢)Yfyo¾¯üvk!)™B<ăcŒ¾ËE-Z C»m¬¥ PƯ)i ¶F̀“¢†û¡_,¹)±í9C©ß Î…½¥nA« [2À¦%2ejåëѹ–4ÿ—båÍ ÈÜÎIù¹Æ̉"A\>UÖwĂ%u¡BJ´́Êí‰î‚lêèÂcÈŸ=½©å:Sđ´ÏÅKÓ<©^DR?/ƠAü ßD]gK@t4ø¦—×ÜîëĂ«¨:ôăD WÓ’YhWÆ–;ë’÷›í3XBă@¥¢‘ïzWÊ€† qœ;ÍQ~ŸoD¡ßÑĂ>„Lÿr)±È´éị̂O¹¢₫:Ï4i¯̃ÅJâJÙŸơ«ôVú¿ÂÏôÅ‹½%uÅÊü’]wrênó(ÙÑ.̃"÷W²0ĐÉĂb>Ơ€¤DB*ÎP¸µÆs¨ơ(ôa[̀f=Øny°s?,‡¢N~La3~j2¦ëÈr1ÊW}‰uíÔ oy¹ùL|ÉNăQ Ë/üƃ?­l~0Rz“⡤:RÇRâ/™æ$e"<–ơ‹½V?âĂsy”/såj„ ’k«©ÀSèÆ-?€₫nZLŒ¬Ø- ¸2é_B~{ºH÷NSx«µ?ˆ/Ơ’tỀÇÄúS•Ö÷XûL²c%(Ï/æ1÷n´Á]Ä%ë)³¼ª20?K;"Ô:µb73<§Ñ©È‹YB6Ư"+Å»¢Í²Đ=ô°nŒÔư 5pdßüp¶áu3ÿđ>@á[́E"Yd5nµÀ@6¼åÂy×xoºwj V́;)˜Ơä¸TGÏSl n»Çßưyj}¾‡)°Ú×±ÁP†î ¹O³Wü43üu,öăêĂüüJ'¹`=bBÙC…ÊÙÜ"̉|»í8®¸>ƨø±Z̃z ‰WP!*Xû­S.|«ŒÇ“œ̃'̉Åui]ˆ0ÍÏm)t]›6®xȨ…ƆưÖ«8äåRRùq#́Ü·<í̃đ¬ˆưH`<äÖ|É÷üHĐà¢ư+úû‰_Å>Åñ¿®Ÿ¨2׺é‰H`™PÔ_/.LVñ… k…N“qeÁ·îq ăÛv‡"ñ|&à⇻ßƠú̉Ù. ÂJŒt¸«F¡.£}¶4Jc¿°s?₫Æ|ÓEoĐ/Á»C‘¦Ÿ%™VH &C¤˜ÿXcyŒ‚A_œ\uOÇ]¥Ä©,UzQ©%̣×ióX_-@äz7%t‡)¼Û†ÂÅé8h! cäÖ6›Q ̃ö:–K.¡7ÑtN'^̣æĐg£`VW@);IsÈăf¹H]£æ¼́EæơCXè±Ô¨L1gçÚˆư5âÜ">XPèˆbJû\Ăé3ñ9ùŒÏ¦µEc™ä~êTá‘ÆäĂë™î»+z`¿^œGc’+™œ₫̀8hỐ{Ă{«29¾ âÄ8 Á}wă9öơôƠHÚW6z×*û`º!J{ëgyKÔÏË=9á0%VRgĂDt´µ¸R]ê°º ‘ Ë!`¯k̀.ê ’̃÷ߨÙêÓßâ·'Íă·¦ºjÎ1ƯËù™SnÚ7YoZÛSábxÂÏßÔ:j˜¤‘³¶b¼ ‚»wŸ¢”Đ×Üx®•‚äYµy„±!µ§†”#W›@R‰€Å r”—”ÙeW”·ÍA›r̀“7ÖÇ}(:_â¯Â‘â´jiÁG¶](F?`Ëó£O¿ ¾ó¶ÛÍơ)p4öZ‘YuG€Ö„^‰Í¬;÷V÷Ñä@Ç\z}ô#₫¹³m•ȉùüùyĐø O•$7ó«ĂBQœ;V†Ù;öM·jsBY\ÛbsƠ4…Æ ­³§ Û©dñÆV²à©dró>Gy¹Q!óÈWĸ5Đ7‡‚- Î=¶ê?̀©IFÊcP½< ‹}î“€3¿%€Ù7`é€bZUÉw•µ ơc:Oyú^«oëú.áX‰™h¸h55¾$ẫ3w¬4KNI?tíVí°Ù¦kH x%{äהơºùVGwª{Ñư‰>Ú“²7ơ—²Û‡!ŃkÊóIH%ߣƒÑ×đ¤–ɨ®2ưWçÛF0q¶ó„¨÷4 á›Äû <(/öËÔ£+óƠuAÍçay8£‰fĐŸ8<"”Hï¾|ûÚÿNÉoÊÎ_#0]păxÊÇf­‘üÆŸ¾.DœXVÊB )œ8H”˜áyŸÆ±êÔ¾ Ö¿ÓOÀ³]dº–~8‚¼f9…WI¢~6đP¤oúY‹‡ÉŸF̃¨›¹±Fđu–#î²L\̣.©û퇅…9¥­!KÖ“!/NVơ{v FÅÙ V€Ói  mËÈïÉ‹Ô1Ôjµuäîܥȣj±˜Ÿ:+¥àhpâơ"ơPÉÉvâb›GÖ]Å{Á̃m­0'p5‚V·§Ă)Ơû>•ª$¼>øƠVµó9}%X́ûypX1WÈ{°q¸̃¢ˆ0›Èư¸Ÿ÷¹i3#4aù£~p™ZÍKå`¹Úä7 Ùé%́×ujW¿ ) ”̉ẫđá ÷ÛJÙ'3ZÊÂIG‘A˜Iúúô ’J0÷´µ®ÓIÛÁ‘cö}¡Ë›ÙU]6Ó5»#‰[RÏÅ¢ÿ2¸ăñ Sơ‹Á¿•íÊØ¹†C"‘‘ă0A+ÿ(Lă™føalÚ°0ÔƒS^7â@¸̣€éôP’ŒÚ™ˆb¯OÔẸĂ«i?«ø•…ûæu]käàÔar&̣ÏTeƯØÄ–Ơ K¤ÿîƠ.çíÎ$ÿ÷¥ÍB"G2jß¹­ƒÛ/ߟ¬q%U¦pœ$¤̣浆ñ&•q39¿ Çx_°’¦¦Ä%¨’D´­´“ ëø†£óT́¿3̀£½Ö³Geɦ{ô*¾Ê!È‚ï_o0JÏƯ™ó+#3Ô=˜ x-(ưựûçIêçHơIb‡¿ø1©Đú„u÷i_éX_"¡~đ3­è̃YüyṼỴδq©[ÚŬ¬[¹ Ô\I×8Ís ¬/mÉ¿%dLû#̣Aä#5¿̉Li2ÉTj·1¬&µ†g²G“BuùPKF€!e£®¢óц̀}T^‰Áf>;ÛL?´?giôôƒ¢bÊXŸd?@á>dª»1w Ôă‘zKˆoëåó'fŒbË‚.n|ñđ’é»X…®*‡•ë­µÖt̃caÊØ„D夯µkp–ù–,xX°_#N¸l§BÍp÷h‚1‘s7?®·²:5KjĐ{Úkơ™§ ̀q]~˜—7x'ëe넇Aâ—Äú¬ä‚o$¥Êôш`Ê0[†÷‘đÁh# %É’ƒU/NG±ñR×CUMp[Ĩ‹̉Ëtyp^Pal/N Úxc¨Ü%JP&ƒë5™«éỔ®¨œ¾rGuƒå†"&œuÈ^ÅlV}èưdغ‰fVd]4Td„ºéNz˜Ú±WVQ£æeúZ^,Ëdt[[Îû«†» ¾)ëH<¾KóŸí`ƒÓ̀¥ưÜ?n1LNÀuTë'±. ”L¶éh» …êbºưP謟ÖÛêLô$VeZXÙKöªVÊ:lá`)a¾cf,¶÷åo]¨)K‚÷3sÈC ¾“óûi¾׌| aơ¨5[¸É¹êè æî+Đa²¬=v›²k„ư <ăŒđËjh\Q{»ơIä×uw$*ÆÎÉ9urQ=aª₫éêIWÊ 8Ù¯ºêêÎÜNƠ'øt?ºCmœCưô~N½‘ØÄ)ø=wỠ `Ö8̀›ˆ|&êx~rxI@"HĂö›>÷e†‹?#Oﬧœâ$ó§¡=ßÉ©̣ đùª^Hkt½¦ f=ivlèBê˜MBPÜc_P̣˜ÿº&Œm™j†̀ç‰aO”­Sơá½ÎËà^"‡̃ÊèCÎơ­9N©ñöDÇMß‹eîJ+)“Vqí#6¿–̃üÀ{ù̉rơ"z¥«Ẹ̀ûơ${^-b¨r9ó &§~iR@ïÍn³¦8w6ƒŸî}¤ËÙđÚëé“”‡ï»G}mSפ8m›‰§Â¦¹² ̉K¡±é&< ¦v¾xm kWÚ C1ÊÛ "µiyc₫|̣æ̉ơᤀÚ÷!Diöϲè[ê£Ă3”5Y‡Ó²ÂÆÙ`¤0³AÁ´öáụ̀̀™ñ)bŸ YQ #o?ÙV÷AØ/¼¾›[™ß—ÏwÊz KŒíÖ"@bj’Ô ̀Vđ HÅDăæî¯K¤_*ñÜå‚j¿ö7^Îÿ|L':ñ±ï´›ƒ©pb:*¦¥́ö˜7›ƒt…S V¶4̣ư₫jß™á̉?l/&F„5Z!¤¾¥Ñùë̃¼-¼‰3mrÍ ni~>«,è¸@T3­¶ûxXŒ!0‚úÅ$#mÚ0– Ñ­ƒ"Í\0vö1‚7îI]đu—Œ9›4N³vŸß Y¸º°Æp°§lÜ¡D 8©ú‹«ôº„±)[Tÿ.đÇN!åûǂ%S±Q¬G₫å*B\ÊtƯ®Ù±HÇëc¬¹uÛsV6‰qM¬ŸÙ_ÊDĐ Û„¸êt³ '8/BFó tôÉ"\O¤ưÚGH\ú¹xƒ$ø"†“oầó̃¼Ođ¶¤wüHƯ1Ü³Đ¤êØ]¥đä3»+Gض|4ưq»ç·`ƒ÷á-ܸÔó˜hro6}9ôÉ)Ø*¢RåFÀXÇ~s̉Pß Ơ6qÜ‘a cET¨=¨)z4îơµ\=%×¶ «_p‰HêAɼ°Ùw¾ÀøæÄî‘]˜_ 蜾Ó™yv” v¤-[‹£(›!« (û’‹oDÖÔđ6œË'%ºaÆxñàf*Y¯Ô­lɶėG[.³nT n$ơ₫÷S`Z¬ñC…bÎB»$äâ‘/8Ó”O(]&>ư–/ô#ûxï c‰ù<0uŸæƒÓ/r”Ăhè …cÑÁI:̀†¢E›G¤dÂó¬Ër,¯Ø<û=C‚JÓU•N²£Çl?G°3 .ë2“ÆØ»(Ưl ª ¾ăÖß·vJư ªWwKÙ8^×hơ˜dÀƠèÄÑ‹e¨Ftvز0?Ñÿ°CH#½̉΢¯ÀeƯfsÙlF€ö‹\³œå]ÚåuzR׈„Zba¨>@;_C¼Z§r ù+:à§ÀGÆ’îÈƠ IȤ$hÆÊK ưnIØJr´vĂkM¦2£º¯ho1 L눹`:ƯhéyEëSH/gÙÈj?(¶dä÷íEúYÿÔYÁ¨„Ûÿ?ñù ‘Y±”ÂdÓ„¢xF”/·€;Q^r¸Ièëîj-è.GX†£J›¸ØˆÂmƠÇi˜”l/[Eÿ$-¤““cËÛWÛq'-ñHŸÁ"M¨j—iT–40¡G’Q\{ºÚRó ³×ÇI-U(̣u¤>ûñµp¢N9½Y’ï~ŸM—d-¥ÁăuDvŒV5lá°¤AëzYÉrÈ$²Æä'IÂëĂF'¢Y ¦Đíf´ö!'–Ü»,»G~—¥ñW8 Ê>@ÿ"ä•ϸΔƒÁmÉˆæ’ ]½3âCB2QÛ«Ä!Â~å:oUg/ze#́}¥É»—§)cj‹‰n5 ‘î7Âçz­¢6ˆFá}ÅT#9.gÄ%ßÁ“Đ[^Z\Đ–×Í:v’h¸TU;g¹ơßËƠ*x©ÀklS˜/‚)Íó’ÑĂêă„Vé²ù†áNǤ>¢]2œ¨ƯÓO­o£7Ç•’'{<§©°^æ2Ă;¹Ñ .z ƒí© `Ⱥ| ợ•B¬ñưvöL- àz¥ïÆñÈIÚ/\ߺèk–|`eMí¤ˆ7̉ª€+d_µL±]Y™ĂĂĐT#ÖĐï=ôCßæPœøçs¾”̣¹‰¨Ïá½–²ÁuG8b Z¸ Ôfv[ÖHËV÷K1xú!¸OöU=₫Ç×8l$à$Oàp.1’¦· Ènæ éøÂ Ç E+Ç›¼,äŸeaéx*U*9Ne<ÑÚl_:ƒÀ.wGƠ ÔŸ À‡Z¯añÔóz;&9ÆÿøË~V ñ|ˆGö–̃};̉v؃ ån·<§€³’`D-BB¬” :ZêS ̉[˵/±xÈ'ƯĂUƒ=gw#k'µÖF¬#:5®êÔ}üL•ź¢eúÉ’HÎ̀ç× =º#\ó>=ơrêE₫¹§q(æåQÍ|µÓxÍ5̀Kà%°A(©M¨²`Söc÷I ü> ™-øuBCm̉¸S›lr½1!I%ÿH+Vß§œœiJ.¿R®·.ÚÂŒ„ç» ’¡ÛiøÀ°zùd­aôn­†vMÔ ôßôFFôU%äia|K3¤§v1 »Xđ:Wàt3QÏ}Á ȯw«rÏÖUđ<á¾̓-yuÅ’₫`‚^$ ˜D+U„ôïÿđgnZ/ûOz–H &Å@v–›±ḷ‚₫„È ‘›̀“²x"C¸1­H) ââL‡‹¾ªÑ»Đe”»œ8{é"—¸Öư½Dó Ơ´½*ÿđù¼¨M5Bsu˜Íb̉q rF6ˆ“í-§ñCJóñSù̃N,ưĐKYȲ†EcDúN˜„0©–ÚÍuÇ–UXO4? hRg÷u·z’d;t+™'*ILJæ×AëïnI0©™SÖ·ßôÍÀܽK{¹S×i"2廬ä£(÷‹©̀Đ0‘;ø¾ă·©"ĐG¹@UÁ“̃P$Í~x T$ÚDRcH$Ÿ*ƒu` Í‚*Ov燛$\öçƒơß¶o-ˆRưøÁĐ ûo‘åû°uÀT­\ôPÙ¾¼ƒ?h•ÅÚ9átwäxŒỘŒƒñ-|x¿±7ôâIƯnK³§¡¯ÊÇƠ q7 =cïw9ë—o‚u.²₫‡b4‘ú\Ø”̃º°2E±å€–1]xÓçIȇF̉I>FÛ%©¶7F´œæÑº'¢×m/ƒRë¶C¬VªV̀°ÀÔç¤`ûÉï;¿,<£Ä‚¨y¹Ü‘è°ëBÛÄ‹×Ké$₫©Ùd#|f„O¬"Wf₫(Çu'Đ”@p¤¿è\·†•_Ê üí±:ë|‡yf)‡“%̉M²}¦Çß\Đç@Mö#׆æơy0M ÀZg‘"ŨpTy9"–Œ»Œ³€Ñơ'«?%,t¥‚(ß‘₫d›I)Mw¶™£l»uÔ‚¬…ÇÂNp¬¸™»¦ÿƒ9üÁ÷Ƴ å¼>vKÊy‰œ"îÉ6nổNăºirôÔêQ$–áIzV,$½Å&À±öb‚>̉¦¶Đˆ‡ÙZ}‘eỠÎäGSÆjeä‘=çÖ˜̃xư UÀ„ÀÆÔ•‹̉ÂkÑå% ve™% ̀ẸÑ»Z‚“_öBç&䂇y*r„#²Üˆ‹e¥Úmó½:O Ö@9ÄÄÍq=—"XTgk0“ĐúÅ,¦Ï÷¦Tûz\Á´£×%Ëúlir6) ÏÊ‚L% yn endstream endobj 1059 0 obj << /Length1 2127 /Length2 13081 /Length3 0 /Length 14352 /Filter /FlateDecode >> stream xÚ»TÚ¨»»”´¸»»»»Ü»ww·¢Å—;Å)N±ẫ—#÷ôÜûÿk½·X ̣́Ù3{f'@C¡¦É,nåd”q»3³³° $•µ´øllœ,ll(44Z wàßb «È ,đ/IW ¹;D&eî±Sv<́œvv^66ÿ \Ræ +€2 @Á tC¡‘tröqÙØºCÂüç!€Î’ÀÎÏÏËô§;@Üè ²4”ÍƯmˆ–æM'KĐƯç¿– ²uww`eợ̣b1wtcqrµ¡gxÜm@7 «'Đ đGÂsGà_™± Đ´lAnÉ5¬Ư½̀]ˆÀd »A<<ÀV@W$8@S^  ê ÿe¬ô—àïÚØYØÿYîoï?ÿt6·´trt6û€À6k *£ÄâîíÎ0[ưahîàæñ7÷49˜[@ ₫ܹ9@F\`IđïôÜ,]AÎîn,n ‡?RdưcH•¥ÁV’N@°»Êû“¹-!e÷aưëdíÁN^`ß¿Á¶²₫# +gVm0ÈÅ(/ơ· D„̣[ftp³±±ñq²€. ·¥-ëËkù8ÿT₫)†dàïë́ä °†$ôY!?P|Ừ=wW ¿ï¿ÿM(́́+¥;Àh£ü^"ZÿÅĂwy Ù ½Ç`ûăëŸGÆö²r;øü6ÿó|Y¥Ơe$euÿÊø„„“7À—™À̀ÁÉ àæâđđóüÿ{5sĐß›`ûí)¶vđÿµWH‘₫³_Ï¿ŸîïÑ ü÷Z*Nè~·¸7›%äûÿs£ÿẹ́ÿ×̣߬kñÿƯŒ‡ƒĂŸjº?ơÿµ¹#ÈÁçoHËz¸CÚ_Ù 2àÿ5Ơ₫5²Ê@+‡ăÿjåƯÍ!c ¶qø§Œ 77ĐJ äniûgcü%Ö₫cÄ@` “è;À̀ÎÆö?:È\YÚCî 7H?₫©BÆæ¿#Jƒ-¬₫˜/n€¹««¹ ¤8¸¹¾́A´zÿÙÁV°“;ÄÉÎ`íạ̈Ç̣pXÅÿưE<V‰ßÄ `•üMüöú‡xÙ¬2¿‰À*û›8¬r¿‰À*ÿ› ”~$‚̣oâ°ªü&H<ƠˆOí7A"hü&HÍßÄ`ƠúMü´$îo‚DĐÿ‡ø!:óßÙ‹Åo‚XZ₫CÜ¥“äÈ₫#áâúCâèøÛÿ³dµúB*üB°₫B2°ùB–³ưBrư !á₫…½9₫FvH\đ¿×é_‰ëü{Û[gÈƯvZ»ÿ–²ÿ-ưkrÿCNÎ2¯N¿³â‡ˆ\<œÜÿåÏÉÿ·ô¿ưÙÙ!Y¹₫ !Y¹ư®)ÄÉ èúŸºBÎÄÍÁÜí_Å`‡Äü½(ä>au·u₫«´́!¤ZÿBH¯ßÈñ÷ùÿkª,=\!ù»ÿyíAFî?üçSè ´Dù¶àd)f×öñ®AœÔ‹ywBx–fW7“Ù÷›k·ÇbưûÜ ×ñ´‘¬Ơmiºk±ẹgß-ˆ‘)ê]~O¦IÓ»](KSŸ'Kˆ7‘!¿bÖÛó{vñÓ ¶‡í€îU )tñàĂP+ƽóú$ëƯbjb"2Økœ±iZ_‰ƒtÂEßỆØ áÅ|6z¨%pñ¹„•É k³́"cÀE¹Å4o3@åÖ!ôÅ Ê æ:s‹Æ‰»íœS¥ưq| N­Ñ’ÿT›)UÿGc>¼RSïÍ~ăWFUñ~+¡µ<—“£ Q¾í†w© ăS«^íj} SSÊc]¹üO3è²rñ3–QÜ₫p'Ó!ÀLHU^–ñ·ă*1· XgÁ•Å Á̃û^ƧÍS€e¥rN ½6€Á±,¿&©˜‹‘؉º†\»%TÚ2U¡îÉV%éÿ+¢Km—vÉ,ÿäƯÍrU¦ñz†¦?«yFEW)AÍ!åđ ù Ÿ´ºH–`.ɇYÄüƠƯ›nC₫Q̉2ÊR{Ów³ÔPÓ³„ó™Ó6C—Hh#ñ̃•³:ʶÇsJÔœj0™+'x3ß|º0¸skñ˜z(§xßDíw2 œH—† Á5@ÿ=¬°́úY=nÁçJm&Ó·ƒ´^ÁÚ˜÷àzsụ1|ínÀ8(E@âúvW̃ˆ: Cx.©¸å(h2*´­8>“àÛ(̃Ưpîp/ÅÎQzS£z_‹&œ©̉„Ï̃W†n * A+<Ÿ~tO–NïZƯƠ ÂÉưËhEĂ™Ăº»«:”ĐƠŸèMZ¹̀¶ví™sp}ÉH MGc–C³Å̃¤÷S6¯í‰àسMJ ̉'*[hc99mbrîy9rÜÂơÅ;KÄæÊÁcD $¸ÔÊ`l†D{­™AËK O2L+L±ÔxÈXÂqc/đ‘ë7.°°cÙ)»Å v”ê¿5›Đ0™ó!—TçḄé_ÆØEûđ…Ö—Ø#á\ƯFe¸̀Ó¡I­è¬½ª¡x¬¿å+pÿ“°¬ƒ·±gi'v B íC/¶¿uÛ2Hư£sËÀĐú´¢£úœ+‰À.qTvÅh¼OGÊ£YÀípŸ,².+́‹ïbÄ yovµº£»Â§`¦|-ƒ]sYÏ-c̃Z{Œù\·¯F$b6U|¶]ȸÜ$•Ô¶ÏÖ‰˜Óe¼MKgư–‚ê¹<ÜsÍÀăă”Á¥Î ¶ôHÁƒWƯƯ3óô+(±®@„mÀ! Á‡o ÀΣ¹ÆS»hàâWĂÖ>̃Ÿ„7̀&vÉĐÅß Ïđ–‰QHl¢ăøßaEsÖ¡- †&”ªê'I¾F¶¤Akl_ÊZñy¯ )\ơ₫(ơ„{ÆĐà™••úµJ$Dgoˆ³̉1ëW=?aÈy°®syă¶ĂBB?x1’œÓ¦°’÷³ÀWơ`¢~±Vµ€æc±ÙF©3#R7ͪdÁoA”P…úÚIôú7Î Đ(>¢c/ &’#×8÷̣è¨ådơ ƯgÍHĐĂ0V•ríh­ks'`½¿k"ä .Ǻ¯­öTâ±½ ç;6́ *OË‹8$[)Q?¯7't]U˧™|ÅWơëơ`1ù>­‚½ïqI’ëeav<ÍßÉ-̉Tz·d¥ ÖđéœíäêR/±ü|„̀ù¦ÎpÂưrm÷5üˆÇ¹ ÍRù…Ù›k6­À"48y_ḍp;á"â˜1¯˜%ä‘î²̃åh¤®Ñ!̃â»á̀ç„É•cÜ¡ûe߇r¼*̀ë‚ÎHQ¹–Yôû| ªơÖ¥Åz`¦˜æ×™£èjÙ0Ư ĐË̉ˆ±-Fډģ·/I&7Ù—ZëW̉=Qëơ=R¤î›ûoøÁ£>Eᯇ>r¶Ư‘w¸b£à^¾âc2:/R‹yÓ>û½>ûTÉ%À…s«À[)²™-Tœ35Pƒ'Ù8¢¶7Üïïñö`À/ïÖfÚ•™ [€¤đÀcú²ˆøjÓpPêÀH ¤w½jæE2Ë–đ:zD̃Öx¦AÅØg›àDZ²ƠöôË‹–H‚ ¥Ç™20¦l•j^VẠ́ Y&ïæµ~¾Sœ?R¯xfùîắVâ(ư„géá;K « ¨ÎưËû&S¬œ'?\ĂÚïx7sệ̀–øÔnïÓ7á4Îâ«°RFÇY=\t åeßÈOjVaê0g2KÆØj}ñ–Á@I{åNư#¤´ẉà4OăT9Ÿd‘ƒs/'xƯ!®Á¤Ä¾^éA ¦U‰œnyRipí×ëá˜Û|MW»G¬´Ÿ¨Ï¾°¿|  ¿m:©éoÙåb†D@ øø&ÜvAUµS]ÉYTϲ­jmk+¡&\†ÊéF'íÁØĐ×uQIû>—8–’,®¿ưƯ•¼CU¹‘{ËơW E¤lÍøÖT7“Óí ÁIq¶ŒXºûu[¶̃k)ÊûY ăÂpègjZtœÍEÏn}ÿ`œÂF íGy"M߬̃e៰U3Ljh29öaëoPÊ÷ƒ‘°,”Ÿ†¯vÜ NT‰̃2sjßQc<₫#Tc»&Ïû]ízưγª7u•÷¦ÅÎ4pˆg OÆ&ö€!"‹^xΙ&O£—Đ„„ {́ˆú}p̃Ă5ÇØ»P1ơà$(B\Ïiÿ9î·œ›KÙ¬Ÿ¯+ß7×·˜bF_ôNÉZŸCÊW'¥p¥†0•Ơ½;.ç~¼£)Zî0̃‘Γ‹±¬y¿û¬ñªåâ¡@‰•üM€‰%·mû'₫v²»",ñ}d$©ùŒ¬ÿn8ÑÁ¦kSJÀ-=Z±uüù{ÖRR¡gO¡‹E5\¿bñá'Yû̉1TD5ưºÏÓ³¯U+»º%4r_Ñ×U9Ơê5 k¾́ } É4RÍëñ–-Jñ ™Æˆ'4ØF0É·̃óÚ¾fˆôtj'`)œ&Øđ–ăw₫~æî„ƯÈOqB°ßÙ=“ÅÖ}±¥gjk†G1ÑѲñûY³¥yE1HÍZçy´Èæà3G¢X‹ J8’‹e€»±1ṃ9—ÜôơØzßÈ=UbZ€¡¹)áĂÈ3ơ½>ÑŸLٸܟ†~̃Î9d°y¥ÿBáTtAÑú~¿:‡S76hT =ûñíY|²Ă«êHc‹28çg›¼Ur^Y$Rún÷ï †›:ÑÓ*E=K/_TMÊ#3÷cçĐÉ`<Íbj<ͦ#1Q†¢ô mÛ+Ÿ3D\ {Bù¤́W*’ǛԖ{Kw4hјcx×ÔäåLZEÊ1“’ªkO:EÀá´»/0¼[%Ái¦ a¾̃¹èiËÔÇT ö¯‘Ơ¹¨>èƒLüÔó‹”&£,{i‰§äÀÉô«HÈ“•_ï‡ưlDƒDkè}₫?1räï:•'¯¿¤éΟ3`22Ô₫Ø`²Z¯ö±.ªtôœË1vG~„##5[ÆvjY"6NÑ•«Åi8ÙÔ‡]ó'|£¦bÖ©é!aM@Í”w6Ÿ6«t3·sÙ&üà…éØ̀æHªƒ„5·‹œîœ…¥¥ v'.áYT¦Ô Ư~ụ́qW*̃í«£¿(Ù§ülÓ́„=G°œÙ¶x¸ø"¶ăLv'1ÊÂj]ỵYq:ÔÁ©5xL{i%+vP2?§Ă¼Ä½5vuÿÓ^7Ô…çÊêâÆ²Ë+ij5Óoá!V÷í7”˜ZP’†€—^¿ÊnŒr¯™`v?^œ« Ù_¬CÈKuëâ(­ú¶xÔåÍ»og̣"0†¤Y¶„z4ó@¹÷ư¸óYô¸óŒ­ù¨c4SCpúf‚È 1ơÜ‘NJ]*ó¯“olƠlw¤Î—?h$e1÷„Ơwh^î½ ÛïE¾(ß/Ơä{„#¡¨Î`ú:I€Vă9©BøªÉö#Àl„RÑ|/y€{|€*ØÊ«ñP—Fß!º'€€P€µ%D¤̃ R8'Óï«BUè;sâÿU”×çÎ7Ó–X³-¼mÓ̀Ư œ˜à@]’VÑ ÁĂáëœB[¶Ï" hÚ5JzAFÏÆf¢gƒÖóë°œ©|M9}ó—5% ¢-†øF̉6xơ›½÷PÙ:LSÉ”Ơ4¦‰Ud‰Ja¥”\«eߪ<ƒ» ¾\SÀ£́Î>nè‹Ư)ÅDăùynt&1#¾›PaĐ'Hetß!²(Ño¿i‰!K&uôÙ`'¾ŒT́Ăk×Y¸]€£!ñŒ´«Ưlûex˜¹̃@nö ¼Ck 0ænö9Èës7Á4¬¨A½cˆ¤v`DËĂúS̉BB CPŸ%œ ‰pEơíGV¨¯̉ÁT?6Ă]¨5çI‘IµúÏ h¬,.ẩă¨¯÷x̉0Ö• «KOVO‘½Y—óÀ!ªV>ËÎlSo!I'_‘ªwíó¹ ©HñdÚ¼WI«ôOàKïöHñ/1GBÚÑo×ûaùBQ”F~áÎß‹½́ÑMC©6Øéå Ï'±C¤Đ€«}¿[ă˜]Ê™{ϧ=dr̉[â\50.—„¬ŒNÎ|äÚØ\Nç´ÖÜi{Öè.ZíFĐyÛ5à-×ȯă;¥ñ?rZ i…Ă6ĂœÅÄu“`vT ƠzêMí•·^‰̃`¥Ï̉¿æÍ™²s‡¢¾ç4?S₫x̀ĂƯ_ü¡¿¨u¢*¢¤+¬£™›î+™Ï¢ëuđy»H,±æÊÜw*ƠU< ñŒÄiH ç§®ùyP¶đÀ¥¥É|À|&WØûJ0–Ö–V¦©bb™àÖ¼¥/øyHnO{Ë̀¿5Ûœc€Å¼[‰à¥&¨XSÚ]ư0-?•¦{Åüâ¾­̃ŸgîƒÙÈjAb‘Úhđ9 ]PĐ” –©?ö½Q×Y¥Ư`Ú++m¤ù耦®ÂJw»“ÙJˆ„B¬́Xj×"*#ĐA¿o‡¦}b¹ca…Ów¤·0ä×O”‘‘+)/9ÂöÄU-ÜÍ,y$­ÚjxĐ4w˜?²ÉÁËâæoywYxGøß_éw ´ósÖk¡̀Y³†éÊ}ùiz4zç4Lư1¯Q4̉”Ëû:—ç$;³&ˆĐC_Œ®æ¬R¾Ư¤duøƯimI*uưAÖœ6đ×eƒø¥t÷Mo Û;O ¦¤J 5Ỵ̈L®ºNå«yåưÂÉæ³Î1Z”ă¼iA4€½÷BÇô^xP ưèv"ƯkQd̃øiÖŒc(9̉¸•_xĐE4´OlẮˆaâe{߸/ÍŒq²[…f VJx̃¿[âi”WZ—Á›Ã_DÈÚÄÖ‹r%~Ư@`åjûœÙ® @ơÁé‡Ù{c›ïœ‚Đ`„Æ \•ǴÆ*¥R¦ÂơÚ rUƯ­¯&áj†Ëtđú©å Ï”5Mp´ÈƯ«ĂëWE’ˆï|ÉƯzk9f(#_ª|̃dj̃¾y8ă&ÈÜñøv?â~90'rÜeơ0TOwºVåR¸ü³!Óf„‹¿Ơú–%'>g’‡̀böɶ»ô¬ÂÙëè™!N¤çiçÊøÉn~̣¸Êƒàû0^¶>¼k…óC± ̀g:»×ë£2Óº̃ê½§ÏöaŸËÜ=^7S*–Ç ¿ï©D®†5l̀˜³Í¦ä3ö,é^',.EÑôiE½Ñ„Ÿ¿‘:(+b¾3ˆ=KIÛ}4ÁÎe¹7\¶øñæ*™™]ĐÈ́ăÁ¨Ù]‚o†zjƒ‘æÑ¹¡ëȲjê5°ÙÚf½Â ¹Ü§ôV¹âEåX„BY¬ÜlUd4fú¨Ḯ{̣,pe­‡qRïRùf̉´JA!Çh‘ÎFÄt£ĂáỔÎtLçƠ™]Îv3îèÈpŸ¢ÀX$…;Ù (,(TÖÄ0²§2²‡-v{¶-½RèÊVŒ!»ÛréÅÀî–ö¢ 5»öôsro­VˆF‹ÈHœ7‘Ưïew‘Ư¬™ˆ4I©g”GOç&éV-Zܨˆ®̣ßbÜ‹ăVǦÿœUäs®»Œq†*8đûéÚ„*^wŸ)«ô‰¸̀÷…Ưáë¾æs<ù!c™Î_) T¸Ù| ̃h-æùñ f́z&&F?Ü·Ơ_ÖßP~ø)[ñ&'´2’ª/Ä?‹,ɤÂ+£tZ—…¬ù˜S`mASĐÑp̀7u¢Ë¼kÿØOS¸(Úc-₫IF@öÊ0‰(ñîRÖKVß₫úIöE~J„AEuÀM¨¥(» —ê]TÉ™«³L›é>F¢jávÈ̃°'Øà‡€¢Í‚¦_i;Ø€ûÛ§uUØK%:ZĨ)gÂ:ÁôÍ¡â½x¨̣;´Û [^eºŸ5)7ErWÙï¬~|à¿ê àÁ[¥¢(„35ÚaX>¦]´áñḷ5zEÓ‡(n ˜Dコă{¹½ˆBËߺRk̃྽ß|L»=¿{Ø.é]’›ńN|nƯIKï°‘ØqiÊ’wܲ(7̃-1Uoj/¨/ÏFrV*nȺÔ4á¥é®l²'á<§›đ|›oŸœ’¦èù\—¿­\>„ê5H¿ÖÎ₫nÏè§/ÆvĂYZèám÷­‰ằPêđlÓÀ¬ÑNsÔ2×ä(áÜWS̉Á×—E¼“S9˜…ŸÖ×9B­†U°«Ñ³àhEîÛ^s·ZOÚ>U¶&¯‡¶Xđ¤̀ &¡åöY¬Ëçß/ú*ö3‹bɬ”D¥öu’¦öEé.Qá0`ÏdÅà)sa_Ê¡(/̀ÀĂ–bœXïx<Ø4¯ưt»Á[Ç,hCưp8:å¾…øÆnăzœé!Ôú{ÛO¤cE¾—5øâÖ 8• 賸Ơ¹Ë°_Îây ï6J0¯ çiäƒ+ÓØ î£y½‘*·µÆùLĐ+s‘½lŸ̀·Đ 1lWŸé¹"Mi1ó˜)9C¤HÓQQÀVNC]76œoÆ‹7 ¾V]ñÉ5ÿÈLîø&ó¶+,R¢—„Ÿ₫¼@c“¬qå"AiGk¶̣9À°ÑÅ:,̉…?¨°vç&ྭ‘Œ6‰ø§÷X(°‰SÔöt8’̣dnÑEŒ¿ó₫y.æ̉¼#Ưº—~'•̀V! Çá1®„ưíËñ›DëĐÏ»ßYvơÄƠûÜÅ;‚EDNk“^9’b$S`E©›Ü*Ôén¶,ƯR˜LRÖÊ·Ö/åÉÚ™äƠÈ78Œ¸fœaơR›)ăèmÁºå”(œMà¤Jt}çÛø çà$Y†ơkăng†̣’[ÁṛÜK`)ú棗’Ôñ1Kxæ4¯ *#§/y ­c̉Tdˤ̣Ú’±™̃$s®óÆëYÚJD/èÇA+aiPŒ ̣ …훸¼ØÑ¤́³Äu‡¼#‡ă“WÛ!M=í´8›|I,Å…ëö7L ŒƯŸ”u2ư¹ºÎ6YÖṛÍtÀÄ’₫f]®ª ́ÜƠî|y}¶́W(kqtEñà•3̃?aEóª,çÅøơléÅÊ››WÉ:¶œ¦ùô_pXå†:g3v“:¯ÏµQ^®&¦4>qP "`X¼ÂlÖ¯¼S_@Ñ„AWü9ˆ¦Û#T¿Aö¨—˜Hë÷~yóù/¡ă´±ÀQ†öùñ@–§ă'Tfˆnq¯Ơó¬}úÔy2üÜë9ToJ×ÜẲµü½­ ïzúŒ+q`₫=B½₫¾]köÈ́̃ƒá g¶ ̉t™J¶PăÁ6¡«;-ư ‹NNLí·l~iA÷oúî‰æ\>^~PƯƯœdÖmWRÔ’“°’ ‘ƠxE`pøǽ2+Yúù9c,¬Û3lÆBơĂ;e˜Wö₫.„àP®xÆNÄA94ô(Q5µở,!zßtwÆ·½̃íVÑüB±{OJy%(ä?Tº%€’¥ˆ2æ×` ¿êx„°P“lx\ˈ>ñ°b(b74Ă0}ֱ׳6vw <àXúÛP¥FÏêm™Øøoí®Í°ÎxÑ«ö‘D iêƯư…îf¢œ—qµ}Fȵ±hÊôu;#á{8Ú%)ä—¾ÁµøKK_Kj̀â ^¥é')Éboˆ&MD(ø§–n>'„Ä–û̉èâ{Ơ»˜­}½ñL¦1Ǥ¾K±çµè-¥–œ₫R ûÈ₫>̀ˆñ(ç×»)³ @"ƒF;â\ß. ªƯ£}¤_́—o½ûăF¡§ö-‚wƱâCOl¬>JL+}ÆT“DƠ?W a»+&üDy´•,÷dHe¼5N2§éSCñx¥„Dz‚ £¬ă»öw™t©ƠŸµ—ơ”NsƯưƯE4ß$½”íĐg}´ÖUWÄsº‹qK`|•;Kˆ£r“:£/ê‘Yè¸/¦A±ƒ₫8„®ß!èÈy’ÄÜa;º°!Ü·ặ3”ªd›đ-A’¼‰b‰$àäṬʉG>ø ³xuûŸ â«“û&c(X4“k‚pƠꔯ J‰¬”IQ8²ÈĂ˜ ˆîÅœí-AÛ³¡ào®ÓÅñ~Q‹Ó"40¡k̀'+đC#]7ñÙJ¨8AY9Fqk%·ï'j6~ ô´ï¬‹§6¢MFiç5>‚Ë›ÙǪ†êΧT¾nyŸ¶6|ÖïLCíd |Ο̣m¯é÷*•Æk6»¤=<²Œ<–/*jGŸ¬Ñ8ôÆÇ^9ü>)V¤nZz“¶…<:¢^!VêyäÇ;½E¡™ñơj;‡2Êl¶¶wW%äg´üĐ ¹s[>L®n²“5³à#Ù€»„B/`ëÔ ;^ÀS=ñ&+'ËC̣Á—ñe=ˆ öC‰÷À¯™ËÍN̉~‡"aÈF’½‚sx{i­œ×.·W<™cº`„×PS¦û7̉{‚WóXŸöÛ^îVK&f}¥Ï|î:ô4— £!S92R¯Ö8e:ÂnĐPÁ+áª{¤ÙŒçˆl4½‡–ë]yßLA2@üĐDëŸ)ä_ye‡qöÆă[Ųù§ơ©W÷®ÂƒÂ¢»h³0ü®€U¹.ñ Ë47]sÛ€QwüüRø!#¯br²A=晦øỢÎy l­=-±-ÅAÆ̉jZtJÆÈ1É{‚N¡fDx’÷QøåSßW6ư»á¨¦¾µÚ•©‹²o™­¹"Ï-¶ –4<ø̀hD²l8UYÁWt§uGsM±}ÙƯ¹Ë’±øqq‚l±ªÓxQ…ûÈ´g!®R_$ÄW%QƯwøƯ÷×E½Û×),1V"æ{¦ï ̣FøØhÖ S>´·ƯđƯVó£Llïon…æ’öp4ß&ù:3»H"¾‰v– ¦&̀̃a¼́hâlÁĂ›¯ùº+}5̣¡ ÑÁà#P$÷Éâ-é~óhu瘘Ơ[¨̣ß§Cæ·¹{v¡QiŸ́puÜÖBQ™Ùouq‡J>¸¼BÿAl²…LDôÑDA¬c ưÎ`ir•o= á4."Ug+R̀Ô₫ơµ8/̣ÏŸ#³ïzX+Jèë´œ9̀c ïbÎGƤÙømÛ5vÙˆ’s ïƒn¾1mñ0øˆ:¦àâ–$wäPªà!¨Êvrx‚˜Ơí—êđK™đ'ªúRTưŒ4:‚åWEáÂ…od (æ¦hz¥´Ä)vÑPøn%÷̉Ít»ø›k£OÿTÁÅ–À—̃{5uŒäøæI¡Ư· Ăơ´d©ñˆr‰¹£ÂA5¯f#ÑăÊe‰r¾8\>r9¢7JăµQăưƒ{ Áñ£ ;î^Ÿ[JÎ`aåR¬ÙOƯ.{¨{E?dÔH¹m›ê"’¥Đ¸:̃†Åñ­zåăS=S)ÅÔăèàÓ{¢}‰đB ‚5̉Å#f~û‘́.~Oæ¡j k”«K8»d8ØĐA{ëÅÎÄo?đÆ›aÙâC¥Cđé„l\ö„NBÿZE‹9t /Bä"±ạîfŒ EïÑÏí"ÏđÆ\… âCmù™©Qtm‚üm‹ăÑm;ëè˜(Eù`>ëI"]¤ˆ.hôKÚ¥’ü/Øđ—w[ˆ/»¹˜·U´ÀL5ƒÖ™lË»–́ Ûuq¥W7¯zUÆƯĂ–é.pŸ.²‰w 4dñCÜOWp¦AùUôæmø‚z)ĨF̀pj¡₫„́³NH§cƯ|Nă@ÓäP¢¥%û·5Z(Ơ.–v JO|ÁÀâÔ‰Îđư;]ƠË "VFZ‹¶AEú¸§¸Øåxé§*ô öáää.o¬ œùu ,6_i{‘;Táñ<µC™Çª;ç&3[H€’;—z|ø"́ùqÄ•TÛœÑñç&fï^— MÎÊ¿̉u À́M-„ESP=>p=¹•¸ e†±âëŸ4jÔÆ—×a(,ÄCnÇ̉~7m²‰UhAØ>úØÔkă\—ñtƠ$Ôơʇƒ8FWëîÙ,¸Ơºét£HƠj ¸èĐFÜÀ6ÈØ3a>vÄcfË€‚'>$>¶©n+”«Å^&ë.äơ B³Ë#ỒÎè{6-WÂÅ̉ê "X碆9°-k £Í¹Ư^\kX®_!b\Ÿ…2àï7tÂo¯4̣±·0Îv_Ù³æô¹‡ëGơœß±• G‹¶%åáó™NG©u¹í"²ïi¶•) M¶ưZåÿœ¼·‹mj¯wà/zª¥;ûAk(,?†Ưs„™/OG̀”fÄÏ{ơÉè-Ê´MAÔ.ËA÷­Û¨_ÀÎDÑ©ª6/̣áD€ÎY.]’mZh«];ëîe©ØÍá‘«smĂîY¬3¯'óưĂÀ£ÄHdÀmǪlOª&½ŸP&éô†Û€[79ñ¢‹àQ³ÿĂêÀ"«ÿË|Î:ơ9ÁÑ´½2¸Á}e·̀p036l¼u˜ÙeçHomhƯ¥7(¼uÈ Söḿ¸bÛ7h€P2Úöb₫ÚÄ¢êÓn²¯Sƒ)ä)Î÷ä•鬲vKÉe'na]Ơ¬"1ư.œéî–Èơ$‡¤Aó¥Ü¢Ơ9óĂ!Û°YX¦AÔ‘‰Ø ¦Q”]±4Ñ ¥,ªÓo|Œ»̉[³V¯³SE³³Skp̣¹ –ܽÓF åÓ ™?(}Ô)êéú Jj2H Ư'«`Æ7áDi™$ß¹¦ÓúQ„m‹*@ÇđZ‡Gw[ùåËêyÇ ]Â>ÿYB÷©¿d)A4S,·9~ aê©đ/c…î·œÔ(Ưéö„€4Œoí́€GW6S=ÿ–n¡%Rœ‘í6́Ù«dÖ#ôc»7EDÏTÔL®è“Ù½}|xF¸:W7Ùg0:{ưs3¿D0p×Dy¿ \1ÜrËZÍßN/ºˆùH\9~̃a÷̀üÀgM*iѽrƒ‰x`/Eذ²7â'µç×TZ|ˆæ\ ]}cđ÷Ÿ½¯*јÍưNú¨‹æ}ª̀q)EæhfA`˜¿ÙùÅ[‹â1˜·v§To)öDpÚÖsú‡>M5â€ẹ̈MJ”‡u2ùĐÁ V{­¦CÊ׳Y„á֘ȭ+kØo6Y•m×+@‡EÑgù×½Ï+´ƠÀÑm tn•Í‘É ăø‰ÓÉƠ|w_Æ&F¹Uߣ̣á~ÊÍđ.ùµ ¿Ö÷ä/¢$̀åKLÎFmÁC¬b‚ Ó–e£ë1n§ÅWD7ƒ ØÁ ë›üáûw0FÅWïŒøU¥¨)±X" ữHXxJ@Ê£y3&í.S©xK€X×̣ÔKÓ†mßK'é‡^ƒÆ×´`R76/ÿÉ…]Å4ï7 C̉¯ƒ¨\¹˺c^¹BMXÉ2éû` :µ†£&-µ°fb}’O₫1Â9˜á²R“Ûß(omÔb-ưNØơUW`öp‘2mE¾1£ø­̃«¥7ôºk₫Ú³cæÆEDRµ{,(̀=ĐrËf»VKVLLÙ8[YĂn ’]ë¾ü‡¬±{,+ ÊÙª4¼SàǬ́Zf–ƯdîR5O8+ßđœ’É’~9“bI¾œM~ŒíF*œk̉'˜Â§wåk±˜!óßÅ`Nhî¬ÊợĂ,†1°=Ǿ´ ÜL©¨à»Öz(ÏR+¾ ’øƯG•é‰ z‘Ư‚~.Ôuà¬%ª0¦³àtêxn*¬/Ûéñg·àÁ÷±DŒ.5Ådz‚¶á+†Æ"º£Rä6±Mûd,?>Ü^̣å@K¬ÇUV­ó½†zªjŒ÷aRñ|xÎwüjâ˯b{ˆcXä„U>Đi˜‡\¢5Ôeü °C Ư¿êĆŒG–ÅĂ;ùÈ­B‚>®ÔF%dT‘‡ét©JèdíM¸¤r¸KY·´Û=khRư­?ẈŒdº¼ÛpäMËi 7$Jh§ă¤ÂǴNáụ̈ <¤c0e¨?KÁô^́ïµ~'‘«b†ÀÁ₫&)M©s„×Iƒh¥Æ$ứűµRƒùX[Xư$…T_†±&Hđm¹đó#‰Zzú懯Ễơ¹#,ù;] }{ºá*ȶ½¬V+l@} _( ÑĐjëcüG̉£º/FôẺ: ÎΤbÔâ~E¯ í a×Êî\_µlĂïm/¦ĐúçkToj¢ñ%¦jÜ5Ô8.·}¯Z̀N¹M4'00ÈÁTR3g»hê·Î«•đ“Cöc´¾ ưĐæÀDFܦÏzRư)ÚÚxwJÀ_U^Ztâ%ag£Ç»nû&¿ĂjqÉÑk†ưíÛz5÷²ün›gƠÛ*/ÅnU‡&Œ3̉²$É)p×JÉÜơ;Fåå Ôͨ™fơ5#]Åê–g¦ëµ«ŒDđ`ođ®×g¹AA›&O‚€´)´(;Oa0Q;uKY%œ{½đçÛ³fïª̃BƠÁ¼»r+NS ‰fÇUGT%3hơYdKúŸ[x|óJTë· ¿ŒøÓh<.|}†Yå^*e.M!b“É4¨â$µN8øPƒÚ؆1T³µœđø}÷¤`4ÚlŸ/%^hø”#Szt¥´ƯîáÙ‡́ÜVùÂSHl“‰cïµü4Ë=dº>đ÷Å÷ ¶Q9} ¸~̉Đ8„g˧*Á!tåKZ¢Sñk˜ïĐV̉ Cv±I¨Îë¾èˆ}}gíA7;÷Œ̃Öù¿—ºå*½f₫Û£qƪk÷6¥o²̀׿+nD̀ E,æ¿§Đ¶î)%Rí°d gÏî5× cÇẒúĂb¶ÍÄyØ7Ù•‚Jy¨æ[ºÀw÷ó¯[ .µNߦC_× +·/»½Ăö́ÇIü,?®mû-¢Z»Î€5oj„ïuUƒ…‚Ví’ø,ÙcÜÛ2½»ºÆ.KŒơª½É•̣æ}ë˨M»¬azÑÓ«›[jùmËĉ‹\îÉWŒzS¸¬¡•©‘°óÎVÜ8³+6ï ơ¶ï |N->NµŒ®IÀTÁÅ£Á/!á|zî¡”0rô?¢ ¥×øzœ;øNÀ7®ùgÈ›q¾’81ßpƠĐOüƠ]å³ĐÛr~I «àÿ¹¾~ endstream endobj 1021 0 obj << /Type /ObjStm /N 100 /First 980 /Length 3492 /Filter /FlateDecode >> stream xÚí[[sÔ8~ï_áǙڢeƯ¥*jª !À!p‡̉K“ÎtwØ_¿ß‘äkÛ†&ÉĂnQ•–e]¾s?’e‡ç¹Ị́Œç¹Ë87Tñ™gRQ ç™2‚*"ÓÖQEfÆ+ª῭qÎuæEL… ´s†[Ô<Ơ`„£!B¢0 / DèLÚ j”°,Ơ\&sç©æQó40M¢DX–ZÓ8)2Å5“5KxReʆ¹̉dƯTs™6j*ÏL®x`<3B“¬JeF Đ1–h(—Y‘Ó8gVjĂ`ëÑФ A14‚̉€#ă@CZ…qDĂ:̀pDĂAAí̉K̀€Ñ¸ aƠàlÆ€†â0¸!#)¡@ƒ”¥ÀVF̣¡FS¯Âh£©W+̀ ư!ê@ƒœ˜A6P’²rÜH2¼‡äF‚ç|rûö„}»(2vçü|±°ĂË÷ëpÿxv₫iÂî.–§Å2{›#đówö¼8Ygo57S gÔ"Ÿ:đ§…jXL 3ơJaǗöíŒf́₫âh‘±Ứ7ÁÏ₫øc‚¿+̉äù́W$Ñ 9o”¤̣~Ꜭiæfó›%©-HÖb*£¦ˆÊ›¥©́TqWÓÔrj”î§)®‰¦„Çh^ÓTrÊ­»YBM­jĐ”b*Œ¸Q̉‰©̣µ=¥sS䪛¥iÅ4µ=‘¦H7KS€í¦ÔS—ØS6iîfo‘PŸǵơ›¿¼±`!đ|v~9Ÿ¿+Çí-Î×jëq¾'ÂÂë.¬©ŒPÅdv°\œ`6c»{;*¾®³€ûV8°ûṇV#̉a$ËĂÏiƒ»X†Ø@(d9ơƒ¥µùÔ"t̀Ô•-JL±œ¹œë‚;î bse‰6ëÍ‘u›ÊD¤Ù ‚¦…v•²É[,#-…ºLel‰¢[W M+`è3èĂ.%’„q’” oáa6öRa†'Dœ8/"Ç2êózJÚHME«Éđ¦6ë-%8Ù-Ô,đö¶¼é` T·«ØªGÆ~…-¶ ¨%SU=Q€X%ùéá×ïê?h“¬iÖăNX¸XJX[ÈPWH‘"•±ÅêĐË99¦íÆ7…v"×:C½N†̉“ŸPú³©Å`‹́iÓîhskªƠÁ"–Wä &º6µĐSHXˆƒ#ûóvƒË¡MT`'‚ª0*ƠăQ\[›JĐ¢FqvS#T(e`Xú¼ƠÔë¡üå̀ÿĂ¼!\Å/;₫ŸØ4Ek(cœÇ²• ̣|ă‡[SpŸb˜E÷>ÓxÆv>u2Ơ”VªZsT#GGøf_ƒÁ>Ö†~bƒ‹áLŸÓƒ?ñ”̣ÏNà×Åç—t†?a¯Ó$D 0ΗtÆñÛa»lí³§́³v²˜/ÎYÁælÁ.Ø­Ùöí÷Èß̃ ¨xúÇ&íC aýî́>yỊ¾æ¢_`QC`z@/®E`?(đv7}bßgØCö'{̀°çPĂ{Á^²Ẃ ̣*9…:ûÀ>àoö¥`ǽĂârÉ>²3vöíâ¬8g3ö Zû̀ÎÙù́¼€ú(/ØÅñ²8ŸÖ±¶ @År¶8e³%T¼*¾`újöÊ^Ÿ-‹‚­ÿY°K(₫ö•}cÿ)–‹́6Øyñçƒư]XàÉĂ!—“•Ë)÷ È1 Ü⪴ à¥NĂQúH~‘îÜÙ?zEp*¼½K" sM"½•H8;̃B¤ƒg="ù~‰đ)I„\}MFRÛI$·‘èÍưg¯(Ó=r;¼³Kå₫*Uoü <}qÿ¨ùÏZ±ÿ:Dÿñj -¬>! ¼_Ÿ|*Ö!S=†r™2OŸ?7rEñùôxuÆ¿/ç)q|˜á‡›ÙHù÷Ïd‘¿/ëâôư< (oâ˜pW·ÇƘu>Ï"çu₫Y͉å,Ô“‡ÔV+ÁƯ?_ƯÛ}C₫0àà²rpi®ÅFÜ»t‡̉W @tKưßÏù}_m•ñ_<Ù=xJkîáăïn2đ̉üJÉÄWÊ‹½RƠ¤æĂ‚?TQ1J­µI[eØ„4ü°£˜­ÖưGÏ÷Ÿ¾9:R ¬D/ê镺7 Íp̃̉ ƯVB if$+¶ô°)}⻫áV ¹<Ç ¶ƠÉbY éFoµíí½yô¶ ‡‡ƒN“ÖTï)]ûaŸ¡Û‰Ïá}i_́t¤Ûj1ºó́hoçI÷fĐîH?̃PHpzbÖµxˆŸ[_U>hù÷x[Y`ù˜-OæÅÉââÛ²+ßVÉơÏû¯öH¾a¿VÑ­µ¼’[ÿÜZû¨‘`ËU6î¯i1-ªe5-PÛ¯¶å2;œ™/?¿G¼̀>ÿĐ¢z1¿\5VÖl,Ÿ g'>ûWP½U^¿÷loç₫Ë`ä%Ô$ÓWg̃]ÙÆß]@ï5Đî3TưƠµY™éynló[˜–₫Ó2ÚÑôÀBÑør!ăƯăU>è>«·́w)ÉöfËƠ4ƒS {|œnđÙÚ„½®ÏVñ)$ >Z¼8×§ài{†ºÓ¹.Gd褺º—]T>ª#º©Uä¶§ß}Ü /¶ ÿ.̉ylÛ ¯¶ /¶'ßyÆÚ o¾ăªẹ́ü¡½Éßàgÿ×ÁOw+ÜåHoø'¹Qƒ#ÑÔ¿6÷ å¬ç”–Å—đOͧ§s§0]M—¥ƒ́Óç²%S0Uƒ‰˜U½ăk̃e›÷Zd½Ü¹DưØtLôS̃EưÜâ"²–P¶%,a;ăk!Êí@/Sºôˆ¨Ö>8üJƒẠ̊nˆÅ¼")Úz¨ˆD=ˆ>Z@¡Gg·îl†V-¼£Xy «—¯Úº1䆰¸maơ…»ËŒb©VŸ×q]cÉQ¬–ÇsÛ‡%j¬| +w-,Ơƒ•û +·£Xº…Åû°L¥F±D+w}X²Æâ#XôÿQM,Ư‡UyºñnË´°Ä&ư{S…¥G±~_rÙÁR5–ÅÊ[X¦«̣{ăÆü₫O¬‰Ơă÷ƹËŒb©Ṽ‡¥k,9Ơôû’Ë–¨±Æü̃X×Âêñ{c+¿7ÖbéïĂ25–Åjú}ÉeKÖX£~o| K÷aƠ~oFữ˜VŸß›Úïͨ߷¨’ËVí÷fÔïuKFÓç÷¦–Qʨ[2>¿×µŒzTFƯ’Q÷ɨkơ¸Œ­ØÖ}2Ö»-£Fc[µb[÷ɨêØV£±­Z±Ư·ó2ªm5ÛªÛª/¶UÛj4¶e+¶U_lË:¶åhlËVl«¾Ø–ulËÑØ–­Ø–Ulÿ¯®=n endstream endobj 1065 0 obj << /Type /ObjStm /N 100 /First 886 /Length 1828 /Filter /FlateDecode >> stream xÚ}Aä6…ïơ+t̀‘ÄGJ‚‹9Áb±·EsèĂÉ.0é ̣óC¹l³èpxè¶U–?Ô#êAƯB½Ô"}+Cô"¥q×+•̃§^k¡"m:­¡€u^k…ơE©óøá"©]1µđ¶•I¢W)[ëz¥²Í©×ZZ£´9QZo:u6½Ùt‘èäÁ¥xđèkU:Y6½Q&‹®Sôc*mYMÖ9º¼¶Çd}´ƠOû£ô=( é5y0̃¬ 4K߃—®A÷ôúTKÓ÷ Zœ¾]ƠĐÉú¸Ï®“µ>}«:Y Ô·¡d­U-%W-]ÓZ²Ö‘º₫⪺VÛ,Dº^l\ºb-(æ¦7ZL)$ZRL*4HĐ7ij‚kS4A %o F+¨ 44­*„ơF©ưéëc-Ï}4h¡€Mɼ ´PMpC„JësZ‹S©@ ¥ëÖÉ´’Ô¡…⦠j½Y j¡¸³’Wi%¨…b¬ÛÚ•à’¯ơSƯN%«˜x¬ë®-’ʉ§́Yª†4ARAI­ưAZ(U£Î™K–{mô‘} v%-”,²­bk}F%ƯH÷M+£¯æĐ5®‹"e>R™ë$-çºÓÏvíV 7döÇwß=¾ư÷ç÷_ßÖ µÿ₫ơøözÛ·ÿüôåí¿ï»¸Ÿă/ó-º~~ûó]ç̣>ú₫{ǪK7$c‰cơ€Ơ‡±8eÑ+ëXåcơ”UK"V»XmËXm8¬6%) U#‹RV{e«¼±º±jƪӱ°êv±êHÝX-b‰±²ú+ëXåeº¯™î×wÉ++̉}½tÏÛLYN÷5Đ=oĂXœ²^u®̣Æ‚±zʪ%ë̉=ÏL÷ë«ơ•èç4–¤,8VXl,JY¯º?Wycuceº_á•èÇ¥{#e±cµˆ%ÆBÊzƠư¹Ê‹Œ•ê^6Çâˆeº—T÷"é^L÷̣Ư?ß–HébJŸ]ăµr]3Î/¿?ùưƯ–ùÓ'ó ï‡ÿư_9™ï1-{öÙ_QÙsÔOlù2§o»́9Ê-{î)Ëơy¼.ësl ®Ï9êsXŸCR–ësúÖç ”åúQŸĂú5c‘ësD}NÖç4R–ësD}NÖç„”åúœ¢>7_Ç7_wc9_Ç‘¯cóuÜS¥;_Ç‘¯cóuÜSƯ;_Ç‘¯cóuÜSƯ;_Ç‘¯cóuÜRƯ;_Ç‘¯cóuÜRƯ;_Ç‘¯cóuÜRƯ;_Ç‘¯cóuÜRƯW—cäë¸Z5ͱº#_ÇƠr¬iƠåX£«åX³±¹̃®AØ®̃Æ6R–ëíÚ"– )ëµ·ÏŨXd¬¬·17Çâˆuơ6æLYâXAoccqÊzíís•7ŒƠSVu,‰XWocd½1+èmŒi,IYp¬±ØX”²^u®̣ÆêÆJu/Ó±"Ư‹é^RƯ ;V¤{1ƯKª{qº—H÷bº—T÷́t/‘îͽ!uo`§{‰to^©—ƒórˆ¼̀Ë!ơrp^‘—ƒy9¤^ÎË!̣r0/‡ÔËÁy9D^æåz98/‡ÈËÁ¼R/çåy9˜—Cêåà¼"/órH½œ—Cäå`^©—ƒórˆ¼̀Ë!ơrp^‘—ƒy9¤^ÎË!̣r0/‡ÔËÁy9D^æåz98/‡ÈËÁ¼R/çåy9˜—Cêåà¼"/órH½Ü"/;£CMuïÎèy9Øjª{wF‡èŒvF‡éÜ¢3:Øm3e9ƯGgtdgt´}E÷ûÛÊ‘ÊÑ–U¸o×ëäyVq-s?«8¾vVAæ̣èị̂®Ó–=fäŸÈ|Ư}Ưím—}äëÈ|Ư}ƯU+\×Ơçt÷uå|E¾̀×ÑƯ×ƯXp¬±ØX”²^ûœ"_Gæëèîë<Ëù:|™¯£»¯sZ£ÈÉ‘99u{¨̃+ơ\Ø®ÔS§Rç=ˆ¥Ë~K÷?ܾäëüÏ8=É“_ỌNcpvÇ-&ÛÖómëÏ GÈH8fØènØÜ‰£í5‹F˜i¾ä4|VüÈ÷4–ÏŸ~ôÈ·ßbÂÚ·v¾lÏQ¾°|ÑÓ·]öˆ–=m1ëx;Z Ù¾¥vGé««Ö¹²gµNéƠ¢3ÊÏŸ~{û½üç›íƒ₫kÀ>©|ó±X ?ôaư)ư9ØgmÇ}ư°₫‰à¬'Ït~јŸûü~b׳_îñÚ‚—i NÖ`^ƒ3¸¬Á}èà™̣kÀÅ]Ï₫p®ùưxy[9¤¾V^{͉®A[ƒv úô¿ÅŚz¶Çû }q¦5 endstream endobj 1080 0 obj << /Producer (pdfTeX-1.40.25) /Creator (TeX) /CreationDate (D:20240924152219Z) /ModDate (D:20240924152219Z) /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) >> endobj 1070 0 obj << /Type /ObjStm /N 10 /First 90 /Length 521 /Filter /FlateDecode >> stream xÚTMoÚ@½ûẀÈ̃]{×+! ªJ“(MNƒ‹7Ô’±6¤ù÷±g«R;m/đ̃́›7»²ˆ´…Dd¡H2& @)I †$0ÖЦ€›tG)₫CˆÊóỹf×ÀóDª)ÖRØè&2Bª4“I1ÑD&†ˆe’"IºÛ \‡¢ơuél,× -éMŸŒ"ÉT„q-˜"<ˆ’HĐiOºyăA;¬Jgƒv -‰È7Ab c´'÷Ó„e a^HJxĐŒjNF¬YRó>dM±ÛDqôÔd{GàîâN—½âü~w7ơñ­¨ö¸v÷ñ\íÚ¢®Hÿà^ÜÉU;‡ g₫T́¿ÏJwq%)^XƯ‚+¬ÇúÔ^ÙL–îxr»¬uùf[èƯ₫î6øÙă«*w?°¨÷µª6+K´FÙY•Ó_YgygVù¶®_GÍ$Z₫M0æGYNytÍƠüdƠ₫i•ç9û\ä(¿AƃÔËÀ;‰ë—âËåSâ±kø÷\&ñôhÏ÷+,ñ¤é¿˜è£oGáM†×Vïƒđß,‰t7g̃[¼Í>÷¡₫î»ÏKÇ)åKc•§Æy}]gß\ÙÀ|áíù€#F¾Ç)gS¿B¸„ÅBQ ñ 1h&t[ú¡AhùGø endstream endobj 1081 0 obj << /Type /XRef /Index [0 1082] /Size 1082 /W [1 3 1] /Root 1079 0 R /Info 1080 0 R /ID [<383CBC876CBC46BFDC3B673915B2B26B> <383CBC876CBC46BFDC3B673915B2B26B>] /Length 2408 /Filter /FlateDecode >> stream xÚ%ØI¨$IÇñŒª×ụ̂zï~ƯƠû6½½̃÷}ß^ïëë½_;¢OêƠ¹yˆñ #}RdNnˆ"âE¼*‚ÄIP<(‚ " †0ëóŸË—ÿ/*++3ÿߌŒ¬®ëÆ>I]7Ú¥®÷ư!¦Ứz]7+Á0ÎøÁ0öÛVØ‘ºµc÷û´½ÔÍÚc{Äi0fÁHêæü3ö7Ó&»`¯8cX 6w]·̣“!ºOŒÍ¹0æĂ(,€…°ĂX Ë`9¬€1X «`«a ¬…u°6ÀFØ›a l…w`l‡°vÁ8́†8ó8­}ç„CpÀQ8ÇᜄSpÎÀY8çá\„Kp®ÀU¸×anÀM¸·áÜ…{pÀCxaÀSxÏἄWđ¦àÍY“óP S Ï€™@†Ü³ñ́Ô-ø\lœÈ° †×¹÷öœƒpîÁ#xÏáUê9v0H“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“I“ISµ±i*7ª ¥r¨r¨r¨r¨jrƠäªÉU“k(ƠOƯÖc/3¹ñƬ̉ƒi`Î̀…ÑÔ]ÿµYj@†JJJc©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©Ü¨Ă;₫̀₫èÑ# X +`¬áeê—8ßImîÈ6¾TJƠ§"‡*¯ês‘W5đRäZo¼¶ƒóÆbc®Ơ7âp/éÍđvk§JƨzĐ÷µKÆ&Řf́²±Çât˜!>RÍ„YâCƠl˜#>PÍ…yâ}Ơ|ï©ÀBñ®j,猪ÀRñ¶j,w,÷ƯWÀ˜xSµV‰7TX-N¨ÖÀZñºj¬¯©6ÀFñªjl¯¨¶ÀVñ²êØ&^Rm‡âEƠNØ%^PĂnñ¼j́Ï©öÁ~ñ¬êϨÁañ´êO©Áqñ¤êœ£MÂ¡ăªØßY1¾?‚UÅ‘^ă7â´¢ç‡Uq ®q@qÁ®‹UquoˆqôÑ[â~U4ï§¾'îU…ĸ.áĐ#q·*„›ă"†§q́R=ƒ¸ â¿€¸ v¨^Ák1Ú3q û–Úđx<êhqhhs´¾¸UE₫6MÔưÆû̃oVñ¾…÷Ti¼oáưFï[xÏ«Æû̃¯Wñ¾…÷$l¼oáưZï[xÏØÆû¶\\­¢| åéƯ(ßBùUª åăƒØA(?¦_ åc/qhM~7Î<¼_ªË̃ÇAº°-¼_¬̉…̃ÇiY ïªô·…÷qúdháư¨9-¼kE³̃ÏSq²…÷qa ÜÂû9*¶·đ>ºÀû̃ÏRñ¾…÷Ñ2̃·đ~†÷-¼₫̣¾…÷ÓT¼oá}ÈÀû̃÷U¼oá}˜Ăû̃'ï[xñ¾Ư³̀{£â}{ ³ñ¾y.´×*̃·I‘Å÷í©øRÅûö\¤ü§x)>WÅ7^‹±]́̃‚Àzo‡̃ÿâl§ug¬'{Đă±3£÷v:xOi±Æ,ñ¡j6̀¨æÂ<ñ¾j>Œ±„] Å»ªE°X¼£Z‹-½Ë`¹xKµÆÄ›ª•àÉÙb™<€Ơâ„j ¬¯«ÖÁzñjđ^k{o7Áfñj Ä{̃eU,Êcy~IµvˆU;!^ç.¨Æa·;*~ü¼¸ö±ªßûm²ÎØYñϨÁañ´êµ4ˆ½Ä Â18ñă©{ú³èêI›Ä₫â€Î¦îờø Îíbê>óQ¼¥ĂØíƒ¸LWS÷…ÏÇÆq™â:O¤îK±èÑ­Ô½÷ăˆÑî»iøFû;(†/S÷÷b“n2ußø¥î»;"Æ åeê>‰iŒM¥î§Ă·íôá»1ÆÉAJƯ/ÿ¿qHœĂ÷éß½MfĂŒÔư₫o©7˜“º?ÿ0☟º|'"× S÷ß#.ƒ%©ûߖؽ+>`Ø`yJéÓ£Àʔ月ȡÁê”ÿ&b̀.â`CJcÏbŒ*ƒ­)mIß°=¥}ÿ±Đçˆ*TÙ•̉éâḾƒ=)M¼1=pc°?¥ÉoÅØˆJéƯ¯ÅXưq8̉gÆØ1`Äà4œHé½ăƒSÀ™Tûƒ³p.™”̃¿Û]€óp®ÀU¸×anÀM¸·áܳ̃à>˜đ!ÖÀÁ47xf¸Á30¹ ^€ymđ Liƒ)0›ÇẀaÅ‹N¡J3WaI1i/?Å|U¨RLUÅ»P¡J™&¨B•bn*‹€*e ˜‘ UɨX²–”•` *,)fŸb_ÜûÅƯ]øR6UJ¬ïÍ4…4Å$SRHS¶7 _Y¥0¢°¤èyáAqí.(13ètÑưrô¼hrÑør4¹hrÑĐ¢µE»Kw)¥¯Ç›¡§x¿ eưIÜQåè~Ñư¢ûE÷‹îƯ/º_t¿è~Ñư¢ûE÷‹îƯ/º_t¿è~Ñư¢ûE÷‹îƯ/º_t¿è~Ñư¢ûE÷K<ËâHă ¦û-^ºßâ¹¥û-Yñw[<­¢ñĂ[è{{⻳ÓÈħ³ Z<²ÈĐâiE†*2´xF‘¡Å㉠-L+Rúù7c/c)ươOQ­L½¯£Z•z—c–jƒÔ›)£­N½¯tQ­I½¿<‰jmêo»ƠºÔ÷Q­Oư₫Ơ†Ôÿѯ¢Ú˜ú¿]Ơ¦4²ävTñÜ̉}롾¥P¿L#O₫ÓYyẠ̈w ¬|Ç»4̣æ}Œ[ô÷Àzw|,uǧƒUîøL˜•F¦¾:üÚgGºÿ)B endstream endobj startxref 288260 %%EOF netcdf-1.0.18/doc/octave-netcdf.qch0000644000000000000000000034000014674554453013774 0ustar00SQLite format 3@ .v‰  o–«A $ § › 3 ½ ? É oX''qtableMetaDataTableMetaDataTableCREATE TABLE MetaDataTable(Name Text, Value BLOB )t ##/tableFolderTableFolderTableCREATE TABLE FolderTable(Id INTEGER PRIMARY KEY, Name Text, NamespaceID INTEGER )| ''7tableFileNameTableFileNameTable CREATE TABLE FileNameTable (FolderId INTEGER, Name TEXT, FileId INTEGER, Title TEXT )t ++tableFileFilterTableFileFilterTable CREATE TABLE FileFilterTable (FilterAttributeId INTEGER, FileId INTEGER )f '' tableFileDataTableFileDataTable CREATE TABLE FileDataTable (Id INTEGER PRIMARY KEY, Data BLOB ) 77#tableFileAttributeSetTableFileAttributeSetTable CREATE TABLE FileAttributeSetTable (Id INTEGER, FilterAttributeId INTEGER )33/tableContentsFilterTableContentsFilterTable CREATE TABLE ContentsFilterTable (FilterAttributeId INTEGER, ContentsId INTEGER ){''5tableContentsTableContentsTableCREATE TABLE ContentsTable (Id INTEGER PRIMARY KEY, NamespaceId INTEGER, Data BLOB )x--#tableIndexFilterTableIndexFilterTableCREATE TABLE IndexFilterTable (FilterAttributeId INTEGER, IndexId INTEGER ) !!‚ tableIndexTableIndexTableCREATE TABLE IndexTable (Id INTEGER PRIMARY KEY, Name TEXT, Identifier TEXT, NamespaceId INTEGER, FileId INTEGER, Anchor TEXT )h##tableFilterTableFilterTableCREATE TABLE FilterTable (NameId INTEGER, FilterAttributeId INTEGER )l++tableFilterNameTableFilterNameTableCREATE TABLE FilterNameTable (Id INTEGER PRIMARY KEY, Name TEXT ){55tableFilterAttributeTableFilterAttributeTableCREATE TABLE FilterAttributeTable (Id INTEGER PRIMARY KEY, Name TEXT )h)) tableNamespaceTableNamespaceTableCREATE TABLE NamespaceTable (Id INTEGER PRIMARY KEY,Name TEXT ) ƯƯ!Ioctave.community.octave-netcdf   ûûY   H ‚›$octave-netcdf.htmlhOctave NetCDF - A NetCDF interface for Octave ManualRoctave-netcdf.html#Installing-and-loading01 Installing and loadingPoctave-netcdf.html#Online-Direct-install21.1 Online Direct installNoctave-netcdf.html#Off_002dline-install(1.2 Off-line install4octave-netcdf.html#Loading1.3 LoadingNoctave-netcdf.html#Basic-Usage-Overview,2 Basic Usage OverviewVoctave-netcdf.html#High-level-functionality82.1 High level functionalityToctave-netcdf.html#Low-level-functionality62.2 Low level functionalityJoctave-netcdf.html#Function-Reference(3 Function ReferenceVoctave-netcdf.html#High_002dlevel-functions03.1 High-level functions6octave-netcdf.html#nccreate3.1.1 nccreate2octave-netcdf.html#ncdisp3.1.2 ncdisp2octave-netcdf.html#ncinfo3.1.3 ncinfo2octave-netcdf.html#ncread3.1.4 ncread8octave-netcd   ?ûg?‚%„Nßxœ½‘MnÂ0…÷>Å“P7($Aü6,«r'ÄVÛrL ­à,=KOV™HP•J́X̀ffô¾7󜧔z̃:M RI\OÖỤ́0©¸ Ểă“Ù%ï(ÏqBiÅúe U#:«¹W$$µ„qÆ€Êjë Œ–‹U¹mPZ/ÈO₫ pd̀]ÍüæÍpú₫*yơÖx»3b¼ƒ½®_@µ¨—tvà¸Ê4̣tAíx©)­¸vWÉ?-0u}„(Ñó|=_ WܶÛ×ÙË2÷JY`çOv¼"ÁMÕg^|Ï]+j³l C{̣1 ej‹† yƒCºø¡̃ÿ{í#¢œ8Oµơ-ăsư'́;đpƒáb"ăxœ́½ksÛH’(ú¿¢V'îŒt/E[’í¶»ƯPK²[gƠ’W’ƯÛ±qÂQbƒ‡dÎÄ₫÷™YO)‡ivÿ$OÇÅ#ÏÄ“‚̃|Âö÷¢àÑqđz* Ÿí‹Ï¥|øyç4M ‘ûwó™Øa!ươóN!¾O`?±p³\?—ÅxÿåÎqđºE,¯Ă‚?v%Ó³7lŸèʤÙ˜‡‚ÓŒÑk¯ŸĐGA§âçHäa&g…Lu'À;ÇÄOb₫˜fQ̃¸Läi™…b¿đW'JĂr*’¢̣z$ó"“£²2¡û8ñ¸̣î[‘ˆŒiæ¼8åŸlYåƠ)giV8o>ʨ˜ü‰}üc YHïç!ÅÏ;°Ö±L>±I&Æ?ïü¯»t¶Ă2ÿ¼“€áü¼¿û¯^$‘ø¢^–ôoơ2=©¼~{~úQ‘Q®¾ ÍŸ Å‚¥cf^¬á̀ Ç2¹ßçI´§<’ɽ—ˆ/…3ư&ăIÄô›ÇÁ뼘ǂÁ^)sÄóoûûæåtʳù~,Bdû³L&Îư^̃D˜föîG–¤‰øï ’ĂP™¨Wx,ï“é'zÉ|ó9ûç”g÷2ÙŸø‘ Å”^_øt‹æf™Đög™§Ù”À́ÿ§I±?æSÏd2™ˆLÿäE–&÷ĂHŒ÷4*¯MÓ$Íg<?1üưQÈûIñ#¥q¤~Êå?Ä,æÙ=L ˆ†vöéÿERdsöÏ‘2ä±2+̉Yóû¹aÉ¿ø‰Íx›£f}s.&CÀ!E¾2©i'|ƒ¯+«¼ßˆ±Œ‡S}Ú•q, öÏXæÅ>̉ ̣ơ,’yˆ¯i¸Ÿ”Ó‘ÈD´߸/kª@qú̉4¬Øj‹|"ªOƒÈS”1û‰(Âh<$â ‚×OH6¯Gi4g1Oî̃ >sÿ÷:’,Œyÿ¼S¤³ưX<ˆx_|vÚa22¬<9p^£'I‘¥Q‰ë¸ś₫ơúÉäà8x=;¾›æËÊ"MăO²`2gœå¢öU²´,d"rp,Ñ—Áë'³c¤" )÷­D€ñx"†|¨ß×ïáf#_×DÇë'“Ă –Đ ^—±e?wÆ^Ç̣ø5ÇqÀ Í’gÿ`g‰h:>`Í¢èơh–£6’ë$–‰Ø?“™‹}IÀÍ0Ÿ =bôˆ©G0Œ×ObÙŒj<₫øôéa„ k˜ Ùơx¼¨VÁq©e¸{inxÄ.íZi¯Ÿ”±ưÇơ Ïe¸ÿ>ç÷bÿúAdp&:[Ôôxçøáï gú÷µ·çWy?Q\7.äËbnFÑúÂñáđ€ÁS†O™÷tÉ>.DÙöüøpxÈ.ÓÇe­ùơÑ₫‹L$¡pV¼₫pçøˆé_™ùu£Ơ&*ô¦—;ch{eçøH­÷¾?ư\f¥ñÔF”„!êâ¿ùđ ˜₫ÛßÑ8pæ;PđO„qÈ该PM´HkGŒ₫Z !>}ú|̀Gh¥èŪ>€±—ĐïøÛ²]° Â8ÍElz€°5lü­́t6?)G®!ü#Ÿ~퀡"8jO₫3%1bDb|&§MàƠÿ\ƒ§;›ÍZÀĂÿÂÿ6[*Â< xÖ øđxÖüé¤L>¹ÚHûˆî¥N?́öLŒă–÷_@¤¯|¤êYWœo¤£Ë5?%V|ꣃ'qÅ¢'";:\€Ñ¾Cx*xÍónØc‘´!…G„ëĐÅ‹¤ ¸E(¨'„àÈ"ˆ;É‘DgbÜ_=!øF(Đ¯«Ă¿EËøƠ‚o¤ưÚ >rÅ)'î¿@Ø^8ǾĂnHS°=’¶™™Ç„đ¡z´º+>ùœô!~Ù€ŸwẪ"ƠÂôÊÁÔI2Êäspø™ÎS# ḍ¹ØÂSOø¼áÑûgí.ÎCÇÅYW,°cíxđ)a:̣1Á“N¸ZÎoơ„p|ƒTá§uœđ´+̃w<Í¢Ü{N8|œô¬+Æ6êÄG„çĐÇÓ2/åèƒÈÚ°è§„ÈêI'\ ¨̉’ă‘+6:Óáû$–Ó39m›}NÈ\ùauĂ˜‹Œ¢‘ÍơcÂçÊư¨º–V=!$® ézÂ.±=*o¾—>¾îÆ}·Àøđ_ ¬¯|¬­ú¬Íúp’±ûÔG×ÍúPß,´>jï̃ƒ ̃5¬ú²ơ<¥g„íĐÇÖñ<Å/ÚXO=$₫NÀä€ßV‡<+Û̀ơ„ 9A¿v‚ß""Ô‚ÿƒ¿“ˆÈD‹Hºøcà'nYû¼²HÔƒ®ˆZ”XûüPO}DTYú¤eǴCBtà#ê´/ù2ó6¯›·Ï ·çë™·¹(ÎĘ—qÑ®àÖ̃!ÔGjïy'́m̉[?"\Ï\Ưäv>OÂFøđ;7  ˆù²ˆ( //octave-netcdf.cssoctave-netcdf.cssE 1goctave-netcdf.htmlOctave NetCDF - A NetCDF interface for Octave ÷÷ doc îî!qchVersion1.0r~ëĂŸ¾Ôuˆ¼äư8ÆE‹c\?ôÆ1>́ä?-qưak²vrŒVǸ}„đ ünñCÑæ7O₫3¿“cüP´9ÆÍ¯)nØÍ1@ăæ ‚á€ïàG ‚ÎƠÍR ©Ù9é=%LG>¦.ÎI„Ör~[Çø‘uŒ»9Æ5”Ö3ñ#ëvuŒ[H\â9Ƭc|ØÙ1°Ú́÷!!úÁAÔÍR@X ăµ7åKåq uí9ñ#ëvwŒ»Đăµ7H~ZÇÙÅ1®¡¶9Æ+Ï ç³›c\Cl£Ní?úxºQf«cÜ{Jˆ\¡ÑÑ1ĐP¥%Ç#Wlt¦ĂñÊsBæÊÎq‚Øê÷>WtuŒ#¼–Ö:Ƭc|ØÍ1®¡,²=êñ#ë®ç×P5Çø‘uŒ×rŒk˜mÖ‡ï?²ñawǸ¶ĐúhrŒYÇøp]Ǹ†ÜzÇø‘uŒ»:Æ-¤6Ö³ñ#ëvvŒ¬cÊqŒYÇø°£cüP4;ÆƠïÜH.ñCÑæ7Oº‘Ưă¥EDXÇø‘uŒ»9ÆE‹c\? èF trŒŒVǸû¼²H::Æ5¬%ÖsŒYÇø°³c\ĂjÙÏ1~dăĂÎñC±Ä1^}n_Ë10—8Æ̃!ÔGêµă¹Mz;ñ#ëvtŒfǸú€9ĐƠ1~1…̣ÑƠ3̀WzơŒÑ«ÛÈ+—ƒ4m3¼úÊđ€©ôc—º¹®³̃ï€å9ƒŸ̀t7`!̣ÆéU´Ă†?/Ú¢z·Wï÷©́8̃Wbî_ÊP$Nøà4ÍQÛ:™ÍDÉ/́ËûÔgŒ>cê3¯¨BrXêÖĐUKñ' G¼~ÉûŸIv́×ùMø wëµmEz^m!}½èƒưƒEu}PwøkpNÁ́>˜•~k ̉‹.¶Ôå•Ó2/ØÈ”Ô‰q‘ b±"…çe.¢!UX¾_,ä‰ÿLØk>ez€<̀̉d>Ư9~{ơ₫ơxr¬K<#,Œçlœ¥S@ÆÅ(—…iÖ™',ƠƠÓ4́ArÆY”>&z˜<ñ8¶ctg9áPE +‘„s–&ˆ–(År”ñlÎvị́–™¸nŸƒ2‘/ø° y6Qi¨';Ç^‡=ÙyÊ÷B&,Í"‘Á&äe<—q<ׯà$Ô$›g®aâ„̃Ô4 ›‰Œ NṼ·\ä9Ô×¹Ă*sÁd‘ûE~z,ó¨:êæi)- ^O*/¬7­Æ Áƒlñzvü»,&@gØ™!ô;HT}9à2†Jà®øŒ‡Ÿ ¨³F©@Ï*´§Ù=đ đ1|4Nă8}„¿Ât:.{”Ådu®ù±¾¦ª¼Öj–‰Ê¯^MÿÎñ́Ó½¡56¢A›‰c%ô4ư€™ 2ÏEÄD†[Ÿ]c2a F„™™Ñ„ $êjôĐXÜBMUÁ+SB#"ܹê]ç1Î9Ô¤ñơ°̀À¦„\ÍÙ#đ^V&‰Lîƒw{ ¡}—dEô´0|:ñ«xĂn¬ü¨w­‡m@p‹xºePi²Ö) Yµ$_qZIgj®oƠ˜Zjđ[Ë́WƠ–‡Ñ¨+ͲôAF"g(¦GƯ¬^ßM)2jïPŸ ÿVÍ+hÓØXÆ"ïtL¶×÷7²Çâ¢ÿUù¥éậ%Ó¤>œ̃1]d!¦̣‚9ƯR¨Mϱ®lG;&@…~†bu²n¼Ÿ±EUưgŨôsĂÛºT»éç–·©[ưŒEWy×̉N¡eƒôXX]¶ ô¶×œ|rƒĐ“  ±«DÛVé˜ưvrwỵ HJÛŸeÀ&é£xÙª’&ˆR‘³$-X^ÎĐ̉t̉7ú­ÚûƸÔq 6 A94ôؼˆØpÀ̉ t>1-ćs¦€+Q8\àYøŒº‡±ÁïZ¡Op:eÊÚdÖçŒĂB" ô.Êœ›m´€@’Ô…£>PVïEfèè)ÛM̉À}q‰êỤ̂/rZN½gµ9ƯNÊñ8¶ —•ÔØU$|d9½ ºz¦ó8₫xF“È©ëX å×¹ö¨(ɵ¦GÁè»4)pMÄú·é̀û¡*Îÿ¤ÿÆi¢~8xª^5c Ÿ₫÷ Îoƒ̃Ùû)P-ʵ÷SƯíQ9é¯ă[n¼<ưÑœFº‘¯ŸDü_Ǘº\¬¦QCµEJm´¶ºFPûPШ¶}j4½–TG•)Ä>Ïî±oq¾s¼LơØSâßê¯gÇgªÛ-4'̃GQä ¶•UôÅ>°D}q̉¶HNÊ(V·}n§XÛØou%¨}P,@Zb«„ˆ­´kDBSC­̣g­y, vz}kÔ¾†á+tø/»Bƒ%¶@_+xô?iï³´œ-‘¹7¢(3P—Ha,t”–:Í’Bf¤/Û•C1D™¥i0‚̉á(‘8P<2¤°×‹PÙ •> –MÛ›çEV†E™5LÅÙ?L'ˆù¼êèKG]\Û5,o¼#]†ơ³Îê u(*ÅŒ`€S}Njs®–üộäööâ´j˜ürqçÿtu~wzöæYÍZQ¿ôàøkçe"Inhµ˜*kV7M ”ZLD6*ír:ö¬ÔϥȤ ;/<ç߀|ç˜₫K' ˜₫Fod†äAí(Œr;câ6S@° \U¶Ÿ& D@ö,°úQæø{ä³ĐpeX ]£àíÓ2̃ƒ|ÈjưW¨÷j!À“‚.²X ‘î¶`ܼ¿ª̃æ6ˆ»À&h³A0×wÏ <`9úí‰$9đ½̀íÇ]̀4»₫nḥ³¿ơ@‚ưP +€ M˜ư×¶Ú—èrhÿT'0ïµËÊ@˺ %G’²±ü""¦¾uƯag !{4­÷Åüôg̃–ö¯Œ<3Èå°¬Odnx7°³C¦°ßÂZŒ̉1\<p1ùè-@ÇÛdñ-œ‘̣?j€Uï£uâb}‘¨§)7$Æö#ZE*Áâ™×ƒ3¾-‹Y‰W- Œ»YfEªÂóŒ{î8OOœÀ å´5âđ®“ATÖCv•âG¥‚ºŸ 8 ­ÆËvS'i ÍÈÎ÷ơ9°zÑK§¼Èä<¾@2¿“v¢Tæ…IÈUTæÈ”1™”ºnqÈè€çÀ[„Eol!ĂúaºåhQ˜Å̃~´z˜… öfH[ ³|éàÿ¦eø3Epù¶ƒù—¯÷…÷¼¶= Ó2i}|Ô” ¢ uJ3u†‚Nµă¸₫îªÓCi¶p(FÁ2I1€ô) …²;Ï»MäñŒOؼ‹Æ†—ör™äÊûÏ3¬EI$CđṔ́ ¾k¯aƒƯYH@¥Å06“\´|~8 $‰)ăÆ`y45̣A€8»Ü™™­XK•³ÇI “́&s&>—<†ĐŸµ×j”s›U¹“ ¶pÈBBƯăD†6×’`?Oy2'C}³4Ï%lÏ`ˆ´Y.y$;á´¦'ȤƇS5c Y ,ùỲCʼâWlW| Ŭ rÂ3Âêí 5Ñ;ç4^Óüq̀aM“ÄÈOĂ£èc:†®»öÑÓ=íÅ C4ăI1Á§.*3m«ªºăÍ|a?{ˆÙÿ˾|”ÉGdÆÿÏÁêEä”Jd“÷¦|-¹çˆR>ÀSKđ¨WÏơÆÙ…¸SL3T”…N)t2Qûr5qN@)„¤‘È„‘R \ÊÜ+J•‰èEщG¯Öo1•9èdÉ­AUánq@{\SöVu霖ĂjN‹#Lq‰QRư[–.ÓŸ¦sx¦₫đ̣nU6‹ÊAY7A1³Ÿ•̣³ûwơæ¿×̣dÖÊíƯ³F‡<.R꼫(»éu»/ƠÅầt^e诨Æ<đ¸£"Ă‹bÓdơÚc5Ù¶ä­h`úƒÏª‹AUÏ›ÝơÓ¨M#y[ |jsăyJgy^dØÏ@7,Ïëh½’º¢× o€œ̣ÙŒ̀Ϧ<ï|¸b’w7vÔ"ªÁ`-¼Đ¨“ị1â…P¿m(®Œ¨Ât¤Ơ“¿₫î¡ûû/·ôXyeŒÓ9 [ XÈx½Oha ‘$ÜTĐº#Ïœ¡3-iñ_đ°.s×ÈMØ:ỂƠ½¼‹d­s_ïê’VÁíCÎ"¨¾“kƠ„¾1W₫¥7+™Vh-3ùϰB O\Sq±©Ôlí₫%Ǥk¶ú” ^ăäñ2ÊV=€î\<ÆÍˆÊ¬ª½ă3(>Ê$x-­±­ ÓaC|‘yÑ0ΕMó^­o ²B$[1¿ÿ|fô¦vmƠºâWu³Ö7~´ˆµLÚ(ÚÀ¤UmsÖØ®?³Ư/lß±)÷x£é Ü<«+7§Ú³¯êέgŸ;¾öq³­fy¡„ ”r–j‹ÔƯËÍ …₫>#wV,7}$7>°ƒ§›wÿ¾ĂNk-‹µ˜}³³ÂÑ›m§¡­lÜA­ñªơ8¶kª5V/¶âÎĐ›“/fœ› ²¬}B+|ÚSµ-{Ïd˜ù¶ăxÛ¦­÷|©8|æ6Ô©‰E2t Q…)OÖBÄE*Y¨zEL+ú’‡Ó=?§^Éiï7¯₫±©"Ø‘¦Àh¼·SƠ?ư{K%Ú7*Es"¯‹eïKV‰Uw¿Go˜nÅöÓSܦ}£q´Û!§•ƒ¶œ6igS X%›‚I”3Àîåt¬œë²•¶úwÜ-öÉÂoŒ¾ZÏeÆ:%‘—±-mĂåI¨å¯–uQIđ¸§º—Ô+û@rŸ'˜WJrÛBu6äç₫ØEâ¾è«è•&ƒ₫&XSưJcr+`ÙÿRm¤iđù$-cèÿăƠ¶$âñ£'ç_́¶¼6 ÇM̃¬÷ uM D”d äe8…mÈVmZyËKaÔÏßzuJÂxĂ˜¦œë4eM@±ûPP'•M[1ªGzW È~ŸßJ-J˜&¹Œ ·4,„Ê}Ơ™Ø´ŒË²jQ• X× €$ĐyÑO°µFéE2^3¡ÇF°¸ÑÖÂÎl ¢[“·6ê†O6] Zis̃¡×[‡ItlN¥{Æ?«[EÛÏîCsÛèGuÛèÊGw K§w&®FÊh¹…ÍDñ€Ñ§ú º3ïú!à5@m¦ ạ̈Ăw9è„܃ßCB8Üy^°BN…‰æ‚»C@[> e“­€ư³kZG£iൠZü®H1ê®ØEc®6VwÈ®A1 K¯ƒ0¿ Å ¦5(澫¥>L6Hl ³*‹cz }åï"21×P›«€×!©_R!¨Ḱƒ DÏx#Áî|£¦ưá"÷ rFZ¶&Ë!`ûBc‚Ót&k̉kđ̉8úØÑ##ß‹ƒN VˆÊ²²ÙjĐíûCÜAïªÙœñztÜÖjë«L•Lo+ ÂN»ơ¹3£væºÁvṔæî‡½–öÆ<4ýÜ ³§_ÙĐ̉6Nê•3rª^!%Ç]Ăî¾^˜Óâ ç6Ǭ…Ï+nÅ\x9Ȥ&Ÿ ùèd l‘E¥~dî>–F"Ó}å̉‘QhŒLª˜”€ơA’V>™eâ%§¬ơkư1¶T!$ư½Ná³}•²Hv¶ƒƠơÚoèÄ6`Øuå׳7Ïơ—ÀñêÛ|Â3Ó8/L}}naî´₫ƒÈÖƠÍWgua]A è6}I9™ •™jOÁ©Ó ØE¢ÔXhvŒ —̉´ü ÓéưÜÊĂ;’TĐî§ ¨"EVrtüĐ“£ îg#J³]Ớ¹.‘† ?ÂëZ0Øp8 Z?ñ=¿{?±ø<*ôÅ‚ö|€>Ø$ÇÑ;7×̃"1Æ‹æ‰g}ĂØGzy-ñ¬ñô* ¨§æ‡FFÇ"ù":’Óî2̃MÏ[$»ñnÉ¢›mwÎ’́†ÔåjGïjRKÔ4fɨ^Ç-sS ߉ñơÂ+o³…$‡/¤o³.$ëxúæ•·Ù¬™W¶®ÆˆÇë¨24æuÙd1/pƯ©)ñk37ЧƠơ×}jÏDº‹IîŸÎ×%9ÄÓ7É}àY‹x₫Ÿâ¿P‚æ_ƒ]Óª ~àY²ú‹mSHk±ưæn4}uĨE>/¹ßn{4/„¼.ë?å“4«„ĐˆßdR}©ö VƠ×_ª₫6Ój̀̃m*n€O¸6 j-ÍAÏV9wÜJmẓ’ôCwoµË—\}yí²7ªü‰gÔÆV%µ–À‹­ÊÈ;HkÊøÚçĂôrªz7º/u/}Qg/z_[äY¼[}øÖ|‹Ơeø.ƼH3~ß*ÑB„µR­îFtôÓPMq¶ÄLÇú|^ÉW8 sQjR-É´À®øZ8T:ç3 r_áEÓ·:--ôÚcJ“B̃—i™/j1ömöÈçưèÎps½¥°¾¸]ÅƠ3û+ŸÙƠ7đºÁºVW°·̀éf ¾ £{ÉơăMmáă±Í¥X* œÛ!Œ4Ø\xƠmë¼xçr5]Üÿ«LT5Si¼Û¢ÓƠ}ñ³¢£¾Ø™®º_˜XđÔgføbN&„[`ć,nAÓ%ÅÇê•₫a.‡ÚVx٫Ϩ` ©XqÛc3±U}JđÁ>y’ƯSÛ noÀ®̃`“°£_½`EsU’î»!&¢a’@ÑêĨ¸¿Îô‡t¿̀Ơư/¤¨y..„"³²§¬â] …̃×ôÇ\¾ö5ßmÂẠ̈m°²ßÆĐ¡JËû ükÆ̉#‡^Váo©ÖôAI넦ô“5ăñØwÉà•ß7—çw§¿ßØæ­Ẹ̀¶§«™Pn®;Wz¨ûÉœîÈ«CuĐ¿>ươüôßoßÿæ!¯cÔB¡' ›èeàs¼™q?|‹d »ºĂAï₫\¨zgnÚ±< _Ï"njçâwëQŒẺMè)¶=׳^ÑwxuúñĂåù•e}Û!a`?*ªça0Óú{&.́f^É ¬¿“ÍIÈâw.Zü ̃Ac®ê÷‘m‰xi²áÁ‘_ñºÉ†QÏ €¶›†ă–ÊÀ¾•́ÂVy‹bƠüÀ¯H™{j˹{Ä#1̃~^H¢3 §…ŒdóèíµI#ê•‘èÖ¼mzº½¸ÙƯ\—‚?ˆ\…ö1WÉú¹›»`ö₫ƯS‘e‘.!¤ç~ÎéZ„¤ơJHt}BZ5Kˆ¼«¨—êÛæ7Rï[Q8.è>Vkü1 Đm¢«™”®‘/º"¢­nuÁÁĐX2_=Vå*Œ¹Ö®®Z|ø(u3XíÔØàP˜•@ }0Vˆëœ̣p²$sđÂ=ÍGë²±‹¶on¶°QÍÚ‚ø_ơÈÈ¢Ó:ÿä­g™€H¾LU Ưÿé$ ́lw[T°·¢Puœª»…/CøÆ:‚§`*r,GÏæ=¹;È^NÍ`KHö‡Mnm‚5({'W™l‚¯”çx·»Q›mƯ-›&ño;(À+›Ơ»èÀÅG½&êUa/!ΗmcÚ”Ḅm‘)‚ß–`íNq´m‚QS$g14³S×ëJL)dSºëE.Í=xå ^7%T#ê›”>đ́{U·q©¶¯nõ¬³¶ ‹Ûv₫«/èÂK.¶°Ú‹o#ÿ½Ú ïÜØÂV<ûk+ÖÚ®·»8F¿½€WÓ;ÀèW/,ZIsc½ÿe5Woư®ơ%̃̃EëcƒÎ<ƒf¶‘ø‚¨À-Ó¶i÷)u‚ÅØ–²¡rÈëàªg+|ó‘¥XlºhÉÜƠóẨLƠÊ–ñ¬:m¢¢¿Ư –w¨•¦‘Ö,¦6·…ÈxÜz3+‹^Ê«ḍyI¯‘§N8i-QôªĐÈäó¥}ÙWÔE–wIv˜ËÔadF‘¹­…»i¿ÀwÔ{D&Ÿ—úªY×÷¬ơM;')[WˆjQĂû6G´}u²›Ú$}kq7'tă]Ç‹3 ÜưvE[ÂèÓƒBP/Ζpó¡?‹³ øm£/ÎÚ"ü+_ä³9Ç{´Ú‘ç/ÎzfăƠ¼ƒV\•—&tïƯ”[°<µà*Ï^!-äÚ£ú86à[B¸­³xÛ¾”¿Îâ¿Îâ—v…9|æŒaƯ¶0Qß¼\k ƒÅ×_%¼¤OË}1éè¥ ucg§/Í Ư@D: Øå`[”¾™ÉéÅYÿDºTa|^Ă„º …ÁÖˆơk©‰kµ/̉£îL‘]Aj ´*Ü .‰÷¾¨áz^ƯöÉđ«̃:¬¥´W'®M" Í<*“0.± äóñŒCg¾¯̉Âf{‹VgX=E5½U×éäåîÍ•>KMåX(Á}0h€­Ô>zYơs‚JOlth{ˆ½™É~*T-'´ÔÇ’ ¨U©/Kë8n¨¬ơ/èn%̣çgôÁº̣G£ë[₫ܯ*€Æj!:óu¦ß—hV K’üf‹s¿ ;›Êû Ü6È̉ÄØN¶_ªj"úæúæ·“»§—'··§•KèÙ‹g¿\Ü5>¹:¿ƒ6¥¶©é©»ŸœA™|î%6đ6›½)ăø*”Ñ₫xé v¾Z—I<Ä}süÛ´ó»ÏfkµóóÇ̃s[?‡µTc¿ˆQà6U7À•q́Ü·¶qŸ¿-ØÜ êZ}UÇtº_üUÅù~55Ôơ¥¹s‡ß÷ƯL̉NxpÉ… OëT_mHi„xKÔÀÿDĂ]ŸêPœi¿©ieÚ'ímGÀ½Cz ñø#¡o6 =t „G ¿*Ù‘Q²ÁLc^Ÿöl×f×ôú>ém‰gæè°"p7 ²-xeê×iázîèúŵj–£]ÿƯ£*—j i¹AOơźÔen=ymë©H¥¯¹ë¿Ü6=răl›¥Û±Fÿ”fèö́Ϻí)‹ơ´Me˜¶›{ex 虜.fnÍ|³.):Hû¦Gú«›%`]Û7oƼ™KQÈ☕únWçnç®Éóß•'ï}.²;\ú…Dê†Ùô'kÓ¨AÙ;‰*Èơf_)E¡̉K¬¡§Ö¼ ‹ÚuÓ-#0H©œâÍĂí¥ïøo ¡[:„^Âî=Ô–°Ó»,}xrÈ3z¨£eNQ$ fa­…à»dz—£7æGé 0½3겦y œ¢ZtLæ@|LF")äX̉c ®~ óú=¿*ƯûïúE}—0¿ăZ·èU#ê›å·̃~NR§†¿ƯXqÓöÄ­­Ă ‘MMï̉¿Z · ·×öƯt_L»ÚÅG/}æƯèf*â-0óæ7{¬Ü[¦Ûơy÷k^̉̉đßcô¿îÿø®îÿđo˜éK(¬tÿÇÑ+_&lrHí$ÂÆ€¬,ú¾†£³Èø·¬$1₫º&¤÷kB¼ëfúâúåׄ<{Êjåü¾…kB–ẹ̈Û—ióióßH›_ơÂgF̃́Â:̣m0ơ² C¶íD®ÜEÑ•m7¿cd5æư†×ˆ4̃ưGsûµï—-ö* Ùu1ÜoÏdÑøIơÚ?É­ qY)Ơ³CŸ©×/¥RȶÀÄgÛ`¯sç‡]±-)ÍK:67Vv­…*7ë]_£Ô‹³¾ó/èj=ªRëÚáJn;ôºízs¤×uÂ’}́"¢„ˆ¥soq^©ÏM(¤úb-QÔŸˆß,qçß7å.½|éÙ³Jødmªíỵ̈%ơ_(pÙÑ:ZëÚ¦uC+ÜÑôcà‡pă[ *n®äÔ%¬÷ÜÁZ|GHze:‰ÎÜrW†|­„Đ®gŒ¸Î&zøm¬3ZÈ(×3‘ÿAk·æ¼aeÊ~ î0NóÜet×ĂZ5¹.ôöZÔªơJ¯tkwóèé~‹68‹È×ö7]p¯u¾BcœÈ¹²ó;ºå®ưâ}æ‚5ùÎÛcÑ];}êzÔu ÿàđđº)+Qß<¼QŸöå<üÍ:$·óé&M"Ô‚­mË}Ç ¶°¥ôVWsí>ëÖƠ\Ø {«K½vơÉ¥v»gw>éß•y´]ïD÷é6³ă¯₫èê₫èt™äæṼ׸D¡0itø̣Zú„BÓ«:0·¦M¨¹nÏOyôđMïế†`å–—¯,©Ö¤%ƒ®gzRpÛ-§q„/wI"½¶uDzYçLf‘å s[¡> o´Z­c²q‹×1/™‹9ÄcsØ!ÜçLk₫ữ禳ùö/t¦UXÚ¶ơùSŸµ×íÜê Ûk·÷oƯú-éfk÷[]«zÔr§UhæQ¸;7ä¹¥üVi¾ÙC:ƒéƒ·9É/u³đRGûéT“‹byơÆóg›­]ºaPơÍTơ¢ È»ÿZyÀV6Ư Su/ÈĐ[Èi§Ü SA)i.,·UñrÍëÎåI/zlQÊÜöên®®pÖM1¥‰­¹HÆq•³’Ô₫ú=µ|ÊçI¸„‹L¼» !’~ùg„ưtÔYFïó$\£ Îïªl®pGºFm‡l×ü“ºÚ„?'Ènh¯i?“̀H´Ée ÊĂˆ˜äW$–£Êç ¿?ûÑđˆ]¦„Æf̉¾~29ZZG£¨ª+å >J³…zÚÑPÛéC|wủW {$x5Ü¿*ÓÜÖ đøÎ§đ\&! đ˜ç+äTx ŸâC¤à Ü₫œ‡)ñ¦j;tˆï®¾© t¯›0·±©xM=…ïj1Û…^¡¥M6’|Ô‹·̣Èl%½Ưa35ø~·Ó@íc ơœ¾·ÄB$Ơ´lMV ?¡y¡Ñ“pÎäwü ô½²ÙjĐíûĂ€ƯAáül¾864Ü46ÄZŸ»ƒY7~4¤äÄA}°½ ôö,æÿg†ÿñǻ¯€÷ËưtỪø¯‘¯Öi ©đ§x[ÉđÊ7¶Ö„?àù8wËPưünR§£‘È”¶›>ˆ ‹è™ø"s¬yG‡ẵ 0¶Yå°¡x‘²Ö¯ơÇèdù˜Á¢×ß—ê ÅgûôLy~¬ Æ|CçC1$'ªú’¥™₫6ŸđLè/Ă4 Ë ûg‚G0DÿúHD^°¸°¬xCƠHè|'ë•R¦0t hàwv‘(u¯Ù>̃]% m‡ét„Ư Q}àl$ (ŨO³ºœđy¼Mh"Äiç_ J́¿Ü9VÿTœîˆA€cg™¨üº?Ë-b!¢c¢·Ÿa@i¶Û*s•÷ ½$ZôØp8 Úå´·©{{? Ø”ứ *ơr!̣b˜hß Ùû V&ĂĂ²Í`[Q~RLs±üÔ–ư^^]~jà½ÊOÚÜ»9TU~=ËĐun›T‹µn5tă%¬KÚ ©ÔÇ á¢€"¸G©X¯}§ËÅïLávå<ÇyÖ£6‰ñÛl¶˜_8Ôü6›u¢f̃75¿Ífët"ï® @̉Ú ±ç¾ăZ¹½¦§«†½_€›´$[ăhøƒCV254đ¾Éª–˜a„ä—Buq¦ô¤.ư*Í&ÔÊơ'1q Ÿ_jkßê‰Kåi)¹häZM¢ăj˜ư ^Yÿ)Ÿ¤YQy«á7™T_ªư"“âųúKƠ߯qÊ+_Fi9+ă '\ëÎØît¿,ù,MPUôÜ múäƯáçĐâ§%ÇL·ˆ́¹è\¾jSĂøå!¹jÁc«$Èx˜«̣ơƯÿú?{º¨ĐttØâq¶b+Ú£áK_₫tïD[E¶yäïÁóUè·©ƠéÔævA‰m_]dÙ÷ØFvƯAơÙGvc>\¡ûëÑđ•φ›¿VPm -́̃xđ+vVm`Á¾Ë.ẻÍ·6̣Ă¿JçÖmYÊÎÑđà©ÏfƯ²v\,[`°]VĂ$Å´„±z%4MO{ êÙQôééÔ¼u¹‹¢·Vª¬ô/ÙKus¾Z© êÑđà Â]ktA­cܧ-k}êv™ư³×æmK›ÔE·¹ç«ô÷4]2ø•:“*†llª›³,葺ê8{œ*äuŒeûfÀ%-ô†‡.ßuj¡gà÷Îe}óŒ+I÷¥û\Hk5»[äG̉“\ÑY´Bÿ;Ă•øW³/Éj`œºÖâ‡iùûƒỪ Uơ—'ªÙEX(7U;Áí¹ƒâ¥¹NGV†Är4ô%H¼ Ü½k c)óÇưV°¯ňE±j‚̉רLÇÔ¡Gµåä¡ "4‘o?1ˆZO,a“Do¯Î,z¯̀b€öÀ zBÛë.rIyé=µÙ`§)ÏlÉN?÷³̉Vßi ½×6@ûLR°m˜VV—ôb|ÛÜÑF̣z+ ÇâÆÎïơ”̀oAé–Ôµô|́̃²ßv”kw“\MÔS7É!µ(í™5W+ü>¼p'¸Fá÷ưÖª½+ó@mfsƒ§á´EÀ;f¯̃ Ü_ïƯMçíÚ5Ư=““"ư%ÄôC·t#%ƒ§wBRI)̃NªắFZ°¬Ó£Aö™*À+ÈßÍ2Îơ ® IÇ–ha/!À—mcZ‹ Æm‘"‚ïI¬ơN‹8¸6±¤©³XæXm…fÚ’-PÁ̉L°ƒWÎ̃wJÓĐû̃gúíuͯÔRµ¿>³zơ–ô€ü[¿…-i·°¸‹»OÿOZÜ…ư~·°̣‹;Uÿµ̣+uZ^h¾¢×nœ¥Ó¦ÊlƠ¦ÊqÊ#œ­µU₫Ê]•¿ISeÖcWå Ô™|^R}₫ÔIg_]@¸½j2ù¼VáùÊ—G̉Xµơ‡8Ê­c¼Ô—¢ú›*h̃öO™‹ïÄ=ú£èr'®Å°ú¼8k£P^[̣–äÎ×W›…ë‘ƠW=g,Q6%wy³ªÅAZbỖÖS/RÏaṃåRĐBÎ<ª£+o–-p§ÜgQª¥¶œG ó-̀F—³º3sÇĐeă•‹39›˜ư^skœ»´EÂá3g z$hè}skûU½›p‹›Ü“u”¼Mn2X!DEWo5Îẳʵë’♜öy·̃Ơ¥ªƯóêºă6T;[#È-)tkơëĐƒ́Lu]T62³·@iÛ ³%1ÎĂUBëÜtplŸÔ¶A^ù6è«N@›8ù›ÙN&a\b«±çă‡~PÛh±½5ªó ‘ͪ¼è¸§"Ç5t"i¬2iÄ ­ƒAp¥‘ÑËªå ”—a?-›*Î̃Ñ}mè¸.TY’’2‰m³ê Ó:§jRư •åw p†Đơ²GßBŹÓ`KRe­Ë ́*mæ²Öï]Z°²)ßLåư¤€° 8ou³tƯ{O7¤{s}óÛÉƯÇÓË“ÛÛ‹S¿&C={ñ́—‹»Æ'Wçwà$®¶L÷Ÿú°û¥ß·Ù́MÇW¡Œ–ñK‡ˆ¯:Q²‡­orv€•̃S÷Ùl­̃S₫P{îAåĐ¿êB1 _¦‰9ız”£rƒ¦T[°LÔ%ôøª>®´¸Ÿ’¼M¹º¦‡Il}±jéæ;ïnf' |¶¤•öÓ:%ÁWëPaÛEđï—ª`tëS%í$4ưóú¤¯íªw¨¢.!°$ôMẈ̉˜¶@\z›¤EüÇ% q}ú²¹®Ạ́}̉ÔÅÑaEpv¥¤-ø'êVES¸å ăZŸh¸V•r´x¿û#ïR>ˆlù¸Á8ơE' 2Xú&"xkIû"[‡„Ô¨–eëctJdèi¼ ¯ç½^n±¹ñ›Î¦Úvl´?ƒq¶=«¬n‘É"G­gSI¢­É‰̀d£-¡´çMlÈÍÁÔ7ÍĐÛ< lîà:2Æ q3—ÄÄqSÂbµÙ×,g‡)æ"»Ăµ[HInüẺ ̃éHA®·ÚN º̉§¡•ͼ ëku¯#¹ö»œ¥ˆ£ö*\ü÷z)Çzź·.ZBóï²ôAÂ}• ywñĐí¬̀)Ú€aLk\¾S‚—Ñwnæ®›ă¢7lÀôÎ ¨¹‘ê¡3p²iÑ1Zø˜ŒDRȱ¤Çœ½å².\ZèwäÆ*:úiè}³Ư¦…~Ư’;’pƠëMj@QdëđÉ7ª!DVºH>—2¹ÇK|”–EKu“á•{ä¿hƯƒ§™-½…‡®ÔZ̀+8Q^Oụ̈]úomQB—³a-:ˆ¹E“0 L·Y¿ăV¥N<ß̀^üÀ³‹³-7"4«5g?zé®{wö*¶-HƯÙWîjÑ­Ezgiđ5À·´†.D6uzr₫ƠĂư;́áNIJR÷£W>·vnâ^Áµ^íÖÄ}eVí»•zgf₫äWâå¿Z½o«Ơ;í÷̣VïÏú̀Ø­Ơ»‹e l¸ Ơ{ïYÖ°wf¼ÚÅ·vÇô˜é¯–ï­ĂƯBËwµ­+¶|vPá²5Z¾×1nƒă–µ|ïÙWYé&̃•«6ï¿o}ĂFđƯÛáHkoÜ®¸rÙb¯̉B~È®‹‰ÈàÆX¸S¶é“jă÷₫¹lYIÆ³ĂªmÚ•«¶Q’¡Á~ëívM¶¤ô-é4ÚPa¸¦|Ú¬íñ *³î;®M@—ĐăQ•» 4­Pdß½¶&× 4ơI”‹bPÎe‚y»ç°úf-Ë‚™^?íÁ‹Ö7y.½ă™ïv †ß;a6̃‚ñg eu4Öº?cƯ Ô —e|ă¨ØĂndª×0S:[Ê&_̃]r¯Œ ‘ @Ô˜+` óû–²Øº m`tơhÛÈ&°x¯g"1&lkë ¦Ḱ‹¿eŸâ•úw/!'“4@o¯NPz¯$e€öpåĐ·mfßà5­üÜ,™¯̉$"r®₫ú~ZÚßµwÛ×Wj-X“ï¼ ƯĐ3—.Í,xöƒĂ¥2 4ô¾¹tờ‚å\úÍú}¶sâ&eÖ4£•Í–ïx}öCƯêâ­ÚøÏºx ›ÉnueWmñû/¹²nc×Îó»² /¨ke¯Ñ¼×Æ·ÿjƯûçoƯ›‰¥×=3Ù>ø̣ꇷ‚ƯëÙ­aö Ôl¶ç;‡ưúnËĐ[nK½²û¬>è²×GÏû­à¶ơÑLă{¿>̃=ƯÆh̉ăIc_˜‘*?&Ë LđZƠbú·wqcÓ…Oî\ŒTÍưéêGZôï÷êÇ0Í·÷#­Ẩ¦}ÏŸúüÛ©oŸƒc üÛ̃½¯ïKS ¾µ»í­UăeYĐü CÔnO· k)SUÚ²ơI”KMÿç>Qv²₫[ Ê<ë«}øJDùg_³Ï·K”[N›Xƒ&­áÑIæ«_ÏøÜ¤0äë]ϘoñzƼv=#„n0û¡GA&h\ơ¸áÄïtÅc£ }»ö=hÏ7ølKA`ÓÅ ́q"Ă &É!y|.ERÄsaÈ’ÈX˜ ^ô{éy.3Ê*íă9dê}׉R+û&V¡ª5¢óŸú°{æˆåiÓÏŸ9ŒĐ-gÚÀï›́ëÙ̉»¥ø1¾ ³v"ûî¹Đz yát“{aR¡)4Ü®va¹Í—+w.×xA9‹̉»}g zÅ6LHȲԄ.ă¸JüIjí•ØçI¸„̉M‚¼Û̀r¿4>Oµ',£Éy®Ñíàw•Ô7¢"íáqNN₫Iu?çÂÉm€£¼¾}“̀îaĂV¶îăÅt–fžIdÛÇÅ9³LÀJè% ^O*À:|·£á3F/;Ys»öŽ×O&G«‘ÅcVt³"AKJ^6Ü̉E$ưlxÀÔôr‡¸:Í Ü:–¨¸nB̉ @jÉl/§Ó¹Íy˜QæX¤«₫5I¼#ËbN&ZG"ÓM…0̉đöê=» ₫ ư^ÆkơFĂÆkÉôÆöGöw"·´€¼½÷ˆŒŸ3øÑ̀~u²­à́F…ÈW%ÎçÆ¯w%ÍÍ ³ră¼7¯&̉4„S¤,‚ÈØˆç2ÄơĐÇ,}N‘§1E•¨‚F²ªSŸÍDÉ/ »uÎæºâü°ú>½̣öêư₫[‘ˆŒÇûïÊQ,ĂưK$;Ç'êMv‚,¢^côS¯½~29\m_!S3)æzCWøœÀ´‹Vßx,ƯÎñỚhÀ_±ÿ]&‚>}úCÓZE2ŸÅ| 2ËDå×ưY&H3/D´s|ªq³¿Á0~B ́M&»MÇÅ#·ỏ2‰0GuÀ.’pÈ́¤Ê,̃a“LŒ̃™ǺÇ'OÆùx˜f÷Ov+?ĐÔÎD6‡–Ø2g3¨ØaưvµÊ\ûèD6â…„¢ËßHS2bÚ¥!:lTt¦c˜³Đ}â9ôÛV¢,CϬ•+€&‚C¿Úw™àÓQ,vơ¿HàèÙvúÀrR6΄àLb1.˜æ8Í‚\/&L1Eåñ“L¨₫c}Êưl\ơi±‡i¬À,ăa!CtDD"—÷‰ˆĐlø'Áø#Ÿ³yZf8º.̀MY>ÑB«„Ó0ûeeçÏ‹AP,6°v¢¤û’ñ áa 0bî¾sưÛ4âùä§"eS^fXÉ”‰)—IL»°< ÊQ Œÿwª§j'âb?K&fÖ=3˜Æø“E Ax]x„’¹ÚXC–‰X`êyÁúæ8B^“ÇøGZ`J$xPpÉÔ"äV¤©¥‰ß¡>́Q°|&8v*đ–a`’™‹ K½T¯₫8!˜e2CƮˬeÊ>ư0oư‹ /`|ÁÔÔ-19 kùÔߦ]µñÙ=qC1S&Ç’=Ê|‚· –‰PÈø¸̀Ba¬Ö½(¹ñĂà‘'đ§ó)¼ă´AŸfî›ỈèÜœúHädzÀ(pŸ’ôÑÀĐR@‡ Ă®¨‡",hQæ¸%‰Đzx€¾±H#9][‰N-œ ¦a°<ÿ¤!³–Y–á¤è­!Ó%¹Ø EVp 9üĐH&'vD­uăVXJJ3ự4äˆóÇ:¼"Åß`̉5À,8G»<̀*¾@,F^‚/UïÅ€=N€ î3^H\dv64c6-ó‚Í ÿi ¸:"”3‰É5*óEjpyÄ"bDT!öb"æÈƒƒ@¤C„D]†>‡Œ$‘T>Ỉ8îl¥©9Ëqˆs"«b"¤¦»Xg Ü¤3 …'¨̃]6È<¦,/Ä,ÿ1Ø=Øc<ÏEV0£Xè₫v›ĐwÁ›2Q+% ‚{ù )0÷<¦³,¨Ăzàn#O¢'(1ÉøûOO=µ¿eùç2ư ‡ $¢₫IÍ5 œ÷»KÆ‚gñœ‰/³O½?™ ci•ËÖz̉gÈ0£z”:#œ•äü“°¨3¡ú[!Jœœ‘=¶F‚Myö ’Ạ̈€O4 }¦!Jè#cPî7(%#'K!b"Ë̉D¤eÏY‘êñCX¿•Âgơ6âʰAlƒd¡‰2†"Gn•UÇ@ÄY™ơ¹èî7ZfÊ$Ó¨xÀx\Ḷ̉#Á”'嘇E™‰L‹ÆÈ¨ä1.S -(¬ *ˆ“\ÄsF™.¨Fµ L`mg… Yü(b»#Xéíw÷â"û}"GI%PÚœPTœæÂŒtÈ °'fȉgPâ Æ(d‹HµÔ©!QÊCG@` -'5*ôhF”úÖl\Â×(äí»Ë\0‡›qCê$ĐÂ^&}̀ ™À L€  å<…w1L‹¥ûŨ3bœÁc”·º Ư¨øúu.™ -q€QÖ EŒ­&‚,'›pVf3Xp Ô²YNN«#!Jq=A_–?¤’ÆÁ9(ỳ" ÔŒ^Ö"U1¢ÄQWÙBœ;²`b<>xb›eé,“¢À($»³úl‘NÏá¸Ê}|!O”Œ)sBëèzÍ“4Ù‡±ø6‡¢vF§jlĐŒœ‡@”!ÚàÇ~I¤ÄIHuŒtË‘†ƯbjƯßüv»ru¶z}uvqwq}u»sŒ¿²“«3fƠ&Xj<##]Đî‰rx̃y ¶n,чh¶ư-@ Ü9‡Ûß2ü‰”e$ÍG†Æ[ »d ²1 5X4 ¦‚'¹=÷cùI°˜?ªƯ"µ¿H]K0Đ–à@‰°œåb*aJ̀7̣Ü5Í̀{§,§ÚÄÀ01ƒ ü 0P”u±R‘†̀=?ÆÎ!ưX½B†mQĂ%“B;OK…nÈôo „ÈÍR$Q YÅL?œ‚]çŒÀTƯóD₫ƒ₫w—j$¤b 4!ZníE@ưtňÏ(k:Íàê㔂òbó|BE¯p̉Ă1du&«̣ Ô>®ª9*èé8à h·!éZt.*c<ÓppĐ³J̉¸7 çøƠÓIÇhpƒÂ#µ5‰J/₫K}¬{0èª_ØU;ÑŸ„郀œ{xlÖ×L²F™˜a)‚rp#̉@©‘êqÓö€́â÷¼m;!U¢EÚ¼à_iYîº?Z!I†C&BL±ÈX.€5x&ă9‹)9‰ô1́#fÉ+úFâvwc₫8`â œáL|aY(׈´@̀(µđ¬ùÀÉlƯ~§f‹Îsºx07b2đÄä.¹å3=MæỀ½&)₫ÀeŒC%‹&˜¡ø!…]&,Í« 2´›p÷@qx ĂŒḉQÄqÓÖ„ị 9ä!¥™9¡° ŒGá €”ˆÛ ¥2È–2ö*Kà·ääƹS‡å ˜d¨JrsÚ‚“C$}‘ñ$«&¬ÊÚ —^@³É½Cæ‰Eö ¨³q83å÷4’ëdFç+lă%Ú6W)è]F0)1!º˜i Đ_ ¶›2>ˆDj½b–¥Đx•P§  t,xalI°È̀(ÈécF` 2ÁQË,(D“‹Zfơ(Ѿ«HZQ; ơT&ƒ$iß‹–ø9JfZf„píI¡OB)Zº){âQí”ö̉2{¢\X³{ôH=b±$'N2L§S^ÑŒ¥˜Ú圆<˜¤€VœÉI$•̉TP† ]÷fÎeÂObyŒZÂ-™î§`ºç®"Ǭ×1¶bP‰1̉–À×&"LÂqOC]&';¬°çåơèÿ <9,*Ë £©±‚9¡E¼ß‚ϳˆ]è®ÂsÖxÄ>5ALÇc lk8º úhÎ8°wzŸÈˆˆér6J£98‹zơñ:ÖtD9éÅxĐ ¢è˘7çÖ(æÉ}ÉïÁ÷”Đđp›ÊtaÔbùâSÖƒ€ë@Mv_¡Ơ«ƒf"»Ä¤*iùV4Q²ßêFÏÍ!¥Î₫Àœưø&\=NRêƯ…)X{ä ǯMu[‘–X“H0ăá'~OGÉoüÿ¦;M§³411 cz‚oU^Đëó:ʉÑËE) iB%IkéØ+Ă›A /ˆ"́TZÆ8«Óî JwLó.×aăê±ÅèØ¢ËúqaÀY¦µÂÊXÔÎ(Â^ŸI!¾MÇl€26/!øi°ûId‰ˆá I¢ô‘‘s€–)OṭÔ."Ë’;À·­‰ñå`WÌ÷@ É̉AàSHV‚TBô2™6¶²Øm<…̃KXjYXq–AĂ:k¤•‰ç5sÈ÷Ôë N¢«A2I RœZµ8*KÇx'¸ç,¹ˆeiàṿx́áH‹ ½æ©ö₫Ù¹7à‡™œ¡}`l)•emU—!c¿¦àÀy¥‚¸@3¤«\DyPåk\ëªE_¤)êAGl€«£,2¾½±9¯(E å~hSÔٯȓ\æÆ}䲺g ̀M@#,̃J¤ íÏHLx<(ÇŸÈI¢]³j(dfœù‹ĐĂ”ØF{ Èg¨¢²H»f"²OËBGˆ ’)bÚ¯‰œÑbÎÓ̉̉ë©Y<å’1¡̀Âr †˜ ^V ˜ÚíÊ’4l$ÀỜØ-ª›P¤V—üóSéźà)˜e€'¡æáªEt"™l HüÁ”æl*"YN›…{’ÏdXRxăưÖ÷‘6ùH›®¨$Ä…ºŸ‚OBÀ ă¸ư9ơ12Éh”¾ºS2À©£›i‹”Ă€‡aiÅ^ɬl¬ˆÈ,Z0Ưa”‹$$\æÆQH÷ÈXq8©2Í;ƠÆTüÖ¼₫fO)± pa\’ªĂùh×ÖƯTA4§Lñ¾.pùæå à\Ơ.N›b“€PàoZGTºö“@Ñ@n€£¦ñ*•¥êÆ3v¾T*§÷‘̣ưh¿ KÄö,3z†̃égM¬‚‰B…±Æ*¡È„?ªUhŒBøÏ;Ü„It˜ôN‹Ô.BQ@^9UéÙd„¡A\ĐΩ4!)ñ}ªfWÖ@Ei:‹2h2_ˆŸ\Å•¸ˆ̃5̀£Ộ@Y¥è̃R“ÈU¾˜}f˜̃ à7å©0[xÑo®&™LkÍxö$…̀ŒQîø æ @ ¦G?Nđ̣¤l–æ¹ºăÆ„Dª6$…ÎD!¹1p™¸¢@8"&¢Uä1‰¤A Ä Ô=‹” ¨2nѰLÜó,!ÓÔyÊn›”¸Ò´óÆ R£¾™ç®›2'¹–ÏU^†çzà±²S 2 Ê6„tœ 3‘Đ×ÙèpsvïÂ9r'<_SÊ$̉H7§ÈNĐWú –Dùµ¼c®Åơ«Œœ¢ÂÀZ1¨“ĂÚÆÑ¦j÷”Ÿ¥fú$)¡ưDy/¾áëaªŒ^/ BF*&À骬*ßù…Æ5Ø ÅÀPụ̀Rˆ˜ÓÓHă’úDp¦îcƒg^4V« Nl>ÑNi~mCØRÚ..D‘;¡~«&¨YÚ·‹ª̀”—f¾̣•Öàû\0óIyál΄2Éf‚H[‚&bÓ†bÂCẦ́, …œ̣L=Aäë6ökµ hÁA|•&ûê †¢ù¶ØwÓ48²Í±Éô±(镳g¸Ï[OOÉdSN •$Ă¡K»Ñ3WGV‰{ÂaOăG>_ó>µcó#¨yˆé(ÈÿŒQÏÉ:Mb Ù)&K+( ä—Dd9Đ`¢‰ Ú0ØTÈ̉¹L@túåA0æSc"›¤e.&iéØXnÏ9«6‘v«É¦U_…*(=VÚ.ñ¢xº!ƯÏ0´è̉"Gƒ<(o Xu ü‘ză\•<N ³*œéQ ú1.º n™ hTà– •˜I,ÊĐº>“"ШÜ2=—jUÂåI^ØK®üÄ%—#ÔÇ©(&i”` CA¸a *Ueû$æ´̃$7Ưk´”¸FA®«̃@vR&“h(ă«û>t^! 0ĐT Mơ{ª'ÎÛ5;¸Ă£ÑR.Eơ€"/@RȤI¡ºk¨Jë‡₫÷µ(fN)SƠ ‘Œ ‡Í ‚V*¢:ḍ{' ¥¤̃Lyä$°\Œ½X]R“´®S ʪœBtӅƪ›L=—l̉’£ơS Ï0¥ă”kTª´•±ë/µ¥_¨Ây4‡7Sª¹sVåO%~ÍDQBc­±d$c¾̀n£óÓa-!p₫•pƯ¢K̉¼ưœ½¨H9#áÚ·™̣¬Ư ›C©bQ®«Û¸~ĐÉÈ1KÔ1{¤lv´Fè†Y_¢FC¶¬4h$LLñVó Mœëo ø@:]n®ÛóS©ÜI8–UÛüëY„<¨€Đüæ‚Óv<蘓¯QH̀å,Â"D'ƒ ¹×2YŒ̀™̣ºâhzª­‘!iÙ 40@á 1ö‘5!TiU$Đ̣¨oüvÙ=E.â±IçPV%@ª J˃ O¦6]}Đ¥˜f́A¦1.rN«„BˆØ¥!ä^Ơ9ms₫x˜¥9~(@n¢È® ùĐºÙZ¯Fo°kÎ6²ƠQMåQÚq<tgQï ?a•̀çö´ç Ñ§́[Ä®­̀$5µ£ĐÇàœfp¸¡bW&>ÁHFµ“̀VaÖ¼®'6ˆs'Œ¯U½Ø‡6@bëô2áæù«\đT× 9«„!ª8¡*Q̀‘L¥3dBŸ6N7 ‡¢ê"UÜJE¨töEĐtÔÑ`$(…ªmyúœ=Rơ‘›ˆï:¹¼”ÓL`¸ÉïW«ƒÔ;4åyăØr•ë |7ù×Ä„U‘nVhæDcÀF¥L”ë¾-l x5¬‚NĂ»½…j5‚Z– $÷Ñ¥§Ư<ƒÅÉ9äÚjJÓ¹pƠ‚êu‚LLS•ºÓŒK̀y¡ »@ ¢jù´v3v[HE­ ¾4Çf«¸Sú¨†Ác4US2cơ+ÙêĂ=Ơ „Ï•£ªeø B”Ш¨³rµ  öc[~v 6ĐmD0£1ÏÄb³ûr•°¡X€£³ôt(]Ä_ T`#¯ÎE £4[‰ơJÏ6'–3° vÄJeꈡ`ï-Ẻ£ơ¢%g*› ­XÁ4°a%‘Ôª‰ñ‹éÄm3ªÀ¦\ä́à9 åƒƠ±B'W×ƠscêƒÑBỀqh‹œ¬_[…÷LZN¦V5Đ}?¹62lFe¦]™­‘̃@Å‚iw(ø 'Û^Ơ¿ṣơ¦27wœ§™¼— «n+j;¶2º¥ n¹a¦a»¢HàC³(X₫˜;>K³34n:‚Ugq©wX•C’ÏZØmí0±ĐéXå`/•̀m«B@kÏ™cZIƠỦ3 ˜e_*CSAOÀÀ¾JvªR%qẹvê‚àú4ñ̉í<œ†9µ½ñ鹿ôνɲ]“dXÙ?Ý‘}H}ßĐ©¥&åTë8 Gí÷¬$ïI rļ£Ơ\°6˜¦–: æÊZ€¢Æ ×Ó  `%©®̀‚;x>d„"OiD*˜ VG‚µĐ÷ èà“I#¶~}}ûɉ˜ Å”¥ƠIdFq%ŸçDoÍÇăd}j½•³†éX¹®ÎdÚ%x ̀°jE3¾Àd@TE(ƠÓ³LÂ5ñx ̃®®èè Mç%PæÀv ”®~ÄsîF 6 dmAw¯́,âªmü5Ï™”ăÚÈØÔ•z”:ảMªœ[»5À\^Đª\5Jö{‡®¨>G[TÑ.C$« xqƠk2Œ£¼Æ®J«|6Đj˜ÊħÙ:é‘;º­ÑÔbhÎôg›x¢́Àñ¯üêd©¡é—Ô§müF³Pê´© ”›Ôq•WHÊîD'Ø{V‰ÅXv <ÓèºK 7ê¡^Y‰cư¢YI¿„ÉVLsjØ0°É]>đ`̀%µ¦«XªºzÈ,ö¨ Wơ#7ö,“XV¼xÊ"Ô{Æ…Ú¬:)<å₫·4).½Wsµ̉JÎJ:k›MG̉ÚhA³|BÚv©[ăg4#§Â&X£O ¡tÜN6ºº˜4Ø=kƠáÚR°T1Q U/2;r9PI&¡3Û†åø­¼ĐUN MŒÑ2),›á9p8«¶( |¡™gÖCç8[˜R¹é`vGƒ°ĐhpG*ÿ£p÷Û!ƒ[ê÷¹ä1¹©iÓ7iyư…uD`b?úàiƯÙDÍï Êà*-”«¢›¿b=_­úC'w:ñF=ôj¥viQæŒÓzºúy6¶ô$ esÊ,7ÍkêK@=[B¸»áƯM¡n- ßΰÔx ¹JC'ÚÁÍ29Ơí ‹`4×k*å&Gƒ'ơÓ£›Jƒ¯T¢ U Nf&5DrDnĂ¢ZÔ° ~{Ypơ™HTyI‹\«±%̉Sú‡:É́ÔĵƒÊÓ:yé£Q½ª4đ³ô1ÉÁë7e7&A‡( ›–‰ÔRYæw¼óW˯ÜQ‹ëæ©1Mª(y`ô‰$ ́öP¿Ä™—A…Í[aŸ)TƒƯU([äEơ©—oä†dPØ¥³Öî$цø Á"³)'ùÁ¥™X!¦V¬" ܾl¤¿y'1Èç‚̉ƒÓDèw0…t•:Œ©Èܦo(Û9P¶s¼[ù Y}*CŸ‚Wud ܹ‚ vöÜKàĂLÈ6/@*0¯•ùºB‚Â?”07yÛ³LDX_J>ŒĂ­N÷ÂA[³]€¥ÓQơ{5ªÚ€ÍâF§ê5«u ­aD¯‘¦â–1 TŸceBQé»äæhb<†²zAÜȪñÔ`”å:8¨ .Mx¶̉ºỐЦ†{m5”™¸ø-7Cßè,ó˜âxº₫Øt%wÇRG[û«¹;cèÔܹsDº~̃2†½ö© ”ˆ“fñoŒFA…m ÎîƯk·@à¨ùêe+Ơ#ˆĐÑ5`9¥₫ lJ&̃@ÀcỠoœÑ̃4·Ơ౩]¶ơ&ê>¬•î‚ ¹5Ó̀-5ƯxÎø—±¸¡Á[P9̃„^Ww¶,–î©T Åen›\Ú_a«¸µ>JcF7›lÛ—ÈƯ./̀‚̉{Ñ è¬hú Ä®çƯ ؼ­˜zụ̀PéQiÀYM†₫u Ï 蟈ÑN‡^PÅỴ̈$ÛÔÛơ|đq•´Đ“Iç*®W]±A^"¥}꨻jÛ0rÆu£‹iÉÑTƯ€›äA຃qB¶ÎÀÛë46ôª{ïØ,íÔvåºÅÖäa/*X@r-æøÉöœ˜»ÓtFŸSY¬†£øqt·˜Đ 3‹#hf„Ø>µ/̣́ç8i¢Óm& V"˜¥[¬¤w è ¹aûđP7:A­A½8₫6]6 yï$°_²> ÑI¦ÛŒz³v¥N2×.œ€ßĂ ±èP£YßPƠăA‚DªlªÙw©̉¼ÚƯ!̃5ư ¹¦–«ÎƯúÂ÷ N%®˜S\ª¨½á¶)Ư£.ÏjjHzFúR“Ár Hµ1}UƠư”Ơß2óÚ5ơ¨FV‘iÍÿªhÔĐåF&÷XU“}ÔÆK%~­Y¿®²¢[wø9Ú×̀½ØF;ÛºóhyÍ–é:èI¥0Äè˜uob´̃ 0Qdpđ:)ĺ–®e®E.Ó40Èm’/4ïÉ(Đg–́'̀̉QK4‰Kă®P…¹ưÀq™t»GĂÀ_Á â«@aÈëÖ́ÁtÆJ³e¶ëå¿WIÆïUiJ*ddú(©.Ápºh§E…̀È̃ộƒ»^5Ï%P»hnƠeS©jàO™1¯Ư´ Ơ±rL]‰ukvï [¦¨üE WÄR<›â2ă‚yÉ)y4ù0…f6n£]8¬c? ‚ ´ÿ$& ®MV&äƯ–Ú|se¼jÖ>öÀ0i“ŒB5ĂM²¹2³›ZÍP=œû̀ØôI˜€ ̀U·stM¸ƯŸ4 öW¢á˼â' W^*h©f ‚|¤q¢S£ñ¦„ÛÎñ¤º:̉èŒĐ"&“x ¥ÙÜ)9nêh“A¦3'¿²ï¦?O^µ®*%Ư¤bá(r‚¦aí°J—Q‰œ$-7¡7h7’†6§Æö«Ѩ^ µck°Ă)féƠD=”TüT 2U¥áÚÂPôơéKoh€6Ï̀Ÿë\ṔËá`đz‚¨BÚ[¬ú?"Åù"Dz†‹ÏDbl̉ơæú0ŸMÀR"ù¢}5vÑnä–¹DT•ÉØ›¶.&ü¢F¶ICÍ‘Iv)ïPbsèÈxÆèÊ øy®dR‰̉ÑY UÔ†gÍ],¤§èú÷\ç‡Q¹YU›̉̃ˆHåæaœ3¥¸₫yªúJè¿\N˸àúJ&Jm¬öVó#²º®áç NƯ~¦Î ;¯KGY@J%ăªwKyíqi±A‹Í Đ%: 17ô«Ñ¶"2£)}Ơâ*pø¸HÁ=3u•ưJ«ªR÷I*¦^6¼]KA2÷ÇøÙÚîÇÊ8ƦœÖxNñ+ú*í¦ ư¾Ïí5RxQË Ø©ië}-kgOM´Ú£&ù¤Ä4)©`ôQåƯ´¢̉{/Y8~]ÏG]`;£Ø¿^‹ ÿîƠµ9ƒ“Ụ̈¯ă¦-™ÆNè´dÀ^·V˜Ư 01Æ#̀ EF‰ŒÎåöÂm§Qú„3Zµ.*)ŸJÚj„s#$È®̃…V®cFW™´ƯJÉÁªg\¦À©«ï ªªsê‚¥×) ñ*˜œ lbNđRJ“›‡ƒQµ`„U3™ISk­ëơ´ó Í#8/(É>ˆ r'Æư¥{|p¨æ1R¥aƯógJ«̀U/\Ô3€¶J™ăy¨ßHJèYËÓe_º7©Øô_C×¼`†Z•º¬ÜÔPrRủ2}-+^³`ùW•°(ßaàú—Z.»Rö¼N<«6 To=o4¬·́ÚmT}Z3P’ưƠmX¢ ÂLæ4 '©½h èïj_Đ4>×ưă³¶£³,ư2§[EµS$2*wÇ­ÀB•Eèj m#jD^’œZ¶+ææÁ8ñ:µ:ˆC¡= µ‡—¸ÁZa3Œ «|¯\4nÆ)ö™RéÍ[`á4·ORï G·¨hXRKĂ×u?^4“H̃«ç¦ïÿEBg<đˆ´&uV=‘Øï*¯^ Ă_ÏoÎÙÅ-»ºf¿ŸÜÜœ\ƯưÁ̃\ß°»_ÏÙ»›ë·7'¿ ØƯ5₫}₫ŸwçWẃƯùÍowwçǵ—?‚“wï./NO~¹>ñ¬ă_ôáê›₫¸×¿Á†×évoo:3¸™¿èOưéítÖÙÛ¼Øî‡7=Ụ̀@Á₫ 3Ữ́̃lâO®û(¿DåM°+¦ïÎđåûĂ?½í^ñ׿‹öí±7vƠ™úư₫Øïô₫b»ä÷™L§C®“ —ÀơxđEÅù)N@rÅ ĂÀBë%×®L´Oºf<ˆha¾\×áds§$ƒ”ŒÄNóÈq̃Y3æϾ SKºeö× $c†6ăå’¢­ ä@ZƠ$c¤]à }Çb%”&ŒîÊ,¤˜O›•SƒIü'ʳ1Á¤Z®ưD8®Æºª¹º"jz:[́́ùX ¼Ú%óåG*‡öǽ`2íỤ̀DÑGÄ^e[ˆ÷뀌  F 'ÿÎ6E0¦Û€#( KĂkĂËyÀƯLàrL·p)n-½i¼”.i¶uÉsQÂ+Ûso×̃=²]Ëʃ XÔx̉xÇgÜKTV,X®Đ— £w3QqÖÓjdói–æó/̀Æ ªø•˜¥¯MT6× b@ß„ÆGÜêYO¸!N.^Dç ¹e´|đØ̣×kq1’A×¥p'Xå¡R+¡Ë¦‰Ül«dÄÔSa£$Áë ăjA$Ä鹌Ø+̣°•?”ồ3\¬2HÜ´ÜÈ´ÜXfÖBM‹øA²™mÇ/!ă ?¶c^Đ½K‚£1×@9X°ưÑà́‡¨ !¼4|(cPUđ?KdÅñç½+bºU$slqWĂy»ơ¡ï{²¨­ÿ{÷p3H”ȯ=ø̃)/p€_­8‰§Í JI#ˆÄ,2đí‹g‰ÜƠ9Å‘è ư#ª‘ ¨¦Çü7,‘ƒ¼£Ç=§7ºsç.́Ú¬‹Ø¨-ÁYd5é ơ ȲxÜSV4ZñV^l*‰uơÔK?ûáQ/_ÅIVfùj×Ú®vAUArŸ'ç«j}¯Oư@}Ơ«ÖeØ©ƒÉ&fñ ƠLÀâ#Øbj˜.èwZV¯W. ₫EBÜi·VBÏ×îP8₫ëÏó >¹¬+¿p ­*Z”,éh¡]Ü®°]­Â?7ëܯ²₫oé]™̣Û­j¶«EXk¸Ü¬×Q±ẳT)\ïÿÀ‡ư:Ï¿̣K:$lß…vë.yB¸÷¡(ô¬Đ. íÚC¡=³Bû(´oVè…̀ ½D¡—f…^¡Đ+³B‡(thVè…̀ £Đ±Y¡:1+ô…^›zƒBò ¢Đ©Y¡3:3+ô ưrDh zêôå-́ü È´Ôîs‡IŸÉ{5 Öá£,ˆ€¹§Øï ø|~âuùx!%’Hû7/³ŸÀC‹{CdN™Gég̣ ah­qñKVơè¨3CiÉâpÈ Ø_€¶#0Äq…³ÓÑ]VT$Ä èùÿÊá`UI£lûơưû 6ú‹dµ% GÙ–M dÛ²¾‡ e\) )·etOƒÉäi¢[²̣ÊxÖgOUƠ)w0¡¨.ߘ¢ĐË@BÜüº¯æôÇỊ̈]§ªHÈw…€ëJwO…ÑeyDIÈwL?*º+Hȶîu2=óZcmgA—½xMB¶uđÓ[Đåe‘#€Ë"wÀ_`rd[gtW´_ âØY@=ºL°§Đ…3ˆ“D`}w$´¯hñÇ GqTBS†%¡©“œ¿°­{CjŸ€UÇØJÓE.Iȶî©c@ÀeL₫”Á EÉœ’Pœóå¹SƠô³̉M(è’€m͘‚îi…͇mlÿ÷´ÂѾÍWqÔ‡Ẫ\”²—"܆2†ôÏ<ă&(œ0³­{ưë+º±îă*¾_:Iÿñu(øŸ_e.zÄă/«́mư¼Sïbâ›p‚û&†˜§†®ÿô É>$@\ÀáIÈ.«1ù¿×—¼;UfïmD,CĐ×÷ïÿ½Li5_,IÈO±Ă×5ưFÂ8ưæ`¿§ßpĶÎö„aÏY070`ßM hÙd[gđÏ ÷QÖ(\œsÆé·F½! ¶ë&ŒË"l’d<ˆE9v́­ø¾Ó@àm¨`àØY@×ÄÈ 8́ÈY0¥Àáh6ï Ç¢àûn‘—»½ÖmÄë^¼foC9 ¦¤Ål—³>X¸ -Klë,€Ú«; HºbµCgá0Wl½ï.Å»ÆYP|Á…{ƒ(k*̀-Îw„ÀëÇé}¥‹ É«?¬Ï³Ä ́üÉ6ÈïbÂj="eòj=Ï>úơ*yˆíqò(Û¾ g̀i-Ê™VûÈ­1íy#N[Oa¢Ơ Đ`Œµút.BrÅ̃¯tà=”À°up{l…äT€[‡!Dà “»úºØ®qÇeüuˆ}—¡”ó]G ;t:ïѭωcüŒ ₫˜Ñ¡×dÎzâglŸY0¥h+„©æÁó#Ús©q 1‰Ÿ²ÂOj"h$3Ơ Ís­î5hóÆ÷†‚®-ơxKû†*AZ÷5Ø1̣7T̀# á·àh*xÅ‹ «À–3¡‘@k·‚߼ѻ°u:g…?Ö8Đ‚ÆOYa‰5´à8ñSV¨NM­̣¢j́ÖèQTäR) °C©j2|ο:Ô V¡Îñ­P·¹üØ<%£‰pƠ>̃ £¡ !fDƒm  ́ Ä œ f 4 ø Đ ® † Z *  Ö ¨ z B  Ú ¦ | L "î¼”\&öº`6êœn@Ü vR,Ü´Œd<Îb8èÀXổª~N&ú̀,Y- 5netcdf.inqDimIDsnetcdf_002einqDimIDs*X+ 3netcdf.inqDimIDnetcdf_002einqDimID&W' /netcdf.inqDimnetcdf_002einqDim.V/ 7netcdf.inqAttNamenetcdf_002einqAttName*U+ 3netcdf.inqAttIDnetcdf_002einqAttID&T' /netcdf.inqAttnetcdf_002einqAtt S! )netcdf.inqnetcdf_002einq&R' /netcdf.getVarnetcdf_002egetVar:Q; Cnetcdf.getConstantNamesnetcdf_002egetConstantNames0P1 9netcdf.getConstantnetcdf_002egetConstant4O5 =netcdf.getChunkCachenetcdf_002egetChunkCache&N' /netcdf.getAttnetcdf_002egetAtt&M' /netcdf.endDefnetcdf_002eendDef&L' /netcdf.delAttnetcdf_002edelAtt(K) 1netcdf.defVlennetcdf_002edefVlen:J; Cnetcdf.defVarFletcher32netcdf_002edefVarFletcher32.I/ 7netcdf.defVarFillnetcdf_002edefVarFill4H5 =netcdf.defVarDeflatenetcdf_002edefVarDeflate6G7 ?netcdf.defVarChunkingnetcdf_002edefVarChunking&F' /netcdf.defVarnetcdf_002edefVar&E' /netcdf.defGrpnetcdf_002edefGrp&D' /netcdf.defDimnetcdf_002edefDim&C' /netcdf.createnetcdf_002ecreate(B) 1netcdf.copyAttnetcdf_002ecopyAtt$A% -netcdf.closenetcdf_002eclose$@% -netcdf.abortnetcdf_002eabort"?# +netcdf_syncnetcdf_005fsync(>) 1netcdf_setFillnetcdf_005fsetFill:=; Cnetcdf_setDefaultFormatnetcdf_005fsetDefaultFormat4<5 =netcdf_setChunkCachenetcdf_005fsetChunkCache,;- 5netcdf_renameVarnetcdf_005frenameVar,:- 5netcdf_renameDimnetcdf_005frenameDim,9- 5netcdf_renameAttnetcdf_005frenameAtt$8% -netcdf_reDefnetcdf_005freDef&7' /netcdf_putVarnetcdf_005fputVar&6' /netcdf_putAttnetcdf_005fputAtt"5# +netcdf_opennetcdf_005fopen(4) 1netcdf_inqVlennetcdf_005finqVlen,3- 5netcdf_inqVarIDsnetcdf_005finqVarIDs*2+ 3netcdf_inqVarIDnetcdf_005finqVarID:1; Cnetcdf_inqVarFletcher32netcdf_005finqVarFletcher32.0/ 7netcdf_inqVarFillnetcdf_005finqVarFill4/5 =netcdf_inqVarDeflatenetcdf_005finqVarDeflate6.7 ?netcdf_inqVarChunkingnetcdf_005finqVarChunking&-' /netcdf_inqVarnetcdf_005finqVar0,1 9netcdf_inqUserTypenetcdf_005finqUserType2+3 ;netcdf_inqUnlimDimsnetcdf_005finqUnlimDims(*) 1netcdf_inqNcidnetcdf_005finqNcid.)/ 7netcdf_inqLibVersnetcdf_005finqLibVers(() 1netcdf_inqGrpsnetcdf_005finqGrps2'3 ;netcdf_inqGrpParentnetcdf_005finqGrpParent6&7 ?netcdf_inqGrpNameFullnetcdf_005finqGrpNameFull.%/ 7netcdf_inqGrpNamenetcdf_005finqGrpName6$7 ?netcdf_inqGrpFullNcidnetcdf_005finqGrpFullNcid,#- 5netcdf_inqFormatnetcdf_005finqFormat,"- 5netcdf_inqDimIDsnetcdf_005finqDimIDs*!+ 3netcdf_inqDimIDnetcdf_005finqDimID& ' /netcdf_inqDimnetcdf_005finqDim./ 7netcdf_inqAttNamenetcdf_005finqAttName*+ 3netcdf_inqAttIDnetcdf_005finqAttID&' /netcdf_inqAttnetcdf_005finqAtt ! )netcdf_inqnetcdf_005finq&' /netcdf_getVarnetcdf_005fgetVar:; Cnetcdf_getConstantNamesnetcdf_005fgetConstantNames01 9netcdf_getConstantnetcdf_005fgetConstant45 =netcdf_getChunkCachenetcdf_005fgetChunkCache&' /netcdf_getAttnetcdf_005fgetAtt&' /netcdf_endDefnetcdf_005fendDef&' /netcdf_delAttnetcdf_005fdelAtt() 1netcdf_defVlennetcdf_005fdefVlen:; Cnetcdf_defVarFletcher32netcdf_005fdefVarFletcher32./ 7netcdf_defVarFillnetcdf_005fdefVarFill45 =netcdf_defVarDeflatenetcdf_005fdefVarDeflate67 ?netcdf_defVarChunkingnetcdf_005fdefVarChunking&' /netcdf_defVarnetcdf_005fdefVar&' /netcdf_defGrpnetcdf_005fdefGrp& ' /netcdf_defDimnetcdf_005fdefDim& ' /netcdf_createnetcdf_005fcreate( ) 1netcdf_copyAttnetcdf_005fcopyAtt$ % -netcdf_closenetcdf_005fclose$ % -netcdf_abortnetcdf_005fabort"' 'ncwriteschemancwriteschema! !ncwriteattncwriteatt ncwritencwrite ncreadattncreadatt ncreadncread ncinfoncinfo ncdispncdisp nccreatenccreate  ^̉j2₫Ô¤zF ́ ´ ~ N  æ ¸ j B  ô Æ ˜ j 4 ø Î ª ‚ ^"x# +test_netcdftest_005fnetcdf&w' /import_netcdfimport_005fnetcdf"v# +netcdf.syncnetcdf_002esync(u) 1netcdf.setFillnetcdf_002esetFill:t; Cnetcdf.setDefaultFormatnetcdf_002esetDefaultFormat4s5 =netcdf.setChunkCachenetcdf_002esetChunkCache,r- 5netcdf.renameVarnetcdf_002erenameVar,q- 5netcdf.renameDimnetcdf_002erenameDim,p- 5netcdf.renameAttnetcdf_002erenameAtt$o% -netcdf.reDefnetcdf_002ereDef&n' /netcdf.putVarnetcdf_002eputVar&m' /netcdf.putAttnetcdf_002eputAtt"l# +netcdf.opennetcdf_002eopen(k) 1netcdf.inqVlennetcdf_002einqVlen,j- 5netcdf.inqVarIDsnetcdf_002einqVarIDs*i+ 3netcdf.inqVarIDnetcdf_002einqVarID:h; Cnetcdf.inqVarFletcher32netcdf_002einqVarFletcher32.g/ 7netcdf.inqVarFillnetcdf_002einqVarFill4f5 =netcdf.inqVarDeflatenetcdf_002einqVarDeflate6e7 ?netcdf.inqVarChunkingnetcdf_002einqVarChunking&d' /netcdf.inqVarnetcdf_002einqVar0c1 9netcdf.inqUserTypenetcdf_002einqUserType2b3 ;netcdf.inqUnlimDimsnetcdf_002einqUnlimDims(a) 1netcdf.inqNcidnetcdf_002einqNcid.`/ 7netcdf.inqLibVersnetcdf_002einqLibVers(_) 1netcdf.inqGrpsnetcdf_002einqGrps2^3 ;netcdf.inqGrpParentnetcdf_002einqGrpParent6]7 ?netcdf.inqGrpNameFullnetcdf_002einqGrpNameFull.\/ 7netcdf.inqGrpNamenetcdf_002einqGrpName6[7 ?netcdf.inqGrpFullNcidnetcdf_002einqGrpFullNcid,Z- 5netcdf.inqFormatnetcdf_002einqFormatnetcdf-1.0.18/doc/octave-netcdf.qhc0000644000000000000000000035000014674554453013775 0ustar00SQLite format 3@ ##.v‰ ²¨†’$ º  w † ä h ó z ó H¾"¾fó| ¨b''tableVersionFilterVersionFilterCREATE TABLE VersionFilter (Version TEXT, FilterId INTEGER)n++tableComponentFilterComponentFilterCREATE TABLE ComponentFilter (ComponentName TEXT, FilterId INTEGER)u--tableComponentMappingComponentMappingCREATE TABLE ComponentMapping (ComponentId INTEGER, NamespaceId INTEGER)q))tableComponentTableComponentTableCREATE TABLE ComponentTable (ComponentId INTEGER PRIMARY KEY, Name TEXT)VtableFilterFilterCREATE TABLE Filter (FilterId INTEGER PRIMARY KEY, Name TEXT)b%%tableVersionTableVersionTableCREATE TABLE VersionTable (NamespaceId INTEGER, Version TEXT)))mtableTimeStampTableTimeStampTableCREATE TABLE TimeStampTable (NamespaceId INTEGER, FolderId INTEGER, FilePath TEXT, Size INTEGER, TimeStamp TEXT)551tableOptimizedFilterTableOptimizedFilterTableCREATE TABLE OptimizedFilterTable (NamespaceId INTEGER, FilterAttributeId INTEGER)(77otableFileAttributeSetTableFileAttributeSetTableCREATE TABLE FileAttributeSetTable (NamespaceId INTEGER, FilterAttributeSetId INTEGER, FilterAttributeId INTEGER) 33/tableContentsFilterTableContentsFilterTableCREATE TABLE ContentsFilterTable (FilterAttributeId INTEGER, ContentsId INTEGER )w --!tableIndexFilterTableIndexFilterTable CREATE TABLE IndexFilterTable (FilterAttributeId INTEGER, IndexId INTEGER)s ++tableFileFilterTableFileFilterTable CREATE TABLE FileFilterTable (FilterAttributeId INTEGER, FileId INTEGER)z ''3tableContentsTableContentsTable CREATE TABLE ContentsTable (Id INTEGER PRIMARY KEY, NamespaceId INTEGER, Data BLOB) !!‚ tableIndexTableIndexTable CREATE TABLE IndexTable (Id INTEGER PRIMARY KEY, Name TEXT, Identifier TEXT, NamespaceId INTEGER, FileId INTEGER, Anchor TEXT)''MtableFileNameTableFileNameTable CREATE TABLE FileNameTable (FolderId INTEGER, Name TEXT, FileId INTEGER PRIMARY KEY, Title TEXT)e'' tableSettingsTableSettingsTableCREATE TABLE SettingsTable (Key TEXT PRIMARY KEY, Value BLOB )9M'indexsqlite_autoindex_SettingsTable_1SettingsTableh##tableFilterTableFilterTableCREATE TABLE FilterTable (NameId INTEGER, FilterAttributeId INTEGER )l++tableFilterNameTableFilterNameTableCREATE TABLE FilterNameTable (Id INTEGER PRIMARY KEY, Name TEXT ){55tableFilterAttributeTableFilterAttributeTableCREATE TABLE FilterAttributeTable (Id INTEGER PRIMARY KEY, Name TEXT )u##1tableFolderTableFolderTableCREATE TABLE FolderTable (Id INTEGER PRIMARY KEY, NamespaceId INTEGER, Name TEXT )x))+tableNamespaceTableNamespaceTableCREATE TABLE NamespaceTable (Id INTEGER PRIMARY KEY, Name TEXT, FilePath TEXT ) ËË3I/octave.community.octave-netcdfoctave-netcdf.qch ÷÷ doc    #Ô¶{fS>#9FullTextSearchFallback%CreationTimef̣Ùk) HideAddressBar- EnableAddressBarA EnableDocumentationManager; HideFilterFunctionality? EnableFilterFunctionality*-;LastRegisterTime2024-09-24T11:23:23.224 ?Z~“Î?k²́9FullTextSearchFallback%CreationTime)HideAddressBar-EnableAddressBarAEnableDocumentationManager;HideFilterFunctionality?EnableFilterFunctionality- LastRegisterTime ‘º‘' //octave-netcdf.cssoctave-netcdf.cssD 1goctave-netcdf.htmlOctave NetCDF - A NetCDF interface for Octaveûû[  H ‚›$octave-netcdf.htmlhOctave NetCDF - A NetCDF interface for Octave ManualRoctave-netcdf.html#Installing-and-loading01 Installing and loadingPoctave-netcdf.html#Online-Direct-install21.1 Online Direct installNoctave-netcdf.html#Off_002dline-install(1.2 Off-line install4octave-netcdf.html#Loading1.3 LoadingNoctave-netcdf.html#Basic-Usage-Overview,2 Basic Usage OverviewVoctave-netcdf.html#High-level-functionality82.1 High level functionalityToctave-netcdf.html#Low-level-functionality62.2 Low level functionalityJoctave-netcdf.html#Function-Reference(3 Function ReferenceVoctave-netcdf.html#High_002dlevel-functions03.1 High-level functions6octave-netcdf.html#nccreate3.1.1 nccreate2octave-netcdf.html#ncdisp3.1.2 ncdisp2octave-netcdf.html#ncinfo3.1.3 ncinfo2octave-netcdf.html#ncread3.1.4 ncread8octave-netcd      ÑÑ- /3octave-netcdf.qchÀ2024-09-24T11:23:23 ûû  øødoc ûû   [Áç̉½¨vY6́ĂœuN' đ » Œ Q (  Ú ³ ~ M  ë Ê £ x I " ÷ Ê f 7 Í ¤ u L èÁU&ëÀ“jG ùÔ§zMƯ´‘lG÷Đ©‚K笃\5Ù¨mF%₫Ó¤}R%øÁ5[7 ?netcdf.inqGrpFullNcidnetcdf_002einqGrpFullNcid+Z- 5netcdf.inqFormatnetcdf_002einqFormat+Y- 5netcdf.inqDimIDsnetcdf_002einqDimIDs)X+ 3netcdf.inqDimIDnetcdf_002einqDimID%W' /netcdf.inqDimnetcdf_002einqDim-V/ 7netcdf.inqAttNamenetcdf_002einqAttName)U+ 3netcdf.inqAttIDnetcdf_002einqAttID%T' /netcdf.inqAttnetcdf_002einqAttS! )netcdf.inqnetcdf_002einq%R' /netcdf.getVarnetcdf_002egetVar9Q; Cnetcdf.getConstantNamesnetcdf_002egetConstantNames/P1 9netcdf.getConstantnetcdf_002egetConstant3O5 =netcdf.getChunkCachenetcdf_002egetChunkCache%N' /netcdf.getAttnetcdf_002egetAtt%M' /netcdf.endDefnetcdf_002eendDef%L' /netcdf.delAttnetcdf_002edelAtt'K) 1netcdf.defVlennetcdf_002edefVlen9J; Cnetcdf.defVarFletcher32netcdf_002edefVarFletcher32-I/ 7netcdf.defVarFillnetcdf_002edefVarFill3H5 =netcdf.defVarDeflatenetcdf_002edefVarDeflate5G7 ?netcdf.defVarChunkingnetcdf_002edefVarChunking%F' /netcdf.defVarnetcdf_002edefVar%E' /netcdf.defGrpnetcdf_002edefGrp%D' /netcdf.defDimnetcdf_002edefDim%C' /netcdf.createnetcdf_002ecreate'B) 1netcdf.copyAttnetcdf_002ecopyAtt#A% -netcdf.closenetcdf_002eclose#@% -netcdf.abortnetcdf_002eabort!?# +netcdf_syncnetcdf_005fsync'>) 1netcdf_setFillnetcdf_005fsetFill9=; Cnetcdf_setDefaultFormatnetcdf_005fsetDefaultFormat3<5 =netcdf_setChunkCachenetcdf_005fsetChunkCache+;- 5netcdf_renameVarnetcdf_005frenameVar+:- 5netcdf_renameDimnetcdf_005frenameDim+9- 5netcdf_renameAttnetcdf_005frenameAtt#8% -netcdf_reDefnetcdf_005freDef%7' /netcdf_putVarnetcdf_005fputVar%6' /netcdf_putAttnetcdf_005fputAtt!5# +netcdf_opennetcdf_005fopen'4) 1netcdf_inqVlennetcdf_005finqVlen+3- 5netcdf_inqVarIDsnetcdf_005finqVarIDs)2+ 3netcdf_inqVarIDnetcdf_005finqVarID91; Cnetcdf_inqVarFletcher32netcdf_005finqVarFletcher32-0/ 7netcdf_inqVarFillnetcdf_005finqVarFill3/5 =netcdf_inqVarDeflatenetcdf_005finqVarDeflate5.7 ?netcdf_inqVarChunkingnetcdf_005finqVarChunking%-' /netcdf_inqVarnetcdf_005finqVar/,1 9netcdf_inqUserTypenetcdf_005finqUserType1+3 ;netcdf_inqUnlimDimsnetcdf_005finqUnlimDims'*) 1netcdf_inqNcidnetcdf_005finqNcid-)/ 7netcdf_inqLibVersnetcdf_005finqLibVers'() 1netcdf_inqGrpsnetcdf_005finqGrps1'3 ;netcdf_inqGrpParentnetcdf_005finqGrpParent5&7 ?netcdf_inqGrpNameFullnetcdf_005finqGrpNameFull-%/ 7netcdf_inqGrpNamenetcdf_005finqGrpName5$7 ?netcdf_inqGrpFullNcidnetcdf_005finqGrpFullNcid+#- 5netcdf_inqFormatnetcdf_005finqFormat+"- 5netcdf_inqDimIDsnetcdf_005finqDimIDs)!+ 3netcdf_inqDimIDnetcdf_005finqDimID% ' /netcdf_inqDimnetcdf_005finqDim-/ 7netcdf_inqAttNamenetcdf_005finqAttName)+ 3netcdf_inqAttIDnetcdf_005finqAttID%' /netcdf_inqAttnetcdf_005finqAtt! )netcdf_inqnetcdf_005finq%' /netcdf_getVarnetcdf_005fgetVar9; Cnetcdf_getConstantNamesnetcdf_005fgetConstantNames/1 9netcdf_getConstantnetcdf_005fgetConstant35 =netcdf_getChunkCachenetcdf_005fgetChunkCache%' /netcdf_getAttnetcdf_005fgetAtt%' /netcdf_endDefnetcdf_005fendDef%' /netcdf_delAttnetcdf_005fdelAtt') 1netcdf_defVlennetcdf_005fdefVlen9; Cnetcdf_defVarFletcher32netcdf_005fdefVarFletcher32-/ 7netcdf_defVarFillnetcdf_005fdefVarFill35 =netcdf_defVarDeflatenetcdf_005fdefVarDeflate57 ?netcdf_defVarChunkingnetcdf_005fdefVarChunking%' /netcdf_defVarnetcdf_005fdefVar%' /netcdf_defGrpnetcdf_005fdefGrp% ' /netcdf_defDimnetcdf_005fdefDim% ' /netcdf_createnetcdf_005fcreate' ) 1netcdf_copyAttnetcdf_005fcopyAtt# % -netcdf_closenetcdf_005fclose# % -netcdf_abortnetcdf_005fabort!' 'ncwriteschemancwriteschema! !ncwriteattncwriteatt ncwritencwrite ncreadattncreadatt ncreadncread ncinfoncinfo ncdispncdisp nccreatenccreate  áÑg>泂[$ ï À … Z -  á º “ n A  ç ² w N +  á!x# +test_netcdftest_005fnetcdf%w' /import_netcdfimport_005fnetcdf!v# +netcdf.syncnetcdf_002esync'u) 1netcdf.setFillnetcdf_002esetFill9t; Cnetcdf.setDefaultFormatnetcdf_002esetDefaultFormat3s5 =netcdf.setChunkCachenetcdf_002esetChunkCache+r- 5netcdf.renameVarnetcdf_002erenameVar+q- 5netcdf.renameDimnetcdf_002erenameDim+p- 5netcdf.renameAttnetcdf_002erenameAtt#o% -netcdf.reDefnetcdf_002ereDef%n' /netcdf.putVarnetcdf_002eputVar%m' /netcdf.putAttnetcdf_002eputAtt!l# +netcdf.opennetcdf_002eopen'k) 1netcdf.inqVlennetcdf_002einqVlen+j- 5netcdf.inqVarIDsnetcdf_002einqVarIDs)i+ 3netcdf.inqVarIDnetcdf_002einqVarID9h; Cnetcdf.inqVarFletcher32netcdf_002einqVarFletcher32-g/ 7netcdf.inqVarFillnetcdf_002einqVarFill3f5 =netcdf.inqVarDeflatenetcdf_002einqVarDeflate5e7 ?netcdf.inqVarChunkingnetcdf_002einqVarChunking%d' /netcdf.inqVarnetcdf_002einqVar/c1 9netcdf.inqUserTypenetcdf_002einqUserType1b3 ;netcdf.inqUnlimDimsnetcdf_002einqUnlimDims'a) 1netcdf.inqNcidnetcdf_002einqNcid-`/ 7netcdf.inqLibVersnetcdf_002einqLibVers'_) 1netcdf.inqGrpsnetcdf_002einqGrps1^3 ;netcdf.inqGrpParentnetcdf_002einqGrpParent5]7 ?netcdf.inqGrpNameFullnetcdf_002einqGrpNameFull-\/ 7netcdf.inqGrpNamenetcdf_002einqGrpNamef.html#ncreadatt3.1.5 ncreadatt4octave-netcdf.html#ncwrite3.1.6 ncwrite:octave-netcdf.html#ncwriteatt 3.1.7 ncwriteatt@octave-netcdf.html#ncwriteschema&3.1.8 ncwriteschema~octave-netcdf.html#Low_002dlevel-functions-_0028Deprecated_0029H3.2 Low-level functions (Deprecated)Foctave-netcdf.html#netcdf_005fabort$3.2.1 netcdf_abortFoctave-netcdf.html#netcdf_005fclose$3.2.2 netcdf_closeJoctave-netcdf.html#netcdf_005fcopyAtt(3.2.3 netcdf_copyAttHoctave-netcdf.html#netcdf_005fcreate&3.2.4 netcdf_createHoctave-netcdf.html#netcdf_005fdefDim&3.2.5 netcdf_defDimHoctave-netcdf.html#netcdf_005fdefGrp&3.2.6 netcdf_defGrpHoctave-netcdf.html#netcdf_005fdefVar&3.2.7 netcdf_defVarXoctave-netcdf.html#netcdf_005fdefVarChunking63.2.8 netcdf_defVarChunkingVoctave-netcdf.html#netcdf_005fdefVarDeflate43.2.9 netcdf_defVarDeflatePoctave-netcdf.html#netcdf_005fdefVarFill03.2.10 netcdf_defVarFill\octave-netcdf.html#netcdf_005fdefVarFletcher32<3.2.11 netcdf_defVarFletcher32Joctave-netcdf.html#netcdf_005fdefVlen*3.2.12 netcdf_defVlenHoctave-netcdf.html#netcdf_005fdelAtt(3.2.13 netcdf_delAttHoctave-netcdf.html#netcdf_005fendDef(3.2.14 netcdf_endDefHoctave-netcdf.html#netcdf_005fgetAtt(3.2.15 netcdf_getAttVoctave-netcdf.html#netcdf_005fgetChunkCache63.2.16 netcdf_getChunkCacheRoctave-netcdf.html#netcdf_005fgetConstant23.2.17 netcdf_getConstant\octave-netcdf.html#netcdf_005fgetConstantNames<3.2.18 netcdf_getConstantNamesHoctave-netcdf.html#netcdf_005fgetVar(3.2.19 netcdf_getVarBoctave-netcdf.html#netcdf_005finq"3.2.20 netcdf_inqHoctave-netcdf.html#netcdf_005finqAtt(3.2.21 netcdf_inqAttLoctave-netcdf.html#netcdf_005finqAttID,3.2.22 netcdf_inqAttIDPoctave-netcdf.html#netcdf_005finqAttName03.2.23 netcdf_inqAttNameHoctave-netcdf.html#netcdf_005finqDim(3.2.24 netcdf_inqDimLoctave-netcdf.html#netcdf_005finqDimID,3.2.25 netcdf_inqDimIDNoctave-netcdf.html#netcdf_005finqDimIDs.3.2.26 netcdf_inqDimIDsNoctave-netcdf.html#netcdf_005finqFormat.3.2.27 netcdf_inqFormatXoctave-netcdf.html#netcdf_005finqGrpFullNcid83.2.28 netcdf_inqGrpFullNcidPoctave-netcdf.html#netcdf_005finqGrpName03.2.29 netcdf_inqGrpNameXoctave-netcdf.html#netcdf_005finqGrpNameFull83.2.30 netcdf_inqGrpNameFullToctave-netcdf.html#netcdf_005finqGrpParent43.2.31 netcdf_inqGrpParentJoctave-netcdf.html#netcdf_005finqGrps*3.2.32 netcdf_inqGrpsPoctave-netcdf.html#netcdf_005finqLibVers03.2.33 netcdf_inqLibVersJoctave-netcdf.html#netcdf_005finqNcid*3.2.34 netcdf_inqNcidToctave-netcdf.html#netcdf_005finqUnlimDims43.2.35 netcdf_inqUnlimDimsRoctave-netcdf.html#netcdf_005finqUserType23.2.36 netcdf_inqUserTypeHoctave-netcdf.html#netcdf_005finqVar(3.2.37 netcdf_inqVarXoctave-netcdf.html#netcdf_005finqVarChunking83.2.38 netcdf_inqVarChunkingVoctave-netcdf.html#netcdf_005finqVarDeflate63.2.39 netcdf_inqVarDeflatePoctave-netcdf.html#netcdf_005finqVarFill03.2.40 netcdf_inqVarFill\octave-netcdf.html#netcdf_005finqVarFletcher32<3.2.41 netcdf_inqVarFletcher32Loctave-netcdf.html#netcdf_005finqVarID,3.2.42 netcdf_inqVarIDNoctave-netcdf.html#netcdf_005finqVarIDs.3.2.43 netcdf_inqVarIDsJoctave-netcdf.html#netcdf_005finqVlen*3.2.44 netcdf_inqVlenDoctave-netcdf.html#netcdf_005fopen$3.2.45 netcdf_openHoctave-netcdf.html#netcdf_005fputAtt(3.2.46 netcdf_putAttHoctave-netcdf.html#netcdf_005fputVar(3.2.47 netcdf_putVarFoctave-netcdf.html#netcdf_005freDef&3.2.48 netcdf_reDefNoctave-netcdf.html#netcdf_005frenameAtt.3.2.49 netcdf_renameAttNoctave-netcdf.html#netcdf_005frenameDim.3.2.50 netcdf_renameDimNoctave-netcdf.html#netcdf_005frenameVar.3.2.51 netcdf_renameVarVoctave-netcdf.html#netcdf_005fsetChunkCache63.2.52 netcdf_setChunkCache\octave-netcdf.html#netcdf_005fsetDefaultFormat<3.2.53 netcdf_setDefaultFormatJoctave-netcdf.html#netcdf_005fsetFill*3.2.54 netcdf_setFillDoctave-netcdf.html#netcdf_005fsync$3.2.55 netcdf_syncToctave-netcdf.html#Low_002dlevel-functions.3.3 Low-level functionsFoctave-netcdf.html#netcdf_002eabort$3.3.1 netcdf.abortFoctave-netcdf.html#netcdf_002eclose$3.3.2 netcdf.closeJoctave-netcdf.html#netcdf_002ecopyAtt(3.3.3 netcdf.copyAttHoctave-netcdf.html#netcdf_002ecreate&3.3.4 netcdf.createHoctave-netcdf.html#netcdf_002edefDim&3.3.5 netcdf.defDimHoctave-netcdf.html#netcdf_002edefGrp&3.3.6 netcdf.defGrpHoctave-netcdf.html#netcdf_002edefVar&3.3.7 netcdf.defVarXoctave-netcdf.html#netcdf_002edefVarChunking63.3.8 netcdf.defVarChunkingVoctave-netcdf.html#netcdf_002edefVarDeflate43.3.9 netcdf.defVarDeflatePoctave-netcdf.html#netcdf_002edefVarFill03.3.10 netcdf.defVarFill\octave-netcdf.html#netcdf_002edefVarFletcher32<3.3.11 netcdf.defVarFletcher32Joctave-netcdf.html#netcdf_002edefVlen*3.3.12 netcdf.defVlenHoctave-netcdf.html#netcdf_002edelAtt(3.3.13 netcdf.delAttHoctave-netcdf.html#netcdf_002eendDef(3.3.14 netcdf.endDefHoctave-netcdf.html#netcdf_002egetAtt(3.3.15 netcdf.getAttVoctave-netcdf.html#netcdf_002egetChunkCache63.3.16 netcdf.getChunkCacheRoctave-netcdf.html#netcdf_002egetConstant23.3.17 netcdf.getConstant\octave-netcdf.html#netcdf_002egetConstantNames<3.3.18 netcdf.getConstantNamesHoctave-netcdf.html#netcdf_002egetVar(3.3.19 netcdf.getVarBoctave-netcdf.html#netcdf_002einq"3.3.20 netcdf.inqHoctave-netcdf.html#netcdf_002einqAtt(3.3.21 netcdf.inqAttLoctave-netcdf.html#netcdf_002einqAttID,3.3.22 netcdf.inqAttIDPoctave-netcdf.html#netcdf_002einqAttName03.3.23 netcdf.inqAttNameHoctave-netcdf.html#netcdf_002einqDim(3.3.24 netcdf.inqDimLoctave-netcdf.html#netcdf_002einqDimID,3.3.25 netcdf.inqDimIDNoctave-netcdf.html#netcdf_002einqDimIDs.3.3.26 netcdf.inqDimIDsNoctave-netcdf.html#netcdf_002einqFormat.3.3.27 netcdf.inqFormatXoctave-netcdf.html#netcdf_002einqGrpFullNcid83.3.28 netcdf.inqGrpFullNcidPoctave-netcdf.html#netcdf_002einqGrpName03.3.29 netcdf.inqGrpNameXoctave-netcdf.html#netcdf_002einqGrpNameFull83.3.30 netcdf.inqGrpNameFullToctave-netcdf.html#netcdf_002einqGrpParent43.3.31 netcdf.inqGrpParentJoctave-netcdf.html#netcdf_002einqGrps*3.3.32 netcdf.inqGrpsPoctave-netcdf.html#netcdf_002einqLibVers03.3.33 netcdf.inqLibVersJoctave-netcdf.html#netcdf_002einqNcid*3.3.34 netcdf.inqNcidToctave-netcdf.html#netcdf_002einqUnlimDims43.3.35 netcdf.inqUnlimDimsRoctave-netcdf.html#netcdf_002einqUserType23.3.36 netcdf.inqUserTypeHoctave-netcdf.html#netcdf_002einqVar(3.3.37 netcdf.inqVarXoctave-netcdf.html#netcdf_002einqVarChunking83.3.38 netcdf.inqVarChunkingVoctave-netcdf.html#netcdf_002einqVarDeflate63.3.39 netcdf.inqVarDeflatePoctave-netcdf.html#netcdf_002einqVarFill03.3.40 netcdf.inqVarFill\octave-netcdf.html#netcdf_002einqVarFletcher32<3.3.41 netcdf.inqVarFletcher32Loctave-netcdf.html#netcdf_002einqVarID,3.3.42 netcdf.inqVarIDNoctave-netcdf.html#netcdf_002einqVarIDs.3.3.43 netcdf.inqVarIDsJoctave-netcdf.html#netcdf_002einqVlen*3.3.44 netcdf.inqVlenDoctave-netcdf.html#netcdf_002eopen$3.3.45 netcdf.openHoctave-netcdf.html#netcdf_002eputAtt(3.3.46 netcdf.putAttHoctave-netcdf.html#netcdf_002eputVar(3.3.47 netcdf.putVarFoctave-netcdf.html#netcdf_002ereDef&3.3.48 netcdf.reDefNoctave-netcdf.html#netcdf_002erenameAtt.3.3.49 netcdf.renameAttNoctave-netcdf.html#netcdf_002erenameDim.3.3.50 netcdf.renameDimNoctave-netcdf.html#netcdf_002erenameVar.3.3.51 netcdf.renameVarVoctave-netcdf.html#netcdf_002esetChunkCache63.3.52 netcdf.setChunkCache\octave-netcdf.html#netcdf_002esetDefaultFormat<3.3.53 netcdf.setDefaultFormatJoctave-netcdf.html#netcdf_002esetFill*3.3.54 netcdf.setFillDoctave-netcdf.html#netcdf_002esync$3.3.55 netcdf.syncpoctave-netcdf.html#Import-functions-_0028Deprecated_0029B3.4 Import functions (Deprecated)Hoctave-netcdf.html#import_005fnetcdf&3.4.1 import_netcdf@octave-netcdf.html#Test-function"3.5 Test functionDoctave-netcdf.html#test_005fnetcdf"3.5.1 test_netcdf4octave-netcdf.html#CopyingJAppendix A GNU General Public License0octave-netcdf.html#Index Indexnetcdf-1.0.18/doc/octave-netcdf.texi0000644000000000000000000001335214674554453014201 0ustar00\input texinfo @c -*-texinfo-*- @c Copyright (c) 2022-2024, John Donoghue @c Octave NetCDF - A NetCDF interface for Octave @c For manually generating the documentation use @c LANGUAGE=en makeinfo --html --no-split octave-netcdf.texi @c %*** Start of HEADER @setfilename octave-netcdf.info @settitle Octave NetCDF - A NetCDF interface for Octave @afourpaper @paragraphindent 0 @finalout @set COPYRIGHT_DATE 2022-@value{YEAR} @c @afourwide @c %*** End of the HEADER @include version.texi @include macros.texi @c %*** Start of TITLEPAGE @titlepage @c @center @image{octave-netcdf-logo} @vskip 0pt plus 1filll @title Octave NetCDF Toolkit @value{VERSION} @subtitle NetCDF functions for @acronym{GNU} Octave. @author John Donoghue @page @vskip 0pt plus 1filll Copyright @copyright{} @value{COPYRIGHT_DATE} John Donoghue Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the same conditions as for modified versions. @page @heading Distribution The @acronym{GNU} Octave NetCDF package is @dfn{free} software. Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. This means that everyone is free to use it and free to redistribute it on certain conditions. The @acronym{GNU} Octave NetCDF package is not, however, in the public domain. It is copyrighted and there are restrictions on its distribution, but the restrictions are designed to ensure that others will have the same freedom to use and redistribute Octave that you have. The precise conditions can be found in the @acronym{GNU} General Public License that comes with the @acronym{GNU} Octave NetCDF package and that also appears in @ref{Copying}. To download a copy of the @acronym{GNU} Octave NetCDF package, please visit @url{http://octave.sourceforge.net/netcdf/}. @end titlepage @c %*** End of TITLEPAGE @dircategory Math @direntry * NetCDF for Octave: (netcdf). NetCDF Toolbox for Octave @end direntry @c %*** Start of BODY @contents @ifnottex @node Top @top Introduction The Octave NetCDF toolkit is a set of NetCDF routines for GNU Octave @end ifnottex @menu * Installing and loading:: Installing and loading the toolkit * Basic Usage Overview:: Basic Usage Overview * Function Reference:: Toolkit functions * Copying:: Copying * Index:: Index @end menu @c ------------------------------------------------------------------------- @node Installing and loading @chapter Installing and loading @cindex Installing and loading The toolkit must be installed and then loaded to be used. It can be installed in @acronym{GNU} Octave directly from the website, or can be installed in an off-line mode via a downloaded tarball. The toolkit has a dependency on the netcdf library (@url{https://www.unidata.ucar.edu/software/netcdf/}), so it must be installed in order to successfully install the toolkit. The toolkit must be then be loaded once per each @acronym{GNU} Octave session in order to use its functionality. @section Online Direct install @cindex Online install With an internet connection available, the package can be installed from octave-forge using the following command within @acronym{GNU} Octave: @example pkg install -forge netcdf @end example The latest released version of the toolkit will be downloaded and installed. @section Off-line install @cindex Off-line install With the toolkit package already downloaded, and in the current directory when running @acronym{GNU} Octave, the package can be installed using the following command within @acronym{GNU} Octave: @example pkg install netcdf-@value{VERSION}.tar.gz @end example @section Loading @cindex Loading Regardless of the method of installing the toolkit, in order to use its functions, the toolkit must be loaded using the pkg load command: @example pkg load netcdf @end example The toolkit must be loaded on each @acronym{GNU} Octave session. @c ------------------------------------------------------------------------- @node Basic Usage Overview @chapter Basic Usage Overview @cindex Basic Usage Overview The toolkit provides high and level functionality for reading and writing NetCDF format files. @section High level functionality @cindex High level functionality The toolkit provides the following high level functions: @itemize @bullet @item nccreate @item ncdisp @item ncinfo @item ncreadatt @item ncread @item ncwriteatt @item ncwrite @item ncwriteschema @end itemize @section Low level functionality @cindex Low level functionality The package aims to implement the netcdf interface of MATLAB in GNU Octave, however @acronym{GNU} Octave does not support the import function. Functions can be used in netcdf_functionname format, or an emulated import can be done using the import_netcdf script so that functions can be used in netcdf.functionname format. @c ------------------------------------------------------------------------- @node Function Reference @chapter Function Reference @cindex Function Reference The functions currently available in the toolkit are described below; @include functions.texi @c ------------------------------------------------------------------------- @include gpl.texi @c ------------------------------------------------------------------------- @node Index @unnumbered Index @printindex cp @bye netcdf-1.0.18/doc/version.texi0000644000000000000000000000015314674554453013137 0ustar00@c autogenerated from Makefile @set VERSION 1.0.18 @set PACKAGE netcdf @set DATE 2024-09-24 @set YEAR 2024 netcdf-1.0.18/inst/0000755000000000000000000000000014674554453010770 5ustar00netcdf-1.0.18/inst/+netcdf/0000755000000000000000000000000014674554453012306 5ustar00netcdf-1.0.18/inst/+netcdf/abort.m0000644000000000000000000000177214674554453013602 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.abort(@var{ncid}) ## Aborts all changes since the last time the dataset entered in define mode. ## @end deftypefn function varargout = abort(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_abort (varargin{:}); else netcdf_abort (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/close.m0000644000000000000000000000173514674554453013577 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.close(@var{ncid}) ## Close the NetCDF file with the id @var{ncid}. ## @end deftypefn function varargout = close(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_close (varargin{:}); else netcdf_close (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/copyAtt.m0000644000000000000000000000244414674554453014113 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) ## Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} ## to the variable @var{varid_out} in the data set @var{ncid_out}. ## To copy a global attribute use netcdf.getConstant("global") for @var{varid} or @var{varid_out}. ## @seealso{netcdf.getAtt,netcdf.getConstant} ## @end deftypefn function varargout = copyAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_copyAtt (varargin{:}); else netcdf_copyAtt (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/create.m0000644000000000000000000000315714674554453013735 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{ncid} =} netcdf.create(@var{filename},@var{mode}) ## Creates the file named @var{filename} in the mode @var{mode} which can have the ## following values: ## "clobber" (overwrite existing files), ## "noclobber" (prevent to overwrite existing files) ## "64bit_offset" (use the 64bit-offset format), ## "netcdf4" (use the NetCDF4, i.e. HDF5 format) or ## "share" (concurrent reading of the dataset). ## @var{mode} can also be the numeric value return by netcdf.getConstant. In the later-case it can be combined with a bitwise-or. ## @end deftypefn ## @subsubheading Example ## @example ## mode = bitor(netcdf.getConstant("classic_model"), ... ## netcdf.getConstant("netcdf4")); ## ncid = netcdf.create("test.nc",mode); ## @end example function varargout = create(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_create (varargin{:}); else netcdf_create (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/defDim.m0000644000000000000000000000213414674554453013654 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{dimid} =} netcdf.defDim(@var{ncid},@var{name},@var{len}) ## Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned. ## @end deftypefn function varargout = defDim(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defDim (varargin{:}); else netcdf_defDim (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/defGrp.m0000644000000000000000000000201214674554453013666 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{new_ncid} =} netcdf.defGrp(@var{ncid},@var{name}) ## Define a group in a NetCDF file. ## @seealso{netcdf.inqGrps} ## @end deftypefn function varargout = defGrp(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defGrp (varargin{:}); else netcdf_defGrp (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/defVar.m0000644000000000000000000000255314674554453013700 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{varid} = } netcdf.defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) ## Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. ## @end deftypefn function varargout = defVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVar (varargin{:}); else netcdf_defVar (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/defVarChunking.m0000644000000000000000000000240314674554453015361 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) ## Define the chunking settings of NetCDF variable @var{varid}. ## If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. ## If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. ## @end deftypefn function varargout = defVarChunking(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVarChunking (varargin{:}); else netcdf_defVarChunking (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/defVarDeflate.m0000644000000000000000000000236714674554453015170 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) ## Define the compression settings NetCDF variable @var{varid}. ## If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). ## @end deftypefn function varargout = defVarDeflate(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVarDeflate (varargin{:}); else netcdf_defVarDeflate (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/defVarFill.m0000644000000000000000000000233214674554453014502 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) ## Define the fill-value settings of the NetCDF variable @var{varid}. ## If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. ## @end deftypefn function varargout = defVarFill(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVarFill (varargin{:}); else netcdf_defVarFill (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/defVarFletcher32.m0000644000000000000000000000241214674554453015514 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) ## Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is "NOCHECKSUM", then checksums will be disabled. ## @end deftypefn function varargout = defVarFletcher32(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVarFletcher32 (varargin{:}); else netcdf_defVarFletcher32 (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/defVlen.m0000644000000000000000000000251314674554453014050 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{varid} = } netcdf.defVlen(@var{ncid},@var{typename},@var{basetype}) ## Defines a NC_VLEN variable length array type with the type name @var{typename} and a base datatype of @var{basetype} in the dataset @var{ncid}. @var{basetype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The new data type id is returned. ## @end deftypefn function varargout = defVlen(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVlen (varargin{:}); else netcdf_defVlen (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/delAtt.m0000644000000000000000000000225114674554453013701 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.delAtt(@var{ncid},@var{varid},@var{name}) ## Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. ## To delete a global attribute use netcdf.getConstant("global") for @var{varid}. ## @seealso{netcdf.defAtt,netcdf.getConstant} ## @end deftypefn function varargout = delAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_delAtt (varargin{:}); else netcdf_delAtt (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/endDef.m0000644000000000000000000000174214674554453013655 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.endDef (@var{ncid}) ## Leaves define-mode of NetCDF file @var{ncid}. ## @end deftypefn function varargout = endDef(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_endDef (varargin{:}); else netcdf_endDef (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/getAtt.m0000644000000000000000000000234614674554453013721 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{data} =} netcdf.getAtt (@var{ncid},@var{varid},@var{name}) ## Get the value of a NetCDF attribute. ## This function returns the value of the attribute called @var{name} of the variable ## @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be ## netcdf.getConstant("global"). ## @seealso{netcdf.putAtt} ## @end deftypefn function varargout = getAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getAtt (varargin{:}); else netcdf_getAtt (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/getChunkCache.m0000644000000000000000000000205714674554453015164 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf.getChunkCache() ## Gets the default chunk cache settings in the HDF5 library. ## @end deftypefn function varargout = getChunkCache(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getChunkCache (varargin{:}); else netcdf_getChunkCache (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/getConstant.m0000644000000000000000000000206214674554453014755 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{value} =} netcdf.getConstant(@var{name}) ## Returns the value of a NetCDF constant called @var{name}. ## @seealso{netcdf.getConstantNames} ## @end deftypefn function varargout = getConstant(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getConstant (varargin{:}); else netcdf_getConstant (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/getConstantNames.m0000644000000000000000000000200414674554453015735 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{value} =} netcdf.getConstantNames() ## Returns a list of all constant names. ## @end deftypefn function varargout = getConstantNames(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getConstantNames (varargin{:}); else netcdf_getConstantNames (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/getVar.m0000644000000000000000000000315214674554453013715 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid}) ## @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start}) ## @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start},@var{count}) ## @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) ## Get the data from a NetCDF variable. ## The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. ## @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), ## @var{count} is the number of elements of to be written along each dimension (default all elements) ## and @var{stride} is the sampling interval. ## @end deftypefn function varargout = getVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getVar (varargin{:}); else netcdf_getVar (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inq.m0000644000000000000000000000250714674554453013257 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{ndims},@var{nvars},@var{ngatts},@var{unlimdimid}] =} netcdf.inq(@var{ncid}) ## Return the number of dimension (@var{ndims}), the number of variables (@var{nvars}), the number of global attributes (@var{ngatts}) and the id of the unlimited dimension (@var{unlimdimid}). ## If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use ## the function netcdf.inqUnlimDims as multiple unlimite dimension exists. ## @end deftypefn function varargout = inq(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inq (varargin{:}); else netcdf_inq (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqAtt.m0000644000000000000000000000204114674554453013721 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{xtype},@var{len}] = } netcdf.inqAtt(@var{ncid},@var{varid},@var{name}) ## Get attribute type and length. ## @seealso{netcdf.inqAttName} ## @end deftypefn function varargout = inqAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqAtt (varargin{:}); else netcdf_inqAtt (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqAttID.m0000644000000000000000000000232114674554453014137 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{attnum} =} netcdf.inqAttID(@var{ncid},@var{varid},@var{attname}) ## Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. ## For global attributes @var{varid} can be ## netcdf.getConstant("global"). ## @seealso{netcdf.inqAttName} ## @end deftypefn function varargout = inqAttID(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqAttID (varargin{:}); else netcdf_inqAttID (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqAttName.m0000644000000000000000000000240114674554453014522 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{name} =} netcdf.inqAttName (@var{ncid},@var{varid},@var{attnum}) ## Get the name of a NetCDF attribute. ## This function returns the name of the attribute with the id @var{attnum} of the variable ## @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be ## netcdf.getConstant("global"). ## @seealso{netcdf.inqAttName} ## @end deftypefn function varargout = inqAttName(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqAttName (varargin{:}); else netcdf_inqAttName (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqDim.m0000644000000000000000000000205114674554453013703 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{name},@var{length}] =} netcdf.inqDim(@var{ncid},@var{dimid}) ## Returns the name and length of a NetCDF dimension. ## @seealso{netcdf.inqDimID} ## @end deftypefn function varargout = inqDim(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqDim (varargin{:}); else netcdf_inqDim (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqDimID.m0000644000000000000000000000202514674554453014121 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{dimid} =} netcdf.inqDimID(@var{ncid},@var{dimname}) ## Return the id of a NetCDF dimension. ## @seealso{netcdf.inqDim} ## @end deftypefn function varargout = inqDimID(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqDimID (varargin{:}); else netcdf_inqDimID (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqDimIDs.m0000644000000000000000000000241414674554453014306 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{dimids} =} netcdf.inqDimID(@var{ncid}) ## @deftypefnx {} {@var{dimids} =} netcdf.inqDimID(@var{ncid},@var{include_parents}) ## Return the dimension ids defined in a NetCDF file. ## If @var{include_parents} is 1, the dimension ids of the parent group are also returned. ## Per default this is not the case (@var{include_parents} is 0). ## @seealso{netcdf.inqDim} ## @end deftypefn function varargout = inqDimIDs(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqDimIDs (varargin{:}); else netcdf_inqDimIDs (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqFormat.m0000644000000000000000000000217514674554453014431 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{format} =} netcdf.inqFormat(@var{ncid}) ## Return the NetCDF format of the dataset @var{ncid}. ## Format might be one of the following ## "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC" ## @end deftypefn function varargout = inqFormat(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqFormat (varargin{:}); else netcdf_inqFormat (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqGrpFullNcid.m0000644000000000000000000000207614674554453015352 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{grp_ncid} =} netcdf.inqGrpFullNcid(@var{ncid},@var{name}) ## Return the group id based on the full group name. ## @seealso{netcdf.inqGrpName} ## @end deftypefn function varargout = inqGrpFullNcid(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrpFullNcid (varargin{:}); else netcdf_inqGrpFullNcid (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqGrpName.m0000644000000000000000000000201614674554453014524 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{name} =} netcdf.inqGrpName(@var{ncid}) ## Return group name in a NetCDF file. ## @seealso{netcdf.inqGrps} ## @end deftypefn function varargout = inqGrpName(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrpName (varargin{:}); else netcdf_inqGrpName (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqGrpNameFull.m0000644000000000000000000000204714674554453015353 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{name} =} netcdf.inqGrpNameFull(@var{ncid}) ## Return full name of group in NetCDF file. ## @seealso{netcdf.inqGrpName} ## @end deftypefn function varargout = inqGrpNameFull(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrpNameFull (varargin{:}); else netcdf_inqGrpNameFull (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqGrpParent.m0000644000000000000000000000203214674554453015073 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{parent_ncid} =} netcdf.inqGrpParent(@var{ncid}) ## Return id of the parent group ## @seealso{netcdf.inqGrpName} ## @end deftypefn function varargout = inqGrpParent(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrpParent (varargin{:}); else netcdf_inqGrpParent (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqGrps.m0000644000000000000000000000200714674554453014106 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{ncids} =} netcdf.inqGrps(@var{ncid}) ## Return all groups ids in a NetCDF file. ## @seealso{netcdf.inqGrps} ## @end deftypefn function varargout = inqGrps(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrps (varargin{:}); else netcdf_inqGrps (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqLibVers.m0000644000000000000000000000176014674554453014546 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{vers} =} netcdf.inqLibVers() ## Returns the version of the NetCDF library. ## @end deftypefn function varargout = inqLibVers(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqLibVers (varargin{:}); else netcdf_inqLibVers (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqNcid.m0000644000000000000000000000202614674554453014051 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{grp_ncid} =} netcdf.inqNcid(@var{ncid},@var{name}) ## Return group id based on its name ## @seealso{netcdf.inqGrpFullNcid} ## @end deftypefn function varargout = inqNcid(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqNcid (varargin{:}); else netcdf_inqNcid (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqUnlimDims.m0000644000000000000000000000204714674554453015100 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{unlimdimids} =} netcdf.inqUnlimDims(@var{ncid}) ## Return the id of all unlimited dimensions of the NetCDF file @var{ncid}. ## @end deftypefn function varargout = inqUnlimDims(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqUnlimDims (varargin{:}); else netcdf_inqUnlimDims (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqUserType.m0000644000000000000000000000236514674554453014762 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{typename}, @var{bytesize}, @var{basetypeid}, @var{numfields}, @var{classid}] = } netcdf.inqUserType(@var{ncid},@var{typeid}) ## Provide information on a user defined type @var{typeid} in the dataset @var{ncid}. ## ## The function returns the typename, bytesize, base type id, number of fields and class identifier of the type. ## ## @end deftypefn function varargout = inqUserType(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqUserType (varargin{:}); else netcdf_inqUserType (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqVar.m0000644000000000000000000000250514674554453013726 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{name},@var{nctype},@var{dimids},@var{nattr}] = } netcdf.inqVar (@var{ncid},@var{varid}) ## Inquires information about a NetCDF variable. ## This functions returns the @var{name}, the NetCDF type @var{nctype}, an array of dimension ids ## @var{dimids} and the number of attributes @var{nattr} of the NetCDF variable. @var{nctype} in an ## integer corresponding NetCDF constants. ## @seealso{netcdf.inqVarID,netcdf.getConstant} ## @end deftypefn function varargout = inqVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVar (varargin{:}); else netcdf_inqVar (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqVarChunking.m0000644000000000000000000000241314674554453015413 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{storage},@var{chunkSizes}] = } netcdf.inqVarChunking (@var{ncid},@var{varid}) ## Determines the chunking settings of NetCDF variable @var{varid}. ## If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. ## If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. ## @end deftypefn function varargout = inqVarChunking(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarChunking (varargin{:}); else netcdf_inqVarChunking (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqVarDeflate.m0000644000000000000000000000237714674554453015222 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf.inqVarDeflate (@var{ncid},@var{varid}) ## Determines the compression settings NetCDF variable @var{varid}. ## If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). ## @end deftypefn function varargout = inqVarDeflate(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarDeflate (varargin{:}); else netcdf_inqVarDeflate (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqVarFill.m0000644000000000000000000000234214674554453014534 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{no_fill},@var{fillvalue}] = } netcdf.inqVarFill(@var{ncid},@var{varid}) ## Determines the fill-value settings of the NetCDF variable @var{varid}. ## If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. ## @end deftypefn function varargout = inqVarFill(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarFill (varargin{:}); else netcdf_inqVarFill (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqVarFletcher32.m0000644000000000000000000000235614674554453015554 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{checksum} =} netcdf.inqVarFletcher32(@var{ncid},@var{varid}) ## Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM". ## @end deftypefn function varargout = inqVarFletcher32(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarFletcher32 (varargin{:}); else netcdf_inqVarFletcher32 (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqVarID.m0000644000000000000000000000205714674554453014145 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{varid} = } netcdf.inqVarID (@var{ncid},@var{name}) ## Return the id of a variable based on its name. ## @seealso{netcdf.defVar,netcdf.inqVarIDs} ## @end deftypefn function varargout = inqVarID(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarID (varargin{:}); else netcdf_inqVarID (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqVarIDs.m0000644000000000000000000000212014674554453014317 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{varids} = } netcdf.inqVarID (@var{ncid}) ## Return all variable ids. ## This functions returns all variable ids in a NetCDF file or NetCDF group. ## @seealso{netcdf.inqVarID} ## @end deftypefn function varargout = inqVarIDs(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarIDs (varargin{:}); else netcdf_inqVarIDs (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/inqVlen.m0000644000000000000000000000224714674554453014105 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {[@var{typename}, @var{bytesize}, @var{basetypeid}] = } netcdf.inqVlen(@var{ncid},@var{typeid}) ## Provide information on a NC_VLEN variable length array type @var{typeid} in the dataset @var{ncid}. ## ## The function returns the typename, bytesize, and base type id. ## ## @end deftypefn function varargout = inqVlen(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVlen (varargin{:}); else netcdf_inqVlen (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/open.m0000644000000000000000000000200214674554453013417 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{ncid} =} netcdf.open(@var{filename},@var{mode}) ## Opens the file named @var{filename} in the mode @var{mode}. ## @end deftypefn function varargout = open(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_open (varargin{:}); else netcdf_open (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/putAtt.m0000644000000000000000000000240214674554453013743 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.putAtt (@var{ncid},@var{varid},@var{name},@var{data}) ## Defines a NetCDF attribute. ## This function defines the attribute called @var{name} of the variable ## @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. ## For global attributes @var{varid} can be ## netcdf.getConstant("global"). ## @seealso{netcdf.getAtt} ## @end deftypefn function varargout = putAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_putAtt (varargin{:}); else netcdf_putAtt (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/putVar.m0000644000000000000000000000313614674554453013750 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.putVar (@var{ncid},@var{varid},@var{data}) ## @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{data}) ## @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) ## @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) ## Put data in a NetCDF variable. ## The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. ## @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), ## @var{count} is the number of elements of to be written along each dimension (default all elements) ## and @var{stride} is the sampling interval. ## @end deftypefn function varargout = putVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_putVar (varargin{:}); else netcdf_putVar (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/reDef.m0000644000000000000000000000173514674554453013517 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.reDef (@var{ncid}) ## Enter define-mode of NetCDF file @var{ncid}. ## @end deftypefn function varargout = reDef(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_reDef (varargin{:}); else netcdf_reDef (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/renameAtt.m0000644000000000000000000000237514674554453014413 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) ## Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute. ## To rename a global attribute use netcdf.getConstant("global") for @var{varid}. ## @seealso{netcdf.copyAtt,netcdf.getConstant} ## @end deftypefn function varargout = renameAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_renameAtt (varargin{:}); else netcdf_renameAtt (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/renameDim.m0000644000000000000000000000211514674554453014364 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.renameDim(@var{ncid},@var{dimid},@var{name}) ## Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension. ## @end deftypefn function varargout = renameDim(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_renameDim (varargin{:}); else netcdf_renameDim (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/renameVar.m0000644000000000000000000000211314674554453014401 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.renameVar(@var{ncid},@var{varid},@var{name}) ## Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable. ## @end deftypefn function varargout = renameVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_renameVar (varargin{:}); else netcdf_renameVar (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/setChunkCache.m0000644000000000000000000000216614674554453015201 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.setChunkCache(@var{size}, @var{nelems}, @var{preemption}) ## Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created. ## @end deftypefn function varargout = setChunkCache(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_setChunkCache (varargin{:}); else netcdf_setChunkCache (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/setDefaultFormat.m0000644000000000000000000000230414674554453015734 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{old_format} =} netcdf.setDefaultFormat(@var{format}) ## Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be ## "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic". ## @end deftypefn function varargout = setDefaultFormat(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_setDefaultFormat (varargin{:}); else netcdf_setDefaultFormat (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/setFill.m0000644000000000000000000000217214674554453014070 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {@var{old_mode} =} netcdf.setFill(@var{ncid},@var{fillmode}) ## Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either "fill" or "nofill". ## @end deftypefn function varargout = setFill(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_setFill (varargin{:}); else netcdf_setFill (varargin{:}); endif endfunction netcdf-1.0.18/inst/+netcdf/sync.m0000644000000000000000000000174414674554453013446 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.sync(@var{ncid}) ## Writes all changes to the disk and leaves the file open. ## @end deftypefn function varargout = sync(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_sync (varargin{:}); else netcdf_sync (varargin{:}); endif endfunction netcdf-1.0.18/inst/PKG_ADD0000644000000000000000000000071614674554453012010 0ustar00# on package load, attempt to load docs try pkg_dir = fileparts (fullfile (mfilename ("fullpath"))); doc_file = fullfile (pkg_dir, "doc", "octave-netcdf.qch"); if exist(doc_file, "file") if exist("__event_manager_register_documentation__") __event_manager_register_documentation__ (doc_file); elseif exist("__event_manager_register_doc__") __event_manager_register_doc__ (doc_file); endif endif catch # do nothing end_try_catch netcdf-1.0.18/inst/PKG_DEL0000644000000000000000000000073214674554453012022 0ustar00# on package unload, attempt to unload docs try pkg_dir = fileparts (fullfile (mfilename ("fullpath"))); doc_file = fullfile (pkg_dir, "doc", "octave-netcdf.qch"); if exist(doc_file, "file") if exist("__event_manager_unregister_documentation__") __event_manager_unregister_documentation__ (doc_file); elseif exist("__event_manager_unregister_doc__") __event_manager_unregister_doc__ (doc_file); endif endif catch # do nothing end_try_catch netcdf-1.0.18/inst/import_netcdf.m0000644000000000000000000000173614674554453014012 0ustar00## Copyright (C) 2023 John Donoghue ## ## 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 . ## -*- texinfo -*- ## @deftypefn {} {} import_fits ## Dummy function provided to provide compatibility with older versions of GNU Octave netcdf ## ## Function is deprecated. ## @end deftypefn function import_netcdf # doesnt do anything anymore as package files are provided in inst/+netcdf endfunction netcdf-1.0.18/inst/nccreate.m0000644000000000000000000001030714674554453012733 0ustar00## Copyright (C) 2013-2022 Alexander Barth ## ## 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 . ## -*- texinfo -*- ## @deftypefn {Function File} {} nccreate(@var{filename},@var{varname}) ## @deftypefnx {Function File} {} nccreate(@var{filename},@var{varname},"property",@var{value},...) ## ## Create the variable @var{varname} in the file @var{filename}. ## ## @subsubheading Properties ## The following properties can be used: ## @itemize ## @item "Dimensions": a cell array with the dimension names followed by their ## length or Inf if the dimension is unlimited. If the property is omitted, a ## scalar variable is created. ## @item "Datatype": a string with the Octave data type name ## (see @code{ncinfo} for the correspondence between Octave and NetCDF data ## types). The default data type is a "double". ## @item "Format": This can be "netcdf4_classic" (default), "classic", "64bit" ## or "netcdf4". ## @item "FillValue": the value used for undefined elements of the NetCDF ## variable. ## @item "ChunkSize": the size of the data chunks. If omitted, the variable is ## not chunked. ## @item "DeflateLevel": The deflate level for compression. It can be the string ## "disable" (default) for no compression or an integer between 0 (no ## compression) and 9 (maximum compression). ## @item "Shuffle": true for enabling the shuffle filter or false (default) for ## disabling it. ## @end itemize ## ## @subsubheading Example ## @example ## nccreate("test.nc","temp","Dimensions",@{"lon",10,"lat",20@},"Format","classic"); ## ncdisp("test.nc"); ## @end example ## @seealso{ncwrite} ## @end deftypefn function nccreate (filename, varname, varargin) dimensions = {}; datatype = 'double'; ncformat = 'netcdf4_classic'; FillValue = []; ChunkSize = []; DeflateLevel = 'disable'; Shuffle = false; for i = 1:2:length(varargin) if strcmp(varargin{i},'Dimensions') dimensions = varargin{i+1}; elseif strcmp(varargin{i},'Datatype') datatype = varargin{i+1}; elseif strcmp(varargin{i},'Format') ncformat = varargin{i+1}; elseif strcmp(varargin{i},'FillValue') FillValue = varargin{i+1}; elseif strcmp(varargin{i},'ChunkSize') ChunkSize = varargin{i+1}; elseif strcmp(varargin{i},'DeflateLevel') DeflateLevel = varargin{i+1}; elseif strcmp(varargin{i},'Shuffle') Shuffle = varargin{i+1}; else error(['unknown keyword ' varargin{i} '.']); endif endfor if ~isempty(stat(filename)) ncid = netcdf_open(filename,'NC_WRITE'); netcdf_reDef(ncid); else mode = format2mode(ncformat); ncid = netcdf_create(filename,mode); endif % create dimensions dimids = []; i = 1; while i <= length(dimensions) if i == length(dimensions) dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); i = i+1; elseif ischar(dimensions{i+1}) dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); i = i+1; else try if isinf(dimensions{i+1}) dimensions{i+1} = netcdf_getConstant('NC_UNLIMITED'); endif dimids(end+1) = netcdf_defDim(ncid,dimensions{i},dimensions{i+1}); catch dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); end_try_catch i = i+2; endif endwhile varid = netcdf_defVar(ncid,varname,oct2nctype(datatype),dimids); if ~isempty(ChunkSize) netcdf_defVarChunking(ncid,varid,'chunked',ChunkSize); endif if ~isempty(FillValue) % value of nofill? netcdf_defVarFill(ncid,varid,false,FillValue); endif if isnumeric(DeflateLevel) netcdf_defVarDeflate(ncid,varid,Shuffle,true,DeflateLevel); endif netcdf_close(ncid); endfunction netcdf-1.0.18/inst/ncdisp.m0000644000000000000000000001060714674554453012432 0ustar00## Copyright (C) 2013-2022 Alexander Barth ## ## 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 . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncdisp (@var{filename}) ## Display meta-data of the NetCDF file @var{filename} ## ## @subsubheading Example ## @example ## ncdisp("test.nc"); ## @end example ## @seealso{ncinfo} ## @end deftypefn function ncdisp (filename) info = ncinfo(filename); fprintf("Source:\n"); indent = repmat(" ",[1 11]); fprintf("%s%s\n",indent,fullfile(filename)); fprintf("Format:\n"); fprintf("%s%s\n",indent,info.Format); colors.var = "red"; colors.att = "cyan"; colors.dim = "blue"; group_color = "green"; printgroup("",info,colors); endfunction function s = fmtattr(val) if ischar(val) s = sprintf("""%s""",val); else s = num2str(val); endif endfunction function s = fmtsize(sz) s = sprintf("%gx",sz); s = s(1:end-1); endfunction function printgroup(indent1,info,colors) indent2 = [indent1 repmat(" ",[1 11])]; indent3 = [indent2 repmat(" ",[1 11])]; % attributes if ~isempty(info.Attributes) fprintf("%sGlobal Attributes:\n",indent1); printattr(indent2,info.Attributes,colors); endif % dimensions if ~isempty(info.Dimensions) % length of the longest attribute name dim = info.Dimensions; maxlen = max(cellfun(@length,{dim.Name})); fprintf("%sDimensions:\n",indent1); for i = 1:length(dim) space = repmat(" ",[maxlen-length(dim(i).Name) 1]); fprintf("%s",indent2); colormsg(sprintf("%s %s= %d",dim(i).Name,space,dim(i).Length),colors.dim); fprintf("\n"); endfor endif % variables if isfield(info,"Variables") if ~isempty(info.Variables) % length of the longest attribute name vars = info.Variables; fprintf("%sVariables:\n",indent1); for i = 1:length(vars) %fprintf("%s%s\n",indent2(1:end-7),vars(i).Name); colormsg(sprintf("%s%s\n",indent2(1:end-7),vars(i).Name),colors.var); if ~isempty(vars(i).Size) sz = fmtsize(vars(i).Size); dimname = sprintf("%s,",vars(i).Dimensions.Name); dimname = dimname(1:end-1); else sz = "1x1"; dimname = ""; endif fprintf("%sSize: %s\n",indent2,sz); fprintf("%sDimensions: %s\n",indent2,dimname); fprintf("%sDatatype: %s\n",indent2,vars(i).Datatype); if ~isempty(vars(i).Attributes); fprintf("%sAttributes:\n",indent2); printattr(indent3,vars(i).Attributes,colors); endif endfor endif endif % groups if ~isempty(info.Groups) % length of the longest attribute name grps = info.Groups; fprintf("%sGroups:\n",indent1); for i = 1:length(grps) fprintf("%s%s\n",indent2(1:end-7),grps(i).Name); printgroup(indent2,grps(i),colors); endfor endif endfunction function printattr(indent,attr,colors) % length of the longest attribute name maxlen = max(cellfun(@length,{attr.Name})); for i = 1:length(attr) space = repmat(" ",[maxlen-length(attr(i).Name) 1]); %fprintf("%s%s %s= %s\n",indent,attr(i).Name,space,fmtattr(attr(i).Value)); fprintf("%s",indent); colormsg(sprintf("%s %s= %s\n",attr(i).Name,space,fmtattr(attr(i).Value)),colors.att); endfor endfunction function colormsg (msg,color) if strcmp(getenv("TERM"),"xterm") esc = char(27); % ANSI escape codes colors.black = [esc, "[30m"]; colors.red = [esc, "[31m"]; colors.green = [esc, "[32m"]; colors.yellow = [esc, "[33m"]; colors.blue = [esc, "[34m"]; colors.magenta = [esc, "[35m"]; colors.cyan = [esc, "[36m"]; colors.white = [esc, "[37m"]; reset = [esc, "[0m"]; c = getfield(colors,color); fprintf('%s',[c, msg, reset]); else fprintf('%s',msg); endif endfunction netcdf-1.0.18/inst/ncinfo.m0000644000000000000000000002007114674554453012422 0ustar00## Copyright (C) 2013-2022 Alexander Barth ## ## 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 . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{info} =} ncinfo (@var{filename}) ## @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{varname}) ## @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{groupname}) ## Return information about an entire NetCDF file @var{filename} (i.e. the root ## group "/"), about the variable called @var{varname} or the group called ## @var{groupname}. ## ## The structure @var{info} has always the following fields: ## @itemize ## @item @var{Filename}: the name of the NetCDF file ## @item @var{Format}: one of the strings "CLASSIC", "64BIT", "NETCDF4" ## or "NETCDF4_CLASSIC" ## @end itemize ## ## The structure @var{info} has additional fields depending on whether a ## group of variable is queried. ## ## @subsubheading Groups ## ## Groups are returned as an array structure with the following fields: ## ## @itemize ## @item @var{Name}: the group name. The root group is named "/". ## @item @var{Dimensions}: a array structure with the dimensions. ## @item @var{Variables}: a array structure with the variables. ## @item @var{Attributes}: a array structure with global attributes. ## @item @var{Groups}: a array structure (one for each group) with the ## same fields as this structure. ## @end itemize ## ## @subsubheading Dimensions ## ## Dimensions are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the dimension ## @item @var{Length}: the length of the dimension ## @item @var{Unlimited}: true of the dimension has no fixed limited, false ## @end itemize ## ## @subsubheading Variables ## ## Variables are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the dimension ## @item @var{Dimensions}: array structure of all dimensions of this variable ## with the same structure as above. ## @item @var{Size}: array with the size of the variable ## @item @var{Datatype}: string with the corresponding octave data-type ## (see below) ## @item @var{Attributes}: a array structure of attributes ## @item @var{FillValue}: the NetCDF fill value of the variable. If the fill ## value is not defined, then this attribute is an empty array ([]). ## @item @var{DeflateLevel}: the NetCDF deflate level between 0 (no ## compression) and 9 (maximum compression). ## @item @var{Shuffle}: is true if the shuffle filter is activated to improve ## compression, otherwise false. ## @item @var{CheckSum}: is set to "fletcher32", if check-sums are used, ## otherwise this field is not defined. ## @end itemize ## ## @subsubheading Attributes ## ## Attributes are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the attribute ## @item @var{Value}: the value of the attribute (with the corresponding type) ## @item @var{Unlimited}: true of the dimension has no fixed limited, false ## @end itemize ## ## @subsubheading Data-types ## ## The following the the correspondence between the Octave and NetCDF ## data-types: ## ## @multitable @columnfractions .5 .5 ## @headitem Octave type @tab NetCDF type ## @item @code{int8} @tab @code{NC_BYTE} ## @item @code{uint8} @tab @code{NC_UBYTE} ## @item @code{int16} @tab @code{NC_SHORT} ## @item @code{uint16} @tab @code{NC_USHORT} ## @item @code{int32} @tab @code{NC_INT} ## @item @code{uint32} @tab @code{NC_UINT} ## @item @code{int64} @tab @code{NC_INT64} ## @item @code{uint64} @tab @code{NC_UINT64} ## @item @code{single} @tab @code{NC_FLOAT} ## @item @code{double} @tab @code{NC_DOUBLE} ## @item @code{char} @tab @code{NC_CHAR} ## @end multitable ## ## The output of @code{ncinfo} can be used to create a NetCDF file with the same ## meta-data using @code{ncwriteschema}. ## ## Note: If there are no attributes (or variable or groups), the corresponding ## field is an empty matrix and not an empty struct array for compatibility ## with matlab. ## ## @seealso{ncread,nccreate,ncwriteschema,ncdisp} ## ## @end deftypefn function info = ncinfo (filename, name) ncid = netcdf_open(filename,"NC_NOWRITE"); info.Filename = filename; if nargin == 1 name = "/"; endif [gid,varid] = ncloc(ncid,name); if isempty(varid) info = ncinfo_group(info,gid); else unlimdimIDs = netcdf_inqUnlimDims(gid); info = ncinfo_var(info,gid,varid,unlimdimIDs); endif # NetCDF format ncformat = netcdf_inqFormat(ncid); info.Format = lower(strrep(ncformat,'FORMAT_','')); netcdf_close(ncid); endfunction function dims = ncinfo_dim(ncid,dimids,unlimdimIDs) dims = []; for i=1:length(dimids) tmp = struct(); [tmp.Name, tmp.Length] = netcdf_inqDim(ncid,dimids(i)); tmp.Unlimited = any(unlimdimIDs == dimids(i)); if isempty(dims) dims = [tmp]; else dims(i) = tmp; endif endfor endfunction function vinfo = ncinfo_var(vinfo,ncid,varid,unlimdimIDs) [vinfo.Name,xtype,dimids,natts] = netcdf_inqVar(ncid,varid); % Information about dimension vinfo.Dimensions = ncinfo_dim(ncid,dimids,unlimdimIDs); if isempty(vinfo.Dimensions) vinfo.Size = []; else vinfo.Size = cat(2,vinfo.Dimensions.Length); endif % Data type if xtype >= netcdf_getConstant("NC_FIRSTUSERTYPEID") [utype_name, utype_bsize, utype_typeid, utype_nfields, utype_classid] = netcdf_inqUserType(ncid, xtype); vinfo.Datatype = nc2octtype(utype_typeid); if utype_classid == netcdf_getConstant("NC_VLEN") vinfo.Datatype = [vinfo.Datatype '*']; endif else vinfo.Datatype = nc2octtype(xtype); endif % Attributes vinfo.Attributes = []; for i = 0:natts-1 tmp = struct(); tmp.Name = netcdf_inqAttName(ncid,varid,i); tmp.Value = netcdf_getAtt(ncid,varid,tmp.Name); if isempty(vinfo.Attributes) vinfo.Attributes = [tmp]; else vinfo.Attributes(i+1) = tmp; endif endfor % chunking, fillvalue, compression [storage,vinfo.ChunkSize] = netcdf_inqVarChunking(ncid,varid); [nofill,vinfo.FillValue] = netcdf_inqVarFill(ncid,varid); if nofill vinfo.FillValue = []; endif [shuffle,deflate,vinfo.DeflateLevel] = ... netcdf_inqVarDeflate(ncid,varid); if ~deflate vinfo.DeflateLevel = []; endif vinfo.Shuffle = shuffle; # add checksum information if defined (unlike matlab) checksum = netcdf_inqVarFletcher32(ncid,varid); if ~strcmp(checksum,'nochecksum'); vinfo.Checksum = checksum; endif endfunction function info = ncinfo_group (info, ncid) info.Name = netcdf_inqGrpName(ncid); unlimdimIDs = netcdf_inqUnlimDims(ncid); [ndims,nvars,ngatts] = netcdf_inq(ncid); % dimensions dimids = netcdf_inqDimIDs(ncid); info.Dimensions = ncinfo_dim(ncid,dimids,unlimdimIDs); % variables for i=1:nvars info.Variables(i) = ncinfo_var(struct(),ncid,i-1,unlimdimIDs); endfor % global attributes info.Attributes = []; gid = netcdf_getConstant('NC_GLOBAL'); for i = 0:ngatts-1 tmp = struct(); tmp.Name = netcdf_inqAttName(ncid,gid,i); tmp.Value = netcdf_getAtt(ncid,gid,tmp.Name); if isempty(info.Attributes) info.Attributes = [tmp]; else info.Attributes(i+1) = tmp; endif endfor info.Groups = []; gids = netcdf_inqGrps(ncid); for i = 1:length(gids) tmp = ncinfo_group(struct(),gids(i)); if isempty(info.Groups) info.Groups = [tmp]; else info.Groups(i) = tmp; endif endfor endfunction netcdf-1.0.18/inst/ncread.m0000644000000000000000000001045014674554453012402 0ustar00## Copyright (C) 2013-2022 Alexander Barth ## ## 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 . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{x} =} ncread (@var{filename}, @var{varname}) ## @deftypefnx {Function File} {@var{x} =} ncread (@var{filename}, @var{varname},@var{start},@var{count},@var{stride}) ## ## Read the variable @var{varname} from the NetCDF file @var{filename}. ## ## If @var{start},@var{count} and @var{stride} are present, a subset of the ## variable is loaded. The parameter @var{start} contains the starting indices ## (1-based), @var{count} is the number of elements and @var{stride} the ## increment between two successive elements. These parameters are vectors whose ## length is equal to the number of dimension of the variable. Elements of ## @var{count} might be Inf which means that as many values as possible are ## loaded. ## ## If the variable has the _FillValue attribute, then the corresponding values ## are replaced by NaN (except for characters). NetCDF attributes scale_factor ## (default 1) and add_offset (default 0) are use the transform the variable ## during the loading: ## ## x = scale_factor * x_in_file + add_offset ## ## The output data type matches the NetCDF datatype, except when the attributes ## _FillValue, add_offset or scale_factor are defined in which case the output ## is a array in double precision. ## ## Note that values equal to the attribute missing_value are not replaced by ## NaN (for compatibility). ## ## @subsubheading Example ## Read the data from variable 'mydata' in the file test.nc. ## @example ## data = ncread('test.nc','mydata'); ## @end example ## ## @seealso{ncwrite,ncinfo,ncdisp} ## ## @end deftypefn function x = ncread (filename, varname, start, count, stride) ncid = netcdf_open(filename,'NC_NOWRITE'); [gid,varid] = ncvarid(ncid,varname); [varname_,xtype,dimids,natts] = netcdf_inqVar(gid,varid); % number of dimenions nd = length(dimids); sz = zeros(1,nd); for i=1:length(dimids) [dimname, sz(i)] = netcdf_inqDim(gid,dimids(i)); endfor if nargin < 3 start = ones(1,nd); endif if nargin < 4 count = inf*ones(1,nd); endif if nargin < 5 stride = ones(1,nd); endif % replace inf in count i = count == inf; count(i) = (sz(i)-start(i))./stride(i) + 1; x = netcdf_getVar(gid,varid,start-1,count,stride); % apply attributes factor = []; offset = []; fv = []; for i = 0:natts-1 attname = netcdf_inqAttName(gid,varid,i); if strcmp(attname,'scale_factor') factor = netcdf_getAtt(gid,varid,'scale_factor'); elseif strcmp(attname,'add_offset') offset = netcdf_getAtt(gid,varid,'add_offset'); elseif strcmp(attname,'_FillValue') fv = netcdf_getAtt(gid,varid,'_FillValue'); endif endfor netcdf_close(ncid); # the scaling does not make sense of characters if xtype == netcdf_getConstant('char') || ... xtype == netcdf_getConstant('string') return; endif # special handling for vlen if iscell(x) if !isempty(fv) || !isempty(factor) || !isempty(offset) for k=1:length(x) v = x{k}; if !isa(x{k}, 'double') v = double(v); endif if !isempty(fv) v(v == fv) = NaN; endif if !isempty(factor) v = v * factor; endif if !isempty(offset) v = v + offset; endif x{k} = v; endfor endif else if !isempty(fv) || !isempty(factor) || !isempty(offset) if !isa(x, 'double') x = double(x); endif if !isempty(fv) x(x == fv) = NaN; endif if !isempty(factor) x = x * factor; endif if !isempty(offset) x = x + offset; endif endif endif endfunction netcdf-1.0.18/inst/ncreadatt.m0000644000000000000000000000325014674554453013113 0ustar00## Copyright (C) 2013-2022 Alexander Barth ## ## 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 . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{val} =} ncreadatt(@var{filename},@var{varname},@var{attname}) ## ## Return the attribute @var{attname} of the variable @var{varname} in the file ## @var{filename}. ## ## Global attributes can be accessed by using "/" or the group name as ## @var{varname}. The type of attribute is mapped to the Octave data types. ## (see @code{ncinfo}). ## ## @subsubheading Example ## Read global attribute 'creation_date' ## @example ## d = ncreadatt('test.nc','/','creation_date') ## @end example ## Read atribute 'myattr' assigned to variable mydata. ## @example ## d = ncreadattr('test.nc', 'mydata', 'myattr'); ## @end example ## @seealso{ncinfo,ncwriteatt} ## @end deftypefn function val = ncreadatt(filename,varname,attname) ncid = netcdf_open(filename,'NC_NOWRITE'); [gid,varid] = ncloc(ncid,varname); if isempty(varid) varid = netcdf_getConstant('NC_GLOBAL'); endif val = netcdf_getAtt(gid,varid,attname); netcdf_close(ncid); endfunction netcdf-1.0.18/inst/ncwrite.m0000644000000000000000000000621214674554453012622 0ustar00## Copyright (C) 2013-2023 Alexander Barth ## ## 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 . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}) ## @deftypefnx {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}, @var{start}, @var{stride}) ## ## Write array @var{x} to the the variable @var{varname} in the NetCDF file ## @var{filename}. ## ## The variable with the name @var{varname} and the appropriate dimension must ## already exist in the NetCDF file. ## ## If @var{start} and @var{stride} are present, a subset of the ## variable is written. The parameter @var{start} contains the starting indices ## (1-based) and @var{stride} the ## increment between two successive elements. These parameters are vectors whose ## length is equal to the number of dimension of the variable. ## ## If the variable has the _FillValue attribute, then the values equal to NaN ## are replaced by corresponding fill value NetCDF attributes scale_factor ## (default 1) and add_oddset (default 0) are use the transform the variable ## during writing: ## ## x_in_file = (x - add_offset)/scale_factor ## ## @subsubheading Example ## Create a netcdf file with a variable of 'mydata' and then write ## data to that variable. ## @example ## nccreate('myfile.nc','mydata'); ## ncwrite('myfile.nc','mydata', 101); ## @end example ## ## @seealso{ncread,nccreate} ## ## @end deftypefn function ncwrite (filename, varname, x, start, stride) ncid = netcdf_open(filename,'NC_WRITE'); [gid,varid] = ncvarid(ncid,varname); [varname_,xtype,dimids,natts] = netcdf_inqVar(gid,varid); % number of dimenions nd = length(dimids); sz = zeros(1,nd); count = zeros(1,nd); for i=1:length(dimids) [dimname, sz(i)] = netcdf_inqDim(gid,dimids(i)); count(i) = size(x,i); endfor if nargin < 4 start = ones(1,nd); endif if nargin < 5 stride = ones(1,nd); endif % apply attributes factor = []; offset = []; fv = []; for i = 0:natts-1 attname = netcdf_inqAttName(gid,varid,i); if strcmp(attname,'scale_factor') factor = netcdf_getAtt(gid,varid,'scale_factor'); elseif strcmp(attname,'add_offset') offset = netcdf_getAtt(gid,varid,'add_offset'); elseif strcmp(attname,'_FillValue') fv = netcdf_getAtt(gid,varid,'_FillValue'); endif endfor if ~isempty(offset) x = x - offset; endif if ~isempty(factor) x = x / factor; endif if ~isempty(fv) x(isnan(x)) = fv; endif netcdf_putVar(gid,varid,start-1,count,stride,x); netcdf_close(ncid); endfunction netcdf-1.0.18/inst/ncwriteatt.m0000644000000000000000000000327014674554453013334 0ustar00## Copyright (C) 2013-2022 Alexander Barth ## ## 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 . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwriteatt(@var{filename},@var{varname},@var{attname},@var{val}) ## ## Defines the attribute @var{attname} of the variable @var{varname} in the file ## @var{filename} with the value @var{val}. ## ## Global attributes can be defined by using "/" or the group name as ## @var{varname}. The type of value is mapped to the NetCDF data types. ## (see @code{ncinfo}). ## ## @subsubheading Example ## Create a netcdf4 format file with a variable mydata and assign an attribute "units" to it. ## @example ## nccreate("myfile.nc", "mydata", "Format", "netcdf4"); ## ncwriteatt("myfile.nc", "mydata", "Units", "K"); ## @end example ## ## @seealso{ncinfo} ## @end deftypefn function ncwriteatt (filename, varname, attname, val) ncid = netcdf_open(filename,'NC_WRITE'); netcdf_reDef(ncid); [gid,varid] = ncloc(ncid,varname); if isempty(varid) varid = netcdf_getConstant('NC_GLOBAL'); endif netcdf_putAtt(ncid,varid,attname,val); netcdf_close(ncid); endfunction netcdf-1.0.18/inst/ncwriteschema.m0000644000000000000000000001100514674554453013777 0ustar00## Copyright (C) 2013-2022 Alexander Barth ## ## 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 . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwriteschema (@var{filename}, @var{schema}) ## ## Create a NetCDF called @var{filename} with the dimensions, attributes, ## variables and groups given by the structure @var{schema}. ## ## The variable @var{schema} has the same structure as the results of ## @code{ncinfo}. @code{ncinfo} and @code{ncwriteschema} can be used together to ## create a NetCDF using another file as a template: ## ## @subsubheading Example ## @example ## schema = ncinfo("template.nc"); ## # the new file should be named "new_file.nc" ## ncwriteschema("new_file.nc",schema); ## @end example ## ## Unused field in @var{schema} such as @var{ChunkSize}, @var{Shuffle}, ## @var{DeflateLevel}, @var{FillValue}, @var{Checksum} can be left-out if the ## corresponding feature is not used. ## ## Dimensions are considered as limited if the field @var{Unlimited} is missing, ## unless the dimension length is Inf. ## ## @seealso{ncinfo} ## ## @end deftypefn function ncwriteschema (filename, s) mode = format2mode(s.Format); ncid = netcdf_create(filename,mode); write_group(ncid,s) netcdf_close(ncid); endfunction function write_group(ncid,s) % normalize schema if ~isfield(s,'Dimensions') s.Dimensions = []; endif if isempty(s.Dimensions) s.Dimensions = struct('Name',{},'Length',{},'Unlimited',{}); endif if ~isfield(s,'Attributes') s.Attributes = struct('Name',{},'Value',{}); endif if ~isfield(s,'Variables') s.Variables = struct('Name',{},'Dimensions',{},'Datatype',{});; endif % dimension for i = 1:length(s.Dimensions) dim = s.Dimensions(i); if ~isfield(dim,'Unlimited') dim.Unlimited = false; endif len = dim.Length; if dim.Unlimited || isinf(len) len = netcdf_getConstant('NC_UNLIMITED'); endif s.Dimensions(i).id = netcdf_defDim(ncid,dim.Name,len); endfor % global attributes gid = netcdf_getConstant('NC_GLOBAL'); for j = 1:length(s.Attributes) netcdf_putAtt(ncid,gid,s.Attributes(j).Name,s.Attributes(j).Value); endfor % variables for i = 1:length(s.Variables) v = s.Variables(i); %v.Name % get dimension id dimids = zeros(length(v.Dimensions),1); for j = 1:length(v.Dimensions) dimids(j) = netcdf_inqDimID(ncid,v.Dimensions(j).Name); endfor % define variable dtype = oct2nctype(v.Datatype); varid = netcdf_defVar(ncid,v.Name,dtype,dimids); % define attributes for j = 1:length(v.Attributes) netcdf_putAtt(ncid,varid,v.Attributes(j).Name,v.Attributes(j).Value); endfor % define chunk size if isfield(v,'ChunkSize') if ~isempty(v.ChunkSize) netcdf_defVarChunking(ncid,varid,'chunked',v.ChunkSize); endif endif % define compression shuffle = false; deflatelevel = 0; if isfield(v,'Shuffle') if ~isempty(v.Shuffle) shuffle = v.Shuffle; endif endif if isfield(v,'DeflateLevel') if ~isempty(v.DeflateLevel) deflatelevel = v.DeflateLevel; endif endif if shuffle && defaltelevel != 0 deflate = defaltelevel != 0; netcdf_defVarDeflate(ncid,varid,shuffle,deflate,deflatelevel); endif % define fill value if isfield(v,'FillValue') if ~isempty(v.FillValue) % leave nofill setting unchanged [nofill,fillval] = netcdf_inqVarFill(ncid,varid); netcdf_defVarFill(ncid,varid,nofill,v.FillValue); endif endif % define checksum if isfield(v,'Checksum') if ~isempty(v.Checksum) netcdf_defVarFletcher32(ncid,varid,v.Checksum); endif endif endfor % groups if isfield(s,'Groups') if ~isempty(s.Groups) for i=1:length(s.Groups) g = s.Groups(i); gid = netcdf_defGrp(ncid,g.Name); write_group(gid,g); endfor endif endif endfunction netcdf-1.0.18/inst/private/0000755000000000000000000000000014674554453012442 5ustar00netcdf-1.0.18/inst/private/bug_47014.m0000644000000000000000000000054214674554453014135 0ustar00% test case for bug 47014 % https://savannah.gnu.org/bugs/?func=detailitem&item_id=47014 fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'var','Dimensions',{'x',10},... 'FillValue',-32767,'Datatype','int16') var = ones(10,1); var(1) = NaN; ncwrite(fname,'var',var); var2 = ncread(fname,'var'); assert(isequaln(var,var2)) delete(fname) netcdf-1.0.18/inst/private/format2mode.m0000644000000000000000000000236114674554453015041 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function mode = format2mode(format) mode = netcdf_getConstant("NC_NOCLOBBER"); switch lower(format) case "classic" % do nothing case "64bit" mode = bitor(mode,netcdf_getConstant("NC_64BIT_OFFSET")); case "netcdf4_classic" mode = bitor(bitor(mode,netcdf_getConstant("NC_NETCDF4")),... netcdf_getConstant("NC_CLASSIC_MODEL")); case "netcdf4" mode = bitor(mode,netcdf_getConstant("NC_NETCDF4")); otherwise error("netcdf:unknownFormat","unknown format %s",format); endswitch endfunction netcdf-1.0.18/inst/private/nc2octtype.m0000644000000000000000000000333214674554453014713 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function otype = nc2octtype(nctype) if nctype == netcdf_getConstant("NC_CHAR") otype = "char"; elseif nctype == netcdf_getConstant("NC_FLOAT") otype = "single"; elseif nctype == netcdf_getConstant("NC_DOUBLE") otype = "double"; elseif nctype == netcdf_getConstant("NC_BYTE") otype = "int8"; elseif nctype == netcdf_getConstant("NC_SHORT") otype = "int16"; elseif nctype == netcdf_getConstant("NC_INT") otype = "int32"; elseif nctype == netcdf_getConstant("NC_INT64") otype = "int64"; elseif nctype == netcdf_getConstant("NC_UBYTE") otype = "uint8"; elseif nctype == netcdf_getConstant("NC_USHORT") otype = "uint16"; elseif nctype == netcdf_getConstant("NC_UINT") otype = "uint32"; elseif nctype == netcdf_getConstant("NC_UINT64") otype = "uint64"; elseif nctype == netcdf_getConstant("NC_STRING") otype = "string"; elseif nctype >= netcdf_getConstant("NC_FIRSTUSERTYPEID") otype = "user"; else error("netcdf:unknownDataType","unknown data type %d",nctype) endif endfunction netcdf-1.0.18/inst/private/ncloc.m0000644000000000000000000000173714674554453013726 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . % resolves a location (variable or group) by name function [gid,varid] = ncloc(ncid,name) try # try if name is a group gid = netcdf_inqGrpFullNcid(ncid,name); varid = []; catch # assume that name is a variable [gid,varid] = ncvarid(ncid,name); end_try_catch endfunction netcdf-1.0.18/inst/private/ncvarid.m0000644000000000000000000000175614674554453014257 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function [gid,varid] = ncvarid(ncid,varname) if strcmp(varname(1), '/') i = find(varname == '/',1,'last'); groupname = varname(1:i-1); varname = varname(i+1:end); gid = netcdf_inqGrpFullNcid(ncid,groupname); else gid = ncid; endif varid = netcdf_inqVarID(gid, varname); endfunction netcdf-1.0.18/inst/private/oct2nctype.m0000644000000000000000000000317414674554453014717 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function nctype = oct2nctype(otype) typemap.int8 = 'byte'; typemap.uint8 = 'ubyte'; typemap.int16 = 'short'; typemap.uint16 = 'ushort'; typemap.int32 = 'int'; typemap.uint32 = 'uint'; typemap.int64 = 'int64'; typemap.uint64 = 'uint64'; typemap.single = 'float'; typemap.double = 'double'; typemap.char = 'char'; typemap.string = 'string'; if ischar(otype) otype = lower(otype); if isfield(typemap,otype) nctype = typemap.(otype); else error('netcdf:unkownType','unknown type %s',otype); endif else nctype = otype; endif %typemap.byte = 'int8'; %typemap.ubyte = 'uint8'; %typemap.short = 'int16'; %typemap.ushort = 'uint16'; %typemap.int = 'int32'; %typemap.uint = 'uint32'; %typemap.int64 = 'int64'; %typemap.uint64 = 'uint64'; %typemap.float = 'single'; %typemap.double = 'double'; %typemap.char = 'char'; %typemap.string = 'string'; endfunction netcdf-1.0.18/inst/private/test_netcdf_attributes.m0000644000000000000000000002337314674554453017400 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function test_netcdf_attributes() import_netcdf % rename attributes fname = [tempname '-octave-netcdf-rename-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); name = netcdf.inqAttName(ncid,gid,0); assert(strcmp(name,'toto')); netcdf.renameAtt(ncid,gid,'toto','lala'); name = netcdf.inqAttName(ncid,gid,0); assert(strcmp(name,'lala')); netcdf.close(ncid); delete(fname) % delete attributes fname = [tempname '-octave-netcdf-delete-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); varid = netcdf.defVar(ncid,'double_var','double',[]); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 1); netcdf.delAtt(ncid,gid,'toto'); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 0); netcdf.close(ncid); delete(fname) % copy attributes fname = [tempname '-octave-netcdf-copy-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); varid = netcdf.defVar(ncid,'double_var','double',[]); netcdf.copyAtt(ncid,gid,'toto',ncid,varid); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 1); [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varid); val = netcdf.getAtt(ncid,varid,'toto'); assert(isequal(val,123)); netcdf.close(ncid); delete(fname) % attributes id fname = [tempname '-octave-netcdf-delete-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); attnum = netcdf.inqAttID(ncid,gid,'toto'); name = netcdf.inqAttName(ncid,gid,attnum); assert(strcmp(name,'toto')) netcdf.close(ncid); delete(fname) % test one unlimited dimensions fname = [tempname '-octave-netcdf-unlimdim.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); dimID = netcdf.defDim(ncid,'time',netcdf.getConstant('NC_UNLIMITED')); unlimdimIDs = netcdf.inqUnlimDims(ncid); assert(dimID == unlimdimIDs); netcdf.close(ncid); delete(fname) % test netcdf_classic format fname = [tempname '-octave-netcdf-classic-model.nc']; mode = bitor(netcdf.getConstant('classic_model'),netcdf.getConstant('netcdf4')); ncid = netcdf.create(fname,mode); netcdf.close(ncid); info = ncinfo(fname); assert(strcmp(info.Format,'netcdf4_classic')); delete(fname); % test two unlimited dimensions fname = [tempname '-octave-netcdf-2unlimdim.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); dimID = netcdf.defDim(ncid,'time',netcdf.getConstant('NC_UNLIMITED')); dimID2 = netcdf.defDim(ncid,'time2',netcdf.getConstant('NC_UNLIMITED')); unlimdimIDs = netcdf.inqUnlimDims(ncid); assert(isequal(sort([dimID,dimID2]),sort(unlimdimIDs))); netcdf.close(ncid); delete(fname); % test fill mode fname = [tempname '-octave-netcdf-fill-mode.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); old_mode = netcdf.setFill(ncid,'nofill'); old_mode = netcdf.setFill(ncid,'nofill'); assert(old_mode == netcdf.getConstant('nofill')) netcdf.close(ncid); delete(fname); % deflate for 64bit_offset files fname = [tempname '-octave-netcdf-deflate.nc']; ncid = netcdf.create(fname,'64BIT_OFFSET'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); [shuffle,deflate,deflateLevel] = netcdf.inqVarDeflate(ncid,varid); assert(shuffle == 0) assert(deflate == 0) assert(deflateLevel == 0) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % deflate fname = [tempname '-octave-netcdf-deflate.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarDeflate(ncid,varid,true,true,9); [shuffle,deflate,deflateLevel] = netcdf.inqVarDeflate(ncid,varid); assert(shuffle) assert(deflate) assert(deflateLevel == 9) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % chunking - contiguous storage fname = [tempname '-octave-netcdf-chunking.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarChunking(ncid,varid,'contiguous'); [storage,chunksize] = netcdf.inqVarChunking(ncid,varid); assert(strcmp(storage,'contiguous')) assert(isempty(chunksize)) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % chunking - chunked storage fname = [tempname '-octave-netcdf-chunking.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarChunking(ncid,varid,'chunked',[3 4]); [storage,chunksize] = netcdf.inqVarChunking(ncid,varid); assert(strcmp(storage,'chunked')) assert(isequal(chunksize,[3 4])) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % checksum fname = [tempname '-octave-netcdf-checksum.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); checksum = netcdf.inqVarFletcher32(ncid,varid); assert(strcmp(checksum,'NOCHECKSUM')) netcdf.defVarFletcher32(ncid,varid,'fletcher32'); checksum = netcdf.inqVarFletcher32(ncid,varid); assert(strcmp(checksum,'FLETCHER32')) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarFill(ncid,varid,false,-99999.); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) assert(fillval == -99999.) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill single fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'single_var','float',dimids); netcdf.defVarFill(ncid,varid,false,single(-99999.)); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) assert(fillval == -99999.) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill char fname = [tempname '-octave-netcdf-fill-char.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','char',dimids); netcdf.defVarFill(ncid,varid,false,'X'); [fill,fillval] = netcdf.inqVarFill(ncid,varid); assert(~fill) assert(fillval == 'X') netcdf.close(ncid); delete(fname); % check default state of fill fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % create groups fname = [tempname '-octave-netcdf-groups.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); id1 = netcdf.defGrp(ncid,'group1'); id2 = netcdf.defGrp(ncid,'group2'); id3 = netcdf.defGrp(id1,'subgroup'); ids = netcdf.inqGrps(ncid); assert(isequal(sort([id1,id2]),sort(ids))); id4 = netcdf.inqNcid(ncid,'group1'); assert(id1 == id4) name = netcdf.inqGrpName(id3); assert(strcmp(name,'subgroup')) name = netcdf.inqGrpNameFull(id3); assert(strcmp(name,'/group1/subgroup')) parentid = netcdf.inqGrpParent(id3); assert(id1 == parentid); if 0 id3bis = netcdf.inqGrpFullNcid(ncid,'/group1/subgroup'); assert(id3 == id3bis); endif netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % check rename dimension fname = [tempname '-octave-rename-dim.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimid = netcdf.defDim(ncid,'x',123); [name,len] = netcdf.inqDim(ncid,dimid); assert(strcmp(name,'x')); netcdf.renameDim(ncid,dimid,'y'); [name,len] = netcdf.inqDim(ncid,dimid); assert(strcmp(name,'y')); netcdf.close(ncid); delete(fname); % rename variable fname = [tempname '-octave-netcdf-rename-var.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','char',dimids); [varname] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'double_var')); netcdf.renameVar(ncid,varid,'doublev'); [varname] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'doublev')); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.18/inst/private/test_netcdf_constant.m0000644000000000000000000000272614674554453017042 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . % test netcdf constants function test_netcdf_constant() import_netcdf names = netcdf.getConstantNames(); assert(any(strcmp(names,'NC_WRITE'))); assert(netcdf.getConstant('NC_NOWRITE') == 0) assert(netcdf.getConstant('NC_WRITE') == 1) assert(netcdf.getConstant('NC_64BIT_OFFSET') == ... netcdf.getConstant('64BIT_OFFSET')) assert(netcdf.getConstant('NC_64BIT_OFFSET') == ... netcdf.getConstant('64bit_offset')) assert(isa(netcdf.getConstant('fill_byte'),'int8')) assert(isa(netcdf.getConstant('fill_ubyte'),'uint8')) assert(isa(netcdf.getConstant('fill_float'),'single')) failed = 0; try % should trow exception netcdf.getConstant('not_found') % should never be reached failed = 1; catch end_try_catch assert(~failed); endfunction netcdf-1.0.18/inst/private/test_netcdf_create.m0000644000000000000000000000164614674554453016454 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function test_netcdf_create import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); assert(strcmp(netcdf.inqFormat(ncid),'FORMAT_CLASSIC')); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.18/inst/private/test_netcdf_datatypes.m0000644000000000000000000000217414674554453017204 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function test_netcdf_datatypes() test_netcdf_type('byte','int8'); test_netcdf_type('ubyte','uint8'); test_netcdf_type('short','int16'); test_netcdf_type('ushort','uint16'); test_netcdf_type('int','int32'); test_netcdf_type('uint','uint32'); test_netcdf_type('int64','int64'); test_netcdf_type('uint64','uint64'); test_netcdf_type('double','double'); test_netcdf_type('float','single'); test_netcdf_type('char','char'); endfunction netcdf-1.0.18/inst/private/test_netcdf_high_level_interface.m0000644000000000000000000000716514674554453021341 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . import_netcdf fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20}); nccreate(fname,'salt','Dimensions',{'lon',10,'lat',20}); nccreate(fname,'u','Dimensions',{'lon','lat'}); u = randn(10,20); ncwrite(fname,'u',u); % for octave prior to 3.8.0 if isempty(which('isequaln')) isequaln = @(x,y) isequalwithequalnans(x,y); endif u2 = ncread(fname,'u'); assert(isequaln(u,u2)); u2 = ncread(fname,'u',[10 5],[inf inf],[1 1]); assert(isequaln(u(10:end,5:end),u2)); ncwriteatt(fname,'temp','units','degree Celsius'); assert(strcmp(ncreadatt(fname,'temp','units'),'degree Celsius')); ncwriteatt(fname,'temp','range',[0 10]); assert(isequal(ncreadatt(fname,'temp','range'),[0 10])); ncwriteatt(fname,'temp','float_range',single([0 10])); assert(isequal(ncreadatt(fname,'temp','float_range'),[0 10])); ncwriteatt(fname,'temp','int_range',int32([0 10])); assert(isequal(ncreadatt(fname,'temp','int_range'),[0 10])); info = ncinfo(fname); assert(length(info.Variables) == 3) assert(strcmp(info.Variables(1).Name,'temp')); assert(isequal(info.Variables(1).Size,[10 20])); delete(fname); nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','64bit'); delete(fname); nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','classic'); info = ncinfo(fname); assert(strcmp(info.Format,'classic')); delete(fname); % netcdf4 nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','netcdf4'); ncwriteatt(fname,'temp','uint_range',uint32([0 10])); assert(isequal(ncreadatt(fname,'temp','uint_range'),[0 10])); info = ncinfo(fname); assert(strcmp(info.Format,'netcdf4')); delete(fname) % scalar variable nccreate(fname,'temp','Format','netcdf4','Datatype','double'); ncwrite(fname,'temp',123); assert(ncread(fname,'temp') == 123) delete(fname) % test unlimited dimension with nccreate fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'temp','Dimensions',{'lon',10,'lat',inf}); %system(['ncdump -h ' fname]) info = ncinfo(fname); assert(~info.Dimensions(1).Unlimited) assert(info.Dimensions(2).Unlimited) delete(fname) % test double with _FillValue fname = [tempname '-octave-netcdf.nc']; fv = 99999.; nccreate(fname,'flag','Dimensions',{'lon',10,'lat',10},'Datatype','double',... 'FillValue',fv); %system(['ncdump -h ' fname]) data = zeros(10,10); data(1,2) = fv; ncid = netcdf.open(fname,'NC_WRITE'); varid = netcdf.inqVarID(ncid, 'flag'); netcdf.putVar(ncid,varid,data); netcdf.close(ncid) data2 = ncread(fname,'flag'); data(data == fv) = NaN; assert(isequaln(data,data2)) delete(fname) % test char with _FillValue fname = [tempname '-octave-netcdf.nc']; fv = '*'; nccreate(fname,'flag','Dimensions',{'lon',10,'lat',10},'Datatype','char',... 'FillValue',fv); data = repmat('.',[10 10]); data(1,2) = fv; ncid = netcdf.open(fname,'NC_WRITE'); varid = netcdf.inqVarID(ncid, 'flag'); netcdf.putVar(ncid,varid,data); netcdf.close(ncid) data2 = ncread(fname,'flag'); assert(isequal(data,data2)) delete(fname) netcdf-1.0.18/inst/private/test_netcdf_low_level_interface.m0000644000000000000000000001247314674554453021221 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function test_netcdf_low_level_interface import_netcdf % 2 dimensions fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); assert(strcmp(netcdf.inqFormat(ncid),'FORMAT_CLASSIC')); n = 10; m = 5; dimid_lon = netcdf.defDim(ncid,'lon',m); dimid = netcdf.defDim(ncid,'time',n); varidd = netcdf.defVar(ncid,'double_var','double',[dimid_lon,dimid]); varid = netcdf.defVar(ncid,'byte_var','byte',[dimid]); varidf = netcdf.defVar(ncid,'float_var','float',[dimid]); varidi = netcdf.defVar(ncid,'int_var','int',[dimid]); varids = netcdf.defVar(ncid,'short_var','short',[dimid]); assert(varidd == netcdf.inqVarID(ncid,'double_var')) [numdims, numvars, numglobalatts, unlimdimID] = netcdf.inq(ncid); assert(numvars == 5) [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varidd); assert(strcmp(varname,'double_var')); [dimname,len] = netcdf.inqDim(ncid,dimid); assert(len == n); assert(strcmp(dimname,'time')); types = {'double','float','byte','short','int'}; for i=1:length(types) vid{i} = netcdf.defVar(ncid,[types{i} '_variable'],types{i},[dimid_lon,dimid]); end netcdf.endDef(ncid) z = randn(m,n); netcdf.putVar(ncid,varidd,z); varf = randn(n,1); netcdf.putVar(ncid,varidf,varf); vari = floor(randn(n,1)); netcdf.putVar(ncid,varidi,vari); netcdf.putVar(ncid,varids,[1:n]) z2 = netcdf.getVar(ncid,varidd); assert(all(all(abs(z2 - z) < 1e-5))) z2 = netcdf.getVar(ncid,varidd,[0 0]); assert(z2 == z(1,1)) z2 = netcdf.getVar(ncid,varidd,[2 2],[3 5]); assert(isequal(z2,z(3:5,3:7))) z2 = netcdf.getVar(ncid,varidd,[2 2],[3 4],[1 2]); assert(isequal(z2,z(3:5,3:2:9))) netcdf.putVar(ncid,varidd,[0 0],123.); z(1,1) = 123; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) netcdf.putVar(ncid,varidd,[2 2],[3 3],ones(3,3)); z(3:5,3:5) = 1; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) netcdf.putVar(ncid,varidd,[0 0],[3 5],[2 2],zeros(3,5)); z(1:2:5,1:2:9) = 0; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) z2 = netcdf.getVar(ncid,varidf); assert(all(z2 - varf < 1e-5)) vari2 = netcdf.getVar(ncid,varidi); assert(all(vari2 == vari)) netcdf.close(ncid); delete(fname); % test with different dimensions for i = 1:5 nc_test_ndims(i); endfor endfunction function nc_test_ndims(ndims) import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); sz = ones(1,ndims); dimids = ones(1,ndims); for i = 1:ndims sz(i) = 10+i; dimids(i) = netcdf.defDim(ncid,sprintf('dim%g',i),sz(i)); endfor varid = netcdf.defVar(ncid,'double_var','double',dimids); [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'double_var')); for i = 1:ndims [dimname,len] = netcdf.inqDim(ncid,dimids(i)); assert(len == sz(i)); assert(strcmp(dimname,sprintf('dim%g',i))); endfor netcdf.endDef(ncid) if ndims == 1 z = randn(sz,1); else z = randn(sz); endif netcdf.putVar(ncid,varid,z); z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) z2 = netcdf.getVar(ncid,varid,zeros(ndims,1)); assert(z2 == z(1)) start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); z2 = netcdf.getVar(ncid,varid,start,count); idx = scs(start,count); assert(isequal(z2,z(idx{:}))) start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); stride = 2 * ones(1,ndims); z2 = netcdf.getVar(ncid,varid,start,count,stride); idx = scs(start,count,stride); assert(isequal(z2,z(idx{:}))) % put with start start = zeros(1,ndims); netcdf.putVar(ncid,varid,start,123.); z(1) = 123; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) % put with start and count start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); if ndims == 1 data = ones(count,1); else data = ones(count); endif netcdf.putVar(ncid,varid,start,count,data); idx = scs(start,count); z(idx{:}) = 1; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) % put with start, count and stride start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); stride = 2 * ones(1,ndims); if ndims == 1 data = zeros(count,1); else data = zeros(count); endif netcdf.putVar(ncid,varid,start,count,stride,data); idx = scs(start,count,stride); z (idx{:}) = 0; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) netcdf.close(ncid); delete(fname); endfunction function idx = scs(start,count,stride) idx = cell(length(start),1); if nargin == 2 stride = ones(length(start),1); endif for i = 1:length(start) idx{i} = start(i) + 1 + stride(i) * [0:count(i)-1]; endfor endfunction netcdf-1.0.18/inst/private/test_netcdf_ncwriteschema.m0000644000000000000000000000255514674554453020045 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . fname = [tempname '-octave-netcdf-scheme-unlim.nc']; clear s s.Name = '/'; s.Format = 'classic'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) delete(fname); netcdf-1.0.18/inst/private/test_netcdf_ncwriteschema_chunking.m0000644000000000000000000000272614674554453021733 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . fname = [tempname '-octave-netcdf-scheme-chunk.nc']; clear s s.Name = '/'; s.Format = 'netcdf4'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; s.Variables(1).ChunkSize = [2 3]; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(isequal(info.Variables(1).ChunkSize,s.Variables(1).ChunkSize)); delete(fname); netcdf-1.0.18/inst/private/test_netcdf_ncwriteschema_group.m0000644000000000000000000000444414674554453021260 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . fname = [tempname '-octave-netcdf-scheme-group.nc']; clear s s.Name = '/'; s.Format = 'netcdf4'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp_diff'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; s.Groups(1).Name = 'forecast'; s.Groups(1).Variables(1).Name = 'temp'; s.Groups(1).Variables(1).Dimensions = s.Dimensions; s.Groups(1).Variables(1).Datatype = 'double'; s.Groups(1).Variables(1).Attributes(1).Name = 'long_name'; s.Groups(1).Variables(1).Attributes(1).Value = 'temperature'; s.Groups(1).Attributes(1).Name = 'institution'; s.Groups(1).Attributes(1).Value = 'ULg'; s.Groups(2) = s.Groups(1); s.Groups(2).Name = 'analysis'; ncwriteschema(fname,s); %system(['ncdump -h ' fname]) info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(strcmp(s.Groups(1).Name,info.Groups(1).Name)) z = randn(20,10); ncwrite(fname,'/forecast/temp',z); z2 = ncread(fname,'/forecast/temp'); assert(isequal(z,z2)) ginfo = ncinfo(fname,'forecast'); assert(strcmp(ginfo.Name,'forecast')); % read global attribute of root group val = ncreadatt(fname,'/','institution'); assert(strcmp(val,'GHER, ULg')); % read global attribute of group forecast val = ncreadatt(fname,'/forecast','institution'); assert(strcmp(val,'ULg')); delete(fname); netcdf-1.0.18/inst/private/test_netcdf_ncwriteschema_unlim.m0000644000000000000000000000276514674554453021254 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . fname = [tempname '-octave-netcdf-scheme-unlim.nc']; clear s s.Name = '/'; s.Format = 'classic'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Dimensions(3).Name = 'time'; s.Dimensions(3).Length = Inf; %s.Dimensions(3).Unlimited = true; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(info.Dimensions(3).Unlimited); delete(fname); netcdf-1.0.18/inst/private/test_netcdf_scalar_variable.m0000644000000000000000000000167014674554453020320 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function test_netcdf_scalar_variable() import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); varidd_scalar = netcdf.defVar(ncid,'double_scalar','double',[]); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.18/inst/private/test_netcdf_type.m0000644000000000000000000000433314674554453016166 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function test_netcdf_type(nctype,octtype) import_netcdf m = 5; n = 10; fname = [tempname '-octave-netcdf- ' nctype '.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),... netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); dimids = [netcdf.defDim(ncid,'lon',m) ... netcdf.defDim(ncid,'time',n)]; varid = netcdf.defVar(ncid,'variable',nctype,dimids); netcdf.endDef(ncid) if strcmp(octtype,'char') z = char(floor(26*rand(m,n)) + 65); testvals = 'a'; testvalv = 'this is a name'; else z = zeros(m,n,octtype); z(:) = randn(m,n); testvals = zeros(1,1,octtype); testvals(:) = rand(1,1); testvalv = zeros(1,5,octtype); testvalv(:) = rand(size(testvalv)); endif netcdf.putVar(ncid,varid,z); z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) netcdf.putAtt(ncid,varid,'scalar_attribute',testvals); val = netcdf.getAtt(ncid,varid,'scalar_attribute'); assert(isequal(val,testvals)); assert(strcmp(class(val),octtype)) [xtype,len] = netcdf.inqAtt(ncid,varid,'scalar_attribute'); assert(xtype == netcdf.getConstant(nctype)) assert(len == numel(testvals)); netcdf.putAtt(ncid,varid,'vector_attribute',testvalv); val = netcdf.getAtt(ncid,varid,'vector_attribute'); assert(isequal(val,testvalv)); assert(strcmp(class(val),octtype)) [xtype,len] = netcdf.inqAtt(ncid,varid,'vector_attribute'); assert(xtype == netcdf.getConstant(nctype)) assert(len == numel(testvalv)); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.18/inst/private/test_netcdf_unlim.m0000644000000000000000000000203114674554453016322 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . import_netcdf % 2 dimensions fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); dimid = netcdf.defDim(ncid,'time',0); varidd = netcdf.defVar(ncid,'time','double',[dimid]); netcdf.close(ncid) ncid = netcdf.open(fname,'NC_NOWRITE'); varid = netcdf.inqVarID(ncid, 'time'); x = netcdf.getVar(ncid,varid); netcdf.close(ncid) netcdf-1.0.18/inst/private/test_netcdf_user_types.m0000644000000000000000000000532014674554453017404 0ustar00%% Copyright (C) 2022 John Donoghue %% %% 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 . function test_netcdf_user_types() import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,netcdf.getConstant('NETCDF4')); my_dtype_id = netcdf.defVlen(ncid,"mytype_dtype", 'double'); [dtype_name, dtype_bsize, dtype_typeid] = netcdf.inqVlen(ncid, my_dtype_id); assert(dtype_name, 'mytype_dtype'); #assert(dtype_bsize, 16); assert(dtype_typeid, netcdf.getConstant("NC_DOUBLE")); [dtype_name, dtype_bsize, dtype_typeid, dtype_nfields, dtype_classid] = netcdf.inqUserType(ncid, my_dtype_id); assert(dtype_name, 'mytype_dtype'); #assert(dtype_bsize, 16); assert(dtype_typeid, netcdf.getConstant("NC_DOUBLE")); assert(dtype_nfields, 0); assert(dtype_classid, netcdf.getConstant("NC_VLEN")); my_stype_id = netcdf.defVlen(ncid,"mytype_stype", netcdf.getConstant("NC_USHORT")); [stype_name, stype_bsize, stype_typeid] = netcdf.inqVlen(ncid, my_stype_id); assert(stype_name, 'mytype_stype'); #assert(stype_bsize, 2); assert(stype_typeid, netcdf.getConstant("NC_USHORT")); # create a variable dimid = netcdf.defDim(ncid,'m',5); varid = netcdf.defVar(ncid,'myarray', my_dtype_id, dimid); netcdf.defVarFill(ncid, varid, false, -999); netcdf.putAtt(ncid, varid, "myattr", 1) netcdf.endDef(ncid); # get var info [varname vartype vardimid varattr] = netcdf.inqVar(ncid,varid); assert(varname, "myarray"); assert(vardimid, dimid); assert(vartype, my_dtype_id); netcdf.putVar(ncid, varid, {0, [0.1,0.2],[3,0,4.0,5.0,6.0]}); data = netcdf.getVar(ncid,varid); assert(iscell(data)); assert(length(data), 5); assert(data{1}, [0]); assert(data{2}, [0.1,0.2]); assert(data{3}, [3,0,4.0,5.0,6.0]); assert(data{4}, -999); netcdf.close(ncid); # ncinfo doesnt error a = ncinfo(fname); assert(a.Variables(1).Name, "myarray"); assert(a.Variables(1).Size, 5); assert(a.Variables(1).FillValue, -999); # attr 1 is the fill value, 2nd is my added one assert(a.Variables(1).Attributes(2).Name, "myattr"); assert(a.Variables(1).Attributes(2).Value, 1); delete(fname); endfunction netcdf-1.0.18/inst/private/test_scalar_variable.m0000644000000000000000000000166114674554453016775 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . function test_scalar_variable() import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); varidd_scalar = netcdf.defVar(ncid,'double_scalar','double',[]); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.18/inst/test_netcdf.m0000644000000000000000000000355414674554453013457 0ustar00%% Copyright (C) 2013-2022 Alexander Barth %% %% 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 . ## -*- texinfo -*- ## @deftypefn {} {} test_netcdf ## Function to do a basic test of the netcdf interface ## @end deftypefn function test_netcdf() import_netcdf tests = {'test_netcdf_constant',... 'test_netcdf_create'... 'test_netcdf_low_level_interface'... 'test_netcdf_unlim',... 'test_netcdf_datatypes',... 'test_netcdf_scalar_variable',... 'test_netcdf_attributes',... 'test_netcdf_high_level_interface',... 'test_netcdf_ncwriteschema',... 'test_netcdf_ncwriteschema_unlim',... 'test_netcdf_ncwriteschema_chunking',... 'test_netcdf_ncwriteschema_group',... 'test_netcdf_user_types',... 'bug_47014'... }; maxlen = max(cellfun(@(s) length(s),tests)); libver = netcdf.inqLibVers(); fprintf('Using NetCDF library version "%s"\n',libver) for iindex=1:length(tests); dots = repmat('.',1,maxlen - length(tests{iindex})); fprintf('run %s%s ',tests{iindex},dots); try eval(tests{iindex}); disp(' OK '); catch disp(' FAIL '); disp(lasterr) end_try_catch endfor endfunction %!test %! fprintf ("\n"); %! test_netcdf (); netcdf-1.0.18/octave-netcdf.metainfo.xml0000644000000000000000000000202514674554453015057 0ustar00 octave-netcdf www.octave.org-octave.desktop NetCDF Toolkit Octave NetCDF toolkit

Toolkit for Network Common Form (NetCDF) File I/O.

NetCDF scientific http://octave.sourceforge.net/netcdf https://savannah.gnu.org/bugs/?func=additem&group=octave GPL-3.0+ Octave-Forge Community octave-maintainers@gnu.org FSFAP
netcdf-1.0.18/src/0000755000000000000000000000000014674554453010602 5ustar00netcdf-1.0.18/src/Makefile.in0000644000000000000000000000175214674554453012654 0ustar00 SHELL = @SHELL@ AWK = @AWK@ AWK ?= awk MKOCTFILE = @MKOCTFILE@ -v NC_CONFIG = @NC_CONFIG@ %.oct: %.cc ; $(MKOCTFILE) $< NCHEADER=$(shell $(NC_CONFIG) --includedir)/netcdf.h NETCDF_CPPFLAGS=@NETCDF_CPPFLAGS@ NETCDF_LIBS=@NETCDF_LIBS@ SRC = __netcdf__.cc all: __netcdf__.oct ../PKG_ADD netcdf_constants.h: $(info generating netcdf_constants.h) @if [ -f $(NCHEADER) ]; then \ $(AWK) -f netcdf_constants.awk $(NCHEADER) > netcdf_constants.h; \ elif [ -f /usr/include/netcdf.h ]; then \ $(AWK) -f netcdf_constants.awk /usr/include/netcdf.h > netcdf_constants.h; \ else \ echo >&2 "Couldnt find netcdf.h"; \ false; \ fi; clean: rm -f __netcdf__.o __netcdf__.oct netcdf_constants.h distclean: clean -rm -f oct-alt-includes.h -rm -f config.status config.log config.h -rm -f Makefile realclean: distclean rm -f ../PKG_ADD ../PKG_DEL __netcdf__.oct: $(SRC) netcdf_constants.h $(MKOCTFILE) $(NETCDF_CPPFLAGS) $(SRC) $(NETCDF_LIBS) ../PKG_ADD: $(SRC) $(shell sh ./PKG_ADD.sh) netcdf-1.0.18/src/PKG_ADD.sh0000644000000000000000000000254514674554453012235 0ustar00#!/bin/sh # Copyright (C) 2013-2022 Alexander Barth # # 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 . if [ "x$AWK" = "x" ]; then AWK=awk fi netcdf_functions=$($AWK -F'[(,]' '/DEFUN_DLD/ { print $2 } ' __netcdf__.cc) outfile_add=../PKG_ADD outfile_del=../PKG_DEL rm -f $outfile_add $outfile_del echo '% File automatically generated by PKG_ADD.sh' > $outfile_add for i in $netcdf_functions; do #echo ${i#netcdf_} cat >> $outfile_add < $outfile_del for i in $netcdf_functions; do #echo ${i#netcdf_} cat >> $outfile_del < // // 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 . #include #include #include #include #include #include #include #include #include #include "config.h" // Octave constructor to hold an array of ints #define NETCDF_INT_ARRAY int32NDArray static std::map netcdf_constants; void init() { #include "netcdf_constants.h" } int check_err(int status) { if (status != NC_NOERR) error("%s", nc_strerror(status)); return status; } // convert name to upper-case and add "NC_" prefix if it is missing std::string normalize_ncname(std::string name) { std::string prefix = "NC_"; std::string ncname = name; // to upper case std::transform(ncname.begin(), ncname.end(),ncname.begin(), ::toupper); // add prefix if it is missing if (ncname.substr(0, prefix.size()) != prefix) { ncname = prefix + ncname; } return ncname; } octave_value netcdf_get_constant(octave_value ov) { if (netcdf_constants.empty()) { init(); } if (ov.is_scalar_type()) { return ov.scalar_value(); } std::string name = ov.string_value(); name = normalize_ncname(name); std::map::const_iterator cst = netcdf_constants.find(name); if (cst != netcdf_constants.end ()) { return cst->second; } else { error("unknown netcdf constant: %s",name.c_str()); return octave_value(); } } size_t to_size_t(octave_value ov) { size_t sz; sz = static_cast(ov.uint64_scalar_value()); return sz; } void to_size_t_vector(octave_value ov, int len, size_t *vec) { uint64NDArray tmp = ov.uint64_array_value(); for (int i=0; i(tmp(len-i-1)); } } void to_ptrdiff_t_vector(octave_value ov, int len, ptrdiff_t *vec) { int64NDArray tmp = ov.int64_array_value(); for (int i=0; i(tmp(len-i-1)); } } void start_count_stride(int ncid, int varid, octave_value_list args,int len, int ndims, size_t* start,size_t* count,ptrdiff_t* stride) { OCTAVE_LOCAL_BUFFER (int, dimids, ndims); check_err(nc_inq_vardimid (ncid, varid, dimids)); // default values for start, count and stride // i.e. all variable is loaded for (int i=0; i 2) { if (args(2).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "start"); } to_size_t_vector(args(2),ndims,start); // if start is specified, the default for count is 1 (how odd!) for (int i=0; i 3) { if (args(3).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "count"); } to_size_t_vector(args(3),ndims,count); } // stride argument if (len > 4) { if (args(4).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "stride"); } to_ptrdiff_t_vector(args(4),ndims,stride); } } DEFUN_DLD(netcdf_getConstant, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstant(@var{name}) \n\ Returns the value of a NetCDF constant called @var{name}.\n\ @seealso{netcdf_getConstantNames}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } return netcdf_get_constant(args(0)); } DEFUN_DLD(netcdf_getConstantNames, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstantNames() \n\ Returns a list of all constant names.\n\ @end deftypefn\n\ @seealso{netcdf_getConstant}\n") { if (args.length() != 0) { print_usage (); return octave_value(); } if (netcdf_constants.empty()) { init(); } Cell c = Cell (dim_vector(1,netcdf_constants.size())); int i = 0; for (std::map::const_iterator p = netcdf_constants.begin (); p != netcdf_constants.end (); p++) { c(i++) = octave_value(p->first); } return octave_value(c); } DEFUN_DLD(netcdf_inqLibVers, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{vers} =} netcdf_inqLibVers() \n\ Returns the version of the NetCDF library.\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 0) { print_usage (); return octave_value (); } return octave_value(std::string(nc_inq_libvers())); } DEFUN_DLD(netcdf_setDefaultFormat, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{old_format} =} netcdf_setDefaultFormat(@var{format}) \n\ Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be \n\ \"format_classic\", \"format_64bit\", \"format_netcdf4\" or \"format_netcdf4_classic\". \n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 1) { print_usage (); return octave_value (); } int format = netcdf_get_constant(args(0)).int_value(); int old_format; check_err(nc_set_default_format(format, &old_format)); return octave_value(old_format); } // int nc_set_chunk_cache(size_t size, size_t nelems, float preemption); DEFUN_DLD(netcdf_setChunkCache, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_setChunkCache(@var{size}, @var{nelems}, @var{preemption}) \n\ Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created.\n\ @end deftypefn\n\ @seealso{netcdf_getChunkCache}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } size_t size = to_size_t(args(0)); size_t nelems = to_size_t(args(1)); float preemption = args(2).scalar_value(); check_err(nc_set_chunk_cache(size, nelems, preemption)); return octave_value(); } // int nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp); DEFUN_DLD(netcdf_getChunkCache, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf_getChunkCache() \n\ Gets the default chunk cache settings in the HDF5 library. \n\ @end deftypefn\n\ @seealso{netcdf_setChunkCache}\n") { if (args.length() != 0) { print_usage (); return octave_value (); } size_t size; size_t nelems; float preemption; check_err(nc_get_chunk_cache(&size, &nelems, &preemption)); octave_value_list retval; retval(0) = octave_value(size); retval(1) = octave_value(nelems); retval(2) = octave_value(preemption); return retval; } DEFUN_DLD(netcdf_create, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncid} =} netcdf_create(@var{filename},@var{mode}) \n\ Creates the file named @var{filename} in the mode @var{mode} which can have the \n\ following values: \n\ \"clobber\" (overwrite existing files), \n\ \"noclobber\" (prevent to overwrite existing files) \n\ \"64bit_offset\" (use the 64bit-offset format), \n\ \"netcdf4\" (use the NetCDF4, i.e. HDF5 format) or \n\ \"share\" (concurrent reading of the dataset). \n\ @var{mode} can also be the numeric value return by netcdf_getConstant. In the later-case it can be combined with a bitwise-or. \n\ @end deftypefn\n\ @subsubheading Example\n\ @example \n\ mode = bitor(netcdf.getConstant(\"classic_model\"), ...\n\ netcdf.getConstant(\"netcdf4\")); \n\ ncid = netcdf.create(\"test.nc\",mode); \n\ @end example \n\ @seealso{netcdf_close}\n") { if (args.length() != 2) { print_usage (); return octave_value (); } std::string filename = args(0).string_value(); int mode = netcdf_get_constant(args(1)).int_value(); int ncid; check_err(nc_create(filename.c_str(), mode, &ncid)); return octave_value(ncid); } DEFUN_DLD(netcdf_open, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncid} =} netcdf_open(@var{filename},@var{mode}) \n\ Opens the file named @var{filename} in the mode @var{mode}.\n\ @end deftypefn\n\ @seealso{netcdf_close}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } std::string filename = args(0).string_value(); int mode = netcdf_get_constant(args(1)).int_value(); int ncid; check_err(nc_open(filename.c_str(), mode, &ncid)); return octave_value(ncid); } DEFUN_DLD(netcdf_abort, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_abort(@var{ncid}) \n\ Aborts all changes since the last time the dataset entered in define mode.\n\ @end deftypefn\n\ @seealso{netcdf_reDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_abort(ncid)); return octave_value(); } DEFUN_DLD(netcdf_sync, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_sync(@var{ncid}) \n\ Writes all changes to the disk and leaves the file open.\n\ @end deftypefn\n\ @seealso{netcdf_close}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_sync(ncid)); return octave_value(); } DEFUN_DLD(netcdf_setFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{old_mode} =} netcdf_setFill(@var{ncid},@var{fillmode}) \n\ Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either \"fill\" or \"nofill\".\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int fillmode = netcdf_get_constant(args(1)).int_value(); int old_mode; check_err (nc_set_fill (ncid, fillmode, &old_mode)); return octave_value(old_mode); } //int nc_inq (int ncid, int *ndimsp, int *nvarsp, int *ngattsp, // int *unlimdimidp); DEFUN_DLD(netcdf_inq, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{ndims},@var{nvars},@var{ngatts},@var{unlimdimid}] =} netcdf_inq(@var{ncid}) \n\ Return the number of dimension (@var{ndims}), the number of variables (@var{nvars}), the number of global attributes (@var{ngatts}) and the id of the unlimited dimension (@var{unlimdimid}). \n\ If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use \n\ the function netcdf_inqUnlimDims as multiple unlimite dimension exists. \n\ @end deftypefn\n\ @seealso{netcdf_inqUnlimDims}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int ndims, nvars, ngatts, unlimdimid; octave_value_list retval; check_err(nc_inq(ncid,&ndims,&nvars,&ngatts,&unlimdimid)); retval(0) = octave_value(ndims); retval(1) = octave_value(nvars); retval(2) = octave_value(ngatts); retval(3) = octave_value(unlimdimid); return retval; } // int nc_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp); DEFUN_DLD(netcdf_inqUnlimDims, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{unlimdimids} =} netcdf_inqUnlimDims(@var{ncid}) \n\ Return the id of all unlimited dimensions of the NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_inq}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int nunlimdims; check_err(nc_inq_unlimdims(ncid, &nunlimdims, NULL)); OCTAVE_LOCAL_BUFFER(int,tmp,nunlimdims); NETCDF_INT_ARRAY unlimdimids = NETCDF_INT_ARRAY(dim_vector(1,nunlimdims)); check_err(nc_inq_unlimdims(ncid, &nunlimdims, tmp)); for (int i=0; i < nunlimdims; i++) { unlimdimids(i) = tmp[i]; } return octave_value(unlimdimids); } // int nc_inq_format (int ncid, int *formatp); DEFUN_DLD(netcdf_inqFormat, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{format} =} netcdf_inqFormat(@var{ncid}) \n\ Return the NetCDF format of the dataset @var{ncid}.\n\ Format might be one of the following \n\ \"FORMAT_CLASSIC\", \"FORMAT_64BIT\", \"FORMAT_NETCDF4\" or \"FORMAT_NETCDF4_CLASSIC\" \n\ @end deftypefn\n\ @seealso{netcdf_inq}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int format; check_err(nc_inq_format(ncid, &format)); if (format == NC_FORMAT_CLASSIC) { return octave_value("FORMAT_CLASSIC"); } if (format == NC_FORMAT_64BIT) { return octave_value("FORMAT_64BIT"); } if (format == NC_FORMAT_NETCDF4) { return octave_value("FORMAT_NETCDF4"); } return octave_value("FORMAT_NETCDF4_CLASSIC"); } // int nc_def_dim (int ncid, const char *name, size_t len, int *dimidp); DEFUN_DLD(netcdf_defDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimid} =} netcdf_defDim(@var{ncid},@var{name},@var{len}) \n\ Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned.\n\ @end deftypefn\n\ @seealso{netcdf_defVar}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); size_t len = to_size_t(args(2)); int dimid; check_err(nc_def_dim (ncid, name.c_str(), len, &dimid)); return octave_value(dimid); } // int nc_rename_dim(int ncid, int dimid, const char* name); DEFUN_DLD(netcdf_renameDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameDim(@var{ncid},@var{dimid},@var{name}) \n\ Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension.\n\ @end deftypefn\n\ @seealso{netcdf_defDim}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int dimid = args(1).scalar_value(); std::string name = args(2).string_value(); check_err(nc_rename_dim (ncid, dimid, name.c_str())); return octave_value(); } // int nc_def_var (int ncid, const char *name, nc_type xtype, // int ndims, const int dimids[], int *varidp); DEFUN_DLD(netcdf_defVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) \n\ Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be \"byte\", \"ubyte\", \"short\", \"ushort\", \"int\", \"uint\", \"int64\", \"uint64\", \"float\", \"double\", \"char\" or the corresponding number as returned by netcdf_getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. \n\ @end deftypefn\n\ @seealso{netcdf_open,netcdf_defDim}\n") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value (); int xtype = netcdf_get_constant(args(2)).int_value();; Array tmp; if (!args(3).OV_ISEMPTY()) { tmp = args(3).vector_value (); } OCTAVE_LOCAL_BUFFER (int, dimids, tmp.numel()); for (int i = 0; i < tmp.numel(); i++) { dimids[i] = tmp(tmp.numel()-i-1); } int varid; check_err(nc_def_var (ncid, name.c_str(), xtype, tmp.numel(), dimids, &varid)); return octave_value(varid); } // int nc_rename_var(int ncid, int varid, const char* name); DEFUN_DLD(netcdf_renameVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameVar(@var{ncid},@var{varid},@var{name}) \n\ Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable.\n\ @end deftypefn\n\ @seealso{netcdf_defVar}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); check_err(nc_rename_var (ncid, varid, name.c_str())); return octave_value(); } // int nc_def_var_fill(int ncid, int varid, int no_fill, void *fill_value); DEFUN_DLD(netcdf_defVarFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) \n\ Define the fill-value settings of the NetCDF variable @var{varid}.\n\ If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true.\n\ @end deftypefn\n\ @seealso{netcdf_inqVarFill}\n") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int no_fill = args(2).scalar_value(); // boolean octave_value fill_value = args(3); nc_type xtype, basetype; check_err(nc_inq_vartype (ncid, varid, &xtype)); if (xtype < NC_FIRSTUSERTYPEID) basetype = xtype; else { size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant read it", classid); } } if (xtype >= NC_FIRSTUSERTYPEID) { switch (basetype) { #define OV_NETCDF_DEF_VARV_FILL(netcdf_type,c_type,method) \ case netcdf_type: \ { \ c_type val; \ memcpy(&val, fill_value.method().fortran_vec(), sizeof(val)); \ nc_vlen_t vlendata = {1,(void*)&val}; \ check_err(nc_def_var_fill(ncid, varid, no_fill, &vlendata)); \ break; \ } OV_NETCDF_DEF_VARV_FILL(NC_BYTE, signed char, int8_array_value) OV_NETCDF_DEF_VARV_FILL(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_DEF_VARV_FILL(NC_SHORT, short, int16_array_value) OV_NETCDF_DEF_VARV_FILL(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_DEF_VARV_FILL(NC_INT, int, int32_array_value) OV_NETCDF_DEF_VARV_FILL(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_DEF_VARV_FILL(NC_INT64, long long, int64_array_value) OV_NETCDF_DEF_VARV_FILL(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_DEF_VARV_FILL(NC_FLOAT, float, float_array_value) OV_NETCDF_DEF_VARV_FILL(NC_DOUBLE,double,array_value) OV_NETCDF_DEF_VARV_FILL(NC_CHAR, char, char_array_value) } } else { switch (xtype) { #define OV_NETCDF_DEF_VAR_FILL(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_def_var_fill(ncid, varid, no_fill, fill_value.method().fortran_vec())); \ break; \ } OV_NETCDF_DEF_VAR_FILL(NC_BYTE, signed char, int8_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_DEF_VAR_FILL(NC_SHORT, short, int16_array_value) OV_NETCDF_DEF_VAR_FILL(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_DEF_VAR_FILL(NC_INT, int, int32_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_DEF_VAR_FILL(NC_INT64, long long, int64_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_DEF_VAR_FILL(NC_FLOAT, float, float_array_value) OV_NETCDF_DEF_VAR_FILL(NC_DOUBLE,double,array_value) OV_NETCDF_DEF_VAR_FILL(NC_CHAR, char, char_array_value) } } return octave_value(); } // int nc_def_var_fill(int ncid, int varid, int no_fill, void *fill_value); DEFUN_DLD(netcdf_inqVarFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{no_fill},@var{fillvalue}] = } netcdf_inqVarFill(@var{ncid},@var{varid}) \n\ Determines the fill-value settings of the NetCDF variable @var{varid}.\n\ If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true.\n\ @end deftypefn\n\ @seealso{netcdf_defVarFill}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int no_fill; nc_type xtype, basetype; octave_value_list retval; octave_value data; check_err(nc_inq_vartype (ncid, varid, &xtype)); if (xtype < NC_FIRSTUSERTYPEID) basetype = xtype; else { size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant read it", classid); } } if (xtype >= NC_FIRSTUSERTYPEID) { switch (basetype) { #define OV_NETCDF_INQ_VARV_FILL(netcdf_type,c_type) \ case netcdf_type: \ { \ c_type val = 0; \ nc_vlen_t vlendata = {1,(void*)&val}; \ check_err(nc_inq_var_fill(ncid, varid, &no_fill,&vlendata)); \ Array< c_type > fill_value = Array< c_type >(dim_vector(1,1)); \ memcpy(fill_value.fortran_vec(), vlendata.p, sizeof(c_type)); \ data = octave_value(fill_value); \ break; \ } OV_NETCDF_INQ_VARV_FILL(NC_BYTE,octave_int8) OV_NETCDF_INQ_VARV_FILL(NC_UBYTE,octave_uint8) OV_NETCDF_INQ_VARV_FILL(NC_SHORT,octave_int16) OV_NETCDF_INQ_VARV_FILL(NC_USHORT,octave_uint16) OV_NETCDF_INQ_VARV_FILL(NC_INT,octave_int32) OV_NETCDF_INQ_VARV_FILL(NC_UINT,octave_uint32) OV_NETCDF_INQ_VARV_FILL(NC_INT64,octave_int64) OV_NETCDF_INQ_VARV_FILL(NC_UINT64,octave_uint64) OV_NETCDF_INQ_VARV_FILL(NC_FLOAT,float) OV_NETCDF_INQ_VARV_FILL(NC_DOUBLE,double) OV_NETCDF_INQ_VARV_FILL(NC_CHAR,char) } } else { switch (xtype) { #define OV_NETCDF_INQ_VAR_FILL(netcdf_type,c_type) \ case netcdf_type: \ { \ Array< c_type > fill_value = Array< c_type >(dim_vector(1,1)); \ check_err(nc_inq_var_fill(ncid, varid, &no_fill, \ fill_value.fortran_vec())); \ data = octave_value(fill_value); \ break; \ } OV_NETCDF_INQ_VAR_FILL(NC_BYTE,octave_int8) OV_NETCDF_INQ_VAR_FILL(NC_UBYTE,octave_uint8) OV_NETCDF_INQ_VAR_FILL(NC_SHORT,octave_int16) OV_NETCDF_INQ_VAR_FILL(NC_USHORT,octave_uint16) OV_NETCDF_INQ_VAR_FILL(NC_INT,octave_int32) OV_NETCDF_INQ_VAR_FILL(NC_UINT,octave_uint32) OV_NETCDF_INQ_VAR_FILL(NC_INT64,octave_int64) OV_NETCDF_INQ_VAR_FILL(NC_UINT64,octave_uint64) OV_NETCDF_INQ_VAR_FILL(NC_FLOAT,float) OV_NETCDF_INQ_VAR_FILL(NC_DOUBLE,double) OV_NETCDF_INQ_VAR_FILL(NC_CHAR,char) } } //cout << "xtype3 " << xtype << " " << NC_DOUBLE << std::endl; retval(0) = octave_value(no_fill); retval(1) = data; return retval; } //nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate, // int deflate_level); DEFUN_DLD(netcdf_defVarDeflate, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) \n\ Define the compression settings NetCDF variable @var{varid}.\n\ If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression).\n\ @end deftypefn\n\ @seealso{netcdf_inqVarDeflate}\n") { if (args.length() != 5) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int shuffle = args(2).scalar_value(); // boolean int deflate = args(3).scalar_value(); // boolean int deflate_level = args(4).scalar_value(); check_err(nc_def_var_deflate (ncid, varid, shuffle, deflate, deflate_level)); return octave_value(); } //nc_inq_var_deflate(int ncid, int varid, int *shufflep, // int *deflatep, int *deflate_levelp); DEFUN_DLD(netcdf_inqVarDeflate, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf_inqVarDeflate (@var{ncid},@var{varid}) \n\ Determines the compression settings NetCDF variable @var{varid}.\n\ If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression).\n\ @end deftypefn\n\ @seealso{netcdf_defVarDeflate}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int shuffle, deflate, deflate_level; octave_value_list retval; int format; check_err(nc_inq_format(ncid, &format)); // nc_inq_var_deflate returns garbage for classic or 64bit files if (format == NC_FORMAT_CLASSIC || format == NC_FORMAT_64BIT) { shuffle = 0; deflate = 0; deflate_level = 0; } else { check_err(nc_inq_var_deflate(ncid, varid, &shuffle,&deflate,&deflate_level)); } retval(0) = octave_value(shuffle); retval(1) = octave_value(deflate); retval(2) = octave_value(deflate_level); return retval; } //int nc_def_var_chunking(int ncid, int varid, int storage, size_t *chunksizesp); //chunksizes can be ommited if storage is \"CONTIGUOUS\" DEFUN_DLD(netcdf_defVarChunking, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) \n\ Define the chunking settings of NetCDF variable @var{varid}.\n\ If @var{storage} is the string \"chunked\", the variable is stored by chunk of the size @var{chunkSizes}.\n\ If @var{storage} is the string \"contiguous\", the variable is stored in a contiguous way.\n\ @end deftypefn\n\ @seealso{netcdf_inqVarChunking}\n") { if (args.length() != 3 && args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string storagestr = args(2).string_value(); int storage; std::transform(storagestr.begin(), storagestr.end(),storagestr.begin(), ::toupper); if (storagestr == "CHUNKED") { storage = NC_CHUNKED; } else if (storagestr == "CONTIGUOUS") { storage = NC_CONTIGUOUS; } else { error("unknown storage %s",storagestr.c_str()); return octave_value(); } if (args.length() == 4) { OCTAVE_LOCAL_BUFFER (size_t, chunksizes, args(3).numel()); to_size_t_vector(args(3), args(3).numel(),chunksizes); check_err(nc_def_var_chunking(ncid, varid, storage, chunksizes)); } else { check_err(nc_def_var_chunking(ncid, varid, storage, NULL)); } return octave_value(); } //int nc_inq_var_chunking(int ncid, int varid, int *storagep, size_t *chunksizesp); DEFUN_DLD(netcdf_inqVarChunking, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{storage},@var{chunkSizes}] = } netcdf_inqVarChunking (@var{ncid},@var{varid}) \n\ Determines the chunking settings of NetCDF variable @var{varid}.\n\ If @var{storage} is the string \"chunked\", the variable is stored by chunk of the size @var{chunkSizes}.\n\ If @var{storage} is the string \"contiguous\", the variable is stored in a contiguous way.\n\ @end deftypefn\n\ @seealso{netcdf_defVarChunking}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int storage; int ndims; octave_value_list retval; check_err(nc_inq_varndims (ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (size_t, chunksizes, ndims); check_err(nc_inq_var_chunking(ncid, varid, &storage, chunksizes)); if (storage == NC_CHUNKED) { retval(0) = octave_value("chunked"); // should use uint32NDArray on 32-bit? uint64NDArray chunkSizes = uint64NDArray(dim_vector(1,ndims)); for (int i = 0; i < ndims; i++) { chunkSizes(ndims-i-1) = chunksizes[i]; } retval(1) = octave_value(chunkSizes); } else { retval(0) = octave_value("contiguous"); retval(1) = octave_value(Array()); } return retval; } // nc_def_var_fletcher32(int ncid, int varid, int checksum); DEFUN_DLD(netcdf_defVarFletcher32, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) \n\ Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string \"FLETCHER32\", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is \"NOCHECKSUM\", then checksums will be disabled. \n\ @end deftypefn\n\ @seealso{netcdf_defVar,netcdf_inqVarFletcher32}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int checksum = netcdf_get_constant(args(2)).int_value(); check_err(nc_def_var_fletcher32(ncid, varid, checksum)); return octave_value(); } DEFUN_DLD(netcdf_inqVarFletcher32, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{checksum} =} netcdf_inqVarFletcher32(@var{ncid},@var{varid}) \n\ Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string \"FLETCHER32\". Otherwise it is the string \"NOCHECKSUM\". \n\ @end deftypefn\n\ @seealso{netcdf_defVar,netcdf_inqVarFletcher32}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int checksum; check_err(nc_inq_var_fletcher32(ncid, varid, &checksum)); if (checksum == NC_FLETCHER32) { return octave_value("FLETCHER32"); } else { return octave_value("NOCHECKSUM"); } } DEFUN_DLD(netcdf_endDef, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_endDef (@var{ncid}) \n\ Leaves define-mode of NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_reDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_enddef (ncid)); return octave_value(); } DEFUN_DLD(netcdf_reDef, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_reDef (@var{ncid}) \n\ Enter define-mode of NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_endDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_redef (ncid)); return octave_value(); } // http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c/nc_005fput_005fvar_005f-type.html#nc_005fput_005fvar_005f-type DEFUN_DLD(netcdf_putVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) \n\ Put data in a NetCDF variable.\n\ The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. \n\ @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), \n\ @var{count} is the number of elements of to be written along each dimension (default all elements)\n\ and @var{stride} is the sampling interval.\n\ @end deftypefn\n\ @seealso{netcdf_endDef}\n") { if (args.length() < 3 || args.length() > 6) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value (); octave_value data = args(args.length()-1); int ndims; check_err(nc_inq_varndims (ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (size_t, start, ndims); OCTAVE_LOCAL_BUFFER (size_t, count, ndims); OCTAVE_LOCAL_BUFFER (ptrdiff_t, stride, ndims); nc_type xtype, basetype; check_err(nc_inq_vartype (ncid, varid, &xtype)); //int sliced_numel = tmp.numel(); if (xtype >= NC_FIRSTUSERTYPEID) { size_t datasz=0; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant write it", classid); return octave_value(); } if (!data.OV_ISCELL()) { error ("Expected data to be cell array"); return octave_value(); } } else { basetype = xtype; } start_count_stride(ncid, varid, args, args.length()-1, ndims, start, count, stride); // check if count matched size(data) if (xtype >= NC_FIRSTUSERTYPEID) { Cell ar = data.cell_value(); switch (basetype) { #define OV_NETCDF_PUT_VARA(netcdf_type,c_type,method) \ case netcdf_type: \ { \ for(octave_idx_type i=0;i v = ar(i).method(); \ nc_vlen_t ncl; \ ncl.len = v.numel(); \ ncl.p = (c_type*)v.fortran_vec(); \ count[0] = 1; \ check_err(nc_put_vars (ncid, varid, start, count, stride, &ncl)); \ start[0] = start[0]+1; \ } \ break; \ } OV_NETCDF_PUT_VARA(NC_BYTE, octave_int8, int8_array_value) OV_NETCDF_PUT_VARA(NC_UBYTE, octave_uint8, uint8_array_value) OV_NETCDF_PUT_VARA(NC_SHORT, octave_int16, int16_array_value) OV_NETCDF_PUT_VARA(NC_USHORT, octave_uint16, uint16_array_value) OV_NETCDF_PUT_VARA(NC_INT, octave_int32, int32_array_value) OV_NETCDF_PUT_VARA(NC_UINT, octave_uint32, uint32_array_value) OV_NETCDF_PUT_VARA(NC_INT64, octave_int64, int64_array_value) OV_NETCDF_PUT_VARA(NC_UINT64, octave_uint64, uint64_array_value) OV_NETCDF_PUT_VARA(NC_FLOAT, float, float_array_value) OV_NETCDF_PUT_VARA(NC_DOUBLE,double,array_value) OV_NETCDF_PUT_VARA(NC_CHAR, char, char_array_value) default: { error("unknown type %d" ,basetype); } } } else { switch (xtype) { #define OV_NETCDF_PUT_VAR(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_put_vars (ncid, varid, start, count, stride, (c_type*)data.method().fortran_vec())); \ break; \ } OV_NETCDF_PUT_VAR(NC_BYTE, signed char, int8_array_value) OV_NETCDF_PUT_VAR(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_PUT_VAR(NC_SHORT, short, int16_array_value) OV_NETCDF_PUT_VAR(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_PUT_VAR(NC_INT, int, int32_array_value) OV_NETCDF_PUT_VAR(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_PUT_VAR(NC_INT64, long long, int64_array_value) OV_NETCDF_PUT_VAR(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_PUT_VAR(NC_FLOAT, float, float_array_value) OV_NETCDF_PUT_VAR(NC_DOUBLE,double,array_value) OV_NETCDF_PUT_VAR(NC_CHAR, char, char_array_value) default: { error("unknown type %d" ,xtype); } } } return octave_value(); } DEFUN_DLD(netcdf_getVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) \n\ Get the data from a NetCDF variable.\n\ The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. \n\ @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), \n\ @var{count} is the number of elements of to be written along each dimension (default all elements)\n\ and @var{stride} is the sampling interval.\n\ @end deftypefn\n\ @seealso{netcdf_putVar}\n") { if (args.length() < 2 || args.length() > 5) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value (); int ndims; octave_value data; nc_type xtype, basetype; check_err(nc_inq_vartype (ncid, varid, &xtype)); check_err(nc_inq_varndims (ncid, varid, &ndims)); if (xtype < NC_FIRSTUSERTYPEID) basetype = xtype; else { size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant read it", classid); return octave_value(); } } //std::cout << "ndims " << ndims << std::endl; OCTAVE_LOCAL_BUFFER (size_t, start, ndims); OCTAVE_LOCAL_BUFFER (size_t, count, ndims); OCTAVE_LOCAL_BUFFER (ptrdiff_t, stride, ndims); size_t sz = 1; dim_vector sliced_dim_vector; if (ndims < 2) { sliced_dim_vector.resize(2); sliced_dim_vector(0) = 1; sliced_dim_vector(1) = 1; } else { sliced_dim_vector.resize(ndims); } start_count_stride(ncid, varid, args, args.length(), ndims, start, count, stride); // std::cout << "count " << count[0] << std::endl; // std::cout << "start " << start[0] << std::endl; // std::cout << "stide " << stride[0] << std::endl; // total size sz for (int i=0; i arr = Array < float >(sliced_dim_vector); // float* time; // time = (float*)malloc(10 * sizeof(float)); // check_err(nc_get_vars(ncid, varid, start, count, stride, time)); // data = octave_value(arr); // return data; // user type if (xtype >= NC_FIRSTUSERTYPEID) { switch (basetype) { #define OV_NETCDF_GET_VARA_CASE(netcdf_type,c_type) \ case netcdf_type: \ { \ Cell arr = Cell(sliced_dim_vector); \ /* necessary for netcdf 4.1.3 */ \ if (sz > 0) { \ OCTAVE_LOCAL_BUFFER (nc_vlen_t, vlendata, sz); \ check_err(nc_get_vars(ncid, varid, start, count, stride, vlendata)); \ dim_vector dv; \ dv.resize(2); \ for (size_t vi=0; vi a = Array < c_type >(dv); \ memcpy(a.fortran_vec(), vlendata[vi].p, vlendata[vi].len*sizeof(c_type)); \ arr(vi) = a; \ } \ nc_free_vlens(sz, vlendata); \ } else { \ warning_with_id("netcdf:variable-size-zero", "variable size 0 or currently too large to process"); \ } \ data = octave_value(arr); \ break; \ } OV_NETCDF_GET_VARA_CASE(NC_BYTE,octave_int8) OV_NETCDF_GET_VARA_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GET_VARA_CASE(NC_SHORT,octave_int16) OV_NETCDF_GET_VARA_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GET_VARA_CASE(NC_INT,octave_int32) OV_NETCDF_GET_VARA_CASE(NC_UINT,octave_uint32) OV_NETCDF_GET_VARA_CASE(NC_INT64,octave_int64) OV_NETCDF_GET_VARA_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GET_VARA_CASE(NC_FLOAT,float) OV_NETCDF_GET_VARA_CASE(NC_DOUBLE,double) OV_NETCDF_GET_VARA_CASE(NC_CHAR, char) default: { error("unknown type %d" ,xtype); } } } else { switch (xtype) { #define OV_NETCDF_GET_VAR_CASE(netcdf_type,c_type) \ case netcdf_type: \ { \ Array < c_type > arr = Array < c_type >(sliced_dim_vector); \ /* necessary for netcdf 4.1.3 */ \ if (sz > 0) { \ check_err(nc_get_vars(ncid, varid, start, count, stride, arr.fortran_vec())); \ } else { \ warning_with_id("netcdf:variable-size-zero", "variable size 0 or currently too large to process"); \ } \ data = octave_value(arr); \ break; \ } OV_NETCDF_GET_VAR_CASE(NC_BYTE,octave_int8) OV_NETCDF_GET_VAR_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GET_VAR_CASE(NC_SHORT,octave_int16) OV_NETCDF_GET_VAR_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GET_VAR_CASE(NC_INT,octave_int32) OV_NETCDF_GET_VAR_CASE(NC_UINT,octave_uint32) OV_NETCDF_GET_VAR_CASE(NC_INT64,octave_int64) OV_NETCDF_GET_VAR_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GET_VAR_CASE(NC_FLOAT,float) OV_NETCDF_GET_VAR_CASE(NC_DOUBLE,double) OV_NETCDF_GET_VAR_CASE(NC_CHAR, char) default: { error("unknown type %d" ,xtype); } } } return data; } DEFUN_DLD(netcdf_close, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_close(@var{ncid}) \n\ Close the NetCDF file with the id @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_close(ncid)); return octave_value (); } // int nc_inq_attname(int ncid, int varid, int attnum, char *name); DEFUN_DLD(netcdf_inqAttName, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqAttName (@var{ncid},@var{varid},@var{attnum}) \n\ Get the name of a NetCDF attribute.\n\ This function returns the name of the attribute with the id @var{attnum} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int attnum = args(2).scalar_value(); char name[NC_MAX_NAME+1]; check_err(nc_inq_attname(ncid, varid, attnum, name)); return octave_value(std::string(name)); } DEFUN_DLD(netcdf_inqAttID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{attnum} =} netcdf_inqAttID(@var{ncid},@var{varid},@var{attname}) \n\ Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. \n\ For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); int attnum; check_err (nc_inq_attid (ncid, varid, attname.c_str(), &attnum)); return octave_value(attnum); } //int nc_inq_att (int ncid, int varid, const char *name, // nc_type *xtypep, size_t *lenp); DEFUN_DLD(netcdf_inqAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{xtype},@var{len}] = } netcdf_inqAtt(@var{ncid},@var{varid},@var{name}) \n\ Get attribute type and length.\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); int xtype; size_t len; octave_value_list retval; check_err(nc_inq_att(ncid, varid, name.c_str(), &xtype, &len)); retval(0) = octave_value(xtype); retval(1) = octave_value(len); return retval; } DEFUN_DLD(netcdf_getAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{data} =} netcdf_getAtt (@var{ncid},@var{varid},@var{name}) \n\ Get the value of a NetCDF attribute.\n\ This function returns the value of the attribute called @var{name} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_putAtt}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); nc_type xtype, basetype; size_t len; octave_value data; check_err(nc_inq_att(ncid, varid, attname.c_str(), &xtype, &len)); if (xtype < NC_FIRSTUSERTYPEID) basetype = xtype; else { size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant read it", classid); } } #define OV_NETCDF_GET_ATT_CASE(netcdf_type,c_type) \ if (basetype == netcdf_type) \ { \ Array< c_type > arr = Array< c_type >(dim_vector(1,len)); \ check_err(nc_get_att(ncid, varid, attname.c_str(), arr.fortran_vec())); \ data = octave_value(arr); \ } #define OV_NETCDF_GETVLEN_ATT_CASE(netcdf_type,c_type) \ if(basetype == netcdf_type) \ { \ OCTAVE_LOCAL_BUFFER (nc_vlen_t, vlendata, len); \ Array< c_type > arr = Array< c_type >(dim_vector(1,len)); \ check_err(nc_get_att(ncid, varid, attname.c_str(), vlendata)); \ for (size_t vi=0; vi= NC_FIRSTUSERTYPEID) { OV_NETCDF_GETVLEN_ATT_CASE(NC_BYTE,octave_int8) OV_NETCDF_GETVLEN_ATT_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GETVLEN_ATT_CASE(NC_SHORT,octave_int16) OV_NETCDF_GETVLEN_ATT_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GETVLEN_ATT_CASE(NC_INT,octave_int32) OV_NETCDF_GETVLEN_ATT_CASE(NC_UINT,octave_uint32) OV_NETCDF_GETVLEN_ATT_CASE(NC_INT64,octave_int64) OV_NETCDF_GETVLEN_ATT_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GETVLEN_ATT_CASE(NC_FLOAT,float) OV_NETCDF_GETVLEN_ATT_CASE(NC_DOUBLE,double) OV_NETCDF_GETVLEN_ATT_CASE(NC_CHAR, char) } else { OV_NETCDF_GET_ATT_CASE(NC_BYTE,octave_int8) OV_NETCDF_GET_ATT_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GET_ATT_CASE(NC_SHORT,octave_int16) OV_NETCDF_GET_ATT_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GET_ATT_CASE(NC_INT,octave_int32) OV_NETCDF_GET_ATT_CASE(NC_UINT,octave_uint32) OV_NETCDF_GET_ATT_CASE(NC_INT64,octave_int64) OV_NETCDF_GET_ATT_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GET_ATT_CASE(NC_FLOAT,float) OV_NETCDF_GET_ATT_CASE(NC_DOUBLE,double) OV_NETCDF_GET_ATT_CASE(NC_CHAR, char) } return data; } DEFUN_DLD(netcdf_putAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_putAtt (@var{ncid},@var{varid},@var{name},@var{data}) \n\ Defines a NetCDF attribute.\n\ This function defines the attribute called @var{name} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. \n\ For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_getAtt}\n\ @end deftypefn") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); octave_value data = args(3); nc_type xtype; // get matching netcdf type if (data.is_string()) xtype = NC_CHAR; else if (data.is_int8_type()) xtype = NC_BYTE; else if (data.is_uint8_type()) xtype = NC_UBYTE; else if (data.is_int16_type()) xtype = NC_SHORT; else if (data.is_uint16_type()) xtype = NC_USHORT; else if (data.is_int32_type()) xtype = NC_INT; else if (data.is_uint32_type()) xtype = NC_UINT; else if (data.is_int64_type()) xtype = NC_INT64; else if (data.is_uint64_type()) xtype = NC_UINT64; else if (data.is_single_type()) xtype = NC_FLOAT; else xtype = NC_DOUBLE; //cout << "xtype " << xtype << endl; size_t len = data.numel(); switch (xtype) { #define OV_NETCDF_PUT_ATT(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_put_att (ncid, varid, attname.c_str(), xtype, len, data.method().fortran_vec())); \ break; \ } OV_NETCDF_PUT_ATT(NC_BYTE, signed char, int8_array_value) OV_NETCDF_PUT_ATT(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_PUT_ATT(NC_SHORT, short, int16_array_value) OV_NETCDF_PUT_ATT(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_PUT_ATT(NC_INT, int, int32_array_value) OV_NETCDF_PUT_ATT(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_PUT_ATT(NC_INT64, long long, int64_array_value) OV_NETCDF_PUT_ATT(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_PUT_ATT(NC_FLOAT, float, float_array_value) OV_NETCDF_PUT_ATT(NC_DOUBLE,double,array_value) OV_NETCDF_PUT_ATT(NC_CHAR, char, char_array_value) } /* check_err(nc_put_att (int ncid, int varid, const char *name, nc_type xtype, size_t len, const void *op));*/ return octave_value(); } DEFUN_DLD(netcdf_copyAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) \n\ Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} \n\ to the variable @var{varid_out} in the data set @var{ncid_out}. \n\ To copy a global attribute use netcdf_getConstant(\"global\") for @var{varid} or @var{varid_out}.\n\ @seealso{netcdf_getAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 5) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); int ncid_out = args(3).scalar_value(); int varid_out = args(4).scalar_value(); check_err (nc_copy_att (ncid, varid, name.c_str(), ncid_out, varid_out)); return octave_value (); } DEFUN_DLD(netcdf_renameAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) \n\ Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute.\n\ To rename a global attribute use netcdf_getConstant(\"global\") for @var{varid}.\n\ @seealso{netcdf_copyAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 4) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string old_name = args(2).string_value(); std::string new_name = args(3).string_value(); check_err(nc_rename_att (ncid, varid, old_name.c_str(), new_name.c_str())); return octave_value (); } DEFUN_DLD(netcdf_delAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_delAtt(@var{ncid},@var{varid},@var{name}) \n\ Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. \n\ To delete a global attribute use netcdf_getConstant(\"global\") for @var{varid}.\n\ @seealso{netcdf_defAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); check_err(nc_del_att (ncid, varid, name.c_str())); return octave_value (); } DEFUN_DLD(netcdf_inqVarID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varid} = } netcdf_inqVarID (@var{ncid},@var{name}) \n\ Return the id of a variable based on its name.\n\ @seealso{netcdf_defVar,netcdf_inqVarIDs}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string varname = args(1).string_value(); int varid; check_err(nc_inq_varid(ncid,varname.c_str(), &varid)); return octave_value(varid); } DEFUN_DLD(netcdf_inqVarIDs, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varids} = } netcdf_inqVarID (@var{ncid}) \n\ Return all variable ids.\n\ This functions returns all variable ids in a NetCDF file or NetCDF group.\n\ @seealso{netcdf_inqVarID}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int nvars; check_err(nc_inq_varids(ncid, &nvars, NULL)); OCTAVE_LOCAL_BUFFER(int,tmp,nvars); NETCDF_INT_ARRAY varids = NETCDF_INT_ARRAY(dim_vector(1,nvars)); check_err(nc_inq_varids(ncid, &nvars, tmp)); for (int i=0; i < nvars; i++) { varids(i) = tmp[i]; } return octave_value(varids); } DEFUN_DLD(netcdf_inqVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{name},@var{nctype},@var{dimids},@var{nattr}] = } netcdf_inqVar (@var{ncid},@var{varid}) \n\ Inquires information about a NetCDF variable.\n\ This functions returns the @var{name}, the NetCDF type @var{nctype}, an array of dimension ids \n\ @var{dimids} and the number of attributes @var{nattr} of the NetCDF variable. @var{nctype} in an \n\ integer corresponding NetCDF constants.\n\ @seealso{netcdf_inqVarID,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); char name[NC_MAX_NAME+1]; int ndims, natts; nc_type xtype; octave_value_list retval; check_err(nc_inq_varndims(ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (int, dimids, ndims); check_err(nc_inq_var(ncid, varid, name, &xtype, &ndims, dimids, &natts)); retval(0) = octave_value(std::string(name)); retval(1) = octave_value(xtype); // copy output arguments Array dimids_ = Array(dim_vector(1,ndims)); for (int i = 0; i < ndims; i++) { dimids_(i) = dimids[ndims-i-1]; } retval(2) = octave_value(dimids_); retval(3) = octave_value(natts); return retval; } DEFUN_DLD(netcdf_inqDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{name},@var{length}] =} netcdf_inqDim(@var{ncid},@var{dimid}) \n\ Returns the name and length of a NetCDF dimension.\n\ @seealso{netcdf_inqDimID}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int dimid = args(1).scalar_value(); octave_value_list retval; char name[NC_MAX_NAME+1]; size_t length; check_err(nc_inq_dim(ncid, dimid, name, &length)); retval(0) = octave_value(std::string(name)); retval(1) = octave_value(length); return retval; } DEFUN_DLD(netcdf_inqDimID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimid} =} netcdf_inqDimID(@var{ncid},@var{dimname}) \n\ Return the id of a NetCDF dimension.\n\ @seealso{netcdf_inqDim}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string dimname = args(1).string_value(); int id; octave_value_list retval; check_err(nc_inq_dimid(ncid, dimname.c_str(), &id)); retval(0) = octave_value(id); return retval; } // int nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents); DEFUN_DLD(netcdf_inqDimIDs, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid}) \n\ @deftypefnx {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid},@var{include_parents}) \n\ Return the dimension ids defined in a NetCDF file.\n\ If @var{include_parents} is 1, the dimension ids of the parent group are also returned.\n\ Per default this is not the case (@var{include_parents} is 0).\n\ @seealso{netcdf_inqDim}\n\ @end deftypefn") { if (args.length() != 1 && args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int include_parents = 0; if (args.length() == 2) { include_parents = args(0).scalar_value(); } int ndims; check_err(nc_inq_ndims(ncid, &ndims)); OCTAVE_LOCAL_BUFFER(int,tmp,ndims); NETCDF_INT_ARRAY dimids = NETCDF_INT_ARRAY(dim_vector(1,ndims)); check_err(nc_inq_dimids(ncid, &ndims, tmp, include_parents)); for (int i=0; i < ndims; i++) { dimids(i) = tmp[i]; } return octave_value(dimids); } // groups //int nc_def_grp(int parent_ncid, const char *name, int *new_ncid); DEFUN_DLD(netcdf_defGrp, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{new_ncid} =} netcdf_defGrp(@var{ncid},@var{name}) \n\ Define a group in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int parent_ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int new_ncid; check_err(nc_def_grp(parent_ncid, name.c_str(), &new_ncid)); return octave_value(new_ncid); } // int nc_inq_grps(int ncid, int *numgrps, int *ncids); DEFUN_DLD(netcdf_inqGrps, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncids} =} netcdf_inqGrps(@var{ncid}) \n\ Return all groups ids in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int numgrps; check_err(nc_inq_grps(ncid, &numgrps, NULL)); OCTAVE_LOCAL_BUFFER(int,tmp,numgrps); NETCDF_INT_ARRAY ncids = NETCDF_INT_ARRAY(dim_vector(1,numgrps)); check_err(nc_inq_grps(ncid, NULL, tmp)); for (int i=0; i < numgrps; i++) { ncids(i) = tmp[i]; } return octave_value(ncids); } //int nc_inq_grpname(int ncid, char *name); DEFUN_DLD(netcdf_inqGrpName, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpName(@var{ncid}) \n\ Return group name in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); char name[NC_MAX_NAME+1]; check_err(nc_inq_grpname(ncid, name)); return octave_value(std::string(name)); } //int nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name); DEFUN_DLD(netcdf_inqGrpNameFull, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpNameFull(@var{ncid}) \n\ Return full name of group in NetCDF file.\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); size_t len; check_err(nc_inq_grpname_len(ncid,&len)); OCTAVE_LOCAL_BUFFER(char, name, len+1); if (name == 0) { error ("netcdf: error allocating buffer for name\n"); return octave_value (); } octave_value retval; check_err(nc_inq_grpname_full(ncid, &len, name)); retval = octave_value(std::string(name)); return retval; } // int nc_inq_grp_parent(int ncid, int *parent_ncid); DEFUN_DLD(netcdf_inqGrpParent, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{parent_ncid} =} netcdf_inqGrpParent(@var{ncid}) \n\ Return id of the parent group\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int parent_ncid; check_err(nc_inq_grp_parent(ncid, &parent_ncid)); return octave_value(parent_ncid); } // int nc_inq_grp_full_ncid(int ncid, char *full_name, int *grp_ncid); DEFUN_DLD(netcdf_inqGrpFullNcid, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqGrpFullNcid(@var{ncid},@var{name}) \n\ Return the group id based on the full group name.\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int grp_ncid; int format; check_err(nc_inq_format(ncid, &format)); if (format == NC_FORMAT_CLASSIC || format == NC_FORMAT_64BIT) { if (name == "/") { return octave_value(ncid); } else { error("groups are not supported in this format"); return octave_value(); } } // nc_inq_grp_full_ncid makes a segmentation fault if // file is in non-HDF5 format check_err(nc_inq_grp_full_ncid(ncid, name.c_str(),&grp_ncid)); return octave_value(grp_ncid); } // int nc_inq_ncid(int ncid, const char *name, int *grp_ncid); DEFUN_DLD(netcdf_inqNcid, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqNcid(@var{ncid},@var{name}) \n\ Return group id based on its name\n\ @seealso{netcdf_inqGrpFullNcid}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int grp_ncid; check_err(nc_inq_ncid(ncid, name.c_str(), &grp_ncid)); return octave_value(grp_ncid); } // int nc_def_vlen(int ncid, const char *name, nc_type base_typeid, nc_type *xtypep); DEFUN_DLD(netcdf_defVlen, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVlen(@var{ncid},@var{typename},@var{basetype}) \n\ Defines a NC_VLEN variable length array type with the type name @var{typename} and a base datatype of @var{basetype} in the dataset @var{ncid}. @var{basetype} can be \"byte\", \"ubyte\", \"short\", \"ushort\", \"int\", \"uint\", \"int64\", \"uint64\", \"float\", \"double\", \"char\" or the corresponding number as returned by netcdf_getConstant. The new data type id is returned. \n\ @end deftypefn\n\ @seealso{netcdf_open,netcdf_defVar, netcdf_inqVlen}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value (); nc_type basetype = 0; if (args(2).is_string()) basetype = netcdf_get_constant(args(2)).int_value(); else basetype = args(2).int_value(); nc_type varid; check_err(nc_def_vlen (ncid, name.c_str(), basetype, &varid)); return octave_value(varid); } // int nc_inq_vlen(int ncid, nc_type xtype, char *name, size_t datasz, nc_type *basetypeid); DEFUN_DLD(netcdf_inqVlen, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{typename}, @var{bytesize}, @var{basetypeid}] = } netcdf_inqVlen(@var{ncid},@var{typeid}) \n\ Provide information on a NC_VLEN variable length array type @var{typeid} in the dataset @var{ncid}.\n\ \n \ The function returns the typename, bytesize, and base type id.\n \ \n \ @end deftypefn\n\ @seealso{netcdf_open, netcdf_defVlen}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); nc_type nctypeid = netcdf_get_constant(args(1)).int_value();; nc_type basetypeid; char name[NC_MAX_NAME+1]; size_t datasz; check_err(nc_inq_vlen (ncid, nctypeid, name, &datasz, &basetypeid)); octave_value_list retval; retval(0) = octave_value(name); retval(1) = octave_value(datasz); retval(2) = octave_value(basetypeid); return retval; } // int nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t datasz, nc_type *basetypeid, size_t nfields, int *classp); DEFUN_DLD(netcdf_inqUserType, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{typename}, @var{bytesize}, @var{basetypeid}, @var{numfields}, @var{classid}] = } netcdf_inqUserType(@var{ncid},@var{typeid}) \n\ Provide information on a user defined type @var{typeid} in the dataset @var{ncid}.\n\ \n \ The function returns the typename, bytesize, base type id, number of fields and class identifier of the type.\n \ \n \ @end deftypefn\n\ @seealso{netcdf_open, netcdf_defVlen, netcdf_inqVlen}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); nc_type nctypeid = netcdf_get_constant(args(1)).int_value();; nc_type basetypeid; char name[NC_MAX_NAME+1]; size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, nctypeid, name, &datasz, &basetypeid, &nfields, &classid)); octave_value_list retval; retval(0) = octave_value(name); retval(1) = octave_value(datasz); retval(2) = octave_value(basetypeid); retval(3) = octave_value(nfields); retval(4) = octave_value(classid); return retval; } netcdf-1.0.18/src/aclocal.m40000644000000000000000000000127314674554453012445 0ustar00# generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_include([m4/octave-forge.m4]) netcdf-1.0.18/src/autogen.sh0000755000000000000000000000020414674554453012577 0ustar00#! /bin/sh ## Generate ./configure and other build files aclocal autoconf autoheader -f #rm -f configure.ac rm -rf autom4te.cache netcdf-1.0.18/src/config.guess0000755000000000000000000012564714674554453013141 0ustar00#!/usr/bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-10-02' # This file 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 . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: netcdf-1.0.18/src/config.h.in0000644000000000000000000000132314674554453012624 0ustar00/* config.h.in. Generated from configure.ac by autoheader. */ #include "undef-ah-octave.h" /* macro for alternative Octave symbols */ #undef OV_ISCELL /* macro for alternative Octave symbols */ #undef OV_ISEMPTY /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION #include "oct-alt-includes.h" netcdf-1.0.18/src/config.sub0000755000000000000000000010672614674554453012601 0ustar00#!/usr/bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-09-05' # This file 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 . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: netcdf-1.0.18/src/configure0000755000000000000000000037521314674554453012524 0ustar00#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for octave netcdf package 1.0.18. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='octave netcdf package' PACKAGE_TARNAME='octave-netcdf-package' PACKAGE_VERSION='1.0.18' PACKAGE_STRING='octave netcdf package 1.0.18' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS NETCDF_CPPFLAGS NETCDF_LIBS NC_CONFIG MKOCTFILE OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX SED AWK target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures octave netcdf package 1.0.18 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/octave-netcdf-package] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of octave netcdf package 1.0.18:";; esac cat <<\_ACEOF Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF octave netcdf package configure 1.0.18 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by octave netcdf package $as_me 1.0.18, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " # Auxiliary files required by this configure script. ac_aux_files="config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" # Avoid warnings for redefining AH-generated preprocessor symbols of # Octave. # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 printf %s "checking target system type... " >&6; } if test ${ac_cv_target+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 printf "%s\n" "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 printf %s "checking whether the C++ compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 printf %s "checking for C++ compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Extract the first word of "mkoctfile", so it can be a program name with args. set dummy mkoctfile; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MKOCTFILE+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MKOCTFILE"; then ac_cv_prog_MKOCTFILE="$MKOCTFILE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MKOCTFILE="mkoctfile" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MKOCTFILE=$ac_cv_prog_MKOCTFILE if test -n "$MKOCTFILE"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKOCTFILE" >&5 printf "%s\n" "$MKOCTFILE" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$MKOCTFILE" && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no mkoctfile found on path" >&5 printf "%s\n" "$as_me: WARNING: no mkoctfile found on path" >&2;} if test "X${IGNORE_MINGW_PATH_MODIFICATION}" == "X"; then case $host_os in mingw*) # try demangle spaces in escaped input strings MKOCTFILE=`echo $MKOCTFILE | $SED "s,\\\\\ ,?,g"` ;; *) ;; esac fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nc-config", so it can be a program name with args. set dummy ${ac_tool_prefix}nc-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NC_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NC_CONFIG"; then ac_cv_prog_NC_CONFIG="$NC_CONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NC_CONFIG="${ac_tool_prefix}nc-config" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NC_CONFIG=$ac_cv_prog_NC_CONFIG if test -n "$NC_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NC_CONFIG" >&5 printf "%s\n" "$NC_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NC_CONFIG"; then ac_ct_NC_CONFIG=$NC_CONFIG # Extract the first word of "nc-config", so it can be a program name with args. set dummy nc-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NC_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NC_CONFIG"; then ac_cv_prog_ac_ct_NC_CONFIG="$ac_ct_NC_CONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NC_CONFIG="nc-config" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NC_CONFIG=$ac_cv_prog_ac_ct_NC_CONFIG if test -n "$ac_ct_NC_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NC_CONFIG" >&5 printf "%s\n" "$ac_ct_NC_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NC_CONFIG" = x; then NC_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NC_CONFIG=$ac_ct_NC_CONFIG fi else NC_CONFIG="$ac_cv_prog_NC_CONFIG" fi if test -z "$NC_CONFIG"; then as_fn_error 1 "nc-config not found" "$LINENO" 5; fi NETCDF_LIBS=`$NC_CONFIG --libs` NETCDF_CPPFLAGS=`$NC_CONFIG --cflags` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for netcdf4 support" >&5 printf %s "checking for netcdf4 support... " >&6; } NETCDF_V4=`$NC_CONFIG --has-nc4` if test x$NETCDF_V4 == xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "netcdf4 support missing. Did you disable netcdf4 features?" "$LINENO" 5 fi # Checks for octave depreciated symbols # Simple symbol alternatives of different Octave versions. save_altsyms_CXX="$CXX" save_altsyms_CXXFLAGS="$CXXFLAGS" save_altsyms_LDFLAGS="$LDFLAGS" save_altsyms_LIBS="$LIBS" OCTINCLUDEDIR="${OCTINCLUDEDIR:-`$MKOCTFILE -p OCTINCLUDEDIR`}/.." OCTLIBDIR=${OCTLIBDIR:-`$MKOCTFILE -p OCTLIBDIR`} if test "X${IGNORE_MINGW_PATH_MODIFICATION}" == "X"; then MSYSTEM="${MSYSTEM}" else MSYSTEM="none" fi case X$MSYSTEM in XMINGW64*) OCTAVE_HOME=`${MKOCTFILE} -p OCTAVE_HOME | $SED 's,\\\\,/,g'` # change \ to / and replace octave home part with mingw part OCTINCLUDEDIR=`echo $OCTINCLUDEDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw64,g"` OCTLIBDIR=`echo $OCTLIBDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw64,g"` ;; XMINGW32*) OCTAVE_HOME=`${MKOCTFILE} -p OCTAVE_HOME | $SED 's,\\\\,/,g'` # change \ to / and replace octave home part with mingw part OCTINCLUDEDIR=`echo $OCTINCLUDEDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw32,g"` OCTLIBDIR=`echo $OCTLIBDIR | $SED -e 's,\\\\,/,g -e "s,${OCTAVE_HOME},/mingw32,g"'` ;; *) ;; esac CXX=`${MKOCTFILE} -p CXX` CXXFLAGS="-I$OCTINCLUDEDIR $CXXFLAGS" LDFLAGS="-L$OCTLIBDIR $LDFLAGS" LIBS="-loctinterp $LIBS" echo '/* generated by configure */' > oct-alt-includes.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking is_cell or iscell" >&5 printf %s "checking is_cell or iscell... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { octave_value ().iscell (); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define OV_ISCELL iscell" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: iscell" >&5 printf "%s\n" "iscell" >&6; } echo ' ' >> oct-alt-includes.h else $as_nop printf "%s\n" "#define OV_ISCELL is_cell" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: is_cell" >&5 printf "%s\n" " is_cell" >&6; } echo '' >> oct-alt-includes.h fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking is_empty or isempty" >&5 printf %s "checking is_empty or isempty... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { octave_value ().isempty (); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define OV_ISEMPTY isempty" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: isempty" >&5 printf "%s\n" "isempty" >&6; } echo ' ' >> oct-alt-includes.h else $as_nop printf "%s\n" "#define OV_ISEMPTY is_empty" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: is_empty" >&5 printf "%s\n" " is_empty" >&6; } echo '' >> oct-alt-includes.h fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXX=$save_altsyms_CXX CXXFLAGS=$save_altsyms_CXXFLAGS LDFLAGS=$save_altsyms_LDFLAGS LIBS=$save_altsyms_LIBS ac_config_files="$ac_config_files Makefile" test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by octave netcdf package $as_me 1.0.18, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ octave netcdf package config.status 1.0.18 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: octave-forge is configured with mkoctfile: $MKOCTFILE nc-config: $NC_CONFIG netCDF compiler flags: $NETCDF_CPPFLAGS netCDF libraries: $NETCDF_LIBS " >&5 printf "%s\n" " octave-forge is configured with mkoctfile: $MKOCTFILE nc-config: $NC_CONFIG netCDF compiler flags: $NETCDF_CPPFLAGS netCDF libraries: $NETCDF_LIBS " >&6; } netcdf-1.0.18/src/configure.ac0000644000000000000000000001071414674554453013073 0ustar00dnl The configure script is generated by autogen.sh from configure.base dnl and the various configure.add files in the source tree. Edit dnl configure.base and reprocess rather than modifying ./configure. ### Copyright (C) 2018-2024 John Donoghue ### ### 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 ### . dnl autoconf 2.13 certainly doesn't work! What is the minimum requirement? AC_PREREQ(2.2) AC_INIT([octave netcdf package],[1.0.18]) AC_CONFIG_HEADERS([config.h]) # Avoid warnings for redefining AH-generated preprocessor symbols of # Octave. AH_TOP([#include "undef-ah-octave.h"]) AC_CONFIG_MACRO_DIRS([m4]) AC_CANONICAL_HOST AC_CANONICAL_TARGET dnl Kill caching --- this ought to be the default define([AC_CACHE_LOAD], )dnl define([AC_CACHE_SAVE], )dnl dnl uncomment to put support files in another directory dnl AC_CONFIG_AUX_DIR(admin) dnl if tools we need AC_PROG_AWK AC_PROG_SED AC_PROG_CXX AC_LANG(C++) dnl Check for mkoctfile and octave AC_CHECK_PROG([MKOCTFILE],mkoctfile,mkoctfile) test -z "$MKOCTFILE" && AC_MSG_WARN([no mkoctfile found on path]) if test "X${IGNORE_MINGW_PATH_MODIFICATION}" == "X"; then case $host_os in mingw*) # try demangle spaces in escaped input strings MKOCTFILE=`echo $MKOCTFILE | $SED "s,\\\\\ ,?,g"` ;; *) ;; esac fi dnl ********************************************************** dnl checking for nc-config dnl AC_CHECK_PROG(NC_CONFIG, nc-config, nc-config) AC_CHECK_TOOL(NC_CONFIG, nc-config, []) if test -z "$NC_CONFIG"; then AC_MSG_ERROR([nc-config not found], 1); fi NETCDF_LIBS=`$NC_CONFIG --libs` NETCDF_CPPFLAGS=`$NC_CONFIG --cflags` AC_SUBST(NETCDF_LIBS) AC_SUBST(NETCDF_CPPFLAGS) dnl The following will be either "yes" or "no" AC_MSG_CHECKING(for netcdf4 support) NETCDF_V4=`$NC_CONFIG --has-nc4` if test x$NETCDF_V4 == xyes; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) AC_MSG_ERROR(netcdf4 support missing. Did you disable netcdf4 features?) fi dnl ********************************************************** # Checks for octave depreciated symbols # Simple symbol alternatives of different Octave versions. save_altsyms_CXX="$CXX" save_altsyms_CXXFLAGS="$CXXFLAGS" save_altsyms_LDFLAGS="$LDFLAGS" save_altsyms_LIBS="$LIBS" OCTINCLUDEDIR="${OCTINCLUDEDIR:-`$MKOCTFILE -p OCTINCLUDEDIR`}/.." OCTLIBDIR=${OCTLIBDIR:-`$MKOCTFILE -p OCTLIBDIR`} if test "X${IGNORE_MINGW_PATH_MODIFICATION}" == "X"; then MSYSTEM="${MSYSTEM}" else MSYSTEM="none" fi case X$MSYSTEM in XMINGW64*) OCTAVE_HOME=`${MKOCTFILE} -p OCTAVE_HOME | $SED 's,\\\\,/,g'` # change \ to / and replace octave home part with mingw part OCTINCLUDEDIR=`echo $OCTINCLUDEDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw64,g"` OCTLIBDIR=`echo $OCTLIBDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw64,g"` ;; XMINGW32*) OCTAVE_HOME=`${MKOCTFILE} -p OCTAVE_HOME | $SED 's,\\\\,/,g'` # change \ to / and replace octave home part with mingw part OCTINCLUDEDIR=`echo $OCTINCLUDEDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw32,g"` OCTLIBDIR=`echo $OCTLIBDIR | $SED -e 's,\\\\,/,g -e "s,${OCTAVE_HOME},/mingw32,g"'` ;; *) ;; esac CXX=`${MKOCTFILE} -p CXX` CXXFLAGS="-I$OCTINCLUDEDIR $CXXFLAGS" LDFLAGS="-L$OCTLIBDIR $LDFLAGS" LIBS="-loctinterp $LIBS" OF_OCTAVE_LIST_ALT_SYMS([ [dnl [is_cell], [iscell], [[octave_value ().iscell ();]], [OV_ISCELL], [], [] ], [dnl [is_empty], [isempty], [[octave_value ().isempty ();]], [OV_ISEMPTY], [], [] ] ],[oct-alt-includes.h]) CXX=$save_altsyms_CXX CXXFLAGS=$save_altsyms_CXXFLAGS LDFLAGS=$save_altsyms_LDFLAGS LIBS=$save_altsyms_LIBS dnl ********************************************************** AC_CONFIG_FILES([Makefile]) AC_OUTPUT AC_MSG_RESULT([ octave-forge is configured with mkoctfile: $MKOCTFILE nc-config: $NC_CONFIG netCDF compiler flags: $NETCDF_CPPFLAGS netCDF libraries: $NETCDF_LIBS ]) netcdf-1.0.18/src/m4/0000755000000000000000000000000014674554453011122 5ustar00netcdf-1.0.18/src/m4/octave-forge.m40000644000000000000000000000576014674554453013755 0ustar00# Copyright (C) 2017-2018 Olaf Till # Modifications to print what is searching for by JohnD # # 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 . # arguments of OF_OCTAVE_ALT_SYMS (see also description of # OF_OCTAVE_LIST_ALT_SYMS below): # # $1: symbol version 1 # $2: symbol version 2 # $3: test for symbol version 2 # $4: macro name to access alternative symbols # $5: include directives for symbol version 1 # $6: include directives for symbol version 2 # (a list of lists of args 1--6 is $1 of OF_OCTAVE_LIST_ALT_SYMS) # $7: name of generated include file with alternatives of Octave headers # (arg7 is $2 of OF_OCTAVE_LIST_ALT_SYMS) AC_DEFUN([OF_OCTAVE_ALT_SYMS], [ AC_MSG_CHECKING([$1 or $2]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ] $6], [$3])], [AC_DEFINE($4, [[$2]], [macro for alternative Octave symbols]) AC_MSG_RESULT([$2]) echo '$6' >> $7], [AC_DEFINE($4, [[$1]], [macro for alternative Octave symbols]) AC_MSG_RESULT([$1]) echo '$5' >> $7] ) ]) # OF_OCTAVE_LIST_ALT_SYMS is called in the following way: # # OF_OCTAVE_LIST_ALT_SYMS([ # [dnl # [old_octave_symbol], # [new_octave_symbol], # [[compilation test] # [for new_octave_symbol]], # [NAME_OF_GENERATED_MACRO____WILL_EXPAND_TO_OLD_OR_NEW_SYMBOL], # [[include directives] # [except #include ] # [necessary to compile with old_octave_symbol]], # [[include directives] # [except #include ] # [nessary to compile with new_octave_symbol] # [and to compile the test]] # ], # # ... further such lists as the above # # ], # # [name-of-header-file-for-alternative-octave-iclude-directives.h]) # # # This file should be put into src/m4/, and the line # # AC_CONFIG_MACRO_DIRS([m4]) # # should be put into src/configure.ac. The package should use # autoheader to generate config.h.in (src/bootstrap should contain the # lines 'aclocal', 'autoconf', and 'autoheader -f'). Package code # should include config.h and use the generated macros to access the # alternative symbols of Octave. An example of a call to # OF_OCTAVE_LIST_ALT_SYMS in src/configure.ac is available together # with this file. AC_DEFUN([OF_OCTAVE_LIST_ALT_SYMS], [ echo '/* generated by configure */' > $2 m4_foreach([it], [$1], [m4_apply([OF_OCTAVE_ALT_SYMS], [it, $2])]) AH_BOTTOM([#include "$2"]) ]) netcdf-1.0.18/src/netcdf_constants.awk0000644000000000000000000000436014674554453014650 0ustar00# Copyright (C) 2013-2022 Alexander Barth # # 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 . # Generate the list of NetCDF constants based on the header file netcdf.h BEGIN { print "// generated by netcdf_constants.awk"; } /#define[ \t]+NC_[0-9a-zA-Z_]*[ \t]+/ { constant=$2; ov = constant; # NC_INDEPENDENT and NC_COLLECTIVE are no longer defined # in netcdf 4.3.1 if ($0 ~ /.*internally.*/ || \ constant == "NC_TURN_OFF_LOGGING" || \ constant == "NC_INDEPENDENT" || \ constant == "NC_COLLECTIVE" \ ) { next; } if (constant ~ /NC_.*_BYTE/) { ov = "octave_int8(" constant ")"; } else if (constant ~ /NC_.*_UBYTE/) { ov = "octave_uint8(" constant ")"; } else if (constant ~ /NC_.*_SHORT/) { ov = "octave_int16(" constant ")"; } else if (constant ~ /NC_.*_USHORT/) { ov = "octave_uint16(" constant ")"; } else if (constant ~ /NC_.*_INT/) { ov = "octave_int32(" constant ")"; } else if (constant ~ /NC_.*_UINT/) { ov = "octave_uint32(" constant ")"; } else if (constant ~ /NC_.*_INT64/) { ov = "octave_int64(" constant ")"; } else if (constant ~ /NC_.*_UINT64/) { ov = "octave_uint64(" constant ")"; } else if (constant ~ /NC_.*_CHAR/) { ov = "(char)" constant; } else if (constant ~ /NC_.*_STRING/) { ov = "std::string(" constant ")"; } else if (constant ~ /NC_.*_FLOAT/) { ov = "(float)" constant; } else if (constant ~ /NC_.*_STRING/) { ov = "(double)" constant; } printf " netcdf_constants[\"%s\"] = octave_value(%s);\n",constant,ov; } netcdf-1.0.18/src/undef-ah-octave.h0000644000000000000000000000070614674554453013724 0ustar00/* To be included at the top of config.h (by autoheader). Avoid warnings for redefining AH-generated preprocessor symbols of Octave. */ #ifdef PACKAGE_BUGREPORT #undef PACKAGE_BUGREPORT #endif #ifdef PACKAGE_NAME #undef PACKAGE_NAME #endif #ifdef PACKAGE_STRING #undef PACKAGE_STRING #endif #ifdef PACKAGE_TARNAME #undef PACKAGE_TARNAME #endif #ifdef PACKAGE_URL #undef PACKAGE_URL #endif #ifdef PACKAGE_VERSION #undef PACKAGE_VERSION #endif