pax_global_header00006660000000000000000000000064127471721710014523gustar00rootroot0000000000000052 comment=03c20660fadc399eb5bc22affd76335c553bc24e linbox-1.4.2/000077500000000000000000000000001274717217100130225ustar00rootroot00000000000000linbox-1.4.2/.gitignore000066400000000000000000000027451274717217100150220ustar00rootroot00000000000000**/Makefile **/Makefile.in **/*.log **/*.trs **/*.o **/*.la **/*.lo **/.libs tests/test-blas-matrix tests/test-charpoly tests/test-commentator tests/test-cra tests/test-det tests/test-frobenius tests/test-rank-Int tests/test-rank-md tests/test-rank-u32 tests/test-rational-solver tests/test-rational-solver-adaptive tests/test-smith-form-binary tests/test-solve tests/test-regression tests/test-block-wiedemann tests/test-cradomain tests/test-dyadic-to-rational tests/test-givaro-zpz tests/test-givaro-zpzuns tests/test-isposdef tests/test-ispossemidef tests/test-modular-balanced-double tests/test-modular-balanced-int tests/test-moore-penrose tests/test-rational-reconstruction-base tests/test-smith-form-kannan-bachem tests/test-solve-nonsingular INSTALL _configs.sed aclocal.m4 autogen.status autom4te.cache/ build-aux/ config.h config.h.in config.log config.status configure doc/Doxyfile doc/DoxyfileDev examples/charpoly examples/checksolve examples/det examples/dot-product examples/doubledet examples/echelon examples/graph-charpoly examples/grid_reduce examples/minpoly examples/omp_smithvalence examples/poweroftwo_ranks examples/rank examples/smith examples/smithvalence examples/solve examples/sparseelimdet examples/sparseelimrank examples/valence examples/benchmatpolymult examples/benchfft examples/polysmith benchmarks/benchmark-example libtool linbox-config linbox/config.h macros/libtool.m4 macros/ltoptions.m4 macros/ltsugar.m4 macros/ltversion.m4 macros/lt~obsolete.m4 stamp-h1 linbox.pclinbox-1.4.2/AUTHORS000066400000000000000000000010541274717217100140720ustar00rootroot00000000000000The Linbox team: Brice Boyer Jean-Guillaume Dumas Mark Giesbrecht Pascal Giorgi Bradford Hovinen Erich Kaltofen Romain Lebreton Clement Pernet Daniel Roche B. David Saunders Arne Storjohann William Turner Bastien Vialla Gilles Villard Zhendong Wan linbox-1.4.2/CHANGED-INTERFACES000066400000000000000000000047501274717217100154250ustar00rootroot00000000000000Author: Hovinen (early 2002), edits by Saunders (2003Jan) Class names: In general: Most class names now follow the Java/Smalltalk MyClass style. Abbreviations have been removed in most cases. Field::randIter -> Field::RandIter sparsemat* -> SparseMatrix* diagonal -> Diagonal hilbert -> Hilbert etc. There are two notable exceptions: The wrapper of GMP long integers is "integer", and field elements are represented by "element". ParamGivaro::Modular was first renamed LargeModular, since it works over a modulus of arbitrary size. Corresponding SmallGivaro::Modular (word size modulus) and TinyGivaro::Modular (half-word size modulus) were planned. All of this has become Givaro::Modular, for basic element types of the various sizes, including unsigned and floating types. For example Givaro::Modular. Class methods: In general: I have standardized everything on the Java studlycaps style, e.g. MyClass::myMethod The names Blackbox_archetype::applyin and Blackbox_archetype::applyTransposein have been changed to BlackboxArchetype::applyIn and BlackboxArchetype::applyTransposeIn, respectively. Header files: All header files that previously used '_' to separate words use '-' now as '-' is easier to type. More generally the header file named first-second-third.h can be expected to contain a declaration of class FirstSecondThird. The archetype header files have been moved into directories containing objects of those archetypes and are all now named "archetype.h", "abstract.h", and "envelope.h". Header files are now installed into a tree matching that of the source code as opposed to a single, flat directory. So, for example, one now includes LinBox/blackbox/archetype.h as opposed to LinBox/blackbox-archetype.h Miscellanae: In the random iterator interface, the operator () has been replaced by a function random accepting a single argument -- an element type into which the random element should be placed. This eliminates the potential for memory leaks. The blackbox container class now requires that a field be passed, as it no longer retrieves the field from the black box. Some terms composed of more than one word are considered to be compound words and do not have internal capitalization, e.g. Blackbox (vs. BlackBox) and minpoly (vs. minPoly). Frozen design: These files are frozen and require team consensus for changes. field-archetype.h blackbox-archetype.h element-archetype.h randiter-archetype.h linbox-1.4.2/COPYING000066400000000000000000000432541274717217100140650ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. 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 convey 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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. linbox-1.4.2/COPYING.LESSER000066400000000000000000000636421274717217100150640ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey 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 library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! linbox-1.4.2/ChangeLog000066400000000000000000006616101274717217100146060ustar00rootroot000000000000002016-07-30 cpernet v1.4.2 * cleanup and new features on polynomial matrices * many bug fixes ensuring support of gcc-4.8, 5.3, 6.1 clang-3.4 and icpc on i386, x86_64, ubuntu osx, fedora and ppcle 2016-02-24 cpernet v1.4.1 * update the build system (add pkgconfig file, and a more consistent way of dealing with dependencies) * fix all remaining issues for the integration in SageMath 2016-02-24 cpernet * move almost all finite fields to givaro * cleanup dead code * many bug fixes * change in some parts of the API * improved order basis computations 2011-03-10 briceboyer * Implement DublinBox Mother model for dense matrices (BlasM* own, BlasS* share) * Change BlasSubmatrix private members (and add one to make Iterators faster) * Change <> includes to "" so I have no surprise when the compiler looks them in a non expected place * add a const in Field Categories for a weird bug... * RawIterators are renamed to Iterators (impossible to pronounce, easy to misspell) * add functions to blas-domain and blas-matrix 2011-24-09 briceboyer * replace DenseMatrix(Base) by Blas(Matrix/Blackbox) * put these classes (and DenseSubmatrix) in a Protected namespace (users will be warned...) * update Blas(Mat/Bb) interface * clean DenseMatrix(Base) from LinBox * Delete BlasTag (use LinBoxTag class instead, avoids branching) * Update to Givaro gcd new clean intefarce * Update to one/zero in (some) Fflas-Ffpack fields * Rename Flaflas to more serious FFLAS-FFPACK * Minor updates in some classes. * martin albretch patch to update linbox-sage.h * M4RI checks * Ekopath (pathscale) checks 2011-05-11 briceboyer linbox-1.2.0 released: * Many many bug fixes, many memleaks, much code beautify. * Licence/copyright added to (hopefully) every file. * Vi/emacs magic lines for auto-indentation. * Some documentation added + improved Doxygen framework (dev/user documentation, more *.doxy items, bug/todo list, bibliography list) * Upgrade to givaro 3.4.0 series ( new namespace, new API for integer operations, a few new functions (naturallog...) ) * Upgrade to fflas-ffpack 1.4.0 (new namespace, new includes) * Some initial work introduced here and there (matrix permutation representations, symbolic/numeric solver, sparse matrix representation...) * CRA algorithms reworked and tested, some added. * Timer moved to Givaro * Some debug/util moved to FflasFfpack * Better configure.ac/Makefiles (more options, icc/gcc customisation,...) * More m4 rules * Possibility to use IML functions as a shared library (and some examples given) * 'make fullcheck' checks all possible tests given and reports * Auto-installer from sources/svn with plenty of options * Some new field functions like characteristic() * Work on synchronising field member functions signatures for better compatibility between all fields (in progress) 2010-11-03 cpernet linbox-1.1.7 released: * bug fixes and minor enhancements * New interface to sage (supporting native floating point representation) * new rebind interface * incorporate the code for computations over the rationals (by A Ubranska), still waiting to be cleaned-up (it is not used yet by default) 2008-09-22 cpernet linbox-1.1.6 released: * compilation pb, and bug fixes, for cygwin support and debianization 2008-06-10 cpernet * Upgrade fflas-ffpack to v1.3.3 (safer and tighter bounds, bug fixes,...) * Design changes for balanced finite field implementations * Improve efficiency of Chinese Remainder Algorithm * Add new interface to Sage * bugs and documentation fixes * remove gmp++ from LinBox, and thus make Givaro a necessary package 2008_03-02 cpernet linbox-1.1.5 released: * drivers are back to the source code, * shared libraries are enabled by default. * new code in fflas-ffpack for rank profiles * new double-determinant algorithm * changed the rawIndexedIterator interface, fixing the broken previous one. * many minor fixes, mostly memleaks. 2007-10-27 cpernet linbox-1.1.4 has been released including the following most important changes: * lots of memory leaks fixed * better compliance with BLAS * increased system solver functionalities (rectangular, rank deficient matrices) * support for g++/gcc v4.2 2007-09-28 cpernet * Add support for more general dense system solving: The system can be rectangular (over/underdetermined), singular. 2007-09-07 bds * This changelog is being widely ignored. Today buildbot test is on. 2007-01-31 bds * This entry is just to record that version 1.1.0 has been released by Jean-Guillaume Dumas and the current svn version is just a couple of steps from the release version. 2006-08-08 bds * examples/det.C, solutions/det.h, methods.h modified in preparation for * mpi based paralle cra loop in algorithms/cra-domain.h (by Bryan Youse). * also a stub of util/mpicpp.h added (will become the mpi interface). 2006-07-27 Hui Wang and bds * Add blackbox/quad-matrix.h which defines the ZOQuad matrix, * which is a cache efficient {0,1}-matrix rep. * Add it's tests, modify also blackbox/zo.h, * and accumulate-special in field/modular.h to better support sums of field elements efficiently. 2006-06-01 bds * rank.h adjusted to work around faulty PIVOT_LINEAR code in sparse elim. * test-rank.C now tests blackbox, elimination, hybrid methods as well as... 2006-04-18 bds and Hui Wang * examples/smith.C minor changes * linbox/blackbox/apply.h - don't recall what we did to wreck this. * linbox/blackbox/archetype.h linbox/blackbox/scalar-matrix.h linbox/blackbox/zero-one.h linbox/randiter/modular.h linbox/vector/stream.h tests/Makefile.am tests/Matio.h - minor touches * cvs thinks we changed just about everything in tests, but diff shows no change. We're checking in anyway * Where are our added files blackbox/zo.h zo.inl quad-matrix.h ? - which are a new version of zero-one and a block decomposed sparse matrix, resp. 2006-01-20 bds and Hui Wang * linbox/algorithms/gauss.inl - we think we made it better but it still isn't working :-) 2005-12-13 Pascal Giorgi * linbox/algorithms/Makefile.am: add new files * linbox/algorithms/lifting-container.h: minor change * linbox/algorithms/matpoly-mult.h: adding FFT and Karatsuba based polynomial matrix multiplication and middle product * linbox/algorithms/rational-reconstruction.h: use macro to enable timing * linbox/algorithms/rational-solver.h: minor change * linbox/algorithms/rational-solver.inl: minor chane * linbox/algorithms/short-vector.h: work in progress for ternary lattice reduction * linbox/algorithms/sigma-basis.h: add muti sigma basis computation and special Pade solver. * linbox/blackbox/block-hankel-inverse.h: enable use of new special Pade solver * linbox/blackbox/block-hankel.h: use macro to enable timing * linbox/randiter/{Makefile.am,random-fftprime.h}: add fftprime generator 2005-12-8 bds * minor cleanups 2005-11-17 Pascal Giorgi: * macros/blas-check.m4: adding new support for blas libraries * macros/linbox-opt.m4: adding new support for blas libraries * macros/linbox-misc.m4: adding new support for blas libraries * linbox/config-blas.h: linbox headers for BLAS * linbox/Makefile.am: add new BLAS support * linbox/fflas/Makefile.am: remove dependencies to ATLAS * linbox/fflas/fflas.h: add new BLAS support * linbox/ffpack.Makefile.am: remove dependencies to ATLAS * configure.in: remove ATLAS checking and replace with BLAS checking * linbox-config.in: remove ATLAS libs and replace with BLAS libs * tests/Makefile.am: remove ATLAS dependencies 2005-10-26 Pascal Giorgi: * linbox/algorithms/Makefile.am: add sigma-basis.h file * linbox/algorithms/sigma-basis.h: make sigma basis algorithm available * linbox/algorithms/blackbox-block-container.h: add support for special structured block * linbox/algorithms/blas-domain.h: fix bug * linbox/algorithms/lifting-container.h: add support for sparse solver using a Block Hankel inverse * linbox/algorithms/rational-solver.h(.inl): add new algorithm for solving sparse system * linbox/blackbox/Makefile.am: add block-hankel.h. block-toeplitz.h and block-hankel-inverse.h * linbox/blackbox/apply.h: fix optimization compatibility * linbox/blackbox/block-hankel.h : add a blackbox for block Hankel matrices * linbox/blackbox/block-hankel-inverse.h: add blackbox to compute the inverse of a block Hankel blackbox * linbox/blackbox/block-toeplitz.h: add a blackbox for block Toeplitz matrices * linbox/element/gmp-rational.h: fix this stupid bug using signed long integer to convert rational !!! * linbox/field/hom.h: add support for PID_integer homomorphism * linbox/ring/givaro-polynomial.h: fix bug * linbox/solutions/det.h: add handler for rational domain * linbox/solutions/charpoly.h: add handler for rational domain * linbox/solutions/minpoly.h: add handler for rational domain and hybrid method for blas blackbox * linbox/solutions/rank.h: add handler for rational domain * linbox/solutions/solve.h: add handler for rational domain and fix indentation * linbox/solutions/methods.h: fix indentation and add block hankel method 2005-09-01 Dan Roche * linbox/algorithms/toeplitz-det.h: Forgot to add this before. 2005-08-31 Pascal Giorgi: * linbox/algorithms/blas-domain.inl: add inverse specialization for multimod double domain * linbox/algorithms/cia.h: call domain specialized minpoly instead of calling API and make code generic according to integer ring * linbox/algorithms/lifting-container.h: support for multimod double domain * linbox/algorithms/matrix-hom.h: support for multimod double domain * linbox/algorithms/matrix-inverse.h: support for multimod double domain * linbox/algorithms/rational-solver.inl: support for multimod double domain * linbox/blackbox/apply.h: support for multimod double domain and new optimization * linbox/blackbox/blas-blackbox.h: support for multimod double domain, add construction from MatrixReader and finalize apply function * linbox/blackbox/submatrix.h: fixed indent style problem * linbox/ffpack/ffpack.h: fix memory leak problem * linbox/field/modular-double.h: add support for multimod double domain * linbox/field/ntl-ZZ.h: fix indent style problem * linbox/field/ntl-ZZ_p.h: set FieldTraits categoryTag * linbox/matrix/blas-matrix.h: add constructor from MatrixStream * linbox/matrix/dense-submatrix.h: add constructor from non const MatrixDenseBase * linbox/matrix/dense-submatrix.inl: add constructor from non const MatrixDenseBase, fix bug in ConstRawIterator operator++(int) * linbox/matrix/transpose.h: make the reference to the matrix to be non const * linbox/ring/givaro-polynomial.h: add support for PID-integer and NTL-ZZ domain * linbox/solutions/charpoly.h: throw an exception if matrix are not square * linbox/solutions/det.h: fix indentation and throw an exception if matrix are not square * linbox/solutions/minpoly.h: fix indentation, throw an exception if matrix are not square and make minpoly over the integer generic * linbox/solutions/rank.h: fix indentation * linbox/solutions/smith-form.h" fix indentation * linbox/util/debug.h: allow the PreconditionFailed to be a real LinBox exception 2005-08-19 Z. Wan * linbox/element/gmp-rational.h Fixed the error which occurs duing conversion between gmp integer and gmp rational 2005-08-18 Dan Roche * Added functionality for computing the determinant of a toeplitz matrix * Added field/ntl-ZZ_pX.h and field/ntl-lzz_pX.h, rings over the respective NTL polynomial types * Added functions pow and powin to field/ntl-ZZ_p.h and field/ntl-lzz_p.h (could be added to all fields) * Added blackbox/toeplitz.h and blackbox/toeplitz.inl, very similar to the existing Toeplitz blackbox class, but generalized to use any polynomial ring. Didn't delete the old blackbox/ntl-toeplitz.h, inl so old code doesn't break * Added tests/test-toeplitz-det.C to test all this * Modified tests/test-ntl-toeplitz.C to use the new Toeplitz class 2005-08-1 bds * numerous doc tweaks 2005-07-15 bds and zw * Now modular-balance-int.h and modular-int32.h define different classes. * Modular-int had been replaced by modular-int32. * Modular-int is now deprecated. * Added randiter/modular-balance.h 2005-07-13 bds and zw * solutions/solve.h call block-lanczos in bbsolve when cardinality small * algorithms/bbsolve.h call mg-block-lanczos * algorithms/mg-block-lanczos commentating number of trials. 2005-07-13 Bradford Hovinen * linbox/solutions/solve.h: Cast A.coldim () to double before calling log (solve): Initialize status * linbox/algorithms/rational-solver.inl: Use std::max * linbox/blackbox/apply.h: Move #include ntl-ZZ.h into #ifdef __LINBOX_HAVE_NTL * examples/solve.C: Add using namespace std 2005-07-13 bds and zw * tests/Makefile.am move test-la-block-lanczos to failing tests list * test-la-block-lanczos use case n = 10 to show problem * test-mg-block-lanczos restore maxtries to default, comment out nullspace test which has memory probs. * test-solve change default blocking factor to 16 2005-07-13 Bradford Hovinen * tests/Makefile.am (NTL_TESTS): Moved test-rational-solver, test-rational-solver-adaptive, test-smith-form-binary, test-last-invariant-factor here because they depend on NTL (GIVARO_TESTS): Moved test-ffpack, test-blas-domain, test-givaro-zpz here because they depend on Givaro * tests/Makefile.am (NTL_TESTS): Fix definition so that automake does not complain 2005-07-13 Pascal Giorgi fix and remove NTL dependencies - remove NTL dependecies: use of PID_integer * tests/test-last-invariant-factor.C * tests/test-rational-solver.C * tests/test-rational-solver-adaptive.C * tests/test-smith-form-binary.C - fix NTL dependencies: by use of __LINBOX_HAVE_NTL preprocessing * tests/test-smith-form.C * tests/test-smith-form-iliopoulos.C * tests/test-smith-form-local.C * tests/test-smith-form-adaptive.C * linbox/field/hom.h: specialization for NTL * linbox/algorithms/smith-form-adaptative.h - linbox/ring/givaro-polynomial.h: to be done by Jean-Guillaume and Clement 2005-07-12 Pascal Giorgi * linbox/matrix/factorized.inl: add support for singular system solving (inconsistent system is defined by the zero solution) fix also bug in nonsingular solving 2005-07-11 Pascal Giorgi (authorized by dictator Dumas)) * linbox/solutions/solve.h: change the interface for integer systems Make the solver interface working with Wiedemann method, Lanczos method * linbox/algorithms/solve.h: add support for Lanczos method * linbox/algorithms/bbsolve.h: fix compilation error * linbox/algorithms/wiedemann.h: fix compilation error * linbox/algorithmd/wiedemann.inl: fix compilation error * linbox/algorithms/lanczos.h: fix compilation error * linbox/algorithmd/lanczos.inl: fix compilation error 2005-07-07 Dan Roche * linbox/blackbox/sparse.h * linbox/blackbox/dense.h * linbox/matrix/sparse.h: Changed the RawIndexedIterator code so that dereferencing returns a reference to the value (same as RawIterator) * linbox/blackbox/lambda-sparse.h * tests/test-matrix-stream.C * linbox/algorithms/matrix-hom.h: Updated the code here to reflect change above 2005-07-07 Dan Roche * linbox/matrix/sparse.h: Went through and fixed more iterator problems that could be causing segfaults. 2005-07-06 bds and zw * linbox/solutions/is-positive-definite.h, is-positive-semidefinite.h, added functions isPositiveDefinite and isPositiveSemiDefinite. * linbox/tests/test-isposdef.C, test-ispossemidef.C, Makefile.am, added tests for them. * linbox/field/hom.h, linbox/algorithms/signature.h, minor tweaks. * linbox/algorithms/algorithms.doxy, docs related 2005-07-06 Dan Roche * examples/rank.C * examples/det.C: Modified these to use MatrixStream and thereby support multiple file formats. * linbox/matrix/sparse.h * linbox/matrix/sparse.inl: Fixed some problems with the iterators: seg faults were caused by poor handling of empty rows. * linbox/util/matrix-stream.inl: minor clean-ups 2005-07-4 Pascal Giorgi * linbox/blackbox/Makefile.am: add polynomial.h * linbox/blackbox/apply.h: add optimization * linbox/blackbox/blas-blackbox.h: add the use of BLAS asap * linbox/solutions/methods.h: extend dixon method * linbox/solutions/solve.h: add rational-solver and diophantine-solver support for BlasElimination method (need to fix denominator output). also add support for BlasElimination over finite field (not fully implemented) * linbox/algorithms/rational-reconstruction.h: define early termination according to threshold (0 means no early termination, x > 0 means early termination with checking each x steps) 2005-07-01 Pascal Giorgi * configure.in: add linbox/util/formats/Makefile.am support * add linbox/util/formats/Makefile.am file * linbox/util/Makefile.am: fixe comment problem 2005-07-01 Dan Roche * linbox/blackbox/dense.h * linbox/matrix/dense.inl * linbox/matrix/dense.h: Added Constructors from a matrix-stream * linbox/blackbox/sparse.h * linbox/blackbox/sparse.inl * linbox/matrix/sparse.h: Added Constructors from a matrix-stream Changed to use size_t for indexing rather than ints: * linbox/util/matrix-stream.h * linbox/util/matrix-stream.inl * linbox/util/formats/generic-dense.h * linbox/util/formats/maple-dense1.h * linbox/util/formats/maple-sparse1.h * linbox/util/formats/matrix-market.h * linbox/util/formats/sms.h * linbox/util/formats/sparse-row.h * tests/test-matrix-stream.C: Included sparse and dense blackbox matrix constructors in testing * tests/data/sms.matrix: Fixed a formatting error 2005-07-01 W. J. Turner * linbox/until/commentator.C: removed using namespace std directive 2005-06-30 Pascal Giorgi resolve symbol error in libutil.a (commentator.o needed timer.o) * linbox/util/commetator.C: include timer.C * linbox/util/Makefile.am: remove timer.c from libutil.a source (included through commentator) 2005-06-29 W. J. Turner Removed using declarations within several classes and replaced with this->... to preserve backwards compatability and allow compilation with gcc 3.4 and newer: * linbox/algorithms/blackbox-block-container.h * linbox/algorithms/blackbox-container-symmetric.h * linbox/algorithms/blackbox-container-symmetrize.h * linbox/algorithms/blackbox-container.h * linbox/algorithms/lifting-container.h * linbox/blackbox/frobenius.h * linbox/blackbox/lambda-sparse.h * linbox/blackbox/ntl-hankel.{h,inl} * linbox/blackbox/submatrix.h * linbox/field/givaro-zpz.h * linbox/matrix/blas-matrix.h * linbox/util/formats/generic-dense.h * linbox/util/formats/maple-dense1.h * linbox/util/formats/maple-sparse1.h * linbox/util/formats/matrix-market.h * linbox/util/formats/sms.h * linbox/util/formats/sparse-row.h 2005-06-27 W. J. Turner * linbox/ffpack/ffpack_charpoly_kgfast.inl: removed using namespace std directive * linbox/*/lidia-gfq.h: removed using namespace LiDIA directives * linbox/vector/sparse.h: removed using namespace LinBox directive * linbox/util/formats/*.h: removed using declarations * linbox/util/*.h: removed using declarations * linbox/util/xml/*.h: removed using declarations 2005-06-25 Bradford Hovinen * tests/test-mg-block-lanczos.C (testRandomSolve, testSampleNullspace): Use preconditioner SYMMETRIZE (main): Use more sensible defaults * examples/dot-product.C (main): Declare v1 and v2 to be of length n (fixes segfault) 2005-06-24 W. J. Turner * linbox/blackbox/*: removed using declarations and directives * linbox/field/*.h: removed using declarations and directives * linbox/field/ntl-lzz_pE.h: added explicit call to namespace in NTL::BuildIrred_zz_pX * linbox/field/ntl-GF2E.h: added explicit call to namespace in NTL::BuildSparseIrred_GF2X * linbox/randiter/*.h: removed using declarations 2005-06-17 Pascal Giorgi * /linbox/field/PID-integer.h: add sqrt function and homomorphism support * /linbox/field/hom.h: identation fixed * /example/solver/t-rdisove.C: comment givaro.h to fix compilation errors 2005-06-16 Pascal Giorgi * /linbox/blackbox/apply.h: add blas-blackbox compatibility * /linbox/blackbox/blas-blackbox.h: modify constructor and add category support * /linbox/matrix/blas-matrix.h: new creator and add category support * /linbox/matrix/matrix-category.h: move MatrixCategory from blas-matrix.h * /linbox/algorithms/blas-domain.h: fancy indentation * /linbox/algorithms/blas-domain.inl: add support for BlasBlackbox * /linbox/algorithms/matrix-hom.h: add support for BlasBlackbox * /linbox/algorithms/rational-solver.inl: use of MatrixHom and BlasBlackbox instead of MatrixMod and BlasMatrix 2005-06-15 Pascal Giorgi * /linbox/blackbox/apply.h : compatiblity with 64bits architecture 2005-06-14 Pascal Giorgi * /doc directory: modification to documentation (linbox.html become central) * macros/linbox-doc.m4: new documentation checking (use of Doxygen) * configure.in: take into consideration new doc checking 2005-06-10 bds methods.h working for det.h in good form - other solutions may be broken: Can consider det.h a good model for solutions funs now. 2005-06-07 Z. Wan * linbox/blackbox/matrix-blackbox.h, linbox/matrix/dense.h, sparse.h, added reind to DenseMatrixBase and SparseMatrixBase. 2005-05-02 Pascal Giorgi * configure.in , macros/linbox-opt.m4 : add optimization process during linbox configuration * linbox/fflas/fflas.h : allow the use of optimized Winograd threshold 2005-04-26 -bds * Name changes *ntl-zz* --> *ntl-lzz* to avoid clashes with ZZ in case insensitive situations. * Also change test*.cpp to test*.C for consistency 2005-03-32 Pascal Giorgi * linbox/fflas/fflas_fgemm.inl: fix compilation error with WinoMain function call * linbox/algorithms/Makefile.am, rational-solver.h,.inl: set default prime size to 20 bits and make number of prime to try as a user parameter in function solve * tests/Makefile.am, test-rational-solver.C : retrieve rational solver test (make commentator progress worrking) 2005-03-30 bds * removed xml read/write code in numerous places * misc small stuff (I forgot what I may have changed, to tell the truth!) 2005-03-17 PG and ZW * linbox/algorithms/cra.h, cra-det-integer.h, minpoly-integer.h, Makefile.am, added functionalities for integer cases using modular arithmetic and CRA * linbox/solutions/det.h, minpoly.h, rank.h, unified the interface, added blas elimination for det and rank 2005-03-15 bds *tests/test-rank.C linbox/solutions/rank.h methods.h Introduce rank by blas-elimination, together with check for too small prime in wiedemann rank. 2005-02-17 Zhendong Wan (wan@cis.udel.edu) *linbox/algorithms/rational-reconstruction.h, implemented the fast early termination techniques, which was described in a preprint paper submitted to ISSAC'05. 2005-02-16 Zhendong Wan (wan@cis.udel.edu) *linbox/algorithms/rational-solver.h, rational-solver.inl, rational-solver-adaptive.h, Merged rational solver using numerical methods with others 2005-02-14 Clement Pernet (Clement.Pernet@imag.fr) * Improvements to FFLAS::fgemm routine: Winograd's fast matrix multiplication is now working for any operation of the type C<-alpha.A*B + beta.C * Dynamic pealing is now generic wrt the field * The recursive block algorithm is now working over the field if the BLAS condition is not met 2005-02-07 Clement Pernet (Clement.Pernet@imag.fr) * Change the name fflapack -> ffpack * bug fixes in blackbox-block-container.h * compilation failure of test-rational-solver due to "assert" in rational-solver.h should be fixed * compilation failuer in test-matrix-stream due to 888888888888888 being to big should be fixed 2005-02-04 Zhendong Wan (wan@cis.udel.edu) *Add linbox/solutions/cra.h, minpoly-integer.h, add codes to compute the minpoly of an integer matrix. *Modify linbox/test-minpoly.C, add test for minpoly of an integer matrix. *Modify linbox/solutions/minpoly.h, it can hanle integer case. ** linbox/solutions/cra.h and linbox/algorithms/cra.h should merge in future ** minpoly-integer.h and minpoly.h should merge, and support blas in future 2005-02-03 Zhendong Wan (wan@cis.udel.edu) *linbox/field/PID-double.h, PID-integer.h, PIR-modular-int.h, PIR-modular-int32.h, PIR-ntl-ZZ_p.h, double-fmod.h, field-traits.h gf2.h, givaro-gfq.h, givaro-montg.h, givaro-rational.h, givaro-zpz.h, gmp-integers.h, gmp-rational.h, lidia-gfq.h local2_32.h, modular-balance-int.h, modular-balance-int32.h, modular-byte.h, modular-double.h, modular-int.h, modular-int32.h, modular-short.h, modular.h, ntl-GF2E.h ntl-RR.h, ntl-ZZ.h, ntl-ZZ_p.h, ntl-ZZ_pE.h, ntl-pid-zz_p.h, ntl-zz_p.h, ntl-zz_pE.h, param-fuzzy.h, unparametric.h, added information in field traits in order to classify all rings. 2005-03 Zhendong Wan (wan@cis.udel.edu) *linbox/algorithms/matrix-mod.h, change class MatrixMod to namespace, so that some special mod functions can be addaed *linbox/algorithms/rational-reconstruction.h, rational-solver.inl, fixed compiling complaints 2005-01-28 Dan Roche * examples/linbox-program.C - various fixes * field/unparametric.h - was casting to long and then to integer - fixed * field/hom.h - added mapping from UnparametricField to Modular * util/matrix-stream.h Provides a new, generic way of reading matrices in multiple formats. * util/formats New directory for matrix-stream format specifications * util/formats/matrix-stream-readers.h Place to include all the different format specification files: * util/formats/generic-dense.h * util/formats/maple-dense1.h * util/formats/maple-sparse1.h * util/formats/matrix-market.h * util/formats/matrix-stream-readers.h * util/formats/sms.h * randiter/gmp-random-prime.h Generates random numbers up to a given size * tests/test-matrix-stream.C Tests to see if matrix-stream is working * Sample matrices used by test-matrix-stream: * tests/data/generic-dense.matrix * tests/data/maple-dense1.matrix * tests/data/maple-sparse1.matrix * tests/data/matrix-market-array.matrix * tests/data/matrix-market-coordinate.matrix * tests/data/sms.matrix * tests/data/sparse-row.matrix 2005-01-07 ZW * linbox/field/gmp-integers.h, fixed init * linbox/field/modular-double.h, implemented a fast init 2004-12-03 bds * matrix/sparse.h .inl - add reading of Magma Compact form * vector/vector-domain.h .inl - can't read into const vectors, so rm 'const 2004-10-08 bds * examples/blackbox/Makefile.am smith.C - minor * field/field-traits.h givaro-gfq.h ntl-GF2E.h - put in maxmodulus * doc/Doxyfile mainpage - minor doc changes 2004-09-30 Pascal Giorgi * linbox/algorithms/lifting-container.h: take modification of MatrixApplyDomain setup function * linbox/algorithms/rational-solver.inl: use of BlasMatrix instead of BlasBlackbox * linbox/algorithms/rational-reconstruction.h: add lifting commentator progress in getRational3 function * linbox/blackbox/apply.h: redefine MatrixApplyDomain s.t. specialization for dense storage is easier * linbox/matrix/dense.inl: make reading with sparse format work and fix bug in writing over domain with non positive cardinality 2004-09-21 Pascal Giorgi * linbox/algorithms/Makefile.am: Add headers for (rationnal-solver.inl, diophantine-solver.inl, vector-fraction.h) * linbox/algorithms/blackbox-block-container-base.h: Use BlasDomain and BlasMatrix * linbox/algorithms/blackbox-block-container.h: Make BlackboxBlockContainerRecord class (handling precomputed sequence and row-colum updating) * linbox/algorithms/block-massey-domain.h: Compute generating matrix polynomial using Sigma Basis through algorithm of GJV-ISSAC'03 * linbox/algorithms/block-wiedemann.h: Add block Wiedemann solver * linbox/algorithms/lifting-container.h: Add specialisation for Block Wiedemann method and clean optimizations * linbox/algorithms/rational-solver.h: Add specialisation for Block Wiedemann method * linbox/algorithms/rational-solver.inl: Add specialisation for Block Wiedemann method * linbox/blackbox/Makefile.am: Add headers for lambda-sparse.h and blas-blackbox.h * linbox/blackbox/apply.h: Put optimizations on matrix-vector product - moved from lifting-container * linbox/fflas/fflas_fgemm.inl: Fix bug on Winomain function * linbox/fflas/fflas_ftrsm.inl: Fix bug on normalisation before BLAS call * linbox/field/Makefile.am: Add ntl-GF2E.h header * linbox/field/ntl-GF2E.h: Add wrapper for GF(2^n) of NTL library * linbox/field/modular-double.h: Improve DotProductDomain specialization * linbox/field/ntl.h: Add ntl-GF2E.h header * linbox/matrix/blas-matrix.h: Take into account modifications of dense-submatrix * linbox/matrix/dense-submatrix.h: Use pointer instead of reference * linbox/matrix/dense-submatrix.inl: Use pointer instead of reference * linbox/matrix/factorized-matrix.inl: Fix the extractions of L, U and S * linbox/solutions/methods.h: Add BlockWiedemann method * linbox/util/gmp++/Makefile.am: Remove gmp++_int.c ( redudant for compilation) 2004-09-02 Bradford Hovinen * linbox/algorithms/la-block-lanczos.h (class LABlockLanczosSolver): Add _iter, _total_dim, _rank * linbox/algorithms/la-block-lanczos.inl (cleanup): Update _rank (rank): Implement * linbox/blackbox/diagonal.h (class Diagonal): Compilation fix * linbox/blackbox/dense.h (class DenseMatrix): Make _AT use DenseMatrix, not DenseMatrixBase * tests/test-la-block-lanczos.C (main): * tests/test-mg-block-lanczos.C (main): Use better defaults * linbox/algorithms/la-block-lanczos.inl (solve, sampleNullspace): Clear history when done * tests/Makefile.am (BASIC_TESTS): Add test-mg-block-lanczos * linbox/algorithms/la-block-lanczos.h (class LABlockLanczosSolver::InnerProductArray): Add reset * linbox/algorithms/la-block-lanczos.inl (iterate): Reset uAv * linbox/algorithms/Makefile.am (pkgincludesub_HEADERS): Add eliminator.{h|inl} * tests/Makefile.am (BASIC_TESTS): Add test-la-block-lanczos * linbox/algorithms/Makefile.am (pkgincludesub_HEADERS): Add la-block-lanczos.{h|inl}, mg-block-lanczos.{h|inl}; remove block-lanczos.{h|inl} 2004-09-01 bds * solutions/minpoly.h tests/test-minpoly.C: add minpolySymmetrize 2004-09-01 bds wan zw * linbox/algorithms/rational-solver-adaptive.h, adaptive solve 2004-08-30 bds and zw * linbox/algorithms/one-invariant-factor.h, smith-form-adaptive.inl, make bonus works 2004-08-30 bds and zw * linbox/algorithms/smith-form-adaptive.h, inl. Implementation of an adaptive algorithm for Smith form 2004-08-30 bds * linbox/randiter/mersenne-twister.h linbox/util/commentator.h linbox/util/gmp++/gmp++_int_misc.C tests/Makefile.am tests/test-common.C: LinBoxSrcOnly flag also used in tests/ now (to avoid incompatibility with use in examples/) 2004-08-30 bds * examples/ex-integers.C examples/Makefile.am linbox/util/gmp++/Makefile.am: Turn on LinBoxSrcOnly flag for examples compilations so that user does not confront load-library problems. * doc/Makefile.am examples/Matio.h linbox/integer.h linbox/blackbox/*.h etc.: switch documentation system to doxygen. (it still needs plenty of work) * add .doxy files (replacing .dxx files) to doc system * examples/blackbox/smith.C and smithbig.C: smith form examples. 2004-08-28 Pascal Giorgi * examples/solver/t-rdisolve.C: add sparse matrix format for file and make seed to work * linbox/algorithms/diophantine-solver{.h,.inl}: adding parameters information of solving * linbox/algorithms/rational-reconstruction.h: clear bugs in timings 2004-08-26 Z. Wan * linbox/algoriths/last-invariant-factor.h, implement the bonus idea \ref{....} 2004-08-26 Pascal Giorgi * examples/fields/ex-fields-archetype.C : put std namespace * examples/run/run.C : put std namespace * examples/solver/Makefile.am : change order of libs for compilation * examples/solver/t-rdisolve.C : change to use the new design of rational solver * gmp++/gmp++_int.h : Added new function to get the size of integer in base B and base 2 * gmp++/gmp++_int.inl : Added implementation of bitsize() and size_in_base( int base) functions * linbox/algorithms * diophantine-solver.h : use new design of rationnal solver * diophantine-solver.inl : use new design of rationnal solver ( disabling conversion for VectorFraction) * lifting-container.h : Added fast apply over ring when entries of the matrix are small enough ( say less than 2^16) * rational-reconstruction.h : Added direct method for reconstruction, added switch between early termination and direct method * rational-solver.inl : Added blas optimization for preconditionning matrices in random solution solver * linbox/fflapack/fflapack.h : Maked triangular inverse available * linbox/field/PID-double.h : Added abs and compare functions, + indentation * linbox/field/PID-integer.h : Added abs and compare functions, + indentation * linbox/matrix/dense.inl : problem with resizing in read function, leave code as it was but add the older version as comment 2004-08-24 Z. Wan (wan@cis.udel.edu) * change ith-invariant-factor.h to one-invariant-factor.h * Change the implementation of the alogrithm for oneinvariantfactor, use the enhanced algorithm in ISSSAC'04 papre by bds and ZW 2004-08-24 Z. Wan (wan@cis.udel.edu) *linbox/algorithms/rational-solver.h, inl, rational-reconstruction.h, linbox/tests/test-rational-solver.C, change the format of the rational solution a vector of rationals ====> (a vector of the numerator, the common denominator). 2004-08-19 Z. Wan (wan@cis.udel.edu) * linbox/algorithms/rational-reconstruction.h, implement the V. Pan's idea for final reconstruction step. * linbox/field/ntl-ZZ.h, add abs and compare member function. 2004-08-19 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * gmp++/gmp++_int.inl - Added wrapper for mpz_import (convert word array to LinBox::Integer) * linbox/algorithms - Added timing to rational solving routines (#define RSTIMING in rational-solver.h) * diophantine-solver.h - made QSolver field into a reference type * diophantine-solver.inl - changed comments * lifting-container.inl - Added blas optimization for muliplication of large integer matrices in Dixon * rational-reconstruction.h - Changed getRational2 again so that early termination num/denbounds work * rational-solver.h - Added timing, reportTimes() * rational-solver.inl - Added timing * vector-fraction.h - Added comment, about how RandIter may have unrandom low-order bits * linbox/blackbox/apply.h - Removed bad overload of applyV * linbox/fflapack/fflapack.h - changed name of function to LQUPtoInverseOfFullRankMinor * linbox/field/modular-double.h - added constr. from long int, to avoid ambiguity warning when making t-rdisolve * linbox/matrix/dense.inl - attempted to fix problems with Const{Row/Col}Iterator operator++ (int) * linbox/matrix/factorized-matrix.h - added comment about how GetQ returns Qt * linbox/util/timer.C - added a count field to the timer (how many intervals does this timer measure) * linbox/util/timer.h - added a count, stopped small negative rounding errors from printing * gmp++/gmp++_int_cstor.C - added mpz_import function wrapper * tests/test-common.C - fixed reading of large integers * examples/solver/t-rdisolve.C - added flag to make some columns zero, made better random entries 2004-08-11 bds * examples/blackbox/smith.C illustrates iliopolous' and local methods * matrix/dense.inl read() now adjusts to new input size rather than complaining. Also read() accepts sparse file format. 2004-08-11 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * gmp++/gmp++_int.inl - Added nth root function declaration * linbox/algorithms * diophantine-solver.inl - minor changes * lifting-container.h - fixed reconstruction lifting bound * rational-reconstruction.h - added getRational2; will eventually be las-vegas style reconstructor - changed early termination so that 2*numbound*denbound is always less than modulus * rational-solver.inl - more updates, fixes. now only one LQUP is used to check consistency - added optimization wherein LQUP is used to compute a modular inverse more quickly * linbox/fflapack/fflapack.h - added InverseFromLQUP function; fixed invL bug * linbox/matrix/blas-matrix.h - moved indexDomain here (allows application of BlasPermutation to indices, using BlasMatrixDomain) * linbox/matrix/dense-submatrix.inl - minor fix * linbox/util/gmp++/gmp++_int_misc.C - added nth root function 2004-08-09 Dan Roche * gmp++/gmp++_int.inl: Add arithmetic function support for long long and unsigned long long * linbox/blackbox/dense.h,inl: Add hadamardBound method to DenseMatrixFactory * linbox/blackbox/sparse.h: Make hadamardBound return a reference to res, and avoid overflow in computing hadamardBound * linbox/solutions/det.h: little fixes 2004-08-09 Pascal Giorgi * /linbox/blackbox/sparse.h : Fix bugs in SparseMatrixFactory. it compiles right now * /linbox/util/gmp++/gmp++_int_io.C : avoid memory leaks in Integer2string function * /linbox/field/ntl-zz_pE.h : adding new wrapper for NTL algebraic extension of single precision prime field * /linbox/field/ntl-ZZ_pE.h : write a class to handle parametric field * /linbox/field/ntl.h, Makefile.am : adding new field ntl-zz_pE.h 2004-08-08 Dan Roche (roche@cis.udel.edu) * examples/linbox-program.C - now works for determinant also - except that someone recently broke solutions/det.h and blackbox/sparse.h * gmp++/gmp++_int.h, linbox/util/gmp++/gmp++_int_misc.C - added prevprime so that prime-stream.h works * linbox/integer.h - added an abs function here so it works for all types from int8 up to integer. * linbox/algorithms/cra.h - changed invmod to inv so that this compiles * linbox/blackbox/dense.h,.inl - added DenseBlackboxFactory class so I can use det.h to find determinant of a dense matrix over the integers. * linbox/solutions/det.h - NUM_BITS is determined from FieldTraits (linbox/field/field-traits.h) 2004-08-06 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * examples/solver/t-rdisolve.C - added use of 3 'solver levels' and check of certificate of inconsistency * linbox/algorithms * diophantine-solver.h - added use of 3 'solver levels', improved documentation * diophantine-solver.inl - added use of 3 solver levels * lifting-container.h - changed normblackbox to properly compute "norm" of composed boxes * rational-reconstruction.h - added getRational2 for solver use, hopefully will be las-vegas * rational-solver.h - added use of 3 solver levels, certifying of inconsistency, documentation * rational-solver.inl - added use of 3 solver levels, certifying inconsistency - combined 'solve' and 'getRandomSolution' to be both variants of 'solveMonolithic' * vector-fraction.h - simplified constructor * linbox/fflapack/fflapack_ludivine.inl - bugfix for LQUP of rectangular matrices (specifically M x 1 case) * linbox/field/unparametric.h - removed dumb comment * linbox/matrix/blas-matrix.h - added method extendTrivially to embed permutation in larger row/column size * linbox/tests/test-common.C - bugfix 2004-07-30 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * examples/solver/t-rdisolve.C - added diophantine checking+certification, more options - moved VectorFraction class to own file in algorithms - moved new command-line stuff into test-common.C (should be backwards-compatible) * linbox/algorithms * vector-fraction.h - added new file. for storing fractions like [n1 n2 n3 n4 ... ]/d - has various combination functions used by diophantine-solver * blas-domain.inl - fixed a broken linbox_check for vector-matrix product * diophantine-solver.h - diophantine checking, min-denom certification works now * diophantine-solver.inl - diophantine checking, min-denom certification works now * rational-solver.h - made SolverReturnStatus a global enum, preceded by SS_ * rational-solver.inl - added generation of a partial certificate to randomSolve - solveDeterministic is now fully Las Vegas * apply.h - added applyVTrans(vector, const matrix, vector) * linbox/fflas/fflas_fgemv.inl - fixed errors in transpose matrix product * linbox/matrix * blas-matrix.h - fixed flipped row/coldim in constructor * dense-submatrix.h - fixed typo, removed unimplemented operator[] * dense.h - removed debug output * transpose.h - replaced Column with Col * tests/test-common.h - example string can now be passed as null and intelligently generated by default * tests/test-common.C - boolean options can now be turned off like "-b false", "-b -", "-b N" - added a string to write all current switch options to an ostream * tests/test-rational-solver.C - updated to reflect new return type of rational solver 2004-07-26 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * linbox/algorithms * added diophantine-solver.{h,inl} (no diophantine functionality yet) * Makefile.am - added diophantine-solver.h * blas-domain.h - added forms of inv and invin that return the nullity of the matrix * blas-domain.inl - added forms of inv and invin that return the nullity of the matrix, fixed typo * last-invariant-factor.h - changed type of b vector from int to Integer * lifting-container.h - changed blackbox norm to square of 'induced norm', fixed lifting length calculation - added graceful failure to digit (eg if Ring is used improperly) * rational-reconstruction.h - added debug switch DEBUG_RR, graceful failure * matrix-rank.h - changed tabbing * rational-solver.h - many changes to Dixon; Wiedemann may not work - added DEFAULT_PRIMESIZE = 14 (since 30 bit default size would screw up some fields) - added maxPrimes argument to solving routines, will retry that many primes - added const modifier to solving routines, made _prime mutable * rational-solver.inl - many changes to Dixon; Wiedemann may not work - added debug switches, graceful failure for solving routines - changed BlasMatrixDomain routines to BlasApplyDomain to avoid erroneous calculations - in singular/random solve, check solution before returning, and multiply by conditioner P correctly - added consistency check to random solver * linbox/blackbox/blas-blackbox - added to CVS * linbox/blackbox/dense.h - matrix reading bugfix * linbox/fflapack/fflapack.h - pass nullity back in Invert2, and return NULL when matrix is singular * linbox/fflas/fflas_fgemv.inl - remove assumption that alpha=-1, beta=1 * linbox/fflas/fflas_ftrmm.inl - fixed computation of matrix size bound for embedding into FFLAS * linbox/field * PID-double.h - changed 'c=abs(c)' to 'if (c<0) c = -c', no abs found for double * PID-integer.h - changed documentation of isDivisor(a, b) (returns yes if b|a) * givaro-montg.h - fixed init from integer * givaro-zpz.h - fixed init from integer, double and Log16 specializations * givaro-gfq.h - fixed init from integer * modular.h - added init from double - added several specializations of Modular * modular-double.h - fixed operator<< * modular-int.h - fixed init/convert with double * modular-int32.h - fixed init/convert with double * ntl-ZZ.h - changed const to static for convert method - changed documentation of isDivisor(a, b) (returns yes if b|a) * ntl-ZZ_p.h - added init/convert from/to integer, double - put NTL_ZZ_p at top and specialization at bottom for compiler - changed random generator to give fuller range * ntl-zz_p.h - added init from double, integer * unparametric.h - added convert to double * linbox/matrix/dense-submatrix.h - added mapleFormat option to DenseSubmatrix writing * linbox/matrix/dense-submatrix.inl - added mapleFormat option to DenseSubmatrix writing * linbox/randiter/random-prime.h - the class now takes a 'bits' argument on construction and makes primes of that size * linbox/vector/vector-domain.inl - fixed reading bug * tests/Matio.h - added mapleFormat option to write_field * tests/test-fflapack.C - matched Invert2 to new 'nullity' argument format * tests/test-iliopoulos-elimination.C - #define int32 LinBox::int32 to avoid ambiguity with Givaro * tests/test-last-invariant-factor.C - int32 -> LinBox::int32 to avoid ambiguity with Givaro * tests/test-last-rational-solver.C - int32 -> LinBox::int32 to avoid ambiguity with Givaro - now handles solver failures without crashing - added check to ensure that system is solvable (ie no zero elements on diagonal) * tests/test-smith-form.C - int32 -> LinBox::int32 to avoid ambiguity with Givaro * examples/solver/t-rdisolve.C - test driver for rational solver, compile and run t-rdisolve -? * examples/solver/Makefile.am - make file 2004-07-16 Pascal Giorgi * linbox/field/lidia-gfq.h : fixing bug and improvement * tests/Makefile.am : retrieving test-lidia-gfq, fixing modular and gssv redundancy * tests/test-modular.C : using namespace std 2004-07-16 Pascal Giorgi * linbox-config.in : switching order of LiDIA in libs * linbox/randiter/envelope.h : modify random function ( assignement is not needed) * linbox/matrix/dense-submatrix.h : setting input and output functions public * linbox/field/givaro-zpz.h : adding linbox/utils/debug.h header * linbox/field/lidia-gfq.h : setting default degree extension to 1 * linbox/field/ntl-ZZ_p.h : overloading the constructor of UnparamField 2004-07-08 Dan Roche * Adding examples/linbox-program.C which will eventually do a wide variety of operations on integer matrices * gmp++/gmp++_int.h,inl : Little fixes * linbox/algorithms/wiedemann.inl : Little fixes * linbox/matrix/blas-matrix.h : Little fixes * linbox/util/gmp++/gmp++_int_compare.C, gmp++_int_mod.C : Little fixes * linbox/vector/sparse.h : Little fixes * tests/test-fields.C : Little fixes * tests/Makefile.am : Moved everything that uses rational-solver to ATLAS_TESTS rational-solver won't work without BLAS. * fields/field-traits.h : Took implementation out of this file and put it in each field header file. * fields/givaro-gfq.h : Added init and convert from/to a padic number * fields/modular.inl : Fixed some problems with MVProductDomain functions over unsigned types 2004-07-06 Bradford Hovinen * linbox/blackbox/dense.h (class DenseMatrix): Add _AT, a TransposeMatrix of this * linbox/blackbox/dense.inl (DenseMatrix::applyTranspose): Use _AT * linbox/matrix/matrix-domain.h (class MatrixDomain): Get rid of template argument MatrixTrait on specialized permute * linbox/vector/vector-domain.h (class VectorDomain): Get rid of template argument VectorTrait on specialized permute, swap * linbox/matrix/sparse.h (struct MatrixTraits): * linbox/vector/vector-domain.inl (class VectorDomain): * linbox/vector/vector-domain.h (class VectorDomain): * linbox/matrix/matrix-domain.h (class MatrixDomain): * linbox/matrix/transpose.h (struct MatrixTraits): * linbox/matrix/dense.h (struct MatrixTraits): Remove templates from matrix tags 2004-07-02 pascal giorgi * blackbox/apply.h : adding BlasApply domain * blackbox/compose.h : adding accessor to left an right blackbox * blackbox/sparse.h : make write function const * field/ all givaro file : fixe bugs * field/lidia-gfq.h : make it works * field/modular-double.h : add reset function in axpy domain * field/field-traits.h : add specialization for some fields * field/double-fmod.h : include * field/ntl-ZZ.h : remove all static and replace by const function * field/PID-double field/PID-integer.h : adding 2 new PID * matrix/dense.h.inl matrix/sparse.h.inl : make interators work * randiter/ntl-ZZ.h randiter/lidia-gfq.h : fix bugs and make clearer * solutions/method.h : add new traits for rational solvers * algorithms/ * blackbox-container-base.h : adding new constructor allowing size of sequence as parameter * blackbox-container.h : adding new constructor allowing size of sequence as parameter * lifting-containe.h : make a new interface for lifting (give specialization for Wiedemann and Dixon methods) * matrix-inverse.h : put Field as template and require a field as parameter (not restrictive to blackboxes) * matrix-mod.h : giving a specializatino * rational-reconstruction.h : make it clear with lifting interface * rational-solver.h : make a new interface for rational solver * rational-solver.inl : give specialization for Wiedemann and Dixon methods 2004-06-21 bds * removed NAGSparse blackbox which has been replaced by Triplesbb. Mods to linbox/util/xml/reader-blackbox-factory.h tests/Makefile.am Removed Files: blackbox/nag-sparse.h tests/test-nag-sparse.C 2004-06-16 Zhendong Wan * linbox/solutions/lu.h, tests/test-lu.C, fix the block lu and make test work. 2004-06-10 Dan Roche * Added linbox/field/modular-balance-int32.h to use int32 type * Added more fields to tests/test-fields.C * Added more fields and functionality to linbox/field/field-traits.h * Changed most fields so that every field constructor takes two arguments, a modulus and an exponent. Default values are put in so everything should still work the same. 2004-06-10 bds * New version 0.1.4 * final doc mods before release 0.1.4 2004-06-09 bds * Little tweaks. 2004-06-08 Dan Roche * Updated Modular to use the int32 type in integer.h * Added linbox/field/modular-int32.h * Added linbox/field/PIR-modular-int32.h * Updated tests/test-modular-int.h * Updated tests/test-iliopoulos-elimination.C * Updated tests/test-last-invariant-factor.C * Updated tests/test-rational-solver.C * Updated tests/test-smith-form.C * Updated tests/test-fields.C to use types from integer.h and to determine number of iterations based on machine speed. Also uses goodModulus method from FieldTraits struct. * Added linbox/field/field-traits.h, containing struct FieldTraits which can do other things but for now just provides information about valid moduli for a given field. 2004-06-08 bds * assorted documentation mods. * introduced BlackboxInterface, similar to FieldInterface, an empty base class solely for the purpose of organizing the heirarchy in the documentation. 2004-06-07 bds * assorted documentation mods. 2004-06-05 bds and Zhendong Wan * linbox/field/double-fmod.h is now redundant * linbox/field/modular-double.h uses the fmod approach * tests/test-generic.h now has a basic concept check for randiter and a chi-sq randomiterator check that doesn't fail on reasonably uniform random iterators over int elements. * tests/test-double-fmod.C and tests/test-modular-double.C now work. 2004-06-04 Dan Roche * Added tests/test-double-fmod.C Added tests/test-fields.C which benchmarks ops for fields Added tests/test-modular-double.C Added linbox/randiter/generic.h which is a generic random iterator used in double-fmod Added linbox/field/double-fmod.h which is like modular-double, but uses the fmod command from math.h 2004-06-04 bds * comments in rational.h suggesting that it is nowhere used. Shall we delete? 2004-04-20 Zhendong Wan * Add linbox/blackbox/blackbox_parallel.h, blackbox_thread.h, subrowmatrix.h, parallel blackbox apply and applyTranspose by using posix threads. * Modify linbox/blackbox/sparse.h, dense.h, dense.inl, linbox/vector/subvector.h, add parallel apply and applyTranspose for SparseMatrix and DenseMatrix. 2004-03-25 bds * documentation mods 2004-03-17 bds * gmp++/gmp++_int.h linbox/util/gmp++/gmp++_int.C, gmp++_int_add.C, gmp++_int_compare.C, gmp++_int_cstor.C, gmp++_int_div.C, gmp++_int_gcd.C, gmp++_int_io.C, gmp++_int_misc.C, gmp++_int_mod.C, gmp++_int_mul.C, gmp++_int_pow.C, gmp++_int_sub.C, tests/test-common.h: mods to make flag -DLinBoxSrcOnly work. 2004-03-04 Zhendong Wan * linbox/blackbox/sparse.h, set default Row to be SparseMap, which is more efficient to call setEntry, refEntry member function. * tests/test-minpoly.h, make it works with change in sparse.h. 2004-03-04 Zhendong Wan * linbox/blackbox/diagonal.h linbox/blackbox/hilbert.h, linbox/blackbox/scalar-matrix.h linbox/blackbox/submatrix.h, linbox/field/PIR-modular-int.h linbox/field/PIR-ntl-ZZ_p.h, linbox/field/modular-byte.h linbox/field/modular-int.h, linbox/field/modular-short.h linbox/field/modular.h, linbox/field/modular.inl linbox/matrix/matrix-domain.h, linbox/matrix/matrix-domain.inl linbox/matrix/sparse.h, linbox/matrix/sparse.inl linbox/vector/stream.h, linbox/vector/vector-domain.h linbox/vector/vector-domain.inl, linbox/vector/vector-traits.h tests/test-common.h, make these Tag classes non-template, since they are only used to distinguish vector types and for this purpose, ordinary classes suffice. 2004-03-04 Zhendong Wan * linbox/blackbox/dense.h linbox/blackbox/sparse.h, linbox/matrix/archetype.h linbox/matrix/dense-submatrix.h, linbox/matrix/dense.h linbox/matrix/matrix-domain.h, linbox/matrix/sparse.h linbox/matrix/transpose.h, tests/test-matrix-domain.C, make struct RowMatrixTag, struct ColMatrixTag, struct RowColMatrixTag non-template classes, since they are only used to distinguish the matrix types and in this case, non-template classes suffice and codes become simpler. 2004-03-02 Zhendong Wan * remove linbox/vector/const-iterator-type.h, since in new gcc, std::vector::iteretor is not same type as Element*, it doesnot work anymore. * modify linbox/vector/subvector.h, add one template parameter const_iterator. * linbox/blackbox/dense.h, dense.inl, use MatrixDomain to conform SparseMatrix implementation. 2004-03-02 Zhendong Wan * linbox/blackbox/sparse.h, remove field VectorDomain _VD, since it is not used in any member function. 2004-02-07 Zhendong Wan * linbox/algorithms/rational-reconstruction.h, speed it up bu only reconstructing the rationals at every threshold position. 2004-02-06 bds * linbox/gen_superlu/gssv_rank.h linbox/gen_superlu/trsv.h tests/Makefile.am tests/test-gssv_rank.C tests/data/gssv_rank_data: fix gssv_rank test (works except for A'+A case). 2004-02-04 Zhendong Wan * Add linbox/field/PIR-modular-int.h, which is an extension of Modular with PIR functions. 2004-02-03 Zhendong Wan * Modify linbox/field/PIR-ntl-ZZ_p.h, add MVProductDomain, DotProductDomain for PIR_ntl_ZZ_p 2004-01-28 Zhendong Wan * Modify linbox/algorithms/iliopoulos-elimination.h, making it work in a PIR suggest by bds. * Modify linbox/tests/test-iliopoulos-elimination.C, making it work upon change of iliopoulos-elimination * Add linbox/field/PIR-ntl-ZZ_p.h, adpating ntl-ZZ_p, and adding PIR interface (gcd, xgcd, dxgcd). 2004-01-27 Zhendong Wan * Modify linbox/algorithms/bitonic-sort.h, minor name change * Add linbox/tests/test-bitonic.C, test for bitonic-sort 2004-01-27 BDS * Modify linbox.dxx doc/.cvsignore doc/doc.dxx, min doc change 2004-01-27 BDS *add linbox/field/ntl-pid-zz_p.h, linbox/field/local2_32.h, linbox/algroithms/local-smith.h, code for local smith form computation. *add linbox/tests/test-local-smith.C, modify linbox/tests/Makefile.am, add test for local smith algorithm 2004-01-26 Zhendong Wan * add linbox/field/ntl-ZZ.h, linbox/randiter/ntl-ZZ.h, adapter NTL::ZZ to linbox. * add linbox/algorithms/lifting-container.h, linbox/algorithms/rational-reconstruction.h, linbox/algorithms/rational-solver.h, solve the linear systems over the rationals by lifting. * add linbox/algorithms/bitonic-sort.h, implement bitonic-sort, a sort network sequential implemenation. * add linbox/algorithms/iliopoulos-elimination.h, implement the Iliopoulos algorithm for Smith form. * add linbox/blackbox/apply.h, linbox/blackbox/scompose.h, linbox/blackbox/compose-traits.h, linbox/blackbox/random-matrix-traits.h, linbox/blackbox/random-matrix.h, linbox/blackbox/submatrix-traits.h, linbox/algorithms/ith-invariant-factor.h, linbox/algorithms/last-invariant-factor.h, linbox/algorithms/matrix-inverse.h, linbox/algorithms/matrix-mod.h, linbox/algorithms/smith-form.h, implement EGV/EGV+/EGV++ algorithm for Smith Form computation. * add linbox/tests/test-last-invariant-factor.C, linbox/tests/test-smith-form.C, linbox/tests/test-iliopoulos-elimination.C, add test for smith form computation and iliopoulos elimination. 2004-01-26 Zhendong Wan * linbox/blackbox/submatrix.h, add specialization for submatrix of denese matrices. * linbox/matrix/dense-submatrix.h, linbox/matrix/dense-submatrix.inl, fixed output / input 2004-1-15 bds * field/archetype.h field/field-interface.h: doc tweaks * matrix/dense-submatrix.h matrix/dense-submatrix.inl: fixed write trouble. * vector/subvector.h: fixed swap 2004-01-07 Pascal Giorgi Fix some printing messages in : * macro/atlas-check.m4 * macro/expat-check.m4 * macro/givaro-check.m4 * macro/lidia-check.m4 * macro/ntl-check.m4 * macro/saclib-check.m4 2003-12-29 Bradford Hovinen * linbox/matrix/transpose.h (class TransposeMatrix): Remove const requirement on input matrix; add in regular iterators * tests/test-matrix-domain.C (transpose): Remove const (testInvMulOver, testInvMulUnder, testInvLeftMulinOver) (testInvRightMulinOver): Remove const from parameter M 2003-12-28 Bradford Hovinen * linbox/vector/vector-domain.h (class VectorDomain): Add permute, swap functions * linbox/vector/vector-domain.inl (swapSpecialized, permuteSpecialized): Implement * linbox/matrix/matrix-domain.inl (permuteRowsByRow) (permuteRowsByCol, permuteColsByRow, permuteColsByCol): Implement * linbox/matrix/matrix-domain.h (class MatrixDomain): Add row/column permutation functions 2003-12-19 bds * tests/Makefile.am: just clean up some comments 2003-12-19 Pascal Giorgi * added files : linbox/gen_superlu/Makefile.am: missing file macros/config-header.m4: create linbox-config.h from config.h by prefixing all variable by __LINBOX_ macros/linbox-misc.m4: allow --with-all and --with-default options Modify Makefile such they use pkg variable * gmp++/Makefile.am * interfaces/Makefile.am * interfaces/maple/Makefile.am * linbox/Makefile.am * linbox/algorithms/Makefile.am * linbox/blackbox/Makefile.am * linbox/element/Makefile.am * linbox/fflapack/Makefile.am * linbox/fflas/Makefile.am * linbox/field/Makefile.am * linbox/iterators/Makefile.am * linbox/matrix/Makefile.am * linbox/randiter/Makefile.am * linbox/solutions/Makefile.am * linbox/switch/Makefile.am * linbox/util/Makefile.am * linbox/util/xml/Makefile.am * linbox/vector/Makefile.am Modify all macro such that they use --with-package terminology + some new features * macros/Makefile.am * macros/atlas-check.m4 * macros/expat-check.m4 * macros/givaro-check.m4 * macros/gmp-check.m4 * macros/lidia-check.m4 * macros/maple-check.m4 * macros/ntl-check.m4 * macros/saclib-check.m4 modify sources and headers files such that the use the new terminology variable from linbox-config.h * linbox/blackbox/archetype.h * linbox/blackbox/compose.h * linbox/blackbox/dense.h * linbox/blackbox/diagonal.h * linbox/blackbox/nag-sparse.h * linbox/blackbox/ntl-toeplitz.h * linbox/blackbox/ntl-toeplitz.inl * linbox/blackbox/permutation.h * linbox/blackbox/scalar-matrix.h * linbox/blackbox/sparse.h * linbox/blackbox/triplesbb.h * linbox/blackbox/zero-one.h * linbox/blackbox/zero-one.inl * linbox/fflas/fflas.h * linbox/fflas/fflas_fgemm.inl * linbox/field/abstract.h * linbox/field/archetype.h * linbox/field/envelope.h * linbox/field/gf2.h * linbox/field/givaro-gfq.h * linbox/field/givaro-zpz.h * linbox/field/gmp-rational.h * linbox/field/lidia-gfq.h * linbox/field/modular.h * linbox/field/ntl-RR.h * linbox/field/ntl-ZZ_p.h * linbox/field/ntl-ZZ_pE.h * linbox/field/unparametric.h * linbox/matrix/dense.h * linbox/matrix/dense.inl * linbox/matrix/sparse.h * linbox/matrix/sparse.inl * linbox/randiter/gf2.h * linbox/randiter/gmp-rational.h * linbox/randiter/lidia-gfq.h * linbox/randiter/modular.h * linbox/randiter/nonzero.h * linbox/randiter/unparametric.h * linbox/util/xml/field-reader-analyzer.h * linbox/util/xml/reader-blackbox-factory.h * configure.in: Modification for new features * tests/Makefile.am: disable some tests and put tests in right place according to their dependencies * tests/test-lsp.C: changing the verification of result to be faster * Hacking: Adding new way of installation * maple stuff installation have been improved 2003-12-15 Saunders/Wan/Lobo * lbmaple.C: getField -> field, template for triplebb. 2003-11-18 Saunders/Wan * merge newBB branch into main branch (note: there is an indented section of branch changelog notes down below.) 2003-10-21 Pascal Giorgi Modify few Makefile.am in order to synchronise make dist and make check * linbox/algorithm/Makefile.am adding lsp.h * linbox/field/Makefile.am add modular-balance-int.h hom.h image-field.h * linbox/blackbox/Makefile.am add missing files * tests/Makefile.am fixe some bugs. move test-gssv.C to EXTRA PROGRAM 2003-10-08 wan@udel.edu * linbox/matrix/dense.inl, remove the width in write member function, since it causes problem for some ring and it is not necessary, for example, linbox integer doesnot have fixed length 2003-09-29 wan@udel.edu * linbox/util/field-zxpy.h, linbox/vector/vector-domain.h,.inl, linbox/field/givaro-zpz.h,modular-balance-int.h,modular-byte.h,modular-int.h,modular-short.h,modular.h,unparametric.h, add a new member reset to FieldAXPY, set initial accumulator's value to zero, thus we can put an instantiation of FieldAXPY into field of VectorDomain, instead of temporily instantiating FieldAXPY whenever we need it. 2003-09-27 wan@udel.edu * linbox/field/ntl* linbox/randiter/mersenne-twister.* linbox/randiter/unparametric.h, make them work with the new random memebr function. 2003-09-27 wan@udel.edu * linbox/blackbox/dense.h, change the parameter RandIter &iter --> const RandIter &iter in its constructor. 2003-09-27 wan@udel.edu * linbox/randiter/*.h, make each random member function to be a const member function in each random class, since the member will not change the instantiation of the random class at all, just generate a random element. * linbox/matrix/dense.inl, make RowIterator and ColIterator support operator --() and operator-- (int). 2003-09-26 wan@udel.edu * linbox/matrix/dense.h, fit to g++3 change, add std to endl. 2003-08-15 saunders@udel.edu * sundry minor doc++ tweaks. 2003-08-14 saunders@udel.edu * sundry doc++ comments in doc/ examples/ and tests/ * added files (in newbB branch) linbox.dxx doc/fix-index examples/ex-integers.C examples/examples.dxx examples/blackbox/blackbox.dxx examples/fields/fields.dxx tests/tests.dxx * linbox/blackbox/sparse.h added default sizes * removed FROZEN, it's contents added to CHANGED-INTERFACES 2003-08-13 saunders@udel.edu * test-generic.h blackbox tests simplified, testBB() added * ntl-zz_p.h field fixed * tests/test-ntl-toeplitz/hankel to newBB. begin newBB branch notes 2003-11-05 Pascal Giorgi * add file /linbox/field/modular-double.h * /linbox/field/modular.h include modular-double.h 2003-10-23 wan@udel.edu * linbox/blackbox/dense.h, in the operator= , I forced the assignment for field _F. 2003-10-22 wan@udel.edu * tests/Makefile.am, comment test-lsp, since g++ complains its syntax error. * linbox/blackbox/compose.h, correct a few typos. 2003-10-22 wan@udel.edu * linbox/field/modular-byte.h, minor change for write member function, output the modulus as a int instead of a char. 2003-10-22 wan@udel.edu * linbox/blackbox/compose.h, add specialization for Compose 2003-10-08 wan@udel.edu * linbox/matrix/dense.inl, remove the width in write member function, since it causes problem for some ring and it is not necessary, for example, linbox integer doesnot have fixed length 2003-09-29 wan@udel.edu * linbox/util/field-zxpy.h, linbox/vector/vector-domain.h,.inl, linbox/field/givaro-zpz.h,modular-balance-int.h,modular-byte.h,modular-int.h,modular-short.h,modular.h,unparametric.h, add a new member reset to FieldAXPY, set initial accumulator's value to zero, thus we can put an instantiation of FieldAXPY into field of VectorDomain, instead of temporily instantiating FieldAXPY whenever we need it. 2003-09-27 wan@udel.edu * linbox/field/ntl* linbox/randiter/mersenne-twister.* linbox/randiter/unparametric.h, make them work with the new random memebr function. 2003-09-27 wan@udel.edu * linbox/blackbox/dense.h, change the parameter RandIter &iter --> const RandIter &iter in its constructor. 2003-09-27 wan@udel.edu * linbox/randiter/*.h, make each random member function to be a const member function in each random class, since the member will not change the instantiation of the random class at all, just generate a random element. * linbox/matrix/dense.inl, make RowIterator and ColIterator support operator --() and operator-- (int). 2003-09-26 wan@udel.edu * linbox/matrix/dense.h, fit to g++3 change, add std to endl. 2003-08-15 saunders@udel.edu * sundry minor doc++ tweaks. 2003-08-14 saunders@udel.edu * sundry doc++ comments in doc/ examples/ and tests/ * added files (in newbB branch) linbox.dxx doc/fix-index examples/ex-integers.C examples/examples.dxx examples/blackbox/blackbox.dxx examples/fields/fields.dxx tests/tests.dxx * linbox/blackbox/sparse.h added default sizes * removed FROZEN, it's contents added to CHANGED-INTERFACES 2003-08-13 saunders@udel.edu * test-generic.h blackbox tests simplified, testBB() added * ntl-zz_p.h field fixed * tests/test-ntl-toeplitz/hankel to newBB. end newBB branch notes 2003-08-09 saunders@udel.edu * sundry documentation mods * blackbox/companion.h fix 2003-08-08 Rich Seagraves * linbox/util/xml/field-reader-analyzer.C: * linbox/util/xml/reader-blackbox-factory.C: Removed files (depricated) * gmp++/gmp++_int.h: * linbox/util/gmp++/gmp++_int_misc.C: Added operator bool to LinBox Integer class (casts integer to remainder upon division by 2) * linbox/blackbox/archetype.h: Add XML support to BlackboxArchetype * linbox/blackbox/companion.h: Add XML support * linbox/blackbox/compose.h: Added partial XML support (incomplete) * linbox/blackbox/scalar-matrix.h: * linbox/blackbox/triplesbb.h: * linbox/blackbox/zero-one.h: * linbox/blackbox/zero-one.inl: * linbox/blackbox/dense.h: * linbox/blackbox/nag-sparse.h: * linbox/blackbox/ntl-toeplitz.h: * linbox/blackbox/ntl-toeplitz.inl: * linbox/matrix/sparse.inl: Modified XML Reading, Writing methods for these Blackboxes * linbox/field/abstract.h: * linbox/field/envelope.h: Added reading & writing methods to envelope & abstract * linbox/field/givaro-zpz.h: * linbox/field/modular.h: * linbox/field/unparametric.h: Modified XML Reading, Writing methods for these Blackboxes * linbox/field/archetype.h: Added XML support to Field archetype (incomplete) * linbox/util/xml/field-reader-analyzer.h: * linbox/util/xml/reader-blackbox-factory.h: Completed experimental version of FieldReaderAnalyzer & ReaderBlackBoxFactory * linbox/util/xml/Makefile.am: Added entries for reader-blackbox-factory.h & field-reader-analyzer.h 2003-08-07 Bradford Hovinen * linbox/element/Makefile.am (EXTRA_DIST): Remove abstract.dxx * linbox/Makefile.am (EXTRA_DIST): Remove interfaces.dxx * RELEASE-INSTRUCTIONS: Add this file * tests/Makefile.am (BASIC_TESTS): Remove test-givaro-zpz (EXTRA_PROGRAMS): Add $(GIVARO_TESTS) * linbox/algorithms/wiedemann.inl (precondition): Allocate all Compose objects dynamically * tests/test-solve.C (main): Restore call to testPreconditionedSolve * linbox/field/gmp-rational.h (GMPRationalField::read): Compilation fix 2003-07-25 Bradford Hovinen * linbox/algorithms/block-lanczos.inl: Add calls for detailed timing information 2003-07-20 Bradford Hovinen * linbox/field/modular.inl (mulColDenseSpecialized): Compilation fixes * linbox/algorithms/block-lanczos.h (class BlockLanczosSolver): Initialize _MD in all constructors 2003-07-23 wan@udel.edu * linbox/field/modular-int.h, linbox/field/modular-short.h, linbox/field/modular-byte.h add MVProductionDomain specialization. 2003-07-21 Rich Seagraves * linbox/util/xml/field-reader-analyzer.C: * linbox/util/xml/field-reader-analyzer.h: added files for Reader->Field conversion * linbox/util/xml/reader-blackbox-factory.h: * linbox/util/xml/reader-blackbox-factory.C: added files for Reader->BlackBox conversion * linbox/blackbox/dense.h: * linbox/matrix/dense.h: Added XML support to DenseMatrix class * linbox/blackbox/diagonal.h: "" Diagonal class * linbox/blackbox/nag-sparse.h: "" NAGSparse class * linbox/blackbox/ntl-toeplitz.h: * linbox/blackbox/ntl-toeplitz.inl: "" NTLToeplitz class * linbox/blackbox/permutation.h: "" Permutation class * linbox/blackbox/scalar-matrix.h: "" ScalarMatrix class * linbox/blackbox/sparse.h: * linbox/matrix/sparse.h: "" SparseMatrix class * linbox/blackbox/triplesbb.h: "" TriplesBB class * linbox/blackbox/zero-one.h: * linbox/blackbox/zero-one.inl: "" ZeroOne class * linbox/field/gf2.h: "" GF2 class * linbox/field/gf2.inl: * linbox/field/givaro-gfq.h: "" Givaro::GFq class * linbox/field/givaro-zpz.h: * linbox/field/givaro-zpz.inl: "" Givaro::Modular class * linbox/field/gmp-rational.h: "" GMPRationalField class * linbox/field/lidia-gfq.h: "" LidiaGfq class * linbox/field/modular.h: "" Modular class * linbox/field/ntl-RR.h: "" NTL::RR specilization of Unparametric * linbox/field/ntl-ZZ_p.h: "" NTL::ZZ_p "" * linbox/field/ntl-zz_p.h: "" NTL::zz_p "" * linbox/field/ntl-ZZ_pE.h: "" NTL::ZZ_pE "" * linbox/field/unparametric.h: Added XML support to UnparametricField * linbox/randiter/gmp-rational.h: "" GMPRationalRandIter class * linbox/randiter/lidia-gfq.h: "" LidiaGfq randiter * linbox/randiter/modular.h: "" Modular randiter * linbox/randiter/nonzero.h: "" NonZero randiter * linbox/randiter/unparametric.h: "" UnparametricRanditer * linbox/util/xml/linbox-reader.h: * linbox/util/xml/linbox-writer.h: * linbox/util/xml/xml-tree.h: Updated XML reading & writing API 2003-07-21 saunders@udel.edu * Documentation modifications in doc/doc.dxx linbox/archetypes.dxx linbox/linbox.dxx linbox/blackbox/blackbox.dxx linbox/blackbox/direct-sum.h linbox/element/abstract.h linbox/element/archetype.h linbox/element/envelope.h Removed Files: linbox/interfaces.dxx linbox/wrappers.dxx linbox/element/abstract.dxx linbox/element/archetype.dxx 2003-07-21 wan@udel.edu * linbox/field/modular-balance-int.h, add balance representation for modular field. * tests/test-modular-balance-int.C, add test for balance representation for modular field. 2003-07-14 saunders@udel.edu * tests/Makefile.am givaro test now works * various.dxx some doc tweaks 2003-07-11 Bradford Hovinen * linbox/algorithms/block-lanczos.inl (iterate): Add TIMER_* calls to report detailed timings when DETAILED_PROFILE is set * linbox/randiter/mersenne-twister.h: * linbox/randiter/mersenne-twister.C: Eliminate #pragma directives 2003-07-10 Bradford Hovinen * linbox/blackbox/matrix-blackbox.h (class MatrixBlackbox): Add this file 2003-07-06 Bradford Hovinen * linbox/matrix/transpose.h (class TransposeMatrix): Add missing Row, Col, Column declarations * linbox/field/modular.h (class MVProductDomain): Add specializations for uint8, uint16, and uint32 2003-07-05 Bradford Hovinen * linbox/matrix/matrix-domain.h (class MVProductDomain): Create this class and move mulColSpecialized for dense vectors into it * linbox/algorithms/block-lanczos.inl (solve): Try checking system solution even if iterate returned false, just in case enough of the Krylov basis was obtained to get the true solution. 2003-07-03 Bradford Hovinen * linbox/blackbox/diagonal.h (Diagonal::apply): Don't resize the output * linbox/blackbox/transpose.h (class Transpose): Parameterize by black box; add versions of apply and applyTranspose separately parameterized by vector * linbox/blackbox/compose.h (class Compose): Add versions of apply and applyTranspose separately parameterized by vector (class Compose): Parameterize by blackboxes * tests/test-sparse.C (runSparseMatrixTests): Disable testing sparse matrix against non-dense vectors, since I don't support them any more * linbox/blackbox/sparse.h (class SparseMatrix): Add versions of apply and applyTranspose parameterized by two vector types; add MatrixDomain _MD; Use _MD for arithmetic and eliminate specializations as they are no longer needed; eliminate applyTransposeSpecialized * linbox/matrix/matrix-domain.h (MatrixDomain::blackboxMul): Rename blackboxMulLeft, blackboxMulRight; parameterize by black box and not by vector 2003-07-02 Bradford Hovinen * linbox/solutions/solve.h (solve): Eliminate Vector from BlockLanczosSolver declaration; parameterize by black box * linbox/algorithms/block-lanczos.inl (iterate): Declare tmp and tmp1 locally (mulin): Use Vector::Dense::iterator rather than Vector * linbox/algorithms/block-lanczos.h (class BlockLanczosSolver): Eliminate v and Av (class BlockLanczosSolver): Eliminate _t1; replace _t with _tmp * linbox/algorithms/block-lanczos.inl (solve): Parameterize by black box and vector (iterate): Ditto (solve): Eliminate v and Av * linbox/algorithms/block-lanczos.h: (class BlockLanczosSolver): Make generic wrt internal matrix type used; no longer parameterize by vector * linbox/algorithms/block-lanczos.inl (compute_Winv_S): Compute and return rank of V^T AV (iterate): Keep track of Ni and add trace statements to report it; abort if total of Ni's is too large (iterate): Use Vi = 0 as termination condition (iterate): Add variable progress_interval giving number of iterations between each call to commentator.progress (compute_Winv_S): Don't call commentator.progress unless DETAILED_TRACE is set 2003-07-09 saunders@cis.udel.edu * field/ntl-zz_p.h unparametric.h fix yesterday's version - syntax of new constructor from p,e. 2003-07-08 saunders@cis.udel.edu * Documentation tweaks, especially vis a vis @memo entries. * See doc/doc.dxx for discussion of documentation conventions. * For now, let's try to make the html documentation work and leave tex for later. 2003-07-07 Rich Seagraves * macros/expat-check.m4: Disabled automatic detection of expat in system standard locations, expat must now be manually specified in configure step 2003-06-30 Rich Seagraves * macros/expat-check.m4: * linbox/blackbox/triplesbb.h: * linbox/field/modular.h: Files altered to use "XMLENABLED" pre-processor flag instead of "RWENABLED" * linbox/matrix/sparse.h: * linbox/matrix/sparse.inl: * linbox/blackbox/sparse.h: * linbox/blackbox/sparse.inl: Added XML support to all SparseMatrix variants * linbox/blackbox/nag-sparse.h: Added XML support to NAGSparse blackbox * linbox/blackbox/zero-one.h: Added XML support to ZeroOne blackbox * linbox/util/xml/linbox-reader.h: Added constructor from initalized Writer * linbox/util/xml/linbox-writer.h: begun adding ability to traverse written Tag structure, add tags BEFORE as well as after the current Tag 2003-06-26 Rich Seagraves * add macros/expat-check.m4, * add linbox/util/xml, * add linbox/util/xml/linbox-reader.h, * add linbox/util/xml/linbox-writer.h, * add linbox/util/xml/xml-tree.h, * add linbox/util/xml/README, * add linbox/util/xml/Makefile.am: Defines LinBox/XML framework * configure.in: Alters build system to make expat package optional dependency * linbox/util/Makefile.am: make xml a subdir of util * linbox/blackbox/triplesbb.h: Add XML reading & Writing to TriplesBB class * linbox/field/modular.h: Add XML reading & Writing to ModularBase class * linbox/solutions/det.h: commented out debug output 2003-06-24 wan@udel.edu * linbox/field/modular-int.h, linbox/field/modular-short.h, linbox/field/modular-byte.h, use a fast way to compute 2^64 % modulus. * linbox/tests/test-modular-int.h, change the modulus to a 30 big integer. 2003-06-20 wan@udel.edu * linbox/blackbox/butterfly.h, linbox/blackbox/dense.h * linbox/blackbox/dif.h,linbox/blackbox/inverse.h * linbox/blackbox/sparse.h, linbox/blackbox/submatrix.h : for high performance reason, and a field only occupies a small memory, change const Field& to const Field in private field. 2003-06-16 wan@udel.edu * add linbox/field/modular-int.h, modular-short.h , modular-byte, combining the trick of NTL for arithmetic operation and dot product of modluar * add linbox/tests/test-modular-int.C, test-modular-short.C, test-modular-byte.C. * linbox/randiter/modular.h, remove field _card, since it only uses to initialize _size. 2003-06-12 wan@udel.edu * linbox/field/givaro-gfq.h, enforce that the cardinality must be <2^16, for givaro-gfq * linbox/randiter/modular.h, replace static-cast with init in the random function. 2003-06-05 saunders@udel.edu * work on documentation in linbox/blackbox (particularly blackbox.dxx and archetype.h). * Note: renamed blackboxes.dxx to blackbox.dxx and removed some cruft files. 2003-06-03 zhendong wan * linbox/blackbox/ntl-sylvester.inl remove the warning message. 2003-06-03 zhendong wan * linbox/field/ntl-zz-p.h, set default prime to be 65521 * tests/test-sum.C, correct a type name error. 2003-06-03 zhendong wan * linbox/util/commentator.C, tests/test-commentator.C, temporarily fixed the bug in test-commentator, left a little memory leaking. 2003-06-02 saunders@udel.edu * blackbox/zero-one.h, .inl: mods to avoid g++ 3.2.1 typename warnings. 2003-05-30 saunders@udel.edu * field/unparametric.h field/ntl-zz_p.h tests/test-ntl-zz_p.cpp: put in prototype of a constructor * I propose to have all field classes have a constructor from a prime and optionally an exponent -- * FieldClass(integer q) if a prime field class, (allow q = 0) * FieldClass(integer q, size_t e) if an extension of degree e. 2003-05-30 saunders@udel.edu * tests/test-commentator.C - adjust so passes on solaris. Note: there is apparently still a bug to fix. 2003-05-30 zhendong wan * linbox/blackbox/null-matrix.h: remove getInstance member function. Make default constructor public, remove static member nullMatrix * linbox/blackbox/direct-sum.h: update the include file for NullMatrix. * tests/Makefile.am: comment some tests lacking of source codes * linbox/blackbox/Makefile.am: put in null-matrix.h direct-sum.h 2003-05-29 saunders@udel.edu * change name to null-matrix.h and depreciate applyIn and a doc++ comment. 2003-05-29 zhendong wan * linbox/blackbox/nullmatrix.h : added a new singelton class. a matrix of size 0 * linbox/black/direct-sum.h : solved some ugly problem 2003-05-28 zhendong wan * tests/test-direct-sum.c: update the tests for DirectSum 2003-05-28 austin lobo david saunders * Changed blackbox/direct-sum.h to allow for 0 x 0 blocks * Changed blackbox/scalar-matrix.h to properly handle 0 x 0 matrix * Added test for 0 x 0 in tests/test-direct-sum.C * Added test for 0 x 0 in tests/test-scalar-matrix.C * New blackbox/frobenius.h and tests/test-frobenius.C 2003-05-27 zhendong wan * linbox/blackbox/companion.h, tests/test-companion.h: revised the Compa nion class, remove template parameter Polynomial, modify the constructor with ra ndom genertor. 2003-05-27 saunders@udel.edu * blackbox/companion.h, tests/test-companion.h: added class inherits from triplesbb * tests/test-triplesbb.C: add test from other constructor 2003-05-26 Pascal Giorgi * linbox/FFLAS/fflas.h : modify field_trsm to be closed to blas standard * linbox/FFLAS.fflas.inl : put macro LEFT,RIGHT,UNIT,NOUNIT,LOWER,UPPER, to specialize field_trsm function * linbox/algorithms/lsp.h : adding function to retrieve index of zero and non-zero rows in S. * linbox/algorithms/lsp-tools.h: adding function to handle row permutation , synchronization with field_trsm 2003-05-23 saunders@udel.edu * tests/test-generic.h: make testSmallBlackbox work, put it in with linearity and transpose in testBlackbox. 2003-05-20 saunders@udel.edu * linbox/blackbox/compose.h: add constructor from references, &A &B. * linbox/blackbox/sum.h: add constructor from refs, &A &B; remove cloning; copy field for speed. * linbox/field/ntl-zz_p.h: typdef to name NTL_zz_p * macros/atlas-check.m4: remove f77blas refs which break things for me. Hope not needed by others. * tests/test-butterfly.C: also check Compose constructor with refs (vs ptrs) * tests/test-generic.h: fix vector size bug in testTranspose(). * tests/test-rank.C: add testZeroAndIdentRank(). * tests/test-sum.C: also check Sum constructor with refs (vs ptrs), calls testBlackbox() too. * Added Files: linbox/blackbox/direct-sum.h tests/test-direct-sum.C: DirectSum BB is direct sum of 2 BBs, similar in structure to Compose, Sum. 2003-05-14 Bradford Hovinen * tests/Makefile.am (BASIC_TESTS): Reintroduce test-solve * tests/test-solve.C (testSingularInconsistentSolve): Check status == ...INCONSISTENT, not status == SINGULAR 2003-04-23 Pascal Giorgi * linbox/algorithms/lsp.h: delete typo errors * linbox/algorithms/lsp-tools.h : clarify Compute-G function * tests/Makefile.am: retrieve test-lsp 2003-04-19 -bds - comment out non working tests in tests/Makefile.am 2003-04-11 Pascal Giorgi * linbox/FFLAS/FFFMMBLAS.h: use of init and convert with double in MatGfq2MatDouble, MatGfq2MatDouble_Triangular and MatDouble2MatGfq * linbox/field/givaro-zpz.h: define convert to double 2003-04-11 Austin Lobo * Added rules for ntl-sylvester and test-ntl-sylvester * Added ntl-sylvester.h ntl-sylvester.inl to the repository 2003-04-10 Pascal Giorgi * linbox/algorithms/lsp.h : optimization * linbox/FFLAS.fflas.inl : new version of Field_trsm (more effficient) 2003-04-04 Pascal Giorgi * linbox/field/givaro-zpz.h: fix bug with init from double * linbox/field/givaro-zpz.inl: fix some warnings * linbox/FFLAS/FFFMMBLAS.h: fix some bugs * linbox/FFLAS/fflas.inl: fix some bugs * linbox/algorithms/lsp.h: adding header * linbox/tests/test-lsp.C: adding test for LSP factorization with atlas library * linbox/tests/Makefile.am: adding tests and variables for atlas library 2003-04-02 Pascal Giorgi * linbox/matrix/dense.h: adding parameter _ptr as a pointer on the first Element of the matrix adding FullIterator() function (returning _ptr) 2003-04-02 Jean-Guillaume Dumas * gmp++/gmp++_int.h: Backed out my commit * linbox/util/gmp++/gmp++_int_misc.C: Backed out my commit * macros/gmp-check.m4 : added GMP_VERSION Makefile variable to enable gmp-3.xxx compatibility * All this is made to have fully SIMILAR gmp++ files within givaro * and linbox (e.g. no "#include " nor * "#include " 2003-04-02 Giorgi Pascal * linbox/macros/atlas-check.m4: adding checking for atlas tuning library * linbox/configure.in: adding check for atlas * linbox/field/givaro-zpz.h: adding init function from double * linbox/algorithms/lsp.h : * linbox/algorithms/lsp-tools.h : algorithm to compute the LSP decomposition of a dense matrix stored contiguously by row. * linbox/FFLAS/ : new directory containing FFLAS routine of jean-guillaume and clement and also LinBox wrappers * linbox/FFLAS/FFFMMBLAS.h: FFLAS routine (j-g and clement code) * linbox/FFLAS/ FFFMMBLAS.inl: FFLAS routine (j-g and clement code) * linbox/FFLAS/lin_wrap_c++.h: FFLAS routine (j-g and clement code) * linbox/FFLAS/lin_wrap_c++.inl: FFLAS routine (j-g and clement code) * linbox/FFLAS/fflas.h: wrappers including field_dgemm and field_trsm * linbox/FFLAS/fflas.inl: wrappers including field_dgemm and field_trsm 2003-04-01 Bradford Hovinen * linbox/matrix/matrix-domain.inl: * linbox/matrix/matrix-domain.h: Back out previous changes 2003-03-31 Bradford Hovinen * tests/test-vector-domain.C (main): Add test for uint8 * linbox/field/modular.h (class FieldAXPY): typedef uint8 Element 2003-03-29 Bradford Hovinen * linbox/vector/bit-vector.h: Be generic wrt word length, so we can use 64-bit arithmetic when available * linbox/util/debug.h: Remove GCCisms 2003-03-27 Bradford Hovinen * gmp++/gmp++_int.h: Add operator unsigned char * gmp++/gmp++_int.h: Backed out previous commit, since it broke the build for the entire library * linbox/util/gmp++/gmp++_int_misc.C: Backed out previous commit, since it broke the build for this file * tests/test-modular.C (main): Add test for Modular * linbox/field/modular.h (class FieldAXPY): Add specialization for uint8 (class Modular): Add specialization for uint8 (class DotProductDomain): Add specialization for uint8 2003-03-26 Bradford Hovinen * linbox/matrix/matrix-domain.h (class MatrixVectorDomain): Create this class and move mulRowSpecialized and mulColSpecialized functions into it (class MatrixDomain): Inherit MatrixVectorDomain (class MatrixDomain): Move _VD to MatrixVectorDomain * linbox/field/gf2.inl (class Diagonal): Add specialization for GF2 * linbox/blackbox/diagonal.h (class Diagonal): Use RandIter, not RandomIterator * linbox/field/gf2.inl (addinSpecialized): Remember to increment other iterators * tests/test-gf2.C (testDotProductGF2): Create new version for dense/sparse test (testDotProductGF2): Use generic vector names (main): Use unsigned int rather than size_t for n * linbox/field/gf2.inl (dotSpecializedDD): Use mask at the end of the vector * linbox/vector/bit-vector.inl (class BitVector::const_iterator): Add operator = (iterator) (class BitVector::iterator): Make const_iterator a friend (class BitVector::reference): Ditto (class BitVector::iterator, class BitVector::const_iterator): Add equality checks with each other * tests/test-gf2.C (testDotProduct): Enable this * linbox/field/gf2.inl (class RandomSparseStreamGF2, class RandomDenseStreamGF2): Require seed as a parameter (addSpecialized): Swap x and y in if statement (VectorDomain::addinSpecialized): Fix call to copy * linbox/vector/bit-vector.inl (operator ==): Make this operation a bit smarter 2003-03-23 Bradford Hovinen * linbox/field/gf2.inl (class VectorDomain): Sprinkle this-> before copy liberally to make SGI CC happy * linbox/vector/bit-vector.inl (operator =): Return *this * tests/test-dif.C (testZeroApply): Remove neg_one * linbox/util/field-axpy.h (FieldAXPY::operator =): Don't try to assign the field * tests/test-sparse.C (main): Don't use NonzeroRandIter for RandomSparseStream -- that's already implied * linbox/field/gf2.inl (class RandomDenseStreamGF2, class RandomSparseStreamGF2): Rename from specializations of RandomDenseStream and RandomSparseStream * tests/Makefile.am: Enable test-gf2 * linbox/vector/bit-vector.inl (BitVector::resize): Set _size * linbox/randiter/mersenne-twister.h (MersenneTwister::randomDoubleRange): Move this to the header file * linbox/randiter/mersenne-twister.C (randomInt): Make this not inline * linbox/field/gf2.inl (class RandomDenseStream): Use the Mersenne Twister (class RandomSparseStream): Use the Mersenne Twister * linbox/randiter/gf2.h (class GF2RandIter): Use the Mersenne Twister (GF2RandIter::random): Overload with two reference types rather than using template * linbox/field/gf2.h (class GF2): Eliminate template declarations; instead use manual overloading. This means we only support bool & and BitVector::reference. Use a straight bool on const parameters * linbox/vector/bit-vector.inl: Add inserter and extractor overloading for BitVector::(const_)reference * linbox/vector/Makefile.am (include_HEADERS): Add missing bit-vector.inl * linbox/randiter/Makefile.am (BASIC_HDRS): Add missing gf2.h 2003-03-16 Bradford Hovinen * linbox/util/commentator.C (Commentator::setMaxDepth, Commentator::setMaxDetailLevel): Use ++i, not i++ * linbox/vector/subvector.h (Subvector::at): Use const_reference rather than const reference * linbox/vector/reverse.h (ReverseVector): Use const_reference rather than const reference * linbox/util/commentator.h (class Commentator): Add setMaxDepth and setMaxDetailLevel to disabled commentator 2003-03-21 Austin Lobo * test-generic.h: added testApply(..) and testApplyTranspose(...) to testBlackBox, so that timings for these two operations can be obtained. * test-ntl-toeplitz.C, test-ntl-hankel.C: cosmetic changes to give slightly cleaner status message. * ntl-toeplitz.inl: modifications in the limits of iterations to take into account the possibility of rectangular matrices. 2003-03-20 Giorgi Pascal * linbox/field/givaro-zpz.h fix bugs for init function 2003-03-15 Bradford Hovinen * linbox/randiter/modular.h (RandIter::RandIter): Copy _size and _seed in copy constructor * linbox/vector/stream.h (class RandomSparseStream): Use MersenneTwister (class RandomSparseStream): Declare the base random iterator locally * linbox/randiter/modular.h (Modular::RandIter, Modular::RandIter): New specializations; use the new Mersenne Twister random number generator * linbox/randiter/Makefile.am (noinst_LTLIBRARIES): Add libranditer.la (libranditer_la_SOURCES): Add mersenne-twister.C (BASIC_HDRS): Add mersenne-twister.h * linbox/Makefile.am (liblinbox_la_LIBADD): Add libranditer.la 2003-02-07 Bradford Hovinen * linbox/matrix/Makefile.am (BASIC_HDRS): Add matrix-domain.{h|inl} * linbox/vector/Makefile.am (include_HEADERS): Add vector-domain.{h|inl} 2002-03-04 Pascal Giorgi * linbox/field/givaro-zpz.h added specialization for DotProductDomain and FieldAxpy * linbox/field/givaro-zpz.inl added specialization for DotProductDomain and FieldAxpy 2003-03-03 Zhendong Wan *linbox/matrix/matrix-domain.h, include header file linbox/vector/vector-domain.h 2003-02-26 Austin Lobo * linbox/blackbox/Makefile.am (include_HEADERS) : added ntl-hankel.h * linbox/blackbox/ntl-hankel.h: added to library after testing * linbox/blackbox/ntl-hankel.inl: added to library after testing * linbox/tests/test-ntl-hankel.C: added to library after testing * linbox/tests/Makefile.am: (test_ntl_hankel_SOURCES) added * linbox/tests/test-generic.h: minor changes to make output clearer. 2003-02-25 Zhendong Wan *linbox/blackbox/zero-one.h, zero-one.inl. Correct one typo. 2003-02-25 Zhendong Wan *linbox/blackbox/zero-one.h, zero-one.inl. Seperate the Intereface and i implementation, put them in seperate files.And make apply specialization for Modular work. 2003-02-24 David Saunders and Zhendong Wan * linbox/util/timer.h: #define __LINBOX_TIMER_H to avoid conflict with givaro timer * tests/Makefile.am: reinstate givaro test 2003-02-22 David Saunders * tests/test-solve.C: comment out "Sparse preconditioner", MethodTrait::Wiedemann::SPARSE It's segfaulting, likely due to Compose changes. * linbox/blackbox/transpose.h compose.h: remove cloning * linbox/blackbox/triplesbb.h: coupla "typename"s to remove warnings. * linbox/field/hom.h image-field.h: Introduce a scheme for homomorphic images with injections in extension fields in mind, isoms in mind, ints to modular in mind. Specializations are now needed. * tests/test-hom.C test-image-field.C: Add prototype tests for 'em. * tests/test-generic.h: make statistical randiter test more likely to pass. 2003-02-05 Bradford Hovinen * tests/Makefile.am (NTL_TESTS): Move test-ntl-toeplitz here (NTL_TESTS): Move test-gssv_rank here * tests/test-solve.C (testSingularPreconditionedSolve) (testSingularInconsistentSolve): Use version of solve without exceptions * linbox/solutions/solve.h (solve): Return WiedemannSolver return status rather than reference to solution vector. Require parameter for certificate of inconsistency. New version that throws exceptions * linbox/algorithms/wiedemann.h (class WiedemannSolver): Remove exception code; have all functions return a new enum ReturnStatus 2003-02-04 Bradford Hovinen * linbox/vector/stream.h (class RandomSparseStream): Remove specialization for dense vectors * tests/test-generic.h: Remove testFieldAXPY (runFieldTests): Remove call to testFieldAXPY * linbox/vector/vector-traits.h (struct VectorCategories): Add ZeroOneVectorTag, SparseVectorTag for GF(2) 2003-02-03 Bradford Hovinen * tests/test-vector-domain.C: Include test-generic.h * tests/test-generic.h (testRandomIterator): Move from test-modular.C here (testDotProduct, testAddMul, testSubMul, testAXPY, testCopyEqual): Move from test-vector-domain.C here * tests/test-rank.C (testEliminationRank): New test * linbox/matrix/sparse.h (class SparseMatrixBase): Add operator [] for row access (class SparseMatrixBase): Add typedef ConstRow * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Add random-rank * linbox/matrix/Makefile.am (BASIC_HDRS): Add dense-rows-matrix.h * linbox/vector/Makefile.am (include_HEADERS): Add bit-vector.h * linbox/field/Makefile.am (BASIC_HDRS): Add gf2.h, gf2.inl * linbox/algorithms/wiedemann.inl (makeLambdaSparseMatrix): Update RandomSparseStream * linbox/vector/stream.h (RandomSparseStream::RandomSparseStream): Put probability parameter before vector dimension * linbox/algorithms/gauss.h: Rename gauss_rankin as rankin and gauss_rank as rank * linbox/algorithms/block-lanczos.h (class BlockLanczosSolver): * linbox/algorithms/block-lanczos.inl (solve): * linbox/algorithms/lanczos.h (class LanczosSolver): * linbox/algorithms/lanczos.inl (solve): * linbox/solutions/solve.h (solve): * linbox/algorithms/wiedemann.h (class WiedemannSolver): * linbox/algorithms/wiedemann.inl: Port to new SolverTraits interface * linbox/solutions/methods.h (struct WiedemannTraits): Move Wiedemann-dependent traits here (struct LanczosTraits): Move Lanczos-dependent traits here (struct BlockLanczosTraits): New structure (struct SolverTraits): Parameterize by MethodTraits and include an instance thereof; remove all method-specific traits * linbox/matrix/dense.h (DenseMatrixBase::columnDensity): New function * linbox/matrix/archetype.h (MatrixArchetype::columnDensity, MatrixArchetype::transpose): New functions * linbox/matrix/sparse.h (SparseMatrixBase::columnDensity): New function * linbox/solutions/methods.h (struct RankTraits): New structure (struct MethodTrait): Add BlockLanczos 2003-03-4 Rich Seagraves * interfaces/maple/demonstration.mws: Finished * interfaces/maple/lbmaple.C: Fixed the final bugs with LinBoxV handling code. * interfaces/maple/lbmaple.mpl.tail: ditto. Also, renamed LBApply and LBApplyTranpose as LBaply and LBapplyTranspose to be like the rest of the names * interfaces/maple/lbmaple.mpl.tail: ditto. * configure.in: Removed a double reference to matrix/Makefile in AC_OUTPUT[...] 2003-03-4 Rich Seagraves * interfaces/maple/demonstration.mws: Updated file, should be working * interfaces/maple/README: Added file * interfaces/maple/lbmaple.mpl.tail: Edited final line, lbmaple.mpl script now puts LinBox module into global maple namespace when run 2003-02-3 Rich Seagraves * interfaces/maple/lbmaple.mpl.tail: Fixed some interface bugs * interfaces/maple/demosntration.mws: Updated file, it's almost finished 2003-01-30 Rich Seagrves * interfaces/maple/Makefile.am: * interfaces/maple/Makefile.in.2: * macros/maple-check.m4: Fixed bug in maple interface build setup * linbox/blackbox/triplesbb.h: Added missing _max() function 2003-01-30 Rich Seagraves * tests/Makefile.am: Added entry for test-zero-one.C * tests/test-zero-one.C: Fixed file, now complies with standard for tests * macros/maple-check.m4: Now install maple interface in "prefix" directory * interfaces/maple/Makefile.am: Ditto * interfaces/maple/Makefile.in.2: Ditto as well :-) * linbox/blackbox/triplesbb.h: Added file (copy of maplebb.h) * interfaces/maple/maplebb.h: Removed file * interfaces/maple/lbmaple.C: Now use TriplesBB blackbox instead of MapleBB * linbox/blackbox/zero-one.h: Removed some warnings 2003-01-30 Saunders * tests/test-scalar-matrix.C: simplify test to generic testBlackbox. * tests/test-*.C: modify " ... test suite" header line of output to be preceeded by blank line rather than followed. * linbox/blackbox/hilbert.h, tests/test-hilbert.C: fix hilbert example (for dense vector only) and insert a generic test 2003-01-29 Rich Seagraves * interfaces/maple/lbmaple.C: Killed all bugs * interfaces/maple/lbmaple.mpl.tail: Ditto * macros/maple-check.m4: Fixed problem with check whether specified maple dir IS actually valid maple distribution 2003-01-29 Ahmet Duran and David Saunders * examples/gen_superlu/*: examples added and also removed as a subdir within linbox, i.e. linbox/gen_superlu/example/ subdir. 2003-01-29 Ahmet Duran and David Saunders * linbox/gen_superlu/: directory and contents are a generic version of superlu created by Ahmet. Basics work but header comments and the like will be brought up to form in the near future, * tests/test-gssv_rank: a proto test for gen_superlu, improvements will come. * test/data/gssv_rank_data: input matrix for test-gssv_rank. 2003-01-29 Rich Seagraves * interfaces/maple/Makefile.am: Remove "if HAVE_MAPLE" check * interfaces/maple/lbmaple.C: Fixed some bugs, warnings * interfaces/maple/maplebb.h: Fixed some bugs, warnings * interfaces/maple/lbmaple.mpl.head: Changed formatting a bit * interfaces/maple/lbmaple.mpl.tail: Changed formatting a bit * macros/maple-check.m4: Requires the flag "--enable-shared" to build maple interface, made some fixes to ensure proper building of lbmaple.mpl, interface script * linbox/blackbox/zero-one.h: Fixed in-file test functions * tests/test-zero-one.C: Added test for ZeroOne blackbox 2003-01-20 Austin Lobo * linbox/field/ntl-RR.h: Corrected clashes with LinBox namespace 2003-01-20 Austin Lobo * tests/test-ntl-toeplitz.C: Corrected clashes with LinBox namespace * linbox/blackbox/ntl-toeplitz.inl: Corrected clashes with LinBox namespace * linbox/blackbox/ntl-toeplitz.h: Corrected clashes with LinBox namespace 2003-01-20 Austin Lobo * tests/Makefile.am: reinstated test-ntl-toeplitz * tests/test-generic.h: added LinBox namespace to commentator calls 2003-01-17 Bradford Hovinen * configure.in: Give a sane default for CFLAGS and CXXFLAGS 2003-01-17 David Saunders * CHANGED-INTERFACES: coupla edits to bring this summary up to date a bit 2003-01-16 Bradford Hovinen * configure.in: Disable shared again 2003-01-14 David Saunders *linbox/linbox.dxx, interfaces.dxx: Text edits. interfaces.dxx should be renamed archetypes.dxx. Much text added to interfaces.dxx, some of it speculative. Further editing definitely desirable. 2003-01-14 Bradford Hovinen * linbox/matrix/matrices.dxx: Add missing * interfaces/maple/Makefile.am (mapledir): Put all build rules inside a conditional * configure.in: Add linbox/matrix/Makefile * linbox/matrix/matrix-domain.h: Move from linbox/field * linbox/matrix/matrix-domain.inl: Move from linbox/field * linbox/vector/vector-domain.h: Move from linbox/field * linbox/vector/vector-domain.inl: Move from linbox/field/vector-domain.C 2003-01-11 Bradford Hovinen * linbox/blackbox/Makefile.am (BASIC_HDRS): Remove files listed below * */*.{h|C|inl}: Update to reflect changes below; s/SparseMatrix0/SparseMatrix/ * linbox/matrix/dense.h: Move from blackbox/dense-base.h * linbox/matrix/dense.inl: Move from blackbox/dense-base.inl * linbox/matrix/sparse.h: Move from blackbox/sparse-base.h * linbox/matrix/sparse.inl: Move from blackbox/sparse-base.inl * linbox/matrix/transpose.h: Move from blackbox/transpose-matrix.h * linbox/matrix/dense-submatrix.h: Move from blackbox/dense-submatrix.h * linbox/matrix/dense-submatrix.inl: Move from blackbox/dense-submatrix.inl * linbox/Makefile.am (SUBDIRS): Add matrix 2003-01-09 Bradford Hovinen * linbox/solutions/det.h (det): Give correct solution when deg minpoly is odd 2003-01-08 Brad Botting * linbox/blackbox/dense.h (DenseMatrix::read, DenseMatrix::write): Use fully-qualified name for calling overloaded read and write 2003-01-08 Rich Seagraves * linbox/blackbox/dif.h (very top): changed __TRANSPOSE_H to __DIF_H in the preprocessor test directive at the top of the file * linbox/blackbox/sum.h (very top): changed __TRANSPOSE_H to __SUM_H in the preprocessor test directive at the top of the file * linbox/blackbox/zero-one.h: begin implementing modular template specialization * linbox/util/timer.h (class Timer): change members ut, st, and rt into private members instead of public members (changed second appearance of "public" to "private"). 2003-01-08 Saunders * tests/test-dif.C, blackbox/dif.h: difference of two matrices. Minor tweak on sum.h. 2003-01-08 Bradford Hovinen * linbox/blackbox/dense.h (DenseMatrix::write): Use os, not file * tests/test-matrix-domain.C (testMatrixDomain): Don't refer to stream.dim when constructing stream (remaining two specializations) 2003-01-07 Brad Botting * linbox/switch/Makefile.am (includedir): Install to switch, not vector 2003-01-07 Bradford Hovinen * linbox/algorithms/block-lanczos.h: Undefine _S, _M, _N for the benefit of Solaris 2003-01-07 Bradford Hovinen * linbox/algorithms/wiedemann.h: #include sparse.h * tests/test-matrix-domain.C (testMatrixDomain): Don't refer to stream.dim when constructing stream 2002-1-7 Saunders * tests/test-subvector.cpp: removed. Superceded by test-subvector.C 2002-1-6 Rich Seagraves * linbox/algorithms/massey-domain.h: changed swap() to std::swap() * linbox/randiter/modular.h: changed endl to std::endl in commentator line * linbox/blackbox/zero-one.h: added RawIterator and RawIndexIterator support to ZeroOne blackbox 2003-01-06 Bradford Hovinen * tests/test-common.C: #include 2002-12-23 Bradford Hovinen * tests/test-common.h: Add incompleteGamma, chiSquaredCDF * tests/test-modular.C (testRandomIterator): New test (main): Call testRandomIterator 2002-12-18 Bradford Hovinen * linbox/* (LinBox): Doc++ fixes * configure.in: Add check for latex 2002-12-16 Rich Seagraves * linbox/blackbox/zero-one.h: Added file * linbox/blackbox/nag-sparse.h: Fixed some errors 2002-12-11 Bradford Hovinen * linbox/util/commentator.h: Include streambuf * linbox/blackbox/butterfly.h (buildIndices): Remove check that _n is nonnegative, since _n is unsigned * linbox/blackbox/dense-base.inl (ColIterator::operator +): Make this non-const (ConstColIterator::operator +): Ditto * linbox/blackbox/diagonal.h (class Diagonal): * linbox/blackbox/moore-penrose.h (class MoorePenrose): * linbox/blackbox/butterfly.h (class Butterfly): * linbox/blackbox/dense.h (class DenseMatrix): * linbox/blackbox/compose.h (class Compose): * linbox/blackbox/scalar-matrix.h (class ScalarMatrix): Parameterize on _Vector and typedef Vector * linbox/field/modular.h: Cast to signed quantities when comparing with 0 (LinBox): Add template <> when needed * linbox/blackbox/butterfly.h (setButterfly): Eliminate unused j_1, j_2 (setButterfly): Eliminate check for j < 0, as we are dealing with unsigned quantities * linbox/blackbox/archetype.h (class BlackboxArchetype): Remove std:: from size_t * linbox/algorithms/block-lanczos.inl (eliminate_col) (find_pivot_row, permute): Take an std::vector for indices rather than a pointer (compute_Winv_S): Use _indices; don't declare indices (compute_Winv_S, find_pivot_row, eliminate_col): Make these non-const * linbox/algorithms/block-lanczos.h (class BlockLanczosSolver): Add vector _indices * linbox/blackbox/sparse-base.inl (refEntry): * linbox/field/vector-domain.C: Make sure there's an std:: before pair * linbox/util/debug.C: * linbox/field/lidia-gfq.h: * linbox/util/debug.h: * linbox/blackbox/archetype.h: Get rid of 'using namespace std' * linbox/blackbox/transpose.h (class Transpose): Use linbox_check * linbox/blackbox/sparse.h: * linbox/vector/stream.h: Parameterize all classes by _Vector and typedef to Vector * linbox/field/modular.h: * tests/test-common.C: * linbox/util/debug.h: * linbox/field/vector-domain.C: * linbox/field/vector-domain.h: * linbox/blackbox/sparse-base.inl: Make sure there's an std:: before iostream references * gmp++/gmp++_int.inl: Move constructor and destructor definitions to gmp++_int.h to avoid compiler complaints 2002-12-09 Bradford Hovinen * linbox/blackbox/dense-base.inl (RowIterator): Add operator += (ColIterator): Ditto 2002-12-10 Bradford Hovinen * tests/test-solve.C (main): Add CLI option for blocking factor * linbox/algorithms/lanczos.inl (iterate): Use DETAILED_TRACE ala block-lanczos.inl * linbox/solutions/methods.h (SolverTraits::Preconditioner): Add DEFAULT * linbox/algorithms/wiedemann.inl (precondition): Add default case label for unsupported preconditioners * linbox/solutions/solve.h (solve): Add support for Block Lanczos * tests/test-solve.C (testRandomSolve): New test (main): Add calls to testRandomSolve for Lanczos and Block Lanczos * linbox/solutions/methods.h (SolverTraits::Method): Add BLOCK_LANCZOS (struct SolverTraits): Add _blockingFactor and related methods * linbox/algorithms/Makefile.am (include_HEADERS): Add block-lanczos.{h|inl} * linbox/algorithms/lanczos.inl (solve): Import code from block-lanczos.inl to support more preconditioner types 2002-12-09 Bradford Hovinen * configure.in: Bump version number to 0.1.4 2002-12-07 Bradford Hovinen * linbox/util/commentator.C (Commentator::finishActivityReport): Show the timings in the finalized report, if requested * linbox/field/modular.h (Modular::negin): Fix in case where x == 0 * linbox/util/commentator.C (Commentator::printActivityReport): Reset _last_line_len if no length is given * linbox/field/vector-domain.C (axpyinSpecialized): Add explicit specializations for Dense/* * linbox/field/matrix-domain.inl (mulColSpecialized): Fix non-dense code * linbox/field/matrix-domain.h (MatrixDomain::mulColSpecialized): Create specializations for dense/* and have everything route to that combination * linbox/solutions/methods.h (SolverTraits::Preconditioner): Add SYMMETRIZE, PARTIAL_DIAGONAL, and FULL_DIAGONAL 2002-12-06 Bradford Hovinen * linbox/blackbox/sparse-base.inl (write): Tweak output slightly * linbox/blackbox/sparse.h (class MatrixTraits): Define specialization for SparseMatrix0 * linbox/blackbox/dense-base.inl (ConstRowIterator::operator +): Don't return a reference (write): Tweak output slightly 2002-12-05 Rich Seagaves * interfaces/maple/Makefile.in.1: fixed a small break in the build stage 2002-12-01 Rich Seagraves * interfaces/maple/Makefile.blank: removed, not needed * interfaces/maple/lbmaple.mpl: also removed * interfaces/maple/Makefile.in.1: * interfaces/maple/Makefile.in.2: added files * macros/maple-check.m4: modified for new maple build system * interfaces/maple/lbmaple.C: fixed a bunch of boo-boo's * interfaces/maple/maplebb.h: fixed a boo-boo 2002-12-01 Rich Seagraves * interfaces/maple/lbmaple.C: * interfaces/maple/lbmaple.mpl.head: * interfaces/maple/lbmaple.mpl.tail: * interfaces/maple/maplebb.h: * interfaces/maple/Makefile.am: * interfaces/maple/Makefile.blank: * interfaces/maple/demonstration.mws: * macros/maple-check.m4: Added files for interface * configure.in: Added checks for interface build, installation 2002-12-01 Bradford Hovinen * configure.in (AC_OUTPUT): Add missing interfaces/Makefile 2002-11-30 Bradford Hovinen * linbox/field/matrix-domain.inl (axpyinRowRowRow) (axpyinColColCol): Fix allocation sizes for t * tests/test-matrix-domain.C (testInvMul, testInvLeftMulin, testInvRightMulin): Split these into three cases: square, over-determined, and under-determined. Use the product of the matrix and its transpose (in the appropriate order) in the latter cases * linbox/algorithms/block-massey-domain.h (class MasseyBlockDomain): Make _MD a MatrixDomain * linbox/field/matrix-domain.inl: Comment out pow_apply and pow_horn * linbox/blackbox/sparse-base.h (class SparseMatrix0WriteHelper) (class SparseMatrix0ReadWriteHelper): Compilation fixes (class SparseMatrix0Base): Update iterator interfaces to match the dense matrix archetype (class SparseMatrix0Base): Make Row a typedef of _Row * linbox/blackbox/dense.h (DenseMatrix::read, DenseMatrix::write): Swap order of arguments for consistency * linbox/blackbox/dense-submatrix.h (DenseSubmatrix::DenseSubmatrix): Take a reference rather than a pointer * linbox/blackbox/dense-base.inl (ConstRowIterator::operator ++) (RowIterator::operator ++): Use ++*this rather than ++_row * tests/Makefile.am (BASIC_TESTS): Add test-matrix-domain * linbox/randiter/modular.h (ModularRandIter::ModularRandIter): clock was always returning 0, so go back to time (NULL) * linbox/blackbox/sparse.h (SparseMatrix0::write): Make FORMAT_PRETTY the default * linbox/blackbox/sparse-base.h (SparseMatrix0Base::write): Make FORMAT_PRETTY the default * linbox/field/Makefile.am (BASIC_HDRS): Add matrix-domain.h, matrix-domain.inl * linbox/util/commentator.C (Commentator::printActivityReport): (Commentator::updateActivityReport): (Commentator::finishActivityReport): Don't indent * tests/test-trace.C: * tests/test-sum.C: * tests/test-submatrix.C: * tests/test-sparse.C: * tests/test-solve.C: * tests/test-rank.C: * tests/test-moore-penrose.C: * tests/test-minpoly.C: * linbox/blackbox/dense-base.inl: * linbox/blackbox/sparse-base.inl: * tests/test-matrix-domain.C: * tests/test-inverse.C: * tests/test-diagonal.C: * tests/test-det.C: * tests/test-dense.C: * tests/test-butterfly.C: * tests/test-vector-domain.C: * tests/test-generic.h: Eliminate calls to commentator.indent * linbox/util/commentator.C (Commentator::report): Don't initially indent * linbox/util/commentator.h (class MessageClass): Define smartStreambuf, build _stream from that; add Commentator to all constructors; add copy constructor * linbox/util/commentator.C (Commentator::indent): Make this const 2002-11-29 Bradford Hovinen * linbox/field/vector-domain.h (class VectorDomain): Add support for add/sub/mul/axpy with vectors of different representations, using GenericVectorTag to control the number of specializations required * linbox/vector/vector-traits.h (struct VectorCategories): Add GenericVectorTag; make everything else inherit that * linbox/blackbox/dense-base.inl (DenseMatrixBase::read): Return the input stream * linbox/blackbox/dense-base.h (DenseMatrixBase::read, DenseMatrixBase::write): Swap order of arguments, to be consistent with SparseMatrix0Base * linbox/blackbox/dense-base.h: * linbox/blackbox/dense-submatrix.h: * linbox/blackbox/sparse-base.h: Add struct MatrixTraits * linbox/blackbox/dense-base.h: * linbox/blackbox/sparse-base.h: * linbox/blackbox/dense-submatrix.h: Make Element a typedef from _Element 2002-11-28 Bradford Hovinen * linbox/blackbox/dense-submatrix.h (class DenseSubmatrix): Use a reference rather than a pointer * linbox/blackbox/sparse-base.h (class SparseMatrix0ReadWriteHelper): Make all methods const 2002-11-26 Bradford Hovinen * linbox/blackbox/Makefile.am (BASIC_HDRS): Add transpose-matrix.h * linbox/blackbox/dense-submatrix.h (struct MatrixTraits): Define * linbox/blackbox/dense-base.h (struct MatrixTraits): Define * linbox/field/matrix-domain.h (struct MatrixCategories) (struct MatrixTraits): Define * linbox/field/matrix-domain.inl: Moved all the arithmetic from matrix-domain.C here, in accordance with the convention * linbox/field/matrix-domain.h: Added detailed documentation, cleaned up the interface slightly, and added support for matrix traits. Added read, write, neg, negin, axpy, matrix-vector and matrix-black box operations * linbox/field/vector-domain.h (class VectorDomain): Extend axpyin so that it can work with vectors of more than one representation. Create specializations for input and output vectors of different representations that just use copy. For the benefit of MatrixDomain 2002-11-27 Rich Seagraves and David Saunders * interfaces, interfaces/maple: directories added to hold the Maple linbox interface (which Rich will put there soon ). * Makefile.am interfaces/Makefile.am: subdir entries. 2002-10-29 Bradford Hovinen * linbox/blackbox/dense-base.inl (ColIterator::operator +): Make this work like a real + operator (RowIterator::operator +): Ditto (RowIterator, ConstRowIterator): Fixed some ID10T errors 2002-10-28 Bradford Hovinen * linbox/blackbox/dense-submatrix.inl: Ditto below * linbox/blackbox/dense-base.h: Rename ColOfRowsIterator as RowIterator; similarly with RowOfColsIterator 2002-10-28 Zhendong Wan and David Saunders * linbox/blackbox/dense.h: tweak doc++, delete RowIterator and ColIterator types in matrix class. Change name of RawIndexIterator to RawIndexedIterator. * linbox/blackbox/dense.inl: update impl to reflect dense.h changes. 2002-10-28 Bradford Hovinen * tests/test-trace.C (testDiagonalTrace): Make sure vectors get declared to the right length * tests/test-sum.C (testZeroApply): Make sure vectors get declared to the right length * linbox/vector/stream.h (RandomSparseStream::get, RandomDenseStream::get): Don't try to resize the vector * linbox/blackbox/dense-base.inl (write): Make output format a little prettier * linbox/algorithms/lanczos.inl (solve): Length of b1 should be row dimension of A * linbox/field/vector-domain.h (neg, negin): Add these interfaces and implement (class VectorDomain): Parameterize arithmetic methods by separate vector types for each vector argument. Though they do not support arithmetic on different vector *representations* at the same time, one can use this to, say, add a column vector into a standalone vector 2002-10-27 Bradford Hovinen * linbox/blackbox/dense.inl: * linbox/blackbox/dense.h: Split out container/iterator functionality into new DenseMatrixBase * linbox/blackbox/Makefile.am (BASIC_HDRS): Add dense-submatrix.h, dense-submatrix.inl * linbox/blackbox/dense.inl (read): Compilation fix (write): Prefer ISO standard outputs * linbox/blackbox/dense-submatrix.inl: Rename from densesubmatrix.C * linbox/blackbox/dense-submatrix.h (class DenseSubmatrix): Fix constructor interface; add interfaces missing from DenseMatrix; add Doc++ documentation; reindent * linbox/blackbox/dense-submatrix.h: Rename from densesubmatrix.h * linbox/blackbox/dense.h (DenseMatrix::refEntry): Define (class DenseMatrix): Reorder the declarations to match SparseMatrix0Base; reindent; add Doc++ documentation to the interfaces (DenseMatrix::getEntry): Add a form that returns a read-only reference to the entry (class DenseMatrix): Make generic wrt vector type (class DenseMatrix): Move some of the one-liners from dense.inl into the class (DenseMatrix::resize): Implement * macros/saclib-check.m4: * macros/givaro-check.m4: * macros/lidia-check.m4: * macros/ntl-check.m4: * macros/gmp-check.m4: Preserve user-specified CXXFLAGS and LIBS when running test 2002-10-26 Bradford Hovinen * tests/Makefile.am (CLEANFILES): Add $(TESTS) * .cvsignore: Update * acconfig.h: Remove this file * macros/gmp-check.m4: * macros/ntl-check.m4: * macros/lidia-check.m4: * macros/givaro-check.m4: * macros/saclib-check.m4: Use modernized AC_DEFINE * configure.in: Bump version to 0.1.3 * .cvsignore: * tests/.cvsignore: Update * tests/test-solve.C (testIdentitySolve, testNonsingularSolve): Don't explicitly give whether the matrix is symmetric * linbox/algorithms/Makefile.am (include_HEADERS): Add lanczos.{h|inl} * linbox/solutions/solve.h (solve): Add support for Lanczos iteration * tests/test-solve.C (testIdentitySolve, testNonsingularSolve) (testSingularConsistentSolve, testSingularInconsistentSolve): Add support for specifying the solver to be used (testSingularPreconditionedSolve): Add support for specifying the preconditioner to be used 2002-10-14 Bradford Hovinen * linbox/algorithms/wiedemann.inl (solveNonsingular): Add support for symmetric containers, using _traits.symmetric * linbox/algorithms/blackbox-container-symmetric.h (class BlackboxContainerSymmetric): Add parameter for the field * linbox/solutions/methods.h (struct SolverTraits): Add parameter symmetric, telling whether the matrix is symmetric * tests/test-solve.C: Update with changes to solve 2002-10-13 Bradford Hovinen * linbox/solutions/methods.h (struct SolverTraits): Add documentation; remove unimplemented string constructor * linbox/solutions/solve.h (solve): Add a variant that does not throw any exceptions * linbox/solutions/methods.h (struct SolverTraits): Make default maxTries 100 * linbox/solutions/methods.h (class InconsistentSystem, class SolveFailed): Move these from WiedemannSolver here, since they apply to more than just Wiedemann 2002-10-09 Bradford Hovinen * linbox/blackbox/ntl-toeplitz.inl: Compilation fixes * tests/test-ntl-toeplitz.C: Compilation fixes 2002-10-03 Bradford Hovinen * linbox/switch/cekstv.h (applyTranspose, apply): Fix formulae * linbox/algorithms/wiedemann.inl (findNullspaceElement) (findRandomSolution): Pass _randiter to RandomDenseStream constructor * linbox/algorithms/wiedemann.h (class WiedemannSolver): Add constructor that accepts random iterator * linbox/algorithms/wiedemann.inl (solveNonsingular) (precondition, makeLambdaSparseMatrix): Use _randiter (solveNonsingular): Add parameter useRandIter to determine whether to use the random iterator, or to use b for the Krylov sequence computation (findNullspaceElement, certifyInconsistency): Remove preconditioner support (solveSingular): Use non-preconditioned A for certificate of inconsistency (makeLambdaSparseMatrix): Use the existing randiter, since RandomSparseStream already constructs a NonzeroRandIter (certifyInconsistency): Pass _randiter to WiedemannSolver constructor * linbox/algorithms/wiedemann.h (class WiedemannSolver): Add _randiter * linbox/algorithms/wiedemann.inl (solveSingular): Throw a BadPreconditioner exception if the reason for failure was a bad preconditioner, since this means the rank computation was probably correct and can be reused (solveSingular): Move rank computation to solve (solve): Compute rank and try to reuse when possible; set rank to (unsigned long) -1 when SolveFailed thrown * tests/test-solve.C (testSingularPreconditionedSolve): Return success value rather than always returning true * linbox/randiter/modular.h (LinBox): Use clock () rather than time (NULL) to get a higher-resolution timer * tests/test-solve.C (testSingularPreconditionedSolve): Don't fill matrix with 1's; just build a diagonal black box 2002-10-02 Bradford Hovinen * linbox/algorithms/wiedemann.h: Refactoring: Put everything inside a WiedemannSolver class, with the following interface solveNonsingular - Solve a nonsingular system solveSingular - Solve a general singular system findRandomSolution - Find a random solution to a singular preconditioned problem findNullSpaceElement - Find an element of the right nullspace certifyInconsistency - Find a certificate of inconsistency for a linear system precondition - Form a preconditioner and return it * tests/test-solve.C (testSingularPreconditionedSolve) (testSingularInconsistentSolve, testSingularConsistentSolve): Update according to interface changes in wiedemann.h * linbox/field/vector-domain.C (VectorDomain::writeSpecialized): Remove debugging code * tests/test-butterfly.C (main): Use Modular and make GF(2147483647) the default (testCekstvSwitch): Use preconditioner PDQ rather than just PD * tests/test-solve.C (testSingularPreconditionedSolve): Always return true * linbox/blackbox/moore-penrose.h (MoorePenrose::MoorePenrose): Update use of Submatrix * tests/test-moore-penrose.C (testRandomApply1): Update use of Submatrix * tests/test-solve.C (main): Reenable tests other than preconditioned solve * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Implement sparse preconditioner * linbox/blackbox/sparse-base.h (class SparseMatrix0Base): Add method transpose (class SparseMatrix0Base): Rename VectorTrait as RowTrait in specializations * linbox/blackbox/sparse-base.inl (transpose): Implement 2002-09-30 Bradford Hovinen * linbox/solutions/methods.h (struct SolverTraits): Add enum Preconditioner; rename precondition to preconditioner; add methods to set parameters (SolverTraits::SolverTraits): Initialize _singular with singular, not UNKNOWN * linbox/vector/stream.h (RandomSparseStream::setP): Implement * tests/test-butterfly.C (testSetButterfly): Reset the stream * tests/test-solve.C (testSingularPreconditionedSolve): Use a SparseMatrix0 and fill in the entries below the zeros with 1's * tests/test-butterfly.C (testCekstvSwitch): Ditto 2002-09-26 Bradford Hovinen * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Construct a CekstvSwitchFactory and use it as input for the CekstvSwitch constructor (solveWiedemannSingular): Commentator fixes * linbox/blackbox/butterfly.h (class Butterfly): Parameterize on the field, give a reasonable default for Vector * linbox/switch/boolean.h (class BooleanSwitch): * linbox/switch/cekstv.h (class CekstvSwitch): Don't maintain vector of 2x2 block information; just hold data for one 2x2 block; eliminate field and temporary * linbox/blackbox/butterfly.h (Butterfly): Make the vector of switches (class Butterfly): Constructor reorganization; see header file 2002-09-25 Bradford Hovinen * linbox/switch/cekstv.h (class CekstvSwitch): Add copy constructor (CekstvSwitch::CekstvSwitch): Implement copy constructor * tests/test-butterfly.C (testRandomTranspose) (testRandomLinearity): Implement these tests (testCekstvSwitch): Construct a random vector and pass it to CekstvSwitch * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Prepare rhs before obtaining minpoly * linbox/blackbox/submatrix.h (Submatrix::apply, Submatrix::applyTranspose): Fill unused portions of temporary input vector with zeros (class Submatrix): Parameterize by field (class Submatrix): Give a reasonable default for the vector type * tests/test-submatrix.C (testRandomLinearity) (testRandomTranspose): Implement these tests * linbox/blackbox/submatrix.h (Submatrix::Submatrix): Initialize _z with column dimension * tests/test-submatrix.C (testRandomApply): Make vector output LEVEL_UNIMPORTANT (testRandomTranspose): Implement this * linbox/blackbox/submatrix.h (class Submatrix): Make _z, _y mutable; delete _zt, _yt (Submatrix::apply, Submatrix::applyTranspose): Don't declare local vectors * tests/test-submatrix.C (testRandomApply): Reset stream when done (testRandomLinearity): Implement this test 2002-09-23 Bradford Hovinen * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Don't use DenseVector (solveWiedemann): Compute m_A rather than m_A,b (solveWiedemannSingular): Fix generator for random solution (solveWiedemannSingular): Add butterfly preconditioner support (solveWiedemannSingular): Cancel this loop iteration if the leading principal minor turned out to be singular * tests/test-solve.C (testSingularConsistentSolve): Implement (testNonsingularSolve): Rename from testDiagonalSolve (testSingularInconsistentSolve): Implement * linbox/algorithms/cra.h (cra): Use unsigned long in casts (cra): Fix order of arguments to invmod (cra): Reduce the result modulo the product of the primes * linbox/blackbox/sparse-base.h (_RawIndexIterator::operator ++): Update _curr.second properly * linbox/util/prime-stream.h (PrimeStream::next): Move _curr by 2 * linbox/algorithms/cra.h (cra): Invoke commentator * linbox/solutions/det.h (det): Invoke commentator * tests/test-det.C (testIntegerDet): Implement this test (main): Call testIntegerDet * linbox/blackbox/sparse.inl (makeBlackbox): Implement (smarter version now, taking over for the constructor that was removed) * linbox/blackbox/sparse.h (class SparseMatrix0): Remove constructor from SparseMatrix0Base -- this will be handled by SparseMatrixFactory from now on * linbox/blackbox/sparse-base.h (class SparseMatrix0Base::RawIterator): Remove _A, add _A_end; add default constructor; update other constructors (class SparseMatrix0Base::RawIndexIterator): Ditto (class SparseMatrix0Base): Remove implementations from default class (class SparseMatrix0Base::RawIterator): Make this a parameterized class to allow const version to be defined easily (N.B. I hate C++) (class SparseMatrix0Base::RawIndexIterator): Same as RawIterator (N.B. Same note applies, doubly so) * linbox/blackbox/sparse.h (SparseMatrixFactory): Pull declaration of tmp out of the loop * tests/test-det.C (testDiagonalDet2): Don't specify template parameters explicitly (testSingularDiagonalDet): Ditto * linbox/blackbox/factory.h: Include vector-traits.h * gmp++/gmp++_int.h (Integer::invmod): Make this static * linbox/algorithms/cra.h (cra): Compilation fixes * linbox/solutions/det.h (det): Compilation fixes * linbox/blackbox/sparse.h (class SparseMatrixFactory): Make sure SparseMatrix0Base is used with its own element and row types * linbox/blackbox/factory.h (BlackboxFactory::makeBlackbox): Make F const * linbox/algorithms/cra.h (cra): Use integer:: on integer operations * linbox/blackbox/sparse-base.h (class SparseMatrix0Base): Provide a reasonable default for Row; clean up template declaration * linbox/blackbox/sparse.h (class SparseMatrix0): Clean up template declaration 2002-09-22 Bradford Hovinen * linbox/blackbox/sparse-base.inl (write): Add support for FORMAT_MATLAB in sparse parallel specialization (write): Write closing bracket; put opening bracket at the beginning of the matrix, not the beginning of each row * linbox/blackbox/sparse.h (SparseMatrixFactory::maxNorm, SparseMatrixFactory::rowdim, SparseMatrixFactory::coldim): Implement * linbox/util/gmp++/gmp++_int_gcd.C (invmod): Implement * gmp++/gmp++_int.h (class Integer): Add invmod * linbox/field/modular.h (class ModularBase): Remove assignment operator (Modular::operator =): Copy documentation from ModularBase; use F rather than rhs; copy _two_64 rather than calling init again * linbox/util/gmp++/gmp++_int_misc.C (nextprime, prevprime): Implement Include cmath * gmp++/gmp++_int.h (class Integer): Add nextprime, prevprime * linbox/blackbox/factory.h (class BlackboxFactory): Make a reasonable default for Vector * linbox/Makefile.am (BASIC_HDRS): Add rational.h * linbox/rational.h: Add this file * tests/test-butterfly.C (testBooleanSwitch): Remove this test; it is redundant * linbox/switch/cekstv.h (class CekstvSwitch): Make _iter, _riter, and _R mutable * linbox/blackbox/diagonal.h (class Diagonal): Give a reasonable default for Vector * tests/test-butterfly.C (testSetButterfly): Use stock typedef for dense vectors (testCekstvSwitch): Implement 2002-09-21 Bradford Hovinen * linbox/solutions/det.h (det): Add versions for integer and rational determinant Comilation fixes * examples/dot-product.C (main): Update according to new interfaces; remove unnecessary typedefs * linbox/vector/vector-traits.h (class RawVector): Rename from Vector; parameterize on Element rather than Field (class Vector): Declare to inherit RawVector * linbox/blackbox/sparse.h (class SparseMatrixFactory): Don't require that the field and the SparseMatrixBase share the same element type * examples/blackbox/.cvsignore: Update * linbox/field/modular.h: Reinsert two deleted lines * linbox/util/commentator.C (Commentator::printActivityReport): Don't print percentage unless _len is positive 2002-09-21 Rich Seagraves * linbox/field/modular.h: Added = assignment operator. 2002-09-21 Bradford Hovinen * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Add load-minpoly * linbox/blackbox/sparse-base.inl (readMatlab): Use is.putback, not is.unget * linbox/blackbox/sparse-base.h (SparseMatrix0WriteHelper::Format): Add FORMAT_MATLAB 2002-09-20 Bradford Hovinen * linbox/randiter/param-fuzzy.h (ParamFuzzyRandIter::random): Uncomment ElementAbstract version Include element/abstract.h, element/envelope.h * linbox/field/param-fuzzy.h: Reintroduce forward declaration of RandIter; move include randiter/... to the end * linbox/randiter/param-fuzzy.h (class ParamFuzzyRandIter): Add a version of the constructor that *really* takes a field as an argument * tests/test-param-fuzzy.C (main): Add arguments n and i; call runFieldTests * tests/test-lidia-gfq.C (main): Add arguments n and i; fix description text for argument q; call runFieldTests * tests/test-ntl-RR.cpp (main): * tests/test-unparametric-field.C (main): Return 0 always * linbox/randiter/unparametric.h (UnparametricRandIter::random): Remove debugging code * tests/test-unparametric-field.C (main): * tests/test-ntl-RR.cpp (main): * tests/test-ntl-ZZ_p.cpp (main): * tests/test-ntl-zz_p.cpp (main): Add arguments n and i; call runFieldTests * tests/test-gmp-rational.C (main): * tests/test-givaro-zpz.C (main): * tests/test-modular.C (main): Reverse order of iterations and n when calling runFieldTests * tests/test-generic.h: Do b / a rather than a / b * tests/test-givaro-zpz.C (main): Add arguments n and i; fix description text for argument q; call runFieldTests (main): Don't print out separate headers for each test; just use the runFieldTests wrapper. (main): Add a parameter e and a field F5 which is GF(q^e); run a test on that * linbox/randiter/gmp-rational.h: Reindent (GMPRationalRandIter::random): Initialize value properly (GMPRationalRandIter::random): Canonicalize before returning * linbox/field/gmp-rational.h: * linbox/element/gmp-rational.h: Reindent * linbox/randiter/gmp-rational.h (class GMPRationalRandIter): Fix compile errors * tests/test-generic.h (runFieldTests): Move from test-modular.C here * linbox/field/gmp-rational.h (GMPRationalField::GMPRationalField): Initialize all the const integers (class GMPRationalField): Make integers not static const; fix compile errors * linbox/blackbox/dense.inl (apply): Remove unused variables (applyTranspose): Remove unused variables * linbox/blackbox/dense.h: Include vector-domain.h * linbox/blackbox/sparse1.h: Fix compile warning * examples/mmZZ_pE.C: Fix header and indentation; include dense.h rather than dense-matrix1.h 2002-09-18 zhendong wan * linbox/blackbox/dense.h Add RawIndexIterator, which looks like RawIterator expect that it has two more member function. rowIndex returns the row index, colIndex returns the column index. 2002-09-17 Bradford Hovinen * linbox/solutions/det.h (det): Use commentator.start / commentator.stop * linbox/field/vector-domain.h (VectorDomain::copySpecialized): Don't call resize * linbox/blackbox/dense.h (class DenseMatrix): Remove template parameter from VectorStream constructor; support a different vector type in the representation * tests/.cvsignore: Update * linbox/blackbox/dense.h (class DenseMatrix): Add constructor that takes a VectorStream 2002-09-16 Bradford Hovinen * linbox/blackbox/dense.h (class DenseMatrix): Define a vector domain _VD * linbox/blackbox/dense.inl (applyTranspose, apply): Use vector domain 2002-09-15 Bradford Hovinen * linbox/blackbox/sparse-base.h (class SparseMatrix0ReadWriteHelper): Add readMatlab (SparseMatrix0WriteHelper::Format): Add FORMAT_MATLAB (SparseMatrix0Base::Format): Add FORMAT_MATLAB * linbox/blackbox/sparse-base.inl (write, read): Add support for FORMAT_MATLAB (readMatlab): Implement 2002-09-12 Bradford Hovinen * configure.in (EIGHT_BYTES): Fix typo 2002-09-11 Rich Seagraves * linbox/blackbox/nag-sparse.h: Add RawIterator and RawIndexIterator support, altered test suite appropriately * linbox/blackbox/archetype.h: include cstddef to ensure support for size_t type. 2002-09-10 Bradford Hovinen * tests/test-generic.h (testFieldInversion): Make sure a is nonzero 2002-09-09 Bradford Hovinen * configure.in: Support older versions of autoconf that give AC_SIZEOF results in bits 2002-09-09 Saunders & Wan * solutions/lu.h: add comments 2002-09-08 Bradford Hovinen * examples/blackbox/load-det.C: Cut out unnecessary typedefs * linbox/blackbox/sparse.h (class SparseMatrixFactory): Define (class SparseMatrix0): Introduce default of Dense for vector type 2002-09-08 Bradford Hovinen * .cvsignore: Update * linbox/vector/stream.h (class RandomDenseStream, class RandomSparseStream): Set default vector types to dense and sparse, respectively * linbox/vector/vector-traits.h: Add class Vector with canonical vector types * linbox/vector/Makefile.am (include_HEADERS): Add stream.h * linbox/util/Makefile.am (include_HEADERS): Remove vector-factory.h * tests/test-trace.C: * tests/test-sum.C: * tests/test-submatrix.C: * tests/test-minpoly.C: * tests/test-inverse.C: * tests/test-diagonal.C: * linbox/solutions/trace.h: * linbox/algorithms/wiedemann.h: * tests/test-butterfly.C: * linbox/algorithms/wiedemann.h: * tests/test-generic.h: * tests/test-vector-domain.C: * tests/test-solve.C: * tests/test-moore-penrose.C: * tests/test-sparse.C: Update with changes to linbox/vector/stream.h * tests/test-moore-penrose.C (buildRandomSparseMatrix): Work with sparse parallel vectors 2002-09-05 Bradford Hovinen * linbox/vector/stream.h: - Renamed to stream.h and moved to linbox/vector - VectorFactory is now called VectorStream, which fits its purpose somewhat better - The interface is now closer to the interface for istream - RandomDenseVectorFactory, et al. are refactored into classes parameterized on the vector type and specialized appropriately. This allows, e.g. construction of a random dense vector in sparse representation and so on. - New constructor interface for RandomSparseStream accepts proportion of nonzero entries - Reindented, since the other changes are so numerous that diffs aren't a big deal anyway * linbox/blackbox/archetype.h: s/stddef.h/cstddef/ 2002-09-04 * tests/test-vector-domain.C (main): Remove srand call * examples/blackbox/load-symmetrize.C (main): Remove srand call (main): Fix help text * examples/blackbox/load-det.C (main): Remove srand call 2002-08-28 Bradford Hovinen * NEWS: Updated text * tests/Makefile.am (BASIC_TESTS): Remove test-lu due to compilation problems * configure.in: Bump version to 0.1.2 * linbox/field/lidia-gfq.h (LidiaGfq::read, LidiaGfq::write): Use std::ostream, std::istream * macros/gmp-check.m4: Add directives to allow use of uninstalled GMP * configure.in: Use AM_CONDITIONAL statements for Doc++; Add arguments --enable-doc and --enable-doc-tex for building documentation * doc/Makefile.am (SUBDIRS): Mandary inclusion of html and tex * doc/html/Makefile.am: * doc/tex/Makefile.am: Add mechanism for optionally compiling in targets if USE_DOCPLUSPLUS is set 2002-08-27 Bradford Hovinen * NEWS: Update text * linbox/*/Makefile.am (EXTRA_DIST): Merge in contents of EXTRA_HEADERS * NEWS: Update text * configure.in: Bump version number to 0.1.1 * tests/test-commentator.C (testBriefReport): Output brief report data to the same file used for the other data * linbox/util/commentator.C (MessageClass::checkConfig): Make depth and level unsigned (Commentator::Commentator): Set default max depth of BRIEF_REPORT to 1 (Commentator::start): Push new activity after printing activity report (Commentator::stop): Pop new activity before finishing activity report (Commentator::progress): Test on _activities.size () - 1 for updateActivityReport (Commentator::progress): Tweak output (Commentator::setPrintParameters, Commentator::setMaxDepth, Commentator::setMaxDetailLevel): Omit BRIEF_REPORT (Commentator::printActivityReport, Commentator::updateActivityReport, Commentator::finishActivityReport): Tweak output parameters (Commentator::updateActivityReport): Don't show progress if deeper messages are printed * linbox/util/commentator.h (Commentator::isPrinted, MessageClass::isPrinted): Make depth and level unsigned * tests/.cvsignore: Update * tests/Makefile.am (BASIC_TESTS): Add test-commentator.C * linbox/algorithms/blackbox-container-base.h (BlackboxContainerBase::~BlackboxContainerBase): Delete _BB, as it was a clone * linbox/util/commentator.h (Commentator::MessageLevel): Renumber so that LEVEL_ALWAYS is 0 * linbox/util/commentator.C (MessageClass::fixDefaultConfig): Add a directive to make sure LEVEL_ALWAYS messages always get printed * linbox/util/commentator.h (Commentator::setPrintParameters, MessageClass::setPrintParameters): Interface adjustment: only one depth is specified, the maximum for which the directive is valid; make depth and level unsigned 2002-08-26 Bradford Hovinen * linbox/randiter/modular.h (ModularRandIter::random): Fix call to linbox_check * tests/test-sparse.C (runSparseMatrixTests): Tweak text * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next, RandomSparseParVectorFactory::next): Initialize i to -1 so that the first index might get an entry * tests/test-generic.h (testTranspose, testLinearity): Declare new reports inside the loop * tests/test-sparse.C (testRandomApply2): Reset A_factory when done * linbox/util/field-axpy.h (class FieldAXPY): Make _F mutable * tests/test-sparse.C (testRandomApply2): Remove this test (testRandomApply3): Rename as testRandomApply2 (testRandomApply1, testRandomApply2): Accept a factory as a parameter and use it to build the matrix (testRandomTranspose, testRandomLinearity): Accept a factory as a parameter and use it to build the matrix * tests/test-generic.h (testGeometricSummation): Make sure a != 1 * tests/test-modular.C (runFieldTests): Implement; copy code from relevant section of main (main): Use runFieldTests 2002-08-25 Bradford Hovinen * linbox/field/.cvsignore: Update * tests/.cvsignore: Update * linbox/blackbox/butterfly.h (applyTranspose, apply): Call std::copy (x.begin (), x.end (), y.begin ()) * configure.in (AC_OUTPUT): Add linbox/switch/Makefile * macros/ntl-check.m4: Remove EX_FIELDS_NTL, as it is not needed * linbox/Makefile.am (BASIC_HEADERS): Rename from include_HEADERS; have include_HEADERS use the mechanism in tests/Makefile.am for optional inclusion * macros/ntl-check.m4 (NTL_HEADERS_*): Remove * macros/givaro-check.m4 (GIVARO_HEADERS_*): Remove * macros/lidia-check.m4 (LIDIA_HEADERS_*): Remove * linbox/field/Makefile.am (BASIC_HEADERS): Rename from include_HEADERS; have include_HEADERS use the mechanism in tests/Makefile.am for optional inclusion * tests/test-ntl-toeplitz.C: Rename from test-toeplitz.C * tests/Makefile.am: Rename test-toeplitz as test-ntl-toeplitz * macros/lidia-check.m4 (HAVE_LIDIA): Define * macros/givaro-check.m4 (HAVE_GIVARO): Define * macros/ntl-check.m4 (HAVE_NTL): Define * tests/Makefile.am: Put {NTL|GIVARO|LIDIA}_TESTS in here; use conditionals to make inclusion in TESTS optional 2002-08-20 Bradford Hovinen * linbox/blackbox/butterfly.h (setButterfly): Remove Commentator parameter; update uses of commentator to current interface; remove TRACE code * linbox/Makefile.am (SUBDIRS): Add switch * examples/.cvsignore: Update 2002-08-19 Bradford Hovinen * linbox/randiter/modular.h (ModularRandIter::random): Protect from getting a result equal to the size of the sample * tests/test-sparse.C (testRandomApply1): Remove debugging code * linbox/randiter/modular.h (class ModularRandIter): Make _size a double and _seed an Element, as they can never be larger than Element (ModularRandIter::randIter): Initialize _card (ModularRandIter::random): Don't use temp_integer; don't mod out by cardinality as it should not be necessary; don't convert _size to a double 2002-08-18 Bradford Hovinen * linbox/field/modular.inl (dotSpecializedDSP): Add optimized variant for very short vectors, to avoid cost of additional mod operation (dotSpecializedDSP, dotSpecializedDD): Defer declarations until needed * configure.in (AC_DEFINE_UNQUOTED): Don't quote description * examples/blackbox/ex-mat0.C (main): Use Modular * examples/blackbox/example.C: Use Modular * examples/fields/ex-fields0.C (main): Use Modular * examples/fields/ex-fields.C (main): Use Modular * examples/blackbox/load-symmetrize.C: Use Modular * examples/blackbox/load-det.C: Use Modular * examples/dot-product.C: Use Modular * linbox/field/modular.inl (dotSpecializedDD, dotSpecializedDSP): Update signatures of specialization * tests/test-trace.C (main): Use Modular * tests/test-sum.C (main): * tests/test-submatrix.C (main): * tests/test-sparse.C (main): * tests/test-solve.C (main): * tests/test-scalar-matrix.C (main): * tests/test-minpoly.C (main): * tests/test-inverse.C (main): * tests/test-diagonal.C (main): * tests/test-det.C (main): * tests/test-rank.C (main): * tests/test-dense.C (main): * tests/test-randiter-nonzero.C (main): * tests/test-moore-penrose.C (main): * tests/test-vector-domain.C: Use Modular * tests/test-modular.C: * linbox/field/modular.h: Change Modular, FieldAXPY, and DotProductDomain specializations to use new Linbox uint* types * linbox/integer.h: Add typedefs for int* * acconfig.h: Add #undef __LINBOX_INT* * configure.in: Define __LINBOX_INT* based on results of AC_SIZEOF * linbox/field/modular.inl (dotSpecializedDD, dotSpecializedDSP): Reintroduce faster modding out * linbox/field/modular.h (Modular::init_two_64): Start counter at 0 * tests/test-vector-domain.C (main): Test vector domains for all basic modular types (testVectorDomain): Implement * examples/blackbox/.cvsignore: Update * examples/Makefile.am (EXTRA_PROGRAMS): Add dot-product 2002-08-13 Bradford Hovinen * configure.in: Bump version to 0.1.0 * linbox/field/modular.inl (dotSpecializedDSP, dotSpecializedDD): Use traditional modding out pending getting the more advanced version working correctly * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Fix start/stop pairing * linbox/field/modular.h (Modular::inv): Keep the inputs from sign-extending to long long * linbox/util/commentator.C (Commentator::startIteration): Store string in _iteration_str so that it is not deallocated when the call returns * linbox/util/commentator.h (class Commentator): Add _iteration_str * tests/test-diagonal.C (testRandomMinpoly): Make vector reports at LEVEL_UNIMPORTANT (testRandomTranspose): Use factory to generate diagonal vector; make it a dense vector, use VectorDomain::write (testRandomLinearity): Implement * tests/test-vector-domain.C (main): Used unsigned short field * tests/test-modular.C (main): Make default n 10000; reorder test invocations to group fields together 2002-08-12 Bradford Hovinen * tests/test-vector-domain.C (testDotProduct): Make vector output LEVEL_UNIMPORTANT (testCopyEqual, testAXPY, testSubMul, testAddMul, testDotProduct): Terminate vector displays with endl's * linbox/field/modular.inl (dotSpecializedDD, dotSpecializedDSP): Make sure arithmetic takes place without sign-extension * tests/test-generic.h (testFieldAssociativity): Implement 2002-08-11 Bradford Hovinen * tests/test-modular.C (main): Call tests indicated below for each modular type * tests/test-generic.h (testFieldNegation, testFieldInversion) (testFieldAxioms, testGeometricSummation) (testFieldCharacteristic, testFreshmansDream) (testArithmeticConsistency, testAxpyConsistency): Implement * tests/test-minpoly.C (main): Make A_factory sparse parallel (testIdentityMinpoly, testNilpotentMinpoly): Define Row to be sparse parallel * linbox/field/modular.h (read): Do arithmetic in the domain integer * linbox/randiter/modular.h (ModularRandIter::random): Remove check for negativity * linbox/field/modular.h (Modular::init): Fix in case modulus > 2^15 (Modular::init): Perform modding out operation in class integer (class Modular): Convert to Modular to allow larger moduli * tests/test-modular.C (main): Test Modular and Modular as well; add CLI parameters for that * linbox/field/modular.h (class Modular): Make _k a long long (class FieldAXPY >): Make sure _y uses long long arithmetic (class Modular): Do add and sub in a long to remove restriction on modulus * tests/test-vector-domain.C (main): Use a typedef for the field * linbox/field/modular.h (class Modular): Rename 'k' as '_k' * linbox/field/modular.inl (dotSpecializedDSP): Fix compiler errors (dotSpecializedDD): Ditto * linbox/field/modular.h: Add specializations of DotProductDomain; include modular.inl (class Modular): Make DotProductDomain<...> a friend (Modular::init_two_64): Implement (class Modular): Add field _two_64 (Modular::Modular): Call init_two_64 * linbox/blackbox/sparse-base.inl (setEntry): Use v.first.size () * examples/blackbox/load-symmetrize.C: Ditto * examples/blackbox/load-det.C: Don't explicitly specify row type * linbox/field/vector-domain.h (class VectorDomain): Pull out the dense/dense and dense/sparse parallel dot products into a separate class DotProductDomain, which VectorDomain inherits. Put the field in a virtual base class VectorDomainBase (VectorDomain::field): Implement this * linbox/blackbox/sparse.h (class SparseMatrix0): Make default row type a sparse parallel * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Add load-symmetrize * linbox/algorithms/blackbox-container-symmetrize.h (class BlackboxContainerSymmetrize): Fix compiler warnings * linbox/blackbox/sparse-base.inl (read): Fix arguments to readPretty (read): Remove unused variables (read): Add dummy return statement * examples/blackbox/load-det.C: Fix order of template arguments; add using namespace std * linbox/blackbox/sparse-base.h (class SparseMatrix0Base): Fix member initializer order 2002-08-10 Bradford Hovinen * linbox/util/vector-factory.h (class StandardBasisFactory): Add specialization for sparse parallel vectors * tests/test-generic.h (testLinearity): Use VD.write (testTranspose): Use VD.write (testFieldAXPY): Use VD.write, commentator.startIteration * tests/test-sparse.C (test*): Use VD.write rather than printVector * linbox/blackbox/sparse-base.inl (write): Implement specialization for sparse parallel vectors * linbox/blackbox/sparse-base.h (class SparseMatrix0ReadWriteHelper): Implement class NoField to avoid having twice as many implementations as otherwise (class SparseMatrix0ReadWriteHelper): Split out writing portions into SparseMatrix0WriteHelper, which is partially specialized for sparse parallel vectors * linbox/blackbox/sparse-base.inl (getEntry, refEntry, setEntry): Implement specializations for sparse parallel vectors * linbox/blackbox/sparse.h: Implement specialization for sparse parallel vectors * linbox/blackbox/sparse.h (class SparseMatrix0): Specialize applyTranspose so that it can handle sparse parallel vectors, without having to specialize the entire class * linbox/algorithms/Makefile.am (include_HEADERS): Add wiedmemann.h * linbox/solutions/Makefile.am (include_HEADERS): Add solve.h 2002-08-09 Bradford Hovinen * tests/Makefile.am (BASIC_TESTS): Remove test-dense-matrix * tests/.cvsignore: Update * linbox/blackbox/Makefile.am (include_HEADERS): Remove dense-matrix.h (include_HEADERS): Change dense-matrix1.[Ch] to dense.inl, dense.h * tests/test-submatrix.C: #include dense.h * tests/test-inverse.C: * linbox/blackbox/dense.h (class DenseMatrix): Make F const 2002-08-09 Dave Saunders * linbox/vector/subvector.h: homage to the indentation police. 2002-08-09 Bradford Hovinen * linbox/blackbox/dense.h (class DenseMatrix): Make _F a const reference (DenseMatrix::DenseMatrix): Make F const * linbox/blackbox/dense.h: * linbox/blackbox/dense.inl: Reindent and remove compiler warnings * tests/test-dense.C: Rename from test-dense-matrix1.C; update header * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Give up if tries exceeds maxTries (solveWiedemannSingular, solveWiedemann): Fix order of arguments to VD.axpy * linbox/solutions/methods.h (struct SolverTraits): Add maxTries * linbox/algorithms/wiedemann.h (solveWiedemann): Output minimal polynomial at LEVEL_UNIMPORTANT * tests/test-solve.C (main): Correct output (testDiagonalSolve): Correct output (testDiagonalSolve): Print output vector too * linbox/util/commentator.C (Commentator::start): Don't output starting activity method if messages at that activity's depth aren't printed (Commentator::stop): Give a different message if this is the greatest depth at which messages are printed * linbox/algorithms/wiedemann.h (solveWiedemann): Use traditional indexing approach; eliminate count (solveWiedemannSingular): Ditto * linbox/solutions/methods.h (struct SolverTraits): Add singular, checkResult, certificate * tests/Makefile.am (BASIC_TESTS): Remove test-solver, add test-solve * linbox/solutions/solve.h: Move solveWiedemann[Singular] to linbox/algorithms/wiedemann.h; solve is now just a wrapper * linbox/solutions/solve.h: Rename from solver.h, tweak indentation, add header (solve): Add argument SolverTraits (solve): Remove randiter (solve): Use P.front () rather than P[0] (solve): Use iterator to go through polynomial (solve): Don't use applyIn and axpyin; allocate another vector (solve): Split into nonsingular case (solveWiedemann): Move Wiedemann-based method here (solveWiedemann): Rename y as b * linbox/solutions/methods.h (struct SolverTraits): Add a constructor that takes a string * linbox/blackbox/inverse.h (apply, applyTranspose): Remove template spec on minpoly call * linbox/solutions/rank.h: Update header * linbox/solutions/trace.h (trace): Reorder template parameters so that only Vector need be specified explicitly * tests/test-moore-penrose.C: Remove compiler warnings * tests/test-det.C: Remove compiler warnings * tests/test-rank.C: Remove compiler warnings * linbox/solutions/rank.h (rank): Make i a size_t * linbox/solutions/det.h (det): Make i a size_t * tests/test-trace.C: Remove compiler warnings * linbox/solutions/trace.h (trace): Remove unused int i * linbox/blackbox/dense-matrix.h (DenseMatrix::DenseMatrix): Make F a const (class DenseMatrix): Make _F a const * tests/test-common.h (multiEvalPoly): Make j a size_t * tests/test-inverse.C: Fix compiler warnings (testHilbertInverse, testIdentityInverse, testVandermondeInverse) (testDiagonalInverse): Make generic wrt vector type; use VectorFactory (main): Add CLI argument -N for number of vectors to apply Vandermonde inverse to * tests/test-diagonal.C: Update header; remove compiler warnings (testIdentityApply): Use commentator.startIteration; make generic wrt vector type; use VectorFactory (testRandomMinpoly): Ditto above * linbox/blackbox/scalar-matrix.h: Remove unused y_end * linbox/field/vector-domain.C (VectorDomain::writeSpecialized): Make idx a size_t * linbox/blackbox/inverse.h (Inverse::apply): Fix order of arguments to axpy (Inverse::applyTranspose): Ditto * linbox/field/vector-domain.C (VectorDomain::axpySpecialized): Fix order of arguments to _F.axpy * linbox/algorithms/blackbox-container-base.h (class BlackboxContainerBase): Add virtual destructor * linbox/algorithms/massey-domain.h (MasseyDomain::massey): Cast to avoid compiler warning * tests/test-common.h (printPolynomial): Make val a size_t * tests/test-minpoly.C (testRandomMinpoly1): Use VD in more places (testRandomMinpoly1): Use startIteration (testRandomMinpoly1): Use a vector factory to build the matrix (testRandomMinpoly): Rename from testRandomMinpoly1 (testRandomMinpoly2): Eliminate this test, as it is now redundant (main): Remove CLI argument -N; construct vector factories (testNilpotentMinpoly): Make i a size_t * tests/test-common.h (applyPoly): Fix order of arguments to VD.axpy (applyPoly): Make generic wrt vector type 2002-08-08 Bradford Hovinen * tests/.cvsignore: Remove test-dense-vector-domain, add test-subiterator, test-param-fuzzy, test-dense-matrix1 * linbox/vector/subvector.h (Subvector::Subvector): Use Iterator () rather than 0 * linbox/field/param-fuzzy.h (class ParamFuzzy): Use std:: for istream and ostream * tests/test-scalar-matrix.C (testScalarApply): Make j a size_t * tests/test-submatrix.C (testRandomApply): Make i, j, k, l size_t's * tests/test-subvector.C (testSubvector): Remove unused variable i, make z a size_t * linbox/vector/const-iterator-type.h: Qualify vector with std:: * tests/test-subiterator.C (test): Use Subiterator::iterator> * linbox/vector/subiterator.h: Reindent * linbox/vector/const-iterator-type.h: Rename from constiteratortype.h; reindent * tests/test-randiter-nonzero.C: Remove #include 2002-08-06 Bradford Hovinen * tests/.cvsignore: Update * examples/blackbox/example.C: Compilation fixes * linbox/blackbox/sparse.h: Rename from sparse0.h * linbox/blackbox/sparse.inl: Rename from sparse0.inl * linbox/blackbox/sparse-base.h: Rename from sparse0-base.h * linbox/blackbox/sparse-base.inl: Rename from sparse0-base.inl * tests/test-sparse.C: Rename from test-sparse0.C 2002-08-05 Bradford Hovinen * Change local variable header so that it actually works 2002-08-05 Bradford Hovinen * linbox/blackbox/Makefile.am (include_HEADERS): Update * tests/Makefile.am (BASIC_TESTS): Remove test-toeplitz and test-lu, since they depends on an optional library (i.e. NTL) (EXTRA_PROGRAMS): Add test-toeplitz, test-lu (BASIC_TESTS): Remove test-stub (test-stub.C is missing) 2002-08-03 Dave Saunders * linbox/field/param-fuzzy.h, linbox/randiter/param-fuzzy.h: update. * tests/test-param-fuzzy.C: Added this test. Passes, but fails thru archetype We need to sharpen our testing. Fields should work thru the arch and there should be exact field tests that fuzzy fields fail. 2002-08-02 Dave Saunders * linbox/field/field-interface.h: empty parent class for fields added for the sake of doc++ * linbox/interfaces.dxx: summary of the various interface concepts. Many have archtypes, but not all * consequential changes to these files: doc/Makefile.am doc/html/Makefile.am linbox/Makefile.am linbox/linbox.dxx linbox/field/Makefile.am linbox/field/archetype.h linbox/field/fields.dxx linbox/field/givaro-gfq.h linbox/field/givaro-zpz.h linbox/field/gmp-rational.h linbox/field/lidia-gfq.h linbox/field/modular.h linbox/field/param-fuzzy.h linbox/field/unparametric.h 2002-08-01 Dave Saunders * linbox/field/Makefile.am: delete ref to the previously removed dense-vector-domain * tests/Makefile.am: add comments * HACKING: mod to indent policy, more "cvs up" info. 2002-07-31 Bradford Hovinen * linbox/blackbox/nag-sparse.h: Tweak header * linbox/blackbox/sparse0-base.h (class SparseMatrix0Base): Remove copyToRow and swapRows, as they are unnecessary 2002-07-31 Dave Saunders * linbox/blackbox/ntl-toeplitz.h: fix indentation * linbox/blackbox/ntl-toeplitz.inl: replace .C and fix indentation 2002-07-30 Saunders and Lobo * linbox/blackbox/ntl-toeplitz.* and it's test. Adding a toeplitz black box. * First version, more general capability is coming. 2002-07-26 Bradford Hovinen * linbox/field/modular.h (class Modular, class FieldAXPY): Add specializations for int element type * linbox/util/commentator.h (Commentator::nullstreambuf::showmanyc): Return std::streamsize 2002-07-29 Rich Seagraves * linbox/blackbox/Makefile.am (include_HEADERS): Added nag-sparse.h 2002-07-26 Bradford Hovinen * linbox/blackbox/sparse0-base.C (readTurner, readGuillaume): Use A.refEntry * linbox/blackbox/sparse0.[Ch]: Move apply, applyTranspose definitions to sparse0.C * tests/test-minpoly.C (testRandomMinpoly1, testRandomMinpoly2): Update as per change below * linbox/blackbox/sparse0-base.C (getEntry): Make the Row reference const (getEntry): Have specialization for sparse associative vectors use find to avoid const issues * tests/test-sparse0.C (testRandomApply1, testRandomApply2) (testRandomApply3, testRandomTranspose, testRandomLinearity): Update as per change below * tests/test-moore-penrose.C (buildRandomSparseMatrix): Update as per change below * linbox/blackbox/sparse0-base.h (class SparseMatrix0Base): Change non-const version of getEntry to refEntry 2002-07-26 Bradford Hovinen * linbox/blackbox/Makefile.am (include_HEADERS): Remove densesubmatrix.H 2002-07-25 Bradford Hovinen * linbox/util/commentator.C (Commentator::stop): Make sure all timings get the same precision * linbox/field/modular.h (clsas Modular): Define k for delayed modding out (class FieldAXPY): Use static modding out procedure; make _y a long long 2002-07-24 Bradford Hovinen * tests/test-vector-domain.C (main): Add calls to test sparse parallel vectors Use VD.write rather than printVector * linbox/util/vector-factory.h (class RandomSparseParVectorFactory): Added this class for random sparse parallel vectors * tests/test-vector-domain.C (testDotProduct, testAddMul) (testSubMul, testAXPY, testCopyEqual): Reset factories when done * linbox/field/vector-domain.C (VectorDomain::addinSpecialized, VectorDomain::subinSpecialized, VectorDomain::axpyinSpecialized): Use a temporary vector and copy when done for the sparse sequence specialization (O(n) vs. O(n^2)) Don't use iterator operator < unless necessary * linbox/field/vector-domain.h (class VectorDomain): Add support for SparseParallelVectorTag (VectorDomain::copySpecialized): Use std::copy for inline implementations, just in case there are two different vector types with the same tag * linbox/vector/vector-traits.h (struct VectorCategories): Add SparseParallelVectorTag (struct VectorTraits): Add specialization for sparse parallel vectors (refSpecialized, constRefSpecialized, ensureDimSpecialized): Add specialization for sparse parallel vectors * tests/test-moore-penrose.C (testRandomApply1): Add commentator activity for constructing the matrix (testRandomApply1): Delete A when done * linbox/field/vector-domain.C (VectorDomain::copySpecialized): Add version optimized for copying to vectors of the same type 2002-07-23 Bradford Hovinen * examples/blackbox/load-det.C: Fix include directive * linbox/field/vector-domain.C (VectorDomain::write): Write out i->second, not *i * tests/test-moore-penrose.C (testRandomApply1): Make this generic wrt vector and row type (buildRandomSparseMatrix): Use VectorDomain and facilities of new SparseMatrix0; make generic wrt row type (testRandomApply1): Indent correct and computed output messages * linbox/field/vector-domain.C (VectorDomain::copySpecialized): Implement version described below * linbox/field/vector-domain.h (class VectorDomain): Add a form of copy that allows copying a subvector into a subvector * linbox/util/commentator.C (MessageClass::fixDefaultConfig): Clear entire list 2002-07-23 Saunders * tests/Makefile.am includes test-subiterator. Advise me if it doesn't work for you. 2002-07-22 Bradford Hovinen * tests/test-minpoly.C: Updated to reflect changes to SparseMatrix0 (testNilpotentMinpoly, testIdentityMinpoly): Use a StandardBasisFactory object * tests/test-sparse0.C: Updated to reflect changes to SparseMatrix0 * linbox/blackbox/sparse0.h: * linbox/blackbox/sparse0-base.h: Refactoring: - Eliminated SparseMatrix0Aux and moved that functionality into Sparse0 - Made SparseMatrix0Base parameterized only on the element type - New read/write implementations for SparseMatrix0Base, supporting multiple formats - Eliminated Gaussian elimination code - Added iterators, including ColOfRowsIterator, RawIterator, and RawIndexIterator - Eliminated operator []; added getEntry; changed put_value to setEntry * linbox/util/commentator.C (Commentator::progress): Enable act->_timer.stop () * linbox/util/timer.C (stop, start): Use _start_t * linbox/util/timer.h (class BaseTimer): Added _start_t * linbox/vector/subvector.h (struct VectorTraits): Use Subvector to get value_type 2002-07-18 Bradford Hovinen * linbox/vector/vector-traits.h: Add #include * linbox/util/commentator.h (class Commentator): Add form of isPrinted that does not require activity depth; add isNullStream * macros/*-check.m4: Don't add a -I and -L arguments if they refer only to /usr or to /usr/local * macros/*-check.m4: Add rules for cross-compiling * macros/*-check.m4: Tweak argument documentation * macros/gmp-check.m4: Remove note that GMP installation is optional 2002-07-12 Bradford Hovinen * linbox/field/ntl-RR.h (LinBox): Ditto * linbox/field/ntl-ZZ_p.h (LinBox): Ditto * linbox/field/ntl-zz_p.h (LinBox): Ditto * linbox/blackbox/submatrix.h (LinBox): Ditto * linbox/blackbox/hilbert.h (LinBox): Ditto * linbox/blackbox/diagonal.h (LinBox): Ditto * linbox/blackbox/scalar-matrix.h (LinBox): Ditto * tests/test-scalar-matrix.C: Update as per C++ standard * linbox/solutions/methods.h (struct SolverTraits): First stab at this structure * linbox/algorithms/blackbox-container.h (LinBox): Ditto * linbox/vector/reverse.h (LinBox): Ditto * linbox/vector/subvector.h: Ditto * linbox/vector/subiterator.h (LinBox): Ditto * linbox/field/unparametric.h (LinBox): Update as per C++ standard * linbox/util/commentator.C (Commentator::updateActivityReport): Make i signed * linbox/util/error.C: Ditto * linbox/util/timer.C: Updates to C++ standard; place everything inside LinBox namespace * linbox/util/gmp++/gmp++_int_misc.C: Ditto * linbox/util/gmp++/gmp++_int_io.C: Update header file names Add using namespace std Updates to conform to C++ standard * linbox/util/gmp++/gmp++_int_cstor.C: s/iostream.h/iostream/ * linbox/vector/vector-traits.h (struct SparseSequenceVectorPairLessThan): Use std:: namespace qualifier (class CompareSparseEntries): Use std:: namespace qualifier (refSpecialized): Use std:: namespace qualifier * linbox/util/error.h: s/iostream.h/iostream/ Use std:: namespace qualifier for iostream * linbox/field/envelope.h (class FieldEnvelope): Ditto * linbox/field/archetype.h (class FieldArchetype): Ditto * linbox/field/abstract.h (class FieldAbstract): Use std:: namespace qualifier for ostream/istream * gmp++/gmp++_int.inl (Integer::random): Eliminate default from definition * gmp++/gmp++_int.h: Use namespace qualifier std:: for parts of the STL; update header names in accordance with C++ standard * linbox/util/timer.h: s/iostream.h/iostream/ as per updated C++ standard; put everything inside the LinBox namespace; use std::ostream 2002-07-08 Bradford Hovinen * linbox/solutions/methods.h: Put everything inside the LinBox namespace * linbox/solutions/rank.h (rank): Update (rank): Use VectorWrapper::ensureDim; add commentator calls * linbox/solutions/det.h (det): Update * linbox/solutions/minpoly.h (minpoly): Update * linbox/solutions/methods.h: Changed the name _DEFAULT_EarlyTerm_THRESHOLD_ to the more standard-consistent DEFAULT_EARLY_TERM_THRESHOLD; changed the name Early_Term_Threshold to earlyTermThreshold, also in keeping with the standard. 2002-07-05 Bradford Hovinen * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::applyTranspose): Avoid use of operator []; tweak performance with iterators * linbox/util/field-axpy.h (class FieldAXPY): Add assignment operator; make _F a real copy and not a reference * linbox/field/modular.h (FieldAXPY::FieldAXPY): Add copy constructor; use direct assignment for 0 (class FieldAXPY): Make _F a real copy; add assignment operator * linbox/util/field-axpy.h (class FieldAXPY): Add copy constructor * linbox/blackbox/sparse0-base.h (SparseMatrix0Base::prettyPrint): Make i, j size_t's * linbox/blackbox/sparse0-aux.h (class SparseMatrix0Aux): Add _faxpy (SparseMatrix0Aux::applyTranspose): Use _faxpy vector to enable delayed modding out 2002-07-02 Bradford Hovinen * linbox/field/modular.h (class FieldAXPY): Add template <> * examples/blackbox/.cvsignore: Update * tests/.cvsignore: Update * tests/test-moore-penrose.C (testIdentityApply): Make display of vectors LEVEL_UNIMPORTANT (testRandomApply1): Ditto (testRandomApply1): Put the construction of Adagger inside a commentator activity; change "Computing" to "Applying" for the activity surrounding the application * HACKING: Update instructions for adding a test * tests/Makefile.am (BASIC_TESTS): Move all mandatory tests here (TESTS): Include BASIC_TESTS (EXTRA_PROGRAMS): Include BASIC_TESTS (noinst_PROGRAMS): Remove * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next): Make i a size_t * linbox/field/vector-domain.C (VectorDomain::mulSpecialized): Eliminate unused j (VectorDomain::addinSpecialized, VectorDomain::subinSpecialized, VectorDomain::axpyinSpecialized): Make i a size_t (VectorDomain::copySpecialized, VectorDomain::areEqualSpecialized): Make idx a size_t * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::RandomSparseSeqVectorFactory): Reorder initializers (class VectorFactory): Add virtual destructor * tests/test-vector-domain.C (testSubMul): Remove unused i, j (testAXPY): Ditto * linbox/blackbox/inverse.h (Inverse::apply): Eliminate unused j * tests/test-vector-domain.C (testCopyEqual, testAddMul): Remove unused i, j (testDotProduct): Make j a size_t * linbox/util/vector-factory.h (StandardBasisFactory::next): Make idx a size_t * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::applyTranspose): Initialize y to all zeros first * tests/test-sparse0.C (testRandomApply3, testRandomApply2, testRandomApply1): Remove unused VD * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next): Don't die if skip is 0; just increment i * tests/test-generic.h (testTranspose, testLinearity): Remove unused i, j 2002-07-01 Bradford Hovinen * linbox/field/vector-domain.C (dotSpecialized): Don't initialize res; it's not necessary here * linbox/algorithms/blackbox-container-base.h (class BlackboxContainerBase): Tweak indentation * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::applyTranspose): Use linbox_check and _F.axpyin * linbox/algorithms/Makefile.am (include_HEADERS): Add blackbox-container-symmetrize.h * linbox/field/modular.h (FieldAXPY::get, FieldAXPY::assign): inline these * linbox/util/field-axpy.h (FieldAXPY::get, FieldAXPY::assign): inline these * linbox/field/vector-domain.C (VectorDomain::dotSpecialized): inline this * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::apply): Eliminate Element temp * linbox/util/commentator.C (Commentator::progress): Show elapsed time (Commentator::progress): Get a pointer to the top activity first * linbox/algorithms/massey-domain.h (MasseyDomain::massey): Use COMMOD for progress reports * linbox/util/commentator.C (Commentator::updateActivityReport): Use a strstream and update _last_line_len (Commentator::finishActivityReport): Use _last_line_len (Commentator::setReportStream): Disable brief report if we are outputing to the same stream it is * linbox/util/commentator.h (class Commentator): Add _last_line_len * linbox/util/commentator.C (Commentator::stop): Increase output precision; make sure output is nonnegative * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Add load-det * linbox/field/givaro-zpz.h: Reindent * examples/run/Makefile.am: Kill _DEPENDENCIES lines * examples/integers/Makefile.am: Kill _DEPENDENCIES lines * examples/fields/Makefile.am: Kill _DEPENDENCIES lines * examples/blackbox/Makefile.am: Kill _DEPENDENCIES lines * examples/Makefile.am: Kill _DEPENDENCIES lines * HACKING: Remove note about _DEPENDENCIES lines * tests/Makefile.am: Get rid of _DEPENDENCIES lines; turns out they aren't necessary * linbox/util/commentator.C (Commentator::stop): Modified report format; display all three timings 2002-06-28 Bradford Hovinen * linbox/util/commentator.C (Commentator::updateActivityReport): Use floor (percent + 0.5) rather than round (percent) * linbox/util/commentator.h (Commentator): Redefine Commentator to CommentatorDisabled when disabled; define the existing commentator regardless of whether it is disabled -- the new #defines will deflect any access * tests/test-minpoly.C (main): Re-enable commentator * linbox/util/commentator.C (Commentator::Commentator): Set default max depth for BRIEF_REPORT to 2; use macros for detail levels (MessageClass::fixDefaultConfig): Make sure j is not erased from the list before insertion * gmp++/gmp++_int.h: Add short, unsigned short implicit conversions 2002-06-27 Bradford Hovinen * linbox/util/commentator.C (Commentator::updateActivityReport): Use round (percent) rather than setting precision (MessageClass::checkConfig): Use depth < (*i).first (MessageClass::fixDefaultConfig): Erase everything after _max_depth and everything before _max_depth that is not more restrictive * tests/test-vector-domain.C (testAXPY): Update use of VD.axpy * tests/test-common.h (applyPoly): Update use of VD.axpy * tests/test-generic.h (testLinearity): Update use of VD.axpy * linbox/blackbox/inverse.h (Inverse::apply, Inverse::applyTranspose): Update * linbox/field/vector-domain.h (class VectorDomain): Change order of parameters to match FieldArchetype::axpy 2002-06-26 Bradford Hovinen * tests/test-minpoly.C: Report minpoly degree; tweak report parameters * linbox/algorithms/blackbox-container.h (BlackboxContainer::BlackboxContainer): Initialize _applyTime and _dotTime if INCLUDE_TIMING is defined 2002-06-26 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::addinSpecialized, VectorDomain::subinSpecialized): Use i->first < j->first * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next): Add check that skip > 0 * linbox/field/vector-domain.C (VectorDomain::axpySpecialized): Fix order of arguments to F.axpy * tests/test-generic.h (testLinearity): Fix variable names to be more descriptive * linbox/util/vector-factory.h (LinBox): Use v[] rather than v.insert * tests/test-generic.h (testDenseConsistency): Eliminate this test (testLinearity): Fix formulae * linbox/solutions/trace.h (trace): Make sure v has correct dimension * tests/test-inverse.C (testRandomTranspose): Update according to changes in testTranspose * tests/test-diagonal.C (testRandomTranspose): Update according to changes in testTranspose * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::SparseMatrix0Aux): Initialize _VD for sparse associative specialization * tests/test-generic.h (testTranspose): Use VectorFactory, make this generic wrt vector type * tests/test-sparse0.C (testRandomTranspose, testRandomLinearity): New tests (main): Call tests on all combinations of vector types * linbox/util/vector-factory.h (StandardBasisFactory::next): Initialize the whole vector for the dense case * linbox/blackbox/sparse0-base.h (SparseMatrix0Base::put_value, SparseMatrix0Base::operator[]): Use linbox_check * tests/test-sparse0.C (testRandomApply1, testRandomApply2, testRandomApply3): Make these generic wrt vector and row type * */*.[Ch]: Change top Emacs identifier to mode: C++ so that it does the correct thing with templates and so on * linbox/util/vector-factory.h (class RandomDenseVectorFactory): Use RandIter, not Field::RandIter for _r 2002-06-25 Bradford Hovinen * tests/test-sparse0.C (testIdentityApply): Use VectorFactory (testNilpotentApply): Use VectorFactory * linbox/blackbox/sparse0-aux.h (class SparseMatrix0Aux): Use VectorDomain for the sparse associative specialization; replace Field1 with VectorDomain (SparseMatrix0Aux::apply): Use VectorDomain::dot for all specializations (class SparseMatrix0Aux): Restore compilation of sparse associative specialization (SparseMatrix0Aux::apply): Use iterator rather than integer * tests/Makefile.am (TESTS): Add test-subvector * linbox/algorithms/blackbox-container.h (class BlackboxContainer): Add optional timing facilities, enabled with INCLUDE_TIMING * linbox/algorithms/massey-domain.h (class MasseyDomain): Add optional timing facilities, enabled with INCLUDE_TIMING * linbox/vector/Makefile.am (include_HEADERS): Add subvector.h, subiterator.h, reverse.h * linbox/vector/subvector.h: Reindent; fix headers * linbox/algorithms/massey-domain.h (class MasseyDomain): Replace _field with _F; declare VectorDomain _VD; use const long rather than #define when possible * linbox/algorithms/blackbox-container-base.h (class BlackboxContainerBase): Add member VectorDomain _VD; rename _field to _F (for consistency); eliminate operators; align members (BlackboxContainerBase::size): Make this const * linbox/algorithms/blackbox-container.h (BlackboxContainer::_launch): Use _VD.dot rather than home-cooked dot product (class BlackboxContainer): Make RandIter a template parameter, defaulted to Field::RandIter * linbox/algorithms/Makefile.am (include_HEADERS): Add blackbox-container-symmetric.h * linbox/solutions/trace.h (trace): Use factory.j () - 1 2002-06-24 Bradford Hovinen * tests/test-vector-domain.C (main): Reset factory 5 before sparse sequence/sparse associative dot product; factory 6 before sparse associative add/mul test (testDotProduct): Add timing * linbox/util/vector-factory.h (VectorFactory): Fix output of j () * HACKING: Update with consolidated ChangeLogs * linbox/vector/vector-traits.h (refSpecialized, cosntRefSpecialized): Check that size is nonzero before conducting binary search; check that return iterator is not past-the-end 2002-06-21 Bradford Hovinen * examples/integers/.cvsignore: Update * examples/.cvsignore: Update 2002-06-21 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::axpyinSpecialized): Don't use an iterator here, since we invalidate iterators by calling insert * linbox/field/modular.h (Modular::neg): Make sure -0 = 0 * linbox/field/vector-domain.C (VectorDomain::axpySpecialized): Use _F.axpy when possible; avoid use of temporaries (VectorDomain::addSpecialized, VectorDomain::addinSpecialized, VectorDomain::subSpecialized, VectorDomain::subinSpecialized, VectorDomain::isZeroSpecialized, VectorDomain::areEqualSpecialized, VectorDomain::convertSpecialized, VectorDomain::readSpecialized, VectorDomain::writeSpecialized, VectorDomain::copySpecialized): Implement (VectorDomain::mulSpecialized, VectorDomain::mulinSpecialized): Implement specialization for sparse associative vectors * linbox/randiter/nonzero.h (class NonzeroRandIter): Set default RandIter to Field::RandIter * linbox/util/vector-factory.h (class RandomSparseSeqVectorFactory, class RandomSparseMapVectorFactory): Use NonzeroRandIter * linbox/vector/vector-traits.h (class CompareSparseEntries): Implement (refSpecialized, constRefSpecialized): Use lower_bound * tests/test-generic.h (testLinearity): New test * tests/test-vector-domain.C (testAddMul, testSubMul, testCopyEqual): New tests; call these from main * tests/test-vector-domain.C (testAXPY): Use VD.isZero * tests/.cvsignore: Update 2002-06-20 Bradford Hovinen * examples/Makefile.am (EXTRA_PROGRAMS): Add mmZZ_pE * examples/integers/Makefile.am (EXTRA_PROGRAMS): Don't compile programs by default 2002-06-20 Bradford Hovinen * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Don't compile examples by default * examples/fields/Makefile.am (EXTRA_PROGRAMS): Don't compile programs by default * linbox/blackbox/dense-matrix1.h (DenseMatrix::Row::Row): Fix typos in default initialization * linbox/blackbox/dense-matrix1.C (DenseMatrix::write): Remove default for parameter (DenseMatrix::ColOfRowsIterator::ColOfRowsIterator): Remove default for first parameter (DenseMatrix::RowOfColsIterator::RowOfColsIterator): Remove default for first parameter (class DenseMatrix::RowOfColsIterator): Add constructor with no parameters (class DenseMatrix::ColOfRowsIterator): Add constructor with no parameters * linbox/field/Makefile.am (EXTRA_DIST): Add EXTRA_HEADERS 2002-06-20 Pascal Giorgi * linbox/field/givaro-gfq.h: Replace cast according to gmp++ . 2002-06-20 Bradford Hovinen * linbox/randiter/Makefile.am (include_HEADERS): Add nonzero.h * linbox/util/vector-factory.h (class RandomDenseVectorFactory, class RandomSparseSeqVectorFactory, class RandomSparseMapVectorFactory): Add constructor specifying a particular random iterator 2002-06-20 Dave Saunders * insert LinBoxSrcOnly flag for all-source compilation (fixed) 2002-06-20 Bradford Hovinen * macros/ntl-check.m4 (AC_TRY_LINK): Don't include iostream -- it was causing compiler trouble wrt autoconf (NTL_HEADERS_FIELD): Add ntl-ZZ_pE.h * tests/Makefile.am (TESTS): Add test-randiter-nonzero (test_diagonal_DEPENDENCIES): Remove duplicate definition 2002-06-19 Bradford Hovinen * configure.in (AC_OUTPUT): Remove linbox/iterators/Makefile, remove examples/run/Makefile 2002-06-19 Bradford Hovinen * examples/Makefile.am (SUBDIRS): Add integers * examples/fields/Makefile.am (ex_fields_wrapper_SOURCES): Don't comment out this line * linbox/util/gmp++/Makefile.am (INCLUDES): Add -I$(top_srcdir) * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next): Use simpler formulas ala Knuth (class RandomSparseSeqVectorFactory): Remove extraneous variables * tests/test-sum.C (main): Use GF(101) by default (testZeroApply): Use VD.mul rather than VD.axpy 2002-06-18 Bradford Hovinen * Makefile.am (SUBDIRS): Add gmp++ * configure.in (AC_OUTPUT): s/integer/gmp++/ 2002-06-18 Bradford Hovinen * examples/blackbox/ex-mat0.C: Add using namespace std * linbox/integer.h: Use GMP++ 2002-06-18 Zhendong Wan * dense-matrix1.h dense-matrix1.C * FieldBASL.h FieldBLAS.C * linbox/field/ntl-ZZ_pE.h 2002-06-18 Bradford Hovinen * linbox/util/vector-factory.h (RandomSparseMapVectorFactory::next): Use a simpler mechanism for constructing vectors * linbox/util/gmp++/gmp++_int.h: Define GMPXX_PREFIX if not already done * linbox/util/gmp++/*.[Ch]: Prefix #include lines with GMPXX_PREFIX * linbox/util/Makefile.am (SUBDIRS): s/integer/gmp++/ (libutil_la_LIBADD): s/integer/gmpxx/ 2002-06-14 Bradford Hovinen * examples/blackbox/.cvsignore: Update 2002-06-14 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::dotSpecialized): Make sure not to accumulate if j is at v2.end. (VectorDomain::dotSpecialized): Add specialization for sparse associative/sparse associative dot product * linbox/field/modular.h (class ModularBase, class Modular): Replace Modular[Base]::Modular[Base] (Element) with unsigned long version 2002-06-14 zhenddong wan * linbox/vector/subvector.h: fix the const_iterator problem 2002-06-14 Bradford Hovinen * tests/test-vector-domain.C (main): Add call to test sparse associative/sparse associative dot product 2002-06-13 Bradford Hovinen * .cvsignore: Remove config.h[.in] and add linbox-config.h[.in] * configure.in: Change AM_CONFIG_HEADER to linbox-config.h * */*.C: Change #include "config.h" to #include "linbox-config.h" * Makefile.am (include_HEADERS): Add linbox-config.h * acconfig.h: Add GMP_VERSION_4 2002-06-13 Bradford Hovinen * examples/blackbox/.cvsignore: Update * linbox/integer.h: Only use extern "C" if GMP_VERSION_4 is not set * linbox/vector/vector-traits.h: Add #include linbox/field/archetype.h * macros/gmp-check.m4: Added check for GMP 4.0 or greater * tests/test-vector-domain.C (main): Invoke testDotProduct for sparse sequence/sparse sequence vectors * tests/Makefile.am: Commented out subiterator and solveNonsingular as the former has compilation problems and the latter was not added properly 2002-06-11 Dave Saunders * linbox/field/ntl-ZZ_p.h: include sys/time.h 2002-06-11 Dave Saunders * tests/test-subiterator.C: new test of vector/subiterator.h 2002-06-10 Dave Saunders * linbox/vector/subiterator.h, subvector.h: subvector now constructs from subiterators, not from underlying vector. This avoids copy and reference problems with underlying vector. 2002-06-07 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::axpySpecialized): Implement specialization for sparse associative vectors (VectorDomain::axpyinSpecialized): Implement specialization for sparse associative vectors (VectorDomain::dotSpecialized): Implement specialization for sparse sequence/sparse sequence and sparse associative/sparse sequence vectors 2002-06-07 Bradford Hovinen * tests/test-vector-domain.C (main): Add call to test sparse associative vector axpy 2002-06-06 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::dotSpecialized): Implement specialization for sparse associative/dense dot product * linbox/field/vector-domain.h (class VectorDomain): Add return statements 2002-06-06 Bradford Hovinen * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::RandomSparseSeqVectorFactory): Make sure k < n (RandomSparseSeqVectorFactory::next): Tweak formulae (RandomSparseMapVectorFactory::next): Tweak formulae the same way as above * tests/test-vector-domain.C (testAXPY): Rename from testDenseAXPY. Make this generic with respect to the vector type being tested (main): Update according to the above * tests/.cvsignore: Update * tests/test-vector-domain.C (main): Add call to test sparse associative dot product 2002-06-05 Bradford Hovinen * tests/test-vector-domain.C (testDotProduct): Rename from testDenseDotProduct. Make this generic with respect to the vector type being tested 2002-06-04 Bradford Hovinen * .cvsignore: Update 2002-06-04 Bradford Hovinen * examples/run/.cvsignore: Update 2002-06-04 Bradford Hovinen * linbox/blackbox/inverse.h (class Inverse): Update use of VectorDomain * linbox/blackbox/sparse0-aux.h (class SparseMatrix0Aux): Update use of VectorDomain * linbox/blackbox/dense-matrix.h (class DenseMatrix): Update use of VectorDomain 2002-06-04 Bradford Hovinen * linbox/blackbox/moore-penrose.h (class MoorePenrose): s/_B/_B1/ since _B seems to be a macro of some type on Solaris 2002-06-04 Bradford Hovinen * linbox/field/vector-domain.h (class VectorDomainBase, class VectorDomain): Merge these classes together (class VectorDomain): Parameterize methods on the vector types rather than parameterizing the whole class. Add methods * Specialized for template specialization * linbox/field/vector-domain.C: Update according to changes in vector-domain.h 2002-06-04 Dave Saunders * linbox/vector/subvector.h: tweak to have reference semantics to underlying vect. * tests/test-subvector.C: new test for check adapted from Will's test-subvector.cpp * tests/Makefile.am: new target test-subvector, part of check. 2002-06-04 Bradford Hovinen * tests/test-moore-penrose.C (testRandomApply1): s/VectorDomainBase/VectorDomain/ and update * tests/test-common.h (applyPoly): Update use of VectorDomain * tests/test-generic.h (testDenseConsisntency): Update use of VectorDomain (testTranspose): Update use of VectorDomain 2002-05-31 Bradford Hovinen * macros/gmp-check.m4 (min_gmp_version): s/{gmp_prefix}/${gmp_prefix}/ 2002-05-28 Bradford Hovinen * configure.in: AC_OUTPUT linbox-config * Makefile.am (bin_SCRIPTS): Add linbox-config 2002-05-28 Bradford Hovinen * linbox/blackbox/Makefile.am: Add sum.h 2002-05-25 Bradford Hovinen * linbox/blackbox/compose.h (Compose::Compose): Add call to VectorWrapper::ensureDim (class Compose): Make _z mutable 2002-05-25 Bradford Hovinen * tests/Makefile.am (TESTS): Reorder tests in approximate order of dependence (TESTS): Add test-sum 2002-05-19 Bradford Hovinen * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::applyTranspose): Don't construct a new vector for y; just fill in existing values * linbox/blackbox/inverse.h (class Inverse): Add _transposeMinpoly for the minimal polynomial of the transpose of the matrix (Inverse::Inverse): Don't construct minimal polynomials; just clear them (Inverse::apply, Inverse::applyTranspose): Construct minimal polynomials if needed * linbox/blackbox/moore-penrose.h (MoorePenrose::MoorePenrose): Reverse order of arguments for call to Submatrix (MoorePenrose::MoorePenrose): Construct _B too * linbox/blackbox/compose.h (Compose::Compose): Don't set _z's size (Compose::apply, Compose::applyTranspose): use VectorWrapper::ensureDim rather than setting _z's size * linbox/blackbox/inverse.h (Inverse::apply, Inverse::applyTranspose): Don't resize the output vector (Inverse::Inverse): Check that the input matrix is square (Inverse::Inverse): Use VectorWrapper::ensureDim rather than _z.resize * linbox/blackbox/Makefile.am (include_HEADERS): Added moore-penrose.h 2002-05-19 Bradford Hovinen * linbox/field/modular.h (class FieldAXPY): Update get () form; remove obsolete forms * linbox/field/vector-domain.C (VectorDomain::dotprod): Fix use of FieldAXPY::get * linbox/solutions/trace.h (trace): Use constRef * linbox/util/field-axpy.h (class FieldAXPY): Remove obsolete get form * linbox/util/vector-factory.h (class VectorFactory): Add interface n(), which returns the dimension of the space from which vectors are being generated * linbox/vector/vector-traits.h (class VectorWrapper): Add method ensureDim (namespace VectorWrapper): Convert this to a namespace and use function specialization * tests/test-moore-penrose.C (main): Switch to field GF(2147483647) by default * tests/test-generic.h (testTranspose): Rename from testTranpose (testTranspose): Use commentator.startIteration * tests/test-moore-penrose.C (testIdentityApply): Ensure w has space for result (buildRandomSparseMatrix): Implement (testRandomApply1): New test * tests/test-trace.C (testDiagonalTrace): Use constRef 2002-05-18 Bradford Hovinen * configure.in: Make disabling shared libraries the default 2002-05-18 Bradford Hovinen * linbox/util/vector-factory.h: Refactor: Create one class StandardBasisFactory, parameterized by vector type, with specializations for dense, sparse map, and sparse associative vectors * linbox/util/commentator.C (Commentator::setMaxDepth, Commentator::setMaxDetailLevel): Implement * linbox/vector/vector-traits.h (class VectorWrapper): Implement 2002-05-17 Bradford Hovinen * examples/.cvsignore: Update 2002-05-17 Bradford Hovinen * linbox/blackbox/submatrix.h (class Submatrix): Add Trait to template parameters and specialize for dense vectors (Submatrix::Submatrix): Check that the row and column dimensions given are valid * linbox/blackbox/sparse0-aux.h: Backed out revision 1.6 (SparseMatrix0Aux::apply): Restore use of _VD.dotprod * linbox/field/vector-domain.h (LinBox): Added specialization for SparseSequence, SparseSequence type * linbox/field/vector-domain.C: Update as per changes in vector-domain.h (VectorDomainBase::mul, VectorDomainBase::mulin): Don't resize and don't invalidate iterators * linbox/field/vector-domain.h (class VectorDomainBase): New class. Pull out all functions from VectorDomain that only need one vector type. * linbox/util/vector-factory.h (RandomDenseVectorFactory::next): Resize input vector * linbox/util/debug.h (PreconditionFailed::PreconditionFailed): Put out a couple of newlines before printing the error message * linbox/util/vector-factory.h (class VectorFactory): Add method reset () * linbox/util/commentator.C (Commentator::startIteration): Implement Include strstream and not cstdio * linbox/util/commentator.h (class Commentator): Add startIteration * macros/ntl-check.m4 (EX_FIELDS_NTL): Define * tests/Makefile.am (test_moore_penrose_SOURCES): New test * tests/test-submatrix.C: Don't include fstream or cstdio (testRandomApply): Use commentator.startIteration rather than forming a new string and calling start (testRandomApply): Put the declaration for report inside the loop and remove the call to indent (testRandomApply): Update report output (main): Don't construct factory2 * tests/.cvsignore: Update 2002-05-14 William J. Turner * linbox/field/archetype.h, envelope.h: changed randIter to RandIter. 2002-05-14 William J. Turner * linbox/randiter/modular.h: Seeded random number generator in constructor. _seed was never used before. 2002-05-07 William J. Turner * linbox/field/ntl-zz_p.h, ntl-ZZ_p.h: modified random generator constructor and creating functions to use NTL functions. 2002-05-07 William J. Turner * linbox/randiter/unparametric.h: static cast added to constructor 2002-04-26 Pascal Giorgi * configure.in, acconfig.h: updating to allow Lidia Library 2002-04-26 Pascal Giorgi * linbox/field/lidia-gfq.h, lidia.h: adding wrapper of extensions fields for Lidia * linbox/field/givaro-gfq.h, givaro-zpz.h: To use these wrappers you need to get a modified version of givaro. You can find these version at this address : http://www.ens-lyon.fr/~pgiorgi/software.html version 3.0.1. * linbox/field/givaro-gfq.h: adding wrapper of extensions fields for Givaro * linbox/field/givaro.h: adding givaro-gfq.h * linbox/field/Makefile.am: adding givaro-gfq.h * linbox/randiter/lidia-gfq.h: adding randiter for lidia gfq field * linbox/randiter/lidia.h: file for all randiter of lidia library * linbox/randiter/Makefile.am: adding the header of Lidia and an EXTRA_DIST variable * macros/givaro-check.m4: adding headers of givaro fields wrappers and the test test-givaro-zpz.h * macros/lidia-check.m4: creating for the library LiDIA * macros/Makefile.am: adding lidia-check.m4 to the EXTRA_DIST * tests/test-givaro-zpz.C: test for prime finites fields of givaro using all type of zpz fields of givaro and an extension field of degree 1 for gfq. * tests/test-lidia-gfq.C: test for Lidia Gfq field. But the Gfq field is tested as a prime field (the extension degree is 1) * tests/test-generic.h: Put in comment the line 56 which is inconsistant. Also make the test for the init/convert function generic for every fields (finite and inifinite fields). 2002-04-25 Zhendong Wan * tests/test-dense-vector-domain.C: test for dense vector domain. 2002-04-24 Pascal Giorgi * linbox/givaro.h: include file for all Givaro wrappers * linbox/lidia.h: include file for all Lidia wrappers * linbox/Makefile.am: adding file givaro.h and lidia.h and adding all Lidia header base 2002-04-24 Pascal Giorgi * linbox/field/givaro-zpz.h, givaro.h: Adding wrappers of primes fields for givaro and his file givaro.h associated. NB: this wrappers is template class which wrapps three sorts of givaro fields. For more information see the file itself. * linbox/field/Makefile.am: adding givaro fields wrapper 2002-04-18 William J. Turner * linbox/vector/subvector.h, subiterator.h: New wrappers for subvector of dense vector. 2002-04-18 William J. Turner * tests/test-subvector.cpp: New partial test program for subvector wrapper class. This needs a lot of work, and is not in the makefile yet. 2002-04-17 Dave Saunders * tweak identity case to copy 2002-04-13 Bradford Hovinen * linbox/field/modular.h (FieldAXPY >): Add form of get where the element in which to store result is also passed 2002-04-13 Bradford Hovinen * linbox/util/Makefile.am (include_HEADERS): Added vector-factory.h * linbox/util/field-axpy.h (class FieldAXPY): Add form of get where the place in which to store the result is passed * tests/test-vector-domain.C (testDenseDotProduct): Convert this to use VectorFactories 2002-04-12 Bradford Hovinen * s/element/Element/ everywhere except in comments (I hope!) * Add a file dummy.C to fool libtool into actually building liblinbox.la * Move debug.[Ch] and error.[Ch] to linbox/util 2002-04-12 William J. Turner * linbox/blackbox/sparse0-aux.h: Made dense vector apply not invalidate iterators 2002-04-12 Bradford Hovinen * linbox/util/commentator.h (class Commentator): Added compatibility layer for Jean-Guillaume's code (class Commentator): Move cnull above protected section to fix crashes on DISABLE_COMMENTATOR * linbox/util/commentator.h: Added null commentator * linbox/util/Makefile.am (include_HEADERS): Put debug.h, error.h here (libutil_la_SOURCES): Put error.C, debug.C here * macros/givaro-check.m4: Fix definition of GIVARO_HEADERS_*, GIVARO_TESTS * tests/test-unparametric-field.C: Rename from test-unparametric-field.cpp 2002-04-11 Bradford Hovinen * Makefile.am: Remove EXTRA_DIST, since both of these files are for CVS developers only 2002-04-11 Bradford Hovinen * linbox/field/modular.h (FieldAXPY >::accumulate): Use -t for overflow check (FieldAXPY >::accumulate): Cast to unsigned when modding out to avoid sign flip problem (FieldAXPY >::get): Cast to unsigned when modding out * tests/test-modular.C (main): Call testFieldAXPY * tests/test-generic.h (testField): Make title const (testFieldAXPY): Add this test * tests/test-diagonal.C (testRandomTranspose): Report diagonal vector used as input * tests/test-scalar-matrix.C: #include "modular.h" (main): Use integers mod 2147483647; update to use Modular interface * tests/.cvsignore: Add test-submatrix * tests/test-submatrix.C (main): Fix banner string * tests/test-diagonal.C (main): Enable printing of detailed messages * tests/test-unparametric-field.cpp (main): * tests/test-modular.C (main): * tests/test-inverse.C (main): * tests/test-minpoly.C (main): * tests/test-diagonal.C (main): * tests/test-rank.C (main): Use GF(2147483647) by default; fix relevant documentation * tests/test-sparse0.C (main): Fix documentation string for default modulus 2002-04-10 Bradford Hovinen * examples/example.C: Update with new Modular signature 2002-04-10 Dave Saunders * linbox/blackbox/scalar-matrix.h: New (simple) black box - sparse vector part not checked. 2002-04-10 Bradford Hovinen * macros/ntl-check.m4: Set NTL_TESTS, NTL_HEADERS_* to empty strings by default and to real data if NTL was found. Call AC_SUBST in all cases Fix check for whether NTL prefix was set * tests/.cvsignore: Add test-unparametric-field; s/test-sparse-matrix/test-sparse0/ 2002-04-10 Dave Saunders * tests/test-scalar-matrix.C: New test for new blackbox. 2002-04-08 Bradford Hovinen * linbox/util/commentator.h (class Commentator): Use std:: namespace for ofstream (class Commentator): Add std:: specifiers for nullstreambuf declarations and cnull 2002-04-08 Pascal Giorgi * macros/gmp-check.m4: Keep the current LD_LIBRARY_PATH * tests/test-generic.h: WARNING: The test of a field is not generic. The test of init and convert functions use a fixed number 49193295. So the test failed if the characteristic is less than this number. 2002-04-05 William J. Turner * linbox/Makefile.am: Install NTL and Givaro wrapper headers only if libraries are installed. 2002-04-05 William J. Turner * linbox/blackbox/Makefile.am: Only install NTL and Givaro wrapper header files if libraries are installed. * linbox/blackbox/sparse0-aux.h: Fixed apply and applyTranspose for sparse vectors. * macros/ntl-check.m4, givaro-check.m4: Only run tests of NTL and Givaro wrappers, and install header files, if libraries are installed. * tests/test-common.h: Fix printVector to print correct number of zeros for sparse sequence vectors. Made functions for testing equality of two vectors of the same type and to test if a vector is the zero vector. These may need some work still. * tests/Makefile.am: Only run tests of NTL and Givaro wrappers if libraries are installed. * tests/test-sparse0.C: Attempted to convert test functions to be generic for the Row and Vector types. These still need more work to be complete. In particular, there still needs to be a function to create a vector with no zero elements. 2002-04-04 William J. Turner * configure.in: removed requirement of givaro 2002-04-04 William J. Turner * linbox/ntl.h: include file for all NTL wrappers. * linbox/blackbox/archetype.h: Added virtual destructor to avoid warning. Removed resize() from apply and applyTranspose. * linbox/blackbox/sparse0-base.h: Fixed comparison between signed and unsigned integers, accessor function to field. * linbox/blackbox/sparse0-aux.h: Fixed constructor from SparseMatrix0Base. 2002-04-04 William J. Turner * linbox/field/Makefile.am: Install NTL and Givaro wrapper header files only if libraries are installed. * linbox/field/ntl.h, ntl-RR.h, ntl-ZZ_p.h, ntl-zz_p.h: Broke NTL field wrappers into separate files. 2002-04-04 Pascal Giorgi * macros/ntl-check.m4, givaro-check.m4: Use GMP_CFLAGS and GMP_LIBS and appending to LD_LIBRARY_PATH, and removed UNSET LD_LIBRARY_PATH at end of file * macros/gmp-check.m4: removed UNSET LD_LIBRARY_PATH at end of file 2002-04-04 William J. Turner * macros/ntl-check.m4: Use GMP_CFLAGS and GMP_LIBS * tests/test-ntl-zz_p.cpp, test-ntl-ZZ_p.cpp, test-ntl-RR.cpp: New tests * tests/test-common.h, test-vector-domain.C: generalized printVector to all vector types. Created areVectorsEqual function. Both need to be generalized to sparse associative vectors. 2002-04-03 William J. Turner * examples/example.C: changed sparse-matrix to sparse0 2002-04-03 William J. Turner * linbox/blackbox/sparse1.h: Original port; needs work! * linbox/blackbox/sparse0*.h: Renamed from sparse-matrix*.h. 2002-04-03 Bradford Hovinen * linbox/field/modular.h (class Modular): Rename from LargeModular, make this a class parameterized on the element type 2002-04-03 William J. Turner * linbox/field/ntl.h: Fixed random iterator random(x) for zz_p 2002-04-03 Bradford Hovinen * linbox/randiter/modular.h (class Modular): Rename from LargeModular; make this a class parameterized on the element type 2002-04-03 William J. Turner * linbox/randiter/unparametric.h: Ported UnparametricRandIter from old module * macros/givaro-check.m4: Copy from gmp-check.m4 and fix for Givaro * macros/ntl-check.m4: Change to version >= 5.0 and C++ namespace * tests/test-unparametric-field.cpp: New test * tests/test-minpoly.C: Changed sparse-matrix to sparse0 * tests/test-sparse0.C: Changed sparse-matrix to sparse0 2002-04-02 Bradford Hovinen * s/*_{abstract|archetype|envelope}/Abstract|Archetype|Envelope/g 2002-04-02 Bradford Hovinen * linbox/blackbox/dense-matrix.h (DenseMatrix::apply): Signedness fix * linbox/blackbox/submatrix.h (class Submatrix): Don't parameterize on the field; add rowdim, coldim (Submatrix::Submatrix): Pass rowdim, coldim; initialize vectors directly * linbox/field/Makefile.am (include_HEADERS): Add ntl.h * linbox/field/vector-domain.C (VectorDomain::axpy): Remove unused iterator k * linbox/util/commentator.C (Commentator::printActivityReport, Commentator::indent) (Commentator::updateActivityReport, Commentator::finishActivityReport): Make i unsigned (MessageClass::checkConfig): Signedness fix * linbox/util/integer/integer-io.C: Return v * tests/test-dense-matrix.C (test*): s/size_t/long/ for parameter n * tests/Makefile.am (TESTS): Add test test-submatrix * tests/test-common.h (printSparseSeqVector, printVector): Signedness fix * tests/test-vector-domain.C (test*): s/size_t/long/ for parameter n * tests/.cvsignore: Added test-det, test-rank 2002-04-01 Bradford Hovinen * Makefile.am (SUBDIRS): Build documentation last 2002-04-01 Bradford Hovinen * linbox/blackbox/transpose.h (Transpose::Transpose): Make A_ptr const (Transpose::Transpose): Use Transpose, not Compose for copy constructor * linbox/blackbox/compose.h (Compose::apply, Compose::applyTranspose): Declare local intermediate vector, since it was not compiling (for what reason I do not know) with the class member * linbox/solutions/rank.h: #include blackbox-container.h (rank): Compilation fixes * linbox/solutions/det.h: #include blackbox-container.h * tests/test-det.C (test*): Supply iterations to commentator.start * tests/Makefile.am (TESTS): Add test test-rank 2002-03-30 Bradford Hovinen * linbox/blackbox/compose.h (Compose::Compose): Use const pointers for inputs (Compose::Compose): Initialize _z directly 2002-03-30 Bradford Hovinen * linbox/solutions/det.h (det): Compilation fixes 2002-03-29 Bradford Hovinen * tests/test-generic.h (testDenseConsisntency): New test 2002-03-28 Bradford Hovinen * Makefile.am (EXTRA_DIST): Typo fix 2002-03-28 Bradford Hovinen * linbox/blackbox/dense-matrix.h (DenseMatrix::clone): Implement nontrivially (DenseMatrix::DenseMatrix): Implement copy constructor * linbox/util/commentator.C (Commentator::Commentator): Set default max depth for errors and warnings to 10; set max detail to 3 (Commentator::registerMessageClass): Accept parameters max_depth and max_level for initial configuration of message class * tests/test-inverse.C (main): Set maximum depth on internal descriptions to 3 (testDiagonalInverse): Add this test (main): Disable Hilbert inverse test pending test of Hilbert black box * tests/Makefile.am (test_large_modular_SOURCES): s/test-field-common/test-generic/ * tests/test-large-modular.C: Update * tests/test-field-common.h: Obsolete now; remove * tests/test-field-common.h (testField): Move to test-generic.h * tests/test-common.[Ch] (test_header, test_trailer): Remove * tests/test-field-common.h (isPower): Move to test-common.c/.h 2002-03-27 Bradford Hovinen * linbox/util/commentator.h (Commentator::Activity::Activity): Initialize _progress to 0 * linbox/util/commentator.C (Commentator::Commentator): Initialize cnull (Commentator::Commentator): Kill customization of BRIEF_REPORT (MessageClass::dumpConfig): Implement. Dumps the state of this MessageClass (Commentator::updateActivityReport): #if out estimated time * linbox/util/commentator.h (class Commentator): Make cnull no longer static * linbox/util/commentator.C (MessageClass::MessageClass): Accept max_depth and max_level parameters (Commentator::progress): Remove redundant isPrinted check (MessageClass::checkConfig): Return false if we get all the way through the loop 2002-03-27 Bradford Hovinen * tests/test-inverse.C (test*): Use commentator, kill report parameter * tests/test-generic.h (testTranpose): Use commentator, kill report parameter * tests/test-diagonal.C (test*): Use commentator, kill report parameter * tests/test-minpoly.C (test*): Use commentator, kill report parameter * tests/test-large-modular.C (main): Kill report * tests/test-sparse-matrix.C (test*): Use commentator, kill report parameter * tests/test-dense-matrix.C (testVandermonde, testIdentity): Use commentator, kill report parameter 2002-03-26 Bradford Hovinen * configure.in: Add default CXXFLAGS 2002-03-26 Bradford Hovinen * linbox/util/commentator.[Ch]: Complete rewrite * tests/test-*.C (main): Fix argument list * tests/test-large-modular.C (main): Update; add Dave Saunders to credits * tests/test-field-common.h (test_field): Rename to testField (testField): Remove report parameter; rename iters as iterations (testField): Fix indentation (testField): Use commentator 2002-03-24 Bradford Hovinen * linbox/algorithms/massey-domain.h (class MasseyDomain): Remove commentator; use global commentator instead. Update 2002-03-24 Bradford Hovinen * tests/test-common.C (parseArguments): Remove report argument (parseArguments): Use commentator to set default report file * tests/test-vector-domain.C (testDenseDotProduct): Use commentator 2002-03-19 Bradford Hovinen * linbox/blackbox/dense-matrix.h (class DenseMatrix): Use VectorDomain rather than MatrixDomain; typedef Vector and use it throughout (DenseMatrix::setEntry): Implement (DenseMatrix::rowdim, DenseMatrix::coldim): Fix signatures (DenseMatrix::clone): Define this; implementation deferred (DenseMatrix::DenseMatrix): Accept field and build VectorDomain object 2002-03-19 Bradford Hovinen * tests/test-field-common.h: Prevent multiple inclusion * tests/Makefile.am (TESTS): Beatify listing; put test-large-modular at top 2002-03-18 Bradford Hovinen * tests/test-diagonal.C (testRandomTranspose): Add this test * tests/test-common.h (applyPoly, multiEvalPoly): Return resulting vector (interpolatePoly): Implement * tests/Makefile.am (TESTS): Add test-dense-matrix 2002-03-15 Bradford Hovinen * tests/test-inverse.C (testVandermondeInverse): New test; construct the inverse of a Vandermonde matrix and check that it behaves correctly * tests/test-common.h (applyPoly): Use VectorDomain; typedef Vector to reduce verbosity (multiEvalPoly): Implement 2002-03-12 Bradford Hovinen * CHANGED-INTERFACES: Updated text * TODO: Updates 2002-03-12 Bradford Hovinen * examples/example.C: Update to new interface * linbox/blackbox/sparse-matrix-aux.h (LinBox): Rename references to MatrixDomain to VectorDomain (apply): Use vector domain dotprod * linbox/blackbox/inverse.h (LinBox): Use matrix domain vector axpy (LinBox): Compute the negative of the inverse of the constant coefficient first, then multiply through by that (Inverse): Rename MatrixDomain _MD to VectorDomain _VD * linbox/field/large-modular.h (LinBox): Rename ParamModular to LargeModular * linbox/field/Makefile.am (include_HEADERS): Rename param-modular.h to large-modular.h * linbox/field/vector-domain.[Ch]: Rename references to MatrixDomain to VectorDomain * linbox/field/Makefile.am (include_HEADERS): Rename matrix-domain.* to vector-domain.* * linbox/field/matrix-domain.h (LinBox): Add scalar-vector multiplication * linbox/field/matrix-domain.C (LinBox): Use FieldAXPY for dot products (MatrixDomain::axpy): Remember to increment i in the last loop (LinBox): Use axpy and axpyin when possible (LinBox): Specialize everything using MatrixDomainType rather than MatrixDomainSimpleType * linbox/randiter/large-modular.h: Rename ParamModularRandIter to LargeModularRandIter * linbox/randiter/Makefile.am (include_HEADERS): Rename param-modular.h to large-modular.h * tests/test-*.C: Update * tests/.cvsignore: Update * tests/test-vector-domain.C: Rename references to MatrixDomain to VectorDomain * tests/Makefile.am (test_vector_domain_SOURCES): Rename test-matrix-domain to test-vector-domain * tests/test-matrix-domain.C (testSparseAXPY, testDenseAXPY): Add these tests 2002-03-11 Bradford Hovinen * linbox/field/matrix-domain.C (LinBox): Remove precondition checks for sparse axpy (LinBox): Check that i has not gone past the end of y in the loop 2002-03-06 Bradford Hovinen * linbox/field/matrix-domain.h (LinBox): Remove definitions that derive from the field class; they are not necessary right now 2002-02-28 Bradford Hovinen * TODO: Added notes here 2002-02-28 Bradford Hovinen * linbox/field/matrix-domain.h (LinBox): Remove extraneous template specialization * linbox/field/matrix-domain.C (LinBox): Use _F.init to initialize field elements * linbox/field/matrix-domain.h: #include vector-traits.h * tests/test-common.h (printSparseSeqVector): Implement * tests/test-matrix-domain.C: Added this test 2002-02-27 Bradford Hovinen * doc/Makefile.am (SUBDIRS): Add $({DOCPLUSPLUS|TEX}_SUBDIRS) 2002-02-27 Bradford Hovinen * configure.in: Added doc/{html|tex}/Makefile; added call to check for Doc++; Add a check for latex and only build latex documentation if that is present (TEX_SUBDIRS): Make sure this gets included even if Doc++ isn't found * examples/example.C (main): Comment alignment fix * linbox/*/*.dxx: Update paths * Added missing *-wrappers.dxx * linbox/*/*.dxx: Update paths; add missing .dxx files * linbox/field/matrix-domain.h (LinBox): Add specialization for SparseSequence vectors 2002-02-20 Bradford Hovinen * tests/Makefile.am (noinst_PROGRAMS): Use $(TESTS) 2002-02-13 Bradford Hovinen * HACKING: Update information on directory structure * configure.in: Properly quote error message strings Use exit status 1 rather than -1 on error * HACKING: Added section with checklists for adding header files and tests to Linbox. * configure.in: Print error message if GMP was not found * HACKING: Update text (http): Added a section on having the right development tools and added some information on autogen.sh/configure options * CHANGED-INTERFACES: Update text 2002-02-09 Bradford Hovinen * COPYING: Copy over LGPL 2002-02-08 Bradford Hovinen * all: s/element_/Element_/g 2002-02-08 Saunders * examples/Makefile.am: change load order 2002-02-08 Bradford Hovinen * linbox/blackbox/inverse.h: Update #include vector-traits.h (Inverse): Correctly instantiate minpoly Include minpoly.h (class Inverse): Make _z mutable 2002-02-08 Saunders * macros/gmp-check.m4: set LD_LIBRARY_PATH 2002-02-08 Bradford Hovinen * macros/*-check.m4: Unset *_{CFLAGS|LIBS} if the library was not found Invoke found macro only if version check succeeded Invoke not found macro if version check failed 2002-02-08 Saunders * tests/Makefile.am: change link order. 2002-02-08 Bradford Hovinen * tests/test-inverse.C (main): Use prevprime(2^32) for default modulus (main): Fix banner * tests/test-diagonal.C (main): Use prevprime(2^32) for default modulus * tests/test-sparse-matrix.C (main): Use 101 for default modulus * tests/test-minpoly.C (main): Use prevprime(2^32) for default modulus * tests/Makefile.am (TESTS): Added test test-inverse 2002-02-07 Bradford Hovinen * tests/test-sparse-matrix.C (main): Use GF(65521) by default * tests/test-minpoly.C (main): Use GF(65521) by default * tests/test-diagonal.C (main): Use GF(65521) by default * tests/Makefile.am (TESTS): Added test test-diagonal * tests/test-sparse-matrix.C: Don't #include minpoly.h 2002-02-04 Bradford Hovinen * configure.in (AC_OUTPUT): Add examples/data/Makefile 2002-02-04 Bradford Hovinen * configure.in (CFLAGS): Make sure all CFLAGS variables make it in to compilations (CXXFLAGS): s/CFLAGS/CXXFLAGS/ * Makefile.am (SUBDIRS): Put examples last in the list * linbox/blackbox/sparse-matrix-aux.h (apply): Initialize *y_iter to 0 before looping * macros/ntl-check.m4: Correct check in error message * macros/*.m4: Remove setting LD_LIBRARY_PATH, etc. * tests/test-sparse-matrix.C (testNilpotentApply): Reset even with every iteration * tests/test-minpoly.C (testNilpotentMinpoly): Fix test of correctness * tests/test-common.h (printPolynomial): Write 0 for the zero polynomial (printPolynomial): Make sure 1 polynomial gets printed correctly * tests/test-minpoly.C (testIdentityMinpoly): Swap coefficients in the test * tests/test-minpoly.C (main): Update banner * tests/test-common.h (applyPoly): Implement; copy from linbox/blackbox/inverse.h * tests/test-sparse-matrix.C: Move minpoly tests to test-minpoly * tests/Makefile.am (TESTS): Add test test-minpoly 2002-02-03 Bradford Hovinen * */*.{C|h|inl}: Change Element to element, Integer to integer * */*.{C|h|inl}: Updated header comments to reflect correct filename locations * */.cvsignore: Added/updated .cvsignore files * configure.in: Add AC_PROG_CC, AC_PROG_RANLIB for building static libraries Add AM_PROG_LIBTOOL * */Makefile.am: Added infrastructure for building static library liblinbox.a so that we can avoid symbol collisions 2001-12-31 Bradford Hovinen * HACKING: Added documentation on coding style, fleshed out algorithms a bit linbox-1.4.2/HACKING000066400000000000000000000001621274717217100140100ustar00rootroot00000000000000Please go to http://www.linalg.org/developer.html (or ./doc/install-dev.html) ================== The Linbox Team linbox-1.4.2/Makefile.am000066400000000000000000000063551274717217100150670ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ ACLOCAL_AMFLAGS = -I macros SUBDIRS=linbox benchmarks macros tests interfaces doc examples pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = linbox.pc # include_HEADERS=linbox-config.h # I intend to pare down the target "check" so as to be a smaller check used # at installation time with a focus on confirming that dependencies on # other packages and compilation environment are in order. In contrast, the # target "fullcheck" should become as exhaustive as possible to serve # developers for regression testing. -bds 2011Feb ...also benchmarks will be. # Fullcheck provides a full check for regression testing purposes. fullcheck: (${MAKE} ; cd tests; ${MAKE} fullcheck ) ${MAKE} examples docs:doc/linbox-html/index.html doc/linbox-html/index.html: (cd doc; ${MAKE} docs) docs_dev:doc/linbox-dev-html/pages.html doc/linbox-dev-html/pages.html: (cd doc; ${MAKE} docs_dev) examples: (${MAKE} install; cd examples; ${MAKE} examples; ./test.sh) benchmarks: (cd benchmarks; ${MAKE} benchmarks) perfpublisher: benchmarks/perfpublisher tests/perfpublisher benchmarks/perfpublisher: (cd benchmarks; ${MAKE} perfpublisher) tests/perfpublisher: (cd tests; ${MAKE} perfpublisher) .PHONY:examples benchmarks bin_SCRIPTS=linbox-config bundled: sh auto-install.sh uninstall-hook: (test -d "$(includedir)/linbox" && rmdir "$(bindir)" \ "$(libdir)" \ "$(mandir)/man1" \ "$(mandir)" \ "$(includedir)/linbox/algorithms/gauss" \ "$(includedir)/linbox/algorithms/IML" \ "$(includedir)/linbox/algorithms/matrix-blas3" \ "$(includedir)/linbox/algorithms" \ "$(includedir)/linbox/blackbox" \ "$(includedir)/linbox/element" \ "$(includedir)/linbox/ring/modular" \ "$(includedir)/linbox/ring/ntl" \ "$(includedir)/linbox/field/" \ "$(includedir)/linbox/kaapi" \ "$(includedir)/linbox/matrix/sparsematrix" \ "$(includedir)/linbox/matrix/densedatrix" \ "$(includedir)/linbox/matrix/matrixdomain" \ "$(includedir)/linbox/matrix/sliced3" \ "$(includedir)/linbox/matrix" \ "$(includedir)/linbox/randiter" \ "$(includedir)/linbox/ring" \ "$(includedir)/linbox/solutions" \ "$(includedir)/linbox/switch" \ "$(includedir)/linbox/util/formats" \ "$(includedir)/linbox/util" \ "$(includedir)/linbox/vector" \ "$(includedir)/linbox" \ "$(datarootdir)/" \ "$(includedir)" ) || true git: git commit -a; git pull; git push VERSION=1.4.2 EXTRA_DIST=auto-install.sh #incremente-versions linbox-1.4.2/NEWS000066400000000000000000000017751274717217100135330ustar00rootroot00000000000000Version 0.1.2, 28 August 2002 - Fixed documentation build problems - Made documentation building optional, using --enable arguments - Added field () method to SparseMatrix0 - Added ability to detect that a GMP prefix given is for an uninstalled copy Version 0.1.1, 27 August 2002 - Fixed memory leak in BlackboxContainerBase - Size checking at build time and definition of data types int8, int16, int32, int64 and unsigned variants, guaranteed to be of their respective lengths. Specializations of Givaro::Modular have been updated to use these types - Performance tweaks to Givaro::Modular specialization of dot product - New test suites for the commentator and butterfly preconditioner - Numerous commentator bugfixes and output tweaks - Removed inefficiency in the Givaro::Modular random iterator - Reorganization and simplification of modular, vector domain, and sparse matrix tests - Enhancements and fixes in the build system - Various other bugfixes and enhancementslinbox-1.4.2/README.md000066400000000000000000000016501274717217100143030ustar00rootroot00000000000000# The Linbox Library [![Build Status](https://ci.inria.fr/linbox/buildStatus/icon?job=LinBox)](https://ci.inria.fr/linbox/job/LinBox/) ## Purpose The Linbox library provides functionality for exact linear algebra. See doc/mainpage.doxy for more info. ## Installation See doc/install-dev.html for installation from the git lastest version. See doc/install-dist.html for installation from a release tarball. See INSTALL for generic installation information. ## Availability From github.com/linbox-team # Requirements - GMP - any BLAS (Fortran or C): e.g. ATLAS, OpenBLAS, ... - Givaro - fflas-ffpack # Optional Dependencies - NTL, - IML, - FLINT, - M4RI, - M4RIE See doc/install*html for details. This library requires the GNU C++ compiler (gcc-4.3 or newer) or any compiler supporting advanced template features. ## Contact and discussions Corrections, suggestions and comments to linbox-use@googlegroups.com linbox-1.4.2/RELEASE-INSTRUCTIONS000066400000000000000000000027701274717217100157750ustar00rootroot00000000000000Instructions for making a LinBox release: 1. Run 'svn up ' to make sure you are fully up to date and on the HEAD branch [1] 2. Update the version number in Makefile.am next to 'VERSION = ', and in configure.in:3 3. Run 'make distcheck' on your local copy of LinBox. If there are any problems, fix them and commit the fixes to CVS. Usually problems will be things like header files that are not being installed, but should be. Make sure 'make distcheck' runs once without having any errors before moving onto the next step. Also, record all of the changes you make in ChangeLog. 4. Add a ChangeLog entry for Makefile.am with the text 'New version ' where is the version you are releasing. 5. Make sure everything in your local copy of LinBox is committed. In particular, either commit or eliminate anything from step 1 that was marked modified. 6. Run 'make dist' (or 'make distcheck') so that the last ChangeLog entry is included in your tarball. 7. Copy the tarball produced in step 6 to the web server. 8. Update the LinBox web site with information on the new release -- mention it in news.html and update the latest version information in index.html and download.html [1] Of course, this assumes that you want to release from the head branch. If HEAD represents the development version and you actually want to release from a stable branch, you should use cvs up -dP -r linbox- where is the version identifier in the stable branchlinbox-1.4.2/TODO000066400000000000000000000057051274717217100135210ustar00rootroot00000000000000cvs rm field/matrix-domain.C (after verifying uselessness) cvs rm randiter/archetype.doxy file docs of examples fixed file docs of */archetype.h removed eliminate */archetype.doxy's ? eliminate randiter/randiters.doxy's ? ------- older below ----------- - Test suite for random iterators - Test suite for vector stream - Import commentator time estimate code - - Everything in tests/TODO Before meeting: - Complete GF2 tests and get them working (BitVector tested implicitly) - Write tests for Compose, Permutation, Transpose - Add DenseRowsMatrix test to matrix-domain test suite - Fix filenames in CVS - Updates to Jean-Guillaume's gauss code? - Add solver, determinant to Jean-Guillaume's code? - Add more pivoting strategies? - New Compose implementation? ---- - NoCblasErrorChecks on release version ? -------------------------------------------- History 1) g++-4 compatibility ---> OK, JGD 21.12.2006 2) full BLAS compatibility with documentations (at least examples of use with ATLAS, GOTO, MAC BLAS) ---> Goto BLAS checked, Pascal. ---> MAC blas ? ---> lapack ? ---> 2b) wrappers for clapack_dgetrf et clapack_dgetri 4 possible solutions: a) remove hybrid rational solver b) keep it but it works only with ATLAS (thus correct test-smith-form using #ifdef LINBOX_HAVE_ATLAS) c) Add a --with-lapack option which must find dgetrf AND dgetri in a classical lapack (we thus provide clapack_dgetri and clapack_dgetrf within config-blas.h) or which finds clapack_dgetri AND clapack_dgetrf (e.g. in ATLAS). d) For this to work directly with Goto: we provide dgetri using dgetrf and dtrtri and dtrsm of Goto. ---> OK, JGD 13.01.2007 ---> there remains to implement a dgetri for GotoBLAS in order to enable Zhendong's numerical solver 3) gmp++ must be totally independent of Linbox and Givaro, add in LinBox and Givaro files to handle differences ---> OK, JGD 21.12.2006 4) Install documentation with simple examples 5) Data in linbox examples 5b) One example for each solution 6) move complicated and large coded solutions to algorithms directory 7) add #else, at least, throwing LinboxError exception to every #ifdef __LINBOX_HAVE_??? 8) read/write matrices and vectors efficiently in a coherent manner for formats 9) document matrices and vectors formats (links to web tutorial, provide data examples) 10) uniformly distributed random integers ! (in checks) ---> OK 11) add irreducibility test in added constructor of Givaro GFq 12) Maple interface and LinBox drivers ---> OK, 18.01.2007, Pascal. 13) check valence solutions 14) check generic LU ? 14b) Uniformize different eliminations (generic LU, sparse elim, dense etc.) 15) check blackbox rank when using extension fields NEW CODE (Algorithms, Solutions, Checks must be provided plus exceptions for non-handled cases) 16) sigma base, polynomial matrix multiplication, sparse rational solver, block Hankel/Toeplitz blackbox 16b) Parallel rank 17) Smith form 18) hybrid determinant ---> OK, Anna 10.01.2007 linbox-1.4.2/auto-install.sh000077500000000000000000000467511274717217100160120ustar00rootroot00000000000000#!/bin/bash - # Copyright(c) 2011 LinBox # Written by Brice Boyer (briceboyer) # see COPYING for more details. # TODO : create .extracted, .configured, .build, .installed and use a switch # (like --force) when you want to rebuild # TODO : manage icc/gcc # TODO : add gmp in givaro and use auto-install in givaro # TODO : use an optionnal message in die function. # TODO : rpath instead of LD_LIBRARY_PATH ? STABLE_FFLAS=1.6.0 STABLE_GIVARO=3.7.2 GIV_TAR=370 GIV_MD5=371 function decompress { #tar xf $1 gunzip -c $1 | tar xf - } #switches STABLE_VAR="false" DEBUG="" DEBUG_VAR="" WARNINGS="" WARNINGS_VAR="" OPTIM="--enable-optimization" OPTIM_VAR="" CHECK_VAR="" #options PREFIX_LOC="/tmp" PREFIX_VAR="" PREFIX="--prefix=$PREFIX_LOC" BLAS="" BLAS_VAR="" NTL="--with-ntl" NTL_VAR="" EXTRA="" EXTRA_VAR="" IML="--with-iml" IML_VAR="" SAGE="" SAGE_VAR="false" DRIV="" DRIV_VAR="false" MAKEOPT= MAKE_VAR="" DONE="\033[0;36m done !\033[0m" BEG="\033[1;32m * \033[0m" ######### # die # ######### die() { echo -ne "\n\033[1;31m * \033[0mfailed" ; if [[ -n $1 ]] ; then echo " ($1)" else echo "." fi exit -1 ; } cool() { echo -e $DONE } ############## # helper # ############## help() { echo echo " script for building and installing linbox the simple way (hopefully)" echo echo " * usage :" echo echo " --stable=[yes,no] : install latest stable versions or latest git versions." echo " Default : no, even if switch ommitted. No argument means no" echo " --prefix=MY/PATH : install all libraries under MY/PATH." echo " Default : /tmp/" echo echo " >> Libraries to search for <<" echo echo " If some library cannot be linked, don't forget to export LD_LIBRARY_PATH ! " echo echo " --with-gmp=GMP/PATH : tell where gmp is." echo " Default : /usr, /usr/local. No argument is Default" echo " --with-blas-libs=BLAS/PATH : same as GMP for BLAS. (will check anyway)" echo " --with-ntl=NTL/PATH : same as GMP for NTL. (default)" echo " --with-iml=IML/PATH : same as GMP for IML. (default)" echo " --extra-flags=\"\" : give extra compiler flags." echo " Default : empty" echo " --make-flags=\"\" : give extra makefile flags." echo " Default : empty" echo echo " >> for the next switches, nothing, Y, y, yes or 1 after \"=\" <<" echo " >> means enabled. Anything else or omission means disabled <<" echo echo " --enable-debug : build in debugging mode." echo " Default : disabled." echo " --enable-check : run make check." echo " Default : disabled." echo " --enable-warnings : build with extra compile warnings." echo " Default : disabled. May be \'full\' " echo " --enable-optimization : build with compile-time optimization." echo " Default : enabled." echo " --enable-sage : build with sage support." echo " Default : disabled." echo " --enable-drivers : build with drivers support." echo " Default : disabled." echo echo " >> calling helllp <<" echo echo " --help, -h, -? : print help and exit." } ############ # parser # ############ for i in "$@" ; do case "$i" in # switches "--help"|"-h"|"-?") help exit 0 ;; "--stable") if [ "x$STABLE_VAR" = "xfalse" ] ; then echo "stable or not ?"; help ; exit -1 ; fi STABLE_VAR=true; ;; "--enable-debug") if [ "x$DEBUG_VAR" = "xfalse" ] ; then echo "enable-debug or not ?" ; help ; exit -1 ; fi DEBUG="$i"; DEBUG_VAR="true"; ;; "--enable-check") if [ "x$CHECK_VAR" = "xfalse" ] ; then echo "enable-check or not ?"; help ; exit -1; fi CHECK_VAR="true"; ;; "--enable-warnings") if [ "x$WARNINGS_VAR" = "xfalse" ] ; then echo "enable-warnings or not ?"; help ; exit -1; fi WARNINGS="$i"; WARNINGS_VAR="true"; ;; "--enable-optimization") if [ "x$OPTIM_VAR" = "xfalse" ] ; then echo "enable-optimization or not ?"; help ; exit -1; fi OPTIM="$i"; OPTIM_VAR="true"; ;; "--disable-debug") if [ "x$DEBUG_VAR" = "xtrue" ] ; then echo "enable-debug or not ?" ; help ; exit -1 ; fi DEBUG_VAR="false"; ;; "--disable-check") if [ "x$CHECK_VAR" = "xtrue" ] ; then echo "enable-check or not ?"; help ; exit -1; fi CHECK_VAR="false"; ;; "--disable-warnings") if [ "x$WARNINGS_VAR" = "xtrue" ] ; then echo "enable-warnings or not ?"; help ; exit -1; fi WARNINGS_VAR="false"; ;; "--disable-optimization") if [ "x$OPTIM_VAR" = "xtrue" ] ; then echo "enable-optimization or not ?"; help ; exit -1; fi OPTIM_VAR="false"; ;; "--with-ntl") if [ "x$NTL_VAR" = "xfalse" ] ; then echo "with-ntl or not ?"; help ; exit -1; fi NTL="$i"; NTL_VAR="true"; ;; "--with-gmp") if [ "x$GMP_VAR" = "xfalse" ] ; then echo "with-gmp or not ?"; help ; exit -1; fi GMP="$i" GMP_VAR="true" ;; "--with-iml") if [ "x$IML_VAR" = "xfalse" ] ; then echo "with-iml or not ?"; help ; exit -1; fi IML="$i " IML_VAR="true" ;; "--enable-sage") if [ "x$SAGE_VAR" = "xfalse" ] ; then echo "enable-sage or not ?"; help ; exit -1; fi SAGE="$i" SAGE_VAR="true" ;; "--enable-drivers") if [ "x$DRIV_VAR" = "xfalse" ] ; then echo "enable-drivers or not ?" ; help ; exit -1; fi DRIV="$i" DRIV_VAR="true" ;; "--disable-sage") if [ "x$SAGE_VAR" = "xtrue" ] ; then echo "enable-sage or not ?"; help ; exit -1; fi SAGE="" SAGE_VAR="false" ;; "--disable-drivers") if [ "x$DRIV_VAR" = "xtrue" ] ; then echo "enable-drivers or not ?" ; help ; exit -1; fi DRIV="" DRIV_VAR="false" ;; *) if [[ ! "$i" =~ --.*=.+ ]] ; then echo "bad switch : $i" help ; exit -1 ; fi # options (now we can cut) QUI="`echo $i | cut -d'=' -f1`" QUOI="`echo $i | cut -d'=' -f2`" # echo "$QUI = $QUOI" case "$QUI" in "--stable") OK=2 [[ "$QUOI" = "yes" ]] && OK=1 [[ "$QUOI" = "no" ]] && OK=0 if [[ "$OK" = "2" ]] ; then echo "stable=[yes/no] !" ; help ; exit -1 ; fi [[ "OK" = "1" ]] && STABLE_VAR="true" || STABLE_VAR="false" ;; "--prefix") if [ "x$PREFIX_VAR" = "xtrue" ] ; then echo "prefix already set ?" ; help ; exit -1; fi PREFIX=$i PREFIX_LOC=$QUOI PREFIX_VAR="true" ;; "--extra-flags") if [ "x$EXTRA_VAR" = "xtrue" ] ; then echo "extra-flags already set ?" ; help ; exit -1; fi EXTRA="$QUOI" EXTRA_VAR="true" ;; "--make-flags") if [ "x$MAKE_VAR" = "xtrue" ] ; then echo "make-flags already set ?" ; help ; exit -1; fi MAKEOPT="$QUOI" MAKE_VAR="true" ;; "--with-gmp") if [ "x$GMP_VAR" = "xtrue" ] ; then echo "GMP path already set ?" ; help ; exit -1; fi GMP="$i" GMP_VAR="true" ;; "--with-blas-libs") if [ "x$BLAS_VAR" = "xtrue" ] ; then echo "BLAS path already set ?" ; help ; exit -1; fi BLAS=$QUI=\"$QUOI\" BLAS_VAR="true" ;; "--with-ntl") if [ "x$NTL_VAR" = "xtrue" ] ; then echo "NTL path already set ?" ; help ; exit -1; fi NTL="$i" NTL_VAR="true" ;; "--with-iml") if [ "x$IML_VAR" = "xtrue" ] ; then echo "IML path already set ?" ; help ; exit -1; fi IML="$i" IML_VAR="true" ;; "--enable-optimization") [[ "$QUOI" =~ y|yes|Y|1 ]] && OK=1 || OK=0 if [ "x$OPTIM_VAR" = "xtrue" -a "OK" = "0" ] ; then echo "optim or not optim ?" ; help ; exit -1; fi if [ "x$OPTIM_VAR" = "xfalse" -a "OK" = "1" ] ; then echo "optim or not optim ?" ; help ; exit -1; fi if [[ "x$OK" = "x1" ]] ; then OPTIM=$QUI ; OPTIM_VAR="true" ; else OPTIM_VAR="false" ; fi ;; "--enable-warnings") [[ "$QUOI" =~ y|yes|Y|1|full ]] && OK=1 || OK=0 if [ "x$WARNING_VAR" = "xtrue" -a "OK" = "0" ] ; then echo "warning or not warning ?" ; help ; exit -1; fi if [ "x$WARNING_VAR" = "xfalse" -a "OK" = "1" ] ; then echo "warning or not warning ?" ; help ; exit -1; fi if [[ "x$OK" = "x1" ]] ; then WARNINGS=$QUI ; WARNING_VAR="true" else WARNING_VAR="false" fi [[ "x$QUOI" = "xfull" ]] && WARNINGS=$i ;; "--enable-debug") [[ "$QUOI" =~ y|yes|Y|1 ]] && OK=1 || OK=0 if [ "x$DEBUG_VAR" = "xtrue" -a "OK" = "0" ] ; then echo "debug or not debug ?" ; help ; exit -1; fi if [ "x$DEBUG_VAR" = "xfalse" -a "OK" = "1" ] ; then echo "debug or not debug ?" ; help ; exit -1; fi if [[ "x$OK" = "x1" ]] ; then DEBUG=$QUI ; DEBUG_VAR="true" else DEBUG_VAR="false" fi ;; "--enable-check") [[ "$QUOI" =~ y|yes|Y|1 ]] && OK=1 || OK=0 if [ "x$CHECK_VAR" = "xtrue" -a "OK" = "0" ] ; then echo "check or not check ?" ; help ; exit -1; fi if [ "x$CHECK_VAR" = "xfalse" -a "OK" = "1" ] ; then echo "check or not check ?" ; help ; exit -1; fi if [[ "x$OK" = "x1" ]] ; then CHECK=$QUI ; CHECK_VAR="true" else CHECK_VAR="false" fi ;; "--enable-sage") [[ "$QUOI" =~ y|yes|Y|1 ]] && OK=1 || OK=0 if [ "x$OPTIM_VAR" = "xtrue" -a "OK" = "0" ] ; then echo "sage or not sage ?" ; help ; exit -1; fi if [ "x$OPTIM_VAR" = "xfalse" -a "OK" = "1" ] ; then echo "sage or not sage ?" ; help ; exit -1; fi if [[ "x$OK" = "x1" ]] ; then OPTIM=$QUI ; OPTIM_VAR="true" else OPTIM_VAR="false" fi ;; "--enable-drivers") [[ "$QUOI" =~ y|yes|Y|1 ]] && OK=1 || OK=0 if [ "x$OPTIM_VAR" = "xtrue" -a "OK" = "0" ] ; then echo "drivers or not drivers ?" ; help ; exit -1; fi if [ "x$OPTIM_VAR" = "xfalse" -a "OK" = "1" ] ; then echo "drivers or not drivers ?" ; help ; exit -1; fi if [[ "x$OK" = "x1" ]] ; then DRIV=$QUI ; DRIV_VAR="true" else DRIV_VAR="false" fi ;; *) echo "unkown swith option $i" ; help ; exit -1 ; ;; esac ;; esac done MAKEPROG="make ${MAKEOPT}" export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$PREFIX_LOC/lib/pkgconfig echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PREFIX_LOC/lib echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" ###################### # create build dir # ###################### #first tee creates a new log. echo -en "${BEG}Preparing build directory..."| tee auto-install.log if [ -e build ] ; then if [ ! -d build ] ; then rm -rf build ; mkdir build; fi # echo -n "emptying build directory..." # rm -rf build/ # mkdir build else # echo -n "creating empty build directory..." mkdir build fi cool #################### # fetch sources # #################### cd build ; ### Givaro ### echo -en "${BEG}fetching Givaro..."| tee -a ../auto-install.log if [ "$STABLE_VAR" = "true" ]; then if [ -f givaro-$STABLE_GIVARO.tar.gz ] ; then echo -ne " already there!\n" echo -ne "${BEG}fetching md5sum" ; [ -f givaro-$STABLE_GIVARO.tar.gz.md5sum ] && rm givaro-${STABLE_GIVARO}.tar.gz.md5sum ; wget --no-check-certificate https://forge.imag.fr/frs/download.php/$GIV_MD5/givaro-$STABLE_GIVARO.tar.gz.md5sum >/dev/null 2>&1 || die [ -f givaro-$STABLE_GIVARO.tar.gz.md5sum ] || die cool echo -ne "${BEG}" md5sum -c givaro-$STABLE_GIVARO.tar.gz.md5sum || die else wget --no-check-certificate https://forge.imag.fr/frs/download.php/$GIV_TAR/givaro-$STABLE_GIVARO.tar.gz >/dev/null 2>&1 || die [ -f givaro-$STABLE_GIVARO.tar.gz ] || die echo -ne "${BEG}fetching md5sum" ; wget --no-check-certificate https://forge.imag.fr/frs/download.php/$GIV_MD5/givaro-$STABLE_GIVARO.tar.gz.md5sum >/dev/null 2>&1 || die cool echo -ne "${BEG}" md5sum -c givaro-$STABLE_GIVARO.tar.gz.md5sum || die fi else OK=0 ; git clone https://github.com/linbox-team/givaro.git 2>&1 >/dev/null && OK=1 [ "$OK" = "1" ] && cool || die fi ### Fflas-ffpack ### echo -en "${BEG}fetching Fflas-Ffpack..."| tee -a ../auto-install.log if [ "$STABLE_VAR" = "true" ]; then if [ -f fflas-ffpack-$STABLE_FFLAS.tar.gz ] ; then echo -ne " already there!\n" echo -ne "${BEG}fetching md5sum" ; [ -f fflas-ffpack-$STABLE_FFLAS.tar.gz.md5sum ] && rm fflas-ffpack-${STABLE_FFLAS}.tar.gz.md5sum ; wget http://linalg.org/fflas-ffpack-$STABLE_FFLAS.tar.gz.md5sum >/dev/null 2>&1 || die [ -f fflas-ffpack-$STABLE_FFLAS.tar.gz.md5sum ] || die cool echo -ne "${BEG}" md5sum -c fflas-ffpack-$STABLE_FFLAS.tar.gz.md5sum || die else wget http://linalg.org/fflas-ffpack-$STABLE_FFLAS.tar.gz >/dev/null 2>&1 || die [ -f fflas-ffpack-$STABLE_FFLAS.tar.gz ] || die echo -ne "${BEG}fetching md5sum" ; wget http://linalg.org/fflas-ffpack-$STABLE_FFLAS.tar.gz.md5sum >/dev/null 2>&1 || die cool echo -ne "${BEG}" md5sum -c fflas-ffpack-$STABLE_FFLAS.tar.gz.md5sum || die fi else OK=0 ; git clone https://github.com/linbox-team/fflas-ffpack.git 2>&1 >/dev/null && OK=1 [ "$OK" = "1" ] && cool || die fi ##################### # extract sources # ##################### ### Givaro ### OK=0 if [ "$STABLE_VAR" = "true" ]; then echo -en "${BEG}extracting Givaro..."| tee -a ../auto-install.log decompress givaro-$STABLE_GIVARO.tar.gz && OK=1 [ "$OK" = "1" ] && cool || die fi ### Fflas-ffpack ### OK=0 if [ "$STABLE_VAR" = "true" ]; then echo -en "${BEG}extracting Fflas-Ffpack..."| tee -a ../auto-install.log decompress fflas-ffpack-$STABLE_FFLAS.tar.gz && OK=1 [ "$OK" = "1" ] && cool || die fi #################### # install Givaro # #################### if [ "$STABLE_VAR" = "true" ]; then cd givaro-$STABLE_GIVARO || die else cd givaro/ || die fi if [ -f Makefile ] ; then echo -e "${BEG}cleaning Givaro..."| tee -a ../../auto-install.log ${MAKEPROG} clean | tee -a ../../auto-install.log|| die ${MAKEPROG} distclean | tee -a ../../auto-install.log|| die # ${MAKEPROG} unistall || die cool fi echo -e "${BEG}configuring Givaro..." if [ "$STABLE_VAR" = "true" ]; then echo "./configure $PREFIX $DEBUG $OPTIM $GMP $WARNINGS " echo "./configure $PREFIX $DEBUG $OPTIM $GMP $WARNINGS " > configure.givaro.exe chmod +x configure.givaro.exe ./configure.givaro.exe | tee -a ../../auto-install.log rm -rf configure.givaro.exe #./configure $PREFIX $DEBUG $OPTIM $GMP $WARNINGS || die else echo "./autogen.sh $PREFIX $DEBUG $OPTIM $GMP $WARNINGS" echo "./autogen.sh $PREFIX $DEBUG $OPTIM $GMP $WARNINGS" > autogen.givaro.exe chmod +x autogen.givaro.exe ./autogen.givaro.exe| tee -a ../../auto-install.log rm -rf autogen.givaro.exe #./autogen.sh $PREFIX $DEBUG $OPTIM $GMP $WARNINGS || die fi echo -e "${BEG}building Givaro..."| tee -a ../../auto-install.log echo "${MAKEPROG} CXXFLAGS+=\"$EXTRA\" LDFLAGS+=\"-Wl,-rpath,$PREFIX_LOC\""| tee -a ../../auto-install.log if [ -n "$EXTRA" ] ; then ${MAKEPROG} "CXXFLAGS+=\"$EXTRA\" LDFLAGS+=\"-Wl,-rpath,$PREFIX_LOC\"" | tee -a ../../auto-install.log|| die else ${MAKEPROG} | tee -a ../../auto-install.log|| die fi if [ "$CHECK_VAR" = "true" ] ; then echo -e "${BEG}checking Fflas-Ffpack..."| tee -a ../../auto-install.log ${MAKEPROG} check | tee -a ../../auto-install.log|| die fi echo -e "${BEG}installing Givaro..."| tee -a ../../auto-install.log ${MAKEPROG} install | tee -a ../../auto-install.log|| die #return in build cd .. cool| tee -a ../auto-install.log ########################## # install fflas-ffpack # ########################## if [ "$STABLE_VAR" = "true" ]; then cd fflas-ffpack-$STABLE_FFLAS/ || die else cd fflas-ffpack/ || die fi if [ -f Makefile ] ; then echo -e "${BEG}cleaning Fflas-Ffpack..."| tee -a ../../auto-install.log ${MAKEPROG} clean | tee -a ../../auto-install.log|| die ${MAKEPROG} distclean | tee -a ../../auto-install.log|| die # ${MAKEPROG} unistall || die cool| tee -a ../../auto-install.log fi echo -e "${BEG}configuring Fflas-Ffpack..."| tee -a ../../auto-install.log if [ "$STABLE_VAR" = "true" ]; then echo "./configure $PREFIX $DEBUG $OPTIM $BLAS $WARNINGS"| tee -a ../../auto-install.log echo "./configure $PREFIX $DEBUG $OPTIM $BLAS $WARNINGS" > configure.fflas.exe chmod +x configure.fflas.exe ./configure.fflas.exe| tee -a ../../auto-install.log rm -rf configure.fflas.exe #./configure "$PREFIX" "$DEBUG" "$OPTIM" "$BLAS" "$WARNINGS" || die else echo "./autogen.sh $PREFIX $DEBUG $OPTIM $BLAS $WARNINGS"| tee -a ../../auto-install.log echo "./autogen.sh $PREFIX $DEBUG $OPTIM $BLAS $WARNINGS" > configure.fflas.exe chmod +x configure.fflas.exe ./configure.fflas.exe| tee -a ../../auto-install.log rm -rf configure.fflas.exe #./autogen.sh "$PREFIX" "$DEBUG" "$OPTIM" "$BLAS" "$WARNINGS" || die fi echo -e "${BEG}building Fflas-Ffpack..."| tee -a ../../auto-install.log echo "${MAKEPROG} CXXFLAGS+=\"$EXTRA\"" if [ -n "$EXTRA" ] ; then ${MAKEPROG} "CXXFLAGS+=\"$EXTRA\"" | tee -a ../../auto-install.log|| die else ${MAKEPROG} | tee -a ../../auto-install.log|| die fi if [ "$CHECK_VAR" = "true" ] ; then echo -e "${BEG}checking Fflas-Ffpack..."| tee -a ../../auto-install.log ${MAKEPROG} check | tee -a ../../auto-install.log|| die fi echo -e "${BEG}installing Fflas-Ffpack..." ${MAKEPROG} install | tee -a ../../auto-install.log|| die cool| tee -a ../../auto-install.log #return in build cd .. #return in linbox cd .. ##################### # cleaning LinBox # ##################### if [ -f Makefile ] ; then echo -e "${BEG}cleaning LinBox..."| tee -a ./auto-install.log ${MAKEPROG} clean | tee -a ./auto-install.log|| die ${MAKEPROG} distclean | tee -a ./auto-install.log|| die # ${MAKEPROG} unistall || die cool| tee -a ./auto-install.log fi echo -e "${BEG}configuring LinBox..."| tee -a ./auto-install.log echo ""| tee -a ./auto-install.log echo -e "${BEG}Don't forget to run something like"| tee -a ./auto-install.log echo -e " * 'export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:$PREFIX_LOC/lib'"| tee -a ./auto-install.log echo -e " * to ensure you don't get undefined symbols !"| tee -a ./auto-install.log echo ""| tee -a ./auto-install.log if [ -x autogen.sh ] ; then echo "./autogen.sh $PREFIX $DEBUG $OPTIM $GMP $BLAS $NTL $WARNINGS $IML $SAGE $DRIV"| tee -a ./auto-install.log ./autogen.sh "$PREFIX" "$DEBUG" "$OPTIM" "$GMP" "$BLAS" "$NTL" "$WARNINGS" "$IML" "$SAGE" "$DRIV" | tee -a ./auto-install.log|| die else echo "./configure $PREFIX $DEBUG $OPTIM $GMP $BLAS $NTL $WARNINGS $IML $SAGE $DRIV"| tee -a ./auto-install.log # ./configure $PREFIX $DEBUG $OPTIM $GMP $BLAS $NTL $WARNINGS $IML $SAGE $DRIV || die ./configure "$PREFIX" "$DEBUG" "$OPTIM" "$GMP" "$BLAS" "$NTL" "$WARNINGS" "$IML" "$SAGE" "$DRIV" | tee -a ./auto-install.log|| die fi echo -e "${BEG}building LinBox..."| tee -a ./auto-install.log echo "${MAKEPROG} CXXFLAGS+=\"$EXTRA\" LDFLAGS+=\"-Wl,-rpath,$PREFIX_LOC\""| tee -a ./auto-install.log if [ -n "$EXTRA" ] ; then ${MAKEPROG} "CXXFLAGS+=\"$EXTRA\" LDFLAGS+=\"-Wl,-rpath,$PREFIX_LOC\"" | tee -a ./auto-install.log|| die else ${MAKEPROG} "LDFLAGS+=\"-Wl,-rpath,$PREFIX_LOC\""| tee -a ./auto-install.log|| die fi if [ "$CHECK_VAR" = "true" ] ; then echo -e "${BEG}checking LinBox..."| tee -a auto-install.log ${MAKEPROG} check | tee -a auto-install.log|| die fi echo -e "${BEG}installing LinBox..."| tee -a auto-install.log ${MAKEPROG} install | tee -a auto-install.log|| die cool| tee -a auto-install.log echo " " | tee -a auto-install.log echo -e "${BEG}Don't forget to run something like"| tee -a auto-install.log echo -e " * 'export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:$PREFIX_LOC/lib'"| tee -a auto-install.log echo -e " * to ensure you don't get undefined symbols !"| tee -a auto-install.log echo "" | tee -a auto-install.log echo -e " * Happy LinBoxing ! (installed in $PREFIX_LOC)"| tee -a auto-install.log echo " "| tee -a auto-install.log cool| tee -a auto-install.log linbox-1.4.2/autogen.sh000077500000000000000000000131231274717217100150230ustar00rootroot00000000000000#!/bin/sh # Copyright (c) LinBox # # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ # Run this to generate all the initial makefiles, etc. # Recover command line, with double-quotes CMDLINE="" for arg in "$@" do WHO="`echo $arg | cut -d'=' -f1`" WHAT="`echo $arg | cut -s -d'=' -f2`" if test "x$WHAT" = "x"; then CMDLINE="$CMDLINE $WHO" else CMDLINE="$CMDLINE $WHO=\"$WHAT\"" fi done echo "$0 $CMDLINE" > autogen.status chmod +x autogen.status # Starts configuring srcdir=`dirname $0` test -z "$srcdir" && srcdir=. PKG_NAME="LinBox Library" (test -f $srcdir/configure.ac \ && test -f $srcdir/linbox/linbox.doxy) || { echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" echo " top-level "\`$PKG_NAME\'" directory" exit 1 } ORIGDIR=`pwd` cd $srcdir PROJECT=linbox TEST_TYPE=-f DIE=0 # Defaults LIBTOOL=libtool LIBTOOLIZE=libtoolize # Fix OSx problem with GNU libtool (uname -a|grep -v Darwin) < /dev/null > /dev/null 2>&1 || { echo "....Adding fix for OSX" LIBTOOL=glibtool LIBTOOLIZE=glibtoolize } (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "You must have autoconf installed to compile $PROJECT." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "You must have automake installed to compile $PROJECT." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "You must have automake installed to compile $PROJECT." echo "Get ftp://sourceware.cygnus.com/pub/automake/automake-1.4.tar.gz" echo "(or a newer version if it is available)" DIE=1 } (grep "^AC_PROG_LIBTOOL" configure.ac >/dev/null) && { ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtoolize' installed to compile $PROJECT." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } } grep "^AM_GNU_GETTEXT" configure.ac >/dev/null && { grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \ (gettext --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`gettext' installed to compile $PROJECT." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } } if test "$DIE" -eq 1; then exit 1 fi if test -z "$*"; then echo "I am going to run ./configure with no arguments - if you wish " echo "to pass any to it, please specify them on the $0 command line." fi case $CC in *xlc | *xlc\ * | *lcc | *lcc\ *) am_opt=--include-deps;; esac for coin in `find . -name configure.ac -print` do dr=`dirname $coin` if test -f $dr/NO-AUTO-GEN; then echo skipping $dr -- flagged as no auto-gen else echo processing $dr macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` ( cd $dr aclocalinclude="$ACLOCAL_FLAGS" for k in $macrodirs; do if test -d $k; then aclocalinclude="$aclocalinclude -I $k" ##else ## echo "**Warning**: No such directory \`$k'. Ignored." fi done if grep "^AM_GNU_GETTEXT" configure.ac >/dev/null; then if grep "sed.*POTFILES" configure.ac >/dev/null; then : do nothing -- we still have an old unmodified configure.ac else echo "Creating $dr/aclocal.m4 ..." test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 echo "Running gettextize... Ignore non-fatal messages." echo "no" | gettextize --force --copy echo "Making $dr/aclocal.m4 writable ..." test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 fi fi if grep "^AM_GNOME_GETTEXT" configure.ac >/dev/null; then echo "Creating $dr/aclocal.m4 ..." test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 echo "Running gettextize... Ignore non-fatal messages." echo "no" | gettextize --force --copy echo "Making $dr/aclocal.m4 writable ..." test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 fi if grep "^AC_PROG_LIBTOOL" configure.ac >/dev/null; then echo "Running libtoolize..." $LIBTOOLIZE --force --copy fi echo "Running aclocal $aclocalinclude ..." aclocal $aclocalinclude if grep "^AC_CONFIG_HEADERS" configure.ac >/dev/null; then echo "Running autoheader..." autoheader fi echo "Running automake --gnu $am_opt ..." automake -c --add-missing --gnu $am_opt echo "Running autoconf ..." autoconf ) fi done conf_flags="--enable-maintainer-mode" #--enable-iso-c cd "$ORIGDIR" if test x$NOCONFIGURE = x; then echo Running $srcdir/configure $conf_flags "$@" ... $srcdir/configure $conf_flags "$@" \ && echo "Now type \`make install' to compile $PROJECT" || exit 1 else echo Skipping configure process. fi linbox-1.4.2/benchmarks/000077500000000000000000000000001274717217100151375ustar00rootroot00000000000000linbox-1.4.2/benchmarks/BenchmarkFile.h000066400000000000000000000047731274717217100200150ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by AJS * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/BenchmarkFile.h * @ingroup benchmarks * @brief */ #ifndef __LINBOX_BENCHMARKFILE_H #define __LINBOX_BENCHMARKFILE_H #include #include #include #include namespace LinBox { class BenchmarkFile { public: typedef std::map::iterator MetadataIterator; BenchmarkFile() : numFields_(0) {} ~BenchmarkFile(); void write(std::ostream& out); void addMetadata(const std::string& key,const CSValue& val); MetadataIterator metadataBegin(); void addDataField(const std::string& fieldName,const CSValue& val); void setType(const std::string& fieldName, const std::string& type); void pushBackTest(); static CSDate getDateStamp(); static std::string getDateFormat(); protected: typedef std::vector TestLine; typedef std::map MetadataMap; typedef std::map FieldPosMap; typedef std::map TypeMap; void printMetadata(std::ostream& out); void printFieldTitles(std::ostream& out); void printContents(std::ostream& out); void printCommaVector(std::ostream& out,const std::vector& vec); void freeTestLine(TestLine& line); MetadataMap metadata_; TypeMap typeMap_; int numFields_; FieldPosMap fields_; TestLine curTest_; std::vector allTests_; }; } #include "BenchmarkFile.inl" #endif // __LINBOX_BENCHMARKFILE_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/BenchmarkFile.inl000066400000000000000000000106321274717217100203370ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by AJS * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/BenchmarkFile.inl * @ingroup benchmarks * @brief */ #ifndef __LINBOX_BENCHMARKFILE_INL #define __LINBOX_BENCHMARKFILE_INL #include "linbox/util/debug.h" #include #include #include namespace LinBox { void BenchmarkFile::printCommaVector(std::ostream& out,const std::vector& vec) { bool first=true; for (int i=0;iprint(out); } } out << std::endl; } void BenchmarkFile::printMetadata(std::ostream& out) { typedef MetadataMap::iterator MapIT; for (MapIT it=metadata_.begin();it!=metadata_.end();++it) { out << it->first << ", "; it->second->print(out); out << std::endl; } typedef TypeMap::iterator TypeMapIT; if (!(typeMap_.empty())) { out << "types"; for (TypeMapIT it=typeMap_.begin();it!=typeMap_.end();++it) { out << ", (" << it->first << "," << it->second << ")"; } out << std::endl; } out << "end, metadata" << std::endl << std::endl; } void BenchmarkFile::printFieldTitles(std::ostream& out) { std::vector fieldVec(numFields_); typedef FieldPosMap::iterator MapIT; for (MapIT it=fields_.begin();it!=fields_.end();++it) { fieldVec[it->second]=new CSString(it->first); } printCommaVector(out,fieldVec); for (int i=0;isecond; } } BenchmarkFile::MetadataIterator BenchmarkFile::metadataBegin() { return metadata_.begin(); } void BenchmarkFile::addMetadata(const std::string& key,const CSValue& val) { metadata_.insert(std::pair(key,val.clone())); } void BenchmarkFile::setType(const std::string& fieldName, const std::string& type) { typeMap_[fieldName]=type; } void BenchmarkFile::addDataField(const std::string& fieldName,const CSValue& val) { typedef FieldPosMap::iterator FieldPosMapIT; int fieldPos; FieldPosMapIT it = fields_.find(fieldName); if (it==fields_.end()) { fields_.insert(std::pair(fieldName,numFields_)); fieldPos=numFields_; ++numFields_; curTest_.resize(numFields_); } else { fieldPos=it->second; } curTest_[fieldPos]=val.clone(); } void BenchmarkFile::pushBackTest() { allTests_.push_back(curTest_); curTest_.clear(); curTest_.resize(numFields_); } CSDate BenchmarkFile::getDateStamp() { time_t rawTime; struct tm *timeInfo; srand ((unsigned)time (&rawTime)); timeInfo=localtime(&rawTime); return CSDate(*timeInfo); } std::string BenchmarkFile::getDateFormat() { return "%a %m/%d %H/%M/%S %Y"; } } #endif // __LINBOX_BENCHMARKFILE_INL // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/CSValue.h000066400000000000000000000061271274717217100166200ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by AJS * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/CSValue.h * @ingroup benchmarks * @brief */ #ifndef __LINBOX_CSVALUE_H #define __LINBOX_CSVALUE_H #include #include #include #include #include namespace LinBox { class CSValue { public: virtual ~CSValue() {} virtual void print(std::ostream& out) const =0; virtual CSValue* clone() const =0; virtual int type() const =0; }; #define CSV_STRING_TYPE 1 #define CSV_INT_TYPE 2 #define CSV_DOUBLE_TYPE 3 #define CSV_DATE_TYPE 4 std::ostream& operator<< (std::ostream& out, const CSValue& v) { v.print(out); return out; } class CSString : public CSValue { public: CSString() {} CSString(const std::string& e) : elt_(e) {} std::string getVal() const {return elt_;} void print(std::ostream& out) const {out << elt_;} CSValue* clone() const {return new CSString(elt_);} int type() const {return CSV_STRING_TYPE;} protected: std::string elt_; }; class CSInt : public CSValue { public: CSInt() : elt_(0) {} CSInt(const int e) : elt_(e) {} int getVal() const {return elt_;} void print(std::ostream& out) const {out << elt_;} CSValue* clone() const {return new CSInt(elt_);} int type() const {return CSV_INT_TYPE;} protected: int elt_; }; class CSDouble : public CSValue { public: CSDouble() : elt_(0.0) {} CSDouble(const double e) : elt_(e) {} double getVal() const {return elt_;} void print(std::ostream& out) const {out << elt_;} CSValue* clone() const {return new CSDouble(elt_);} int type() const {return CSV_DOUBLE_TYPE;} protected: double elt_; }; class CSDate : public CSValue { public: CSDate() {} CSDate(const struct tm& time) : elt_(time) {} struct tm getVal() const {return elt_;} void print(std::ostream& out) const { std::string timeStr(asctime(&elt_)); timeStr.erase(timeStr.size()-1); out << timeStr; } CSValue* clone() const {return new CSDate(elt_);} int type() const {return CSV_DATE_TYPE;} protected: struct tm elt_; }; } #endif // __LINBOX_CSVALUE_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/Makefile.am000066400000000000000000000102151274717217100171720ustar00rootroot00000000000000# Copyright (c) 2011 the LinBox group # Brice Boyer (briceboyer) # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ SUBDIRS=data matrix DEFCPPFLAGS = @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR -DLinBoxSrcOnly AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/linbox $(DEFCPPFLAGS) $(DEPS_CFLAGS) LDADD = $(DEPS_LIBS) $(LDFLAGS) LDADD += $(top_builddir)/linbox/liblinbox.la pkgincludesubdir=$(pkgincludedir)/benchmarks noinst_LTLIBRARIES=libbenchmarks.la libbenchmarks_la_SOURCES= benchmark.C libbenchmarks_la_LDFLAGS=$(LDFLAGS) $(DEPS_LIBS) libbenchmarks_la_LIBADD=$(top_builddir)/linbox/liblinbox.la #libbenchmarks_la_LIBADD+=$(top_builddir)/linbox/util/.libs/libutil.la # AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/linbox # AM_CPPFLAGS += $(NTL_CFLAGS) $(IML_CFLAGS) $(PARFLAGS) # AM_CXXFLAGS = @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR -DLinBoxSrcOnly # LDADD = $(NTL_LIBS) $(MPFR_LIBS) $(FPLLL_LIBS) $(LDFLAGS) $(IML_LIBS) $(XML_LIBS) $(PARLIBS) # AM_LDFLAGS=-static $(LDFLAGS) AM_LDFLAGS = .libs/libbenchmarks.la # AM_LDFLAGS = .libs/benchmark.o PERFPUBLISHERFILE=benchmarks-report.xml BENCH_BASIC= \ benchmark-example\ benchmark-order-basis FAILS= \ benchmark-ftrXm \ benchmark-ftrXm \ benchmark-crafixed TODO= \ benchmark-matmul \ benchmark-spmv \ benchmark-fields # BENCH_ALGOS= \ TODO= \ benchmark-solve \ benchmark-rank \ benchmark-det \ benchmark-nullspace # BENCH_FORMS= \ TODO= \ benchmark-lu benchmark-echelon \ benchmark-hermite \ benchmark-smith EXTRA_PROGRAMS= $(BENCH_BASIC) pkginclude_HEADERS = \ optimizer.h \ benchmark-utils.h \ benchmark-utils.C \ benchmark-metadata.h \ benchmark-metadata.C \ benchmark.h \ benchmark.C \ benchmark.inl EXTRA_DIST= \ benchmark.doxy CLEANFILES= $(EXTRA_PROGRAMS) $(PERFPUBLISHERFILE) benchmarks: ${EXTRA_PROGRAMS} ### BASE BENCHMARK ### # benchmark_fgemm_SOURCES = benchmark-fgemm.C # benchmark_ftrXm_SOURCES = benchmark-ftrXm.C # benchmark_crafixed_SOURCES = benchmark-crafixed.C benchmark_example_SOURCES = benchmark-example.C benchmark_order_basis_SOURCES = benchmark-order-basis.C # benchmark_matmul_SOURCES = benchmark-matmul.C # benchmark_spmv_SOURCES = benchmark-spmv.C # benchmark_fields_SOURCES = benchmark-fields.C ### BENCHMARK ALGOS and SOLUTIONS ### # benchmark_solve_SOURCES = benchmark-solve.C # benchmark_rank_SOURCES = benchmark-rank.C # benchmark_det_SOURCES = benchmark-det.C # benchmark_nullspace_SOURCES = benchmark-nullspace.C ### BENCHMARK MATRIX FACTORISATIONS ### # benchmark_lu_SOURCES = benchmark-lu.C # benchmark_echelon_SOURCES = benchmark-echelon.C # benchmark_hermite_SOURCES = benchmark-hermite.C # benchmark_smith_SOURCES = benchmark-smith.C cleanup : (cd data ; make cleanup) LINBOX=@prefix@ LINBOX_BIN=@bindir@ # Perfpublisher script interaction - AB 2014/12/11 perfpublisher: +./perfpublisher.sh "$(PERFPUBLISHERFILE)" "$(EXTRA_PROGRAMS)" "$(CXX)" # for compilation of new benchmarks %:%.C $(CXX) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPTFLAGS) ${INCLUDES} $(AM_CPPFLAGS) $*.C -o $@ $(LDFLAGS) $(LDADD) %:%.cpp $(CXX) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPTFLAGS) ${INCLUDES} $(AM_CPPFLAGS) $*.cpp -o $@ $(LDFLAGS) $(LDADD) linbox-1.4.2/benchmarks/README000066400000000000000000000104521274717217100160210ustar00rootroot00000000000000These notes stem from a discussion by Johnson, Harrison, Yuhasz, Youse, Stachnik , Saunders at UDel June 2013. It is proposed that experiment data files be csv files containing a metadata sec tion followed by a measurement section. The idea is that (1) each experimental run will make such a file (or add to such a file) and (2) each plot and table generation can then be done from such files as input. The metadata is a series of key-value pairs ending in one whose key is "end" This is followed by a line containing a list of keys (column labels) and then some number of lines recording experiments. These are lists of values corresponding to the column labels. The value "-" denotes "missing" or "undefined". When value v in a "k,v" pair is another keyword, it means that k's value is the same as the other keyword's. Blank lines are ignored. C++ comment conventions are followed (use of "//" and "/* ... */"). This is for "commented out" text and should not be confused with values of the keyword "comment". Metadata reveals key values that are held constant in the experiments. The column labels are the keys whose values will vary from experiment to experiment.i Experiment data lines record the key values for the column labels of a given experiment. For example: ------------------ comment, exploration of foo parallel and blocked variants problem, foo date, 2013June21 author, joe linboxer\, bds rowdim, 10000 //coldim, rowdim coldim, 20000 blockcoldim, blockrowdim matrix class, randomMat field, Givaro::Modular(101) flops formula, (n*nnz)/time comment, no parsing guidance is offered yet for mflops formula end, metadata time, nnz, blockrowdim, threads, algorithm, comment 0.001, 10000, 26, 1, block-coppersmith, blockdim is about 2lg(dim) 1.1e-5, 10000, 100, 48, block-coppersmith-omp, blockdim is sqrt(dim) 1.1e-5, 100000, -, 1, matrix-build, - ... ------------------ For consistency and particularly for generating reports on data from multiple data files, the following key name conventions should be followed. Other key names should be used only when one of these does not fit. ----- // algorithm properties problem - the algorithmic task being measured (eg. solveNonsingular). algorithm - a specific implementation of a method to solve the problem (eg. solve(Method::Wiedemann) or solve-omp). time - the runtime for the experiment task flops - the nominal operation count for the task. The flops formula should be made clear in the metadata. blockrowdim - row blocking used blockcoldim - col blocking used ... // domain of computation properties field - arithmetic domain class used (when it is a field) (eg. Givaro::Modular). ring - arithmetic domain class used (eg. PID_integer). matrix domain - arithmetic domain used (ring or field extended by matrix ops) (eg. BlasMatrixDomain). modulus - characteristic of the field or ring (eg. 200000000000003). exponent - exponent of the modulus. ... // environment-of-computation properties date - the date of the experiment(s) (eg. 2013June22). author - name or list of names of the person(s) running the experiments. computer - computer description (cores, mem, cache, speeds, etc.). threads - number of threads used. ... // matrix properties (when problem has a key matrix as data) matrix class - blackbox template or class (eg. SparseMatrix or BlasMatrix or MatrixDomain::Submatrix). matrix constructor - eg. randomMat. // Properties of the constructed instance (depends on matrix class and constructor rowdim - coldim - nnz - rank - Pesumably one knows from context whether this is a parameter or computed result. det - Pesumably one knows from context whether this is a parameter or computed result. ... ----- Further remarks. Other shared keywords can be added... Some keywords, whose values are strings, should have a standardized list of possible values... For convenience we could have a file of some keyword constants. For example, some keywords which are machine names with corresponding value a description, eg., "hmrg, Dell Poweredge 2650 2-Xeon (3.2GHz)". Then a data file's metadata can include "computer, hmrg" for short. @ can be the "value of" operator, as in "computer, @hmrg", wherein the value expands to the value of hmrg. The experiment lines (below metadata and column labels) should be readable by gnuplot (this is a constraint on number and string representations). linbox-1.4.2/benchmarks/benchmark-example.C000066400000000000000000000217441274717217100206360ustar00rootroot00000000000000/* Copyright (C) 2011 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/benchmark-example.C * @ingroup benchmarks * @brief Benchmarking example * @example benchmark */ #include "benchmarks/benchmark.h" #include "linbox/util/error.h" #include "fflas-ffpack/fflas-ffpack.h" #include "linbox/ring/modular.h" #include "linbox/matrix/random-matrix.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/solutions/rank.h" #include using namespace LinBox ; using Givaro::Timer; /* compute MegaFLOPS for mat mul (2 m n k) */ double mm_mflops(size_t m, size_t n, size_t k) { return 2*(double)m/100*(double)n/100*(double)k/100 ; } /* Benchmark on a field */ /*! @internal * @brief launches the benchmarks for the square case. * @param F field * @param min min size to bench * @param max max size to bench * @param step step between two sizes * @param Data where data is stored * @param series_nb index of the current series of measures. */ template void launch_bench_square(Field & F // const problem , size_t min, size_t max, size_t step // no negative step , PlotData & Data ) { linbox_check(step); linbox_check(min <= max); std::ostringstream nam ; F.write(nam); // Data.setCurrentSeriesName(nam.str()); Data.newSeries(nam.str()); Chrono TW ; typedef typename Field::RandIter Randiter ; Randiter R(F) ; BlasMatrixDomain BMD(F) ; RandomDenseMatrix RandMat(F,R); for ( size_t i = min ; i < max ; i += step ) { showAdvanceLinear(i,min,max); size_t ii = i ; BlasMatrix A (F,ii,ii); BlasMatrix B (F,ii,ii); BlasMatrix C (F,ii,ii); size_t j = 0 ; // number of repets. RandMat.random(A); RandMat.random(B); RandMat.random(C); TW.clear() ; while( Data.keepon(j,TW.time(),false) ) { TW.start() ; BMD.mul(C,A,B) ; // C = AB TW.stop(); ++j ; } double mflops = computeMFLOPS(TW.times(),mm_mflops(i,i,i)); Data.setCurrentSeriesEntry(i,mflops,(double)i,TW.time()); // could be i*i*i } Data.finishSeries(); } /* Collects Benchmarks */ /*! @brief Benchmark square fgemm Y=AX for several fields. * @param min min size * @param max max size * @param step step of the size between 2 benchmarks * @param charac characteristic of the field. */ void bench_square( size_t min, size_t max, size_t step, int charac ) { size_t nb = 1 ;// une col de plus (la première) typedef Givaro::Modular Field0 ; ++nb ; typedef Givaro::Modular Field1 ; ++nb ; // typedef Givaro::Modular Field2 ; ++nb ; // typedef Givaro::ModularBalanced Field3 ; ++nb ; // typedef Givaro::ModularBalanced Field4 ; ++nb ; // typedef Givaro::ModularBalanced Field5 ; ++nb ; // GivaroZpZ ///// DATA HARVEST //// PlotData Data; showProgression Show(nb) ; Field0 F0(charac) ; // launch_bench_square(F0,100,1500,300,Data); launch_bench_square(F0,min,max,step,Data); Show.FinishIter(); if (charac < 2048) { Field1 F1(charac) ; // launch_bench_square(F1,200,1500,200,Data); launch_bench_square(F1,min,max,step,Data); Show.FinishIter(); } else { Show.SkipIter(); } #if 0 Field2 F2(charac) ; launch_bench_square(F2,min,max,step,Data); Show.FinishIter(); Field3 F3(charac) ; launch_bench_square(F3,min,max,step,Data); Show.FinishIter(); if (charac < 2048) { Field4 F4(charac) ; launch_bench_square(F4,min,max,step,Data); Show.FinishIter(); } else { Show.SkipIter(); } Field5 F5(charac) ; launch_bench_square(F5,min,max,step,Data); Show.FinishIter(); #endif ///// PLOT STYLE //// LinBox::PlotStyle Style; Style.setTerm(LinBox::PlotStyle::Term::eps); Style.setTitle("BlasMatrixDomain mul","Mflops","dimensions"); Style.setPlotType(LinBox::PlotStyle::Plot::graph); Style.setLineType(LinBox::PlotStyle::Line::linespoints); LinBox::PlotGraph Graph(Data,Style); Graph.setOutFilename("bmdmul_square"); // Graph.plot(); Graph.print(Tag::Printer::gnuplot); Graph.print(Tag::Printer::tex); Graph.print(Tag::Printer::csv); return ; } template void launch_bench_rank(const Field &F, const std::string & name , PlotData & Data ) { SparseMatrix Mat(F); std::ifstream mat1 (name); Mat.read(mat1); MatrixMetaData mmd (Mat,name); // Data.newSeries(name); Chrono TW ; showAdvanceLinear(1,1,2); TW.clear() ; size_t j = 0 ; while( Data.keepon(j,TW.time()) ) { TW.start() ; unsigned long d ; LinBox::rank(d,Mat,Method::Blackbox()); TW.stop(); ++j ; } // double mflops = computeMFLOPS(TW.times(),mm_mflops(i,i,i)); Data.setSeriesEntry("Rank (Blackbox)",name,TW.time(),(double)Mat.size(),TW.time()); Data.addCurrentEntryMetaData(mmd); // Data.addCurrentSeriesMetaData(mmd); // Data.addMetaData(mmd); showAdvanceLinear(2,1,2); TW.clear() ; j = 0 ; while( Data.keepon(j,TW.time()) ) { TW.start() ; unsigned long d ; LinBox::rank(d,Mat,Method::SparseElimination()); TW.stop(); ++j ; } Data.selectSeries("Rank (SparseElimination)"); Data.setCurrentSeriesEntry(name,TW.time(),(double)Mat.size(),TW.time()); Data.addCurrentEntryMetaData(mmd); } void bench_rank(int carac) { typedef Givaro::Modular Field0 ; Field0 F(carac); int nb = 1; //! @bug no gz reader ? std::string m1 = "matrix/bibd_12_5_66x792.sms" ; ++nb; std::string m2 = "matrix/bibd_13_6_78x1716.sms" ; ++nb; std::string m3 = "matrix/bibd_14_7_91x3432.sms" ; ++nb; PlotData Data; showProgression Show((size_t)nb) ; launch_bench_rank(F,m1,Data); Show.FinishIter(); launch_bench_rank(F,m2,Data); Show.FinishIter(); launch_bench_rank(F,m3,Data); Show.FinishIter(); ///// PLOT STYLE //// LinBox::PlotStyle Style; Style.setTerm(LinBox::PlotStyle::Term::eps); Style.setTitle("Rank algorithms","seconds","matrices"); Style.setXtics(LinBox::PlotStyle::Options::oblique); /* default Style.setPlotType(LinBox::PlotStyle::Plot::histo); Style.setLineType(LinBox::PlotStyle::Line::histogram); */ LinBox::PlotGraph Graph(Data,Style); Graph.setOutFilename("rank_comparison"); // Graph.plot(); Graph.print(Tag::Printer::gnuplot); // change style Graph.refStyle().setTerm(LinBox::PlotStyle::Term::png); Graph.print(Tag::Printer::gnuplot); Graph.print(Tag::Printer::xml); Graph.print(Tag::Printer::html); return; } /* main */ int main( int ac, char ** av) { /* Argument parsing/setting */ static size_t min = 100; /* min size */ static size_t max = 1500; /* max size (not included) */ static size_t step = 300; /* step between 2 sizes */ // static std::list lst ; /* what bench to start ? */ // lst.push_front(1);// ={1,2} vivement le nouveau std... // lst.push_front(2); static Argument as[] = { { 'm', "-m min" , "Set minimal size of matrix to test." , TYPE_INT , &min }, { 'M', "-M Max" , "Set maximal size." , TYPE_INT , &max }, { 's', "-s step", "Sets the gap between two matrix sizes.", TYPE_INT , &step }, // { 'l', "-l list", "Only launches a subset of available benchmarks\n - 1: compare to raw blas\n - 2:various square sizes\n - 3:various shapes\n - 4: various parameters (a,b)\n - 5 : various transp. combinations", TYPE_INTLIST, &lst }, END_OF_ARGUMENTS }; parseArguments (ac, av, as); if (min >= max) { throw LinBoxError("min value should be smaller than max..."); } if (min + step >= max) { std::cout << "Warning : your x axis has only one point. You should have a smaller step." << std::endl; } /* square for various fields */ #if 1 { std::cout << " *** Lines plot *** " << std::endl; std::cout << "Benchmark square matrix multiplication via BMD.mul()" << std::endl; bench_square(min,max,step,13); } #endif /* different sparse matrix */ { std::cout << " *** Bar plot *** " << std::endl; std::cout << "Benchmark different matrices on different rank algorithms" << std::endl; bench_rank(13); } return EXIT_SUCCESS ; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/benchmark-metadata.C000066400000000000000000000025151274717217100207560ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/benchmark-metadata.C * @ingroup benchmarks * @brief metadata */ #ifndef __LINBOX_benchmarks_benchmark_metadata_C #define __LINBOX_benchmarks_benchmark_metadata_C #endif // __LINBOX_benchmarks_benchmark_metadata_C // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/benchmark-metadata.h000066400000000000000000000245331274717217100210270ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/benchmark-metadata.h * @ingroup benchmarks * @brief metadata */ #ifndef __LINBOX_benchmarks_benchmark_metadata_H #define __LINBOX_benchmarks_benchmark_metadata_H #include "benchmark-utils.h" // // Metadata // namespace LinBox { class MetaData ; //! This is the general metadata class class MetaData { private : svector_t name ; //! key/name of the metadata. for instance std::string _hash ; //! unique id (used to save space) svector_t keys ; //! keys svector_t vals ; //! values std::vector metadata ; //! child metadata array private : //! @internal recursively free memory void clean () { if (this != NULL) { for (size_t i = 0 ; i < metadata.size() ; ++i) { metadata[i]->clean(); delete metadata[i] ; metadata[i] = NULL ; } } return; } //! @internal copy all, including metadata children void deep_copy(const MetaData * md) { name = md->getIds(); _hash = md->getHash(); keys = md->getKeys(); vals = md->getVals(); size_t md_size = md->getMetaDataSize(); if (md_size) { metadata.resize(md_size,NULL); for (size_t i = 0 ; i deep_copy(md->getMetaData(i)); } } return; } //! @internal adds some metadata child void push_back(const MetaData * md) { size_t md_size = getMetaDataSize(); metadata.resize(md_size+1,NULL); metadata[md_size] = new MetaData ; metadata[md_size]->deep_copy(md); } protected : const std::string & getName() const { return name[1] ; } void setHash(const std::string & myhash) { _hash = myhash ; } const svector_t & getIds() const { return name ; } const svector_t & getKeys() const { return keys ; } const svector_t & getVals() const { return vals ; } size_t getMetaDataSize() const { return metadata.size(); } const MetaData * getMetaData(const size_t & i) const { return metadata[i]; } std::string hasher(const std::string & data) { #ifdef HAVE_CXX11 std::hash my_hasher ; size_t the_hash = my_hasher(data); #else std::locale loc; const std::collate& coll = std::use_facet >(loc); // const member ? size_t the_hash = coll.hash(data.data(),data.data()+data.length()); #endif return toString(the_hash); } public: MetaData() : name(2) , _hash("") , keys(0) , vals(0) , metadata(0) { name[0] = "unknown" ; name[1] = name[0] + '_' + randomAlNum(8) ; } ~MetaData() { clean(); } MetaData(const MetaData * md) { deep_copy(md); } MetaData(const MetaData & md) { deep_copy(&md); } template void changeValue(const std::string & keyword, T& value) { size_t i ; bool ok = findKeyword(i, keys.begin(), keys.end(), keyword); if ( !ok ) // throw LinBoxError("undefined keyword",keyword); throw LinBoxError("undefined keyword"); vals[i] = toString(value); return; } const std::string & getValue(const std::string & keyword) { size_t i ; bool ok = findKeyword(i, keys.begin(), keys.end(), keyword); if ( !ok ) // throw LinBoxError("undefined keyword",keyword); throw LinBoxError("undefined keyword"); return vals[i] ; } void addValue(const std::string & nom, const std::string & val = "N/A") { keys.push_back(nom); vals.push_back(val); linbox_check(keys.size() == vals.size()); return; } template void addValue(const std::string & nom, const T & val ) { keys.push_back(nom); vals.push_back(toString(val)); linbox_check(keys.size() == vals.size()); return; } void addMetaData( const MetaData * md) { push_back(md); } void setIds (const std::string & key) { name[0] = key ; name[1] = key + "_" + randomAlNum(8) ; return; } #ifdef __LINBOX_HAVE_TINYXML2 void writeMetaData(tinyxml2::XMLElement ** data, tinyxml2::XMLDocument & doc) const { //! @warning only one name allowed. Todo : matrix1, matrix2,... using namespace tinyxml2; *data = doc.NewElement( getIds()[0].c_str() ); linbox_check(*data); (*data)->SetAttribute("id",getIds()[1].c_str()); #ifndef NDEBUG (*data)->SetAttribute("hash",getHash().c_str()); #endif for (size_t i = 0 ; i < keys.size() ; ++i ) { (*data)->SetAttribute(keys[i].c_str(),vals[i].c_str()); } for (size_t i = 0 ; i < getMetaDataSize() ; ++i ) { XMLElement * child = NULL ; getMetaData(i)->writeMetaData(&child,doc); (*data)->InsertEndChild( child ); } return ; } #endif // should not be too public std::string getLocalString() const { std::string res = name[0] + ',' ; for (size_t i = 0 ; i < keys.size() ; ++i) res += keys[i] + '=' + vals[i] + ';'; return res ; } const std::string & getHash() const { return _hash ; } }; // MetaData } // LinBox // // MetaData specialized // #ifdef HAVE_CXX11 #include #endif namespace LinBox { // class RepresentationMetaData ; class MatrixMetaData ; // class VectorMetaData ; class StorageMetaData ; class GeneratorMetaData ; class FieldMetaData ; // class SolutionMetaData ; class AlgorithmMetaData ; class EnvrironmentMetaData ; class BenchmarkMetaData ; //! Field metadata class FieldMetaData : public MetaData { private : public : FieldMetaData() { setIds("field"); addValue("name"); addValue("characteristic"); hash(); } // a general field/ring has no exponent. template FieldMetaData( const Field & F) { #if 0 F.getMetaData(this); // this would also print representation also det(A, some_mehtod(), Meta) would do a dry run and print in Meta. #endif setIds("field"); std::ostringstream a ; F.write(a); addValue("name",a.str()); addValue("characteristic", F.characteristic()); hash(); } void hash() { std::string data = getLocalString() ; linbox_check(getMetaDataSize() == 0); setHash(hasher(data)); } }; // FieldMetaData //! Matrix metadata // what if MetaData changes something in MatrixMetaData and does not update hash ? class MatrixMetaData : public MetaData { void initMetadata() { addValue("rowdim"); addValue("coldim"); addValue("nbnz"); addValue("name"); FieldMetaData FMD; addMetaData(&FMD); } public: MatrixMetaData() { setIds("matrix"); initMetadata() ; hash(); } template MatrixMetaData(Matrix & M, const std::string nom = "N/A" ) { setIds("matrix"); // M.getMetaData(this); addValue("rowdim",M.rowdim()); addValue("coldim",M.coldim()); addValue("nbnz",M.size()); addValue("name",nom); FieldMetaData FMD(M.field()); addMetaData(&FMD); hash(); } void hash() { std::string data = getLocalString() ; if (getMetaDataSize() == 1) { // first the field. (@todo search for fields, then search for random generator.) data += getMetaData(0)->getLocalString(); } setHash(hasher(data)); } } ; // MatrixMetaData //! Environment metadata; class EnvironmentMetaData : public MetaData { void initMetadata() { // Machine // compiler } public : EnvironmentMetaData() { } }; // EnvironmentMetaData //! Benchmark metadata; class BenchmarkMetaData : public MetaData { void initMetadata() { // problem // machine } public : BenchmarkMetaData() { } }; // BenchmarkMetaData //! Algorithm metadata; class AlgorithmMetaData : public MetaData { void initMetadata() { // name // method } public : AlgorithmMetaData() { } }; // AlgorithmMetaData //! Generator metadata; class GeneratorMetaData : public MetaData { void initMetadata() { } public : GeneratorMetaData() { } }; // GeneratorMetaData //! Storage metadata; class StorageMetaData : public MetaData { void initMetadata() { } public : StorageMetaData() { } }; // StorageMetaData } // LinBox // // typedefs // namespace LinBox { typedef std::vector mvector_t ; } // LinBox // // Metadata Container // namespace LinBox { struct MetaDataSeries { mvector_t MetaDataVec ; // vector of metadatas // svector_t PointsIDs ; // vector of points ids smatrix_t MetaDataIDs ; // MetaDataIDs[i] is the list of indexes in PointIDs, corresponding to the points associated with metadatas MetaDataVec[i]. Could use some std::map as well. public: MetaDataSeries() : MetaDataVec(0) , MetaDataIDs(0) {}; // bool exists(size_t & j, const MetaData & m); // uses hashes to search for metadata. void push_back(const std::string & pointID, const MetaData & pointMD) { // size_t j = MetaDataVec.size(); // re-hash here ? std::string hsh = pointMD.getHash(); size_t i ; bool found = false ; for (i = 0 ; i < MetaDataVec.size() ; ++i) if (hsh == MetaDataVec[i].getHash()) { found = true ; break; } linbox_check((!found) && (i == MetaDataVec.size())); if (! found) { MetaDataVec.push_back(pointMD); svector_t used_by(0) ; used_by.push_back(pointID); MetaDataIDs.push_back(used_by) ; } else { MetaDataIDs[i].push_back(pointID); } } }; } // LinBox #ifdef LinBoxSrcOnly #include "benchmarks/benchmark-metadata.C" #endif #endif // __LINBOX_benchmarks_benchmark_metadata_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/benchmark-order-basis.C000077500000000000000000000311741274717217100214160ustar00rootroot00000000000000/* -*- mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ //#define __FFLASFFPACK_SEQUENTIAL #include #include size_t getPeakRSS( ); size_t getCurrentRSS( ); //#define MEMINFO std::right< Max Mem: "<>20) #define MEMINFO std::right<<" ----> Mem: "< #include #include #if defined(BSD) #include #endif #else #error "Unable to define getMemorySize( ) for an unknown OS." #endif #if defined(_WIN32) #include #include #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) #include #include #if defined(__APPLE__) && defined(__MACH__) #include #elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__))) #include #include #elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__) #include #endif #else #error "Cannot define getPeakRSS( ) or getCurrentRSS( ) for an unknown OS." #endif /* END MEMORY INFO */ size_t getPeakRSS( ) { #if defined(_WIN32) /* Windows -------------------------------------------------- */ PROCESS_MEMORY_COUNTERS info; GetProcessMemoryInfo( GetCurrentProcess( ), &info, sizeof(info) ); return (size_t)info.PeakWorkingSetSize; #elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__))) /* AIX and Solaris ------------------------------------------ */ struct psinfo psinfo; int fd = -1; if ( (fd = open( "/proc/self/psinfo", O_RDONLY )) == -1 ) return (size_t)0L; /* Can't open? */ if ( read( fd, &psinfo, sizeof(psinfo) ) != sizeof(psinfo) ) { close( fd ); return (size_t)0L; /* Can't read? */ } close( fd ); return (size_t)(psinfo.pr_rssize * 1024L); #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) /* BSD, Linux, and OSX -------------------------------------- */ struct rusage rusage; getrusage( RUSAGE_SELF, &rusage ); #if defined(__APPLE__) && defined(__MACH__) return (size_t)rusage.ru_maxrss; #else return (size_t)(rusage.ru_maxrss * 1024L); #endif #else /* Unknown OS ----------------------------------------------- */ return (size_t)0L; /* Unsupported. */ #endif } /** * Returns the current resident set size (physical memory use) measured * in bytes, or zero if the value cannot be determined on this OS. */ size_t getCurrentRSS( ) { #if defined(_WIN32) /* Windows -------------------------------------------------- */ PROCESS_MEMORY_COUNTERS info; GetProcessMemoryInfo( GetCurrentProcess( ), &info, sizeof(info) ); return (size_t)info.WorkingSetSize; #elif defined(__APPLE__) && defined(__MACH__) /* OSX ------------------------------------------------------ */ struct mach_task_basic_info info; mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT; if ( task_info( mach_task_self( ), MACH_TASK_BASIC_INFO, (task_info_t)&info, &infoCount ) != KERN_SUCCESS ) return (size_t)0L; /* Can't access? */ return (size_t)info.resident_size; #elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__) /* Linux ---------------------------------------------------- */ long rss = 0L; FILE* fp = NULL; if ( (fp = fopen( "/proc/self/statm", "r" )) == NULL ) return (size_t)0L; /* Can't open? */ if ( fscanf( fp, "%*s%ld", &rss ) != 1 ) { fclose( fp ); return (size_t)0L; /* Can't read? */ } fclose( fp ); return (size_t)rss * (size_t)sysconf( _SC_PAGESIZE); #else /* AIX, BSD, Solaris, and Unknown OS ------------------------ */ return (size_t)0L; /* Unsupported. */ #endif } /** * Returns the size of physical memory (RAM) in bytes. */ size_t getMemorySize( ) { #if defined(_WIN32) && (defined(__CYGWIN__) || defined(__CYGWIN32__)) /* Cygwin under Windows. ------------------------------------ */ /* New 64-bit MEMORYSTATUSEX isn't available. Use old 32.bit */ MEMORYSTATUS status; status.dwLength = sizeof(status); GlobalMemoryStatus( &status ); return (size_t)status.dwTotalPhys; #elif defined(_WIN32) /* Windows. ------------------------------------------------- */ /* Use new 64-bit MEMORYSTATUSEX, not old 32-bit MEMORYSTATUS */ MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx( &status ); return (size_t)status.ullTotalPhys; #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) /* UNIX variants. ------------------------------------------- */ /* Prefer sysctl() over sysconf() except sysctl() HW_REALMEM and HW_PHYSMEM */ #if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64)) int mib[2]; mib[0] = CTL_HW; #if defined(HW_MEMSIZE) mib[1] = HW_MEMSIZE; /* OSX. --------------------- */ #elif defined(HW_PHYSMEM64) mib[1] = HW_PHYSMEM64; /* NetBSD, OpenBSD. --------- */ #endif int64_t size = 0; /* 64-bit */ size_t len = sizeof( size ); if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 ) return (size_t)size; return 0L; /* Failed? */ #elif defined(_SC_AIX_REALMEM) /* AIX. ----------------------------------------------------- */ return (size_t)sysconf( _SC_AIX_REALMEM ) * (size_t)1024L; #elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE) /* FreeBSD, Linux, OpenBSD, and Solaris. -------------------- */ return (size_t)sysconf( _SC_PHYS_PAGES ) * (size_t)sysconf( _SC_PAGESIZE ); #elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE) /* Legacy. -------------------------------------------------- */ return (size_t)sysconf( _SC_PHYS_PAGES ) * (size_t)sysconf( _SC_PAGE_SIZE ); #elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM)) /* DragonFly BSD, FreeBSD, NetBSD, OpenBSD, and OSX. -------- */ int mib[2]; mib[0] = CTL_HW; #if defined(HW_REALMEM) mib[1] = HW_REALMEM; /* FreeBSD. ----------------- */ #elif defined(HW_PYSMEM) mib[1] = HW_PHYSMEM; /* Others. ------------------ */ #endif unsigned int size = 0; /* 32-bit */ size_t len = sizeof( size ); if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 ) return (size_t)size; return 0L; /* Failed? */ #endif /* sysctl and sysconf variants */ #else return 0L; /* Unknown OS. */ #endif } using namespace LinBox; using namespace std; template string check_sigma(const Field& F, const Mat& sigma, Mat& serie, size_t ord){ Mat T(F,sigma.rowdim(),serie.coldim(),sigma.size()+serie.size()-1); PolynomialMatrixMulDomain PMD(F); PMD.mul(T,sigma,serie); MatrixDomain MD(F); size_t i=0; string msg("....."); bool nul_sigma=true; while(i bool operator==(const MatPol& A, const MatPol& B){ MatrixDomain MD(A.field()); if (A.size()!=B.size()|| A.rowdim()!= B.rowdim() || A.coldim()!=B.coldim()){ cout< " < "< void bench_sigma(const Field& F, RandIter& Gen, size_t m, size_t n, size_t d, string target) { //typedef typename Field::Element Element; //typedef PolynomialMatrix MatrixP; typedef PolynomialMatrix MatrixP; std::cout<<"Order Basis computation over ";F.write(cout)<=64?16:0); //size_t data_in=3*m*n*d*memp; //size_t data_out=2*m*m*(d+1)*memp; //size_t data_comp= 2*m*m*d*(length(uint64_t(m*d)*p*p)+(p.bitsize()>26?8:0)); std::cout<<"**************************"<ref(i,j,k)); std::cout<<"[initial sequence] : "<realmeminfo())<<"Mo"< shift(m,0); OrderBasis SB(F); Timer chrono; #ifdef BENCH_MBASIS if (target=="ALL"){ MatrixP Sigma1(F, m, m, d+1); vector shift2(m,0); chrono.start(); SB.M_Basis(Sigma1, *Serie, d, shift2); chrono.stop(); std::cout << "M-Basis : " < shift3(m,0); // chrono.start(); // SB.oPM_Basis(Sigma3, Serie, d, shift3); // chrono.stop(); // std::cout << "PM-Basis iter : " < SmallField; //typedef Givaro::Modular LargeField; typedef Givaro::Modular LargeField; size_t logd=integer((uint64_t)d).bitsize(); std::cout<<"### matrix series is of size "<b-4){ std::cout<<"degree is to large for field bitsize: "< tps) { tim3[2] = tim3[1] ; tim3[1] = tim3[0] ; tim3[0] = tps ; } else if (tim3[1] > tps) { tim3[2] = tim3[1] ; tim3[1] = tps ; } else if (tim3[2] > tps) { tim3[2] = tps ; } return tim3 ; } double computeMFLOPS(const dvector_t & tim, const double mflo, Tag::TimeSelect ts ) { linbox_check(tim.size()); switch (ts) { case (Tag::TimeSelect::average) : { double tps = 0 ; for (size_t i = 0 ; i < tim.size() ; ++i) tps += tim[i] ; return computeMFLOPS(tps,mflo,(size_t)tim.size()); } case (Tag::TimeSelect::bestThree) : { if (tim.size() <4) return computeMFLOPS(tim,mflo,Tag::TimeSelect::average); dvector_t tps (3); double t1,t2 ; if (tim[0]> d ; // try to read. ss >> std::ws; // suppress whitespace return (!ss.fail() && ss.eof()) ; } bool fortifiedString(const std::string & s) { if (isDigit(s)) return true ; linbox_check(!s.empty()); return s.front() == '\"' && s.back() == '\"' ; } std::string unfortifyString(const std::string &s) { std::string t = s ; if (fortifiedString(s)) { t.erase(t.begin()); t.pop_back(); } return t; } std::string fortifyString(const std::string & s) { if (fortifiedString(s)) return s ; string r = "\"" ; return r + s + "\""; } char randomAlNum() { int c = rand()%62 ; c += 48 ; // c entre 48 et 109 if (c < 58) { return (char) c; } else { c += 7 ; if (c < 91) { return (char)c ; } else { c += 6 ; return (char)c; } } } std::string randomAlNum(const size_t & m) { std::string r = "" ; for (size_t i = 0 ; i < m ; ++i) r += randomAlNum(); return r ; } }// LinBox // // Machine information // namespace LinBox { //! get ISO time and date std::string getDateTime(const std::string & sep) { std::time_t rawtime; std::tm* timeinfo; char buffer [80]; std::time(&rawtime); timeinfo = std::gmtime(&rawtime); std::string fmt ; std::string date = "%Y-%m-%d" ; std::string time = "%H:%M:%S" ; std::string tz = "GMT" ; fmt = date + sep + time + sep + tz ; std::strftime(buffer,80,fmt.c_str(),timeinfo); std::string mytime(buffer); return mytime; } //! get some machine information (not cpu yet) smatrix_t getMachineInformation() { smatrix_t Machine(2); Machine[0].resize(5); Machine[1].resize(5); struct utsname unameData; uname(&unameData); Machine[0][0] = "sysname"; Machine[1][0] = unameData.sysname; Machine[0][1] = "nodename"; Machine[1][1] = unameData.nodename; Machine[0][2] = "release"; Machine[1][2] = unameData.release; Machine[0][3] = "version"; Machine[1][3] = unameData.version; Machine[0][4] = "machine"; Machine[1][4] = unameData.machine; // Machine[0][5] = "RAM (kb)"; // system("cat /proc/meminfo | grep MemTotal | awk '{print $2}'"); // Machine[0][6] = "CPU name"; // system("/proc/cpuinfo | grep 'model name' | awk '{$1=$2=$3=""; print $0}'"); // Machine[0][7] = "CPU nb"; // system("/proc/cpuinfo | grep 'model name' | wc -l"); // Machine[0][8] = "CPU Ghz"; // cpuid ? return Machine ; } } #endif // __LINBOX_benchmarks_benchmark_utils_C // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/benchmark-utils.h000066400000000000000000000167001274717217100204040ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/benchmark-utils.h * @ingroup benchmarks * @brief utils */ #ifndef __LINBOX_benchmarks_benchmark_utils_H #define __LINBOX_benchmarks_benchmark_utils_H /* ********************** */ /* Tags */ /* ********************** */ // Tags (cf linbox/linbox-tags.h ) namespace LinBox { namespace Tag { //! selection of best times in a series. #if HAVE_CXX11 enum struct TimeSelect : int32_t #else enum TimeSelect #endif { average = 1, //!< select the average bestThree = 2, //!< select the average among the three best (supposes order is <) bestOne = 3, //!< select the best one (supposes order is <) median = 4, //!< median medmean = 5 //!< interquartile mean (remove 25% extremes and average the rest) }; //! selection of printers #if HAVE_CXX11 enum struct Printer : int32_t #else enum Printer #endif { dat = 1, //!< print data raw (format chosen by implementation) tex = 2, //!< print latex useable xml = 3, //!< print using xml syntax gnuplot = 4, //!< print using gnuplot csv = 5, //!< coma separated values html = 6 //!< coma separated values }; } // Tag } // LinBox /* ********************** */ /* Outils */ /* ********************** */ // // typedefs data formats // namespace LinBox { //! vector of double typedef std::vector dvector_t; typedef std::vector svector_t; //! matrix of double typedef std::vector dmatrix_t; typedef std::vector smatrix_t; } // LinBox // // String processing // namespace LinBox { /** Check if a string is actually a double. * @param s string to check * @return true/false */ bool isDigit (const std::string & s); /** Tells is a string has double quotes around. * @param s string to test * @return true if s[0] == s[last] == '"' */ bool fortifiedString(const std::string & s); /** removes the surrounding quotes. * @param s removes quotes around if necessary * @return s without surrounding double quotes if necessary */ std::string unfortifyString(const std::string &s); /** adds surrounding quotes. * @param s add quotes around if necessary * @return s with surrounding double quotes if necessary */ std::string fortifyString(const std::string & s); /** Converts anything to a string * @param nam to be put in a string. */ template std::string toString(T & nam) { std::ostringstream nam_ss ; nam_ss << nam ; return nam_ss.str(); } //! finds keyword betwen begin and end, return true if found and i is the index where it is (possibly correspondig to end) bool findKeyword(size_t & i, const svector_t::const_iterator & begin, const svector_t::const_iterator & end, const std::string & keyword) { svector_t::const_iterator it ; it = std::find(begin, end, keyword); i = (size_t)std::distance(begin, it); return (it != end) ; } /*! @internal * @brief random :alnum: \c char. * [[:alnum:]] characters are in range * - num : 48-57 * - AL : 67-90 * - al : 97-122 * . * @return a random alphabetic or numeric char. */ char randomAlNum() ; /*! @internal * @brief random :alnum: \c string. * @param m size of string * [[:alnum:]] characters are in range * - num : 48-57 * - AL : 67-90 * - al : 97-122 * . * @return a random alphabetic or numeric char. */ std::string randomAlNum(const size_t & m) ; }// LinBox // // Machine info // namespace LinBox { /*! get ISO time and date * year-time YYYY-MM-DD 'sep' HH:MM:SS 'sep' (GMT) * @param sep separation between */ std::string getDateTime( const std::string & sep = " "); //! get some machine information (not cpu yet) smatrix_t getMachineInformation(); } // LinBox // // advancement printing on terminal // namespace LinBox { /*! show the advancement (on the terminal) * suppose linear advancement * @param curr current iteration * @param min starting iteration * @param max terminal iteration */ void showAdvanceLinear(size_t curr, size_t min, size_t max); /*! tells the current series of measure has completed (on the terminal) * @param curr current iteration * @param all number of iterations */ void showFinish(size_t curr, size_t all); /*! tells the current series of measure was skipped (on the terminal) * @param curr current iteration * @param all number of iterations */ void showSkip(size_t curr, size_t all); //! Show progression on the terminal (helper) class showProgression { private : size_t _cur_ ; //!< current iter size_t _tot_ ; //!< max iter public : //! constructor showProgression (size_t tot) ; //! show an inter has finished void FinishIter(); //! show an inter has been skipped. void SkipIter(); }; // showProgression } // LinBox // // computing megaflops from time (series)/number ops // namespace LinBox { /** * @brief computes the number of megaflops. * @param tim timer (seconds) * @param mflo number of operations (1e6 operations) * @param rpt number of experiences * @return mflo/(tim*rpt) */ double computeMFLOPS(const double & tim, const double mflo, const size_t rpt = 1); /*! @internal @brief inserts a time in a vector of 3 best times. * @param tim3 ordered form min to max vector of 3 best times * @param tps inserts that time in \p tim3 if better. * @return a reference to \p tim3 */ dvector_t & insertTime(dvector_t & tim3, const double & tps); /** * @brief computes the number of megaflops. * @param tim timer (seconds) * @param mflo number of operations (1e6 operations) * @param ts number of experiences to select. @see TimeSelect. Default to the best three * @return mflo/(tim*rpt) */ double computeMFLOPS(const dvector_t & tim, const double mflo, Tag::TimeSelect ts = Tag::TimeSelect::bestThree); } // // Chrono // warning : implem in benchmark.inl // namespace LinBox { template class Chrono { private : MyTimer _chrono_ ; dvector_t _times_ ; double _total_ ; public: Chrono() ; ~Chrono() ; void clear(); void start(); void stop(); double time() const; dvector_t times() const; }; // Chrono } // LinBox #ifdef LinBoxSrcOnly #include "benchmarks/benchmark-utils.C" #endif #endif // __LINBOX_benchmarks_benchmark_utils_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/benchmark.C000066400000000000000000001136431274717217100172050ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*!@internal * @file benchmarks/benchmark.C * @ingroup benchmarks * @brief utils */ #ifndef __LINBOX_benchmarks_benchmark_C #define __LINBOX_benchmarks_benchmark_C #include "linbox/linbox-config.h" #include "benchmark.h" // // PlotData // namespace LinBox { #ifdef __LINBOX_HAVE_TINYXML2 tinyxml2::XMLElement * PlotData::saveData(tinyxml2::XMLDocument & doc) { using namespace tinyxml2; XMLElement * data = doc.NewElement( "data" ); selectFirstSeries(); for (size_t i = 0 ; i < size() ; ++i ) { XMLElement * series = doc.NewElement ( "series" ); series->SetAttribute("name",unfortifyString(getCurrentSeriesName()).c_str()); for (size_t j = 0 ; j < getCurrentSeriesSize() ; ++j) { XMLElement * point = doc.NewElement ( "point" ); point->SetAttribute("x",unfortifyString(getCurrentSeriesEntry(j,Point::Labels() )).c_str()); point->SetAttribute("y",getCurrentSeriesEntry(j,Point::Values() )); point->SetAttribute("time",getCurrentSeriesEntry(j,Point::Times() )); point->SetAttribute("xval",getCurrentSeriesEntry(j,Point::Points() )); point->SetAttribute("id",getCurrentSeriesId(j).c_str()); series->InsertEndChild( point ); } data->InsertEndChild( series ); selectNextSeries(); } return data ; } #endif PlotData::PlotData() : _tableau_ (0) ,_series_label_ (0) ,_curr_series_ ( ) ,_time_watch_ ( ) { } PlotData::~PlotData() {} PlotData::PlotData(const PlotData & PD): _tableau_(PD.getTable()) ,_series_label_(PD.getSeriesLabels()) ,_curr_series_(PD.getCurrentSeriesNumber()) ,_time_watch_ (_tableau_[_curr_series_].Points,_tableau_[_curr_series_].Times) { } size_t PlotData::selectIndex(const std::string & nom) { std::string nomf = fortifyString(nom); size_t j ; bool ok = findKeyword(j,_series_label_.begin() , _series_label_.end() , nomf); if ( ! ok ) { linbox_check(j ==(size_t)_series_label_.size() ); _series_label_.push_back(fortifyString(nom)); _tableau_.resize(j+1); } initWatch(j); return j ; } size_t PlotData::getIndex(const std::string & nom) const { std::string nomf = fortifyString(nom); size_t j ; #ifdef NDEBUG findKeyword(j,_series_label_.begin() , _series_label_.end() , nomf); #else bool ok = findKeyword(j,_series_label_.begin() , _series_label_.end() , nomf); linbox_check(ok); #endif return j ; } void PlotData::clear() { _tableau_.resize(0); _series_label_.resize(0); _curr_series_ = 0; _time_watch_.clear(); } void PlotData::merge(const PlotData &PD) { for (size_t i = 0 ; i < (size_t)PD.size() ; ++i) { _tableau_.push_back(PD.getSeries(i)); _series_label_.push_back(fortifyString(PD.getSeriesName(i))); } return ; } size_t PlotData::size() const { linbox_check(_tableau_.size() == _series_label_.size()); return (size_t)_tableau_.size() ; } size_t PlotData::getCurrentSeriesNumber() const { return _curr_series_ ; } void PlotData::setSeriesName(const size_t & i, const std::string & nom) { linbox_check(i & PlotData::getTable() const { return _tableau_ ; } std::vector & PlotData::refTable() { return _tableau_ ; } bool PlotData::keepon(size_t & repet, double tim, bool usePrediction) { return _time_watch_.keepon(repet,tim, usePrediction); } void PlotData::load( const std::string & filename) { #ifdef __LINBOX_HAVE_TINYXML2 using namespace tinyxml2; XMLDocument doc; doc.LoadFile( filename.c_str() ); // std::cout << "loaded " << filename << std::endl; linbox_check(!doc.ErrorID()); XMLElement * bench = doc.FirstChildElement( "benchmark"); linbox_check(bench); XMLElement* data = bench -> FirstChildElement( "data" ) ; linbox_check(data); XMLElement* series = data -> FirstChildElement( "series" ) ; clear(); while (series) { newSeries( series->Attribute( "name" ) ); XMLElement * points = series->FirstChildElement() ; while (points) { std::string x = points->Attribute( "x" ); double y = points->DoubleAttribute( "y" ); double time = points->DoubleAttribute( "time" ); double xval = points->DoubleAttribute( "xval" ); // std::string id = points->Attribute( "id" ); setCurrentSeriesEntry(x,y,xval,time); // setCurrentSeriesEntryId(id); points = points->NextSiblingElement(); } series = series->NextSiblingElement(); } #else throw LinBoxError("You need tinyxml2 for loading data"); #endif // save("toto.xml"); } void PlotData::save( const std::string & filename , const std::string & title , const std::string & xtitle , const std::string & ytitle ) { #ifdef __LINBOX_HAVE_TINYXML2 using namespace tinyxml2; XMLDocument doc; doc.InsertEndChild(doc.NewDeclaration()); XMLElement * benchmark = doc.NewElement( "benchmark" ); doc.InsertEndChild(benchmark); { // Benchmark Metadata XMLElement * metadata = doc.NewElement( "metadata" ); smatrix_t uname = getMachineInformation(); for (size_t i = 0 ; i < uname[0].size() ; ++i) { metadata->SetAttribute(uname[0][i].c_str(),uname[1][i].c_str()); } std::string myTime = getDateTime(); metadata->SetAttribute("time",myTime.c_str()); benchmark->InsertEndChild(metadata); } { // Legende XMLElement * legende = doc.NewElement( "legende" ); std::string mytitle = title; if (title.empty()) mytitle =filename ; legende->SetAttribute("title",unfortifyString(mytitle).c_str()); if (!xtitle.empty()) legende->SetAttribute("X",unfortifyString(xtitle).c_str()); if (!ytitle.empty()) legende->SetAttribute("Y",unfortifyString(ytitle).c_str()); benchmark->InsertEndChild(legende); } { // series XMLElement * data = saveData(doc); benchmark->InsertEndChild(data); } { // point metadata XMLElement * metapoint = doc.NewElement( "PointMetaData" ); for (size_t i = 0 ; i < _meta_data_.MetaDataVec.size() ; ++i) { XMLElement * item = NULL ; _meta_data_.MetaDataVec[i].writeMetaData(&item,doc); std::string pts = ""; for (size_t j = 0 ; j < _meta_data_.MetaDataIDs[i].size(); ++j){ pts += _meta_data_.MetaDataIDs[i][j] ; if (j+1 < _meta_data_.MetaDataIDs[i].size() ) pts += ','; } item->SetAttribute("used_in",pts.c_str()); metapoint->InsertEndChild(item); } benchmark->InsertEndChild(metapoint); } doc.SaveFile(filename.c_str()); std::cout << "xml table saved in " << filename << std::endl; #else std::cout << "tinyxml2 is not installed, could not save" << std::endl; #endif } } // LinBox // // PlotStyle // namespace LinBox { PlotStyle::PlotStyle() : _term_(Term::eps),_plot_type_(Plot::histo),_line_type_(Line::histogram) { } void PlotStyle::setTitle ( const std::string & titre , const std::string & titre_y , const std::string & titre_x) { _title_ = titre ; _title_x_ = titre_x ; _title_y_ = titre_y ; } std::string PlotStyle::getTitle() const { std::string title = "#title\nset title \"" + _title_ + '\"'; if (!_title_x_.empty()) title +="\nset xlabel \"" + _title_x_ +'\"' ; if (!_title_y_.empty()) title +="\nset ylabel \"" + _title_y_ +'\"' ; return title ; } std::string PlotStyle::getTitleX() const { return "\nset xlabel \"" + _title_x_ + '\"' ; } std::string PlotStyle::PlotStyle::getTitleY() const { return "\nset ylabel \"" + _title_y_ + '\"' ; } std::string PlotStyle::getRawTitle(int index) const { switch (index) { case 0 : return _title_ ; case 1 : return _title_x_ ; case 2 : return _title_y_ ; default : return "bad index" ; } } void PlotStyle::setTerm( enum Term::Type term) { _term_ = term ; } std::string PlotStyle::getTerm() const { std::string term = "#term\nset term " ; switch(_term_) { case (Term::png) : term += "png noenhanced" ; break; case (Term::pdf) : std::cerr << "warning, pdf not really working for now" << std::endl; term += "postscript eps noenhanced color" ; break; case (Term::eps) : term += "postscript eps noenhanced color" ; break; case (Term::epstex) : term += "epslatex color colortext" ; break; case (Term::svg) : term += "svg" ; break; case (Term::other) : default : std::cerr << " *** error ***" << std::endl << "No supported term set" << std::endl; term += "unknown" ; } return term ; } std::string PlotStyle::getExt() const { switch(_term_) { case (Term::png) : return ".png" ; case (Term::pdf) : #ifndef __LINBOX_HAVE_GHOSTSCRIPT std::cerr << "warning, pdf not available. falling back to eps" << std::endl; #endif return ".pdf" ; case (Term::eps) : return ".eps" ; case (Term::epstex) : return ".tex" ; case (Term::svg) : return ".svg" ; default : std::cerr << "unknown extension set" << std::endl; return ".xxx" ; } } void PlotStyle::setKeyPos(const std::string & keypos) { _legend_pos_ = keypos ; } std::string PlotStyle::getKeyPos() const { std::string lgd ="#legend\nset key " ; if (!_legend_pos_.empty()) lgd += _legend_pos_ ; else lgd += " under" ; return lgd; } void PlotStyle::setXtics ( enum Options::Type opt, const std::string & more ) { _xtics_ = "#xtics\nset xtics "; if (opt == Options::oblique) _xtics_ += "nomirror rotate by -45 scale 0 "; else { linbox_check(opt == Options::other); _xtics_ += more ; } } const std::string & PlotStyle::getXtics() const { return _xtics_ ; } std::string PlotStyle::getOutput(const std::string & basnam) const { std::string setout = "#output\nset output \'" ; #ifdef __LINBOX_HAVE_GHOSTSCRIPT if (_term_ == Term::pdf) setout += "| ps2pdf - " ; setout += basnam + getExt() + '\'' ; #else setout += basnam + ".eps\'" ; #endif return setout ; } void PlotStyle::setPlotType(enum Plot::Type type) { _plot_type_ = type ; // _plot_extra_ = moreargs ; } void PlotStyle::setLineType( enum Line::Type type) { _line_type_ = type ; } std::string PlotStyle::getPlotType(const std::string & extraargs) // const { _styleopts_ += "\nset datafile missing \"inf\"" ; std::string mystyle = "#style\nset style data " ; if (_line_type_ != Line::other) { switch (_line_type_) { case (Line::lines) : mystyle += "lines" ; break; case (Line::histogram) : mystyle += "histogram" ; if (extraargs.empty()) // default style mystyle += "\nset style histogram cluster gap 1\nset style fill solid border rgb \"black\""; break; case (Line::points) : mystyle += "points" ; break; case (Line::linespoints) : mystyle += "linespoints" ; break; default : std::cout << __func__ << " : you should have set the LineType when ploting PlotType::graph !" << std::endl; mystyle += "other" ; } } else { // userd defined datastyle return _styleopts_ ; } // some more style args : mystyle += "\n" + _styleopts_ + "\n" + extraargs + "\n"; return mystyle ; } void PlotStyle::addPlotType(const std::string & style) { _styleopts_ += "\n" + style ; } void PlotStyle::setUsingSeries(size_t col, const std::string & moreargs) { linbox_check(col>1); std::ostringstream usingcols ; if (_plot_type_ == Plot::histo) { usingcols << " using " << col << ":xtic(1) title columnheader(" << col << ") " << moreargs << " "; } else { linbox_check(_plot_type_ == Plot::graph); usingcols << " using 1:" << col << " title columnheader(" << col << ") " << moreargs << " "; } _usingcols_ = usingcols.str(); } void PlotStyle::addUsingSeries(size_t col, const std::string & moreargs) { linbox_check(col>2); linbox_check(!_usingcols_.empty()); // we don't add if nothing was set std::ostringstream usingcols ; usingcols << ", \'\' using " ; if (_plot_type_ == Plot::graph) usingcols << "1:" ; usingcols << col << " ti col " << moreargs << " "; _usingcols_ += usingcols.str(); } void PlotStyle::setUsingSeries(std::list cols, const std::string & moreargs) { linbox_check(!cols.empty()); std::list::iterator it = cols.begin(); // no way to check *it< coldim... std::ostringstream usingcols ; if ( _plot_type_ == Plot::histo ) { usingcols << " using " << *it << ":xtic(1) title columnheader(" << *it << ") " << moreargs << " " ; ++it ; for (;it != cols.end();++it) { usingcols << ", \'\' using " << *it << " ti col " << moreargs << " "; } } else { linbox_check(_plot_type_ == Plot::graph); usingcols << " using 1:" << *it << " title columnheader(" << *it << ") " << moreargs << " "; ++it ; for (;it != cols.end();++it) { usingcols << ", \'\' using 1:" << *it << " ti col " << moreargs << " "; } } _usingcols_ = usingcols.str(); return; } void PlotStyle::addUsingSeries(std::list cols, const std::string & moreargs) { linbox_check(!cols.empty()); linbox_check(!_usingcols_.empty()); // we don't add if nothing was set std::list::iterator it = cols.begin(); std::ostringstream usingcols ; if (_plot_type_ == Plot::histo) { for (;it != cols.end();++it) { usingcols << ", \'\' using " << *it << " ti col " << moreargs << " "; } } else { linbox_check(_plot_type_ == Plot::graph); for (;it != cols.end();++it) { usingcols << ", \'\' using 1:" << *it << " ti col " << moreargs << " "; } } _usingcols_ += usingcols.str(); return; } void PlotStyle::setUsingSeries(std::pair cols, const std::string & moreargs) { std::ostringstream usingcols ; if (_plot_type_ == Plot::histo) { usingcols << " using " << cols.first << ":xtic(1) title columnheader(" << cols.first << ") " << moreargs << " "; usingcols << ", for [i=" << cols.first+1 << ":" << cols.second << "] \'\' using i title columnheader(i) " << moreargs << " "; } else { linbox_check(_plot_type_ == Plot::graph); usingcols << " using 1:" << cols.first << " title columnheader(" << cols.first << ") " << moreargs << " "; usingcols << ", for [i=" << cols.first+1 << ":" << cols.second << "] \'\' using 1:i title columnheader(i) " << moreargs << " "; } _usingcols_ = usingcols.str(); return; } void PlotStyle::addUsingSeries(std::pair cols, const std::string & moreargs) { linbox_check(!_usingcols_.empty()); // we don't add if nothing was set std::ostringstream usingcols ; if (_plot_type_ == Plot::histo) { usingcols << ", for i=[" << cols.first << ":" << cols.second << "] \'\' using i title columnheader(i) " << moreargs << " "; } else { usingcols << ", for i=[" << cols.first << ":" << cols.second << "] \'\' using 1:i title columnheader(i) " << moreargs << " "; linbox_check(_plot_type_ == Plot::graph); } _usingcols_ += usingcols.str(); } const std::string & PlotStyle::getUsingSeries() const { return _usingcols_ ; } } // LinBox // // Curve fitting // namespace LinBox { // fit X[nn-1,nn],Y[nn-1,nn] and return evaluation at x. double fit2(const dvector_t & X, const dvector_t & Y, int nn, double x) { size_t n = (size_t) nn; assert(n>0); if ( n==1 ) { if ( X[0]==X[1] ) { // std::cerr << "two of your evaluation points are at the same X" << std::endl; // this is NOT supposed to happen. return (Y[0]+Y[1])/2 ; } } if (X[n]==X[n-1]) // discard the last one. return fit2(X,Y,(int)n-1,x); double a = (Y[n-1]-Y[n])/(X[n-1]-X[n]) ; double b = (X[n-1]*Y[n]-X[n]*Y[n-1])/(X[n-1]-X[n]) ; return a*x+b ; } #ifdef __LINBOX_HAVE_LAPACK double fit_lapack3(const dvector_t &X, const dvector_t &Z, double x) { dvector_t Y = Z ; int n = (int) Z.size(); linbox_check((size_t)n == X.size()); int deg = (int) std::min((int)4,n); dvector_t V((size_t)(deg*n)); int ldv = deg ; #if 0 // Clapack (not working) for(size_t i = 0 ; i < (size_t)n; ++i) { for (size_t j = 0 ; j < (size_t)ldv; ++j) { V[i*ldv+j] = std::pow(X[i],j); } } clapack_dgels(CblasRowMajor, CblasNoTrans, n, deg, 1, &V[0], deg, &Y[0], 1); #endif #if 1 /* basic least squares */ // std::cout << V.size() << std::endl; for(size_t i = 0 ; i < (size_t)n; ++i) { for (size_t j = 0 ; j < (size_t)ldv; ++j) { V[i+j*(size_t)n] = std::pow(X[i],j); } } // std::cout << V << std::endl; int info; int ldun = 1 ; { int lwork = 2*n*deg*4 ; dvector_t work((size_t)lwork); char N[] = "N"; dgels_(N, &n, &ldv, &ldun, &(V[0]) , &n, &(Y[0]), &n, &work[0], &lwork, &info); } #endif #if 0 /* least squares using SVN and V not nec. full rank */ { int lwork = 2*deg+std::max(2*deg,n)*4 ; dvector_t work(lwork); dvector_t s(deg); double rcond = 1e-8 ; int rank ; dgelss_( &n, &ldv, &ldun, &(V[0]) , &n, &(Y[0]), &n, &s[0], &rcond, &rank, &work[0], &lwork, &info); } #endif #if 0 /* weighted least squares */ //DGGGLM // TODO #endif // std::cout << Y << std::endl; // horner eval the poly double res = 0.0; for(int i=deg-1; i >= 0; i--) { res = res * x + Y[(size_t)i]; } return res; } #endif // __LINBOX_HAVE_LAPACK double fit3(const dvector_t & X, const dvector_t & Y,int n, double x) { #ifndef __LINBOX_HAVE_LAPACK /* à la main */ linbox_check(n>1); linbox_check((size_t)n< X.size()); linbox_check((size_t)n< Y.size()); if (n==2) { if (X[1]==X[2]) return fit2(X,Y,1,x) ; if (X[0]==X[2]) { return fit2(X,Y,1,x) ; } if (X[0]==X[1]) { dvector_t X1(2); X1[0]=X[1]; X1[2]=X[2]; dvector_t Y1(2); Y1[0]=Y[1]; Y1[2]=Y[2]; return fit2(X1,Y1,1,x) ; } } if (X[n]==X[n-1]) { // discard last dvector_t X1(X.begin(),X.begin()+(n-1)); dvector_t Y1(Y.begin(),Y.begin()+(n-1)); return fit3(X1,Y1,n-1,x) ; } if (X[n]==X[n-2]) { // discard last dvector_t X1(X.begin(),X.begin()+(n-1)); dvector_t Y1(Y.begin(),Y.begin()+(n-1)); return fit3(X1,Y1,n-1,x) ; } if (X[n-1]==X[n-2]) { // discard last but one dvector_t X1(X.begin(),X.begin()+(n-1)); dvector_t Y1(Y.begin(),Y.begin()+(n-1)); X1[n-1]=X[n]; Y1[n-1]=Y[n]; return fit3(X1,Y1,n-1,x) ; } // todo: use Lagrange ? // std::cout << X[n-2] << ',' << X[n-1] << ',' << X[n] << std::endl; double d = (-X[n]+X[n-1])*(-X[n]+X[n-2])*(X[n-2]-X[n-1]) ; double a1 = -X[n]*Y[n-2]+X[n-2]*Y[n]+X[n-1]*Y[n-2]-X[n-1]*Y[n]+X[n]*Y[n-1]-X[n-2]*Y[n-1]; double a2 = -X[n-2]*X[n-2]*Y[n]+X[n-2]*X[n-2]*Y[n-1]+X[n-1]*X[n-1]*Y[n]-Y[n-2]*X[n-1]*X[n-1]+Y[n-2]*X[n]*X[n]-Y[n-1]*X[n]*X[n]; double a3 = X[n-2]*X[n-2]*X[n-1]*Y[n]-X[n-2]*X[n-2]*X[n]*Y[n-1]-X[n-1]*X[n-1]*X[n-2]*Y[n]+Y[n-1]*X[n-2]*X[n]*X[n]+X[n-1]*X[n-1]*X[n]*Y[n-2]-Y[n-2]*X[n-1]*X[n]*X[n]; // std::cout <<" (("<size() == Values_->size()); return (size_t)Points_->size(); } void TimeWatcher::clear() { Points_ = NULL ; Values_ = NULL ; } } // LinBox // // DataSeries // namespace LinBox { DataSeries:: DataSeries() : PointLabels(0) , Points(0) , Times(0) , Values(0) , UID(0) {} DataSeries::~DataSeries() {} #if 0 void DataSeries::resize(const size_t & n) { linbox_check(n == Values.size()+1); PointLabels.resize(n); Times.resize(n); Points.resize(n); Values.resize(n); UID.resize(n); return; } #endif size_t DataSeries::size() const { linbox_check(PointLabels.size() == Points.size()) linbox_check(Times.size() == Points.size()) linbox_check(Times.size() == Values.size()) linbox_check(Times.size() == UID.size()) return (size_t)Values.size(); } void DataSeries::push_back(const std::string & nam, const double & val, const double & x , const double &y ) { linbox_check(PointLabels.size() == Values.size()); PointLabels.push_back(nam); Values.push_back(val); if ( std::isnan(x) ) Points.push_back((double)Points.size()); else Points.push_back(x); if ( std::isnan(y)) Times.push_back(val); else Times.push_back(y); UID.push_back("point_" + randomAlNum(8)); return; } } // LinBox // // PlotGraph // namespace LinBox { //!@todo use getUsingSeries in latex/html/csv/xml void PlotGraph::_randomName() { std::ostringstream unique_filename ; unique_filename << _filename_ << '_' << getDateTime("_") << '_' << randomAlNum(4); // std::cout << unique_filename.str() << std::endl; _printname_ = unique_filename.str() ; } const std::string & PlotGraph::getFileName() { if (_printname_.empty()) _randomName(); return _printname_; } void PlotGraph::mergeTwoSeries( svector_t & merge_points , dmatrix_t & merge_data , const svector_t & pts , const dvector_t & dat , const size_t & idx) const { size_t data_size = (size_t)merge_points.size(); linbox_check(data_size == (size_t)merge_data[0].size()); merge_data[idx].resize(data_size,NAN); typename svector_t::iterator it ; for (size_t i = 0 ; i < pts.size() ; ++i) { size_t k ; bool ok = findKeyword(k, merge_points.begin(), merge_points.begin()+data_size,pts[i]); if ( ok ){ merge_data[idx][k] = dat[i] ; } else { for (size_t j = 0 ; j < idx ; ++j) { merge_data[j].push_back(NAN); } merge_data[idx].push_back(dat[i]) ; merge_points.push_back(pts[i]) ; } // std::cout << "..." << std::endl; // std::cout << merge_points << std::endl; // std::cout << merge_data << std::endl; // std::cout << "..." << std::endl; } return; } void PlotGraph::mergeSeries() { _data_. selectFirstSeries(); _merge_points_ = _data_.getCurrentSeries( Point::Labels() ) ; _merge_data_[0] = _data_.getCurrentSeries( Point::Values() ) ; // std::cout << "merge points " << _merge_points_ << std::endl; // std::cout << "merge data " << _merge_data_ << std::endl; for (size_t i = 1 ; i < _data_.size() ; ++i) { _data_. selectNextSeries() ; // std::cout << "to be merged " << i << " : " << std::endl; // std::cout << "new points " << _data_.getCurrentSeriesPointLabel() << std::endl; // std::cout << "new data " << _data_.getCurrentSeriesValues() << std::endl; mergeTwoSeries(_merge_points_,_merge_data_, _data_. getCurrentSeries( Point::Labels() ), _data_. getCurrentSeries( Point::Values() ),i); // std::cout << "result : " << std::endl; // std::cout << "merge points " << _merge_points_ << std::endl; // std::cout << "merge data " << _merge_data_ << std::endl; } return ; } void PlotGraph::print_csv() { char comma = ','; char comment = '#'; size_t nb_points = (size_t)_merge_points_.size() ; size_t nb_series = (size_t)_data_.size() ; std::string unique_filename = getFileName(); std::string DataFileName = unique_filename + ".csv" ; std::ofstream DF(DataFileName.c_str()); /* Data file to be plot */ DF.precision(2); // metadata DF << comment << fortifyString("title") << comma << fortifyString(_style_.getRawTitle()) << std::endl; DF << comment << fortifyString("date") << fortifyString(getDateTime()) << std::endl; smatrix_t uname = getMachineInformation(); for (size_t i = 0 ; i < uname[0].size() ; ++i) DF << comment << fortifyString(uname[0][i]) << comma << fortifyString(uname[1][i]) << std::endl ; // data DF << fortifyString(_style_.getRawTitle(1)) << comma ; for (size_t i = 0 ; i < nb_series ; ++i) { DF << _data_.getSeriesLabel(i) ; if (i != nb_series -1) DF << comma ; } DF << std::endl; for (size_t j = 0 ; j < nb_points ; ++j) { DF << _merge_points_[j] << comma; for (size_t i = 0 ; i < nb_series ; ++i) { DF << _merge_data_[i][j] ; if (i != nb_series -1) DF << comma ; } DF << std::endl; } std::cout << "csv data in " << DataFileName << std::endl; } void PlotGraph::print_dat() { print_gnuplot(true); } void PlotGraph::print_xml() { #ifdef __LINBOX_HAVE_TINYXML2 std::string unique_filename = getFileName(); unique_filename += ".xml" ; _data_.save(unique_filename,_style_.getRawTitle(),_style_.getRawTitle(1),_style_.getRawTitle(2)); load(unique_filename); #else std::cout << "tinyxml2 is not installed, could not print" << std::endl; exit(-1); #endif return ; } void PlotGraph::print_html() { std::string comment_in = ""; size_t nb_points = (size_t)_merge_points_.size() ; size_t nb_series = (size_t)_data_.size() ; std::string unique_filename = getFileName(); std::string DataFileName = unique_filename + ".html" ; std::ofstream DF(DataFileName.c_str()); /* Data file to be plot */ DF.precision(2); // metadata DF << comment_in << ("date") << (getDateTime()) << std::endl; smatrix_t uname = getMachineInformation(); for (size_t i = 0 ; i < uname[0].size() ; ++i) DF << (uname[0][i]) << " : " << (uname[1][i]) << std::endl ; DF << comment_out << std::endl ; // data DF << "" << std::endl; DF << "" << std::endl; DF << " " << std::endl; DF << ""; for (size_t i = 0 ; i < nb_series ; ++i) { DF << ""; } DF << " " << std::endl; for (size_t j = 0 ; j < nb_points ; ++j) { DF << " " << std::endl; DF << ""; for (size_t i = 0 ; i < nb_series ; ++i) { DF << ""; } DF << std::endl; DF << "" << std::endl; } DF << "
" << (_style_.getRawTitle()) << " (data in " << _style_.getRawTitle(2) << ')' << "
" << _style_.getRawTitle(1) << " " << unfortifyString(_data_.getSeriesLabel(i)) << "
" << unfortifyString(_merge_points_[j]) << " " << _merge_data_[i][j] << "
" << std::endl; std::cout << "html data in " << DataFileName << std::endl; } void PlotGraph::print_latex() { size_t nb_points = (size_t)_merge_points_.size(); size_t nb_series = _data_.size(); linbox_check(nb_points); linbox_check(nb_series); // srand(time(NULL)); // std::ostringstream unique_filename ; std::string unique_filename = getFileName(); unique_filename += ".tex" ; // std::cout << _filename_ << " plot in " << unique_filename << '.'<< std::endl; std::ofstream FN(unique_filename.c_str()); //!@todo check FN opened. // begin FN << "%\\usepackage{slashbox}" << std::endl; FN << "\\begin{table}" << std::endl; FN << "\\centering" << std::endl; // format FN << "\\begin{tabular}{c||" ; for (size_t j = nb_points ; j-- ; ) FN << 'c' ; FN << "|}" << std::endl; // top left case std::string series = _style_.getRawTitle(2); std::string points = _style_.getRawTitle(1); if (!points.empty()) { FN << "\\backslashbox{" << points << "}{" << series << "}" ; } else { FN << series ; } // first line for (size_t j = 0 ; j < nb_points ; ++j ) { FN << " & " << _merge_points_[j] ; } // lines of data FN << std::endl << "\\hline" << std::endl; FN.precision(2); for (size_t i = 0 ; i < nb_series ; ++i) { FN << _data_.getSeriesLabel(i) ; for (size_t j = 0 ; j < nb_points ; ++j ) FN << " & " << _merge_data_[i][j] ; if (i+1 < nb_series ) FN << "\\\\" ; FN << std::endl; } // end FN << "\\end{tabular}" << std::endl; FN << "\\caption{" << _style_.getRawTitle() << "}" << std::endl; FN << "\\label{tab:<+" << "label+>}" << std::endl; FN << "\\end{table}" << std::endl ; FN.close(); std::cout << "latex table in " << unique_filename << '.' << std::endl; return ; } void PlotGraph::print_gnuplot(bool only_data) { #ifndef __LINBOX_HAVE_GNUPLOT std::cout << "gnuplot is not available on your system. only the data will be printed" << std::endl; #endif size_t nb_points = (size_t)_merge_points_.size() ; size_t nb_series = (size_t)_data_.size() ; std::string unique_filename = getFileName(); std::string DataFileName = unique_filename + ".dat" ; std::ofstream DF(DataFileName.c_str()); /* Data file to be plot */ // DF.precision(_style_.getPrecision()); DF.precision(2); char comment = '#' ; char comma = ' '; // metadata DF << comment << ("title") << comma << (_style_.getRawTitle()) << std::endl; DF << comment << ("date") << (getDateTime()) << std::endl; smatrix_t uname = getMachineInformation(); for (size_t i = 0 ; i < uname[0].size() ; ++i) DF << comment << (uname[0][i]) << comma << (uname[1][i]) << std::endl ; DF << "legend " ; for (size_t i = 0 ; i < nb_series ; ++i) { DF << _data_.getSeriesLabel(i) << ' ' ; } DF << std::endl; for (size_t j = 0 ; j < nb_points ; ++j) { DF << _merge_points_[j] ; for (size_t i = 0 ; i < nb_series ; ++i) { DF << " " << _merge_data_[i][j] ; } DF << std::endl; } if (only_data) std::cout << "data in " << DataFileName << std::endl; #ifdef __LINBOX_HAVE_GNUPLOT if (!only_data) { std::string PlotFileName = unique_filename + ".gp" ; std::ofstream PF(PlotFileName.c_str()); /* Ploting script */ PF << "#" << _filename_ << std::endl; PF << _style_.getTerm() << std::endl; PF << _style_.getOutput(unique_filename) << std::endl; PF << _style_.getTitle() << std::endl; PF << _style_.getKeyPos() << std::endl; PF << _style_.getXtics() << std::endl; PF << _style_.getPlotType() << std::endl; PF << getPlotCommand(DataFileName) << std::endl; PF.close(); std::string command( "gnuplot " ) ; command += PlotFileName ; int err = system( command.c_str() ) ; if (err) { std::cout << "errors have occured. Look at gnuplot output." << std::endl; } else { std::cout << "Output generated as " << unique_filename + _style_.getExt() << std::endl; } } #endif return; } void PlotGraph::setData( PlotData & data ) { _data_ = data ; } PlotData & PlotGraph::refData( PlotData & data) { return data = _data_ ; } void PlotGraph::setStyle( PlotStyle & style ) { _style_ = style ; } PlotStyle & PlotGraph::refStyle( PlotStyle & style) { return style = _style_ ; } // not implemented yet void PlotGraph::sortSeries() {} // not implemented yet void PlotGraph::unique() {} PlotGraph::PlotGraph( PlotData & data, PlotStyle & style ) : _data_(data) ,_style_(style) ,_filename_("") ,_printname_("") ,_merge_data_(data.size()) ,_merge_points_(data.getSeries(0).size()) { srand((unsigned)time(NULL)); mergeSeries(); } void PlotGraph::setOutFilename( const std::string & filename ) { int err = system( "test -d data || ( rm -rf data && mkdir data )" ) ; if (err) { throw LinBoxError("could not create directory data"); } if ( filename.empty() ) { _filename_ = "./data/plotdata" ; std::cerr << "you should provide a filename. Using " << _filename_ << " as default ."<((size_t)2,(size_t)_merge_data_.size()+1)); } return _style_.getUsingSeries(); } std::string PlotGraph::getPlotCommand(const std::string & File) //const { std::string PC = "#plot\nplot \'" + File + "\' "; PC += getUsingSeries() ; return PC ; } void PlotGraph::print( Tag::Printer pt ) { switch (pt) { case (Tag::Printer::xml): { print_xml(); break; } case (Tag::Printer::csv) : { print_csv(); break; } case (Tag::Printer::dat) : { print_dat(); break; } case (Tag::Printer::gnuplot) : { print_gnuplot(); break; } case (Tag::Printer::tex) : { print_latex(); break; } case (Tag::Printer::html) : { print_html(); break; } default : { throw LinBoxError("printer unknown"); } } return ; } void PlotGraph::save() { return print_xml(); } void PlotGraph::load(const std::string & filename) { return _data_.load(filename); } } // LinBox #endif // __LINBOX_benchmarks_benchmark_C // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/benchmark.doxy000066400000000000000000000033741274717217100200050ustar00rootroot00000000000000/* * Coypright (c) LinBox * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== * */ /*! \ingroup linbox * \defgroup benchmarks Benchmarks * @brief This directory is used to perform benchmarks on LinBox. * The benchmarks are meant for : * - the \e user to guide her through the various choices of * algorithms/implementation provided in her particular case. * - the \e developer to test her new algorithms against the others or check * that the newest shiny subroutine she just wrote didn't deteriorate too much * the performance of LinBox :) (regression testing purpose). * . * * Benchmarks can be grouped in : * - basic routines (fflas/ffpack, integer operations,...) ; * - algorithms ; * - solutions. * . * * When another free library (NTL, IML,...) provides a routine that exists in * LinBox, we want to be able to compare it to our implementation. * * Default parameters can be changed on the command-line, just as in \c * examples/ and \c tests/. */ // vim:syntax=doxygen linbox-1.4.2/benchmarks/benchmark.h000066400000000000000000001012341274717217100172430ustar00rootroot00000000000000/* Copyright (C) 2011 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/benchmark.h * @ingroup benchmarks * @brief Common header to ease benchmarking routines. * We provide a class to easily populate and plot files that represent * benchmarks. * * We use gnuplot for the plotting part * or LaTeX to provide tables. A minimum knowledge of \c Gnuplot is a plus but * the \c benchmark-* files should provide enough examples for creating * standard (not too fancy) plots. * * We fall back to plain latex tabulars when gnuplot is not available. We plot * graphs in files whose name is extended by a random 8-char string to avoid * écraser files. * */ #ifndef __LINBOX_benchmarks_benchmark_H #define __LINBOX_benchmarks_benchmark_H // here classes TimeWatcher, PlotStyle, PlotData are declared #include "linbox/linbox-config.h" #include #include "linbox/integer.h" #include "linbox/util/debug.h" #include "tests/test-common.h" #include "linbox/util/timer.h" #include #include #include // setprecision #include #include #ifdef __LINBOX_HAVE_TINYXML2 #include #endif #include "benchmark-utils.h" #include "benchmark-metadata.h" // // TimeWatcher // namespace LinBox { /*! Helper. * This helper has several functions : * - Records the timings * - predict the execution time for the next experiment * - helps producing enough experiments (but not too much and not too time consuming) for producing a valid measure. * . * @warning if the timings are too short, this may not be accurate. * * See member function help for more information. */ class TimeWatcher { private : dvector_t * Points_; //!< Points data. If Points_[i] = x, then Values_[i]=f(x). dvector_t * Values_; //!< Time data. See \p Points_ . size_t MaxRepet_; //!< Maximum number of repetitions of timings size_t MinRepet_; //!< Minimum number of repetitions of timings double MaxTime_; //!< Maximum time to be spent on repetitions (after MinRepet_ iters have been done) double AbortTime_; //!< Time to abort a series of computation. bool aborted_; //!< abort any subsequent computation public: /*! constructor. * Inits the time watcher with a pair of points/values * @param pts vector of points * @param vals vector of times */ TimeWatcher (dvector_t & pts, dvector_t & vals) ; //! Null Constructor. The pointers are intialised to NULL TimeWatcher () ; void init(dvector_t & pts, dvector_t & vals); //! returns the vector of abscissa (points) dvector_t & refX() ; //! returns the vector of ordiantes (values) dvector_t & refY() ; /** Prediction for the next experiment time. * It is assumed that \c predict(0)=0. If Curent_<3, a linear, * then quadratic fit is done. Other wise, a cubic fit is * performed. * @param x the next evaluation point. * @return f(x) where f tries to fit the points : \f$ f(\mathtt{Data\_}[0][0..\mathtt{Current\_}-1]) \approx refY()[0..\mathtt{Current\_}-1]\f$ */ double predict(double x) ; /*! @brief Watches a timer and a number and repet and signals if over. * * We want at least 2 repetions but not more than maxtime spent on timing. * * @param repet number of previous repetitions. Should be 0 on the first time \c keepon is called. * @param tim timer to watch * @param maxtime maximum time (in seconds) until \c watchon tells stop. * @return \c true if we conditions are not met to stop, \c false otherwise. * @pre \c tim should have been started previously ! * */ bool keepon(size_t & repet, double tim, bool usePrediction = false) ; //! size size_t size() const; //! clear the pointers (not the settings) void clear(); } ; // TimeWatcher } // LinBox // // DataSeries // namespace LinBox { /** @brief this structure holds a bunch of timings. * It collects the points, the time spent at each point and a measure * (for instance mflops). * @todo Times and Values could be dmatrix_t (and mergeable) */ struct DataSeries { svector_t PointLabels ; //!< points abscisa, values for the x axis. Used in legend for the X axis. dvector_t Points ; //!< points abscisa, values for the x axis. Used in TimeWatcher (for instance, if PointLabels are the names of sparse matrices, Points would be their number of non zeros, or 1,2,3,... or whatever relevant for predicting time) dvector_t Times ; //!< actual computation times. dvector_t Values ; //!< actual data to be plotted (for instance mflops) svector_t UID ; //!< unique id of a point. //! Constructor DataSeries() ; ~DataSeries() ; #if 0 /** @brief resize * @param n new size * @pre the size before was n-1 */ void resize(const size_t & n); #endif //! Size of the series of measurements. size_t size() const; //! add some new data. void push_back(const std::string & nam, const double & val, const double & x = NAN, const double &y = NAN); // use it but change time // void useMetadata(const MetaData & m) ; }; // DataSeries } // LinBox /* ********************** */ /* Plot structures */ /* ********************** */ // // PlotStyle // namespace LinBox { /*! @brief Represents a table of values to plot (2D). * list of values are reprensented by vectors. the table is a vector * of these vectors. * * @warning NaN, inf are used as missing data. More genenally * we could store data in strings. * @todo Allow for 'speed up against col X' style * @todo make depend on PlotData */ //!@todo setUsingSeries(const svector_t &) class PlotStyle { public: //! What format the plot should be in? struct Term { //! Term type enum Type { png = 100, //!< png. Portable Network Graphics file. pdf = 101, //!< pdf. Portable Document Format actually, this is eps converted to pdf. eps = 102, //!< eps. Encapsulated PostScript. Cool for inclusion in LaTex files. This is the default. epstex = 107, //!< epslatex. Encapsulated PostScript. Cool for inclusion in LaTex files with latex formulas. svg = 103, //!< sgv. Scalable Vector Graphics. tex = 104, //!< tex. Simple tabular. html = 105, //!< html. HTML table. other= 106 //!< don't know yet... } ; }; // enum NoType { other = 0 } ; //! What style of graphic : histogram ? graph ? struct Plot { //! Plot type enum Type { histo = 200, //! histogram plot. This is the default. x ticks are evenly spaced, whatever there value and are labelled with their value. graph = 201, //! standard plot. Plots y_i=f(x) with x in the first colum and y_i in ith column. x-ticks are well spaced. This will not work if the X are not numbers (but strings). other = 202 //! other (ie user supplied). } ; }; struct Line { enum Type { lines = 300, //! lines. histogram = 301, //! histogram (boxes). linespoints= 302, //! lines with points. (default) points = 303, //! only the points. other = 304 //! rien. } ; }; struct Options { enum Type { oblique = 400, other = 401 }; }; /*! @brief Constructor. * By default, creates an histogram representing the data in an eps plot. */ PlotStyle() ; /*! @brief sets the titles in the graph. * @param titre Title of the graph * @param titre_y Title of the y-axis (series) * @param titre_x Title of the x-axis (data points) */ void setTitle ( const std::string & titre , const std::string & titre_y , const std::string & titre_x); /*! @brief Gets the title of the graph. * @return a gnuplot command to set the title of the graph. */ std::string getTitle() const ; /*! @brief Gets the title of points abscissa. * @return a gnuplot command to set the title of the abscissa. */ std::string getTitleX() const ; /*! @brief Gets the title of the series. * @return a gnuplot command to set the title of the ordinate (series). */ std::string getTitleY() const ; /*! @brief get the title string. * @param index can be (0,1,2) */ std::string getRawTitle(int index=0) const ; /*! @brief Sets the output format. * @sa TermType * @param term type */ void setTerm( enum Term::Type term) ; /*! @brief Gets the output format. * @return string for setting the expected output format in gnuplot. * @warning noenhanced allows underscores while enhanced does subscripts. * if we add a (no) enhanced option, we'll have to add a safeFormat(std::string) that replaces \c _ with \_ . * This is tricky and can be done at "post production" stage :-) */ std::string getTerm() const ; /*! @brief Gets the graph output extension. * By default, this is ".eps". * @return a string for this extension, including the sepatating dot. * */ std::string getExt() const ; #if 0 /*! @brief gets the style of the graph. * This is very user-tweakable !! * @return the style for gnuplot. */ const std::string & getStyle() { return "#style\n"+_styleopts_ ; } /*! @brief sets the style of the graph. * This is very user-tweakable !! * @param style the style for gnuplot as a gnuplot command. */ void setStyle(const std::string & style) { _styleopts_ = style ; } #endif /*! @brief sets the legend position. * @param keypos the arguments to key (where the legend should be put) * can be : * * set key {on|off} {default} * {{inside | outside} | {lmargin | rmargin | tmargin | bmargin} | {at }} * {left | right | center} {top | bottom | center} * {vertical | horizontal} {Left | Right} * {{no}reverse} {{no}invert} * {samplen } {spacing } * {width } * {height } * {{no}autotitle {columnheader}} * {title ""} {{no}enhanced} * {{no}box { {linestyle | ls } | {linetype | lt } {linewidth | lw }}} * */ void setKeyPos(const std::string & keypos) ; /*! @brief Gets the legend position. * by default, it is "under". */ std::string getKeyPos() const ; /*! @brief sets the position of the labels on the X absciss. * @param opt * @param more more stuff */ void setXtics ( enum Options::Type opt, const std::string & more="") ; /*! @brief Gets the legend position. * by default, it is 45° inclined (use in on long tics legends). */ const std::string & getXtics() const ; /*! @brief Gets the name of the output graph. * @param basnam the raw name for the output. * @return basnam+extenstion. */ std::string getOutput(const std::string & basnam) const ; /*! @brief Sets the type of plot. * @param type the type. * @sa PlotType * */ void setPlotType(enum Plot::Type type) ; /*! @brief Sets the way dots are linked. * @sa LineType * @param type type */ void setLineType( enum Line::Type type) ; /*! @brief Gets the type of plot. * default is histogram, or if graph is supplied, then the default is linespoints. * Can be totally customized. * @return a string for gnuplot to set the plot type. * @sa PlotType * */ std::string getPlotType(const std::string & extraargs ="") ; /*! @brief adds some style line to the graph. * This is very user-tweakable !! * @param style a style line for gnuplot as a gnuplot command. */ void addPlotType(const std::string & style) ; /*! @brief tells which columns to use. * @param col a column to use. * @param moreargs more stuff */ void setUsingSeries(size_t col, const std::string & moreargs= "") ; /*! @brief adds a column to use * @param col a column to use. * @param moreargs more stuff * @pre \p _usingcols_ is not empty, ie \c setUsingSeries has already been called. */ void addUsingSeries(size_t col, const std::string & moreargs= "") ; /*! @brief tells which columns to use. * @param cols a list of column to use. * @param moreargs more stuff */ void setUsingSeries(std::list cols, const std::string & moreargs= "") ; /*! @brief adds a set of columns to use. * @param cols a list of column to use. * @param moreargs more stuff * @pre \p _usingcols_ is not empty, ie \c setUsingSeries has already been called. */ void addUsingSeries(std::list cols, const std::string & moreargs= "") ; /*! @brief tells which columns to use. * @param cols all colums between \c cols.first and \c cols.second (included) * will be used. * @param moreargs more stuff * */ void setUsingSeries(std::pair cols, const std::string & moreargs= "") ; /*! @brief adds contiguous columns to use. * @param cols all colums between \c cols.first and \c * cols.second will be used. * @param moreargs more stuff * @pre \p _usingcols_ is not empty, ie \c setUsingSeries has * already been called. * */ void addUsingSeries(std::pair cols, const std::string & moreargs= "") ; const std::string & getUsingSeries() const ; private : // int _precision_ ; //!< precision of the output. by default 2. /* Legend. */ std::string _legend_pos_; //!< legend position /* titles */ std::string _title_ ; //!< name of the graph std::string _title_x_ ; //!< title for the points std::string _title_y_ ; //!< title for the series std::string _xtics_ ; //!< format for the x tics. /* units */ // std::string _unit_ ; /* terminal output */ enum Term::Type _term_ ; //!< output data format. // std::string _termopts_ ; /* plotting style */ enum Plot::Type _plot_type_ ; //!< histogram/graph style // std::string _plot_extra_; //!< extra specification for the plot style. default empty. enum Line::Type _line_type_ ; //!< style for the representation of points std::string _styleopts_ ; //!< gp style command. /* columns to use */ std::string _usingcols_ ; //!< columns to be used (gp command) } ; // PlotStyle } // LinBox // // PlotData // namespace LinBox { struct Point { //! x struct Labels { typedef std::string type; }; //! y struct Values { typedef double type; } ; //! numerical value for x struct Points { typedef double type; }; //! y time struct Times { typedef double type; }; } ; /*! @brief The raw data to plot. * Represents the labels for the points (X axis) and the values for * each series of measures (Y axis). * * Members that set/get are named as follows : * - getX(nom,j) return the j'th element of series named nom * - getX(i,j) return the j'th element of series number i * - getCurrentSeriesX(j) return the j'th element of current series * - getCurrentEntryX() return the current element of current series (ie the last one) * - . * * Members are also named as follows : * - getXXX is a const member * - selectXXX is non const and may create/update stuff * - refXXX returns a reference * - setXXX sets something * * @internal The internal representation is a * vector of vector, each series of point being a vector of double. * * @tparam Xkind the X axis is parametrised by \p Xkind (string, int, double...) * The Y axis is always represented by double. * @todo put the legend (title, x, y) in there */ class PlotData { private : std::vector _tableau_ ; //!< data. \c _tableau_[i] represents a series of measurements. A data series is augmented only via the \c push_back method. A series may be accessed by its name, its number or it is the current working series. svector_t _series_label_ ; //!< label for each series of measures. Used in the legend of the plots/tables of points. mutable size_t _curr_series_ ; //!< index of the current series of measurements. mutable TimeWatcher _time_watch_ ; //!< time predictor, helper. See \c TimeWatcher. MetaData _plot_data_ ; //!< information abouth the benchmark MetaDataSeries _meta_data_ ; //!< information about each point private: #ifdef __LINBOX_HAVE_TINYXML2 //! @internal data part of the XML output tinyxml2::XMLElement * saveData(tinyxml2::XMLDocument & doc) ; #endif /** Finds the index of a series by its name. * @param nom name of the series * @return its index */ size_t getIndex(const std::string & nom) const ; /** Finds the index of a series by its name. * @param nom name of the series * @return its index */ size_t selectIndex(const std::string & nom) ; public : /*! Returns the ith series of measurements. * @param i ith series to be returned */ const DataSeries & getSeries(const size_t &i) const ; /*! Returns the ith series of measurements. * @param i ith series to be returned */ const DataSeries & selectSeries(const size_t &i) ; /*! Returns the series of measurements after its name. * @param nom name of series to be returned */ const DataSeries & selectSeries(const std::string &name) ; /*! Returns the current series of measurements. */ const DataSeries & getCurrentSeries() const; /*! Returns the ith series of measurements. * @param i ith series to be returned */ DataSeries & refSeries(const size_t &i) ; /*! Returns the ith series of measurements. * @param i ith series to be returned */ DataSeries & refSeries(const std::string & nom) ; /*! Returns the current series of measurements. */ DataSeries & refCurrentSeries() ; /*! Inits a plot with series of data. * @param nb_pts number of points in each series. * @param nb_srs number of series of points. Default is 1. */ PlotData() ; /*! destructor. */ ~PlotData() ; /*! copy constructor. * @param PD a PlotData to copy. */ PlotData(const PlotData & PD); /** @brief initialize to empty */ void clear() ; /*! merges another plot data to the current one. * (just adds to the end, does not merge series by name yet) */ void merge(const PlotData &PD) ; /*! @brief get the number of series. * @return number of series. */ size_t size() const ; /** @brief gets the current series number. */ size_t getCurrentSeriesNumber() const ; /*! @brief Sets the name of a series. * @param i index of the series * @param nom name of the series */ void setSeriesName(const size_t & i, const std::string & nom) ; // ref Series template std::vector & refSeries(const size_t & i, Pt kind) ; template std::vector & refSeries(const std::string & name, Pt kind) { return refSeries(getIndex(name ), kind ); } // get Series template const std::vector & getSeries(const size_t & i, Pt kind) const ; template const std::vector & getSeries(const std::string & name, Pt kind) const { return getSeries(getIndex(name),kind); } template const std::vector & getCurrentSeries( Pt kind) const { return getSeries(_curr_series_, kind); } template const typename Pt::type & getSeriesEntry(const size_t & i, const size_t & j, Pt kind) const { linbox_check(j const typename Pt::type & getSeriesEntry(const std::string & name, const size_t & j, Pt kind) const { return getSeriesEntry(getIndex(name),j,kind); } template const typename Pt::type & getSeriesEntry(const size_t & i, Pt kind) const { return ( getSeries(i,kind).back() ) ; } template const typename Pt::type & getSeriesEntry(const std::string & name, Pt kind) const { return getSeriesEntry(getIndex(name),kind); } template const typename Pt::type & getCurrentSeriesEntry(const size_t & j, Pt kind) const { return getSeriesEntry(_curr_series_, j, kind); } template const typename Pt::type & getCurrentSeriesEntry( Pt kind) const { return getSeriesEntry(_curr_series_, kind); } // set Series /** Gets the name of a series. * @param i index of the series */ const std::string & getSeriesName(const size_t & i) const ; /** Gets the name of the current series. */ const std::string & getCurrentSeriesName() const ; /*! @brief Sets the name of the current series. * @param nom name of the series */ void setCurrentSeriesName(const std::string & nom) ; /** Inits the watch on a series * @param i index of a series */ void initWatch ( const size_t & i) ; /** Inits the watch to current series */ void initCurrentSeriesWatch () ; /** Creates a new series. * It is created after the last series. * \c getCurrentSeries() points to it. * @param nom name of the new series */ void newSeries(const std::string & nom = "") ; /** Finish a series of measurements. * Nothing is done for the moment. */ void finishSeries() ; /** @brief size of a series. * @param i index of the series */ size_t getSeriesSize(const size_t & i) const ; /** @brief size of the current series. */ size_t getCurrentSeriesSize() const ; /*! goes to the next series of points */ bool selectNextSeries() ; /** selects the first series */ void selectFirstSeries() ; /*! @brief Sets the name of a point. * @param i series number * @param j index for the the point * @param nom name of the point */ template void setSeriesPointLabel(const size_t & i, const size_t & j, const T & nom) { std::string nom_s = fortifyString(toString(nom)); linbox_check(j void setCurrentSeriesEntry(const T & nam, const double & val , const double & xval = NAN, const double & yval = NAN) { std::string nam_s = fortifyString(toString(nam)); return setSeriesEntry(_curr_series_,nam_s,val,xval,yval) ; } /*! gets a reference to the array of data. * @return a reference to the member \c _tableau_ representing the data. */ const std::vector & getTable() const ; /*! gets a reference to the array of data. * @return a reference to the member \c _tableau_ representing the data. */ std::vector & refTable() ; /** @brief Continue for another time measure ? * @see TimeWatcher::keepon * @param repet current number of repetitions for this new measure * @param tim time previously spent on the measures. * @return true if one more measure can be done */ bool keepon(size_t & repet, double tim, bool usePrediction=false) ; void load( const std::string & filename) ; /** @brief saves the data in XML format. * @param filename file name * @param title titles of the data * @param xtitle legend of the X axis * @param ytitle legend of the Y axis. */ void save( const std::string & filename , const std::string & title = "" , const std::string & xtitle = "" , const std::string & ytitle = "") ; void addCurrentEntryMetaData(const MetaData & m) { _meta_data_.push_back(getCurrentEntryId(),m); } /** returns the unique ID of the current series last entry */ const std::string & getCurrentEntryId() const { return (getCurrentSeries().UID).back(); } /** @brief returns the unique ID of the current series j'th entry. * @param j index of the entry. */ const std::string & getCurrentSeriesId(const size_t & j) const { return (getCurrentSeries().UID[j]); } /** @brief returns the unique ID of the i'th series j'th entry. * @param i index of the series. * @param j index of the entry. */ const std::string & getId(const size_t & i, const size_t & j) { return (selectSeries(i).UID[j]); } /** @brief returns the unique ID of the i'th series j'th entry. * @param i index of the series. * @param j index of the entry. */ const std::string & getId(const std::string & name, const size_t & j) { return (selectSeries(name).UID[j]); } }; // PlotData } // LinBox // // PlotGraph // namespace LinBox { /*! @brief The graph (2D). * This class joins a PlotStyle and a PlotData to build up a graph. A * filename should be provided as well, indicating where the output * graph and scripts will be generated. * * @warning the filename will get a random suffix before the extension * so as not to overwrite files "par inadvertance". * @warning don't name anything else than a folder "data" in your working directory. You've been warned. * @todo make depend on PlotStyle (that owns data) */ //!@todo use getUsingSeries in latex/html/csv/xml class PlotGraph { private : PlotData & _data_ ; //!< reference to the data points PlotStyle & _style_ ; //!< reference to a plotting style std::string _filename_ ; //!< name for the output file (without extension). a random \c _XXXXXX suffix will be added to make it unique. std::string _printname_ ; //!< name for the output file (without extension) to be printed. a random \c _XXXXXX suffix makes it unique. dmatrix_t _merge_data_ ; svector_t _merge_points_ ; private : /*! @internal * @brief Appends random suffix. * Appends to \p _filename_ a random string constituted of an * underscore followed by 8 random alnum chars. * @return the concatenation of \c _filename_ and this suffix. */ void _randomName(); //! @internal returns the file name (without extension and uid) const std::string & getFileName() ; //! @bug this supposes the two series have unique measurements for one point. void mergeTwoSeries( svector_t & merge_points , dmatrix_t & merge_data , const svector_t & pts , const dvector_t & dat , const size_t & idx) const ; //! merge all series of points into a vector of absissa points and a vector of vector of data points void mergeSeries(); void print_csv(); void print_dat(); void print_xml(); void print_html() ; /*! @brief Prints data in a latex tabular. */ void print_latex(); /*!@brief Plots the data with gnuplot. * Produces data in a .dat file, creates a .gp gnuplot script and * outputs a graph calling gnuplot. * @warning If gnuplot is not available, fall back to the latex method. */ void print_gnuplot(bool only_data=false); public : /*! @brief Sets a new data structure. * @param data a reference to a PlotData class. */ void setData( PlotData & data ); /*! @brief Gets the data. * @param[in,out] data a reference to a PlotData class. */ PlotData & refData( PlotData & data); /*! @brief Sets a new style structure. * @param style a reference to a PlotStyle class. */ void setStyle( PlotStyle & style ) ; /*! @brief Gets the style. * @param[in,out] style a reference to a PlotStyle class. */ PlotStyle & refStyle( PlotStyle & style) ; PlotStyle & refStyle( ) { return _style_ ; } // not implemented yet void sortSeries() ; // not implemented yet void unique() ; /*! @brief Constructor for the PlotGraph class. * Plots a series of data according to a style. * @param data data to be plot, will be processed by the style * @param style sets parameters to gnuplot to achieve a nice * plot. */ PlotGraph( PlotData & data, PlotStyle & style ); /*! @brief sets the ouput file name. * All output is put in a "data" subfolder. * @warning Since no file is overwritten, this * directory can rapidly get very populated. */ void setOutFilename( const std::string & filename ) ; const std::string & getUsingSeries() ; /*! @brief Gets the plot command line. * @param File the name of/path to the data file (with extension) * @return a gnuplot "plot" command stream. */ std::string getPlotCommand(const std::string & File) ; void print( Tag::Printer pt = Tag::Printer::xml) ; void save() ; void load(const std::string & filename) ; }; // PlotGraph } // LinBox // // Least Squares // #ifdef __LINBOX_HAVE_LAPACK extern "C" { #if 1 // from lapack (not clapack) void dgels_(char *trans, int *m, int *n, int *nrhs, double *a, int *lda, double *b, int *ldb, double *work, int *lwork, int *info); void dgelsy_(int *m, int *n, int *nrhs, double *a, int *lda, double *b, int *ldb, int *JPVT, double *RCOND, int *RANK, double *work, int *lwork, int *info); void dgelss_(int *m, int *n, int *nrhs, double *a, int *lda, double *b, int *ldb, double *s, double *RCOND, int *RANK, double *work, int *lwork, int *info); #endif #if 0 int clapack_dgels (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TA, int M, int N, int NRHS, double * A, int lda, double * B, const int ldb ); #endif } #endif // __LINBOX_HAVE_LAPACK // // Curve fitting // namespace LinBox { //! fit X[n-1,n],Y[n-1,n] and return evaluation at x. double fit2(const dvector_t & X, const dvector_t & Y, int n, double x); #ifdef __LINBOX_HAVE_LAPACK //! fits with a degree 3 polynomial and return evaluation at x. double fit_lapack3(const dvector_t &X, const dvector_t &Z, double x); #endif // __LINBOX_HAVE_LAPACK //! fit X[n-2,n],Y[n-2,n] and return evaluation at x. double fit3(const dvector_t & X, const dvector_t & Y,int n, double x); } // LinBox #ifdef LinBoxSrcOnly #include "benchmarks/benchmark.C" #endif #include "benchmarks/benchmark.inl" #endif // __LINBOX_benchmarks_benchmark_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/benchmark.inl000066400000000000000000000077431274717217100176100ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/benchmark.inl * @ingroup benchmarks * @brief Common header to ease benchmarking routines. * We provide a class to easily populate and plot files that represent * benchmarks. * * We use gnuplot for the plotting part * or LaTeX to provide tables. A minimum knowledge of \c Gnuplot is a plus but * the \c benchmark-* files should provide enough examples for creating * standard (not too fancy) plots. * * We fall back to plain latex tabulars when gnuplot is not available. We plot * graphs in files whose name is extended by a random 8-char string to avoid * écraser files. * */ #ifndef __LINBOX_benchmarks_benchmark_INL #define __LINBOX_benchmarks_benchmark_INL #include #include "linbox/integer.h" #include "linbox/util/debug.h" #include "tests/test-common.h" #include "linbox/util/timer.h" #include #include // // Chrono // namespace LinBox { template Chrono::Chrono() : _chrono_(), _times_(0), _total_(0) { _chrono_.clear(); } template Chrono::~Chrono() {} template void Chrono::clear() { _chrono_.clear(); _times_.resize(0); _total_ = 0; } template void Chrono::start() { _chrono_.start(); } template void Chrono::stop() { _chrono_.stop(); double split = _chrono_.userElapsedTime(); _times_.push_back( split ); _total_ += split ; _chrono_.clear(); } template double Chrono::time() const { return _total_ ; } template dvector_t Chrono::times() const { return _times_ ; } } // LinBox // // PlotData // namespace LinBox { // set Series template<> svector_t & PlotData::refSeries(const size_t & i, Point::Labels) { linbox_check(i dvector_t & PlotData::refSeries(const size_t & i, Point::Values) { return (refSeries(i).Values) ; } template<> dvector_t & PlotData::refSeries(const size_t & i, Point::Points) { return (refSeries(i).Points) ; } template<> dvector_t & PlotData::refSeries(const size_t & i, Point::Times) { return (refSeries(i).Times) ; } // get Series template<> const svector_t & PlotData::getSeries(const size_t & i, Point::Labels) const { linbox_check(i const dvector_t & PlotData::getSeries(const size_t & i, Point::Values) const { return (getSeries(i).Values) ; } template<> const dvector_t & PlotData::getSeries(const size_t & i, Point::Points) const { return (getSeries(i).Points) ; } template<> const dvector_t & PlotData::getSeries(const size_t & i, Point::Times) const { return (getSeries(i).Times) ; } } // LinBox #endif // __LINBOX_benchmarks_benchmark_INL // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/block-coppersmith-benchmark.C000066400000000000000000000042541274717217100226250ustar00rootroot00000000000000#include "linbox/linbox-config.h" #include #include #include #define __LINBOX_USE_OPENMP 1 #include "linbox/ring/modular.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/algorithms/blackbox-block-container.h" #include "linbox/algorithms/block-coppersmith-domain.h" #include "linbox/solutions/det.h" // Computes the minimal polynomial of a sparse matrix (given in Matrix Market Format) // Times BlockCoppersmithDomain using TPL_omp using namespace LinBox; typedef Givaro::Modular Field; typedef typename Field::Element Element; typedef SparseMatrix SparseMat; typedef MatrixDomain Domain; typedef typename Domain::OwnMatrix Block; void benchmarkBCD(Field& F, Domain& MD, SparseMat& M, Block& U, Block& V, std::vector& gen, std::vector& deg, int t) { BlackboxBlockContainer blockseq(&M,F,U,V); BlockCoppersmithDomain > BCD(MD,&blockseq,t); double start=omp_get_wtime(); deg=BCD.right_minpoly(gen); double time=omp_get_wtime()-start; std::cout << time << std::endl; } int main(int argc, char** argv) { int earlyTerm; int p; std::string uFname,vFname,mFname; static Argument args[] = { { 'p', "-p P", "Set the field GF(p)", TYPE_INT, &p}, { 't', "-t T", "Early term threshold", TYPE_INT, &earlyTerm}, { 'm', "-m M", "Name of file for matrix M", TYPE_STR, &mFname}, { 'u', "-u U", "Name of file for matrix U", TYPE_STR, &uFname}, { 'v', "-v V", "Name of file for matrix V", TYPE_STR, &vFname}, END_OF_ARGUMENTS }; parseArguments(argc,argv,args); Field F(p); Domain MD(F); SparseMat M(F); Block U(F),V(F); { ifstream iF(mFname); M.read(iF); M.finalize(); iF.close(); } { ifstream iF(uFname); U.read(iF); iF.close(); } { ifstream iF(vFname); V.read(iF); iF.close(); } std::vector gen; std::vector deg; benchmarkBCD(F,MD,M,U,V,gen,deg,earlyTerm); return 0; } linbox-1.4.2/benchmarks/data/000077500000000000000000000000001274717217100160505ustar00rootroot00000000000000linbox-1.4.2/benchmarks/data/Makefile.am000066400000000000000000000017101274717217100201030ustar00rootroot00000000000000# Copyright (c) 2013 the LinBox group # Brice Boyer (briceboyer) # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ cleanup : \rm -rf *dat *tex *gp *xml *csv *html *eps linbox-1.4.2/benchmarks/gen-blocks.C000066400000000000000000000102771274717217100172760ustar00rootroot00000000000000#include "linbox/linbox-config.h" #include #include #include #include #include #include #include #include "linbox/ring/modular.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/blackbox/transpose.h" #include "linbox/vector/vector-domain.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/algorithms/blackbox-block-container.h" #include "linbox/algorithms/block-coppersmith-domain.h" #include "linbox/solutions/det.h" #include "linbox/solutions/rank.h" #include "linbox/solutions/methods.h" #include "linbox/algorithms/wiedemann.h" #include "examples/map-sparse.h" // Generates random dense matrices U and V and sparse matrix M for use // with block-coppersmith-benchmark and invariant-factors-benchmark. // Also computes the min-poly and saves that as well using namespace std; using namespace LinBox; typedef Givaro::Modular Field; typedef typename Field::Element Element; typedef SparseMatrix SparseMat; typedef MatrixDomain Domain; typedef typename Domain::OwnMatrix Block; int randRange(int start, int end) { double rval = rand(); static const double NORMALIZING_CONSTANT = 1.0/(1.0+RAND_MAX); double normedRVal = rval*NORMALIZING_CONSTANT; double rangeSize = end-start; int offset = rangeSize*normedRVal; return start+offset; } void randomBlock(Block& block, Field& field, int q, int m, int n) { Element d; for (int i=0;i& gen, std::vector& deg, int t) { BlackboxBlockContainer blockseq(&M,F,U,V); BlockCoppersmithDomain > BCD(MD,&blockseq,t); deg=BCD.right_minpoly(gen); } int main(int argc, char** argv) { int seed=501; int n; int b; int nnz; double sparsity; int t; int q=3; srand(seed); static Argument args[] = { { 'n', "-n N", "Set row/col dimension of test matrix n.", TYPE_INT, &n }, { 'b', "-b B", "Set block size b.", TYPE_INT, &b }, { 's', "-s S", "Set the sparsity [0-1).", TYPE_DOUBLE, &sparsity }, { 'q', "-q Q", "Set the field GF(p)", TYPE_INT, &q}, { 't', "-t T", "Early term threshold", TYPE_INT, &t}, END_OF_ARGUMENTS }; parseArguments (argc, argv, args); nnz=(int)((((double)(n))*n)*sparsity); std::cout << nnz << std::endl; Field F(q); Domain MD(F); SparseMat M(F,n,n); Block U(F,b,n),V(F,n,b); std::vector gen; std::vector deg; randomNonSingular(U,F,q,b,n); randomNonSingular(V,F,q,n,b); std::cerr << "done1" << std::endl; MapSparse sparse(F,n,n); MapSparse::generateSparseNonSingular(sparse,nnz,seed); sparse.copy(M); std::cerr << "done2" << std::endl; { ofstream oF("U"+fileDesc(n,b,sparsity,q)); U.write(oF); oF.close(); } { ofstream oF("V"+fileDesc(n,b,sparsity,q)); V.write(oF); oF.close(); } { ofstream oF("M"+fileDesc(n,b,sparsity,q)); M.write(oF); oF.close(); } std::cerr << "done3" << std::endl; computeMinPoly(MD,M,F,U,V,gen,deg,t); { ofstream oF("MP"+fileDesc(n,b,sparsity,q)); for (int i=0;i 0) { oF << deg[deg.size()-1]; } oF << std::endl; for (int i=0;i #include #include #define __LINBOX_USE_OPENMP 1 #include "linbox/ring/modular.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/algorithms/blackbox-block-container.h" #include "linbox/algorithms/block-coppersmith-domain.h" #include "linbox/solutions/det.h" #include #include #include #include // Computes the invariant factors of a sparse matrix (given in Matrix Market Format) // Effectively times: TPL_omp, BlockCoppersmithDomain and KannanBachem using namespace LinBox; typedef Givaro::Modular Field; typedef typename Field::Element Element; typedef SparseMatrix SparseMat; typedef MatrixDomain Domain; typedef typename Domain::OwnMatrix Block; typedef Givaro::Modular BaseDom; typedef Givaro::Poly1Dom PolyDom; typedef GivaroPoly Ring; typedef MatrixDomain PolyMatDom; typedef BlasMatrix PolyMat; int randRange(int start, int end) { double rval = rand(); static const double NORMALIZING_CONSTANT = 1.0/(1.0+RAND_MAX); double normedRVal = rval*NORMALIZING_CONSTANT; double rangeSize = end-start; int offset = rangeSize*normedRVal; return start+offset; } void benchmarkBCD(Field& F, Domain& MD, SparseMat& M, Block& U, Block& V, std::vector& gen, std::vector& deg, int t, int p) { BlackboxBlockContainer blockseq(&M,F,U,V); BlockCoppersmithDomain > BCD(MD,&blockseq,t); double start=omp_get_wtime(); deg=BCD.right_minpoly(gen); BaseDom BD(p); PolyDom PD(BD, "x"); Ring R(PD); PolyMatDom PMD(R); int b=U.rowdim(); int d=gen.size(); PolyMat MM(R,b,b); Ring::Element temp; temp.resize(d); for (int i=0;i SFKB(PMD); BlasVector diag(R,b,R.zero); SFKB.solve(diag,MM); PolyDom::Type_t lcoef; for (size_t i=0;i v(F,n,d),sum(F,n,d),vPrime(F,n,d); for (int i=0;i gen; std::vector deg; benchmarkBCD(F,MD,M,U,V,gen,deg,earlyTerm,p); return 0; } linbox-1.4.2/benchmarks/matrix/000077500000000000000000000000001274717217100164435ustar00rootroot00000000000000linbox-1.4.2/benchmarks/matrix/Makefile.am000066400000000000000000000016221274717217100205000ustar00rootroot00000000000000# Copyright (c) 2013 the LinBox group # Brice Boyer (briceboyer) # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ linbox-1.4.2/benchmarks/matrix/bibd_12_5_66x792.sms000066400000000000000000002070171274717217100215710ustar00rootroot0000000000000066 792 M 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 1 1 24 1 1 25 1 1 26 1 1 27 1 1 28 1 1 29 1 1 30 1 1 31 1 1 32 1 1 33 1 1 34 1 1 35 1 1 36 1 1 37 1 1 38 1 1 39 1 1 40 1 1 41 1 1 42 1 1 43 1 1 44 1 1 45 1 1 46 1 1 47 1 1 48 1 1 49 1 1 50 1 1 51 1 1 52 1 1 53 1 1 54 1 1 55 1 1 56 1 1 57 1 1 58 1 1 59 1 1 60 1 1 61 1 1 62 1 1 63 1 1 64 1 1 65 1 1 66 1 1 67 1 1 68 1 1 69 1 1 70 1 1 71 1 1 72 1 1 73 1 1 74 1 1 75 1 1 76 1 1 77 1 1 78 1 1 79 1 1 80 1 1 81 1 1 82 1 1 83 1 1 84 1 1 85 1 1 86 1 1 87 1 1 88 1 1 89 1 1 90 1 1 91 1 1 92 1 1 93 1 1 94 1 1 95 1 1 96 1 1 97 1 1 98 1 1 99 1 1 100 1 1 101 1 1 102 1 1 103 1 1 104 1 1 105 1 1 106 1 1 107 1 1 108 1 1 109 1 1 110 1 1 111 1 1 112 1 1 113 1 1 114 1 1 115 1 1 116 1 1 117 1 1 118 1 1 119 1 1 120 1 2 1 1 2 2 1 2 3 1 2 4 1 2 5 1 2 6 1 2 7 1 2 8 1 2 9 1 2 10 1 2 11 1 2 12 1 2 13 1 2 14 1 2 15 1 2 16 1 2 17 1 2 18 1 2 19 1 2 20 1 2 21 1 2 22 1 2 23 1 2 24 1 2 25 1 2 26 1 2 27 1 2 28 1 2 29 1 2 30 1 2 31 1 2 32 1 2 33 1 2 34 1 2 35 1 2 36 1 2 121 1 2 122 1 2 123 1 2 124 1 2 125 1 2 126 1 2 127 1 2 128 1 2 129 1 2 130 1 2 131 1 2 132 1 2 133 1 2 134 1 2 135 1 2 136 1 2 137 1 2 138 1 2 139 1 2 140 1 2 141 1 2 142 1 2 143 1 2 144 1 2 145 1 2 146 1 2 147 1 2 148 1 2 149 1 2 150 1 2 151 1 2 152 1 2 153 1 2 154 1 2 155 1 2 156 1 2 157 1 2 158 1 2 159 1 2 160 1 2 161 1 2 162 1 2 163 1 2 164 1 2 165 1 2 166 1 2 167 1 2 168 1 2 169 1 2 170 1 2 171 1 2 172 1 2 173 1 2 174 1 2 175 1 2 176 1 2 177 1 2 178 1 2 179 1 2 180 1 2 181 1 2 182 1 2 183 1 2 184 1 2 185 1 2 186 1 2 187 1 2 188 1 2 189 1 2 190 1 2 191 1 2 192 1 2 193 1 2 194 1 2 195 1 2 196 1 2 197 1 2 198 1 2 199 1 2 200 1 2 201 1 2 202 1 2 203 1 2 204 1 3 1 1 3 2 1 3 3 1 3 4 1 3 5 1 3 6 1 3 7 1 3 8 1 3 37 1 3 38 1 3 39 1 3 40 1 3 41 1 3 42 1 3 43 1 3 44 1 3 45 1 3 46 1 3 47 1 3 48 1 3 49 1 3 50 1 3 51 1 3 52 1 3 53 1 3 54 1 3 55 1 3 56 1 3 57 1 3 58 1 3 59 1 3 60 1 3 61 1 3 62 1 3 63 1 3 64 1 3 121 1 3 122 1 3 123 1 3 124 1 3 125 1 3 126 1 3 127 1 3 128 1 3 129 1 3 130 1 3 131 1 3 132 1 3 133 1 3 134 1 3 135 1 3 136 1 3 137 1 3 138 1 3 139 1 3 140 1 3 141 1 3 142 1 3 143 1 3 144 1 3 145 1 3 146 1 3 147 1 3 148 1 3 205 1 3 206 1 3 207 1 3 208 1 3 209 1 3 210 1 3 211 1 3 212 1 3 213 1 3 214 1 3 215 1 3 216 1 3 217 1 3 218 1 3 219 1 3 220 1 3 221 1 3 222 1 3 223 1 3 224 1 3 225 1 3 226 1 3 227 1 3 228 1 3 229 1 3 230 1 3 231 1 3 232 1 3 233 1 3 234 1 3 235 1 3 236 1 3 237 1 3 238 1 3 239 1 3 240 1 3 241 1 3 242 1 3 243 1 3 244 1 3 245 1 3 246 1 3 247 1 3 248 1 3 249 1 3 250 1 3 251 1 3 252 1 3 253 1 3 254 1 3 255 1 3 256 1 3 257 1 3 258 1 3 259 1 3 260 1 4 1 1 4 9 1 4 10 1 4 11 1 4 12 1 4 13 1 4 14 1 4 15 1 4 37 1 4 38 1 4 39 1 4 40 1 4 41 1 4 42 1 4 43 1 4 65 1 4 66 1 4 67 1 4 68 1 4 69 1 4 70 1 4 71 1 4 72 1 4 73 1 4 74 1 4 75 1 4 76 1 4 77 1 4 78 1 4 79 1 4 80 1 4 81 1 4 82 1 4 83 1 4 84 1 4 85 1 4 121 1 4 122 1 4 123 1 4 124 1 4 125 1 4 126 1 4 127 1 4 149 1 4 150 1 4 151 1 4 152 1 4 153 1 4 154 1 4 155 1 4 156 1 4 157 1 4 158 1 4 159 1 4 160 1 4 161 1 4 162 1 4 163 1 4 164 1 4 165 1 4 166 1 4 167 1 4 168 1 4 169 1 4 205 1 4 206 1 4 207 1 4 208 1 4 209 1 4 210 1 4 211 1 4 212 1 4 213 1 4 214 1 4 215 1 4 216 1 4 217 1 4 218 1 4 219 1 4 220 1 4 221 1 4 222 1 4 223 1 4 224 1 4 225 1 4 261 1 4 262 1 4 263 1 4 264 1 4 265 1 4 266 1 4 267 1 4 268 1 4 269 1 4 270 1 4 271 1 4 272 1 4 273 1 4 274 1 4 275 1 4 276 1 4 277 1 4 278 1 4 279 1 4 280 1 4 281 1 4 282 1 4 283 1 4 284 1 4 285 1 4 286 1 4 287 1 4 288 1 4 289 1 4 290 1 4 291 1 4 292 1 4 293 1 4 294 1 4 295 1 5 2 1 5 9 1 5 16 1 5 17 1 5 18 1 5 19 1 5 20 1 5 21 1 5 37 1 5 44 1 5 45 1 5 46 1 5 47 1 5 48 1 5 49 1 5 65 1 5 66 1 5 67 1 5 68 1 5 69 1 5 70 1 5 86 1 5 87 1 5 88 1 5 89 1 5 90 1 5 91 1 5 92 1 5 93 1 5 94 1 5 95 1 5 96 1 5 97 1 5 98 1 5 99 1 5 100 1 5 121 1 5 128 1 5 129 1 5 130 1 5 131 1 5 132 1 5 133 1 5 149 1 5 150 1 5 151 1 5 152 1 5 153 1 5 154 1 5 170 1 5 171 1 5 172 1 5 173 1 5 174 1 5 175 1 5 176 1 5 177 1 5 178 1 5 179 1 5 180 1 5 181 1 5 182 1 5 183 1 5 184 1 5 205 1 5 206 1 5 207 1 5 208 1 5 209 1 5 210 1 5 226 1 5 227 1 5 228 1 5 229 1 5 230 1 5 231 1 5 232 1 5 233 1 5 234 1 5 235 1 5 236 1 5 237 1 5 238 1 5 239 1 5 240 1 5 261 1 5 262 1 5 263 1 5 264 1 5 265 1 5 266 1 5 267 1 5 268 1 5 269 1 5 270 1 5 271 1 5 272 1 5 273 1 5 274 1 5 275 1 5 296 1 5 297 1 5 298 1 5 299 1 5 300 1 5 301 1 5 302 1 5 303 1 5 304 1 5 305 1 5 306 1 5 307 1 5 308 1 5 309 1 5 310 1 5 311 1 5 312 1 5 313 1 5 314 1 5 315 1 6 3 1 6 10 1 6 16 1 6 22 1 6 23 1 6 24 1 6 25 1 6 26 1 6 38 1 6 44 1 6 50 1 6 51 1 6 52 1 6 53 1 6 54 1 6 65 1 6 71 1 6 72 1 6 73 1 6 74 1 6 75 1 6 86 1 6 87 1 6 88 1 6 89 1 6 90 1 6 101 1 6 102 1 6 103 1 6 104 1 6 105 1 6 106 1 6 107 1 6 108 1 6 109 1 6 110 1 6 122 1 6 128 1 6 134 1 6 135 1 6 136 1 6 137 1 6 138 1 6 149 1 6 155 1 6 156 1 6 157 1 6 158 1 6 159 1 6 170 1 6 171 1 6 172 1 6 173 1 6 174 1 6 185 1 6 186 1 6 187 1 6 188 1 6 189 1 6 190 1 6 191 1 6 192 1 6 193 1 6 194 1 6 205 1 6 211 1 6 212 1 6 213 1 6 214 1 6 215 1 6 226 1 6 227 1 6 228 1 6 229 1 6 230 1 6 241 1 6 242 1 6 243 1 6 244 1 6 245 1 6 246 1 6 247 1 6 248 1 6 249 1 6 250 1 6 261 1 6 262 1 6 263 1 6 264 1 6 265 1 6 276 1 6 277 1 6 278 1 6 279 1 6 280 1 6 281 1 6 282 1 6 283 1 6 284 1 6 285 1 6 296 1 6 297 1 6 298 1 6 299 1 6 300 1 6 301 1 6 302 1 6 303 1 6 304 1 6 305 1 6 316 1 6 317 1 6 318 1 6 319 1 6 320 1 6 321 1 6 322 1 6 323 1 6 324 1 6 325 1 7 4 1 7 11 1 7 17 1 7 22 1 7 27 1 7 28 1 7 29 1 7 30 1 7 39 1 7 45 1 7 50 1 7 55 1 7 56 1 7 57 1 7 58 1 7 66 1 7 71 1 7 76 1 7 77 1 7 78 1 7 79 1 7 86 1 7 91 1 7 92 1 7 93 1 7 94 1 7 101 1 7 102 1 7 103 1 7 104 1 7 111 1 7 112 1 7 113 1 7 114 1 7 115 1 7 116 1 7 123 1 7 129 1 7 134 1 7 139 1 7 140 1 7 141 1 7 142 1 7 150 1 7 155 1 7 160 1 7 161 1 7 162 1 7 163 1 7 170 1 7 175 1 7 176 1 7 177 1 7 178 1 7 185 1 7 186 1 7 187 1 7 188 1 7 195 1 7 196 1 7 197 1 7 198 1 7 199 1 7 200 1 7 206 1 7 211 1 7 216 1 7 217 1 7 218 1 7 219 1 7 226 1 7 231 1 7 232 1 7 233 1 7 234 1 7 241 1 7 242 1 7 243 1 7 244 1 7 251 1 7 252 1 7 253 1 7 254 1 7 255 1 7 256 1 7 261 1 7 266 1 7 267 1 7 268 1 7 269 1 7 276 1 7 277 1 7 278 1 7 279 1 7 286 1 7 287 1 7 288 1 7 289 1 7 290 1 7 291 1 7 296 1 7 297 1 7 298 1 7 299 1 7 306 1 7 307 1 7 308 1 7 309 1 7 310 1 7 311 1 7 316 1 7 317 1 7 318 1 7 319 1 7 320 1 7 321 1 7 326 1 7 327 1 7 328 1 7 329 1 8 5 1 8 12 1 8 18 1 8 23 1 8 27 1 8 31 1 8 32 1 8 33 1 8 40 1 8 46 1 8 51 1 8 55 1 8 59 1 8 60 1 8 61 1 8 67 1 8 72 1 8 76 1 8 80 1 8 81 1 8 82 1 8 87 1 8 91 1 8 95 1 8 96 1 8 97 1 8 101 1 8 105 1 8 106 1 8 107 1 8 111 1 8 112 1 8 113 1 8 117 1 8 118 1 8 119 1 8 124 1 8 130 1 8 135 1 8 139 1 8 143 1 8 144 1 8 145 1 8 151 1 8 156 1 8 160 1 8 164 1 8 165 1 8 166 1 8 171 1 8 175 1 8 179 1 8 180 1 8 181 1 8 185 1 8 189 1 8 190 1 8 191 1 8 195 1 8 196 1 8 197 1 8 201 1 8 202 1 8 203 1 8 207 1 8 212 1 8 216 1 8 220 1 8 221 1 8 222 1 8 227 1 8 231 1 8 235 1 8 236 1 8 237 1 8 241 1 8 245 1 8 246 1 8 247 1 8 251 1 8 252 1 8 253 1 8 257 1 8 258 1 8 259 1 8 262 1 8 266 1 8 270 1 8 271 1 8 272 1 8 276 1 8 280 1 8 281 1 8 282 1 8 286 1 8 287 1 8 288 1 8 292 1 8 293 1 8 294 1 8 296 1 8 300 1 8 301 1 8 302 1 8 306 1 8 307 1 8 308 1 8 312 1 8 313 1 8 314 1 8 316 1 8 317 1 8 318 1 8 322 1 8 323 1 8 324 1 8 326 1 8 327 1 8 328 1 8 330 1 9 6 1 9 13 1 9 19 1 9 24 1 9 28 1 9 31 1 9 34 1 9 35 1 9 41 1 9 47 1 9 52 1 9 56 1 9 59 1 9 62 1 9 63 1 9 68 1 9 73 1 9 77 1 9 80 1 9 83 1 9 84 1 9 88 1 9 92 1 9 95 1 9 98 1 9 99 1 9 102 1 9 105 1 9 108 1 9 109 1 9 111 1 9 114 1 9 115 1 9 117 1 9 118 1 9 120 1 9 125 1 9 131 1 9 136 1 9 140 1 9 143 1 9 146 1 9 147 1 9 152 1 9 157 1 9 161 1 9 164 1 9 167 1 9 168 1 9 172 1 9 176 1 9 179 1 9 182 1 9 183 1 9 186 1 9 189 1 9 192 1 9 193 1 9 195 1 9 198 1 9 199 1 9 201 1 9 202 1 9 204 1 9 208 1 9 213 1 9 217 1 9 220 1 9 223 1 9 224 1 9 228 1 9 232 1 9 235 1 9 238 1 9 239 1 9 242 1 9 245 1 9 248 1 9 249 1 9 251 1 9 254 1 9 255 1 9 257 1 9 258 1 9 260 1 9 263 1 9 267 1 9 270 1 9 273 1 9 274 1 9 277 1 9 280 1 9 283 1 9 284 1 9 286 1 9 289 1 9 290 1 9 292 1 9 293 1 9 295 1 9 297 1 9 300 1 9 303 1 9 304 1 9 306 1 9 309 1 9 310 1 9 312 1 9 313 1 9 315 1 9 316 1 9 319 1 9 320 1 9 322 1 9 323 1 9 325 1 9 326 1 9 327 1 9 329 1 9 330 1 10 7 1 10 14 1 10 20 1 10 25 1 10 29 1 10 32 1 10 34 1 10 36 1 10 42 1 10 48 1 10 53 1 10 57 1 10 60 1 10 62 1 10 64 1 10 69 1 10 74 1 10 78 1 10 81 1 10 83 1 10 85 1 10 89 1 10 93 1 10 96 1 10 98 1 10 100 1 10 103 1 10 106 1 10 108 1 10 110 1 10 112 1 10 114 1 10 116 1 10 117 1 10 119 1 10 120 1 10 126 1 10 132 1 10 137 1 10 141 1 10 144 1 10 146 1 10 148 1 10 153 1 10 158 1 10 162 1 10 165 1 10 167 1 10 169 1 10 173 1 10 177 1 10 180 1 10 182 1 10 184 1 10 187 1 10 190 1 10 192 1 10 194 1 10 196 1 10 198 1 10 200 1 10 201 1 10 203 1 10 204 1 10 209 1 10 214 1 10 218 1 10 221 1 10 223 1 10 225 1 10 229 1 10 233 1 10 236 1 10 238 1 10 240 1 10 243 1 10 246 1 10 248 1 10 250 1 10 252 1 10 254 1 10 256 1 10 257 1 10 259 1 10 260 1 10 264 1 10 268 1 10 271 1 10 273 1 10 275 1 10 278 1 10 281 1 10 283 1 10 285 1 10 287 1 10 289 1 10 291 1 10 292 1 10 294 1 10 295 1 10 298 1 10 301 1 10 303 1 10 305 1 10 307 1 10 309 1 10 311 1 10 312 1 10 314 1 10 315 1 10 317 1 10 319 1 10 321 1 10 322 1 10 324 1 10 325 1 10 326 1 10 328 1 10 329 1 10 330 1 11 8 1 11 15 1 11 21 1 11 26 1 11 30 1 11 33 1 11 35 1 11 36 1 11 43 1 11 49 1 11 54 1 11 58 1 11 61 1 11 63 1 11 64 1 11 70 1 11 75 1 11 79 1 11 82 1 11 84 1 11 85 1 11 90 1 11 94 1 11 97 1 11 99 1 11 100 1 11 104 1 11 107 1 11 109 1 11 110 1 11 113 1 11 115 1 11 116 1 11 118 1 11 119 1 11 120 1 11 127 1 11 133 1 11 138 1 11 142 1 11 145 1 11 147 1 11 148 1 11 154 1 11 159 1 11 163 1 11 166 1 11 168 1 11 169 1 11 174 1 11 178 1 11 181 1 11 183 1 11 184 1 11 188 1 11 191 1 11 193 1 11 194 1 11 197 1 11 199 1 11 200 1 11 202 1 11 203 1 11 204 1 11 210 1 11 215 1 11 219 1 11 222 1 11 224 1 11 225 1 11 230 1 11 234 1 11 237 1 11 239 1 11 240 1 11 244 1 11 247 1 11 249 1 11 250 1 11 253 1 11 255 1 11 256 1 11 258 1 11 259 1 11 260 1 11 265 1 11 269 1 11 272 1 11 274 1 11 275 1 11 279 1 11 282 1 11 284 1 11 285 1 11 288 1 11 290 1 11 291 1 11 293 1 11 294 1 11 295 1 11 299 1 11 302 1 11 304 1 11 305 1 11 308 1 11 310 1 11 311 1 11 313 1 11 314 1 11 315 1 11 318 1 11 320 1 11 321 1 11 323 1 11 324 1 11 325 1 11 327 1 11 328 1 11 329 1 11 330 1 12 1 1 12 2 1 12 3 1 12 4 1 12 5 1 12 6 1 12 7 1 12 8 1 12 9 1 12 10 1 12 11 1 12 12 1 12 13 1 12 14 1 12 15 1 12 16 1 12 17 1 12 18 1 12 19 1 12 20 1 12 21 1 12 22 1 12 23 1 12 24 1 12 25 1 12 26 1 12 27 1 12 28 1 12 29 1 12 30 1 12 31 1 12 32 1 12 33 1 12 34 1 12 35 1 12 36 1 12 331 1 12 332 1 12 333 1 12 334 1 12 335 1 12 336 1 12 337 1 12 338 1 12 339 1 12 340 1 12 341 1 12 342 1 12 343 1 12 344 1 12 345 1 12 346 1 12 347 1 12 348 1 12 349 1 12 350 1 12 351 1 12 352 1 12 353 1 12 354 1 12 355 1 12 356 1 12 357 1 12 358 1 12 359 1 12 360 1 12 361 1 12 362 1 12 363 1 12 364 1 12 365 1 12 366 1 12 367 1 12 368 1 12 369 1 12 370 1 12 371 1 12 372 1 12 373 1 12 374 1 12 375 1 12 376 1 12 377 1 12 378 1 12 379 1 12 380 1 12 381 1 12 382 1 12 383 1 12 384 1 12 385 1 12 386 1 12 387 1 12 388 1 12 389 1 12 390 1 12 391 1 12 392 1 12 393 1 12 394 1 12 395 1 12 396 1 12 397 1 12 398 1 12 399 1 12 400 1 12 401 1 12 402 1 12 403 1 12 404 1 12 405 1 12 406 1 12 407 1 12 408 1 12 409 1 12 410 1 12 411 1 12 412 1 12 413 1 12 414 1 13 1 1 13 2 1 13 3 1 13 4 1 13 5 1 13 6 1 13 7 1 13 8 1 13 37 1 13 38 1 13 39 1 13 40 1 13 41 1 13 42 1 13 43 1 13 44 1 13 45 1 13 46 1 13 47 1 13 48 1 13 49 1 13 50 1 13 51 1 13 52 1 13 53 1 13 54 1 13 55 1 13 56 1 13 57 1 13 58 1 13 59 1 13 60 1 13 61 1 13 62 1 13 63 1 13 64 1 13 331 1 13 332 1 13 333 1 13 334 1 13 335 1 13 336 1 13 337 1 13 338 1 13 339 1 13 340 1 13 341 1 13 342 1 13 343 1 13 344 1 13 345 1 13 346 1 13 347 1 13 348 1 13 349 1 13 350 1 13 351 1 13 352 1 13 353 1 13 354 1 13 355 1 13 356 1 13 357 1 13 358 1 13 415 1 13 416 1 13 417 1 13 418 1 13 419 1 13 420 1 13 421 1 13 422 1 13 423 1 13 424 1 13 425 1 13 426 1 13 427 1 13 428 1 13 429 1 13 430 1 13 431 1 13 432 1 13 433 1 13 434 1 13 435 1 13 436 1 13 437 1 13 438 1 13 439 1 13 440 1 13 441 1 13 442 1 13 443 1 13 444 1 13 445 1 13 446 1 13 447 1 13 448 1 13 449 1 13 450 1 13 451 1 13 452 1 13 453 1 13 454 1 13 455 1 13 456 1 13 457 1 13 458 1 13 459 1 13 460 1 13 461 1 13 462 1 13 463 1 13 464 1 13 465 1 13 466 1 13 467 1 13 468 1 13 469 1 13 470 1 14 1 1 14 9 1 14 10 1 14 11 1 14 12 1 14 13 1 14 14 1 14 15 1 14 37 1 14 38 1 14 39 1 14 40 1 14 41 1 14 42 1 14 43 1 14 65 1 14 66 1 14 67 1 14 68 1 14 69 1 14 70 1 14 71 1 14 72 1 14 73 1 14 74 1 14 75 1 14 76 1 14 77 1 14 78 1 14 79 1 14 80 1 14 81 1 14 82 1 14 83 1 14 84 1 14 85 1 14 331 1 14 332 1 14 333 1 14 334 1 14 335 1 14 336 1 14 337 1 14 359 1 14 360 1 14 361 1 14 362 1 14 363 1 14 364 1 14 365 1 14 366 1 14 367 1 14 368 1 14 369 1 14 370 1 14 371 1 14 372 1 14 373 1 14 374 1 14 375 1 14 376 1 14 377 1 14 378 1 14 379 1 14 415 1 14 416 1 14 417 1 14 418 1 14 419 1 14 420 1 14 421 1 14 422 1 14 423 1 14 424 1 14 425 1 14 426 1 14 427 1 14 428 1 14 429 1 14 430 1 14 431 1 14 432 1 14 433 1 14 434 1 14 435 1 14 471 1 14 472 1 14 473 1 14 474 1 14 475 1 14 476 1 14 477 1 14 478 1 14 479 1 14 480 1 14 481 1 14 482 1 14 483 1 14 484 1 14 485 1 14 486 1 14 487 1 14 488 1 14 489 1 14 490 1 14 491 1 14 492 1 14 493 1 14 494 1 14 495 1 14 496 1 14 497 1 14 498 1 14 499 1 14 500 1 14 501 1 14 502 1 14 503 1 14 504 1 14 505 1 15 2 1 15 9 1 15 16 1 15 17 1 15 18 1 15 19 1 15 20 1 15 21 1 15 37 1 15 44 1 15 45 1 15 46 1 15 47 1 15 48 1 15 49 1 15 65 1 15 66 1 15 67 1 15 68 1 15 69 1 15 70 1 15 86 1 15 87 1 15 88 1 15 89 1 15 90 1 15 91 1 15 92 1 15 93 1 15 94 1 15 95 1 15 96 1 15 97 1 15 98 1 15 99 1 15 100 1 15 331 1 15 338 1 15 339 1 15 340 1 15 341 1 15 342 1 15 343 1 15 359 1 15 360 1 15 361 1 15 362 1 15 363 1 15 364 1 15 380 1 15 381 1 15 382 1 15 383 1 15 384 1 15 385 1 15 386 1 15 387 1 15 388 1 15 389 1 15 390 1 15 391 1 15 392 1 15 393 1 15 394 1 15 415 1 15 416 1 15 417 1 15 418 1 15 419 1 15 420 1 15 436 1 15 437 1 15 438 1 15 439 1 15 440 1 15 441 1 15 442 1 15 443 1 15 444 1 15 445 1 15 446 1 15 447 1 15 448 1 15 449 1 15 450 1 15 471 1 15 472 1 15 473 1 15 474 1 15 475 1 15 476 1 15 477 1 15 478 1 15 479 1 15 480 1 15 481 1 15 482 1 15 483 1 15 484 1 15 485 1 15 506 1 15 507 1 15 508 1 15 509 1 15 510 1 15 511 1 15 512 1 15 513 1 15 514 1 15 515 1 15 516 1 15 517 1 15 518 1 15 519 1 15 520 1 15 521 1 15 522 1 15 523 1 15 524 1 15 525 1 16 3 1 16 10 1 16 16 1 16 22 1 16 23 1 16 24 1 16 25 1 16 26 1 16 38 1 16 44 1 16 50 1 16 51 1 16 52 1 16 53 1 16 54 1 16 65 1 16 71 1 16 72 1 16 73 1 16 74 1 16 75 1 16 86 1 16 87 1 16 88 1 16 89 1 16 90 1 16 101 1 16 102 1 16 103 1 16 104 1 16 105 1 16 106 1 16 107 1 16 108 1 16 109 1 16 110 1 16 332 1 16 338 1 16 344 1 16 345 1 16 346 1 16 347 1 16 348 1 16 359 1 16 365 1 16 366 1 16 367 1 16 368 1 16 369 1 16 380 1 16 381 1 16 382 1 16 383 1 16 384 1 16 395 1 16 396 1 16 397 1 16 398 1 16 399 1 16 400 1 16 401 1 16 402 1 16 403 1 16 404 1 16 415 1 16 421 1 16 422 1 16 423 1 16 424 1 16 425 1 16 436 1 16 437 1 16 438 1 16 439 1 16 440 1 16 451 1 16 452 1 16 453 1 16 454 1 16 455 1 16 456 1 16 457 1 16 458 1 16 459 1 16 460 1 16 471 1 16 472 1 16 473 1 16 474 1 16 475 1 16 486 1 16 487 1 16 488 1 16 489 1 16 490 1 16 491 1 16 492 1 16 493 1 16 494 1 16 495 1 16 506 1 16 507 1 16 508 1 16 509 1 16 510 1 16 511 1 16 512 1 16 513 1 16 514 1 16 515 1 16 526 1 16 527 1 16 528 1 16 529 1 16 530 1 16 531 1 16 532 1 16 533 1 16 534 1 16 535 1 17 4 1 17 11 1 17 17 1 17 22 1 17 27 1 17 28 1 17 29 1 17 30 1 17 39 1 17 45 1 17 50 1 17 55 1 17 56 1 17 57 1 17 58 1 17 66 1 17 71 1 17 76 1 17 77 1 17 78 1 17 79 1 17 86 1 17 91 1 17 92 1 17 93 1 17 94 1 17 101 1 17 102 1 17 103 1 17 104 1 17 111 1 17 112 1 17 113 1 17 114 1 17 115 1 17 116 1 17 333 1 17 339 1 17 344 1 17 349 1 17 350 1 17 351 1 17 352 1 17 360 1 17 365 1 17 370 1 17 371 1 17 372 1 17 373 1 17 380 1 17 385 1 17 386 1 17 387 1 17 388 1 17 395 1 17 396 1 17 397 1 17 398 1 17 405 1 17 406 1 17 407 1 17 408 1 17 409 1 17 410 1 17 416 1 17 421 1 17 426 1 17 427 1 17 428 1 17 429 1 17 436 1 17 441 1 17 442 1 17 443 1 17 444 1 17 451 1 17 452 1 17 453 1 17 454 1 17 461 1 17 462 1 17 463 1 17 464 1 17 465 1 17 466 1 17 471 1 17 476 1 17 477 1 17 478 1 17 479 1 17 486 1 17 487 1 17 488 1 17 489 1 17 496 1 17 497 1 17 498 1 17 499 1 17 500 1 17 501 1 17 506 1 17 507 1 17 508 1 17 509 1 17 516 1 17 517 1 17 518 1 17 519 1 17 520 1 17 521 1 17 526 1 17 527 1 17 528 1 17 529 1 17 530 1 17 531 1 17 536 1 17 537 1 17 538 1 17 539 1 18 5 1 18 12 1 18 18 1 18 23 1 18 27 1 18 31 1 18 32 1 18 33 1 18 40 1 18 46 1 18 51 1 18 55 1 18 59 1 18 60 1 18 61 1 18 67 1 18 72 1 18 76 1 18 80 1 18 81 1 18 82 1 18 87 1 18 91 1 18 95 1 18 96 1 18 97 1 18 101 1 18 105 1 18 106 1 18 107 1 18 111 1 18 112 1 18 113 1 18 117 1 18 118 1 18 119 1 18 334 1 18 340 1 18 345 1 18 349 1 18 353 1 18 354 1 18 355 1 18 361 1 18 366 1 18 370 1 18 374 1 18 375 1 18 376 1 18 381 1 18 385 1 18 389 1 18 390 1 18 391 1 18 395 1 18 399 1 18 400 1 18 401 1 18 405 1 18 406 1 18 407 1 18 411 1 18 412 1 18 413 1 18 417 1 18 422 1 18 426 1 18 430 1 18 431 1 18 432 1 18 437 1 18 441 1 18 445 1 18 446 1 18 447 1 18 451 1 18 455 1 18 456 1 18 457 1 18 461 1 18 462 1 18 463 1 18 467 1 18 468 1 18 469 1 18 472 1 18 476 1 18 480 1 18 481 1 18 482 1 18 486 1 18 490 1 18 491 1 18 492 1 18 496 1 18 497 1 18 498 1 18 502 1 18 503 1 18 504 1 18 506 1 18 510 1 18 511 1 18 512 1 18 516 1 18 517 1 18 518 1 18 522 1 18 523 1 18 524 1 18 526 1 18 527 1 18 528 1 18 532 1 18 533 1 18 534 1 18 536 1 18 537 1 18 538 1 18 540 1 19 6 1 19 13 1 19 19 1 19 24 1 19 28 1 19 31 1 19 34 1 19 35 1 19 41 1 19 47 1 19 52 1 19 56 1 19 59 1 19 62 1 19 63 1 19 68 1 19 73 1 19 77 1 19 80 1 19 83 1 19 84 1 19 88 1 19 92 1 19 95 1 19 98 1 19 99 1 19 102 1 19 105 1 19 108 1 19 109 1 19 111 1 19 114 1 19 115 1 19 117 1 19 118 1 19 120 1 19 335 1 19 341 1 19 346 1 19 350 1 19 353 1 19 356 1 19 357 1 19 362 1 19 367 1 19 371 1 19 374 1 19 377 1 19 378 1 19 382 1 19 386 1 19 389 1 19 392 1 19 393 1 19 396 1 19 399 1 19 402 1 19 403 1 19 405 1 19 408 1 19 409 1 19 411 1 19 412 1 19 414 1 19 418 1 19 423 1 19 427 1 19 430 1 19 433 1 19 434 1 19 438 1 19 442 1 19 445 1 19 448 1 19 449 1 19 452 1 19 455 1 19 458 1 19 459 1 19 461 1 19 464 1 19 465 1 19 467 1 19 468 1 19 470 1 19 473 1 19 477 1 19 480 1 19 483 1 19 484 1 19 487 1 19 490 1 19 493 1 19 494 1 19 496 1 19 499 1 19 500 1 19 502 1 19 503 1 19 505 1 19 507 1 19 510 1 19 513 1 19 514 1 19 516 1 19 519 1 19 520 1 19 522 1 19 523 1 19 525 1 19 526 1 19 529 1 19 530 1 19 532 1 19 533 1 19 535 1 19 536 1 19 537 1 19 539 1 19 540 1 20 7 1 20 14 1 20 20 1 20 25 1 20 29 1 20 32 1 20 34 1 20 36 1 20 42 1 20 48 1 20 53 1 20 57 1 20 60 1 20 62 1 20 64 1 20 69 1 20 74 1 20 78 1 20 81 1 20 83 1 20 85 1 20 89 1 20 93 1 20 96 1 20 98 1 20 100 1 20 103 1 20 106 1 20 108 1 20 110 1 20 112 1 20 114 1 20 116 1 20 117 1 20 119 1 20 120 1 20 336 1 20 342 1 20 347 1 20 351 1 20 354 1 20 356 1 20 358 1 20 363 1 20 368 1 20 372 1 20 375 1 20 377 1 20 379 1 20 383 1 20 387 1 20 390 1 20 392 1 20 394 1 20 397 1 20 400 1 20 402 1 20 404 1 20 406 1 20 408 1 20 410 1 20 411 1 20 413 1 20 414 1 20 419 1 20 424 1 20 428 1 20 431 1 20 433 1 20 435 1 20 439 1 20 443 1 20 446 1 20 448 1 20 450 1 20 453 1 20 456 1 20 458 1 20 460 1 20 462 1 20 464 1 20 466 1 20 467 1 20 469 1 20 470 1 20 474 1 20 478 1 20 481 1 20 483 1 20 485 1 20 488 1 20 491 1 20 493 1 20 495 1 20 497 1 20 499 1 20 501 1 20 502 1 20 504 1 20 505 1 20 508 1 20 511 1 20 513 1 20 515 1 20 517 1 20 519 1 20 521 1 20 522 1 20 524 1 20 525 1 20 527 1 20 529 1 20 531 1 20 532 1 20 534 1 20 535 1 20 536 1 20 538 1 20 539 1 20 540 1 21 8 1 21 15 1 21 21 1 21 26 1 21 30 1 21 33 1 21 35 1 21 36 1 21 43 1 21 49 1 21 54 1 21 58 1 21 61 1 21 63 1 21 64 1 21 70 1 21 75 1 21 79 1 21 82 1 21 84 1 21 85 1 21 90 1 21 94 1 21 97 1 21 99 1 21 100 1 21 104 1 21 107 1 21 109 1 21 110 1 21 113 1 21 115 1 21 116 1 21 118 1 21 119 1 21 120 1 21 337 1 21 343 1 21 348 1 21 352 1 21 355 1 21 357 1 21 358 1 21 364 1 21 369 1 21 373 1 21 376 1 21 378 1 21 379 1 21 384 1 21 388 1 21 391 1 21 393 1 21 394 1 21 398 1 21 401 1 21 403 1 21 404 1 21 407 1 21 409 1 21 410 1 21 412 1 21 413 1 21 414 1 21 420 1 21 425 1 21 429 1 21 432 1 21 434 1 21 435 1 21 440 1 21 444 1 21 447 1 21 449 1 21 450 1 21 454 1 21 457 1 21 459 1 21 460 1 21 463 1 21 465 1 21 466 1 21 468 1 21 469 1 21 470 1 21 475 1 21 479 1 21 482 1 21 484 1 21 485 1 21 489 1 21 492 1 21 494 1 21 495 1 21 498 1 21 500 1 21 501 1 21 503 1 21 504 1 21 505 1 21 509 1 21 512 1 21 514 1 21 515 1 21 518 1 21 520 1 21 521 1 21 523 1 21 524 1 21 525 1 21 528 1 21 530 1 21 531 1 21 533 1 21 534 1 21 535 1 21 537 1 21 538 1 21 539 1 21 540 1 22 1 1 22 2 1 22 3 1 22 4 1 22 5 1 22 6 1 22 7 1 22 8 1 22 121 1 22 122 1 22 123 1 22 124 1 22 125 1 22 126 1 22 127 1 22 128 1 22 129 1 22 130 1 22 131 1 22 132 1 22 133 1 22 134 1 22 135 1 22 136 1 22 137 1 22 138 1 22 139 1 22 140 1 22 141 1 22 142 1 22 143 1 22 144 1 22 145 1 22 146 1 22 147 1 22 148 1 22 331 1 22 332 1 22 333 1 22 334 1 22 335 1 22 336 1 22 337 1 22 338 1 22 339 1 22 340 1 22 341 1 22 342 1 22 343 1 22 344 1 22 345 1 22 346 1 22 347 1 22 348 1 22 349 1 22 350 1 22 351 1 22 352 1 22 353 1 22 354 1 22 355 1 22 356 1 22 357 1 22 358 1 22 541 1 22 542 1 22 543 1 22 544 1 22 545 1 22 546 1 22 547 1 22 548 1 22 549 1 22 550 1 22 551 1 22 552 1 22 553 1 22 554 1 22 555 1 22 556 1 22 557 1 22 558 1 22 559 1 22 560 1 22 561 1 22 562 1 22 563 1 22 564 1 22 565 1 22 566 1 22 567 1 22 568 1 22 569 1 22 570 1 22 571 1 22 572 1 22 573 1 22 574 1 22 575 1 22 576 1 22 577 1 22 578 1 22 579 1 22 580 1 22 581 1 22 582 1 22 583 1 22 584 1 22 585 1 22 586 1 22 587 1 22 588 1 22 589 1 22 590 1 22 591 1 22 592 1 22 593 1 22 594 1 22 595 1 22 596 1 23 1 1 23 9 1 23 10 1 23 11 1 23 12 1 23 13 1 23 14 1 23 15 1 23 121 1 23 122 1 23 123 1 23 124 1 23 125 1 23 126 1 23 127 1 23 149 1 23 150 1 23 151 1 23 152 1 23 153 1 23 154 1 23 155 1 23 156 1 23 157 1 23 158 1 23 159 1 23 160 1 23 161 1 23 162 1 23 163 1 23 164 1 23 165 1 23 166 1 23 167 1 23 168 1 23 169 1 23 331 1 23 332 1 23 333 1 23 334 1 23 335 1 23 336 1 23 337 1 23 359 1 23 360 1 23 361 1 23 362 1 23 363 1 23 364 1 23 365 1 23 366 1 23 367 1 23 368 1 23 369 1 23 370 1 23 371 1 23 372 1 23 373 1 23 374 1 23 375 1 23 376 1 23 377 1 23 378 1 23 379 1 23 541 1 23 542 1 23 543 1 23 544 1 23 545 1 23 546 1 23 547 1 23 548 1 23 549 1 23 550 1 23 551 1 23 552 1 23 553 1 23 554 1 23 555 1 23 556 1 23 557 1 23 558 1 23 559 1 23 560 1 23 561 1 23 597 1 23 598 1 23 599 1 23 600 1 23 601 1 23 602 1 23 603 1 23 604 1 23 605 1 23 606 1 23 607 1 23 608 1 23 609 1 23 610 1 23 611 1 23 612 1 23 613 1 23 614 1 23 615 1 23 616 1 23 617 1 23 618 1 23 619 1 23 620 1 23 621 1 23 622 1 23 623 1 23 624 1 23 625 1 23 626 1 23 627 1 23 628 1 23 629 1 23 630 1 23 631 1 24 2 1 24 9 1 24 16 1 24 17 1 24 18 1 24 19 1 24 20 1 24 21 1 24 121 1 24 128 1 24 129 1 24 130 1 24 131 1 24 132 1 24 133 1 24 149 1 24 150 1 24 151 1 24 152 1 24 153 1 24 154 1 24 170 1 24 171 1 24 172 1 24 173 1 24 174 1 24 175 1 24 176 1 24 177 1 24 178 1 24 179 1 24 180 1 24 181 1 24 182 1 24 183 1 24 184 1 24 331 1 24 338 1 24 339 1 24 340 1 24 341 1 24 342 1 24 343 1 24 359 1 24 360 1 24 361 1 24 362 1 24 363 1 24 364 1 24 380 1 24 381 1 24 382 1 24 383 1 24 384 1 24 385 1 24 386 1 24 387 1 24 388 1 24 389 1 24 390 1 24 391 1 24 392 1 24 393 1 24 394 1 24 541 1 24 542 1 24 543 1 24 544 1 24 545 1 24 546 1 24 562 1 24 563 1 24 564 1 24 565 1 24 566 1 24 567 1 24 568 1 24 569 1 24 570 1 24 571 1 24 572 1 24 573 1 24 574 1 24 575 1 24 576 1 24 597 1 24 598 1 24 599 1 24 600 1 24 601 1 24 602 1 24 603 1 24 604 1 24 605 1 24 606 1 24 607 1 24 608 1 24 609 1 24 610 1 24 611 1 24 632 1 24 633 1 24 634 1 24 635 1 24 636 1 24 637 1 24 638 1 24 639 1 24 640 1 24 641 1 24 642 1 24 643 1 24 644 1 24 645 1 24 646 1 24 647 1 24 648 1 24 649 1 24 650 1 24 651 1 25 3 1 25 10 1 25 16 1 25 22 1 25 23 1 25 24 1 25 25 1 25 26 1 25 122 1 25 128 1 25 134 1 25 135 1 25 136 1 25 137 1 25 138 1 25 149 1 25 155 1 25 156 1 25 157 1 25 158 1 25 159 1 25 170 1 25 171 1 25 172 1 25 173 1 25 174 1 25 185 1 25 186 1 25 187 1 25 188 1 25 189 1 25 190 1 25 191 1 25 192 1 25 193 1 25 194 1 25 332 1 25 338 1 25 344 1 25 345 1 25 346 1 25 347 1 25 348 1 25 359 1 25 365 1 25 366 1 25 367 1 25 368 1 25 369 1 25 380 1 25 381 1 25 382 1 25 383 1 25 384 1 25 395 1 25 396 1 25 397 1 25 398 1 25 399 1 25 400 1 25 401 1 25 402 1 25 403 1 25 404 1 25 541 1 25 547 1 25 548 1 25 549 1 25 550 1 25 551 1 25 562 1 25 563 1 25 564 1 25 565 1 25 566 1 25 577 1 25 578 1 25 579 1 25 580 1 25 581 1 25 582 1 25 583 1 25 584 1 25 585 1 25 586 1 25 597 1 25 598 1 25 599 1 25 600 1 25 601 1 25 612 1 25 613 1 25 614 1 25 615 1 25 616 1 25 617 1 25 618 1 25 619 1 25 620 1 25 621 1 25 632 1 25 633 1 25 634 1 25 635 1 25 636 1 25 637 1 25 638 1 25 639 1 25 640 1 25 641 1 25 652 1 25 653 1 25 654 1 25 655 1 25 656 1 25 657 1 25 658 1 25 659 1 25 660 1 25 661 1 26 4 1 26 11 1 26 17 1 26 22 1 26 27 1 26 28 1 26 29 1 26 30 1 26 123 1 26 129 1 26 134 1 26 139 1 26 140 1 26 141 1 26 142 1 26 150 1 26 155 1 26 160 1 26 161 1 26 162 1 26 163 1 26 170 1 26 175 1 26 176 1 26 177 1 26 178 1 26 185 1 26 186 1 26 187 1 26 188 1 26 195 1 26 196 1 26 197 1 26 198 1 26 199 1 26 200 1 26 333 1 26 339 1 26 344 1 26 349 1 26 350 1 26 351 1 26 352 1 26 360 1 26 365 1 26 370 1 26 371 1 26 372 1 26 373 1 26 380 1 26 385 1 26 386 1 26 387 1 26 388 1 26 395 1 26 396 1 26 397 1 26 398 1 26 405 1 26 406 1 26 407 1 26 408 1 26 409 1 26 410 1 26 542 1 26 547 1 26 552 1 26 553 1 26 554 1 26 555 1 26 562 1 26 567 1 26 568 1 26 569 1 26 570 1 26 577 1 26 578 1 26 579 1 26 580 1 26 587 1 26 588 1 26 589 1 26 590 1 26 591 1 26 592 1 26 597 1 26 602 1 26 603 1 26 604 1 26 605 1 26 612 1 26 613 1 26 614 1 26 615 1 26 622 1 26 623 1 26 624 1 26 625 1 26 626 1 26 627 1 26 632 1 26 633 1 26 634 1 26 635 1 26 642 1 26 643 1 26 644 1 26 645 1 26 646 1 26 647 1 26 652 1 26 653 1 26 654 1 26 655 1 26 656 1 26 657 1 26 662 1 26 663 1 26 664 1 26 665 1 27 5 1 27 12 1 27 18 1 27 23 1 27 27 1 27 31 1 27 32 1 27 33 1 27 124 1 27 130 1 27 135 1 27 139 1 27 143 1 27 144 1 27 145 1 27 151 1 27 156 1 27 160 1 27 164 1 27 165 1 27 166 1 27 171 1 27 175 1 27 179 1 27 180 1 27 181 1 27 185 1 27 189 1 27 190 1 27 191 1 27 195 1 27 196 1 27 197 1 27 201 1 27 202 1 27 203 1 27 334 1 27 340 1 27 345 1 27 349 1 27 353 1 27 354 1 27 355 1 27 361 1 27 366 1 27 370 1 27 374 1 27 375 1 27 376 1 27 381 1 27 385 1 27 389 1 27 390 1 27 391 1 27 395 1 27 399 1 27 400 1 27 401 1 27 405 1 27 406 1 27 407 1 27 411 1 27 412 1 27 413 1 27 543 1 27 548 1 27 552 1 27 556 1 27 557 1 27 558 1 27 563 1 27 567 1 27 571 1 27 572 1 27 573 1 27 577 1 27 581 1 27 582 1 27 583 1 27 587 1 27 588 1 27 589 1 27 593 1 27 594 1 27 595 1 27 598 1 27 602 1 27 606 1 27 607 1 27 608 1 27 612 1 27 616 1 27 617 1 27 618 1 27 622 1 27 623 1 27 624 1 27 628 1 27 629 1 27 630 1 27 632 1 27 636 1 27 637 1 27 638 1 27 642 1 27 643 1 27 644 1 27 648 1 27 649 1 27 650 1 27 652 1 27 653 1 27 654 1 27 658 1 27 659 1 27 660 1 27 662 1 27 663 1 27 664 1 27 666 1 28 6 1 28 13 1 28 19 1 28 24 1 28 28 1 28 31 1 28 34 1 28 35 1 28 125 1 28 131 1 28 136 1 28 140 1 28 143 1 28 146 1 28 147 1 28 152 1 28 157 1 28 161 1 28 164 1 28 167 1 28 168 1 28 172 1 28 176 1 28 179 1 28 182 1 28 183 1 28 186 1 28 189 1 28 192 1 28 193 1 28 195 1 28 198 1 28 199 1 28 201 1 28 202 1 28 204 1 28 335 1 28 341 1 28 346 1 28 350 1 28 353 1 28 356 1 28 357 1 28 362 1 28 367 1 28 371 1 28 374 1 28 377 1 28 378 1 28 382 1 28 386 1 28 389 1 28 392 1 28 393 1 28 396 1 28 399 1 28 402 1 28 403 1 28 405 1 28 408 1 28 409 1 28 411 1 28 412 1 28 414 1 28 544 1 28 549 1 28 553 1 28 556 1 28 559 1 28 560 1 28 564 1 28 568 1 28 571 1 28 574 1 28 575 1 28 578 1 28 581 1 28 584 1 28 585 1 28 587 1 28 590 1 28 591 1 28 593 1 28 594 1 28 596 1 28 599 1 28 603 1 28 606 1 28 609 1 28 610 1 28 613 1 28 616 1 28 619 1 28 620 1 28 622 1 28 625 1 28 626 1 28 628 1 28 629 1 28 631 1 28 633 1 28 636 1 28 639 1 28 640 1 28 642 1 28 645 1 28 646 1 28 648 1 28 649 1 28 651 1 28 652 1 28 655 1 28 656 1 28 658 1 28 659 1 28 661 1 28 662 1 28 663 1 28 665 1 28 666 1 29 7 1 29 14 1 29 20 1 29 25 1 29 29 1 29 32 1 29 34 1 29 36 1 29 126 1 29 132 1 29 137 1 29 141 1 29 144 1 29 146 1 29 148 1 29 153 1 29 158 1 29 162 1 29 165 1 29 167 1 29 169 1 29 173 1 29 177 1 29 180 1 29 182 1 29 184 1 29 187 1 29 190 1 29 192 1 29 194 1 29 196 1 29 198 1 29 200 1 29 201 1 29 203 1 29 204 1 29 336 1 29 342 1 29 347 1 29 351 1 29 354 1 29 356 1 29 358 1 29 363 1 29 368 1 29 372 1 29 375 1 29 377 1 29 379 1 29 383 1 29 387 1 29 390 1 29 392 1 29 394 1 29 397 1 29 400 1 29 402 1 29 404 1 29 406 1 29 408 1 29 410 1 29 411 1 29 413 1 29 414 1 29 545 1 29 550 1 29 554 1 29 557 1 29 559 1 29 561 1 29 565 1 29 569 1 29 572 1 29 574 1 29 576 1 29 579 1 29 582 1 29 584 1 29 586 1 29 588 1 29 590 1 29 592 1 29 593 1 29 595 1 29 596 1 29 600 1 29 604 1 29 607 1 29 609 1 29 611 1 29 614 1 29 617 1 29 619 1 29 621 1 29 623 1 29 625 1 29 627 1 29 628 1 29 630 1 29 631 1 29 634 1 29 637 1 29 639 1 29 641 1 29 643 1 29 645 1 29 647 1 29 648 1 29 650 1 29 651 1 29 653 1 29 655 1 29 657 1 29 658 1 29 660 1 29 661 1 29 662 1 29 664 1 29 665 1 29 666 1 30 8 1 30 15 1 30 21 1 30 26 1 30 30 1 30 33 1 30 35 1 30 36 1 30 127 1 30 133 1 30 138 1 30 142 1 30 145 1 30 147 1 30 148 1 30 154 1 30 159 1 30 163 1 30 166 1 30 168 1 30 169 1 30 174 1 30 178 1 30 181 1 30 183 1 30 184 1 30 188 1 30 191 1 30 193 1 30 194 1 30 197 1 30 199 1 30 200 1 30 202 1 30 203 1 30 204 1 30 337 1 30 343 1 30 348 1 30 352 1 30 355 1 30 357 1 30 358 1 30 364 1 30 369 1 30 373 1 30 376 1 30 378 1 30 379 1 30 384 1 30 388 1 30 391 1 30 393 1 30 394 1 30 398 1 30 401 1 30 403 1 30 404 1 30 407 1 30 409 1 30 410 1 30 412 1 30 413 1 30 414 1 30 546 1 30 551 1 30 555 1 30 558 1 30 560 1 30 561 1 30 566 1 30 570 1 30 573 1 30 575 1 30 576 1 30 580 1 30 583 1 30 585 1 30 586 1 30 589 1 30 591 1 30 592 1 30 594 1 30 595 1 30 596 1 30 601 1 30 605 1 30 608 1 30 610 1 30 611 1 30 615 1 30 618 1 30 620 1 30 621 1 30 624 1 30 626 1 30 627 1 30 629 1 30 630 1 30 631 1 30 635 1 30 638 1 30 640 1 30 641 1 30 644 1 30 646 1 30 647 1 30 649 1 30 650 1 30 651 1 30 654 1 30 656 1 30 657 1 30 659 1 30 660 1 30 661 1 30 663 1 30 664 1 30 665 1 30 666 1 31 1 1 31 37 1 31 38 1 31 39 1 31 40 1 31 41 1 31 42 1 31 43 1 31 121 1 31 122 1 31 123 1 31 124 1 31 125 1 31 126 1 31 127 1 31 205 1 31 206 1 31 207 1 31 208 1 31 209 1 31 210 1 31 211 1 31 212 1 31 213 1 31 214 1 31 215 1 31 216 1 31 217 1 31 218 1 31 219 1 31 220 1 31 221 1 31 222 1 31 223 1 31 224 1 31 225 1 31 331 1 31 332 1 31 333 1 31 334 1 31 335 1 31 336 1 31 337 1 31 415 1 31 416 1 31 417 1 31 418 1 31 419 1 31 420 1 31 421 1 31 422 1 31 423 1 31 424 1 31 425 1 31 426 1 31 427 1 31 428 1 31 429 1 31 430 1 31 431 1 31 432 1 31 433 1 31 434 1 31 435 1 31 541 1 31 542 1 31 543 1 31 544 1 31 545 1 31 546 1 31 547 1 31 548 1 31 549 1 31 550 1 31 551 1 31 552 1 31 553 1 31 554 1 31 555 1 31 556 1 31 557 1 31 558 1 31 559 1 31 560 1 31 561 1 31 667 1 31 668 1 31 669 1 31 670 1 31 671 1 31 672 1 31 673 1 31 674 1 31 675 1 31 676 1 31 677 1 31 678 1 31 679 1 31 680 1 31 681 1 31 682 1 31 683 1 31 684 1 31 685 1 31 686 1 31 687 1 31 688 1 31 689 1 31 690 1 31 691 1 31 692 1 31 693 1 31 694 1 31 695 1 31 696 1 31 697 1 31 698 1 31 699 1 31 700 1 31 701 1 32 2 1 32 37 1 32 44 1 32 45 1 32 46 1 32 47 1 32 48 1 32 49 1 32 121 1 32 128 1 32 129 1 32 130 1 32 131 1 32 132 1 32 133 1 32 205 1 32 206 1 32 207 1 32 208 1 32 209 1 32 210 1 32 226 1 32 227 1 32 228 1 32 229 1 32 230 1 32 231 1 32 232 1 32 233 1 32 234 1 32 235 1 32 236 1 32 237 1 32 238 1 32 239 1 32 240 1 32 331 1 32 338 1 32 339 1 32 340 1 32 341 1 32 342 1 32 343 1 32 415 1 32 416 1 32 417 1 32 418 1 32 419 1 32 420 1 32 436 1 32 437 1 32 438 1 32 439 1 32 440 1 32 441 1 32 442 1 32 443 1 32 444 1 32 445 1 32 446 1 32 447 1 32 448 1 32 449 1 32 450 1 32 541 1 32 542 1 32 543 1 32 544 1 32 545 1 32 546 1 32 562 1 32 563 1 32 564 1 32 565 1 32 566 1 32 567 1 32 568 1 32 569 1 32 570 1 32 571 1 32 572 1 32 573 1 32 574 1 32 575 1 32 576 1 32 667 1 32 668 1 32 669 1 32 670 1 32 671 1 32 672 1 32 673 1 32 674 1 32 675 1 32 676 1 32 677 1 32 678 1 32 679 1 32 680 1 32 681 1 32 702 1 32 703 1 32 704 1 32 705 1 32 706 1 32 707 1 32 708 1 32 709 1 32 710 1 32 711 1 32 712 1 32 713 1 32 714 1 32 715 1 32 716 1 32 717 1 32 718 1 32 719 1 32 720 1 32 721 1 33 3 1 33 38 1 33 44 1 33 50 1 33 51 1 33 52 1 33 53 1 33 54 1 33 122 1 33 128 1 33 134 1 33 135 1 33 136 1 33 137 1 33 138 1 33 205 1 33 211 1 33 212 1 33 213 1 33 214 1 33 215 1 33 226 1 33 227 1 33 228 1 33 229 1 33 230 1 33 241 1 33 242 1 33 243 1 33 244 1 33 245 1 33 246 1 33 247 1 33 248 1 33 249 1 33 250 1 33 332 1 33 338 1 33 344 1 33 345 1 33 346 1 33 347 1 33 348 1 33 415 1 33 421 1 33 422 1 33 423 1 33 424 1 33 425 1 33 436 1 33 437 1 33 438 1 33 439 1 33 440 1 33 451 1 33 452 1 33 453 1 33 454 1 33 455 1 33 456 1 33 457 1 33 458 1 33 459 1 33 460 1 33 541 1 33 547 1 33 548 1 33 549 1 33 550 1 33 551 1 33 562 1 33 563 1 33 564 1 33 565 1 33 566 1 33 577 1 33 578 1 33 579 1 33 580 1 33 581 1 33 582 1 33 583 1 33 584 1 33 585 1 33 586 1 33 667 1 33 668 1 33 669 1 33 670 1 33 671 1 33 682 1 33 683 1 33 684 1 33 685 1 33 686 1 33 687 1 33 688 1 33 689 1 33 690 1 33 691 1 33 702 1 33 703 1 33 704 1 33 705 1 33 706 1 33 707 1 33 708 1 33 709 1 33 710 1 33 711 1 33 722 1 33 723 1 33 724 1 33 725 1 33 726 1 33 727 1 33 728 1 33 729 1 33 730 1 33 731 1 34 4 1 34 39 1 34 45 1 34 50 1 34 55 1 34 56 1 34 57 1 34 58 1 34 123 1 34 129 1 34 134 1 34 139 1 34 140 1 34 141 1 34 142 1 34 206 1 34 211 1 34 216 1 34 217 1 34 218 1 34 219 1 34 226 1 34 231 1 34 232 1 34 233 1 34 234 1 34 241 1 34 242 1 34 243 1 34 244 1 34 251 1 34 252 1 34 253 1 34 254 1 34 255 1 34 256 1 34 333 1 34 339 1 34 344 1 34 349 1 34 350 1 34 351 1 34 352 1 34 416 1 34 421 1 34 426 1 34 427 1 34 428 1 34 429 1 34 436 1 34 441 1 34 442 1 34 443 1 34 444 1 34 451 1 34 452 1 34 453 1 34 454 1 34 461 1 34 462 1 34 463 1 34 464 1 34 465 1 34 466 1 34 542 1 34 547 1 34 552 1 34 553 1 34 554 1 34 555 1 34 562 1 34 567 1 34 568 1 34 569 1 34 570 1 34 577 1 34 578 1 34 579 1 34 580 1 34 587 1 34 588 1 34 589 1 34 590 1 34 591 1 34 592 1 34 667 1 34 672 1 34 673 1 34 674 1 34 675 1 34 682 1 34 683 1 34 684 1 34 685 1 34 692 1 34 693 1 34 694 1 34 695 1 34 696 1 34 697 1 34 702 1 34 703 1 34 704 1 34 705 1 34 712 1 34 713 1 34 714 1 34 715 1 34 716 1 34 717 1 34 722 1 34 723 1 34 724 1 34 725 1 34 726 1 34 727 1 34 732 1 34 733 1 34 734 1 34 735 1 35 5 1 35 40 1 35 46 1 35 51 1 35 55 1 35 59 1 35 60 1 35 61 1 35 124 1 35 130 1 35 135 1 35 139 1 35 143 1 35 144 1 35 145 1 35 207 1 35 212 1 35 216 1 35 220 1 35 221 1 35 222 1 35 227 1 35 231 1 35 235 1 35 236 1 35 237 1 35 241 1 35 245 1 35 246 1 35 247 1 35 251 1 35 252 1 35 253 1 35 257 1 35 258 1 35 259 1 35 334 1 35 340 1 35 345 1 35 349 1 35 353 1 35 354 1 35 355 1 35 417 1 35 422 1 35 426 1 35 430 1 35 431 1 35 432 1 35 437 1 35 441 1 35 445 1 35 446 1 35 447 1 35 451 1 35 455 1 35 456 1 35 457 1 35 461 1 35 462 1 35 463 1 35 467 1 35 468 1 35 469 1 35 543 1 35 548 1 35 552 1 35 556 1 35 557 1 35 558 1 35 563 1 35 567 1 35 571 1 35 572 1 35 573 1 35 577 1 35 581 1 35 582 1 35 583 1 35 587 1 35 588 1 35 589 1 35 593 1 35 594 1 35 595 1 35 668 1 35 672 1 35 676 1 35 677 1 35 678 1 35 682 1 35 686 1 35 687 1 35 688 1 35 692 1 35 693 1 35 694 1 35 698 1 35 699 1 35 700 1 35 702 1 35 706 1 35 707 1 35 708 1 35 712 1 35 713 1 35 714 1 35 718 1 35 719 1 35 720 1 35 722 1 35 723 1 35 724 1 35 728 1 35 729 1 35 730 1 35 732 1 35 733 1 35 734 1 35 736 1 36 6 1 36 41 1 36 47 1 36 52 1 36 56 1 36 59 1 36 62 1 36 63 1 36 125 1 36 131 1 36 136 1 36 140 1 36 143 1 36 146 1 36 147 1 36 208 1 36 213 1 36 217 1 36 220 1 36 223 1 36 224 1 36 228 1 36 232 1 36 235 1 36 238 1 36 239 1 36 242 1 36 245 1 36 248 1 36 249 1 36 251 1 36 254 1 36 255 1 36 257 1 36 258 1 36 260 1 36 335 1 36 341 1 36 346 1 36 350 1 36 353 1 36 356 1 36 357 1 36 418 1 36 423 1 36 427 1 36 430 1 36 433 1 36 434 1 36 438 1 36 442 1 36 445 1 36 448 1 36 449 1 36 452 1 36 455 1 36 458 1 36 459 1 36 461 1 36 464 1 36 465 1 36 467 1 36 468 1 36 470 1 36 544 1 36 549 1 36 553 1 36 556 1 36 559 1 36 560 1 36 564 1 36 568 1 36 571 1 36 574 1 36 575 1 36 578 1 36 581 1 36 584 1 36 585 1 36 587 1 36 590 1 36 591 1 36 593 1 36 594 1 36 596 1 36 669 1 36 673 1 36 676 1 36 679 1 36 680 1 36 683 1 36 686 1 36 689 1 36 690 1 36 692 1 36 695 1 36 696 1 36 698 1 36 699 1 36 701 1 36 703 1 36 706 1 36 709 1 36 710 1 36 712 1 36 715 1 36 716 1 36 718 1 36 719 1 36 721 1 36 722 1 36 725 1 36 726 1 36 728 1 36 729 1 36 731 1 36 732 1 36 733 1 36 735 1 36 736 1 37 7 1 37 42 1 37 48 1 37 53 1 37 57 1 37 60 1 37 62 1 37 64 1 37 126 1 37 132 1 37 137 1 37 141 1 37 144 1 37 146 1 37 148 1 37 209 1 37 214 1 37 218 1 37 221 1 37 223 1 37 225 1 37 229 1 37 233 1 37 236 1 37 238 1 37 240 1 37 243 1 37 246 1 37 248 1 37 250 1 37 252 1 37 254 1 37 256 1 37 257 1 37 259 1 37 260 1 37 336 1 37 342 1 37 347 1 37 351 1 37 354 1 37 356 1 37 358 1 37 419 1 37 424 1 37 428 1 37 431 1 37 433 1 37 435 1 37 439 1 37 443 1 37 446 1 37 448 1 37 450 1 37 453 1 37 456 1 37 458 1 37 460 1 37 462 1 37 464 1 37 466 1 37 467 1 37 469 1 37 470 1 37 545 1 37 550 1 37 554 1 37 557 1 37 559 1 37 561 1 37 565 1 37 569 1 37 572 1 37 574 1 37 576 1 37 579 1 37 582 1 37 584 1 37 586 1 37 588 1 37 590 1 37 592 1 37 593 1 37 595 1 37 596 1 37 670 1 37 674 1 37 677 1 37 679 1 37 681 1 37 684 1 37 687 1 37 689 1 37 691 1 37 693 1 37 695 1 37 697 1 37 698 1 37 700 1 37 701 1 37 704 1 37 707 1 37 709 1 37 711 1 37 713 1 37 715 1 37 717 1 37 718 1 37 720 1 37 721 1 37 723 1 37 725 1 37 727 1 37 728 1 37 730 1 37 731 1 37 732 1 37 734 1 37 735 1 37 736 1 38 8 1 38 43 1 38 49 1 38 54 1 38 58 1 38 61 1 38 63 1 38 64 1 38 127 1 38 133 1 38 138 1 38 142 1 38 145 1 38 147 1 38 148 1 38 210 1 38 215 1 38 219 1 38 222 1 38 224 1 38 225 1 38 230 1 38 234 1 38 237 1 38 239 1 38 240 1 38 244 1 38 247 1 38 249 1 38 250 1 38 253 1 38 255 1 38 256 1 38 258 1 38 259 1 38 260 1 38 337 1 38 343 1 38 348 1 38 352 1 38 355 1 38 357 1 38 358 1 38 420 1 38 425 1 38 429 1 38 432 1 38 434 1 38 435 1 38 440 1 38 444 1 38 447 1 38 449 1 38 450 1 38 454 1 38 457 1 38 459 1 38 460 1 38 463 1 38 465 1 38 466 1 38 468 1 38 469 1 38 470 1 38 546 1 38 551 1 38 555 1 38 558 1 38 560 1 38 561 1 38 566 1 38 570 1 38 573 1 38 575 1 38 576 1 38 580 1 38 583 1 38 585 1 38 586 1 38 589 1 38 591 1 38 592 1 38 594 1 38 595 1 38 596 1 38 671 1 38 675 1 38 678 1 38 680 1 38 681 1 38 685 1 38 688 1 38 690 1 38 691 1 38 694 1 38 696 1 38 697 1 38 699 1 38 700 1 38 701 1 38 705 1 38 708 1 38 710 1 38 711 1 38 714 1 38 716 1 38 717 1 38 719 1 38 720 1 38 721 1 38 724 1 38 726 1 38 727 1 38 729 1 38 730 1 38 731 1 38 733 1 38 734 1 38 735 1 38 736 1 39 9 1 39 37 1 39 65 1 39 66 1 39 67 1 39 68 1 39 69 1 39 70 1 39 121 1 39 149 1 39 150 1 39 151 1 39 152 1 39 153 1 39 154 1 39 205 1 39 206 1 39 207 1 39 208 1 39 209 1 39 210 1 39 261 1 39 262 1 39 263 1 39 264 1 39 265 1 39 266 1 39 267 1 39 268 1 39 269 1 39 270 1 39 271 1 39 272 1 39 273 1 39 274 1 39 275 1 39 331 1 39 359 1 39 360 1 39 361 1 39 362 1 39 363 1 39 364 1 39 415 1 39 416 1 39 417 1 39 418 1 39 419 1 39 420 1 39 471 1 39 472 1 39 473 1 39 474 1 39 475 1 39 476 1 39 477 1 39 478 1 39 479 1 39 480 1 39 481 1 39 482 1 39 483 1 39 484 1 39 485 1 39 541 1 39 542 1 39 543 1 39 544 1 39 545 1 39 546 1 39 597 1 39 598 1 39 599 1 39 600 1 39 601 1 39 602 1 39 603 1 39 604 1 39 605 1 39 606 1 39 607 1 39 608 1 39 609 1 39 610 1 39 611 1 39 667 1 39 668 1 39 669 1 39 670 1 39 671 1 39 672 1 39 673 1 39 674 1 39 675 1 39 676 1 39 677 1 39 678 1 39 679 1 39 680 1 39 681 1 39 737 1 39 738 1 39 739 1 39 740 1 39 741 1 39 742 1 39 743 1 39 744 1 39 745 1 39 746 1 39 747 1 39 748 1 39 749 1 39 750 1 39 751 1 39 752 1 39 753 1 39 754 1 39 755 1 39 756 1 40 10 1 40 38 1 40 65 1 40 71 1 40 72 1 40 73 1 40 74 1 40 75 1 40 122 1 40 149 1 40 155 1 40 156 1 40 157 1 40 158 1 40 159 1 40 205 1 40 211 1 40 212 1 40 213 1 40 214 1 40 215 1 40 261 1 40 262 1 40 263 1 40 264 1 40 265 1 40 276 1 40 277 1 40 278 1 40 279 1 40 280 1 40 281 1 40 282 1 40 283 1 40 284 1 40 285 1 40 332 1 40 359 1 40 365 1 40 366 1 40 367 1 40 368 1 40 369 1 40 415 1 40 421 1 40 422 1 40 423 1 40 424 1 40 425 1 40 471 1 40 472 1 40 473 1 40 474 1 40 475 1 40 486 1 40 487 1 40 488 1 40 489 1 40 490 1 40 491 1 40 492 1 40 493 1 40 494 1 40 495 1 40 541 1 40 547 1 40 548 1 40 549 1 40 550 1 40 551 1 40 597 1 40 598 1 40 599 1 40 600 1 40 601 1 40 612 1 40 613 1 40 614 1 40 615 1 40 616 1 40 617 1 40 618 1 40 619 1 40 620 1 40 621 1 40 667 1 40 668 1 40 669 1 40 670 1 40 671 1 40 682 1 40 683 1 40 684 1 40 685 1 40 686 1 40 687 1 40 688 1 40 689 1 40 690 1 40 691 1 40 737 1 40 738 1 40 739 1 40 740 1 40 741 1 40 742 1 40 743 1 40 744 1 40 745 1 40 746 1 40 757 1 40 758 1 40 759 1 40 760 1 40 761 1 40 762 1 40 763 1 40 764 1 40 765 1 40 766 1 41 11 1 41 39 1 41 66 1 41 71 1 41 76 1 41 77 1 41 78 1 41 79 1 41 123 1 41 150 1 41 155 1 41 160 1 41 161 1 41 162 1 41 163 1 41 206 1 41 211 1 41 216 1 41 217 1 41 218 1 41 219 1 41 261 1 41 266 1 41 267 1 41 268 1 41 269 1 41 276 1 41 277 1 41 278 1 41 279 1 41 286 1 41 287 1 41 288 1 41 289 1 41 290 1 41 291 1 41 333 1 41 360 1 41 365 1 41 370 1 41 371 1 41 372 1 41 373 1 41 416 1 41 421 1 41 426 1 41 427 1 41 428 1 41 429 1 41 471 1 41 476 1 41 477 1 41 478 1 41 479 1 41 486 1 41 487 1 41 488 1 41 489 1 41 496 1 41 497 1 41 498 1 41 499 1 41 500 1 41 501 1 41 542 1 41 547 1 41 552 1 41 553 1 41 554 1 41 555 1 41 597 1 41 602 1 41 603 1 41 604 1 41 605 1 41 612 1 41 613 1 41 614 1 41 615 1 41 622 1 41 623 1 41 624 1 41 625 1 41 626 1 41 627 1 41 667 1 41 672 1 41 673 1 41 674 1 41 675 1 41 682 1 41 683 1 41 684 1 41 685 1 41 692 1 41 693 1 41 694 1 41 695 1 41 696 1 41 697 1 41 737 1 41 738 1 41 739 1 41 740 1 41 747 1 41 748 1 41 749 1 41 750 1 41 751 1 41 752 1 41 757 1 41 758 1 41 759 1 41 760 1 41 761 1 41 762 1 41 767 1 41 768 1 41 769 1 41 770 1 42 12 1 42 40 1 42 67 1 42 72 1 42 76 1 42 80 1 42 81 1 42 82 1 42 124 1 42 151 1 42 156 1 42 160 1 42 164 1 42 165 1 42 166 1 42 207 1 42 212 1 42 216 1 42 220 1 42 221 1 42 222 1 42 262 1 42 266 1 42 270 1 42 271 1 42 272 1 42 276 1 42 280 1 42 281 1 42 282 1 42 286 1 42 287 1 42 288 1 42 292 1 42 293 1 42 294 1 42 334 1 42 361 1 42 366 1 42 370 1 42 374 1 42 375 1 42 376 1 42 417 1 42 422 1 42 426 1 42 430 1 42 431 1 42 432 1 42 472 1 42 476 1 42 480 1 42 481 1 42 482 1 42 486 1 42 490 1 42 491 1 42 492 1 42 496 1 42 497 1 42 498 1 42 502 1 42 503 1 42 504 1 42 543 1 42 548 1 42 552 1 42 556 1 42 557 1 42 558 1 42 598 1 42 602 1 42 606 1 42 607 1 42 608 1 42 612 1 42 616 1 42 617 1 42 618 1 42 622 1 42 623 1 42 624 1 42 628 1 42 629 1 42 630 1 42 668 1 42 672 1 42 676 1 42 677 1 42 678 1 42 682 1 42 686 1 42 687 1 42 688 1 42 692 1 42 693 1 42 694 1 42 698 1 42 699 1 42 700 1 42 737 1 42 741 1 42 742 1 42 743 1 42 747 1 42 748 1 42 749 1 42 753 1 42 754 1 42 755 1 42 757 1 42 758 1 42 759 1 42 763 1 42 764 1 42 765 1 42 767 1 42 768 1 42 769 1 42 771 1 43 13 1 43 41 1 43 68 1 43 73 1 43 77 1 43 80 1 43 83 1 43 84 1 43 125 1 43 152 1 43 157 1 43 161 1 43 164 1 43 167 1 43 168 1 43 208 1 43 213 1 43 217 1 43 220 1 43 223 1 43 224 1 43 263 1 43 267 1 43 270 1 43 273 1 43 274 1 43 277 1 43 280 1 43 283 1 43 284 1 43 286 1 43 289 1 43 290 1 43 292 1 43 293 1 43 295 1 43 335 1 43 362 1 43 367 1 43 371 1 43 374 1 43 377 1 43 378 1 43 418 1 43 423 1 43 427 1 43 430 1 43 433 1 43 434 1 43 473 1 43 477 1 43 480 1 43 483 1 43 484 1 43 487 1 43 490 1 43 493 1 43 494 1 43 496 1 43 499 1 43 500 1 43 502 1 43 503 1 43 505 1 43 544 1 43 549 1 43 553 1 43 556 1 43 559 1 43 560 1 43 599 1 43 603 1 43 606 1 43 609 1 43 610 1 43 613 1 43 616 1 43 619 1 43 620 1 43 622 1 43 625 1 43 626 1 43 628 1 43 629 1 43 631 1 43 669 1 43 673 1 43 676 1 43 679 1 43 680 1 43 683 1 43 686 1 43 689 1 43 690 1 43 692 1 43 695 1 43 696 1 43 698 1 43 699 1 43 701 1 43 738 1 43 741 1 43 744 1 43 745 1 43 747 1 43 750 1 43 751 1 43 753 1 43 754 1 43 756 1 43 757 1 43 760 1 43 761 1 43 763 1 43 764 1 43 766 1 43 767 1 43 768 1 43 770 1 43 771 1 44 14 1 44 42 1 44 69 1 44 74 1 44 78 1 44 81 1 44 83 1 44 85 1 44 126 1 44 153 1 44 158 1 44 162 1 44 165 1 44 167 1 44 169 1 44 209 1 44 214 1 44 218 1 44 221 1 44 223 1 44 225 1 44 264 1 44 268 1 44 271 1 44 273 1 44 275 1 44 278 1 44 281 1 44 283 1 44 285 1 44 287 1 44 289 1 44 291 1 44 292 1 44 294 1 44 295 1 44 336 1 44 363 1 44 368 1 44 372 1 44 375 1 44 377 1 44 379 1 44 419 1 44 424 1 44 428 1 44 431 1 44 433 1 44 435 1 44 474 1 44 478 1 44 481 1 44 483 1 44 485 1 44 488 1 44 491 1 44 493 1 44 495 1 44 497 1 44 499 1 44 501 1 44 502 1 44 504 1 44 505 1 44 545 1 44 550 1 44 554 1 44 557 1 44 559 1 44 561 1 44 600 1 44 604 1 44 607 1 44 609 1 44 611 1 44 614 1 44 617 1 44 619 1 44 621 1 44 623 1 44 625 1 44 627 1 44 628 1 44 630 1 44 631 1 44 670 1 44 674 1 44 677 1 44 679 1 44 681 1 44 684 1 44 687 1 44 689 1 44 691 1 44 693 1 44 695 1 44 697 1 44 698 1 44 700 1 44 701 1 44 739 1 44 742 1 44 744 1 44 746 1 44 748 1 44 750 1 44 752 1 44 753 1 44 755 1 44 756 1 44 758 1 44 760 1 44 762 1 44 763 1 44 765 1 44 766 1 44 767 1 44 769 1 44 770 1 44 771 1 45 15 1 45 43 1 45 70 1 45 75 1 45 79 1 45 82 1 45 84 1 45 85 1 45 127 1 45 154 1 45 159 1 45 163 1 45 166 1 45 168 1 45 169 1 45 210 1 45 215 1 45 219 1 45 222 1 45 224 1 45 225 1 45 265 1 45 269 1 45 272 1 45 274 1 45 275 1 45 279 1 45 282 1 45 284 1 45 285 1 45 288 1 45 290 1 45 291 1 45 293 1 45 294 1 45 295 1 45 337 1 45 364 1 45 369 1 45 373 1 45 376 1 45 378 1 45 379 1 45 420 1 45 425 1 45 429 1 45 432 1 45 434 1 45 435 1 45 475 1 45 479 1 45 482 1 45 484 1 45 485 1 45 489 1 45 492 1 45 494 1 45 495 1 45 498 1 45 500 1 45 501 1 45 503 1 45 504 1 45 505 1 45 546 1 45 551 1 45 555 1 45 558 1 45 560 1 45 561 1 45 601 1 45 605 1 45 608 1 45 610 1 45 611 1 45 615 1 45 618 1 45 620 1 45 621 1 45 624 1 45 626 1 45 627 1 45 629 1 45 630 1 45 631 1 45 671 1 45 675 1 45 678 1 45 680 1 45 681 1 45 685 1 45 688 1 45 690 1 45 691 1 45 694 1 45 696 1 45 697 1 45 699 1 45 700 1 45 701 1 45 740 1 45 743 1 45 745 1 45 746 1 45 749 1 45 751 1 45 752 1 45 754 1 45 755 1 45 756 1 45 759 1 45 761 1 45 762 1 45 764 1 45 765 1 45 766 1 45 768 1 45 769 1 45 770 1 45 771 1 46 16 1 46 44 1 46 65 1 46 86 1 46 87 1 46 88 1 46 89 1 46 90 1 46 128 1 46 149 1 46 170 1 46 171 1 46 172 1 46 173 1 46 174 1 46 205 1 46 226 1 46 227 1 46 228 1 46 229 1 46 230 1 46 261 1 46 262 1 46 263 1 46 264 1 46 265 1 46 296 1 46 297 1 46 298 1 46 299 1 46 300 1 46 301 1 46 302 1 46 303 1 46 304 1 46 305 1 46 338 1 46 359 1 46 380 1 46 381 1 46 382 1 46 383 1 46 384 1 46 415 1 46 436 1 46 437 1 46 438 1 46 439 1 46 440 1 46 471 1 46 472 1 46 473 1 46 474 1 46 475 1 46 506 1 46 507 1 46 508 1 46 509 1 46 510 1 46 511 1 46 512 1 46 513 1 46 514 1 46 515 1 46 541 1 46 562 1 46 563 1 46 564 1 46 565 1 46 566 1 46 597 1 46 598 1 46 599 1 46 600 1 46 601 1 46 632 1 46 633 1 46 634 1 46 635 1 46 636 1 46 637 1 46 638 1 46 639 1 46 640 1 46 641 1 46 667 1 46 668 1 46 669 1 46 670 1 46 671 1 46 702 1 46 703 1 46 704 1 46 705 1 46 706 1 46 707 1 46 708 1 46 709 1 46 710 1 46 711 1 46 737 1 46 738 1 46 739 1 46 740 1 46 741 1 46 742 1 46 743 1 46 744 1 46 745 1 46 746 1 46 772 1 46 773 1 46 774 1 46 775 1 46 776 1 46 777 1 46 778 1 46 779 1 46 780 1 46 781 1 47 17 1 47 45 1 47 66 1 47 86 1 47 91 1 47 92 1 47 93 1 47 94 1 47 129 1 47 150 1 47 170 1 47 175 1 47 176 1 47 177 1 47 178 1 47 206 1 47 226 1 47 231 1 47 232 1 47 233 1 47 234 1 47 261 1 47 266 1 47 267 1 47 268 1 47 269 1 47 296 1 47 297 1 47 298 1 47 299 1 47 306 1 47 307 1 47 308 1 47 309 1 47 310 1 47 311 1 47 339 1 47 360 1 47 380 1 47 385 1 47 386 1 47 387 1 47 388 1 47 416 1 47 436 1 47 441 1 47 442 1 47 443 1 47 444 1 47 471 1 47 476 1 47 477 1 47 478 1 47 479 1 47 506 1 47 507 1 47 508 1 47 509 1 47 516 1 47 517 1 47 518 1 47 519 1 47 520 1 47 521 1 47 542 1 47 562 1 47 567 1 47 568 1 47 569 1 47 570 1 47 597 1 47 602 1 47 603 1 47 604 1 47 605 1 47 632 1 47 633 1 47 634 1 47 635 1 47 642 1 47 643 1 47 644 1 47 645 1 47 646 1 47 647 1 47 667 1 47 672 1 47 673 1 47 674 1 47 675 1 47 702 1 47 703 1 47 704 1 47 705 1 47 712 1 47 713 1 47 714 1 47 715 1 47 716 1 47 717 1 47 737 1 47 738 1 47 739 1 47 740 1 47 747 1 47 748 1 47 749 1 47 750 1 47 751 1 47 752 1 47 772 1 47 773 1 47 774 1 47 775 1 47 776 1 47 777 1 47 782 1 47 783 1 47 784 1 47 785 1 48 18 1 48 46 1 48 67 1 48 87 1 48 91 1 48 95 1 48 96 1 48 97 1 48 130 1 48 151 1 48 171 1 48 175 1 48 179 1 48 180 1 48 181 1 48 207 1 48 227 1 48 231 1 48 235 1 48 236 1 48 237 1 48 262 1 48 266 1 48 270 1 48 271 1 48 272 1 48 296 1 48 300 1 48 301 1 48 302 1 48 306 1 48 307 1 48 308 1 48 312 1 48 313 1 48 314 1 48 340 1 48 361 1 48 381 1 48 385 1 48 389 1 48 390 1 48 391 1 48 417 1 48 437 1 48 441 1 48 445 1 48 446 1 48 447 1 48 472 1 48 476 1 48 480 1 48 481 1 48 482 1 48 506 1 48 510 1 48 511 1 48 512 1 48 516 1 48 517 1 48 518 1 48 522 1 48 523 1 48 524 1 48 543 1 48 563 1 48 567 1 48 571 1 48 572 1 48 573 1 48 598 1 48 602 1 48 606 1 48 607 1 48 608 1 48 632 1 48 636 1 48 637 1 48 638 1 48 642 1 48 643 1 48 644 1 48 648 1 48 649 1 48 650 1 48 668 1 48 672 1 48 676 1 48 677 1 48 678 1 48 702 1 48 706 1 48 707 1 48 708 1 48 712 1 48 713 1 48 714 1 48 718 1 48 719 1 48 720 1 48 737 1 48 741 1 48 742 1 48 743 1 48 747 1 48 748 1 48 749 1 48 753 1 48 754 1 48 755 1 48 772 1 48 773 1 48 774 1 48 778 1 48 779 1 48 780 1 48 782 1 48 783 1 48 784 1 48 786 1 49 19 1 49 47 1 49 68 1 49 88 1 49 92 1 49 95 1 49 98 1 49 99 1 49 131 1 49 152 1 49 172 1 49 176 1 49 179 1 49 182 1 49 183 1 49 208 1 49 228 1 49 232 1 49 235 1 49 238 1 49 239 1 49 263 1 49 267 1 49 270 1 49 273 1 49 274 1 49 297 1 49 300 1 49 303 1 49 304 1 49 306 1 49 309 1 49 310 1 49 312 1 49 313 1 49 315 1 49 341 1 49 362 1 49 382 1 49 386 1 49 389 1 49 392 1 49 393 1 49 418 1 49 438 1 49 442 1 49 445 1 49 448 1 49 449 1 49 473 1 49 477 1 49 480 1 49 483 1 49 484 1 49 507 1 49 510 1 49 513 1 49 514 1 49 516 1 49 519 1 49 520 1 49 522 1 49 523 1 49 525 1 49 544 1 49 564 1 49 568 1 49 571 1 49 574 1 49 575 1 49 599 1 49 603 1 49 606 1 49 609 1 49 610 1 49 633 1 49 636 1 49 639 1 49 640 1 49 642 1 49 645 1 49 646 1 49 648 1 49 649 1 49 651 1 49 669 1 49 673 1 49 676 1 49 679 1 49 680 1 49 703 1 49 706 1 49 709 1 49 710 1 49 712 1 49 715 1 49 716 1 49 718 1 49 719 1 49 721 1 49 738 1 49 741 1 49 744 1 49 745 1 49 747 1 49 750 1 49 751 1 49 753 1 49 754 1 49 756 1 49 772 1 49 775 1 49 776 1 49 778 1 49 779 1 49 781 1 49 782 1 49 783 1 49 785 1 49 786 1 50 20 1 50 48 1 50 69 1 50 89 1 50 93 1 50 96 1 50 98 1 50 100 1 50 132 1 50 153 1 50 173 1 50 177 1 50 180 1 50 182 1 50 184 1 50 209 1 50 229 1 50 233 1 50 236 1 50 238 1 50 240 1 50 264 1 50 268 1 50 271 1 50 273 1 50 275 1 50 298 1 50 301 1 50 303 1 50 305 1 50 307 1 50 309 1 50 311 1 50 312 1 50 314 1 50 315 1 50 342 1 50 363 1 50 383 1 50 387 1 50 390 1 50 392 1 50 394 1 50 419 1 50 439 1 50 443 1 50 446 1 50 448 1 50 450 1 50 474 1 50 478 1 50 481 1 50 483 1 50 485 1 50 508 1 50 511 1 50 513 1 50 515 1 50 517 1 50 519 1 50 521 1 50 522 1 50 524 1 50 525 1 50 545 1 50 565 1 50 569 1 50 572 1 50 574 1 50 576 1 50 600 1 50 604 1 50 607 1 50 609 1 50 611 1 50 634 1 50 637 1 50 639 1 50 641 1 50 643 1 50 645 1 50 647 1 50 648 1 50 650 1 50 651 1 50 670 1 50 674 1 50 677 1 50 679 1 50 681 1 50 704 1 50 707 1 50 709 1 50 711 1 50 713 1 50 715 1 50 717 1 50 718 1 50 720 1 50 721 1 50 739 1 50 742 1 50 744 1 50 746 1 50 748 1 50 750 1 50 752 1 50 753 1 50 755 1 50 756 1 50 773 1 50 775 1 50 777 1 50 778 1 50 780 1 50 781 1 50 782 1 50 784 1 50 785 1 50 786 1 51 21 1 51 49 1 51 70 1 51 90 1 51 94 1 51 97 1 51 99 1 51 100 1 51 133 1 51 154 1 51 174 1 51 178 1 51 181 1 51 183 1 51 184 1 51 210 1 51 230 1 51 234 1 51 237 1 51 239 1 51 240 1 51 265 1 51 269 1 51 272 1 51 274 1 51 275 1 51 299 1 51 302 1 51 304 1 51 305 1 51 308 1 51 310 1 51 311 1 51 313 1 51 314 1 51 315 1 51 343 1 51 364 1 51 384 1 51 388 1 51 391 1 51 393 1 51 394 1 51 420 1 51 440 1 51 444 1 51 447 1 51 449 1 51 450 1 51 475 1 51 479 1 51 482 1 51 484 1 51 485 1 51 509 1 51 512 1 51 514 1 51 515 1 51 518 1 51 520 1 51 521 1 51 523 1 51 524 1 51 525 1 51 546 1 51 566 1 51 570 1 51 573 1 51 575 1 51 576 1 51 601 1 51 605 1 51 608 1 51 610 1 51 611 1 51 635 1 51 638 1 51 640 1 51 641 1 51 644 1 51 646 1 51 647 1 51 649 1 51 650 1 51 651 1 51 671 1 51 675 1 51 678 1 51 680 1 51 681 1 51 705 1 51 708 1 51 710 1 51 711 1 51 714 1 51 716 1 51 717 1 51 719 1 51 720 1 51 721 1 51 740 1 51 743 1 51 745 1 51 746 1 51 749 1 51 751 1 51 752 1 51 754 1 51 755 1 51 756 1 51 774 1 51 776 1 51 777 1 51 779 1 51 780 1 51 781 1 51 783 1 51 784 1 51 785 1 51 786 1 52 22 1 52 50 1 52 71 1 52 86 1 52 101 1 52 102 1 52 103 1 52 104 1 52 134 1 52 155 1 52 170 1 52 185 1 52 186 1 52 187 1 52 188 1 52 211 1 52 226 1 52 241 1 52 242 1 52 243 1 52 244 1 52 261 1 52 276 1 52 277 1 52 278 1 52 279 1 52 296 1 52 297 1 52 298 1 52 299 1 52 316 1 52 317 1 52 318 1 52 319 1 52 320 1 52 321 1 52 344 1 52 365 1 52 380 1 52 395 1 52 396 1 52 397 1 52 398 1 52 421 1 52 436 1 52 451 1 52 452 1 52 453 1 52 454 1 52 471 1 52 486 1 52 487 1 52 488 1 52 489 1 52 506 1 52 507 1 52 508 1 52 509 1 52 526 1 52 527 1 52 528 1 52 529 1 52 530 1 52 531 1 52 547 1 52 562 1 52 577 1 52 578 1 52 579 1 52 580 1 52 597 1 52 612 1 52 613 1 52 614 1 52 615 1 52 632 1 52 633 1 52 634 1 52 635 1 52 652 1 52 653 1 52 654 1 52 655 1 52 656 1 52 657 1 52 667 1 52 682 1 52 683 1 52 684 1 52 685 1 52 702 1 52 703 1 52 704 1 52 705 1 52 722 1 52 723 1 52 724 1 52 725 1 52 726 1 52 727 1 52 737 1 52 738 1 52 739 1 52 740 1 52 757 1 52 758 1 52 759 1 52 760 1 52 761 1 52 762 1 52 772 1 52 773 1 52 774 1 52 775 1 52 776 1 52 777 1 52 787 1 52 788 1 52 789 1 52 790 1 53 23 1 53 51 1 53 72 1 53 87 1 53 101 1 53 105 1 53 106 1 53 107 1 53 135 1 53 156 1 53 171 1 53 185 1 53 189 1 53 190 1 53 191 1 53 212 1 53 227 1 53 241 1 53 245 1 53 246 1 53 247 1 53 262 1 53 276 1 53 280 1 53 281 1 53 282 1 53 296 1 53 300 1 53 301 1 53 302 1 53 316 1 53 317 1 53 318 1 53 322 1 53 323 1 53 324 1 53 345 1 53 366 1 53 381 1 53 395 1 53 399 1 53 400 1 53 401 1 53 422 1 53 437 1 53 451 1 53 455 1 53 456 1 53 457 1 53 472 1 53 486 1 53 490 1 53 491 1 53 492 1 53 506 1 53 510 1 53 511 1 53 512 1 53 526 1 53 527 1 53 528 1 53 532 1 53 533 1 53 534 1 53 548 1 53 563 1 53 577 1 53 581 1 53 582 1 53 583 1 53 598 1 53 612 1 53 616 1 53 617 1 53 618 1 53 632 1 53 636 1 53 637 1 53 638 1 53 652 1 53 653 1 53 654 1 53 658 1 53 659 1 53 660 1 53 668 1 53 682 1 53 686 1 53 687 1 53 688 1 53 702 1 53 706 1 53 707 1 53 708 1 53 722 1 53 723 1 53 724 1 53 728 1 53 729 1 53 730 1 53 737 1 53 741 1 53 742 1 53 743 1 53 757 1 53 758 1 53 759 1 53 763 1 53 764 1 53 765 1 53 772 1 53 773 1 53 774 1 53 778 1 53 779 1 53 780 1 53 787 1 53 788 1 53 789 1 53 791 1 54 24 1 54 52 1 54 73 1 54 88 1 54 102 1 54 105 1 54 108 1 54 109 1 54 136 1 54 157 1 54 172 1 54 186 1 54 189 1 54 192 1 54 193 1 54 213 1 54 228 1 54 242 1 54 245 1 54 248 1 54 249 1 54 263 1 54 277 1 54 280 1 54 283 1 54 284 1 54 297 1 54 300 1 54 303 1 54 304 1 54 316 1 54 319 1 54 320 1 54 322 1 54 323 1 54 325 1 54 346 1 54 367 1 54 382 1 54 396 1 54 399 1 54 402 1 54 403 1 54 423 1 54 438 1 54 452 1 54 455 1 54 458 1 54 459 1 54 473 1 54 487 1 54 490 1 54 493 1 54 494 1 54 507 1 54 510 1 54 513 1 54 514 1 54 526 1 54 529 1 54 530 1 54 532 1 54 533 1 54 535 1 54 549 1 54 564 1 54 578 1 54 581 1 54 584 1 54 585 1 54 599 1 54 613 1 54 616 1 54 619 1 54 620 1 54 633 1 54 636 1 54 639 1 54 640 1 54 652 1 54 655 1 54 656 1 54 658 1 54 659 1 54 661 1 54 669 1 54 683 1 54 686 1 54 689 1 54 690 1 54 703 1 54 706 1 54 709 1 54 710 1 54 722 1 54 725 1 54 726 1 54 728 1 54 729 1 54 731 1 54 738 1 54 741 1 54 744 1 54 745 1 54 757 1 54 760 1 54 761 1 54 763 1 54 764 1 54 766 1 54 772 1 54 775 1 54 776 1 54 778 1 54 779 1 54 781 1 54 787 1 54 788 1 54 790 1 54 791 1 55 25 1 55 53 1 55 74 1 55 89 1 55 103 1 55 106 1 55 108 1 55 110 1 55 137 1 55 158 1 55 173 1 55 187 1 55 190 1 55 192 1 55 194 1 55 214 1 55 229 1 55 243 1 55 246 1 55 248 1 55 250 1 55 264 1 55 278 1 55 281 1 55 283 1 55 285 1 55 298 1 55 301 1 55 303 1 55 305 1 55 317 1 55 319 1 55 321 1 55 322 1 55 324 1 55 325 1 55 347 1 55 368 1 55 383 1 55 397 1 55 400 1 55 402 1 55 404 1 55 424 1 55 439 1 55 453 1 55 456 1 55 458 1 55 460 1 55 474 1 55 488 1 55 491 1 55 493 1 55 495 1 55 508 1 55 511 1 55 513 1 55 515 1 55 527 1 55 529 1 55 531 1 55 532 1 55 534 1 55 535 1 55 550 1 55 565 1 55 579 1 55 582 1 55 584 1 55 586 1 55 600 1 55 614 1 55 617 1 55 619 1 55 621 1 55 634 1 55 637 1 55 639 1 55 641 1 55 653 1 55 655 1 55 657 1 55 658 1 55 660 1 55 661 1 55 670 1 55 684 1 55 687 1 55 689 1 55 691 1 55 704 1 55 707 1 55 709 1 55 711 1 55 723 1 55 725 1 55 727 1 55 728 1 55 730 1 55 731 1 55 739 1 55 742 1 55 744 1 55 746 1 55 758 1 55 760 1 55 762 1 55 763 1 55 765 1 55 766 1 55 773 1 55 775 1 55 777 1 55 778 1 55 780 1 55 781 1 55 787 1 55 789 1 55 790 1 55 791 1 56 26 1 56 54 1 56 75 1 56 90 1 56 104 1 56 107 1 56 109 1 56 110 1 56 138 1 56 159 1 56 174 1 56 188 1 56 191 1 56 193 1 56 194 1 56 215 1 56 230 1 56 244 1 56 247 1 56 249 1 56 250 1 56 265 1 56 279 1 56 282 1 56 284 1 56 285 1 56 299 1 56 302 1 56 304 1 56 305 1 56 318 1 56 320 1 56 321 1 56 323 1 56 324 1 56 325 1 56 348 1 56 369 1 56 384 1 56 398 1 56 401 1 56 403 1 56 404 1 56 425 1 56 440 1 56 454 1 56 457 1 56 459 1 56 460 1 56 475 1 56 489 1 56 492 1 56 494 1 56 495 1 56 509 1 56 512 1 56 514 1 56 515 1 56 528 1 56 530 1 56 531 1 56 533 1 56 534 1 56 535 1 56 551 1 56 566 1 56 580 1 56 583 1 56 585 1 56 586 1 56 601 1 56 615 1 56 618 1 56 620 1 56 621 1 56 635 1 56 638 1 56 640 1 56 641 1 56 654 1 56 656 1 56 657 1 56 659 1 56 660 1 56 661 1 56 671 1 56 685 1 56 688 1 56 690 1 56 691 1 56 705 1 56 708 1 56 710 1 56 711 1 56 724 1 56 726 1 56 727 1 56 729 1 56 730 1 56 731 1 56 740 1 56 743 1 56 745 1 56 746 1 56 759 1 56 761 1 56 762 1 56 764 1 56 765 1 56 766 1 56 774 1 56 776 1 56 777 1 56 779 1 56 780 1 56 781 1 56 788 1 56 789 1 56 790 1 56 791 1 57 27 1 57 55 1 57 76 1 57 91 1 57 101 1 57 111 1 57 112 1 57 113 1 57 139 1 57 160 1 57 175 1 57 185 1 57 195 1 57 196 1 57 197 1 57 216 1 57 231 1 57 241 1 57 251 1 57 252 1 57 253 1 57 266 1 57 276 1 57 286 1 57 287 1 57 288 1 57 296 1 57 306 1 57 307 1 57 308 1 57 316 1 57 317 1 57 318 1 57 326 1 57 327 1 57 328 1 57 349 1 57 370 1 57 385 1 57 395 1 57 405 1 57 406 1 57 407 1 57 426 1 57 441 1 57 451 1 57 461 1 57 462 1 57 463 1 57 476 1 57 486 1 57 496 1 57 497 1 57 498 1 57 506 1 57 516 1 57 517 1 57 518 1 57 526 1 57 527 1 57 528 1 57 536 1 57 537 1 57 538 1 57 552 1 57 567 1 57 577 1 57 587 1 57 588 1 57 589 1 57 602 1 57 612 1 57 622 1 57 623 1 57 624 1 57 632 1 57 642 1 57 643 1 57 644 1 57 652 1 57 653 1 57 654 1 57 662 1 57 663 1 57 664 1 57 672 1 57 682 1 57 692 1 57 693 1 57 694 1 57 702 1 57 712 1 57 713 1 57 714 1 57 722 1 57 723 1 57 724 1 57 732 1 57 733 1 57 734 1 57 737 1 57 747 1 57 748 1 57 749 1 57 757 1 57 758 1 57 759 1 57 767 1 57 768 1 57 769 1 57 772 1 57 773 1 57 774 1 57 782 1 57 783 1 57 784 1 57 787 1 57 788 1 57 789 1 57 792 1 58 28 1 58 56 1 58 77 1 58 92 1 58 102 1 58 111 1 58 114 1 58 115 1 58 140 1 58 161 1 58 176 1 58 186 1 58 195 1 58 198 1 58 199 1 58 217 1 58 232 1 58 242 1 58 251 1 58 254 1 58 255 1 58 267 1 58 277 1 58 286 1 58 289 1 58 290 1 58 297 1 58 306 1 58 309 1 58 310 1 58 316 1 58 319 1 58 320 1 58 326 1 58 327 1 58 329 1 58 350 1 58 371 1 58 386 1 58 396 1 58 405 1 58 408 1 58 409 1 58 427 1 58 442 1 58 452 1 58 461 1 58 464 1 58 465 1 58 477 1 58 487 1 58 496 1 58 499 1 58 500 1 58 507 1 58 516 1 58 519 1 58 520 1 58 526 1 58 529 1 58 530 1 58 536 1 58 537 1 58 539 1 58 553 1 58 568 1 58 578 1 58 587 1 58 590 1 58 591 1 58 603 1 58 613 1 58 622 1 58 625 1 58 626 1 58 633 1 58 642 1 58 645 1 58 646 1 58 652 1 58 655 1 58 656 1 58 662 1 58 663 1 58 665 1 58 673 1 58 683 1 58 692 1 58 695 1 58 696 1 58 703 1 58 712 1 58 715 1 58 716 1 58 722 1 58 725 1 58 726 1 58 732 1 58 733 1 58 735 1 58 738 1 58 747 1 58 750 1 58 751 1 58 757 1 58 760 1 58 761 1 58 767 1 58 768 1 58 770 1 58 772 1 58 775 1 58 776 1 58 782 1 58 783 1 58 785 1 58 787 1 58 788 1 58 790 1 58 792 1 59 29 1 59 57 1 59 78 1 59 93 1 59 103 1 59 112 1 59 114 1 59 116 1 59 141 1 59 162 1 59 177 1 59 187 1 59 196 1 59 198 1 59 200 1 59 218 1 59 233 1 59 243 1 59 252 1 59 254 1 59 256 1 59 268 1 59 278 1 59 287 1 59 289 1 59 291 1 59 298 1 59 307 1 59 309 1 59 311 1 59 317 1 59 319 1 59 321 1 59 326 1 59 328 1 59 329 1 59 351 1 59 372 1 59 387 1 59 397 1 59 406 1 59 408 1 59 410 1 59 428 1 59 443 1 59 453 1 59 462 1 59 464 1 59 466 1 59 478 1 59 488 1 59 497 1 59 499 1 59 501 1 59 508 1 59 517 1 59 519 1 59 521 1 59 527 1 59 529 1 59 531 1 59 536 1 59 538 1 59 539 1 59 554 1 59 569 1 59 579 1 59 588 1 59 590 1 59 592 1 59 604 1 59 614 1 59 623 1 59 625 1 59 627 1 59 634 1 59 643 1 59 645 1 59 647 1 59 653 1 59 655 1 59 657 1 59 662 1 59 664 1 59 665 1 59 674 1 59 684 1 59 693 1 59 695 1 59 697 1 59 704 1 59 713 1 59 715 1 59 717 1 59 723 1 59 725 1 59 727 1 59 732 1 59 734 1 59 735 1 59 739 1 59 748 1 59 750 1 59 752 1 59 758 1 59 760 1 59 762 1 59 767 1 59 769 1 59 770 1 59 773 1 59 775 1 59 777 1 59 782 1 59 784 1 59 785 1 59 787 1 59 789 1 59 790 1 59 792 1 60 30 1 60 58 1 60 79 1 60 94 1 60 104 1 60 113 1 60 115 1 60 116 1 60 142 1 60 163 1 60 178 1 60 188 1 60 197 1 60 199 1 60 200 1 60 219 1 60 234 1 60 244 1 60 253 1 60 255 1 60 256 1 60 269 1 60 279 1 60 288 1 60 290 1 60 291 1 60 299 1 60 308 1 60 310 1 60 311 1 60 318 1 60 320 1 60 321 1 60 327 1 60 328 1 60 329 1 60 352 1 60 373 1 60 388 1 60 398 1 60 407 1 60 409 1 60 410 1 60 429 1 60 444 1 60 454 1 60 463 1 60 465 1 60 466 1 60 479 1 60 489 1 60 498 1 60 500 1 60 501 1 60 509 1 60 518 1 60 520 1 60 521 1 60 528 1 60 530 1 60 531 1 60 537 1 60 538 1 60 539 1 60 555 1 60 570 1 60 580 1 60 589 1 60 591 1 60 592 1 60 605 1 60 615 1 60 624 1 60 626 1 60 627 1 60 635 1 60 644 1 60 646 1 60 647 1 60 654 1 60 656 1 60 657 1 60 663 1 60 664 1 60 665 1 60 675 1 60 685 1 60 694 1 60 696 1 60 697 1 60 705 1 60 714 1 60 716 1 60 717 1 60 724 1 60 726 1 60 727 1 60 733 1 60 734 1 60 735 1 60 740 1 60 749 1 60 751 1 60 752 1 60 759 1 60 761 1 60 762 1 60 768 1 60 769 1 60 770 1 60 774 1 60 776 1 60 777 1 60 783 1 60 784 1 60 785 1 60 788 1 60 789 1 60 790 1 60 792 1 61 31 1 61 59 1 61 80 1 61 95 1 61 105 1 61 111 1 61 117 1 61 118 1 61 143 1 61 164 1 61 179 1 61 189 1 61 195 1 61 201 1 61 202 1 61 220 1 61 235 1 61 245 1 61 251 1 61 257 1 61 258 1 61 270 1 61 280 1 61 286 1 61 292 1 61 293 1 61 300 1 61 306 1 61 312 1 61 313 1 61 316 1 61 322 1 61 323 1 61 326 1 61 327 1 61 330 1 61 353 1 61 374 1 61 389 1 61 399 1 61 405 1 61 411 1 61 412 1 61 430 1 61 445 1 61 455 1 61 461 1 61 467 1 61 468 1 61 480 1 61 490 1 61 496 1 61 502 1 61 503 1 61 510 1 61 516 1 61 522 1 61 523 1 61 526 1 61 532 1 61 533 1 61 536 1 61 537 1 61 540 1 61 556 1 61 571 1 61 581 1 61 587 1 61 593 1 61 594 1 61 606 1 61 616 1 61 622 1 61 628 1 61 629 1 61 636 1 61 642 1 61 648 1 61 649 1 61 652 1 61 658 1 61 659 1 61 662 1 61 663 1 61 666 1 61 676 1 61 686 1 61 692 1 61 698 1 61 699 1 61 706 1 61 712 1 61 718 1 61 719 1 61 722 1 61 728 1 61 729 1 61 732 1 61 733 1 61 736 1 61 741 1 61 747 1 61 753 1 61 754 1 61 757 1 61 763 1 61 764 1 61 767 1 61 768 1 61 771 1 61 772 1 61 778 1 61 779 1 61 782 1 61 783 1 61 786 1 61 787 1 61 788 1 61 791 1 61 792 1 62 32 1 62 60 1 62 81 1 62 96 1 62 106 1 62 112 1 62 117 1 62 119 1 62 144 1 62 165 1 62 180 1 62 190 1 62 196 1 62 201 1 62 203 1 62 221 1 62 236 1 62 246 1 62 252 1 62 257 1 62 259 1 62 271 1 62 281 1 62 287 1 62 292 1 62 294 1 62 301 1 62 307 1 62 312 1 62 314 1 62 317 1 62 322 1 62 324 1 62 326 1 62 328 1 62 330 1 62 354 1 62 375 1 62 390 1 62 400 1 62 406 1 62 411 1 62 413 1 62 431 1 62 446 1 62 456 1 62 462 1 62 467 1 62 469 1 62 481 1 62 491 1 62 497 1 62 502 1 62 504 1 62 511 1 62 517 1 62 522 1 62 524 1 62 527 1 62 532 1 62 534 1 62 536 1 62 538 1 62 540 1 62 557 1 62 572 1 62 582 1 62 588 1 62 593 1 62 595 1 62 607 1 62 617 1 62 623 1 62 628 1 62 630 1 62 637 1 62 643 1 62 648 1 62 650 1 62 653 1 62 658 1 62 660 1 62 662 1 62 664 1 62 666 1 62 677 1 62 687 1 62 693 1 62 698 1 62 700 1 62 707 1 62 713 1 62 718 1 62 720 1 62 723 1 62 728 1 62 730 1 62 732 1 62 734 1 62 736 1 62 742 1 62 748 1 62 753 1 62 755 1 62 758 1 62 763 1 62 765 1 62 767 1 62 769 1 62 771 1 62 773 1 62 778 1 62 780 1 62 782 1 62 784 1 62 786 1 62 787 1 62 789 1 62 791 1 62 792 1 63 33 1 63 61 1 63 82 1 63 97 1 63 107 1 63 113 1 63 118 1 63 119 1 63 145 1 63 166 1 63 181 1 63 191 1 63 197 1 63 202 1 63 203 1 63 222 1 63 237 1 63 247 1 63 253 1 63 258 1 63 259 1 63 272 1 63 282 1 63 288 1 63 293 1 63 294 1 63 302 1 63 308 1 63 313 1 63 314 1 63 318 1 63 323 1 63 324 1 63 327 1 63 328 1 63 330 1 63 355 1 63 376 1 63 391 1 63 401 1 63 407 1 63 412 1 63 413 1 63 432 1 63 447 1 63 457 1 63 463 1 63 468 1 63 469 1 63 482 1 63 492 1 63 498 1 63 503 1 63 504 1 63 512 1 63 518 1 63 523 1 63 524 1 63 528 1 63 533 1 63 534 1 63 537 1 63 538 1 63 540 1 63 558 1 63 573 1 63 583 1 63 589 1 63 594 1 63 595 1 63 608 1 63 618 1 63 624 1 63 629 1 63 630 1 63 638 1 63 644 1 63 649 1 63 650 1 63 654 1 63 659 1 63 660 1 63 663 1 63 664 1 63 666 1 63 678 1 63 688 1 63 694 1 63 699 1 63 700 1 63 708 1 63 714 1 63 719 1 63 720 1 63 724 1 63 729 1 63 730 1 63 733 1 63 734 1 63 736 1 63 743 1 63 749 1 63 754 1 63 755 1 63 759 1 63 764 1 63 765 1 63 768 1 63 769 1 63 771 1 63 774 1 63 779 1 63 780 1 63 783 1 63 784 1 63 786 1 63 788 1 63 789 1 63 791 1 63 792 1 64 34 1 64 62 1 64 83 1 64 98 1 64 108 1 64 114 1 64 117 1 64 120 1 64 146 1 64 167 1 64 182 1 64 192 1 64 198 1 64 201 1 64 204 1 64 223 1 64 238 1 64 248 1 64 254 1 64 257 1 64 260 1 64 273 1 64 283 1 64 289 1 64 292 1 64 295 1 64 303 1 64 309 1 64 312 1 64 315 1 64 319 1 64 322 1 64 325 1 64 326 1 64 329 1 64 330 1 64 356 1 64 377 1 64 392 1 64 402 1 64 408 1 64 411 1 64 414 1 64 433 1 64 448 1 64 458 1 64 464 1 64 467 1 64 470 1 64 483 1 64 493 1 64 499 1 64 502 1 64 505 1 64 513 1 64 519 1 64 522 1 64 525 1 64 529 1 64 532 1 64 535 1 64 536 1 64 539 1 64 540 1 64 559 1 64 574 1 64 584 1 64 590 1 64 593 1 64 596 1 64 609 1 64 619 1 64 625 1 64 628 1 64 631 1 64 639 1 64 645 1 64 648 1 64 651 1 64 655 1 64 658 1 64 661 1 64 662 1 64 665 1 64 666 1 64 679 1 64 689 1 64 695 1 64 698 1 64 701 1 64 709 1 64 715 1 64 718 1 64 721 1 64 725 1 64 728 1 64 731 1 64 732 1 64 735 1 64 736 1 64 744 1 64 750 1 64 753 1 64 756 1 64 760 1 64 763 1 64 766 1 64 767 1 64 770 1 64 771 1 64 775 1 64 778 1 64 781 1 64 782 1 64 785 1 64 786 1 64 787 1 64 790 1 64 791 1 64 792 1 65 35 1 65 63 1 65 84 1 65 99 1 65 109 1 65 115 1 65 118 1 65 120 1 65 147 1 65 168 1 65 183 1 65 193 1 65 199 1 65 202 1 65 204 1 65 224 1 65 239 1 65 249 1 65 255 1 65 258 1 65 260 1 65 274 1 65 284 1 65 290 1 65 293 1 65 295 1 65 304 1 65 310 1 65 313 1 65 315 1 65 320 1 65 323 1 65 325 1 65 327 1 65 329 1 65 330 1 65 357 1 65 378 1 65 393 1 65 403 1 65 409 1 65 412 1 65 414 1 65 434 1 65 449 1 65 459 1 65 465 1 65 468 1 65 470 1 65 484 1 65 494 1 65 500 1 65 503 1 65 505 1 65 514 1 65 520 1 65 523 1 65 525 1 65 530 1 65 533 1 65 535 1 65 537 1 65 539 1 65 540 1 65 560 1 65 575 1 65 585 1 65 591 1 65 594 1 65 596 1 65 610 1 65 620 1 65 626 1 65 629 1 65 631 1 65 640 1 65 646 1 65 649 1 65 651 1 65 656 1 65 659 1 65 661 1 65 663 1 65 665 1 65 666 1 65 680 1 65 690 1 65 696 1 65 699 1 65 701 1 65 710 1 65 716 1 65 719 1 65 721 1 65 726 1 65 729 1 65 731 1 65 733 1 65 735 1 65 736 1 65 745 1 65 751 1 65 754 1 65 756 1 65 761 1 65 764 1 65 766 1 65 768 1 65 770 1 65 771 1 65 776 1 65 779 1 65 781 1 65 783 1 65 785 1 65 786 1 65 788 1 65 790 1 65 791 1 65 792 1 66 36 1 66 64 1 66 85 1 66 100 1 66 110 1 66 116 1 66 119 1 66 120 1 66 148 1 66 169 1 66 184 1 66 194 1 66 200 1 66 203 1 66 204 1 66 225 1 66 240 1 66 250 1 66 256 1 66 259 1 66 260 1 66 275 1 66 285 1 66 291 1 66 294 1 66 295 1 66 305 1 66 311 1 66 314 1 66 315 1 66 321 1 66 324 1 66 325 1 66 328 1 66 329 1 66 330 1 66 358 1 66 379 1 66 394 1 66 404 1 66 410 1 66 413 1 66 414 1 66 435 1 66 450 1 66 460 1 66 466 1 66 469 1 66 470 1 66 485 1 66 495 1 66 501 1 66 504 1 66 505 1 66 515 1 66 521 1 66 524 1 66 525 1 66 531 1 66 534 1 66 535 1 66 538 1 66 539 1 66 540 1 66 561 1 66 576 1 66 586 1 66 592 1 66 595 1 66 596 1 66 611 1 66 621 1 66 627 1 66 630 1 66 631 1 66 641 1 66 647 1 66 650 1 66 651 1 66 657 1 66 660 1 66 661 1 66 664 1 66 665 1 66 666 1 66 681 1 66 691 1 66 697 1 66 700 1 66 701 1 66 711 1 66 717 1 66 720 1 66 721 1 66 727 1 66 730 1 66 731 1 66 734 1 66 735 1 66 736 1 66 746 1 66 752 1 66 755 1 66 756 1 66 762 1 66 765 1 66 766 1 66 769 1 66 770 1 66 771 1 66 777 1 66 780 1 66 781 1 66 784 1 66 785 1 66 786 1 66 789 1 66 790 1 66 791 1 66 792 1 0 0 0 linbox-1.4.2/benchmarks/matrix/bibd_12_5_66x792.sms.gz000066400000000000000000000456731274717217100222200ustar00rootroot00000000000000‹ .Rbibd_12_5_66x792.smsE[²í¨®DÿO+v& g#nÿ»s(‡+*b;k˼”¬)EüËÞÿþïëßßÿî÷ïyÿÚû×ß¿ñþÍ÷o½ûý»~s™§×<¾æù5ÖHX#bŒ5BÖHÙ#e«#e”=RöHÙ#e”=RöH9#匔£¦Œ”3RÎH9#匔3RÎH±‘b#ÅFŠ©GFŠ)6Rl¤ØHñ‘â#ÅGŠWÇŽ)>R|¤øH‰‘#%FJŒ”)¡ñ)1Rb¤ÄHÉ‘’#%GJŽ”)9RRï7¡÷Ó©ýtj?ÚO§öÓ©ýtj?ÚO§öÓ©=:µG§öèÔÚ£S{tjNíÑ©=:µG§ö?Ua«#e”=RöHÙ#e”=RöH9#匔£¦Œ”3RÎH9ªË¦Úª·^¹ôÎ¥—®MyU^ï]zñÒ›—^½ý yzûÒëï?’w$ïHžIžIžIžÑ±’g’g’g’g’g’ç’ç’ç’ç’猔ä¹ä¹ä¹ä¹ä…ä…ä…ä…ä…äC/y!y!y!y)y)y)y)y)y)yÉ\’¼”¼”¼’¼’¼’¼’¼’¼’¼’¼brJ^I^K^K^K^K^K^K^K^K^3Û™îšï?MøŸfüOSþQÂy*yžJž§’çßüÝß¿ñþÍ÷oM™ùŸ£ÿëyä7—f#Í$näÙ´‘h#ÅFŠ)>R|¤øHqÕj¤øHñ‘â#ÅGJŒ”)1Rb¤„Ú¼—®[×£+÷]×Ð5u-]çU£“G:y¤“G:y¤“G:y¤“G:y¤“G:y¤“G:y¤“G:y¤“G:y¤“G:y¤“£ùs]C×Ô•ûó¾½~ºj¬­ëÑÕt•¼%yKò–ä-ÉÛ’§þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝêß­þÝô¯&ì֌ݚ²[svkÒnÍÚ­i»5o·&îÖÌÝšºûÍ]{:ioñ³Yül?›ÅÏfñ³Yül?Í´ÑLÍ´ÑLÍ´ÑLÍ´1•lL%SÉÆT²1•lL%SÉÆT²1•lL%SÉÆT²1•lL%SÉÆT²1•lL%SÉÆT²1•LšiÒL“fš4Ó¤™&Í4i¦i2­B¦UÈ´ ™V!Ó*dZ…L«i2­B¦UÈ´ ™V!Ó*dZ…L«i2­B¦UÈ´ ™V!“fš4Ó¤™&Í4i¦I3MšiÒL“fš4Ó¤™&Í4i¦I3MšiÒL“fš4Ó¤™&Í4iæßUíÝjïV{·Ú»ƒrz¯Ú»ÕÞM{5¶fÐÖÚšC[“hkmM£­y´5‘¶fÒÖTÚšK[“ik6mM§­ù´KòJòJòJòZòZòZòZòZòÞªëoô§™>Ʀ±éclú›>Ʀ±é£™>+¡ÏJè³ú¬„>+¡ÏJ裙>šé£™>šé£™>šé³·ðÙ[øì-|ö>{ Ÿ½…ÏÞÂgoá³·ðjV”)=RZÍü˜¥ÆÌ"èZ]‹ kt-‚®EÐ¥š.Õt©¦K5]ªéRM—¡æ2Ô\†šËPsj.CÍe¨¹ 5—¡æ2Ô\†šËPsj.CÍe¨¹TÓ¥š.Õt©¦K5]ªéZ¼\‹—kñr-^®Å˵x¹/×âåZ¼\‹—kñr-^®Å˵x¹/—jºTÓ¥š.Õt©¦K5]ªéRM—jºTÓ¥š.Õt©¦K5]ªùwÕ$Ùš%[ÓdkžÍ“óÓ¤ÿm]®¦«ëº¦®¥«ä©ŸÏ’¼%yKò–ä= Œg¼Æ,—1º³Ë‹ÙåÅìòbvy1»¼˜å2F7cLÐ4Æ1AcLÐÝŒYc–Ę%1fIŒYct3F7ct3F7ct3´amØCöІ=´amØCöІ=´amØCëfHIChÈ Y ! 4d†”4´.†ÖÅкZCëbHICJRÒ’†”4´û í~B»ŸÐî'´û í~B»ŸÐî'´û í~BJZCëbh] ­‹¡u1¤¤!% )iHICJ²CaÈ" Y„!‹0d†,ÂE²CaHICJRÒ’†”4´Þ…Ö»ÐzZïBë]h½ ­w¡õ.´Þ…Ö»’†”4¤¤!% )iHICJRÒ’†”ôï*E:+u-]%oKÞ–<Í¿#•;Ò¹ó”.ßÞ2ǘÍY9s”4ç¸%ç¸%ç¸%ç¸%ǘÍY9s”4g/˜³ÌÙ æìsVÎ%ͱMslÓÛ4Ç6ÍQÒœE2g‘ÌY$sÉ”’¦”4¥¤)%M’¥NÉR§d©S²Ô)Yê”,eÔ¦VД’¦¶©m`j˜Ú¦VД’¦ŒÓ”qš2NSÆiJIS+ej¥L­”©•2¥¤)%M)iJISG©#‡Ô‘CêÈ!uä:rH­ )%M§)ã4eœ¦ŒÓ”’¦VÊÔJ™Z)S+eJISJšRÒ”’¦¶a©mXj–Ú†¥¶a©mXJIS+ej¥L­”©•2¥¤)%M)iJISFfÊÈL™)#3ed¦ŒÌ”’¦”4¥¤)%M­Œ©•1µ2¦VÆÔʘZSJšRÒ”’¦”4¥¤)%½W•—ÊéÜyó±ÞÑOÍV³Æ®­YBk”´æø³æø³æø³f«Yc×Ö,¡5JZs6Ss6Ss6Sc×Ö,¡5JZ³W¬Ù+Öìk–Ð%­1ZkŒÖ£µ¤¤¥³´b–VÌ’’–”´¤¤¥#ëÒ‘uéȺ´ã,™·¥´¤¤¥3™Ò™LéL¦dÞ–VÐ’’–vŠ¥bi§XZAKJZ2[KfkÉl-)iiÅ,­˜¥³¤¤%%-)iéü¯tþW:ÿ+™·¥´¤¤¥bi§XÚ)–VÐ’’–ÌÖ’ÙZ2[KJZZ1K+fiÅ,)iIIKJZ:)‰”ÎDJ+hIIKfkÉl-™­%%-­˜¥³´b–”´¤¤%%-íøJ;¾Òޝ¤¤¥³´b–VÌ’’–”´¤¤%3µd¦–ÌÔ’’–”´¤¤¥³´b–VÌ’’–”´¤¤WÙn}úÌöõì:{ Üž%´GI{¾Jô|•è9êÙuö¸=Kh’ö™ö™öì:{ Üž%´GI{ŽpzŽpz Üž%´GI{ö’={ÉÖ ÚRÒ–Û2c[JÚZ9[+gKI[JÚúžÔ:jí=[æmkm)ië ´uPÚÚ{¶ÌÛÖ ÚRÒÖñMëø¦eÞ¶VЖ’¶ö’­½dkm)iËŒm™±-%m­œ­•³¥¤-%mηöž-󶵂¶”´u|Ó:¾i™·­´¥¤­½dk/ÙZA[JÚ2c[flKI[+gkål)iKI[–-󶵂¶”´µ—lí%[+hKI[flËŒm)ikål­œ-%m)ië8¦µ‚¶”´eÆ¶ÌØ–’¶VÎÖÊÙRÒ–’¶ö-%m­œ­•³¥¤-%m™³-%m)ikm)éßËr.ó¹ô§ïú?}¼ÿéCýOßæú*ÿÓ÷øŸ¾¶ÿô-ý§æ?}ÿé{øO_ÂúþӇfÿôåú§Õ?}¦þéõO£úðüӷ柾2ÿø¾üãƒò/È?>ÿøfüãcñ¯Ä?>ÿø>üãÃðOšüeèŒÙ£¾Þ[…é™E×ÌNõ:eVÜHÿÌvõnõ)/^Z”iÊ4eš2ôÜ¢ë6]7:þÀ|ÓBõÙßDY<¾yjóÔ7y˜=c'?7Þn”¡ë6]7{Ö6€j8…™q³,_ÀÜÛLº1›/HêL÷ÎÒ”a*næâf2núy3-Çp~€ÒáÃHò¡Ÿý<›Ù€â- 3iC0œðO­O]yjóÔæ)Fç0Ÿgá~€Ç‡ä8´ä„»>=øïಃ³Þ:8áàbƒ >3¸Éà ƒ‡ þ/8¹àЂ Þ+¸¯à£‚? .(8Ÿ,Øaáf²ð+Y8”,ØaáBòùŽ|Î#Ÿ×Èç6‚ßȤ3æäêÛ…íëa*æH¦SÆ€ÂA™ä©äV-ÓY³Y¾ )Ó”¡ã=·èºM×ÍÊÿÀÓ‚2ÿMß<µ)¼)Ãì™Ýó àq£ŒQ†®ÛL*±Ã’¡þ¯ð€§‚§‚ÂôêìðR&âf&n¦â¦{7“qÓÏ›i¹éðM‡o:\ì°´µ~:µ@­~’|èp±Ã’ðO1‡I{˜«=kážbtóYì°`‡;ìq@o©5îRkü¥Ö8L­ñ˜Zã2µÆgjÓÔ}1’³$hIÒ’¨%YK–¤-‰[’·%oS/ÉÛ’·%oKÞ–¼-y[ò¶äÑÌ#y‡†JÞ‘¼#y'¸Ïÿ=Á#ß3ßCÿ=•€P£&†dC²}•A²!ÙlH6$’ÉŽdG²#Ù¿v"Ù‘ìHv$;’Éä@r 9_"9H$'’ɉäDr"9‘œHN$'’É…äBr!¹\H.$’ É…äBr#¹‘ÜHn$7’ÉäFr#¹%Ù~?Àl*ù3€€ ý4ÔÐPCEmtô Œ—Ö7­5~ZkµÖxj­qÕZ㫵䬵䭵䮵䯵䰵䱵䲵䳵䴵䵵䶵䷵丵乵亵仵伵併侵俵äÀµäÁµäµäõäĵäŵ䯵äÇuÛs€¾9ð•q@è–¯_è˜CϺæÐ7‡Î9ôΡ{ýsè CºèÐG‡N:ôÒ¡›ýtè¨COºêÐW¶œÅè,†g}eð͈ïoÈóÍ oF}#y#y#y#y#ù ™±°óÍ&$3ÆXcaŒ…1öMÒo–~Óô›§ÿMT$Sõ›«ßdýf+caŒ…1ÆXcaþé’ c,ì &®1s©kÌ]cò³×âS/$’Éäáe.ï°ûüU1­ò¦UÞ´ÊËIlÉKlÉMlÉOlÉQlÉSlÉUlÉWlÉYlÉ[lÉ]lÉ_lÉalÉclÉelÉglÉilÉklÉmlÉolÉqlÉslÉulÉwlÉylÉ{lÉ}lÉì¶ç,À€¾Â [\ïÕk,°Æk,°Æk,°Æk,°Æk,°Æk,°Æk,°Æk,°Æk,°Æk,°#Œ`0‚Á#Œ`0‚Á#Œ`0‚Á#Œ`0‚Á#Œ`0‚Á#üzÃè £7ŒÞ°ü S zÃè ûzƒ©cÌcò³Ç˜>Æü±Br!¹\Hn$7’ÉäFr#¹‘ÜHn$·$ûïX€ 8<Éã”¶Æ+í΀Ð5u-]uÆ]¾iKÎiKÞiKîiKþiKjKjK.jK>jKNjK^jKnjK~jKŽjKžjK®jK¾jKÎjKÞjKîjKþjKkKkK.kK>kKNkK^kKnk·½? %8˽³Ü;˽³Ü;˽³Ü;”àP‚C %8”àP‚cì:Æ®cì:Æ®cì:Æ®cì:Æ®cì:Æ®cì:Æ®cì:Æ®cì:”àP‚C %8”àP‚³:;«³³:;«³³:;«³³:;«³³:;«³³:;«³³:;«³³:;”àP‚C %8”àP‚C %8”àP‚C %8”àP‚C þ§gH@$Ù×°p@2ƒâ Š3(Π8ƒâ(¬o$o$o$O3ÜþÓ5æ:OÊ!nÉ#nÉ%nÉ'nÉ)nÉ+nÉ-nÉ/nÉ1nÉ3nÉ5nÉ7nÉ9nÉ;nÉ=nÉ?nÉAnÉCnÉEnÉGnÉInÉKîµc6àk¢€@‚=#3! ‡À¼ÌûÀ¼ÌûÀ¼È!0 0 0rÈ! ‡€rö«Á~5دûÕ`¿ìWƒýj°_ ö«Á~5 ‡ÀL€ÀL€ÀÈ! ‡€rÈ!0°;0°;0°;0°;0°; ‡€rÈ! ‡`UVõ`UVõ`UVõ`UVõ`UVõ€rÈ! ‡€rÈ! ‡€r¸:†ääääƒäƒäó©&’’ÇÔ'¼K8Kל댽ñ–<ñ–\ñ–|ñ–œñ–¼ñ–Üñ–üñ–ò–<ò–\ò–|ò–œò–¼ò–Üò–üò–ó–<ó–\ó–|ó–œó–¼ónå4ä·ðµ•2‹2‹2ë+ã½Y[‡Ä`HÈ!Ù×'ûúd_Ÿìëƒ!!‡ÄöOlÿÄöOlÿ„« ± « ± rHÈ!!‡„’c©äX*9–JŽ¥’c©äX*1rHlÿÄöOlÿÄöOÈ!± « ± « !‡„rHÈ!ÙG'ûèd죓}t²NÈ!± « ± « !‡„rHÈ!1Þã=1Þã=1Þã=!‡„rHÈ!± ± ± !‡„rHÈ!!‡„.à©ÃS‡§f†óß­ÀÖµæ:ë—<—\—|—œ—¼—Ü—ü——<—\—|—œ—¼—Ü—ü——<—\—|—œ—¼oå @Ë~ Ì¢Ì×êu_™4-6Ú,ƒ¡ ‡âd¯8Ù+NöŠMDa0äPìþ‹Ý±û/ †‚Š}A±/(ö9æAaæAA9äPLÓÅÁt±‰( †‚ŠÝ±û/vÿ…ÁPC±/(öž  ‡Â<(̃Â<(È¡ ‡‚Š“´â$­8I+ †‚Š}A±/(ö9æAaæAA9äPlß‹í{±}/È¡0 ó 0 r(È¡ ‡bPìŠ]@A9äP˜…yP˜9äPØ>N‡wþ]{®ób9.y.¹.ù.9.y.¹.ù.9 .y .¹ .ù .9!.y!.¹!.ù!.9".y".¹".ù".9#.y#ÞÊÿ6À ÌZPx%€§¶jthò±¯/‚ΠŒÀwK= MDc04äÐ6Í&¢1rhŽš#‚Æ`hÈ¡Ù)4;…†;¡±rhÈ¡ùXÕ,4›ˆÆ`hÈ¡9l›MDc04äÐ4GÁÐC³Shv 94vBc'4äÐCsºÞl"ƒ¡!‡æˆ 9"h ††šB³ShÈ¡±;¡!‡†š#½Æ`hÈ¡Ù)4;…†;¡±rhÈ¡9hÈ¡±;¡!‡†š-CC 94C‹öø:Þ Ø\·þ<ñMäë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åë¸åëx+ýû ”Y”Y` /:dé‹.9´ùØ×*<»ˆè§°=vü%‘“@`ÒïtÄì".hêÓ<Þ¼´UÆèa‡ ÀÈÑ-F· ;Ç$r’ÞN Ó‡Ž˜£… zxœN™£…;¿`|è£[Œn1ºeL†xjñ0Çðøá©Ca&‰1ÉæháÞ΄;,-<@§LP†i4&ÃLÄ ít¯1ÇŒIfôª1ÍŒî5&Ú-¼MºWì°´¸³œYçt¸ÓáN‡‹–Ž. Ÿîuæ¡3ýœw4rL†xб˜mĨ«ØaÉdx€§g>‹ì°`‡=áN¡áNÁáNáán]m^m_m`mambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmx GÈ#äÆrã¹q„Ü8Bn!7ŽGÈ#äÆrã¹q„Ü8Bn!7ŽGÈ#äÆrã¹q„Ü8Bn!7ŽGÈ#äÆrãyç5tjèÔЩ¡SC§†N Ý>9ª¡SC§†N :5tjèÔЩ¡5t$’Éä@r 9H$’ɉäDr"9‘œHN$'’ɉäDr!¹\H.$’ É…äBr!¹ÜHn$7’ÉäFòéãùwiýßOWýyøî(6äÑVäÈè8°Å-lq`‹[ØâÀ‡P‡‡X‡‡`‡‡h‡‡p‡‡x‡‡€‡‡ˆ‡‡‡‡˜‡‡ ‡‡¨‡‡°‡‡¸‡‡À‡‡È‡‡Ð‡‡Ø‡‡à‡‡è‡‡ð‡¸Jn\%7®’WÉ«äÆUrã*y5<ÔðPÃC 5<ÔðPÃC 5<Ôð|5L$'’ɉäDr"9‘œHN$§$‹-lq`‹[ØâÀ¶8°Å-lq`‹[ØâÀ¶8°Å-lq`‹[ØâúÄR¸)Ü*¿`6à à€$ HFµÝ ”+Ю@½ýŠ…ä…ä…ä…äd”1PÆ@e ”1PÆ@c#y#ù y¦º91®’Wb蚺–®º?3mM ¶0¬ÃJ0¬ÃJ0¬ÃJ0ØÂ` ƒ- ¶0ØÂ` #L©§ÔTjD*5B•±J`¥F´R#\©¯ÔXjD,5B–1K ¥¸Q>PÉ‘•`X †•`X ¸QnÜ(7n”7ÊåÆòjx¨á¡†‡ž¯†å€$€:Õh$7’Éä–d§]N»œv‰- ¶0ØÂXÔEÝXÔEÝXÔEÝXÔEÝXÔEÝXÔEÝXÔEÝXÔ ¶0ØÂ` ƒ- ¶0ØÂ` ƒ- ¶0ØÂ` ƒ- ¶0ØÂ`‹?€:êÉÉÉÉL¶`²“-”`P‚A %”`PÂlHF+­ŒÑJŸ]‡Ë¨åvEŠv…ŠvÅŠvkºN0›Â¡ gŸàìœ}‚³Opö ]8ö‚c/8ö‚c/8ö‚C]8táÐ…CN(b'±ŒØ‰Fì„#vâ;‰ˆÄNHb'&±cSàbyqË€P˜æÈ^pìÇ^pìÇ^ÀÅrãb¹q±Ü¸Xn\,/h$7’Éä–dz:çÎé§sÐát8táØ Ž½àØ Ž½àØ ]8táÐ…C]8–ºc©;–ºc©;–ºc©;–ºc©;–ºc©;táÐ…C]8tᘎ à˜Ž à˜Ž à˜Ž à˜Ž àÐ…C]8táÐ…C]8táÐ…C×KÉŽdG2Š(Z h¢33ɳŜN„ö!«B.–÷Êÿ—®=×±‚G`TtGÁ‘Apd][‡`ël‚­C@åXåX]tÐE@A4ò y<HD$B’;À¨ÀéòþBudFN—Ð.m‚­C°uÀéòž¢]‡vÚuhס]‡vÚ5_G@¾2jŽ?£" ‹`ël‚­C°uè"°Ë!°Ë! ‹€.ºè"Ø¢[ô`‹lу-z°Eè"°Ë!°Ë! ‹€.ºè"°ýÛ?°ýÛ?°ýÛ? ‹€.ºè"°;!°;!°;! ‹€.ºè" ‹€.þ£(ZOÍͺLŸ¤6)«BN—;•X"õ•4õ=$9ŸH¶‰Q‘ÐErŒ˜#&LjÉÖ#1*ºHŽ’ã„ä8!1*ºHvÉn"ÙM$t‘˜‰ ‘˜ ]$t‘ÐE’§ ITd*HÎ'’­GbTà†ySØ)ì” ú”v‰.’ã„ä8!9NHŒ Ü0à]´ëЮC»dB$&DbBà†¹qÃܸa^°(ÃôЗ‘dë‘ ]$Ç ÉqBrœ ]$»‰d7‘ì&ºHLˆÄ„HLˆ„.ºHè"9¶KŽí’c»Ä¨Hè"ÙM$»‰d7‘ÐEbB$&DbB$t‘ÐEBÉy@rœ$t‘˜‰ ‘˜ ]$t‘ÐE²wHöÉÞ!¡‹„.ºHLˆÄ„HLˆ„.ºHèâ‚WÃú§ËLƒÒEióQ²*ä†y¯úûpBqŠYP[¨(è¢øÆP|c((Š­GaTtQœ5gÅÖ£0* º(ŽŠ£†Â¨(è¢Ø_û‹‚. [¢°%k¸‰kø}@'耢ØzFŽ™|·ÔP[¨À1óïAí:´ëЮC»dTà˜¹‹ýE±¿À1óPx-O-ULÅÖ£0* º(΋³ÆbëQ]G ÅQCaTtQì/ŠýEA…-QØ]tQî[¨(è¢8j(Ž £¢ ‹bQì/ º(l‰Â–(袠‹âÔ°0* º(öÅþ¢ ‹Â–(l‰‚. º(N º(l‰Â–(袠‹b£QÐEA…QQÐEÏWÑÖÖQf댢µùhYr̼W=®oÍ1fs@Ñl=£¢¡‹æKdsŒÙP4[ƨhè¢ù"ÑP4[ƨhè¢9l¶QÑÐEs Ñ ]4;,>pô cÌæ€¢Ùz4F®š]xü%‘“@`2ÅS´ëЮC»íÒÖ£1*pÕ|ÀP5´ãÀUóÐS:Æl(š­GcT4tÑ|‘h(š­GcT4tÑH6[ƨhè¢9…hŒŠ†.šGCQÑÐEs@Ñl=£¢¡‹æ@²Ùz4FECÍ)DcT4tÑì8ºhŒŠ†.š­GcT4tÑœB4FECÍŽ£¡‹Æ¨hè¢1*ºhv ]4FEC ]4FEC-ºøkAÍåíÂÎo¾xÜ«nOÚ¥ßl>îUåŽî+ÖDW?2YýHYõ#GÕäT?²Sýô±ãäPÃ1* LòTr«€Ç‹2E™¦LS¦)ÓT¬õŠ¡‹6àŒ>ÑSó±ã¢›6€s ;e9´k( ûiàÐÅ´ëЮC»í:´k(ÎO[À Ð+†.ØžZzj>v\à à½tŒŠ(ØÎÅÀã´}( LQ¦¾2ª³Ó CPÕæ©ÖSAoÌŪsÐö¡‹(³(³)ƒ¶ÌÖã^^ŒQqª4tñ’Q™1* Œ!™”hŒŠ œ§‹@­Æ¨x€§P´`t‚Ñ T/˜™C<9kr*=ìQ~Ø£±GbRÄåˆ=òÙ¼ïØ€ï–ÀK·^§lv‹tv‹|v‹„v‹ŒvK|`6à €ä…ä…ä…ä…ädš³iΦ9›ælš3RØ€0ÀW8I—: ß­0ÔÐö7 54jhÔÐèp£ÃÇ!ûà{ùFÉ4ÇÎ7ÈH¦9Fsœ áÌgJÌ>å¯pPUc¬”ìHv$;’ÉŽdG²#Ù‘HIŽH@T8ò pnÀÀ@r"9‘\H.$’ É…äBr!¹\H.$7’ÉäFr#¹‘ÜHn$7’[’ó÷<ÉãÅy¶èb+èVЭ [9@·’€neÝÐÅ&Ýæ&ßæ&áæ&ãæ&忯ÙÐņ.6t±¡‹ ]lèb“Šr“‹r“Œr“r“Žr“r“r“‘r“’r““r“”r“•r“–r“—r“˜ŸÎƒwæÁ;óàyðÎ`“ø`Tèâv÷w÷x÷y÷°aùrå~Ip¿,¸_Ü/î—÷Ë\û¥®ýr×~Ék¿ìµ_ºÙ/ßì—pöË8û¥œýrÎ~Ig¿¬³_ÚÙ/ï,¾œ‡H–‡à”‡à”‡à”‡à”‡à”‡’‡¨‡¨‡¨‡¨‡¨‡Ø‡Ø‡Ø‡Ø‡Ø‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡‹§ÎƒŸæÁOóà§yðÓ<øi^L£`. jÌ—‘œH.$’ É…äBr!¹$Ytq ‹]èâ@à`l€ƒ p°6ÀÁ8Øà`èâ@º8ÐÅ.tq ‹]èâ@€‰”L¤d"%)Q¢D‰%J”(Q¢œ•Ñ&=¹WÞÿõ¹ÎH›2„›R„›r„›’„[è0èÂHÃmäá6qÇ$î=dæ=¤Þ=äÞ=$ß=dß½`S†VÈr0,Ãr0è  ƒ. º02N)§œÓFÒi#ë´‘všP˜gÎ 8R/ #¯8¼Âh©è‚p‡p‡p‡pÊÐ.£]F»Œj/µï¥´Ëh×ü°ûÊeâ+ãæ/]{cï`쌽^ÍƒÇæÁcóà±ùe’2I™¢L}ó‘2E™¦L/€Þ¼]–ƒa9–ƒa9taÐ…A]Æ¿aüÆ¿aüÆ¿aütaÐ…A]v‚a'v‚a'v‚a'taÐ…A]taÐÅ *ËSLìD‰r–~ÿ§Ëh´¢ZÞ?/])Ös • Ý×…³õpŒ ‡.\R °©Œ¶ŽQáÐ…sžàœ'8ç ¤>ä>$ >d >¤ ¾À(ó½”FÊ„pè¡ ‡.œ\ôN2z'½s@A˜Ìƒ3ç”AÎ|"y€._’l´Ktáœ'8ç Îy!'q%Á#Á#Á#/ ]ö½Ô)C»Œ¡]8táú¥÷P»œ1•QáÐ…sžàœ'8ç 8s>À­d¢%'e’2E™¢LQ¦¾2¼¢¨aS¦  Nš¼T» g7áì&ºpLÇ„pL‡.ºpèÂ9pœ‡.Â1!¡ ‡.ºpöÎÞÁÙ;8táÐ…CŽ á˜Ž áÐ…C]\ðjÿt™¹:£PÀË{ÕýQ‘˜`÷zæªcÌà€"ØzFE@¡©è5:  ŸñÜÚ?·¦É$5¾àl€¾[ª±Œ Rr’_à À+œÂN}œ§B;¼ôÐ{‡ʨè"ô!õ¤Ë%Ðh ŒŠ€.‚ÃÆà°‘Ø“Ð.£]fß-µËF£9F+Œ]¶D`KtÐEè§ßw>˜$Çi©s†W8=æ¼Â(ºŽ‚£œ9/(ÊeŠ2Å|m^ÑnêÓ<ÕÌù`6çp+¹U?eŠ2E^*ºl‰À–è" ‹àØ00*ºöÁþ" ‹À–l‰€.ºNºl‰À–è" ‹`£ÐE@QÐE>¿‹“úâ‘:ÊLQ(æIY)ºÈ‰Nqº-9:ÆL(’­GbT$t‘|HMŽ1“ R+_°àÀS‡[4Gt‘H’cùÊ|owÊøP §0= £"¡‹äcGrŒ™PJóàÌù…]o×1fr@A4Ê Î€xŠví2Úe´ËFãíö½VCjŒ©v ]$FEBÉ1fr@‘l=pæ|@Oé“Dr@‘l=pæ|€Ç3”)ÊeŠ2Å|mªÑn¦póÒÖSA+‚—ʨHè"9L¶‰Q‘ÐEr ‘ ]$;Ž„.£"¡‹dë‘ ]$§‰Q‘ÐE²ãHè"1*ºHŒŠ„.’GB‰Q‘ÐEB‰Q‘ÐEB5~¥£¥/¥£ÌÒ…‚bÞ«Ê…îë“hñ±£8Æ,(Š­GaTtQ|ì(Ž1‹ ²`ôe¤9ólN3ÈKý€$‹[n èØ€@2-Ù4eÓ–Mc6­Ù4gÒÊ>€äDr"9%YR[¿-½ ~nQÃC 5Ô—‘æÌ³9Í ¼å’,ni…~`ÉÔp¢Ï"M>€äDr!¹\H.$’K’õe¤9ólN3š} žŸ¨óÛ®  jŒ§å °`¦)Ó&˜6Á´ ¦M0mäyÕu6‡Íö¤1<JiÎ7šKc“4lÓìe+¥áŸÆ\iˆ¨!¢j6@½ì 0ýœôsÒÏI?'ýœ†dC2Ꙩg¢ž‰z&Ꙩg:’ßêy+õ›ë«±ý†/þ®¯·îuëzt5]Un¾¤^ð*tsë{Ç[Û(€ _\°`À …ƒÂAaZ²3 (ըɅäBr!¹$y¾¤^@s/Ÿ=€¨°Ñœù4òÀ€(ÌÈCcŒ18ÆèL$êPªÑ?’ÉäFrKòðÅ (€$ÏFÅpý¼ )Ün¾0|./`&3!˜ A×Í9H3y!y#™~%”`P†/ 03!˜ ÁLfBÐÏA?ýôsÐÏA?_¯ùéºÉÓÖ?þžú{òÿ©kéªòó)õ‚™ ¾Xúué °zjÌ ÃUÓpÃ4Ü0 7Là ónª;¶Ã Ó„M6Ø´beŠ2E™¢LÿôÙQ+-_,ýºô çè)£¥â Ü0 7Là ÓpüF»Œví2Úe´Ëh—Ñ.£]œúÊ4eZe&ö¤{Òpç4\5 7Là ÓpÃ4Ü0/àc;ç)º%Q¢D‰ræóžß®Ûžo©¶gÿa[vÅ_ì ˯K×Íó&à  GÄ[?/}À*3» ¨ˆøbëãÈ @™ø…iÏl(  MØ´aÓˆM+ľØðÅMmN™™ [™èˆœFÂn#·‘qÛH«m¤Õ6ÒjnœÐ.ñÅÖÇ‘€2ù Ó.£]F»ŒvɈØ#bþØðÅV¸ê@͙݇vÓˆ­iÐ4h4/@r y6$€2L‰`J=&#bþØðÅÖÏ»hzUfN›†g¦á™ixf^@gL’`’L’`’Ä×äV5æゃ²Ù vt¯øbþØÚ><`ð=/¾Ø#bcDløbþø£Vg~¼nÊ2ngÎ)ìhÿqdWñÅ™Hý÷jz~Xüèâ="³âÀG¿/}@¯™C Ãó•_}y@r´û8˜¾8:nx€Â4aÓ†M#6­_¬‰ƒ5qà‹_\ &ÏÇT#º¦9ÓiÃ4B_¡/ à†§‘ÂÛHØm¤ç6Òs_@ F»Œví’Yqà‹Ãã°Å8ðÅÁš8X¾8ðÅQk#&§áÇiÕ4Bh3€™FTL#ô¥èÒki„µ4‚X!+•F€J#.¥…ÒˆBiŸ4‚O1' ?Î èLñÅÑqÃS^A¯“$˜$A¯“$˜A¯Š/|qtÜùt eCû’^ÕãÀkâ`MøâÀ‡S†_¬‰ƒ5qà‹_ö¾8ðÅÁ¬8ð…ͯ×M¹ÇM9ÅM9ÃM¹ÁM¹ÀM9ÀM¹¿ïó3<¦³Ìôˆv†Yað…é¦f:˼€Šh÷a˜_˜>\ Óñ…éTòÊІM#6­Yað…±é0øÂ0+ ¾ •¹VÓȧš2ß«þ>ÝçÚ¸ì _¸>§>AÐ#:¤pvŽYáð…ë“ÇàÖÞP&>@á¤pR˜lš°iæ›Vh÷á˜_8f…Ã_¸>§˸šä *3Ÿ<`6·Î€2ù Ó.£]F»tHáì>³Âá g÷á˜_8f…Ã_¸>yÑ8à–#0*¿8@…ƒ™ ¾ ¦ýÒzi½|ÀH€Ú.¾pøÂ9Ët)ðä¼ (\”¡3ƒIL’`’½*³Âá \: —Îô”)œÝ‡cV8|áì>³Âá ǬpøÂá g÷á˜_8f…Ã_8f…Ã_8|Ñ×”ÕÜ”­Ü”…Ü”…Ü”…Ü”…Ü”…ü>¿uCßGBñ4à£Ì¡è6èuú>ú5È (€$×űpH¦%»‘ÜHn$·$Ÿß°päù™‘ñ܈§i$17’˜IÌ$æFªq#{¸‘=Üðà4²‡ÙÃßFŽo#Ç·‘ãÛÈñmdâ62q™¸LÜF&n#·‘‰ÛÈÄmdâ62q_`fœ!p†À‚ñº0be>@5‚`‚!˜uFDK#¢¥Ñò$ H¦ë‚:ë¼38ÈÀÝófoÐÏÉLHfB2’™ôsÒÏI?'ýœôsÒÏI“:'uNêœÔY6H@.1°LÀ2€¹‘Ìdn$s#ó+L5’j$Õ`>çÌ眾¦Dç¦æ¦Ää¦Ää¦Ää¦Ää¦Ää÷ùQæäûH©€š 5@ßG¾Hýä 8½T|‘œw&É%1=¾Hø"á‹„/nÚ÷$ ”Y?€Þ>¿03’ yÍ€šF^s#¯¹‘×ÜÈ>n$7Š Å N#¡¸‘öÛHûm¤ý6Ò~i¿äÜFrn#9·‘œÛHÎm$ç6’sɹäÜFrî ¨¡ø‚0œð8CàL gtÞ™d$;”Äô ¤å”aˆ/ii„´4BZ>ð• o§ª:ïL2ð÷|@'UMªšT5©ê¸lΘPf}e ·‹/¾Hø"á‹äü"Ù˜$G²CILÄôHø"á‹„/¾Hø"á‹?Pœ´$=Ô0èù çÅÄ´|€2‡2Fê#¾ ¦¥ÓòW'Ȭ(ø¢8ï,2pø´‚/ #¢0"p˼€ÎL&I2Ir}eTñƼ€æ$ãž4'iNÚW94GçÅÆ¤Ø˜|QðEÁ…Q…QðEÁ_\ðÚÞÔ×”ÝäÇiJ_nJ_nJ_nJ_nJ_~ŸõƉó‚üïH ·¦B8q^°gðÝ’í>pÙ44 wLÃó‚VñE³Åh¶ _4ÖDcM4|ÑðŪØüÆÌpâ4²ŸÙÏìçFHM#û¹áÄi¤7ÒŽiÇ´ãFÚqÛÓpÙ44 wLÃÓHám¤ð6Rx)¼ÞF o#…·‘ÂÛHám¤ð6œ8/ˆ¨ªâ q>ÀSL›`‚žz>¨ªÌІ/jyQ† zLÖA-à)WÅ´ûÀeÓpÐ4Ü1 wLkÌŠ†/š-F³Åhø¢±&k¢á‹†/ZNÛ†[§áÄi¸l.›†§¦á—iøe;¦}^˜ _4ÖDcM4|ÑðE³×hø¢á‹Æ¬hñ…+£º+Cº+ó¹+£¹+£¹+£¹+£ù­úOίÌ.pSŠR (\~3ú½_/šSŠ ÎPÇ£—ÎOB/θõ&é<þºêê8™ÈLäN&r'¹“‰Üñâtò…;ùÂ|áN¾p'«·“ÕÛÉêídõv²z;Y½¬ÞNVo'«·“ÕûÄxÀ+˜«CЫIU“ª&UMªšôjÒ«I¯a\€®%Ý›4'™HCŽ«æL›¤¥ùµõL&R2‘D{’—ùž`Z¾ÇüïÊýõ[€ 88€©øÖ©çÅ_>³ônì¾UX‹ºP)ã/¶ wÍ©§ãÁù@<}³uŠñeš2­2g  ÌþôöC}Æü‚¢LóÞ~xûá톜9õ¼Àù‹oÀè]Æ(½jôªÑ«ó1õlPÊÐó¾)³)³)s~½}œÁˆœN‚q'Á¸“`ÜI0~0œ€ÔusŠñe˜l¢“­P†Ž ÿÊ€· x¼x¼xœÙ›Lþdò'“_t²râÊlÊì¯Lôö9Åx ê1Ñ þšŽ¿¦ã¯yAPuHÆbv%PŸ¤>I}Ðdà²>À»˜H9FÄ™ f®8~Æüï:8ã€2‡[έä©âÖ¼ù(È*3áN4N'ä¦WÓ‰«éÄÕ¼ x*¹U´©x¼(Ó*3',€Êˆ3œqàŒ?°)Cw™êtr¤_ÀÛÅGy‚þ€ñvãí†ä9ùtBn:q5¸šN\Í %q^œðx«Œ3^s’ñÀPfS†!gÜ€­”9L•£¶C¸Ó ¹éÄÕtâj:q5DèNNrÇ‹ÓI<î$¿€·ÏIÆ”9”qÊøà+£!˜úNèN'>§ãÅéát‚p:‘6pšN8M'œ¦3Ó‰™éÄÌtc:1À˜ ‡9¯ÊÁòÀgóäМ¤çǹâM›d’ˆ3œqؘ ŽƒÁqàŒg8ãÌÔ²Icöw~·ñÿ»Î†yapÆß­˜ñ49…_ Öɼ08Ã8Ì06)gV…aUœapƪØÖº xEQ¸¹Õht¦ñvCàœ~:á6pÀw 9Œ’Ì ƒ3ðä|€‘ý©Œ8Ã8Ì06)gV…aUœapƪ˜3súé„Û¼ €[ÅSôFP çƒžz>xi0Çt˜ABò è± ÇdUœap†)ÛÆü…ÙÌÕ`®½šŒ—8Ã8Ì06)ÎtÂd:a2(Oà–ñ3rP+Y†Ußæ<¼”UaXgœaìM Î08Ã0/ ÎP¾õ¿ëP´WøßuºÍÙ‰8æ…Ã`zË]ëçVòTq«)<œáÊt«°[/ÕN„˜›õ•€:;Ǽp8oÎ Zed^8œáœg8æ…ÃÎÄá Ǽp8ƒ´ëN&u'Kº“ ÝI|îä;wÒœ_€@€:;bn> ÉïæFI;Ǽp8oÎ;²Œ—Ì ‡3œó Ǽp8ÃÙ€8œá˜gÝÉ­î$Pwbn:YÒäèNt'͹“ÔÜÉeîxs: ËôäNVr'¹“ƒÜI=îdw2Ž;‰ÆDã$¡†Á\ &ЫÉxɼp8Ã9Ï hæ ðV5d^8œáìDóÂá <>/ I+´q8ßMÇwótPœál@ÎpÌ ‡3ÎpÌ ‡3ΈIhæ1¶þ®#_wÖþ €X”® 9‡;·x¡Ì‹€3BÎáŽGçÆ-K€$‹3ðè¼ ¹5ó40/ÎÀµÓqätü7ÿÍ –ª*ó"àŒÀ¼8#àŒPˆ­ ‚WðvZ;‘À¼8#äîxt^ÀHh'BàÍ ‚2Œ’-‚H`^œk§ãÈéøo:þ›lUÕqF`^œpFÈ9Üñèt’§?ÀS 8N'Åùz{ÐóAÏï æXÐQâ ò;iÇ´ã¨íA׉3ðè¼€s5˜üÁ¤M&‰v"øo:þ›07g9óº7éÞ¤9Ú‰à¿éøo>äq*/ÎÌ‹€3ÎÀÇÓqít\;NÇ£Óñè|€2µ’Þg(»çDÿ»Ž|y{Þ®ÿÖ6à W¦~×~AJœÎ3RÉ€^=¿kw>/0€`ôÒqàz-Ô<€ç§ãÞé¸w:îP  ‹ÜôôÜ¢»Îæ–©íó»vÇáÓI“îäBwr¡;¹Ð/@²Ñd£Éš× ºù€Ún4Ùh²õܪ¡óR_`Ði S ÿæ ôííÃ-e¸œäêNu'覓AÝqøtR ;yÎ<çNžsÇóÓqïtÜ;÷N'-¹“–ÜIKîäwr;¹Ç‡Ï Рp«pRç\8ÊЊ¤I+’VL<'j¦ãùé¸w:îŽ{çÎ-ç–s‹žŸ_„<À-(ƒÏOǽÓqïtÜ;@ — \Nÿ(»×„÷š_¶ÿ]¹¯óŒ‚3.0€ W–~Û~AJœÎ3 Î(e8~ U…¥wŽ×ð0€äŒ×Tyó®ùùéý¨Œ8£ðÀ(¾¬œQìM ƒ£àŒ‚3. ŒS&UÕC5tžABt'!º“ýMÖyFÁ¥ø¼NäÍ h²Î3 Î(ýüôèïP§N: tÚ%ƒ£àŒ‚3. Ìè(É× ëNu'ºyÓI‘îäAw’;ÉÎdçNFsÇÅÓI[î¤-wr“;¹ÉÜäNr'¹“€ü‚ä/`Îs5èÕ¤ÎâŒÂƒ€›Њ¤I+’‰4g"f> gÅ—Õ‚3нIapœQpFéÇcŽ÷ç¼ ­gàâùe8qFagœ¡œìÞ#Ü{~ÝþwªmÎ3ó¢áŒ B`ÖÈÖïÛ/H‰ÓyFc^4œAVô 9z—Î3ó¢áŒV^'DçTyó.qFë'¨¨ŒÌ Ü@Z‘´"i…8£1/Î ž§‡Óqót¢n>À­àíg4æEÃy蟒ó8mg4œÑ˜ g´8#”˜=~(üïúýïú¬²[ÅàõÖ“°ùû)qsžqÁëþô†áŒ 9zלg\àà½t\¹‚0ð®1/X€¦¹*3æEàéù·6·6·v¾2t:2UÕC5æ<#H¤FR£_€£Ésžq9æÅj»Ñä9ϸ€w9½:œñ€Ê8 tè4Ði—óápë$à+ƒ@e\¹‚\ëABõ ¡zP=H–„é Òžiσ´çAnó yÀ<ðô ²”Yʃ,åA*ò yŠü‚€9?æÅ’“Ôyv"€2´"iEÒŠ1/  íšóŒÔcc^žžAtÎ (g”óôuHÆbv"PŸ¤>E}Š2tB2{“L´Iœqç:ÕZmëïú¨öVñX €xkÀ32K¿+¹ Ü¿P&ÜÖ‡2p {ôÒù]Éõ qáâ¶ò÷íþ:€2‹[›[›[û»¥jœƒ@§Lªí‡&Ï'Ö?`ô¡Ñ‡ÆÛ 9F“çëAáH€Ún4y>±¡:ï8Ò«áâ‚õP†: t8_IàÖùn©ntn%³¨>@a†`rÄÒïJ. >A}&Îêºàí³7y€2Fçs#˜ÍcgžЊ¤I+’^Mz5i×|b Ây^ÀŒÏ fç´"Q´Œï/e,foòÀw‹ú· tB2p"¥£ÏÞSסq®Ïê Eòü»ÎÜúÄzÁÚ€´À¬[!·.(‰›O¬HŽ8ã‚#°ùË¡Œ| —ÎOK‚¸A”Î 8g“ó¶’—ÎÞäš3îàûçë’¯o¸µPGíš¼EA$Ï hò|b}@‹3.PÛ'äV?ýÄ$@m7š<ŸXƒ(ApÎ &ç¼Ôi Ó@§³7¹€ù0_I€Ú.Î ’g?ý‚ú…ûœ™¦§‚úÌÞ$ÎÄä|€2F£ŒSƹåÜb6}(;cÄô âvQ:ƒàœALÎ z=Hwd9Ü?à­Hz5éÕ¤WçkÉ3àÄí Ü?ƒ(ApÎ 8g“3ˆÉ¸>Àãhe2L²36œhàþysLœq#VÎuµ3Q·þ®3qö¼`@Z`ÖÈ£°[”ÄÍ'Ö$GæÅ3ŽÂn]p(c§Œ@/_—ΞP¦yj8gÏTæÐq^Ÿ³gàìù@(3Óá(yÑ©¶š<ŸXÐã2/œqvëš<ŸX/ÊDÔv£ÉÖP§WÅ8{>@è4Ði—3ÄóâÀÎ8 »uAòT}@Uu†@œqôë’ÀÙóª!óâÀ8{^`”1Ê8eœ[Ì qÆÁ¼8pÆ3Ž~]8{^@Ue^8gÏ ˜-Éägàõ8{ΞeŽª1ŸXà)š“L­¤]I+ÄÄå|€2¹Nnõa˜ÄÎÀý3pÿ Ü?xéú1Î5ôÿ#Íæ—«×çË)0½eJ‹xAp«$nõ$GvÆ8=/8”1€SÆ%y²‘¡=¯Ï Zg¤3ˆÍx}> 2²3L¿6 Ü?¯ÏÀÙóP樓1ˆèyo®ÔÙ¨]Ñóš<\A&õ$y²‘¡=¯Ï Zg¤3ˆÍx}>@è4Ði—ì œ=eLÕ˜ˆž¤ª:\A&õx{KN0A}‚jÈÎ 6gàõyQ†Žš_›îŸ×gàìùÀP&¨F"™iÌ–`®&s5©s2[dg˜~m¸^Ÿ³g%=ȉþ€ª1\ADÏ g¿3pÿ ¼>gÏ Hg›3ˆÍ¸^Ÿ³çÔ§(S,2‚â ƒ3n~ñ¹NmÕóï:sÐåÁuÁr@ g¸r#^Ü*‰®$Gv†ÃDõ¼àPÆîIgÞ3ˆáDì uñ9o+y—Ž>;Ãá çèÓ±3pö| ª˜8Õ1ˆêyo®ô”ì ‡3ˆêyM® Â’,Î ¼gÃ3ˆØê âs^À»œ: tè4GvΞ$@gÕó‚¤pf¢‘NýÐLcb€[t¯8ÃåÁõeè(q†sôéØ8{>pÌó p!¹?À-æª8ÃåÁõ@(³)C+’V$­Hz5éUqq>ƒ¨žA0Ï †gº3ˆØ8{:ƒøœA|Î(“Ô§¸…z&ã%Îpì Ü?÷ÏÞì½î‹sÚÄD¾5šIòö| -°¹5ÜŠ|AIÞx{Fð™$Ø“¤Š|QÆ?Ii„~èx{^0­ ö$iàíyÁZpksksk·  jˆ4ByT/Hnñv£FjOF(ð4Ùâd‘Fè‡î·gŸI‚=I@x{^@: Ôg¼=oÏ  j8Ã4€/HUu¼=/`‚ùWÃfª1±?ôjPŸñö|€2t”H·ÏÀÛ3ðö|À E™þ€ä$s5éÕ\  “?iEÒŠ¤I+’^Mz5Q¼ñö¼À7€2L~}&ÁÛ3ðö|@ƒ’Ì ‘nŸ·gàíùõa"%§= þŸÿç·¿ÿýïÿŒñCïlinbox-1.4.2/benchmarks/matrix/bibd_13_6_78x1716.sms000066400000000000000000007204211274717217100216520ustar00rootroot0000000000000078 1716 M 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 1 1 24 1 1 25 1 1 26 1 1 27 1 1 28 1 1 29 1 1 30 1 1 31 1 1 32 1 1 33 1 1 34 1 1 35 1 1 36 1 1 37 1 1 38 1 1 39 1 1 40 1 1 41 1 1 42 1 1 43 1 1 44 1 1 45 1 1 46 1 1 47 1 1 48 1 1 49 1 1 50 1 1 51 1 1 52 1 1 53 1 1 54 1 1 55 1 1 56 1 1 57 1 1 58 1 1 59 1 1 60 1 1 61 1 1 62 1 1 63 1 1 64 1 1 65 1 1 66 1 1 67 1 1 68 1 1 69 1 1 70 1 1 71 1 1 72 1 1 73 1 1 74 1 1 75 1 1 76 1 1 77 1 1 78 1 1 79 1 1 80 1 1 81 1 1 82 1 1 83 1 1 84 1 1 85 1 1 86 1 1 87 1 1 88 1 1 89 1 1 90 1 1 91 1 1 92 1 1 93 1 1 94 1 1 95 1 1 96 1 1 97 1 1 98 1 1 99 1 1 100 1 1 101 1 1 102 1 1 103 1 1 104 1 1 105 1 1 106 1 1 107 1 1 108 1 1 109 1 1 110 1 1 111 1 1 112 1 1 113 1 1 114 1 1 115 1 1 116 1 1 117 1 1 118 1 1 119 1 1 120 1 1 121 1 1 122 1 1 123 1 1 124 1 1 125 1 1 126 1 1 127 1 1 128 1 1 129 1 1 130 1 1 131 1 1 132 1 1 133 1 1 134 1 1 135 1 1 136 1 1 137 1 1 138 1 1 139 1 1 140 1 1 141 1 1 142 1 1 143 1 1 144 1 1 145 1 1 146 1 1 147 1 1 148 1 1 149 1 1 150 1 1 151 1 1 152 1 1 153 1 1 154 1 1 155 1 1 156 1 1 157 1 1 158 1 1 159 1 1 160 1 1 161 1 1 162 1 1 163 1 1 164 1 1 165 1 1 166 1 1 167 1 1 168 1 1 169 1 1 170 1 1 171 1 1 172 1 1 173 1 1 174 1 1 175 1 1 176 1 1 177 1 1 178 1 1 179 1 1 180 1 1 181 1 1 182 1 1 183 1 1 184 1 1 185 1 1 186 1 1 187 1 1 188 1 1 189 1 1 190 1 1 191 1 1 192 1 1 193 1 1 194 1 1 195 1 1 196 1 1 197 1 1 198 1 1 199 1 1 200 1 1 201 1 1 202 1 1 203 1 1 204 1 1 205 1 1 206 1 1 207 1 1 208 1 1 209 1 1 210 1 1 211 1 1 212 1 1 213 1 1 214 1 1 215 1 1 216 1 1 217 1 1 218 1 1 219 1 1 220 1 1 221 1 1 222 1 1 223 1 1 224 1 1 225 1 1 226 1 1 227 1 1 228 1 1 229 1 1 230 1 1 231 1 1 232 1 1 233 1 1 234 1 1 235 1 1 236 1 1 237 1 1 238 1 1 239 1 1 240 1 1 241 1 1 242 1 1 243 1 1 244 1 1 245 1 1 246 1 1 247 1 1 248 1 1 249 1 1 250 1 1 251 1 1 252 1 1 253 1 1 254 1 1 255 1 1 256 1 1 257 1 1 258 1 1 259 1 1 260 1 1 261 1 1 262 1 1 263 1 1 264 1 1 265 1 1 266 1 1 267 1 1 268 1 1 269 1 1 270 1 1 271 1 1 272 1 1 273 1 1 274 1 1 275 1 1 276 1 1 277 1 1 278 1 1 279 1 1 280 1 1 281 1 1 282 1 1 283 1 1 284 1 1 285 1 1 286 1 1 287 1 1 288 1 1 289 1 1 290 1 1 291 1 1 292 1 1 293 1 1 294 1 1 295 1 1 296 1 1 297 1 1 298 1 1 299 1 1 300 1 1 301 1 1 302 1 1 303 1 1 304 1 1 305 1 1 306 1 1 307 1 1 308 1 1 309 1 1 310 1 1 311 1 1 312 1 1 313 1 1 314 1 1 315 1 1 316 1 1 317 1 1 318 1 1 319 1 1 320 1 1 321 1 1 322 1 1 323 1 1 324 1 1 325 1 1 326 1 1 327 1 1 328 1 1 329 1 1 330 1 2 1 1 2 2 1 2 3 1 2 4 1 2 5 1 2 6 1 2 7 1 2 8 1 2 9 1 2 10 1 2 11 1 2 12 1 2 13 1 2 14 1 2 15 1 2 16 1 2 17 1 2 18 1 2 19 1 2 20 1 2 21 1 2 22 1 2 23 1 2 24 1 2 25 1 2 26 1 2 27 1 2 28 1 2 29 1 2 30 1 2 31 1 2 32 1 2 33 1 2 34 1 2 35 1 2 36 1 2 37 1 2 38 1 2 39 1 2 40 1 2 41 1 2 42 1 2 43 1 2 44 1 2 45 1 2 46 1 2 47 1 2 48 1 2 49 1 2 50 1 2 51 1 2 52 1 2 53 1 2 54 1 2 55 1 2 56 1 2 57 1 2 58 1 2 59 1 2 60 1 2 61 1 2 62 1 2 63 1 2 64 1 2 65 1 2 66 1 2 67 1 2 68 1 2 69 1 2 70 1 2 71 1 2 72 1 2 73 1 2 74 1 2 75 1 2 76 1 2 77 1 2 78 1 2 79 1 2 80 1 2 81 1 2 82 1 2 83 1 2 84 1 2 85 1 2 86 1 2 87 1 2 88 1 2 89 1 2 90 1 2 91 1 2 92 1 2 93 1 2 94 1 2 95 1 2 96 1 2 97 1 2 98 1 2 99 1 2 100 1 2 101 1 2 102 1 2 103 1 2 104 1 2 105 1 2 106 1 2 107 1 2 108 1 2 109 1 2 110 1 2 111 1 2 112 1 2 113 1 2 114 1 2 115 1 2 116 1 2 117 1 2 118 1 2 119 1 2 120 1 2 331 1 2 332 1 2 333 1 2 334 1 2 335 1 2 336 1 2 337 1 2 338 1 2 339 1 2 340 1 2 341 1 2 342 1 2 343 1 2 344 1 2 345 1 2 346 1 2 347 1 2 348 1 2 349 1 2 350 1 2 351 1 2 352 1 2 353 1 2 354 1 2 355 1 2 356 1 2 357 1 2 358 1 2 359 1 2 360 1 2 361 1 2 362 1 2 363 1 2 364 1 2 365 1 2 366 1 2 367 1 2 368 1 2 369 1 2 370 1 2 371 1 2 372 1 2 373 1 2 374 1 2 375 1 2 376 1 2 377 1 2 378 1 2 379 1 2 380 1 2 381 1 2 382 1 2 383 1 2 384 1 2 385 1 2 386 1 2 387 1 2 388 1 2 389 1 2 390 1 2 391 1 2 392 1 2 393 1 2 394 1 2 395 1 2 396 1 2 397 1 2 398 1 2 399 1 2 400 1 2 401 1 2 402 1 2 403 1 2 404 1 2 405 1 2 406 1 2 407 1 2 408 1 2 409 1 2 410 1 2 411 1 2 412 1 2 413 1 2 414 1 2 415 1 2 416 1 2 417 1 2 418 1 2 419 1 2 420 1 2 421 1 2 422 1 2 423 1 2 424 1 2 425 1 2 426 1 2 427 1 2 428 1 2 429 1 2 430 1 2 431 1 2 432 1 2 433 1 2 434 1 2 435 1 2 436 1 2 437 1 2 438 1 2 439 1 2 440 1 2 441 1 2 442 1 2 443 1 2 444 1 2 445 1 2 446 1 2 447 1 2 448 1 2 449 1 2 450 1 2 451 1 2 452 1 2 453 1 2 454 1 2 455 1 2 456 1 2 457 1 2 458 1 2 459 1 2 460 1 2 461 1 2 462 1 2 463 1 2 464 1 2 465 1 2 466 1 2 467 1 2 468 1 2 469 1 2 470 1 2 471 1 2 472 1 2 473 1 2 474 1 2 475 1 2 476 1 2 477 1 2 478 1 2 479 1 2 480 1 2 481 1 2 482 1 2 483 1 2 484 1 2 485 1 2 486 1 2 487 1 2 488 1 2 489 1 2 490 1 2 491 1 2 492 1 2 493 1 2 494 1 2 495 1 2 496 1 2 497 1 2 498 1 2 499 1 2 500 1 2 501 1 2 502 1 2 503 1 2 504 1 2 505 1 2 506 1 2 507 1 2 508 1 2 509 1 2 510 1 2 511 1 2 512 1 2 513 1 2 514 1 2 515 1 2 516 1 2 517 1 2 518 1 2 519 1 2 520 1 2 521 1 2 522 1 2 523 1 2 524 1 2 525 1 2 526 1 2 527 1 2 528 1 2 529 1 2 530 1 2 531 1 2 532 1 2 533 1 2 534 1 2 535 1 2 536 1 2 537 1 2 538 1 2 539 1 2 540 1 3 1 1 3 2 1 3 3 1 3 4 1 3 5 1 3 6 1 3 7 1 3 8 1 3 9 1 3 10 1 3 11 1 3 12 1 3 13 1 3 14 1 3 15 1 3 16 1 3 17 1 3 18 1 3 19 1 3 20 1 3 21 1 3 22 1 3 23 1 3 24 1 3 25 1 3 26 1 3 27 1 3 28 1 3 29 1 3 30 1 3 31 1 3 32 1 3 33 1 3 34 1 3 35 1 3 36 1 3 121 1 3 122 1 3 123 1 3 124 1 3 125 1 3 126 1 3 127 1 3 128 1 3 129 1 3 130 1 3 131 1 3 132 1 3 133 1 3 134 1 3 135 1 3 136 1 3 137 1 3 138 1 3 139 1 3 140 1 3 141 1 3 142 1 3 143 1 3 144 1 3 145 1 3 146 1 3 147 1 3 148 1 3 149 1 3 150 1 3 151 1 3 152 1 3 153 1 3 154 1 3 155 1 3 156 1 3 157 1 3 158 1 3 159 1 3 160 1 3 161 1 3 162 1 3 163 1 3 164 1 3 165 1 3 166 1 3 167 1 3 168 1 3 169 1 3 170 1 3 171 1 3 172 1 3 173 1 3 174 1 3 175 1 3 176 1 3 177 1 3 178 1 3 179 1 3 180 1 3 181 1 3 182 1 3 183 1 3 184 1 3 185 1 3 186 1 3 187 1 3 188 1 3 189 1 3 190 1 3 191 1 3 192 1 3 193 1 3 194 1 3 195 1 3 196 1 3 197 1 3 198 1 3 199 1 3 200 1 3 201 1 3 202 1 3 203 1 3 204 1 3 331 1 3 332 1 3 333 1 3 334 1 3 335 1 3 336 1 3 337 1 3 338 1 3 339 1 3 340 1 3 341 1 3 342 1 3 343 1 3 344 1 3 345 1 3 346 1 3 347 1 3 348 1 3 349 1 3 350 1 3 351 1 3 352 1 3 353 1 3 354 1 3 355 1 3 356 1 3 357 1 3 358 1 3 359 1 3 360 1 3 361 1 3 362 1 3 363 1 3 364 1 3 365 1 3 366 1 3 367 1 3 368 1 3 369 1 3 370 1 3 371 1 3 372 1 3 373 1 3 374 1 3 375 1 3 376 1 3 377 1 3 378 1 3 379 1 3 380 1 3 381 1 3 382 1 3 383 1 3 384 1 3 385 1 3 386 1 3 387 1 3 388 1 3 389 1 3 390 1 3 391 1 3 392 1 3 393 1 3 394 1 3 395 1 3 396 1 3 397 1 3 398 1 3 399 1 3 400 1 3 401 1 3 402 1 3 403 1 3 404 1 3 405 1 3 406 1 3 407 1 3 408 1 3 409 1 3 410 1 3 411 1 3 412 1 3 413 1 3 414 1 3 541 1 3 542 1 3 543 1 3 544 1 3 545 1 3 546 1 3 547 1 3 548 1 3 549 1 3 550 1 3 551 1 3 552 1 3 553 1 3 554 1 3 555 1 3 556 1 3 557 1 3 558 1 3 559 1 3 560 1 3 561 1 3 562 1 3 563 1 3 564 1 3 565 1 3 566 1 3 567 1 3 568 1 3 569 1 3 570 1 3 571 1 3 572 1 3 573 1 3 574 1 3 575 1 3 576 1 3 577 1 3 578 1 3 579 1 3 580 1 3 581 1 3 582 1 3 583 1 3 584 1 3 585 1 3 586 1 3 587 1 3 588 1 3 589 1 3 590 1 3 591 1 3 592 1 3 593 1 3 594 1 3 595 1 3 596 1 3 597 1 3 598 1 3 599 1 3 600 1 3 601 1 3 602 1 3 603 1 3 604 1 3 605 1 3 606 1 3 607 1 3 608 1 3 609 1 3 610 1 3 611 1 3 612 1 3 613 1 3 614 1 3 615 1 3 616 1 3 617 1 3 618 1 3 619 1 3 620 1 3 621 1 3 622 1 3 623 1 3 624 1 3 625 1 3 626 1 3 627 1 3 628 1 3 629 1 3 630 1 3 631 1 3 632 1 3 633 1 3 634 1 3 635 1 3 636 1 3 637 1 3 638 1 3 639 1 3 640 1 3 641 1 3 642 1 3 643 1 3 644 1 3 645 1 3 646 1 3 647 1 3 648 1 3 649 1 3 650 1 3 651 1 3 652 1 3 653 1 3 654 1 3 655 1 3 656 1 3 657 1 3 658 1 3 659 1 3 660 1 3 661 1 3 662 1 3 663 1 3 664 1 3 665 1 3 666 1 4 1 1 4 2 1 4 3 1 4 4 1 4 5 1 4 6 1 4 7 1 4 8 1 4 37 1 4 38 1 4 39 1 4 40 1 4 41 1 4 42 1 4 43 1 4 44 1 4 45 1 4 46 1 4 47 1 4 48 1 4 49 1 4 50 1 4 51 1 4 52 1 4 53 1 4 54 1 4 55 1 4 56 1 4 57 1 4 58 1 4 59 1 4 60 1 4 61 1 4 62 1 4 63 1 4 64 1 4 121 1 4 122 1 4 123 1 4 124 1 4 125 1 4 126 1 4 127 1 4 128 1 4 129 1 4 130 1 4 131 1 4 132 1 4 133 1 4 134 1 4 135 1 4 136 1 4 137 1 4 138 1 4 139 1 4 140 1 4 141 1 4 142 1 4 143 1 4 144 1 4 145 1 4 146 1 4 147 1 4 148 1 4 205 1 4 206 1 4 207 1 4 208 1 4 209 1 4 210 1 4 211 1 4 212 1 4 213 1 4 214 1 4 215 1 4 216 1 4 217 1 4 218 1 4 219 1 4 220 1 4 221 1 4 222 1 4 223 1 4 224 1 4 225 1 4 226 1 4 227 1 4 228 1 4 229 1 4 230 1 4 231 1 4 232 1 4 233 1 4 234 1 4 235 1 4 236 1 4 237 1 4 238 1 4 239 1 4 240 1 4 241 1 4 242 1 4 243 1 4 244 1 4 245 1 4 246 1 4 247 1 4 248 1 4 249 1 4 250 1 4 251 1 4 252 1 4 253 1 4 254 1 4 255 1 4 256 1 4 257 1 4 258 1 4 259 1 4 260 1 4 331 1 4 332 1 4 333 1 4 334 1 4 335 1 4 336 1 4 337 1 4 338 1 4 339 1 4 340 1 4 341 1 4 342 1 4 343 1 4 344 1 4 345 1 4 346 1 4 347 1 4 348 1 4 349 1 4 350 1 4 351 1 4 352 1 4 353 1 4 354 1 4 355 1 4 356 1 4 357 1 4 358 1 4 415 1 4 416 1 4 417 1 4 418 1 4 419 1 4 420 1 4 421 1 4 422 1 4 423 1 4 424 1 4 425 1 4 426 1 4 427 1 4 428 1 4 429 1 4 430 1 4 431 1 4 432 1 4 433 1 4 434 1 4 435 1 4 436 1 4 437 1 4 438 1 4 439 1 4 440 1 4 441 1 4 442 1 4 443 1 4 444 1 4 445 1 4 446 1 4 447 1 4 448 1 4 449 1 4 450 1 4 451 1 4 452 1 4 453 1 4 454 1 4 455 1 4 456 1 4 457 1 4 458 1 4 459 1 4 460 1 4 461 1 4 462 1 4 463 1 4 464 1 4 465 1 4 466 1 4 467 1 4 468 1 4 469 1 4 470 1 4 541 1 4 542 1 4 543 1 4 544 1 4 545 1 4 546 1 4 547 1 4 548 1 4 549 1 4 550 1 4 551 1 4 552 1 4 553 1 4 554 1 4 555 1 4 556 1 4 557 1 4 558 1 4 559 1 4 560 1 4 561 1 4 562 1 4 563 1 4 564 1 4 565 1 4 566 1 4 567 1 4 568 1 4 569 1 4 570 1 4 571 1 4 572 1 4 573 1 4 574 1 4 575 1 4 576 1 4 577 1 4 578 1 4 579 1 4 580 1 4 581 1 4 582 1 4 583 1 4 584 1 4 585 1 4 586 1 4 587 1 4 588 1 4 589 1 4 590 1 4 591 1 4 592 1 4 593 1 4 594 1 4 595 1 4 596 1 4 667 1 4 668 1 4 669 1 4 670 1 4 671 1 4 672 1 4 673 1 4 674 1 4 675 1 4 676 1 4 677 1 4 678 1 4 679 1 4 680 1 4 681 1 4 682 1 4 683 1 4 684 1 4 685 1 4 686 1 4 687 1 4 688 1 4 689 1 4 690 1 4 691 1 4 692 1 4 693 1 4 694 1 4 695 1 4 696 1 4 697 1 4 698 1 4 699 1 4 700 1 4 701 1 4 702 1 4 703 1 4 704 1 4 705 1 4 706 1 4 707 1 4 708 1 4 709 1 4 710 1 4 711 1 4 712 1 4 713 1 4 714 1 4 715 1 4 716 1 4 717 1 4 718 1 4 719 1 4 720 1 4 721 1 4 722 1 4 723 1 4 724 1 4 725 1 4 726 1 4 727 1 4 728 1 4 729 1 4 730 1 4 731 1 4 732 1 4 733 1 4 734 1 4 735 1 4 736 1 5 1 1 5 9 1 5 10 1 5 11 1 5 12 1 5 13 1 5 14 1 5 15 1 5 37 1 5 38 1 5 39 1 5 40 1 5 41 1 5 42 1 5 43 1 5 65 1 5 66 1 5 67 1 5 68 1 5 69 1 5 70 1 5 71 1 5 72 1 5 73 1 5 74 1 5 75 1 5 76 1 5 77 1 5 78 1 5 79 1 5 80 1 5 81 1 5 82 1 5 83 1 5 84 1 5 85 1 5 121 1 5 122 1 5 123 1 5 124 1 5 125 1 5 126 1 5 127 1 5 149 1 5 150 1 5 151 1 5 152 1 5 153 1 5 154 1 5 155 1 5 156 1 5 157 1 5 158 1 5 159 1 5 160 1 5 161 1 5 162 1 5 163 1 5 164 1 5 165 1 5 166 1 5 167 1 5 168 1 5 169 1 5 205 1 5 206 1 5 207 1 5 208 1 5 209 1 5 210 1 5 211 1 5 212 1 5 213 1 5 214 1 5 215 1 5 216 1 5 217 1 5 218 1 5 219 1 5 220 1 5 221 1 5 222 1 5 223 1 5 224 1 5 225 1 5 261 1 5 262 1 5 263 1 5 264 1 5 265 1 5 266 1 5 267 1 5 268 1 5 269 1 5 270 1 5 271 1 5 272 1 5 273 1 5 274 1 5 275 1 5 276 1 5 277 1 5 278 1 5 279 1 5 280 1 5 281 1 5 282 1 5 283 1 5 284 1 5 285 1 5 286 1 5 287 1 5 288 1 5 289 1 5 290 1 5 291 1 5 292 1 5 293 1 5 294 1 5 295 1 5 331 1 5 332 1 5 333 1 5 334 1 5 335 1 5 336 1 5 337 1 5 359 1 5 360 1 5 361 1 5 362 1 5 363 1 5 364 1 5 365 1 5 366 1 5 367 1 5 368 1 5 369 1 5 370 1 5 371 1 5 372 1 5 373 1 5 374 1 5 375 1 5 376 1 5 377 1 5 378 1 5 379 1 5 415 1 5 416 1 5 417 1 5 418 1 5 419 1 5 420 1 5 421 1 5 422 1 5 423 1 5 424 1 5 425 1 5 426 1 5 427 1 5 428 1 5 429 1 5 430 1 5 431 1 5 432 1 5 433 1 5 434 1 5 435 1 5 471 1 5 472 1 5 473 1 5 474 1 5 475 1 5 476 1 5 477 1 5 478 1 5 479 1 5 480 1 5 481 1 5 482 1 5 483 1 5 484 1 5 485 1 5 486 1 5 487 1 5 488 1 5 489 1 5 490 1 5 491 1 5 492 1 5 493 1 5 494 1 5 495 1 5 496 1 5 497 1 5 498 1 5 499 1 5 500 1 5 501 1 5 502 1 5 503 1 5 504 1 5 505 1 5 541 1 5 542 1 5 543 1 5 544 1 5 545 1 5 546 1 5 547 1 5 548 1 5 549 1 5 550 1 5 551 1 5 552 1 5 553 1 5 554 1 5 555 1 5 556 1 5 557 1 5 558 1 5 559 1 5 560 1 5 561 1 5 597 1 5 598 1 5 599 1 5 600 1 5 601 1 5 602 1 5 603 1 5 604 1 5 605 1 5 606 1 5 607 1 5 608 1 5 609 1 5 610 1 5 611 1 5 612 1 5 613 1 5 614 1 5 615 1 5 616 1 5 617 1 5 618 1 5 619 1 5 620 1 5 621 1 5 622 1 5 623 1 5 624 1 5 625 1 5 626 1 5 627 1 5 628 1 5 629 1 5 630 1 5 631 1 5 667 1 5 668 1 5 669 1 5 670 1 5 671 1 5 672 1 5 673 1 5 674 1 5 675 1 5 676 1 5 677 1 5 678 1 5 679 1 5 680 1 5 681 1 5 682 1 5 683 1 5 684 1 5 685 1 5 686 1 5 687 1 5 688 1 5 689 1 5 690 1 5 691 1 5 692 1 5 693 1 5 694 1 5 695 1 5 696 1 5 697 1 5 698 1 5 699 1 5 700 1 5 701 1 5 737 1 5 738 1 5 739 1 5 740 1 5 741 1 5 742 1 5 743 1 5 744 1 5 745 1 5 746 1 5 747 1 5 748 1 5 749 1 5 750 1 5 751 1 5 752 1 5 753 1 5 754 1 5 755 1 5 756 1 5 757 1 5 758 1 5 759 1 5 760 1 5 761 1 5 762 1 5 763 1 5 764 1 5 765 1 5 766 1 5 767 1 5 768 1 5 769 1 5 770 1 5 771 1 6 2 1 6 9 1 6 16 1 6 17 1 6 18 1 6 19 1 6 20 1 6 21 1 6 37 1 6 44 1 6 45 1 6 46 1 6 47 1 6 48 1 6 49 1 6 65 1 6 66 1 6 67 1 6 68 1 6 69 1 6 70 1 6 86 1 6 87 1 6 88 1 6 89 1 6 90 1 6 91 1 6 92 1 6 93 1 6 94 1 6 95 1 6 96 1 6 97 1 6 98 1 6 99 1 6 100 1 6 121 1 6 128 1 6 129 1 6 130 1 6 131 1 6 132 1 6 133 1 6 149 1 6 150 1 6 151 1 6 152 1 6 153 1 6 154 1 6 170 1 6 171 1 6 172 1 6 173 1 6 174 1 6 175 1 6 176 1 6 177 1 6 178 1 6 179 1 6 180 1 6 181 1 6 182 1 6 183 1 6 184 1 6 205 1 6 206 1 6 207 1 6 208 1 6 209 1 6 210 1 6 226 1 6 227 1 6 228 1 6 229 1 6 230 1 6 231 1 6 232 1 6 233 1 6 234 1 6 235 1 6 236 1 6 237 1 6 238 1 6 239 1 6 240 1 6 261 1 6 262 1 6 263 1 6 264 1 6 265 1 6 266 1 6 267 1 6 268 1 6 269 1 6 270 1 6 271 1 6 272 1 6 273 1 6 274 1 6 275 1 6 296 1 6 297 1 6 298 1 6 299 1 6 300 1 6 301 1 6 302 1 6 303 1 6 304 1 6 305 1 6 306 1 6 307 1 6 308 1 6 309 1 6 310 1 6 311 1 6 312 1 6 313 1 6 314 1 6 315 1 6 331 1 6 338 1 6 339 1 6 340 1 6 341 1 6 342 1 6 343 1 6 359 1 6 360 1 6 361 1 6 362 1 6 363 1 6 364 1 6 380 1 6 381 1 6 382 1 6 383 1 6 384 1 6 385 1 6 386 1 6 387 1 6 388 1 6 389 1 6 390 1 6 391 1 6 392 1 6 393 1 6 394 1 6 415 1 6 416 1 6 417 1 6 418 1 6 419 1 6 420 1 6 436 1 6 437 1 6 438 1 6 439 1 6 440 1 6 441 1 6 442 1 6 443 1 6 444 1 6 445 1 6 446 1 6 447 1 6 448 1 6 449 1 6 450 1 6 471 1 6 472 1 6 473 1 6 474 1 6 475 1 6 476 1 6 477 1 6 478 1 6 479 1 6 480 1 6 481 1 6 482 1 6 483 1 6 484 1 6 485 1 6 506 1 6 507 1 6 508 1 6 509 1 6 510 1 6 511 1 6 512 1 6 513 1 6 514 1 6 515 1 6 516 1 6 517 1 6 518 1 6 519 1 6 520 1 6 521 1 6 522 1 6 523 1 6 524 1 6 525 1 6 541 1 6 542 1 6 543 1 6 544 1 6 545 1 6 546 1 6 562 1 6 563 1 6 564 1 6 565 1 6 566 1 6 567 1 6 568 1 6 569 1 6 570 1 6 571 1 6 572 1 6 573 1 6 574 1 6 575 1 6 576 1 6 597 1 6 598 1 6 599 1 6 600 1 6 601 1 6 602 1 6 603 1 6 604 1 6 605 1 6 606 1 6 607 1 6 608 1 6 609 1 6 610 1 6 611 1 6 632 1 6 633 1 6 634 1 6 635 1 6 636 1 6 637 1 6 638 1 6 639 1 6 640 1 6 641 1 6 642 1 6 643 1 6 644 1 6 645 1 6 646 1 6 647 1 6 648 1 6 649 1 6 650 1 6 651 1 6 667 1 6 668 1 6 669 1 6 670 1 6 671 1 6 672 1 6 673 1 6 674 1 6 675 1 6 676 1 6 677 1 6 678 1 6 679 1 6 680 1 6 681 1 6 702 1 6 703 1 6 704 1 6 705 1 6 706 1 6 707 1 6 708 1 6 709 1 6 710 1 6 711 1 6 712 1 6 713 1 6 714 1 6 715 1 6 716 1 6 717 1 6 718 1 6 719 1 6 720 1 6 721 1 6 737 1 6 738 1 6 739 1 6 740 1 6 741 1 6 742 1 6 743 1 6 744 1 6 745 1 6 746 1 6 747 1 6 748 1 6 749 1 6 750 1 6 751 1 6 752 1 6 753 1 6 754 1 6 755 1 6 756 1 6 772 1 6 773 1 6 774 1 6 775 1 6 776 1 6 777 1 6 778 1 6 779 1 6 780 1 6 781 1 6 782 1 6 783 1 6 784 1 6 785 1 6 786 1 7 3 1 7 10 1 7 16 1 7 22 1 7 23 1 7 24 1 7 25 1 7 26 1 7 38 1 7 44 1 7 50 1 7 51 1 7 52 1 7 53 1 7 54 1 7 65 1 7 71 1 7 72 1 7 73 1 7 74 1 7 75 1 7 86 1 7 87 1 7 88 1 7 89 1 7 90 1 7 101 1 7 102 1 7 103 1 7 104 1 7 105 1 7 106 1 7 107 1 7 108 1 7 109 1 7 110 1 7 122 1 7 128 1 7 134 1 7 135 1 7 136 1 7 137 1 7 138 1 7 149 1 7 155 1 7 156 1 7 157 1 7 158 1 7 159 1 7 170 1 7 171 1 7 172 1 7 173 1 7 174 1 7 185 1 7 186 1 7 187 1 7 188 1 7 189 1 7 190 1 7 191 1 7 192 1 7 193 1 7 194 1 7 205 1 7 211 1 7 212 1 7 213 1 7 214 1 7 215 1 7 226 1 7 227 1 7 228 1 7 229 1 7 230 1 7 241 1 7 242 1 7 243 1 7 244 1 7 245 1 7 246 1 7 247 1 7 248 1 7 249 1 7 250 1 7 261 1 7 262 1 7 263 1 7 264 1 7 265 1 7 276 1 7 277 1 7 278 1 7 279 1 7 280 1 7 281 1 7 282 1 7 283 1 7 284 1 7 285 1 7 296 1 7 297 1 7 298 1 7 299 1 7 300 1 7 301 1 7 302 1 7 303 1 7 304 1 7 305 1 7 316 1 7 317 1 7 318 1 7 319 1 7 320 1 7 321 1 7 322 1 7 323 1 7 324 1 7 325 1 7 332 1 7 338 1 7 344 1 7 345 1 7 346 1 7 347 1 7 348 1 7 359 1 7 365 1 7 366 1 7 367 1 7 368 1 7 369 1 7 380 1 7 381 1 7 382 1 7 383 1 7 384 1 7 395 1 7 396 1 7 397 1 7 398 1 7 399 1 7 400 1 7 401 1 7 402 1 7 403 1 7 404 1 7 415 1 7 421 1 7 422 1 7 423 1 7 424 1 7 425 1 7 436 1 7 437 1 7 438 1 7 439 1 7 440 1 7 451 1 7 452 1 7 453 1 7 454 1 7 455 1 7 456 1 7 457 1 7 458 1 7 459 1 7 460 1 7 471 1 7 472 1 7 473 1 7 474 1 7 475 1 7 486 1 7 487 1 7 488 1 7 489 1 7 490 1 7 491 1 7 492 1 7 493 1 7 494 1 7 495 1 7 506 1 7 507 1 7 508 1 7 509 1 7 510 1 7 511 1 7 512 1 7 513 1 7 514 1 7 515 1 7 526 1 7 527 1 7 528 1 7 529 1 7 530 1 7 531 1 7 532 1 7 533 1 7 534 1 7 535 1 7 541 1 7 547 1 7 548 1 7 549 1 7 550 1 7 551 1 7 562 1 7 563 1 7 564 1 7 565 1 7 566 1 7 577 1 7 578 1 7 579 1 7 580 1 7 581 1 7 582 1 7 583 1 7 584 1 7 585 1 7 586 1 7 597 1 7 598 1 7 599 1 7 600 1 7 601 1 7 612 1 7 613 1 7 614 1 7 615 1 7 616 1 7 617 1 7 618 1 7 619 1 7 620 1 7 621 1 7 632 1 7 633 1 7 634 1 7 635 1 7 636 1 7 637 1 7 638 1 7 639 1 7 640 1 7 641 1 7 652 1 7 653 1 7 654 1 7 655 1 7 656 1 7 657 1 7 658 1 7 659 1 7 660 1 7 661 1 7 667 1 7 668 1 7 669 1 7 670 1 7 671 1 7 682 1 7 683 1 7 684 1 7 685 1 7 686 1 7 687 1 7 688 1 7 689 1 7 690 1 7 691 1 7 702 1 7 703 1 7 704 1 7 705 1 7 706 1 7 707 1 7 708 1 7 709 1 7 710 1 7 711 1 7 722 1 7 723 1 7 724 1 7 725 1 7 726 1 7 727 1 7 728 1 7 729 1 7 730 1 7 731 1 7 737 1 7 738 1 7 739 1 7 740 1 7 741 1 7 742 1 7 743 1 7 744 1 7 745 1 7 746 1 7 757 1 7 758 1 7 759 1 7 760 1 7 761 1 7 762 1 7 763 1 7 764 1 7 765 1 7 766 1 7 772 1 7 773 1 7 774 1 7 775 1 7 776 1 7 777 1 7 778 1 7 779 1 7 780 1 7 781 1 7 787 1 7 788 1 7 789 1 7 790 1 7 791 1 8 4 1 8 11 1 8 17 1 8 22 1 8 27 1 8 28 1 8 29 1 8 30 1 8 39 1 8 45 1 8 50 1 8 55 1 8 56 1 8 57 1 8 58 1 8 66 1 8 71 1 8 76 1 8 77 1 8 78 1 8 79 1 8 86 1 8 91 1 8 92 1 8 93 1 8 94 1 8 101 1 8 102 1 8 103 1 8 104 1 8 111 1 8 112 1 8 113 1 8 114 1 8 115 1 8 116 1 8 123 1 8 129 1 8 134 1 8 139 1 8 140 1 8 141 1 8 142 1 8 150 1 8 155 1 8 160 1 8 161 1 8 162 1 8 163 1 8 170 1 8 175 1 8 176 1 8 177 1 8 178 1 8 185 1 8 186 1 8 187 1 8 188 1 8 195 1 8 196 1 8 197 1 8 198 1 8 199 1 8 200 1 8 206 1 8 211 1 8 216 1 8 217 1 8 218 1 8 219 1 8 226 1 8 231 1 8 232 1 8 233 1 8 234 1 8 241 1 8 242 1 8 243 1 8 244 1 8 251 1 8 252 1 8 253 1 8 254 1 8 255 1 8 256 1 8 261 1 8 266 1 8 267 1 8 268 1 8 269 1 8 276 1 8 277 1 8 278 1 8 279 1 8 286 1 8 287 1 8 288 1 8 289 1 8 290 1 8 291 1 8 296 1 8 297 1 8 298 1 8 299 1 8 306 1 8 307 1 8 308 1 8 309 1 8 310 1 8 311 1 8 316 1 8 317 1 8 318 1 8 319 1 8 320 1 8 321 1 8 326 1 8 327 1 8 328 1 8 329 1 8 333 1 8 339 1 8 344 1 8 349 1 8 350 1 8 351 1 8 352 1 8 360 1 8 365 1 8 370 1 8 371 1 8 372 1 8 373 1 8 380 1 8 385 1 8 386 1 8 387 1 8 388 1 8 395 1 8 396 1 8 397 1 8 398 1 8 405 1 8 406 1 8 407 1 8 408 1 8 409 1 8 410 1 8 416 1 8 421 1 8 426 1 8 427 1 8 428 1 8 429 1 8 436 1 8 441 1 8 442 1 8 443 1 8 444 1 8 451 1 8 452 1 8 453 1 8 454 1 8 461 1 8 462 1 8 463 1 8 464 1 8 465 1 8 466 1 8 471 1 8 476 1 8 477 1 8 478 1 8 479 1 8 486 1 8 487 1 8 488 1 8 489 1 8 496 1 8 497 1 8 498 1 8 499 1 8 500 1 8 501 1 8 506 1 8 507 1 8 508 1 8 509 1 8 516 1 8 517 1 8 518 1 8 519 1 8 520 1 8 521 1 8 526 1 8 527 1 8 528 1 8 529 1 8 530 1 8 531 1 8 536 1 8 537 1 8 538 1 8 539 1 8 542 1 8 547 1 8 552 1 8 553 1 8 554 1 8 555 1 8 562 1 8 567 1 8 568 1 8 569 1 8 570 1 8 577 1 8 578 1 8 579 1 8 580 1 8 587 1 8 588 1 8 589 1 8 590 1 8 591 1 8 592 1 8 597 1 8 602 1 8 603 1 8 604 1 8 605 1 8 612 1 8 613 1 8 614 1 8 615 1 8 622 1 8 623 1 8 624 1 8 625 1 8 626 1 8 627 1 8 632 1 8 633 1 8 634 1 8 635 1 8 642 1 8 643 1 8 644 1 8 645 1 8 646 1 8 647 1 8 652 1 8 653 1 8 654 1 8 655 1 8 656 1 8 657 1 8 662 1 8 663 1 8 664 1 8 665 1 8 667 1 8 672 1 8 673 1 8 674 1 8 675 1 8 682 1 8 683 1 8 684 1 8 685 1 8 692 1 8 693 1 8 694 1 8 695 1 8 696 1 8 697 1 8 702 1 8 703 1 8 704 1 8 705 1 8 712 1 8 713 1 8 714 1 8 715 1 8 716 1 8 717 1 8 722 1 8 723 1 8 724 1 8 725 1 8 726 1 8 727 1 8 732 1 8 733 1 8 734 1 8 735 1 8 737 1 8 738 1 8 739 1 8 740 1 8 747 1 8 748 1 8 749 1 8 750 1 8 751 1 8 752 1 8 757 1 8 758 1 8 759 1 8 760 1 8 761 1 8 762 1 8 767 1 8 768 1 8 769 1 8 770 1 8 772 1 8 773 1 8 774 1 8 775 1 8 776 1 8 777 1 8 782 1 8 783 1 8 784 1 8 785 1 8 787 1 8 788 1 8 789 1 8 790 1 8 792 1 9 5 1 9 12 1 9 18 1 9 23 1 9 27 1 9 31 1 9 32 1 9 33 1 9 40 1 9 46 1 9 51 1 9 55 1 9 59 1 9 60 1 9 61 1 9 67 1 9 72 1 9 76 1 9 80 1 9 81 1 9 82 1 9 87 1 9 91 1 9 95 1 9 96 1 9 97 1 9 101 1 9 105 1 9 106 1 9 107 1 9 111 1 9 112 1 9 113 1 9 117 1 9 118 1 9 119 1 9 124 1 9 130 1 9 135 1 9 139 1 9 143 1 9 144 1 9 145 1 9 151 1 9 156 1 9 160 1 9 164 1 9 165 1 9 166 1 9 171 1 9 175 1 9 179 1 9 180 1 9 181 1 9 185 1 9 189 1 9 190 1 9 191 1 9 195 1 9 196 1 9 197 1 9 201 1 9 202 1 9 203 1 9 207 1 9 212 1 9 216 1 9 220 1 9 221 1 9 222 1 9 227 1 9 231 1 9 235 1 9 236 1 9 237 1 9 241 1 9 245 1 9 246 1 9 247 1 9 251 1 9 252 1 9 253 1 9 257 1 9 258 1 9 259 1 9 262 1 9 266 1 9 270 1 9 271 1 9 272 1 9 276 1 9 280 1 9 281 1 9 282 1 9 286 1 9 287 1 9 288 1 9 292 1 9 293 1 9 294 1 9 296 1 9 300 1 9 301 1 9 302 1 9 306 1 9 307 1 9 308 1 9 312 1 9 313 1 9 314 1 9 316 1 9 317 1 9 318 1 9 322 1 9 323 1 9 324 1 9 326 1 9 327 1 9 328 1 9 330 1 9 334 1 9 340 1 9 345 1 9 349 1 9 353 1 9 354 1 9 355 1 9 361 1 9 366 1 9 370 1 9 374 1 9 375 1 9 376 1 9 381 1 9 385 1 9 389 1 9 390 1 9 391 1 9 395 1 9 399 1 9 400 1 9 401 1 9 405 1 9 406 1 9 407 1 9 411 1 9 412 1 9 413 1 9 417 1 9 422 1 9 426 1 9 430 1 9 431 1 9 432 1 9 437 1 9 441 1 9 445 1 9 446 1 9 447 1 9 451 1 9 455 1 9 456 1 9 457 1 9 461 1 9 462 1 9 463 1 9 467 1 9 468 1 9 469 1 9 472 1 9 476 1 9 480 1 9 481 1 9 482 1 9 486 1 9 490 1 9 491 1 9 492 1 9 496 1 9 497 1 9 498 1 9 502 1 9 503 1 9 504 1 9 506 1 9 510 1 9 511 1 9 512 1 9 516 1 9 517 1 9 518 1 9 522 1 9 523 1 9 524 1 9 526 1 9 527 1 9 528 1 9 532 1 9 533 1 9 534 1 9 536 1 9 537 1 9 538 1 9 540 1 9 543 1 9 548 1 9 552 1 9 556 1 9 557 1 9 558 1 9 563 1 9 567 1 9 571 1 9 572 1 9 573 1 9 577 1 9 581 1 9 582 1 9 583 1 9 587 1 9 588 1 9 589 1 9 593 1 9 594 1 9 595 1 9 598 1 9 602 1 9 606 1 9 607 1 9 608 1 9 612 1 9 616 1 9 617 1 9 618 1 9 622 1 9 623 1 9 624 1 9 628 1 9 629 1 9 630 1 9 632 1 9 636 1 9 637 1 9 638 1 9 642 1 9 643 1 9 644 1 9 648 1 9 649 1 9 650 1 9 652 1 9 653 1 9 654 1 9 658 1 9 659 1 9 660 1 9 662 1 9 663 1 9 664 1 9 666 1 9 668 1 9 672 1 9 676 1 9 677 1 9 678 1 9 682 1 9 686 1 9 687 1 9 688 1 9 692 1 9 693 1 9 694 1 9 698 1 9 699 1 9 700 1 9 702 1 9 706 1 9 707 1 9 708 1 9 712 1 9 713 1 9 714 1 9 718 1 9 719 1 9 720 1 9 722 1 9 723 1 9 724 1 9 728 1 9 729 1 9 730 1 9 732 1 9 733 1 9 734 1 9 736 1 9 737 1 9 741 1 9 742 1 9 743 1 9 747 1 9 748 1 9 749 1 9 753 1 9 754 1 9 755 1 9 757 1 9 758 1 9 759 1 9 763 1 9 764 1 9 765 1 9 767 1 9 768 1 9 769 1 9 771 1 9 772 1 9 773 1 9 774 1 9 778 1 9 779 1 9 780 1 9 782 1 9 783 1 9 784 1 9 786 1 9 787 1 9 788 1 9 789 1 9 791 1 9 792 1 10 6 1 10 13 1 10 19 1 10 24 1 10 28 1 10 31 1 10 34 1 10 35 1 10 41 1 10 47 1 10 52 1 10 56 1 10 59 1 10 62 1 10 63 1 10 68 1 10 73 1 10 77 1 10 80 1 10 83 1 10 84 1 10 88 1 10 92 1 10 95 1 10 98 1 10 99 1 10 102 1 10 105 1 10 108 1 10 109 1 10 111 1 10 114 1 10 115 1 10 117 1 10 118 1 10 120 1 10 125 1 10 131 1 10 136 1 10 140 1 10 143 1 10 146 1 10 147 1 10 152 1 10 157 1 10 161 1 10 164 1 10 167 1 10 168 1 10 172 1 10 176 1 10 179 1 10 182 1 10 183 1 10 186 1 10 189 1 10 192 1 10 193 1 10 195 1 10 198 1 10 199 1 10 201 1 10 202 1 10 204 1 10 208 1 10 213 1 10 217 1 10 220 1 10 223 1 10 224 1 10 228 1 10 232 1 10 235 1 10 238 1 10 239 1 10 242 1 10 245 1 10 248 1 10 249 1 10 251 1 10 254 1 10 255 1 10 257 1 10 258 1 10 260 1 10 263 1 10 267 1 10 270 1 10 273 1 10 274 1 10 277 1 10 280 1 10 283 1 10 284 1 10 286 1 10 289 1 10 290 1 10 292 1 10 293 1 10 295 1 10 297 1 10 300 1 10 303 1 10 304 1 10 306 1 10 309 1 10 310 1 10 312 1 10 313 1 10 315 1 10 316 1 10 319 1 10 320 1 10 322 1 10 323 1 10 325 1 10 326 1 10 327 1 10 329 1 10 330 1 10 335 1 10 341 1 10 346 1 10 350 1 10 353 1 10 356 1 10 357 1 10 362 1 10 367 1 10 371 1 10 374 1 10 377 1 10 378 1 10 382 1 10 386 1 10 389 1 10 392 1 10 393 1 10 396 1 10 399 1 10 402 1 10 403 1 10 405 1 10 408 1 10 409 1 10 411 1 10 412 1 10 414 1 10 418 1 10 423 1 10 427 1 10 430 1 10 433 1 10 434 1 10 438 1 10 442 1 10 445 1 10 448 1 10 449 1 10 452 1 10 455 1 10 458 1 10 459 1 10 461 1 10 464 1 10 465 1 10 467 1 10 468 1 10 470 1 10 473 1 10 477 1 10 480 1 10 483 1 10 484 1 10 487 1 10 490 1 10 493 1 10 494 1 10 496 1 10 499 1 10 500 1 10 502 1 10 503 1 10 505 1 10 507 1 10 510 1 10 513 1 10 514 1 10 516 1 10 519 1 10 520 1 10 522 1 10 523 1 10 525 1 10 526 1 10 529 1 10 530 1 10 532 1 10 533 1 10 535 1 10 536 1 10 537 1 10 539 1 10 540 1 10 544 1 10 549 1 10 553 1 10 556 1 10 559 1 10 560 1 10 564 1 10 568 1 10 571 1 10 574 1 10 575 1 10 578 1 10 581 1 10 584 1 10 585 1 10 587 1 10 590 1 10 591 1 10 593 1 10 594 1 10 596 1 10 599 1 10 603 1 10 606 1 10 609 1 10 610 1 10 613 1 10 616 1 10 619 1 10 620 1 10 622 1 10 625 1 10 626 1 10 628 1 10 629 1 10 631 1 10 633 1 10 636 1 10 639 1 10 640 1 10 642 1 10 645 1 10 646 1 10 648 1 10 649 1 10 651 1 10 652 1 10 655 1 10 656 1 10 658 1 10 659 1 10 661 1 10 662 1 10 663 1 10 665 1 10 666 1 10 669 1 10 673 1 10 676 1 10 679 1 10 680 1 10 683 1 10 686 1 10 689 1 10 690 1 10 692 1 10 695 1 10 696 1 10 698 1 10 699 1 10 701 1 10 703 1 10 706 1 10 709 1 10 710 1 10 712 1 10 715 1 10 716 1 10 718 1 10 719 1 10 721 1 10 722 1 10 725 1 10 726 1 10 728 1 10 729 1 10 731 1 10 732 1 10 733 1 10 735 1 10 736 1 10 738 1 10 741 1 10 744 1 10 745 1 10 747 1 10 750 1 10 751 1 10 753 1 10 754 1 10 756 1 10 757 1 10 760 1 10 761 1 10 763 1 10 764 1 10 766 1 10 767 1 10 768 1 10 770 1 10 771 1 10 772 1 10 775 1 10 776 1 10 778 1 10 779 1 10 781 1 10 782 1 10 783 1 10 785 1 10 786 1 10 787 1 10 788 1 10 790 1 10 791 1 10 792 1 11 7 1 11 14 1 11 20 1 11 25 1 11 29 1 11 32 1 11 34 1 11 36 1 11 42 1 11 48 1 11 53 1 11 57 1 11 60 1 11 62 1 11 64 1 11 69 1 11 74 1 11 78 1 11 81 1 11 83 1 11 85 1 11 89 1 11 93 1 11 96 1 11 98 1 11 100 1 11 103 1 11 106 1 11 108 1 11 110 1 11 112 1 11 114 1 11 116 1 11 117 1 11 119 1 11 120 1 11 126 1 11 132 1 11 137 1 11 141 1 11 144 1 11 146 1 11 148 1 11 153 1 11 158 1 11 162 1 11 165 1 11 167 1 11 169 1 11 173 1 11 177 1 11 180 1 11 182 1 11 184 1 11 187 1 11 190 1 11 192 1 11 194 1 11 196 1 11 198 1 11 200 1 11 201 1 11 203 1 11 204 1 11 209 1 11 214 1 11 218 1 11 221 1 11 223 1 11 225 1 11 229 1 11 233 1 11 236 1 11 238 1 11 240 1 11 243 1 11 246 1 11 248 1 11 250 1 11 252 1 11 254 1 11 256 1 11 257 1 11 259 1 11 260 1 11 264 1 11 268 1 11 271 1 11 273 1 11 275 1 11 278 1 11 281 1 11 283 1 11 285 1 11 287 1 11 289 1 11 291 1 11 292 1 11 294 1 11 295 1 11 298 1 11 301 1 11 303 1 11 305 1 11 307 1 11 309 1 11 311 1 11 312 1 11 314 1 11 315 1 11 317 1 11 319 1 11 321 1 11 322 1 11 324 1 11 325 1 11 326 1 11 328 1 11 329 1 11 330 1 11 336 1 11 342 1 11 347 1 11 351 1 11 354 1 11 356 1 11 358 1 11 363 1 11 368 1 11 372 1 11 375 1 11 377 1 11 379 1 11 383 1 11 387 1 11 390 1 11 392 1 11 394 1 11 397 1 11 400 1 11 402 1 11 404 1 11 406 1 11 408 1 11 410 1 11 411 1 11 413 1 11 414 1 11 419 1 11 424 1 11 428 1 11 431 1 11 433 1 11 435 1 11 439 1 11 443 1 11 446 1 11 448 1 11 450 1 11 453 1 11 456 1 11 458 1 11 460 1 11 462 1 11 464 1 11 466 1 11 467 1 11 469 1 11 470 1 11 474 1 11 478 1 11 481 1 11 483 1 11 485 1 11 488 1 11 491 1 11 493 1 11 495 1 11 497 1 11 499 1 11 501 1 11 502 1 11 504 1 11 505 1 11 508 1 11 511 1 11 513 1 11 515 1 11 517 1 11 519 1 11 521 1 11 522 1 11 524 1 11 525 1 11 527 1 11 529 1 11 531 1 11 532 1 11 534 1 11 535 1 11 536 1 11 538 1 11 539 1 11 540 1 11 545 1 11 550 1 11 554 1 11 557 1 11 559 1 11 561 1 11 565 1 11 569 1 11 572 1 11 574 1 11 576 1 11 579 1 11 582 1 11 584 1 11 586 1 11 588 1 11 590 1 11 592 1 11 593 1 11 595 1 11 596 1 11 600 1 11 604 1 11 607 1 11 609 1 11 611 1 11 614 1 11 617 1 11 619 1 11 621 1 11 623 1 11 625 1 11 627 1 11 628 1 11 630 1 11 631 1 11 634 1 11 637 1 11 639 1 11 641 1 11 643 1 11 645 1 11 647 1 11 648 1 11 650 1 11 651 1 11 653 1 11 655 1 11 657 1 11 658 1 11 660 1 11 661 1 11 662 1 11 664 1 11 665 1 11 666 1 11 670 1 11 674 1 11 677 1 11 679 1 11 681 1 11 684 1 11 687 1 11 689 1 11 691 1 11 693 1 11 695 1 11 697 1 11 698 1 11 700 1 11 701 1 11 704 1 11 707 1 11 709 1 11 711 1 11 713 1 11 715 1 11 717 1 11 718 1 11 720 1 11 721 1 11 723 1 11 725 1 11 727 1 11 728 1 11 730 1 11 731 1 11 732 1 11 734 1 11 735 1 11 736 1 11 739 1 11 742 1 11 744 1 11 746 1 11 748 1 11 750 1 11 752 1 11 753 1 11 755 1 11 756 1 11 758 1 11 760 1 11 762 1 11 763 1 11 765 1 11 766 1 11 767 1 11 769 1 11 770 1 11 771 1 11 773 1 11 775 1 11 777 1 11 778 1 11 780 1 11 781 1 11 782 1 11 784 1 11 785 1 11 786 1 11 787 1 11 789 1 11 790 1 11 791 1 11 792 1 12 8 1 12 15 1 12 21 1 12 26 1 12 30 1 12 33 1 12 35 1 12 36 1 12 43 1 12 49 1 12 54 1 12 58 1 12 61 1 12 63 1 12 64 1 12 70 1 12 75 1 12 79 1 12 82 1 12 84 1 12 85 1 12 90 1 12 94 1 12 97 1 12 99 1 12 100 1 12 104 1 12 107 1 12 109 1 12 110 1 12 113 1 12 115 1 12 116 1 12 118 1 12 119 1 12 120 1 12 127 1 12 133 1 12 138 1 12 142 1 12 145 1 12 147 1 12 148 1 12 154 1 12 159 1 12 163 1 12 166 1 12 168 1 12 169 1 12 174 1 12 178 1 12 181 1 12 183 1 12 184 1 12 188 1 12 191 1 12 193 1 12 194 1 12 197 1 12 199 1 12 200 1 12 202 1 12 203 1 12 204 1 12 210 1 12 215 1 12 219 1 12 222 1 12 224 1 12 225 1 12 230 1 12 234 1 12 237 1 12 239 1 12 240 1 12 244 1 12 247 1 12 249 1 12 250 1 12 253 1 12 255 1 12 256 1 12 258 1 12 259 1 12 260 1 12 265 1 12 269 1 12 272 1 12 274 1 12 275 1 12 279 1 12 282 1 12 284 1 12 285 1 12 288 1 12 290 1 12 291 1 12 293 1 12 294 1 12 295 1 12 299 1 12 302 1 12 304 1 12 305 1 12 308 1 12 310 1 12 311 1 12 313 1 12 314 1 12 315 1 12 318 1 12 320 1 12 321 1 12 323 1 12 324 1 12 325 1 12 327 1 12 328 1 12 329 1 12 330 1 12 337 1 12 343 1 12 348 1 12 352 1 12 355 1 12 357 1 12 358 1 12 364 1 12 369 1 12 373 1 12 376 1 12 378 1 12 379 1 12 384 1 12 388 1 12 391 1 12 393 1 12 394 1 12 398 1 12 401 1 12 403 1 12 404 1 12 407 1 12 409 1 12 410 1 12 412 1 12 413 1 12 414 1 12 420 1 12 425 1 12 429 1 12 432 1 12 434 1 12 435 1 12 440 1 12 444 1 12 447 1 12 449 1 12 450 1 12 454 1 12 457 1 12 459 1 12 460 1 12 463 1 12 465 1 12 466 1 12 468 1 12 469 1 12 470 1 12 475 1 12 479 1 12 482 1 12 484 1 12 485 1 12 489 1 12 492 1 12 494 1 12 495 1 12 498 1 12 500 1 12 501 1 12 503 1 12 504 1 12 505 1 12 509 1 12 512 1 12 514 1 12 515 1 12 518 1 12 520 1 12 521 1 12 523 1 12 524 1 12 525 1 12 528 1 12 530 1 12 531 1 12 533 1 12 534 1 12 535 1 12 537 1 12 538 1 12 539 1 12 540 1 12 546 1 12 551 1 12 555 1 12 558 1 12 560 1 12 561 1 12 566 1 12 570 1 12 573 1 12 575 1 12 576 1 12 580 1 12 583 1 12 585 1 12 586 1 12 589 1 12 591 1 12 592 1 12 594 1 12 595 1 12 596 1 12 601 1 12 605 1 12 608 1 12 610 1 12 611 1 12 615 1 12 618 1 12 620 1 12 621 1 12 624 1 12 626 1 12 627 1 12 629 1 12 630 1 12 631 1 12 635 1 12 638 1 12 640 1 12 641 1 12 644 1 12 646 1 12 647 1 12 649 1 12 650 1 12 651 1 12 654 1 12 656 1 12 657 1 12 659 1 12 660 1 12 661 1 12 663 1 12 664 1 12 665 1 12 666 1 12 671 1 12 675 1 12 678 1 12 680 1 12 681 1 12 685 1 12 688 1 12 690 1 12 691 1 12 694 1 12 696 1 12 697 1 12 699 1 12 700 1 12 701 1 12 705 1 12 708 1 12 710 1 12 711 1 12 714 1 12 716 1 12 717 1 12 719 1 12 720 1 12 721 1 12 724 1 12 726 1 12 727 1 12 729 1 12 730 1 12 731 1 12 733 1 12 734 1 12 735 1 12 736 1 12 740 1 12 743 1 12 745 1 12 746 1 12 749 1 12 751 1 12 752 1 12 754 1 12 755 1 12 756 1 12 759 1 12 761 1 12 762 1 12 764 1 12 765 1 12 766 1 12 768 1 12 769 1 12 770 1 12 771 1 12 774 1 12 776 1 12 777 1 12 779 1 12 780 1 12 781 1 12 783 1 12 784 1 12 785 1 12 786 1 12 788 1 12 789 1 12 790 1 12 791 1 12 792 1 13 1 1 13 2 1 13 3 1 13 4 1 13 5 1 13 6 1 13 7 1 13 8 1 13 9 1 13 10 1 13 11 1 13 12 1 13 13 1 13 14 1 13 15 1 13 16 1 13 17 1 13 18 1 13 19 1 13 20 1 13 21 1 13 22 1 13 23 1 13 24 1 13 25 1 13 26 1 13 27 1 13 28 1 13 29 1 13 30 1 13 31 1 13 32 1 13 33 1 13 34 1 13 35 1 13 36 1 13 37 1 13 38 1 13 39 1 13 40 1 13 41 1 13 42 1 13 43 1 13 44 1 13 45 1 13 46 1 13 47 1 13 48 1 13 49 1 13 50 1 13 51 1 13 52 1 13 53 1 13 54 1 13 55 1 13 56 1 13 57 1 13 58 1 13 59 1 13 60 1 13 61 1 13 62 1 13 63 1 13 64 1 13 65 1 13 66 1 13 67 1 13 68 1 13 69 1 13 70 1 13 71 1 13 72 1 13 73 1 13 74 1 13 75 1 13 76 1 13 77 1 13 78 1 13 79 1 13 80 1 13 81 1 13 82 1 13 83 1 13 84 1 13 85 1 13 86 1 13 87 1 13 88 1 13 89 1 13 90 1 13 91 1 13 92 1 13 93 1 13 94 1 13 95 1 13 96 1 13 97 1 13 98 1 13 99 1 13 100 1 13 101 1 13 102 1 13 103 1 13 104 1 13 105 1 13 106 1 13 107 1 13 108 1 13 109 1 13 110 1 13 111 1 13 112 1 13 113 1 13 114 1 13 115 1 13 116 1 13 117 1 13 118 1 13 119 1 13 120 1 13 793 1 13 794 1 13 795 1 13 796 1 13 797 1 13 798 1 13 799 1 13 800 1 13 801 1 13 802 1 13 803 1 13 804 1 13 805 1 13 806 1 13 807 1 13 808 1 13 809 1 13 810 1 13 811 1 13 812 1 13 813 1 13 814 1 13 815 1 13 816 1 13 817 1 13 818 1 13 819 1 13 820 1 13 821 1 13 822 1 13 823 1 13 824 1 13 825 1 13 826 1 13 827 1 13 828 1 13 829 1 13 830 1 13 831 1 13 832 1 13 833 1 13 834 1 13 835 1 13 836 1 13 837 1 13 838 1 13 839 1 13 840 1 13 841 1 13 842 1 13 843 1 13 844 1 13 845 1 13 846 1 13 847 1 13 848 1 13 849 1 13 850 1 13 851 1 13 852 1 13 853 1 13 854 1 13 855 1 13 856 1 13 857 1 13 858 1 13 859 1 13 860 1 13 861 1 13 862 1 13 863 1 13 864 1 13 865 1 13 866 1 13 867 1 13 868 1 13 869 1 13 870 1 13 871 1 13 872 1 13 873 1 13 874 1 13 875 1 13 876 1 13 877 1 13 878 1 13 879 1 13 880 1 13 881 1 13 882 1 13 883 1 13 884 1 13 885 1 13 886 1 13 887 1 13 888 1 13 889 1 13 890 1 13 891 1 13 892 1 13 893 1 13 894 1 13 895 1 13 896 1 13 897 1 13 898 1 13 899 1 13 900 1 13 901 1 13 902 1 13 903 1 13 904 1 13 905 1 13 906 1 13 907 1 13 908 1 13 909 1 13 910 1 13 911 1 13 912 1 13 913 1 13 914 1 13 915 1 13 916 1 13 917 1 13 918 1 13 919 1 13 920 1 13 921 1 13 922 1 13 923 1 13 924 1 13 925 1 13 926 1 13 927 1 13 928 1 13 929 1 13 930 1 13 931 1 13 932 1 13 933 1 13 934 1 13 935 1 13 936 1 13 937 1 13 938 1 13 939 1 13 940 1 13 941 1 13 942 1 13 943 1 13 944 1 13 945 1 13 946 1 13 947 1 13 948 1 13 949 1 13 950 1 13 951 1 13 952 1 13 953 1 13 954 1 13 955 1 13 956 1 13 957 1 13 958 1 13 959 1 13 960 1 13 961 1 13 962 1 13 963 1 13 964 1 13 965 1 13 966 1 13 967 1 13 968 1 13 969 1 13 970 1 13 971 1 13 972 1 13 973 1 13 974 1 13 975 1 13 976 1 13 977 1 13 978 1 13 979 1 13 980 1 13 981 1 13 982 1 13 983 1 13 984 1 13 985 1 13 986 1 13 987 1 13 988 1 13 989 1 13 990 1 13 991 1 13 992 1 13 993 1 13 994 1 13 995 1 13 996 1 13 997 1 13 998 1 13 999 1 13 1000 1 13 1001 1 13 1002 1 14 1 1 14 2 1 14 3 1 14 4 1 14 5 1 14 6 1 14 7 1 14 8 1 14 9 1 14 10 1 14 11 1 14 12 1 14 13 1 14 14 1 14 15 1 14 16 1 14 17 1 14 18 1 14 19 1 14 20 1 14 21 1 14 22 1 14 23 1 14 24 1 14 25 1 14 26 1 14 27 1 14 28 1 14 29 1 14 30 1 14 31 1 14 32 1 14 33 1 14 34 1 14 35 1 14 36 1 14 121 1 14 122 1 14 123 1 14 124 1 14 125 1 14 126 1 14 127 1 14 128 1 14 129 1 14 130 1 14 131 1 14 132 1 14 133 1 14 134 1 14 135 1 14 136 1 14 137 1 14 138 1 14 139 1 14 140 1 14 141 1 14 142 1 14 143 1 14 144 1 14 145 1 14 146 1 14 147 1 14 148 1 14 149 1 14 150 1 14 151 1 14 152 1 14 153 1 14 154 1 14 155 1 14 156 1 14 157 1 14 158 1 14 159 1 14 160 1 14 161 1 14 162 1 14 163 1 14 164 1 14 165 1 14 166 1 14 167 1 14 168 1 14 169 1 14 170 1 14 171 1 14 172 1 14 173 1 14 174 1 14 175 1 14 176 1 14 177 1 14 178 1 14 179 1 14 180 1 14 181 1 14 182 1 14 183 1 14 184 1 14 185 1 14 186 1 14 187 1 14 188 1 14 189 1 14 190 1 14 191 1 14 192 1 14 193 1 14 194 1 14 195 1 14 196 1 14 197 1 14 198 1 14 199 1 14 200 1 14 201 1 14 202 1 14 203 1 14 204 1 14 793 1 14 794 1 14 795 1 14 796 1 14 797 1 14 798 1 14 799 1 14 800 1 14 801 1 14 802 1 14 803 1 14 804 1 14 805 1 14 806 1 14 807 1 14 808 1 14 809 1 14 810 1 14 811 1 14 812 1 14 813 1 14 814 1 14 815 1 14 816 1 14 817 1 14 818 1 14 819 1 14 820 1 14 821 1 14 822 1 14 823 1 14 824 1 14 825 1 14 826 1 14 827 1 14 828 1 14 829 1 14 830 1 14 831 1 14 832 1 14 833 1 14 834 1 14 835 1 14 836 1 14 837 1 14 838 1 14 839 1 14 840 1 14 841 1 14 842 1 14 843 1 14 844 1 14 845 1 14 846 1 14 847 1 14 848 1 14 849 1 14 850 1 14 851 1 14 852 1 14 853 1 14 854 1 14 855 1 14 856 1 14 857 1 14 858 1 14 859 1 14 860 1 14 861 1 14 862 1 14 863 1 14 864 1 14 865 1 14 866 1 14 867 1 14 868 1 14 869 1 14 870 1 14 871 1 14 872 1 14 873 1 14 874 1 14 875 1 14 876 1 14 1003 1 14 1004 1 14 1005 1 14 1006 1 14 1007 1 14 1008 1 14 1009 1 14 1010 1 14 1011 1 14 1012 1 14 1013 1 14 1014 1 14 1015 1 14 1016 1 14 1017 1 14 1018 1 14 1019 1 14 1020 1 14 1021 1 14 1022 1 14 1023 1 14 1024 1 14 1025 1 14 1026 1 14 1027 1 14 1028 1 14 1029 1 14 1030 1 14 1031 1 14 1032 1 14 1033 1 14 1034 1 14 1035 1 14 1036 1 14 1037 1 14 1038 1 14 1039 1 14 1040 1 14 1041 1 14 1042 1 14 1043 1 14 1044 1 14 1045 1 14 1046 1 14 1047 1 14 1048 1 14 1049 1 14 1050 1 14 1051 1 14 1052 1 14 1053 1 14 1054 1 14 1055 1 14 1056 1 14 1057 1 14 1058 1 14 1059 1 14 1060 1 14 1061 1 14 1062 1 14 1063 1 14 1064 1 14 1065 1 14 1066 1 14 1067 1 14 1068 1 14 1069 1 14 1070 1 14 1071 1 14 1072 1 14 1073 1 14 1074 1 14 1075 1 14 1076 1 14 1077 1 14 1078 1 14 1079 1 14 1080 1 14 1081 1 14 1082 1 14 1083 1 14 1084 1 14 1085 1 14 1086 1 14 1087 1 14 1088 1 14 1089 1 14 1090 1 14 1091 1 14 1092 1 14 1093 1 14 1094 1 14 1095 1 14 1096 1 14 1097 1 14 1098 1 14 1099 1 14 1100 1 14 1101 1 14 1102 1 14 1103 1 14 1104 1 14 1105 1 14 1106 1 14 1107 1 14 1108 1 14 1109 1 14 1110 1 14 1111 1 14 1112 1 14 1113 1 14 1114 1 14 1115 1 14 1116 1 14 1117 1 14 1118 1 14 1119 1 14 1120 1 14 1121 1 14 1122 1 14 1123 1 14 1124 1 14 1125 1 14 1126 1 14 1127 1 14 1128 1 15 1 1 15 2 1 15 3 1 15 4 1 15 5 1 15 6 1 15 7 1 15 8 1 15 37 1 15 38 1 15 39 1 15 40 1 15 41 1 15 42 1 15 43 1 15 44 1 15 45 1 15 46 1 15 47 1 15 48 1 15 49 1 15 50 1 15 51 1 15 52 1 15 53 1 15 54 1 15 55 1 15 56 1 15 57 1 15 58 1 15 59 1 15 60 1 15 61 1 15 62 1 15 63 1 15 64 1 15 121 1 15 122 1 15 123 1 15 124 1 15 125 1 15 126 1 15 127 1 15 128 1 15 129 1 15 130 1 15 131 1 15 132 1 15 133 1 15 134 1 15 135 1 15 136 1 15 137 1 15 138 1 15 139 1 15 140 1 15 141 1 15 142 1 15 143 1 15 144 1 15 145 1 15 146 1 15 147 1 15 148 1 15 205 1 15 206 1 15 207 1 15 208 1 15 209 1 15 210 1 15 211 1 15 212 1 15 213 1 15 214 1 15 215 1 15 216 1 15 217 1 15 218 1 15 219 1 15 220 1 15 221 1 15 222 1 15 223 1 15 224 1 15 225 1 15 226 1 15 227 1 15 228 1 15 229 1 15 230 1 15 231 1 15 232 1 15 233 1 15 234 1 15 235 1 15 236 1 15 237 1 15 238 1 15 239 1 15 240 1 15 241 1 15 242 1 15 243 1 15 244 1 15 245 1 15 246 1 15 247 1 15 248 1 15 249 1 15 250 1 15 251 1 15 252 1 15 253 1 15 254 1 15 255 1 15 256 1 15 257 1 15 258 1 15 259 1 15 260 1 15 793 1 15 794 1 15 795 1 15 796 1 15 797 1 15 798 1 15 799 1 15 800 1 15 801 1 15 802 1 15 803 1 15 804 1 15 805 1 15 806 1 15 807 1 15 808 1 15 809 1 15 810 1 15 811 1 15 812 1 15 813 1 15 814 1 15 815 1 15 816 1 15 817 1 15 818 1 15 819 1 15 820 1 15 877 1 15 878 1 15 879 1 15 880 1 15 881 1 15 882 1 15 883 1 15 884 1 15 885 1 15 886 1 15 887 1 15 888 1 15 889 1 15 890 1 15 891 1 15 892 1 15 893 1 15 894 1 15 895 1 15 896 1 15 897 1 15 898 1 15 899 1 15 900 1 15 901 1 15 902 1 15 903 1 15 904 1 15 905 1 15 906 1 15 907 1 15 908 1 15 909 1 15 910 1 15 911 1 15 912 1 15 913 1 15 914 1 15 915 1 15 916 1 15 917 1 15 918 1 15 919 1 15 920 1 15 921 1 15 922 1 15 923 1 15 924 1 15 925 1 15 926 1 15 927 1 15 928 1 15 929 1 15 930 1 15 931 1 15 932 1 15 1003 1 15 1004 1 15 1005 1 15 1006 1 15 1007 1 15 1008 1 15 1009 1 15 1010 1 15 1011 1 15 1012 1 15 1013 1 15 1014 1 15 1015 1 15 1016 1 15 1017 1 15 1018 1 15 1019 1 15 1020 1 15 1021 1 15 1022 1 15 1023 1 15 1024 1 15 1025 1 15 1026 1 15 1027 1 15 1028 1 15 1029 1 15 1030 1 15 1031 1 15 1032 1 15 1033 1 15 1034 1 15 1035 1 15 1036 1 15 1037 1 15 1038 1 15 1039 1 15 1040 1 15 1041 1 15 1042 1 15 1043 1 15 1044 1 15 1045 1 15 1046 1 15 1047 1 15 1048 1 15 1049 1 15 1050 1 15 1051 1 15 1052 1 15 1053 1 15 1054 1 15 1055 1 15 1056 1 15 1057 1 15 1058 1 15 1129 1 15 1130 1 15 1131 1 15 1132 1 15 1133 1 15 1134 1 15 1135 1 15 1136 1 15 1137 1 15 1138 1 15 1139 1 15 1140 1 15 1141 1 15 1142 1 15 1143 1 15 1144 1 15 1145 1 15 1146 1 15 1147 1 15 1148 1 15 1149 1 15 1150 1 15 1151 1 15 1152 1 15 1153 1 15 1154 1 15 1155 1 15 1156 1 15 1157 1 15 1158 1 15 1159 1 15 1160 1 15 1161 1 15 1162 1 15 1163 1 15 1164 1 15 1165 1 15 1166 1 15 1167 1 15 1168 1 15 1169 1 15 1170 1 15 1171 1 15 1172 1 15 1173 1 15 1174 1 15 1175 1 15 1176 1 15 1177 1 15 1178 1 15 1179 1 15 1180 1 15 1181 1 15 1182 1 15 1183 1 15 1184 1 15 1185 1 15 1186 1 15 1187 1 15 1188 1 15 1189 1 15 1190 1 15 1191 1 15 1192 1 15 1193 1 15 1194 1 15 1195 1 15 1196 1 15 1197 1 15 1198 1 16 1 1 16 9 1 16 10 1 16 11 1 16 12 1 16 13 1 16 14 1 16 15 1 16 37 1 16 38 1 16 39 1 16 40 1 16 41 1 16 42 1 16 43 1 16 65 1 16 66 1 16 67 1 16 68 1 16 69 1 16 70 1 16 71 1 16 72 1 16 73 1 16 74 1 16 75 1 16 76 1 16 77 1 16 78 1 16 79 1 16 80 1 16 81 1 16 82 1 16 83 1 16 84 1 16 85 1 16 121 1 16 122 1 16 123 1 16 124 1 16 125 1 16 126 1 16 127 1 16 149 1 16 150 1 16 151 1 16 152 1 16 153 1 16 154 1 16 155 1 16 156 1 16 157 1 16 158 1 16 159 1 16 160 1 16 161 1 16 162 1 16 163 1 16 164 1 16 165 1 16 166 1 16 167 1 16 168 1 16 169 1 16 205 1 16 206 1 16 207 1 16 208 1 16 209 1 16 210 1 16 211 1 16 212 1 16 213 1 16 214 1 16 215 1 16 216 1 16 217 1 16 218 1 16 219 1 16 220 1 16 221 1 16 222 1 16 223 1 16 224 1 16 225 1 16 261 1 16 262 1 16 263 1 16 264 1 16 265 1 16 266 1 16 267 1 16 268 1 16 269 1 16 270 1 16 271 1 16 272 1 16 273 1 16 274 1 16 275 1 16 276 1 16 277 1 16 278 1 16 279 1 16 280 1 16 281 1 16 282 1 16 283 1 16 284 1 16 285 1 16 286 1 16 287 1 16 288 1 16 289 1 16 290 1 16 291 1 16 292 1 16 293 1 16 294 1 16 295 1 16 793 1 16 794 1 16 795 1 16 796 1 16 797 1 16 798 1 16 799 1 16 821 1 16 822 1 16 823 1 16 824 1 16 825 1 16 826 1 16 827 1 16 828 1 16 829 1 16 830 1 16 831 1 16 832 1 16 833 1 16 834 1 16 835 1 16 836 1 16 837 1 16 838 1 16 839 1 16 840 1 16 841 1 16 877 1 16 878 1 16 879 1 16 880 1 16 881 1 16 882 1 16 883 1 16 884 1 16 885 1 16 886 1 16 887 1 16 888 1 16 889 1 16 890 1 16 891 1 16 892 1 16 893 1 16 894 1 16 895 1 16 896 1 16 897 1 16 933 1 16 934 1 16 935 1 16 936 1 16 937 1 16 938 1 16 939 1 16 940 1 16 941 1 16 942 1 16 943 1 16 944 1 16 945 1 16 946 1 16 947 1 16 948 1 16 949 1 16 950 1 16 951 1 16 952 1 16 953 1 16 954 1 16 955 1 16 956 1 16 957 1 16 958 1 16 959 1 16 960 1 16 961 1 16 962 1 16 963 1 16 964 1 16 965 1 16 966 1 16 967 1 16 1003 1 16 1004 1 16 1005 1 16 1006 1 16 1007 1 16 1008 1 16 1009 1 16 1010 1 16 1011 1 16 1012 1 16 1013 1 16 1014 1 16 1015 1 16 1016 1 16 1017 1 16 1018 1 16 1019 1 16 1020 1 16 1021 1 16 1022 1 16 1023 1 16 1059 1 16 1060 1 16 1061 1 16 1062 1 16 1063 1 16 1064 1 16 1065 1 16 1066 1 16 1067 1 16 1068 1 16 1069 1 16 1070 1 16 1071 1 16 1072 1 16 1073 1 16 1074 1 16 1075 1 16 1076 1 16 1077 1 16 1078 1 16 1079 1 16 1080 1 16 1081 1 16 1082 1 16 1083 1 16 1084 1 16 1085 1 16 1086 1 16 1087 1 16 1088 1 16 1089 1 16 1090 1 16 1091 1 16 1092 1 16 1093 1 16 1129 1 16 1130 1 16 1131 1 16 1132 1 16 1133 1 16 1134 1 16 1135 1 16 1136 1 16 1137 1 16 1138 1 16 1139 1 16 1140 1 16 1141 1 16 1142 1 16 1143 1 16 1144 1 16 1145 1 16 1146 1 16 1147 1 16 1148 1 16 1149 1 16 1150 1 16 1151 1 16 1152 1 16 1153 1 16 1154 1 16 1155 1 16 1156 1 16 1157 1 16 1158 1 16 1159 1 16 1160 1 16 1161 1 16 1162 1 16 1163 1 16 1199 1 16 1200 1 16 1201 1 16 1202 1 16 1203 1 16 1204 1 16 1205 1 16 1206 1 16 1207 1 16 1208 1 16 1209 1 16 1210 1 16 1211 1 16 1212 1 16 1213 1 16 1214 1 16 1215 1 16 1216 1 16 1217 1 16 1218 1 16 1219 1 16 1220 1 16 1221 1 16 1222 1 16 1223 1 16 1224 1 16 1225 1 16 1226 1 16 1227 1 16 1228 1 16 1229 1 16 1230 1 16 1231 1 16 1232 1 16 1233 1 17 2 1 17 9 1 17 16 1 17 17 1 17 18 1 17 19 1 17 20 1 17 21 1 17 37 1 17 44 1 17 45 1 17 46 1 17 47 1 17 48 1 17 49 1 17 65 1 17 66 1 17 67 1 17 68 1 17 69 1 17 70 1 17 86 1 17 87 1 17 88 1 17 89 1 17 90 1 17 91 1 17 92 1 17 93 1 17 94 1 17 95 1 17 96 1 17 97 1 17 98 1 17 99 1 17 100 1 17 121 1 17 128 1 17 129 1 17 130 1 17 131 1 17 132 1 17 133 1 17 149 1 17 150 1 17 151 1 17 152 1 17 153 1 17 154 1 17 170 1 17 171 1 17 172 1 17 173 1 17 174 1 17 175 1 17 176 1 17 177 1 17 178 1 17 179 1 17 180 1 17 181 1 17 182 1 17 183 1 17 184 1 17 205 1 17 206 1 17 207 1 17 208 1 17 209 1 17 210 1 17 226 1 17 227 1 17 228 1 17 229 1 17 230 1 17 231 1 17 232 1 17 233 1 17 234 1 17 235 1 17 236 1 17 237 1 17 238 1 17 239 1 17 240 1 17 261 1 17 262 1 17 263 1 17 264 1 17 265 1 17 266 1 17 267 1 17 268 1 17 269 1 17 270 1 17 271 1 17 272 1 17 273 1 17 274 1 17 275 1 17 296 1 17 297 1 17 298 1 17 299 1 17 300 1 17 301 1 17 302 1 17 303 1 17 304 1 17 305 1 17 306 1 17 307 1 17 308 1 17 309 1 17 310 1 17 311 1 17 312 1 17 313 1 17 314 1 17 315 1 17 793 1 17 800 1 17 801 1 17 802 1 17 803 1 17 804 1 17 805 1 17 821 1 17 822 1 17 823 1 17 824 1 17 825 1 17 826 1 17 842 1 17 843 1 17 844 1 17 845 1 17 846 1 17 847 1 17 848 1 17 849 1 17 850 1 17 851 1 17 852 1 17 853 1 17 854 1 17 855 1 17 856 1 17 877 1 17 878 1 17 879 1 17 880 1 17 881 1 17 882 1 17 898 1 17 899 1 17 900 1 17 901 1 17 902 1 17 903 1 17 904 1 17 905 1 17 906 1 17 907 1 17 908 1 17 909 1 17 910 1 17 911 1 17 912 1 17 933 1 17 934 1 17 935 1 17 936 1 17 937 1 17 938 1 17 939 1 17 940 1 17 941 1 17 942 1 17 943 1 17 944 1 17 945 1 17 946 1 17 947 1 17 968 1 17 969 1 17 970 1 17 971 1 17 972 1 17 973 1 17 974 1 17 975 1 17 976 1 17 977 1 17 978 1 17 979 1 17 980 1 17 981 1 17 982 1 17 983 1 17 984 1 17 985 1 17 986 1 17 987 1 17 1003 1 17 1004 1 17 1005 1 17 1006 1 17 1007 1 17 1008 1 17 1024 1 17 1025 1 17 1026 1 17 1027 1 17 1028 1 17 1029 1 17 1030 1 17 1031 1 17 1032 1 17 1033 1 17 1034 1 17 1035 1 17 1036 1 17 1037 1 17 1038 1 17 1059 1 17 1060 1 17 1061 1 17 1062 1 17 1063 1 17 1064 1 17 1065 1 17 1066 1 17 1067 1 17 1068 1 17 1069 1 17 1070 1 17 1071 1 17 1072 1 17 1073 1 17 1094 1 17 1095 1 17 1096 1 17 1097 1 17 1098 1 17 1099 1 17 1100 1 17 1101 1 17 1102 1 17 1103 1 17 1104 1 17 1105 1 17 1106 1 17 1107 1 17 1108 1 17 1109 1 17 1110 1 17 1111 1 17 1112 1 17 1113 1 17 1129 1 17 1130 1 17 1131 1 17 1132 1 17 1133 1 17 1134 1 17 1135 1 17 1136 1 17 1137 1 17 1138 1 17 1139 1 17 1140 1 17 1141 1 17 1142 1 17 1143 1 17 1164 1 17 1165 1 17 1166 1 17 1167 1 17 1168 1 17 1169 1 17 1170 1 17 1171 1 17 1172 1 17 1173 1 17 1174 1 17 1175 1 17 1176 1 17 1177 1 17 1178 1 17 1179 1 17 1180 1 17 1181 1 17 1182 1 17 1183 1 17 1199 1 17 1200 1 17 1201 1 17 1202 1 17 1203 1 17 1204 1 17 1205 1 17 1206 1 17 1207 1 17 1208 1 17 1209 1 17 1210 1 17 1211 1 17 1212 1 17 1213 1 17 1214 1 17 1215 1 17 1216 1 17 1217 1 17 1218 1 17 1234 1 17 1235 1 17 1236 1 17 1237 1 17 1238 1 17 1239 1 17 1240 1 17 1241 1 17 1242 1 17 1243 1 17 1244 1 17 1245 1 17 1246 1 17 1247 1 17 1248 1 18 3 1 18 10 1 18 16 1 18 22 1 18 23 1 18 24 1 18 25 1 18 26 1 18 38 1 18 44 1 18 50 1 18 51 1 18 52 1 18 53 1 18 54 1 18 65 1 18 71 1 18 72 1 18 73 1 18 74 1 18 75 1 18 86 1 18 87 1 18 88 1 18 89 1 18 90 1 18 101 1 18 102 1 18 103 1 18 104 1 18 105 1 18 106 1 18 107 1 18 108 1 18 109 1 18 110 1 18 122 1 18 128 1 18 134 1 18 135 1 18 136 1 18 137 1 18 138 1 18 149 1 18 155 1 18 156 1 18 157 1 18 158 1 18 159 1 18 170 1 18 171 1 18 172 1 18 173 1 18 174 1 18 185 1 18 186 1 18 187 1 18 188 1 18 189 1 18 190 1 18 191 1 18 192 1 18 193 1 18 194 1 18 205 1 18 211 1 18 212 1 18 213 1 18 214 1 18 215 1 18 226 1 18 227 1 18 228 1 18 229 1 18 230 1 18 241 1 18 242 1 18 243 1 18 244 1 18 245 1 18 246 1 18 247 1 18 248 1 18 249 1 18 250 1 18 261 1 18 262 1 18 263 1 18 264 1 18 265 1 18 276 1 18 277 1 18 278 1 18 279 1 18 280 1 18 281 1 18 282 1 18 283 1 18 284 1 18 285 1 18 296 1 18 297 1 18 298 1 18 299 1 18 300 1 18 301 1 18 302 1 18 303 1 18 304 1 18 305 1 18 316 1 18 317 1 18 318 1 18 319 1 18 320 1 18 321 1 18 322 1 18 323 1 18 324 1 18 325 1 18 794 1 18 800 1 18 806 1 18 807 1 18 808 1 18 809 1 18 810 1 18 821 1 18 827 1 18 828 1 18 829 1 18 830 1 18 831 1 18 842 1 18 843 1 18 844 1 18 845 1 18 846 1 18 857 1 18 858 1 18 859 1 18 860 1 18 861 1 18 862 1 18 863 1 18 864 1 18 865 1 18 866 1 18 877 1 18 883 1 18 884 1 18 885 1 18 886 1 18 887 1 18 898 1 18 899 1 18 900 1 18 901 1 18 902 1 18 913 1 18 914 1 18 915 1 18 916 1 18 917 1 18 918 1 18 919 1 18 920 1 18 921 1 18 922 1 18 933 1 18 934 1 18 935 1 18 936 1 18 937 1 18 948 1 18 949 1 18 950 1 18 951 1 18 952 1 18 953 1 18 954 1 18 955 1 18 956 1 18 957 1 18 968 1 18 969 1 18 970 1 18 971 1 18 972 1 18 973 1 18 974 1 18 975 1 18 976 1 18 977 1 18 988 1 18 989 1 18 990 1 18 991 1 18 992 1 18 993 1 18 994 1 18 995 1 18 996 1 18 997 1 18 1003 1 18 1009 1 18 1010 1 18 1011 1 18 1012 1 18 1013 1 18 1024 1 18 1025 1 18 1026 1 18 1027 1 18 1028 1 18 1039 1 18 1040 1 18 1041 1 18 1042 1 18 1043 1 18 1044 1 18 1045 1 18 1046 1 18 1047 1 18 1048 1 18 1059 1 18 1060 1 18 1061 1 18 1062 1 18 1063 1 18 1074 1 18 1075 1 18 1076 1 18 1077 1 18 1078 1 18 1079 1 18 1080 1 18 1081 1 18 1082 1 18 1083 1 18 1094 1 18 1095 1 18 1096 1 18 1097 1 18 1098 1 18 1099 1 18 1100 1 18 1101 1 18 1102 1 18 1103 1 18 1114 1 18 1115 1 18 1116 1 18 1117 1 18 1118 1 18 1119 1 18 1120 1 18 1121 1 18 1122 1 18 1123 1 18 1129 1 18 1130 1 18 1131 1 18 1132 1 18 1133 1 18 1144 1 18 1145 1 18 1146 1 18 1147 1 18 1148 1 18 1149 1 18 1150 1 18 1151 1 18 1152 1 18 1153 1 18 1164 1 18 1165 1 18 1166 1 18 1167 1 18 1168 1 18 1169 1 18 1170 1 18 1171 1 18 1172 1 18 1173 1 18 1184 1 18 1185 1 18 1186 1 18 1187 1 18 1188 1 18 1189 1 18 1190 1 18 1191 1 18 1192 1 18 1193 1 18 1199 1 18 1200 1 18 1201 1 18 1202 1 18 1203 1 18 1204 1 18 1205 1 18 1206 1 18 1207 1 18 1208 1 18 1219 1 18 1220 1 18 1221 1 18 1222 1 18 1223 1 18 1224 1 18 1225 1 18 1226 1 18 1227 1 18 1228 1 18 1234 1 18 1235 1 18 1236 1 18 1237 1 18 1238 1 18 1239 1 18 1240 1 18 1241 1 18 1242 1 18 1243 1 18 1249 1 18 1250 1 18 1251 1 18 1252 1 18 1253 1 19 4 1 19 11 1 19 17 1 19 22 1 19 27 1 19 28 1 19 29 1 19 30 1 19 39 1 19 45 1 19 50 1 19 55 1 19 56 1 19 57 1 19 58 1 19 66 1 19 71 1 19 76 1 19 77 1 19 78 1 19 79 1 19 86 1 19 91 1 19 92 1 19 93 1 19 94 1 19 101 1 19 102 1 19 103 1 19 104 1 19 111 1 19 112 1 19 113 1 19 114 1 19 115 1 19 116 1 19 123 1 19 129 1 19 134 1 19 139 1 19 140 1 19 141 1 19 142 1 19 150 1 19 155 1 19 160 1 19 161 1 19 162 1 19 163 1 19 170 1 19 175 1 19 176 1 19 177 1 19 178 1 19 185 1 19 186 1 19 187 1 19 188 1 19 195 1 19 196 1 19 197 1 19 198 1 19 199 1 19 200 1 19 206 1 19 211 1 19 216 1 19 217 1 19 218 1 19 219 1 19 226 1 19 231 1 19 232 1 19 233 1 19 234 1 19 241 1 19 242 1 19 243 1 19 244 1 19 251 1 19 252 1 19 253 1 19 254 1 19 255 1 19 256 1 19 261 1 19 266 1 19 267 1 19 268 1 19 269 1 19 276 1 19 277 1 19 278 1 19 279 1 19 286 1 19 287 1 19 288 1 19 289 1 19 290 1 19 291 1 19 296 1 19 297 1 19 298 1 19 299 1 19 306 1 19 307 1 19 308 1 19 309 1 19 310 1 19 311 1 19 316 1 19 317 1 19 318 1 19 319 1 19 320 1 19 321 1 19 326 1 19 327 1 19 328 1 19 329 1 19 795 1 19 801 1 19 806 1 19 811 1 19 812 1 19 813 1 19 814 1 19 822 1 19 827 1 19 832 1 19 833 1 19 834 1 19 835 1 19 842 1 19 847 1 19 848 1 19 849 1 19 850 1 19 857 1 19 858 1 19 859 1 19 860 1 19 867 1 19 868 1 19 869 1 19 870 1 19 871 1 19 872 1 19 878 1 19 883 1 19 888 1 19 889 1 19 890 1 19 891 1 19 898 1 19 903 1 19 904 1 19 905 1 19 906 1 19 913 1 19 914 1 19 915 1 19 916 1 19 923 1 19 924 1 19 925 1 19 926 1 19 927 1 19 928 1 19 933 1 19 938 1 19 939 1 19 940 1 19 941 1 19 948 1 19 949 1 19 950 1 19 951 1 19 958 1 19 959 1 19 960 1 19 961 1 19 962 1 19 963 1 19 968 1 19 969 1 19 970 1 19 971 1 19 978 1 19 979 1 19 980 1 19 981 1 19 982 1 19 983 1 19 988 1 19 989 1 19 990 1 19 991 1 19 992 1 19 993 1 19 998 1 19 999 1 19 1000 1 19 1001 1 19 1004 1 19 1009 1 19 1014 1 19 1015 1 19 1016 1 19 1017 1 19 1024 1 19 1029 1 19 1030 1 19 1031 1 19 1032 1 19 1039 1 19 1040 1 19 1041 1 19 1042 1 19 1049 1 19 1050 1 19 1051 1 19 1052 1 19 1053 1 19 1054 1 19 1059 1 19 1064 1 19 1065 1 19 1066 1 19 1067 1 19 1074 1 19 1075 1 19 1076 1 19 1077 1 19 1084 1 19 1085 1 19 1086 1 19 1087 1 19 1088 1 19 1089 1 19 1094 1 19 1095 1 19 1096 1 19 1097 1 19 1104 1 19 1105 1 19 1106 1 19 1107 1 19 1108 1 19 1109 1 19 1114 1 19 1115 1 19 1116 1 19 1117 1 19 1118 1 19 1119 1 19 1124 1 19 1125 1 19 1126 1 19 1127 1 19 1129 1 19 1134 1 19 1135 1 19 1136 1 19 1137 1 19 1144 1 19 1145 1 19 1146 1 19 1147 1 19 1154 1 19 1155 1 19 1156 1 19 1157 1 19 1158 1 19 1159 1 19 1164 1 19 1165 1 19 1166 1 19 1167 1 19 1174 1 19 1175 1 19 1176 1 19 1177 1 19 1178 1 19 1179 1 19 1184 1 19 1185 1 19 1186 1 19 1187 1 19 1188 1 19 1189 1 19 1194 1 19 1195 1 19 1196 1 19 1197 1 19 1199 1 19 1200 1 19 1201 1 19 1202 1 19 1209 1 19 1210 1 19 1211 1 19 1212 1 19 1213 1 19 1214 1 19 1219 1 19 1220 1 19 1221 1 19 1222 1 19 1223 1 19 1224 1 19 1229 1 19 1230 1 19 1231 1 19 1232 1 19 1234 1 19 1235 1 19 1236 1 19 1237 1 19 1238 1 19 1239 1 19 1244 1 19 1245 1 19 1246 1 19 1247 1 19 1249 1 19 1250 1 19 1251 1 19 1252 1 19 1254 1 20 5 1 20 12 1 20 18 1 20 23 1 20 27 1 20 31 1 20 32 1 20 33 1 20 40 1 20 46 1 20 51 1 20 55 1 20 59 1 20 60 1 20 61 1 20 67 1 20 72 1 20 76 1 20 80 1 20 81 1 20 82 1 20 87 1 20 91 1 20 95 1 20 96 1 20 97 1 20 101 1 20 105 1 20 106 1 20 107 1 20 111 1 20 112 1 20 113 1 20 117 1 20 118 1 20 119 1 20 124 1 20 130 1 20 135 1 20 139 1 20 143 1 20 144 1 20 145 1 20 151 1 20 156 1 20 160 1 20 164 1 20 165 1 20 166 1 20 171 1 20 175 1 20 179 1 20 180 1 20 181 1 20 185 1 20 189 1 20 190 1 20 191 1 20 195 1 20 196 1 20 197 1 20 201 1 20 202 1 20 203 1 20 207 1 20 212 1 20 216 1 20 220 1 20 221 1 20 222 1 20 227 1 20 231 1 20 235 1 20 236 1 20 237 1 20 241 1 20 245 1 20 246 1 20 247 1 20 251 1 20 252 1 20 253 1 20 257 1 20 258 1 20 259 1 20 262 1 20 266 1 20 270 1 20 271 1 20 272 1 20 276 1 20 280 1 20 281 1 20 282 1 20 286 1 20 287 1 20 288 1 20 292 1 20 293 1 20 294 1 20 296 1 20 300 1 20 301 1 20 302 1 20 306 1 20 307 1 20 308 1 20 312 1 20 313 1 20 314 1 20 316 1 20 317 1 20 318 1 20 322 1 20 323 1 20 324 1 20 326 1 20 327 1 20 328 1 20 330 1 20 796 1 20 802 1 20 807 1 20 811 1 20 815 1 20 816 1 20 817 1 20 823 1 20 828 1 20 832 1 20 836 1 20 837 1 20 838 1 20 843 1 20 847 1 20 851 1 20 852 1 20 853 1 20 857 1 20 861 1 20 862 1 20 863 1 20 867 1 20 868 1 20 869 1 20 873 1 20 874 1 20 875 1 20 879 1 20 884 1 20 888 1 20 892 1 20 893 1 20 894 1 20 899 1 20 903 1 20 907 1 20 908 1 20 909 1 20 913 1 20 917 1 20 918 1 20 919 1 20 923 1 20 924 1 20 925 1 20 929 1 20 930 1 20 931 1 20 934 1 20 938 1 20 942 1 20 943 1 20 944 1 20 948 1 20 952 1 20 953 1 20 954 1 20 958 1 20 959 1 20 960 1 20 964 1 20 965 1 20 966 1 20 968 1 20 972 1 20 973 1 20 974 1 20 978 1 20 979 1 20 980 1 20 984 1 20 985 1 20 986 1 20 988 1 20 989 1 20 990 1 20 994 1 20 995 1 20 996 1 20 998 1 20 999 1 20 1000 1 20 1002 1 20 1005 1 20 1010 1 20 1014 1 20 1018 1 20 1019 1 20 1020 1 20 1025 1 20 1029 1 20 1033 1 20 1034 1 20 1035 1 20 1039 1 20 1043 1 20 1044 1 20 1045 1 20 1049 1 20 1050 1 20 1051 1 20 1055 1 20 1056 1 20 1057 1 20 1060 1 20 1064 1 20 1068 1 20 1069 1 20 1070 1 20 1074 1 20 1078 1 20 1079 1 20 1080 1 20 1084 1 20 1085 1 20 1086 1 20 1090 1 20 1091 1 20 1092 1 20 1094 1 20 1098 1 20 1099 1 20 1100 1 20 1104 1 20 1105 1 20 1106 1 20 1110 1 20 1111 1 20 1112 1 20 1114 1 20 1115 1 20 1116 1 20 1120 1 20 1121 1 20 1122 1 20 1124 1 20 1125 1 20 1126 1 20 1128 1 20 1130 1 20 1134 1 20 1138 1 20 1139 1 20 1140 1 20 1144 1 20 1148 1 20 1149 1 20 1150 1 20 1154 1 20 1155 1 20 1156 1 20 1160 1 20 1161 1 20 1162 1 20 1164 1 20 1168 1 20 1169 1 20 1170 1 20 1174 1 20 1175 1 20 1176 1 20 1180 1 20 1181 1 20 1182 1 20 1184 1 20 1185 1 20 1186 1 20 1190 1 20 1191 1 20 1192 1 20 1194 1 20 1195 1 20 1196 1 20 1198 1 20 1199 1 20 1203 1 20 1204 1 20 1205 1 20 1209 1 20 1210 1 20 1211 1 20 1215 1 20 1216 1 20 1217 1 20 1219 1 20 1220 1 20 1221 1 20 1225 1 20 1226 1 20 1227 1 20 1229 1 20 1230 1 20 1231 1 20 1233 1 20 1234 1 20 1235 1 20 1236 1 20 1240 1 20 1241 1 20 1242 1 20 1244 1 20 1245 1 20 1246 1 20 1248 1 20 1249 1 20 1250 1 20 1251 1 20 1253 1 20 1254 1 21 6 1 21 13 1 21 19 1 21 24 1 21 28 1 21 31 1 21 34 1 21 35 1 21 41 1 21 47 1 21 52 1 21 56 1 21 59 1 21 62 1 21 63 1 21 68 1 21 73 1 21 77 1 21 80 1 21 83 1 21 84 1 21 88 1 21 92 1 21 95 1 21 98 1 21 99 1 21 102 1 21 105 1 21 108 1 21 109 1 21 111 1 21 114 1 21 115 1 21 117 1 21 118 1 21 120 1 21 125 1 21 131 1 21 136 1 21 140 1 21 143 1 21 146 1 21 147 1 21 152 1 21 157 1 21 161 1 21 164 1 21 167 1 21 168 1 21 172 1 21 176 1 21 179 1 21 182 1 21 183 1 21 186 1 21 189 1 21 192 1 21 193 1 21 195 1 21 198 1 21 199 1 21 201 1 21 202 1 21 204 1 21 208 1 21 213 1 21 217 1 21 220 1 21 223 1 21 224 1 21 228 1 21 232 1 21 235 1 21 238 1 21 239 1 21 242 1 21 245 1 21 248 1 21 249 1 21 251 1 21 254 1 21 255 1 21 257 1 21 258 1 21 260 1 21 263 1 21 267 1 21 270 1 21 273 1 21 274 1 21 277 1 21 280 1 21 283 1 21 284 1 21 286 1 21 289 1 21 290 1 21 292 1 21 293 1 21 295 1 21 297 1 21 300 1 21 303 1 21 304 1 21 306 1 21 309 1 21 310 1 21 312 1 21 313 1 21 315 1 21 316 1 21 319 1 21 320 1 21 322 1 21 323 1 21 325 1 21 326 1 21 327 1 21 329 1 21 330 1 21 797 1 21 803 1 21 808 1 21 812 1 21 815 1 21 818 1 21 819 1 21 824 1 21 829 1 21 833 1 21 836 1 21 839 1 21 840 1 21 844 1 21 848 1 21 851 1 21 854 1 21 855 1 21 858 1 21 861 1 21 864 1 21 865 1 21 867 1 21 870 1 21 871 1 21 873 1 21 874 1 21 876 1 21 880 1 21 885 1 21 889 1 21 892 1 21 895 1 21 896 1 21 900 1 21 904 1 21 907 1 21 910 1 21 911 1 21 914 1 21 917 1 21 920 1 21 921 1 21 923 1 21 926 1 21 927 1 21 929 1 21 930 1 21 932 1 21 935 1 21 939 1 21 942 1 21 945 1 21 946 1 21 949 1 21 952 1 21 955 1 21 956 1 21 958 1 21 961 1 21 962 1 21 964 1 21 965 1 21 967 1 21 969 1 21 972 1 21 975 1 21 976 1 21 978 1 21 981 1 21 982 1 21 984 1 21 985 1 21 987 1 21 988 1 21 991 1 21 992 1 21 994 1 21 995 1 21 997 1 21 998 1 21 999 1 21 1001 1 21 1002 1 21 1006 1 21 1011 1 21 1015 1 21 1018 1 21 1021 1 21 1022 1 21 1026 1 21 1030 1 21 1033 1 21 1036 1 21 1037 1 21 1040 1 21 1043 1 21 1046 1 21 1047 1 21 1049 1 21 1052 1 21 1053 1 21 1055 1 21 1056 1 21 1058 1 21 1061 1 21 1065 1 21 1068 1 21 1071 1 21 1072 1 21 1075 1 21 1078 1 21 1081 1 21 1082 1 21 1084 1 21 1087 1 21 1088 1 21 1090 1 21 1091 1 21 1093 1 21 1095 1 21 1098 1 21 1101 1 21 1102 1 21 1104 1 21 1107 1 21 1108 1 21 1110 1 21 1111 1 21 1113 1 21 1114 1 21 1117 1 21 1118 1 21 1120 1 21 1121 1 21 1123 1 21 1124 1 21 1125 1 21 1127 1 21 1128 1 21 1131 1 21 1135 1 21 1138 1 21 1141 1 21 1142 1 21 1145 1 21 1148 1 21 1151 1 21 1152 1 21 1154 1 21 1157 1 21 1158 1 21 1160 1 21 1161 1 21 1163 1 21 1165 1 21 1168 1 21 1171 1 21 1172 1 21 1174 1 21 1177 1 21 1178 1 21 1180 1 21 1181 1 21 1183 1 21 1184 1 21 1187 1 21 1188 1 21 1190 1 21 1191 1 21 1193 1 21 1194 1 21 1195 1 21 1197 1 21 1198 1 21 1200 1 21 1203 1 21 1206 1 21 1207 1 21 1209 1 21 1212 1 21 1213 1 21 1215 1 21 1216 1 21 1218 1 21 1219 1 21 1222 1 21 1223 1 21 1225 1 21 1226 1 21 1228 1 21 1229 1 21 1230 1 21 1232 1 21 1233 1 21 1234 1 21 1237 1 21 1238 1 21 1240 1 21 1241 1 21 1243 1 21 1244 1 21 1245 1 21 1247 1 21 1248 1 21 1249 1 21 1250 1 21 1252 1 21 1253 1 21 1254 1 22 7 1 22 14 1 22 20 1 22 25 1 22 29 1 22 32 1 22 34 1 22 36 1 22 42 1 22 48 1 22 53 1 22 57 1 22 60 1 22 62 1 22 64 1 22 69 1 22 74 1 22 78 1 22 81 1 22 83 1 22 85 1 22 89 1 22 93 1 22 96 1 22 98 1 22 100 1 22 103 1 22 106 1 22 108 1 22 110 1 22 112 1 22 114 1 22 116 1 22 117 1 22 119 1 22 120 1 22 126 1 22 132 1 22 137 1 22 141 1 22 144 1 22 146 1 22 148 1 22 153 1 22 158 1 22 162 1 22 165 1 22 167 1 22 169 1 22 173 1 22 177 1 22 180 1 22 182 1 22 184 1 22 187 1 22 190 1 22 192 1 22 194 1 22 196 1 22 198 1 22 200 1 22 201 1 22 203 1 22 204 1 22 209 1 22 214 1 22 218 1 22 221 1 22 223 1 22 225 1 22 229 1 22 233 1 22 236 1 22 238 1 22 240 1 22 243 1 22 246 1 22 248 1 22 250 1 22 252 1 22 254 1 22 256 1 22 257 1 22 259 1 22 260 1 22 264 1 22 268 1 22 271 1 22 273 1 22 275 1 22 278 1 22 281 1 22 283 1 22 285 1 22 287 1 22 289 1 22 291 1 22 292 1 22 294 1 22 295 1 22 298 1 22 301 1 22 303 1 22 305 1 22 307 1 22 309 1 22 311 1 22 312 1 22 314 1 22 315 1 22 317 1 22 319 1 22 321 1 22 322 1 22 324 1 22 325 1 22 326 1 22 328 1 22 329 1 22 330 1 22 798 1 22 804 1 22 809 1 22 813 1 22 816 1 22 818 1 22 820 1 22 825 1 22 830 1 22 834 1 22 837 1 22 839 1 22 841 1 22 845 1 22 849 1 22 852 1 22 854 1 22 856 1 22 859 1 22 862 1 22 864 1 22 866 1 22 868 1 22 870 1 22 872 1 22 873 1 22 875 1 22 876 1 22 881 1 22 886 1 22 890 1 22 893 1 22 895 1 22 897 1 22 901 1 22 905 1 22 908 1 22 910 1 22 912 1 22 915 1 22 918 1 22 920 1 22 922 1 22 924 1 22 926 1 22 928 1 22 929 1 22 931 1 22 932 1 22 936 1 22 940 1 22 943 1 22 945 1 22 947 1 22 950 1 22 953 1 22 955 1 22 957 1 22 959 1 22 961 1 22 963 1 22 964 1 22 966 1 22 967 1 22 970 1 22 973 1 22 975 1 22 977 1 22 979 1 22 981 1 22 983 1 22 984 1 22 986 1 22 987 1 22 989 1 22 991 1 22 993 1 22 994 1 22 996 1 22 997 1 22 998 1 22 1000 1 22 1001 1 22 1002 1 22 1007 1 22 1012 1 22 1016 1 22 1019 1 22 1021 1 22 1023 1 22 1027 1 22 1031 1 22 1034 1 22 1036 1 22 1038 1 22 1041 1 22 1044 1 22 1046 1 22 1048 1 22 1050 1 22 1052 1 22 1054 1 22 1055 1 22 1057 1 22 1058 1 22 1062 1 22 1066 1 22 1069 1 22 1071 1 22 1073 1 22 1076 1 22 1079 1 22 1081 1 22 1083 1 22 1085 1 22 1087 1 22 1089 1 22 1090 1 22 1092 1 22 1093 1 22 1096 1 22 1099 1 22 1101 1 22 1103 1 22 1105 1 22 1107 1 22 1109 1 22 1110 1 22 1112 1 22 1113 1 22 1115 1 22 1117 1 22 1119 1 22 1120 1 22 1122 1 22 1123 1 22 1124 1 22 1126 1 22 1127 1 22 1128 1 22 1132 1 22 1136 1 22 1139 1 22 1141 1 22 1143 1 22 1146 1 22 1149 1 22 1151 1 22 1153 1 22 1155 1 22 1157 1 22 1159 1 22 1160 1 22 1162 1 22 1163 1 22 1166 1 22 1169 1 22 1171 1 22 1173 1 22 1175 1 22 1177 1 22 1179 1 22 1180 1 22 1182 1 22 1183 1 22 1185 1 22 1187 1 22 1189 1 22 1190 1 22 1192 1 22 1193 1 22 1194 1 22 1196 1 22 1197 1 22 1198 1 22 1201 1 22 1204 1 22 1206 1 22 1208 1 22 1210 1 22 1212 1 22 1214 1 22 1215 1 22 1217 1 22 1218 1 22 1220 1 22 1222 1 22 1224 1 22 1225 1 22 1227 1 22 1228 1 22 1229 1 22 1231 1 22 1232 1 22 1233 1 22 1235 1 22 1237 1 22 1239 1 22 1240 1 22 1242 1 22 1243 1 22 1244 1 22 1246 1 22 1247 1 22 1248 1 22 1249 1 22 1251 1 22 1252 1 22 1253 1 22 1254 1 23 8 1 23 15 1 23 21 1 23 26 1 23 30 1 23 33 1 23 35 1 23 36 1 23 43 1 23 49 1 23 54 1 23 58 1 23 61 1 23 63 1 23 64 1 23 70 1 23 75 1 23 79 1 23 82 1 23 84 1 23 85 1 23 90 1 23 94 1 23 97 1 23 99 1 23 100 1 23 104 1 23 107 1 23 109 1 23 110 1 23 113 1 23 115 1 23 116 1 23 118 1 23 119 1 23 120 1 23 127 1 23 133 1 23 138 1 23 142 1 23 145 1 23 147 1 23 148 1 23 154 1 23 159 1 23 163 1 23 166 1 23 168 1 23 169 1 23 174 1 23 178 1 23 181 1 23 183 1 23 184 1 23 188 1 23 191 1 23 193 1 23 194 1 23 197 1 23 199 1 23 200 1 23 202 1 23 203 1 23 204 1 23 210 1 23 215 1 23 219 1 23 222 1 23 224 1 23 225 1 23 230 1 23 234 1 23 237 1 23 239 1 23 240 1 23 244 1 23 247 1 23 249 1 23 250 1 23 253 1 23 255 1 23 256 1 23 258 1 23 259 1 23 260 1 23 265 1 23 269 1 23 272 1 23 274 1 23 275 1 23 279 1 23 282 1 23 284 1 23 285 1 23 288 1 23 290 1 23 291 1 23 293 1 23 294 1 23 295 1 23 299 1 23 302 1 23 304 1 23 305 1 23 308 1 23 310 1 23 311 1 23 313 1 23 314 1 23 315 1 23 318 1 23 320 1 23 321 1 23 323 1 23 324 1 23 325 1 23 327 1 23 328 1 23 329 1 23 330 1 23 799 1 23 805 1 23 810 1 23 814 1 23 817 1 23 819 1 23 820 1 23 826 1 23 831 1 23 835 1 23 838 1 23 840 1 23 841 1 23 846 1 23 850 1 23 853 1 23 855 1 23 856 1 23 860 1 23 863 1 23 865 1 23 866 1 23 869 1 23 871 1 23 872 1 23 874 1 23 875 1 23 876 1 23 882 1 23 887 1 23 891 1 23 894 1 23 896 1 23 897 1 23 902 1 23 906 1 23 909 1 23 911 1 23 912 1 23 916 1 23 919 1 23 921 1 23 922 1 23 925 1 23 927 1 23 928 1 23 930 1 23 931 1 23 932 1 23 937 1 23 941 1 23 944 1 23 946 1 23 947 1 23 951 1 23 954 1 23 956 1 23 957 1 23 960 1 23 962 1 23 963 1 23 965 1 23 966 1 23 967 1 23 971 1 23 974 1 23 976 1 23 977 1 23 980 1 23 982 1 23 983 1 23 985 1 23 986 1 23 987 1 23 990 1 23 992 1 23 993 1 23 995 1 23 996 1 23 997 1 23 999 1 23 1000 1 23 1001 1 23 1002 1 23 1008 1 23 1013 1 23 1017 1 23 1020 1 23 1022 1 23 1023 1 23 1028 1 23 1032 1 23 1035 1 23 1037 1 23 1038 1 23 1042 1 23 1045 1 23 1047 1 23 1048 1 23 1051 1 23 1053 1 23 1054 1 23 1056 1 23 1057 1 23 1058 1 23 1063 1 23 1067 1 23 1070 1 23 1072 1 23 1073 1 23 1077 1 23 1080 1 23 1082 1 23 1083 1 23 1086 1 23 1088 1 23 1089 1 23 1091 1 23 1092 1 23 1093 1 23 1097 1 23 1100 1 23 1102 1 23 1103 1 23 1106 1 23 1108 1 23 1109 1 23 1111 1 23 1112 1 23 1113 1 23 1116 1 23 1118 1 23 1119 1 23 1121 1 23 1122 1 23 1123 1 23 1125 1 23 1126 1 23 1127 1 23 1128 1 23 1133 1 23 1137 1 23 1140 1 23 1142 1 23 1143 1 23 1147 1 23 1150 1 23 1152 1 23 1153 1 23 1156 1 23 1158 1 23 1159 1 23 1161 1 23 1162 1 23 1163 1 23 1167 1 23 1170 1 23 1172 1 23 1173 1 23 1176 1 23 1178 1 23 1179 1 23 1181 1 23 1182 1 23 1183 1 23 1186 1 23 1188 1 23 1189 1 23 1191 1 23 1192 1 23 1193 1 23 1195 1 23 1196 1 23 1197 1 23 1198 1 23 1202 1 23 1205 1 23 1207 1 23 1208 1 23 1211 1 23 1213 1 23 1214 1 23 1216 1 23 1217 1 23 1218 1 23 1221 1 23 1223 1 23 1224 1 23 1226 1 23 1227 1 23 1228 1 23 1230 1 23 1231 1 23 1232 1 23 1233 1 23 1236 1 23 1238 1 23 1239 1 23 1241 1 23 1242 1 23 1243 1 23 1245 1 23 1246 1 23 1247 1 23 1248 1 23 1250 1 23 1251 1 23 1252 1 23 1253 1 23 1254 1 24 1 1 24 2 1 24 3 1 24 4 1 24 5 1 24 6 1 24 7 1 24 8 1 24 9 1 24 10 1 24 11 1 24 12 1 24 13 1 24 14 1 24 15 1 24 16 1 24 17 1 24 18 1 24 19 1 24 20 1 24 21 1 24 22 1 24 23 1 24 24 1 24 25 1 24 26 1 24 27 1 24 28 1 24 29 1 24 30 1 24 31 1 24 32 1 24 33 1 24 34 1 24 35 1 24 36 1 24 331 1 24 332 1 24 333 1 24 334 1 24 335 1 24 336 1 24 337 1 24 338 1 24 339 1 24 340 1 24 341 1 24 342 1 24 343 1 24 344 1 24 345 1 24 346 1 24 347 1 24 348 1 24 349 1 24 350 1 24 351 1 24 352 1 24 353 1 24 354 1 24 355 1 24 356 1 24 357 1 24 358 1 24 359 1 24 360 1 24 361 1 24 362 1 24 363 1 24 364 1 24 365 1 24 366 1 24 367 1 24 368 1 24 369 1 24 370 1 24 371 1 24 372 1 24 373 1 24 374 1 24 375 1 24 376 1 24 377 1 24 378 1 24 379 1 24 380 1 24 381 1 24 382 1 24 383 1 24 384 1 24 385 1 24 386 1 24 387 1 24 388 1 24 389 1 24 390 1 24 391 1 24 392 1 24 393 1 24 394 1 24 395 1 24 396 1 24 397 1 24 398 1 24 399 1 24 400 1 24 401 1 24 402 1 24 403 1 24 404 1 24 405 1 24 406 1 24 407 1 24 408 1 24 409 1 24 410 1 24 411 1 24 412 1 24 413 1 24 414 1 24 793 1 24 794 1 24 795 1 24 796 1 24 797 1 24 798 1 24 799 1 24 800 1 24 801 1 24 802 1 24 803 1 24 804 1 24 805 1 24 806 1 24 807 1 24 808 1 24 809 1 24 810 1 24 811 1 24 812 1 24 813 1 24 814 1 24 815 1 24 816 1 24 817 1 24 818 1 24 819 1 24 820 1 24 821 1 24 822 1 24 823 1 24 824 1 24 825 1 24 826 1 24 827 1 24 828 1 24 829 1 24 830 1 24 831 1 24 832 1 24 833 1 24 834 1 24 835 1 24 836 1 24 837 1 24 838 1 24 839 1 24 840 1 24 841 1 24 842 1 24 843 1 24 844 1 24 845 1 24 846 1 24 847 1 24 848 1 24 849 1 24 850 1 24 851 1 24 852 1 24 853 1 24 854 1 24 855 1 24 856 1 24 857 1 24 858 1 24 859 1 24 860 1 24 861 1 24 862 1 24 863 1 24 864 1 24 865 1 24 866 1 24 867 1 24 868 1 24 869 1 24 870 1 24 871 1 24 872 1 24 873 1 24 874 1 24 875 1 24 876 1 24 1255 1 24 1256 1 24 1257 1 24 1258 1 24 1259 1 24 1260 1 24 1261 1 24 1262 1 24 1263 1 24 1264 1 24 1265 1 24 1266 1 24 1267 1 24 1268 1 24 1269 1 24 1270 1 24 1271 1 24 1272 1 24 1273 1 24 1274 1 24 1275 1 24 1276 1 24 1277 1 24 1278 1 24 1279 1 24 1280 1 24 1281 1 24 1282 1 24 1283 1 24 1284 1 24 1285 1 24 1286 1 24 1287 1 24 1288 1 24 1289 1 24 1290 1 24 1291 1 24 1292 1 24 1293 1 24 1294 1 24 1295 1 24 1296 1 24 1297 1 24 1298 1 24 1299 1 24 1300 1 24 1301 1 24 1302 1 24 1303 1 24 1304 1 24 1305 1 24 1306 1 24 1307 1 24 1308 1 24 1309 1 24 1310 1 24 1311 1 24 1312 1 24 1313 1 24 1314 1 24 1315 1 24 1316 1 24 1317 1 24 1318 1 24 1319 1 24 1320 1 24 1321 1 24 1322 1 24 1323 1 24 1324 1 24 1325 1 24 1326 1 24 1327 1 24 1328 1 24 1329 1 24 1330 1 24 1331 1 24 1332 1 24 1333 1 24 1334 1 24 1335 1 24 1336 1 24 1337 1 24 1338 1 24 1339 1 24 1340 1 24 1341 1 24 1342 1 24 1343 1 24 1344 1 24 1345 1 24 1346 1 24 1347 1 24 1348 1 24 1349 1 24 1350 1 24 1351 1 24 1352 1 24 1353 1 24 1354 1 24 1355 1 24 1356 1 24 1357 1 24 1358 1 24 1359 1 24 1360 1 24 1361 1 24 1362 1 24 1363 1 24 1364 1 24 1365 1 24 1366 1 24 1367 1 24 1368 1 24 1369 1 24 1370 1 24 1371 1 24 1372 1 24 1373 1 24 1374 1 24 1375 1 24 1376 1 24 1377 1 24 1378 1 24 1379 1 24 1380 1 25 1 1 25 2 1 25 3 1 25 4 1 25 5 1 25 6 1 25 7 1 25 8 1 25 37 1 25 38 1 25 39 1 25 40 1 25 41 1 25 42 1 25 43 1 25 44 1 25 45 1 25 46 1 25 47 1 25 48 1 25 49 1 25 50 1 25 51 1 25 52 1 25 53 1 25 54 1 25 55 1 25 56 1 25 57 1 25 58 1 25 59 1 25 60 1 25 61 1 25 62 1 25 63 1 25 64 1 25 331 1 25 332 1 25 333 1 25 334 1 25 335 1 25 336 1 25 337 1 25 338 1 25 339 1 25 340 1 25 341 1 25 342 1 25 343 1 25 344 1 25 345 1 25 346 1 25 347 1 25 348 1 25 349 1 25 350 1 25 351 1 25 352 1 25 353 1 25 354 1 25 355 1 25 356 1 25 357 1 25 358 1 25 415 1 25 416 1 25 417 1 25 418 1 25 419 1 25 420 1 25 421 1 25 422 1 25 423 1 25 424 1 25 425 1 25 426 1 25 427 1 25 428 1 25 429 1 25 430 1 25 431 1 25 432 1 25 433 1 25 434 1 25 435 1 25 436 1 25 437 1 25 438 1 25 439 1 25 440 1 25 441 1 25 442 1 25 443 1 25 444 1 25 445 1 25 446 1 25 447 1 25 448 1 25 449 1 25 450 1 25 451 1 25 452 1 25 453 1 25 454 1 25 455 1 25 456 1 25 457 1 25 458 1 25 459 1 25 460 1 25 461 1 25 462 1 25 463 1 25 464 1 25 465 1 25 466 1 25 467 1 25 468 1 25 469 1 25 470 1 25 793 1 25 794 1 25 795 1 25 796 1 25 797 1 25 798 1 25 799 1 25 800 1 25 801 1 25 802 1 25 803 1 25 804 1 25 805 1 25 806 1 25 807 1 25 808 1 25 809 1 25 810 1 25 811 1 25 812 1 25 813 1 25 814 1 25 815 1 25 816 1 25 817 1 25 818 1 25 819 1 25 820 1 25 877 1 25 878 1 25 879 1 25 880 1 25 881 1 25 882 1 25 883 1 25 884 1 25 885 1 25 886 1 25 887 1 25 888 1 25 889 1 25 890 1 25 891 1 25 892 1 25 893 1 25 894 1 25 895 1 25 896 1 25 897 1 25 898 1 25 899 1 25 900 1 25 901 1 25 902 1 25 903 1 25 904 1 25 905 1 25 906 1 25 907 1 25 908 1 25 909 1 25 910 1 25 911 1 25 912 1 25 913 1 25 914 1 25 915 1 25 916 1 25 917 1 25 918 1 25 919 1 25 920 1 25 921 1 25 922 1 25 923 1 25 924 1 25 925 1 25 926 1 25 927 1 25 928 1 25 929 1 25 930 1 25 931 1 25 932 1 25 1255 1 25 1256 1 25 1257 1 25 1258 1 25 1259 1 25 1260 1 25 1261 1 25 1262 1 25 1263 1 25 1264 1 25 1265 1 25 1266 1 25 1267 1 25 1268 1 25 1269 1 25 1270 1 25 1271 1 25 1272 1 25 1273 1 25 1274 1 25 1275 1 25 1276 1 25 1277 1 25 1278 1 25 1279 1 25 1280 1 25 1281 1 25 1282 1 25 1283 1 25 1284 1 25 1285 1 25 1286 1 25 1287 1 25 1288 1 25 1289 1 25 1290 1 25 1291 1 25 1292 1 25 1293 1 25 1294 1 25 1295 1 25 1296 1 25 1297 1 25 1298 1 25 1299 1 25 1300 1 25 1301 1 25 1302 1 25 1303 1 25 1304 1 25 1305 1 25 1306 1 25 1307 1 25 1308 1 25 1309 1 25 1310 1 25 1381 1 25 1382 1 25 1383 1 25 1384 1 25 1385 1 25 1386 1 25 1387 1 25 1388 1 25 1389 1 25 1390 1 25 1391 1 25 1392 1 25 1393 1 25 1394 1 25 1395 1 25 1396 1 25 1397 1 25 1398 1 25 1399 1 25 1400 1 25 1401 1 25 1402 1 25 1403 1 25 1404 1 25 1405 1 25 1406 1 25 1407 1 25 1408 1 25 1409 1 25 1410 1 25 1411 1 25 1412 1 25 1413 1 25 1414 1 25 1415 1 25 1416 1 25 1417 1 25 1418 1 25 1419 1 25 1420 1 25 1421 1 25 1422 1 25 1423 1 25 1424 1 25 1425 1 25 1426 1 25 1427 1 25 1428 1 25 1429 1 25 1430 1 25 1431 1 25 1432 1 25 1433 1 25 1434 1 25 1435 1 25 1436 1 25 1437 1 25 1438 1 25 1439 1 25 1440 1 25 1441 1 25 1442 1 25 1443 1 25 1444 1 25 1445 1 25 1446 1 25 1447 1 25 1448 1 25 1449 1 25 1450 1 26 1 1 26 9 1 26 10 1 26 11 1 26 12 1 26 13 1 26 14 1 26 15 1 26 37 1 26 38 1 26 39 1 26 40 1 26 41 1 26 42 1 26 43 1 26 65 1 26 66 1 26 67 1 26 68 1 26 69 1 26 70 1 26 71 1 26 72 1 26 73 1 26 74 1 26 75 1 26 76 1 26 77 1 26 78 1 26 79 1 26 80 1 26 81 1 26 82 1 26 83 1 26 84 1 26 85 1 26 331 1 26 332 1 26 333 1 26 334 1 26 335 1 26 336 1 26 337 1 26 359 1 26 360 1 26 361 1 26 362 1 26 363 1 26 364 1 26 365 1 26 366 1 26 367 1 26 368 1 26 369 1 26 370 1 26 371 1 26 372 1 26 373 1 26 374 1 26 375 1 26 376 1 26 377 1 26 378 1 26 379 1 26 415 1 26 416 1 26 417 1 26 418 1 26 419 1 26 420 1 26 421 1 26 422 1 26 423 1 26 424 1 26 425 1 26 426 1 26 427 1 26 428 1 26 429 1 26 430 1 26 431 1 26 432 1 26 433 1 26 434 1 26 435 1 26 471 1 26 472 1 26 473 1 26 474 1 26 475 1 26 476 1 26 477 1 26 478 1 26 479 1 26 480 1 26 481 1 26 482 1 26 483 1 26 484 1 26 485 1 26 486 1 26 487 1 26 488 1 26 489 1 26 490 1 26 491 1 26 492 1 26 493 1 26 494 1 26 495 1 26 496 1 26 497 1 26 498 1 26 499 1 26 500 1 26 501 1 26 502 1 26 503 1 26 504 1 26 505 1 26 793 1 26 794 1 26 795 1 26 796 1 26 797 1 26 798 1 26 799 1 26 821 1 26 822 1 26 823 1 26 824 1 26 825 1 26 826 1 26 827 1 26 828 1 26 829 1 26 830 1 26 831 1 26 832 1 26 833 1 26 834 1 26 835 1 26 836 1 26 837 1 26 838 1 26 839 1 26 840 1 26 841 1 26 877 1 26 878 1 26 879 1 26 880 1 26 881 1 26 882 1 26 883 1 26 884 1 26 885 1 26 886 1 26 887 1 26 888 1 26 889 1 26 890 1 26 891 1 26 892 1 26 893 1 26 894 1 26 895 1 26 896 1 26 897 1 26 933 1 26 934 1 26 935 1 26 936 1 26 937 1 26 938 1 26 939 1 26 940 1 26 941 1 26 942 1 26 943 1 26 944 1 26 945 1 26 946 1 26 947 1 26 948 1 26 949 1 26 950 1 26 951 1 26 952 1 26 953 1 26 954 1 26 955 1 26 956 1 26 957 1 26 958 1 26 959 1 26 960 1 26 961 1 26 962 1 26 963 1 26 964 1 26 965 1 26 966 1 26 967 1 26 1255 1 26 1256 1 26 1257 1 26 1258 1 26 1259 1 26 1260 1 26 1261 1 26 1262 1 26 1263 1 26 1264 1 26 1265 1 26 1266 1 26 1267 1 26 1268 1 26 1269 1 26 1270 1 26 1271 1 26 1272 1 26 1273 1 26 1274 1 26 1275 1 26 1311 1 26 1312 1 26 1313 1 26 1314 1 26 1315 1 26 1316 1 26 1317 1 26 1318 1 26 1319 1 26 1320 1 26 1321 1 26 1322 1 26 1323 1 26 1324 1 26 1325 1 26 1326 1 26 1327 1 26 1328 1 26 1329 1 26 1330 1 26 1331 1 26 1332 1 26 1333 1 26 1334 1 26 1335 1 26 1336 1 26 1337 1 26 1338 1 26 1339 1 26 1340 1 26 1341 1 26 1342 1 26 1343 1 26 1344 1 26 1345 1 26 1381 1 26 1382 1 26 1383 1 26 1384 1 26 1385 1 26 1386 1 26 1387 1 26 1388 1 26 1389 1 26 1390 1 26 1391 1 26 1392 1 26 1393 1 26 1394 1 26 1395 1 26 1396 1 26 1397 1 26 1398 1 26 1399 1 26 1400 1 26 1401 1 26 1402 1 26 1403 1 26 1404 1 26 1405 1 26 1406 1 26 1407 1 26 1408 1 26 1409 1 26 1410 1 26 1411 1 26 1412 1 26 1413 1 26 1414 1 26 1415 1 26 1451 1 26 1452 1 26 1453 1 26 1454 1 26 1455 1 26 1456 1 26 1457 1 26 1458 1 26 1459 1 26 1460 1 26 1461 1 26 1462 1 26 1463 1 26 1464 1 26 1465 1 26 1466 1 26 1467 1 26 1468 1 26 1469 1 26 1470 1 26 1471 1 26 1472 1 26 1473 1 26 1474 1 26 1475 1 26 1476 1 26 1477 1 26 1478 1 26 1479 1 26 1480 1 26 1481 1 26 1482 1 26 1483 1 26 1484 1 26 1485 1 27 2 1 27 9 1 27 16 1 27 17 1 27 18 1 27 19 1 27 20 1 27 21 1 27 37 1 27 44 1 27 45 1 27 46 1 27 47 1 27 48 1 27 49 1 27 65 1 27 66 1 27 67 1 27 68 1 27 69 1 27 70 1 27 86 1 27 87 1 27 88 1 27 89 1 27 90 1 27 91 1 27 92 1 27 93 1 27 94 1 27 95 1 27 96 1 27 97 1 27 98 1 27 99 1 27 100 1 27 331 1 27 338 1 27 339 1 27 340 1 27 341 1 27 342 1 27 343 1 27 359 1 27 360 1 27 361 1 27 362 1 27 363 1 27 364 1 27 380 1 27 381 1 27 382 1 27 383 1 27 384 1 27 385 1 27 386 1 27 387 1 27 388 1 27 389 1 27 390 1 27 391 1 27 392 1 27 393 1 27 394 1 27 415 1 27 416 1 27 417 1 27 418 1 27 419 1 27 420 1 27 436 1 27 437 1 27 438 1 27 439 1 27 440 1 27 441 1 27 442 1 27 443 1 27 444 1 27 445 1 27 446 1 27 447 1 27 448 1 27 449 1 27 450 1 27 471 1 27 472 1 27 473 1 27 474 1 27 475 1 27 476 1 27 477 1 27 478 1 27 479 1 27 480 1 27 481 1 27 482 1 27 483 1 27 484 1 27 485 1 27 506 1 27 507 1 27 508 1 27 509 1 27 510 1 27 511 1 27 512 1 27 513 1 27 514 1 27 515 1 27 516 1 27 517 1 27 518 1 27 519 1 27 520 1 27 521 1 27 522 1 27 523 1 27 524 1 27 525 1 27 793 1 27 800 1 27 801 1 27 802 1 27 803 1 27 804 1 27 805 1 27 821 1 27 822 1 27 823 1 27 824 1 27 825 1 27 826 1 27 842 1 27 843 1 27 844 1 27 845 1 27 846 1 27 847 1 27 848 1 27 849 1 27 850 1 27 851 1 27 852 1 27 853 1 27 854 1 27 855 1 27 856 1 27 877 1 27 878 1 27 879 1 27 880 1 27 881 1 27 882 1 27 898 1 27 899 1 27 900 1 27 901 1 27 902 1 27 903 1 27 904 1 27 905 1 27 906 1 27 907 1 27 908 1 27 909 1 27 910 1 27 911 1 27 912 1 27 933 1 27 934 1 27 935 1 27 936 1 27 937 1 27 938 1 27 939 1 27 940 1 27 941 1 27 942 1 27 943 1 27 944 1 27 945 1 27 946 1 27 947 1 27 968 1 27 969 1 27 970 1 27 971 1 27 972 1 27 973 1 27 974 1 27 975 1 27 976 1 27 977 1 27 978 1 27 979 1 27 980 1 27 981 1 27 982 1 27 983 1 27 984 1 27 985 1 27 986 1 27 987 1 27 1255 1 27 1256 1 27 1257 1 27 1258 1 27 1259 1 27 1260 1 27 1276 1 27 1277 1 27 1278 1 27 1279 1 27 1280 1 27 1281 1 27 1282 1 27 1283 1 27 1284 1 27 1285 1 27 1286 1 27 1287 1 27 1288 1 27 1289 1 27 1290 1 27 1311 1 27 1312 1 27 1313 1 27 1314 1 27 1315 1 27 1316 1 27 1317 1 27 1318 1 27 1319 1 27 1320 1 27 1321 1 27 1322 1 27 1323 1 27 1324 1 27 1325 1 27 1346 1 27 1347 1 27 1348 1 27 1349 1 27 1350 1 27 1351 1 27 1352 1 27 1353 1 27 1354 1 27 1355 1 27 1356 1 27 1357 1 27 1358 1 27 1359 1 27 1360 1 27 1361 1 27 1362 1 27 1363 1 27 1364 1 27 1365 1 27 1381 1 27 1382 1 27 1383 1 27 1384 1 27 1385 1 27 1386 1 27 1387 1 27 1388 1 27 1389 1 27 1390 1 27 1391 1 27 1392 1 27 1393 1 27 1394 1 27 1395 1 27 1416 1 27 1417 1 27 1418 1 27 1419 1 27 1420 1 27 1421 1 27 1422 1 27 1423 1 27 1424 1 27 1425 1 27 1426 1 27 1427 1 27 1428 1 27 1429 1 27 1430 1 27 1431 1 27 1432 1 27 1433 1 27 1434 1 27 1435 1 27 1451 1 27 1452 1 27 1453 1 27 1454 1 27 1455 1 27 1456 1 27 1457 1 27 1458 1 27 1459 1 27 1460 1 27 1461 1 27 1462 1 27 1463 1 27 1464 1 27 1465 1 27 1466 1 27 1467 1 27 1468 1 27 1469 1 27 1470 1 27 1486 1 27 1487 1 27 1488 1 27 1489 1 27 1490 1 27 1491 1 27 1492 1 27 1493 1 27 1494 1 27 1495 1 27 1496 1 27 1497 1 27 1498 1 27 1499 1 27 1500 1 28 3 1 28 10 1 28 16 1 28 22 1 28 23 1 28 24 1 28 25 1 28 26 1 28 38 1 28 44 1 28 50 1 28 51 1 28 52 1 28 53 1 28 54 1 28 65 1 28 71 1 28 72 1 28 73 1 28 74 1 28 75 1 28 86 1 28 87 1 28 88 1 28 89 1 28 90 1 28 101 1 28 102 1 28 103 1 28 104 1 28 105 1 28 106 1 28 107 1 28 108 1 28 109 1 28 110 1 28 332 1 28 338 1 28 344 1 28 345 1 28 346 1 28 347 1 28 348 1 28 359 1 28 365 1 28 366 1 28 367 1 28 368 1 28 369 1 28 380 1 28 381 1 28 382 1 28 383 1 28 384 1 28 395 1 28 396 1 28 397 1 28 398 1 28 399 1 28 400 1 28 401 1 28 402 1 28 403 1 28 404 1 28 415 1 28 421 1 28 422 1 28 423 1 28 424 1 28 425 1 28 436 1 28 437 1 28 438 1 28 439 1 28 440 1 28 451 1 28 452 1 28 453 1 28 454 1 28 455 1 28 456 1 28 457 1 28 458 1 28 459 1 28 460 1 28 471 1 28 472 1 28 473 1 28 474 1 28 475 1 28 486 1 28 487 1 28 488 1 28 489 1 28 490 1 28 491 1 28 492 1 28 493 1 28 494 1 28 495 1 28 506 1 28 507 1 28 508 1 28 509 1 28 510 1 28 511 1 28 512 1 28 513 1 28 514 1 28 515 1 28 526 1 28 527 1 28 528 1 28 529 1 28 530 1 28 531 1 28 532 1 28 533 1 28 534 1 28 535 1 28 794 1 28 800 1 28 806 1 28 807 1 28 808 1 28 809 1 28 810 1 28 821 1 28 827 1 28 828 1 28 829 1 28 830 1 28 831 1 28 842 1 28 843 1 28 844 1 28 845 1 28 846 1 28 857 1 28 858 1 28 859 1 28 860 1 28 861 1 28 862 1 28 863 1 28 864 1 28 865 1 28 866 1 28 877 1 28 883 1 28 884 1 28 885 1 28 886 1 28 887 1 28 898 1 28 899 1 28 900 1 28 901 1 28 902 1 28 913 1 28 914 1 28 915 1 28 916 1 28 917 1 28 918 1 28 919 1 28 920 1 28 921 1 28 922 1 28 933 1 28 934 1 28 935 1 28 936 1 28 937 1 28 948 1 28 949 1 28 950 1 28 951 1 28 952 1 28 953 1 28 954 1 28 955 1 28 956 1 28 957 1 28 968 1 28 969 1 28 970 1 28 971 1 28 972 1 28 973 1 28 974 1 28 975 1 28 976 1 28 977 1 28 988 1 28 989 1 28 990 1 28 991 1 28 992 1 28 993 1 28 994 1 28 995 1 28 996 1 28 997 1 28 1255 1 28 1261 1 28 1262 1 28 1263 1 28 1264 1 28 1265 1 28 1276 1 28 1277 1 28 1278 1 28 1279 1 28 1280 1 28 1291 1 28 1292 1 28 1293 1 28 1294 1 28 1295 1 28 1296 1 28 1297 1 28 1298 1 28 1299 1 28 1300 1 28 1311 1 28 1312 1 28 1313 1 28 1314 1 28 1315 1 28 1326 1 28 1327 1 28 1328 1 28 1329 1 28 1330 1 28 1331 1 28 1332 1 28 1333 1 28 1334 1 28 1335 1 28 1346 1 28 1347 1 28 1348 1 28 1349 1 28 1350 1 28 1351 1 28 1352 1 28 1353 1 28 1354 1 28 1355 1 28 1366 1 28 1367 1 28 1368 1 28 1369 1 28 1370 1 28 1371 1 28 1372 1 28 1373 1 28 1374 1 28 1375 1 28 1381 1 28 1382 1 28 1383 1 28 1384 1 28 1385 1 28 1396 1 28 1397 1 28 1398 1 28 1399 1 28 1400 1 28 1401 1 28 1402 1 28 1403 1 28 1404 1 28 1405 1 28 1416 1 28 1417 1 28 1418 1 28 1419 1 28 1420 1 28 1421 1 28 1422 1 28 1423 1 28 1424 1 28 1425 1 28 1436 1 28 1437 1 28 1438 1 28 1439 1 28 1440 1 28 1441 1 28 1442 1 28 1443 1 28 1444 1 28 1445 1 28 1451 1 28 1452 1 28 1453 1 28 1454 1 28 1455 1 28 1456 1 28 1457 1 28 1458 1 28 1459 1 28 1460 1 28 1471 1 28 1472 1 28 1473 1 28 1474 1 28 1475 1 28 1476 1 28 1477 1 28 1478 1 28 1479 1 28 1480 1 28 1486 1 28 1487 1 28 1488 1 28 1489 1 28 1490 1 28 1491 1 28 1492 1 28 1493 1 28 1494 1 28 1495 1 28 1501 1 28 1502 1 28 1503 1 28 1504 1 28 1505 1 29 4 1 29 11 1 29 17 1 29 22 1 29 27 1 29 28 1 29 29 1 29 30 1 29 39 1 29 45 1 29 50 1 29 55 1 29 56 1 29 57 1 29 58 1 29 66 1 29 71 1 29 76 1 29 77 1 29 78 1 29 79 1 29 86 1 29 91 1 29 92 1 29 93 1 29 94 1 29 101 1 29 102 1 29 103 1 29 104 1 29 111 1 29 112 1 29 113 1 29 114 1 29 115 1 29 116 1 29 333 1 29 339 1 29 344 1 29 349 1 29 350 1 29 351 1 29 352 1 29 360 1 29 365 1 29 370 1 29 371 1 29 372 1 29 373 1 29 380 1 29 385 1 29 386 1 29 387 1 29 388 1 29 395 1 29 396 1 29 397 1 29 398 1 29 405 1 29 406 1 29 407 1 29 408 1 29 409 1 29 410 1 29 416 1 29 421 1 29 426 1 29 427 1 29 428 1 29 429 1 29 436 1 29 441 1 29 442 1 29 443 1 29 444 1 29 451 1 29 452 1 29 453 1 29 454 1 29 461 1 29 462 1 29 463 1 29 464 1 29 465 1 29 466 1 29 471 1 29 476 1 29 477 1 29 478 1 29 479 1 29 486 1 29 487 1 29 488 1 29 489 1 29 496 1 29 497 1 29 498 1 29 499 1 29 500 1 29 501 1 29 506 1 29 507 1 29 508 1 29 509 1 29 516 1 29 517 1 29 518 1 29 519 1 29 520 1 29 521 1 29 526 1 29 527 1 29 528 1 29 529 1 29 530 1 29 531 1 29 536 1 29 537 1 29 538 1 29 539 1 29 795 1 29 801 1 29 806 1 29 811 1 29 812 1 29 813 1 29 814 1 29 822 1 29 827 1 29 832 1 29 833 1 29 834 1 29 835 1 29 842 1 29 847 1 29 848 1 29 849 1 29 850 1 29 857 1 29 858 1 29 859 1 29 860 1 29 867 1 29 868 1 29 869 1 29 870 1 29 871 1 29 872 1 29 878 1 29 883 1 29 888 1 29 889 1 29 890 1 29 891 1 29 898 1 29 903 1 29 904 1 29 905 1 29 906 1 29 913 1 29 914 1 29 915 1 29 916 1 29 923 1 29 924 1 29 925 1 29 926 1 29 927 1 29 928 1 29 933 1 29 938 1 29 939 1 29 940 1 29 941 1 29 948 1 29 949 1 29 950 1 29 951 1 29 958 1 29 959 1 29 960 1 29 961 1 29 962 1 29 963 1 29 968 1 29 969 1 29 970 1 29 971 1 29 978 1 29 979 1 29 980 1 29 981 1 29 982 1 29 983 1 29 988 1 29 989 1 29 990 1 29 991 1 29 992 1 29 993 1 29 998 1 29 999 1 29 1000 1 29 1001 1 29 1256 1 29 1261 1 29 1266 1 29 1267 1 29 1268 1 29 1269 1 29 1276 1 29 1281 1 29 1282 1 29 1283 1 29 1284 1 29 1291 1 29 1292 1 29 1293 1 29 1294 1 29 1301 1 29 1302 1 29 1303 1 29 1304 1 29 1305 1 29 1306 1 29 1311 1 29 1316 1 29 1317 1 29 1318 1 29 1319 1 29 1326 1 29 1327 1 29 1328 1 29 1329 1 29 1336 1 29 1337 1 29 1338 1 29 1339 1 29 1340 1 29 1341 1 29 1346 1 29 1347 1 29 1348 1 29 1349 1 29 1356 1 29 1357 1 29 1358 1 29 1359 1 29 1360 1 29 1361 1 29 1366 1 29 1367 1 29 1368 1 29 1369 1 29 1370 1 29 1371 1 29 1376 1 29 1377 1 29 1378 1 29 1379 1 29 1381 1 29 1386 1 29 1387 1 29 1388 1 29 1389 1 29 1396 1 29 1397 1 29 1398 1 29 1399 1 29 1406 1 29 1407 1 29 1408 1 29 1409 1 29 1410 1 29 1411 1 29 1416 1 29 1417 1 29 1418 1 29 1419 1 29 1426 1 29 1427 1 29 1428 1 29 1429 1 29 1430 1 29 1431 1 29 1436 1 29 1437 1 29 1438 1 29 1439 1 29 1440 1 29 1441 1 29 1446 1 29 1447 1 29 1448 1 29 1449 1 29 1451 1 29 1452 1 29 1453 1 29 1454 1 29 1461 1 29 1462 1 29 1463 1 29 1464 1 29 1465 1 29 1466 1 29 1471 1 29 1472 1 29 1473 1 29 1474 1 29 1475 1 29 1476 1 29 1481 1 29 1482 1 29 1483 1 29 1484 1 29 1486 1 29 1487 1 29 1488 1 29 1489 1 29 1490 1 29 1491 1 29 1496 1 29 1497 1 29 1498 1 29 1499 1 29 1501 1 29 1502 1 29 1503 1 29 1504 1 29 1506 1 30 5 1 30 12 1 30 18 1 30 23 1 30 27 1 30 31 1 30 32 1 30 33 1 30 40 1 30 46 1 30 51 1 30 55 1 30 59 1 30 60 1 30 61 1 30 67 1 30 72 1 30 76 1 30 80 1 30 81 1 30 82 1 30 87 1 30 91 1 30 95 1 30 96 1 30 97 1 30 101 1 30 105 1 30 106 1 30 107 1 30 111 1 30 112 1 30 113 1 30 117 1 30 118 1 30 119 1 30 334 1 30 340 1 30 345 1 30 349 1 30 353 1 30 354 1 30 355 1 30 361 1 30 366 1 30 370 1 30 374 1 30 375 1 30 376 1 30 381 1 30 385 1 30 389 1 30 390 1 30 391 1 30 395 1 30 399 1 30 400 1 30 401 1 30 405 1 30 406 1 30 407 1 30 411 1 30 412 1 30 413 1 30 417 1 30 422 1 30 426 1 30 430 1 30 431 1 30 432 1 30 437 1 30 441 1 30 445 1 30 446 1 30 447 1 30 451 1 30 455 1 30 456 1 30 457 1 30 461 1 30 462 1 30 463 1 30 467 1 30 468 1 30 469 1 30 472 1 30 476 1 30 480 1 30 481 1 30 482 1 30 486 1 30 490 1 30 491 1 30 492 1 30 496 1 30 497 1 30 498 1 30 502 1 30 503 1 30 504 1 30 506 1 30 510 1 30 511 1 30 512 1 30 516 1 30 517 1 30 518 1 30 522 1 30 523 1 30 524 1 30 526 1 30 527 1 30 528 1 30 532 1 30 533 1 30 534 1 30 536 1 30 537 1 30 538 1 30 540 1 30 796 1 30 802 1 30 807 1 30 811 1 30 815 1 30 816 1 30 817 1 30 823 1 30 828 1 30 832 1 30 836 1 30 837 1 30 838 1 30 843 1 30 847 1 30 851 1 30 852 1 30 853 1 30 857 1 30 861 1 30 862 1 30 863 1 30 867 1 30 868 1 30 869 1 30 873 1 30 874 1 30 875 1 30 879 1 30 884 1 30 888 1 30 892 1 30 893 1 30 894 1 30 899 1 30 903 1 30 907 1 30 908 1 30 909 1 30 913 1 30 917 1 30 918 1 30 919 1 30 923 1 30 924 1 30 925 1 30 929 1 30 930 1 30 931 1 30 934 1 30 938 1 30 942 1 30 943 1 30 944 1 30 948 1 30 952 1 30 953 1 30 954 1 30 958 1 30 959 1 30 960 1 30 964 1 30 965 1 30 966 1 30 968 1 30 972 1 30 973 1 30 974 1 30 978 1 30 979 1 30 980 1 30 984 1 30 985 1 30 986 1 30 988 1 30 989 1 30 990 1 30 994 1 30 995 1 30 996 1 30 998 1 30 999 1 30 1000 1 30 1002 1 30 1257 1 30 1262 1 30 1266 1 30 1270 1 30 1271 1 30 1272 1 30 1277 1 30 1281 1 30 1285 1 30 1286 1 30 1287 1 30 1291 1 30 1295 1 30 1296 1 30 1297 1 30 1301 1 30 1302 1 30 1303 1 30 1307 1 30 1308 1 30 1309 1 30 1312 1 30 1316 1 30 1320 1 30 1321 1 30 1322 1 30 1326 1 30 1330 1 30 1331 1 30 1332 1 30 1336 1 30 1337 1 30 1338 1 30 1342 1 30 1343 1 30 1344 1 30 1346 1 30 1350 1 30 1351 1 30 1352 1 30 1356 1 30 1357 1 30 1358 1 30 1362 1 30 1363 1 30 1364 1 30 1366 1 30 1367 1 30 1368 1 30 1372 1 30 1373 1 30 1374 1 30 1376 1 30 1377 1 30 1378 1 30 1380 1 30 1382 1 30 1386 1 30 1390 1 30 1391 1 30 1392 1 30 1396 1 30 1400 1 30 1401 1 30 1402 1 30 1406 1 30 1407 1 30 1408 1 30 1412 1 30 1413 1 30 1414 1 30 1416 1 30 1420 1 30 1421 1 30 1422 1 30 1426 1 30 1427 1 30 1428 1 30 1432 1 30 1433 1 30 1434 1 30 1436 1 30 1437 1 30 1438 1 30 1442 1 30 1443 1 30 1444 1 30 1446 1 30 1447 1 30 1448 1 30 1450 1 30 1451 1 30 1455 1 30 1456 1 30 1457 1 30 1461 1 30 1462 1 30 1463 1 30 1467 1 30 1468 1 30 1469 1 30 1471 1 30 1472 1 30 1473 1 30 1477 1 30 1478 1 30 1479 1 30 1481 1 30 1482 1 30 1483 1 30 1485 1 30 1486 1 30 1487 1 30 1488 1 30 1492 1 30 1493 1 30 1494 1 30 1496 1 30 1497 1 30 1498 1 30 1500 1 30 1501 1 30 1502 1 30 1503 1 30 1505 1 30 1506 1 31 6 1 31 13 1 31 19 1 31 24 1 31 28 1 31 31 1 31 34 1 31 35 1 31 41 1 31 47 1 31 52 1 31 56 1 31 59 1 31 62 1 31 63 1 31 68 1 31 73 1 31 77 1 31 80 1 31 83 1 31 84 1 31 88 1 31 92 1 31 95 1 31 98 1 31 99 1 31 102 1 31 105 1 31 108 1 31 109 1 31 111 1 31 114 1 31 115 1 31 117 1 31 118 1 31 120 1 31 335 1 31 341 1 31 346 1 31 350 1 31 353 1 31 356 1 31 357 1 31 362 1 31 367 1 31 371 1 31 374 1 31 377 1 31 378 1 31 382 1 31 386 1 31 389 1 31 392 1 31 393 1 31 396 1 31 399 1 31 402 1 31 403 1 31 405 1 31 408 1 31 409 1 31 411 1 31 412 1 31 414 1 31 418 1 31 423 1 31 427 1 31 430 1 31 433 1 31 434 1 31 438 1 31 442 1 31 445 1 31 448 1 31 449 1 31 452 1 31 455 1 31 458 1 31 459 1 31 461 1 31 464 1 31 465 1 31 467 1 31 468 1 31 470 1 31 473 1 31 477 1 31 480 1 31 483 1 31 484 1 31 487 1 31 490 1 31 493 1 31 494 1 31 496 1 31 499 1 31 500 1 31 502 1 31 503 1 31 505 1 31 507 1 31 510 1 31 513 1 31 514 1 31 516 1 31 519 1 31 520 1 31 522 1 31 523 1 31 525 1 31 526 1 31 529 1 31 530 1 31 532 1 31 533 1 31 535 1 31 536 1 31 537 1 31 539 1 31 540 1 31 797 1 31 803 1 31 808 1 31 812 1 31 815 1 31 818 1 31 819 1 31 824 1 31 829 1 31 833 1 31 836 1 31 839 1 31 840 1 31 844 1 31 848 1 31 851 1 31 854 1 31 855 1 31 858 1 31 861 1 31 864 1 31 865 1 31 867 1 31 870 1 31 871 1 31 873 1 31 874 1 31 876 1 31 880 1 31 885 1 31 889 1 31 892 1 31 895 1 31 896 1 31 900 1 31 904 1 31 907 1 31 910 1 31 911 1 31 914 1 31 917 1 31 920 1 31 921 1 31 923 1 31 926 1 31 927 1 31 929 1 31 930 1 31 932 1 31 935 1 31 939 1 31 942 1 31 945 1 31 946 1 31 949 1 31 952 1 31 955 1 31 956 1 31 958 1 31 961 1 31 962 1 31 964 1 31 965 1 31 967 1 31 969 1 31 972 1 31 975 1 31 976 1 31 978 1 31 981 1 31 982 1 31 984 1 31 985 1 31 987 1 31 988 1 31 991 1 31 992 1 31 994 1 31 995 1 31 997 1 31 998 1 31 999 1 31 1001 1 31 1002 1 31 1258 1 31 1263 1 31 1267 1 31 1270 1 31 1273 1 31 1274 1 31 1278 1 31 1282 1 31 1285 1 31 1288 1 31 1289 1 31 1292 1 31 1295 1 31 1298 1 31 1299 1 31 1301 1 31 1304 1 31 1305 1 31 1307 1 31 1308 1 31 1310 1 31 1313 1 31 1317 1 31 1320 1 31 1323 1 31 1324 1 31 1327 1 31 1330 1 31 1333 1 31 1334 1 31 1336 1 31 1339 1 31 1340 1 31 1342 1 31 1343 1 31 1345 1 31 1347 1 31 1350 1 31 1353 1 31 1354 1 31 1356 1 31 1359 1 31 1360 1 31 1362 1 31 1363 1 31 1365 1 31 1366 1 31 1369 1 31 1370 1 31 1372 1 31 1373 1 31 1375 1 31 1376 1 31 1377 1 31 1379 1 31 1380 1 31 1383 1 31 1387 1 31 1390 1 31 1393 1 31 1394 1 31 1397 1 31 1400 1 31 1403 1 31 1404 1 31 1406 1 31 1409 1 31 1410 1 31 1412 1 31 1413 1 31 1415 1 31 1417 1 31 1420 1 31 1423 1 31 1424 1 31 1426 1 31 1429 1 31 1430 1 31 1432 1 31 1433 1 31 1435 1 31 1436 1 31 1439 1 31 1440 1 31 1442 1 31 1443 1 31 1445 1 31 1446 1 31 1447 1 31 1449 1 31 1450 1 31 1452 1 31 1455 1 31 1458 1 31 1459 1 31 1461 1 31 1464 1 31 1465 1 31 1467 1 31 1468 1 31 1470 1 31 1471 1 31 1474 1 31 1475 1 31 1477 1 31 1478 1 31 1480 1 31 1481 1 31 1482 1 31 1484 1 31 1485 1 31 1486 1 31 1489 1 31 1490 1 31 1492 1 31 1493 1 31 1495 1 31 1496 1 31 1497 1 31 1499 1 31 1500 1 31 1501 1 31 1502 1 31 1504 1 31 1505 1 31 1506 1 32 7 1 32 14 1 32 20 1 32 25 1 32 29 1 32 32 1 32 34 1 32 36 1 32 42 1 32 48 1 32 53 1 32 57 1 32 60 1 32 62 1 32 64 1 32 69 1 32 74 1 32 78 1 32 81 1 32 83 1 32 85 1 32 89 1 32 93 1 32 96 1 32 98 1 32 100 1 32 103 1 32 106 1 32 108 1 32 110 1 32 112 1 32 114 1 32 116 1 32 117 1 32 119 1 32 120 1 32 336 1 32 342 1 32 347 1 32 351 1 32 354 1 32 356 1 32 358 1 32 363 1 32 368 1 32 372 1 32 375 1 32 377 1 32 379 1 32 383 1 32 387 1 32 390 1 32 392 1 32 394 1 32 397 1 32 400 1 32 402 1 32 404 1 32 406 1 32 408 1 32 410 1 32 411 1 32 413 1 32 414 1 32 419 1 32 424 1 32 428 1 32 431 1 32 433 1 32 435 1 32 439 1 32 443 1 32 446 1 32 448 1 32 450 1 32 453 1 32 456 1 32 458 1 32 460 1 32 462 1 32 464 1 32 466 1 32 467 1 32 469 1 32 470 1 32 474 1 32 478 1 32 481 1 32 483 1 32 485 1 32 488 1 32 491 1 32 493 1 32 495 1 32 497 1 32 499 1 32 501 1 32 502 1 32 504 1 32 505 1 32 508 1 32 511 1 32 513 1 32 515 1 32 517 1 32 519 1 32 521 1 32 522 1 32 524 1 32 525 1 32 527 1 32 529 1 32 531 1 32 532 1 32 534 1 32 535 1 32 536 1 32 538 1 32 539 1 32 540 1 32 798 1 32 804 1 32 809 1 32 813 1 32 816 1 32 818 1 32 820 1 32 825 1 32 830 1 32 834 1 32 837 1 32 839 1 32 841 1 32 845 1 32 849 1 32 852 1 32 854 1 32 856 1 32 859 1 32 862 1 32 864 1 32 866 1 32 868 1 32 870 1 32 872 1 32 873 1 32 875 1 32 876 1 32 881 1 32 886 1 32 890 1 32 893 1 32 895 1 32 897 1 32 901 1 32 905 1 32 908 1 32 910 1 32 912 1 32 915 1 32 918 1 32 920 1 32 922 1 32 924 1 32 926 1 32 928 1 32 929 1 32 931 1 32 932 1 32 936 1 32 940 1 32 943 1 32 945 1 32 947 1 32 950 1 32 953 1 32 955 1 32 957 1 32 959 1 32 961 1 32 963 1 32 964 1 32 966 1 32 967 1 32 970 1 32 973 1 32 975 1 32 977 1 32 979 1 32 981 1 32 983 1 32 984 1 32 986 1 32 987 1 32 989 1 32 991 1 32 993 1 32 994 1 32 996 1 32 997 1 32 998 1 32 1000 1 32 1001 1 32 1002 1 32 1259 1 32 1264 1 32 1268 1 32 1271 1 32 1273 1 32 1275 1 32 1279 1 32 1283 1 32 1286 1 32 1288 1 32 1290 1 32 1293 1 32 1296 1 32 1298 1 32 1300 1 32 1302 1 32 1304 1 32 1306 1 32 1307 1 32 1309 1 32 1310 1 32 1314 1 32 1318 1 32 1321 1 32 1323 1 32 1325 1 32 1328 1 32 1331 1 32 1333 1 32 1335 1 32 1337 1 32 1339 1 32 1341 1 32 1342 1 32 1344 1 32 1345 1 32 1348 1 32 1351 1 32 1353 1 32 1355 1 32 1357 1 32 1359 1 32 1361 1 32 1362 1 32 1364 1 32 1365 1 32 1367 1 32 1369 1 32 1371 1 32 1372 1 32 1374 1 32 1375 1 32 1376 1 32 1378 1 32 1379 1 32 1380 1 32 1384 1 32 1388 1 32 1391 1 32 1393 1 32 1395 1 32 1398 1 32 1401 1 32 1403 1 32 1405 1 32 1407 1 32 1409 1 32 1411 1 32 1412 1 32 1414 1 32 1415 1 32 1418 1 32 1421 1 32 1423 1 32 1425 1 32 1427 1 32 1429 1 32 1431 1 32 1432 1 32 1434 1 32 1435 1 32 1437 1 32 1439 1 32 1441 1 32 1442 1 32 1444 1 32 1445 1 32 1446 1 32 1448 1 32 1449 1 32 1450 1 32 1453 1 32 1456 1 32 1458 1 32 1460 1 32 1462 1 32 1464 1 32 1466 1 32 1467 1 32 1469 1 32 1470 1 32 1472 1 32 1474 1 32 1476 1 32 1477 1 32 1479 1 32 1480 1 32 1481 1 32 1483 1 32 1484 1 32 1485 1 32 1487 1 32 1489 1 32 1491 1 32 1492 1 32 1494 1 32 1495 1 32 1496 1 32 1498 1 32 1499 1 32 1500 1 32 1501 1 32 1503 1 32 1504 1 32 1505 1 32 1506 1 33 8 1 33 15 1 33 21 1 33 26 1 33 30 1 33 33 1 33 35 1 33 36 1 33 43 1 33 49 1 33 54 1 33 58 1 33 61 1 33 63 1 33 64 1 33 70 1 33 75 1 33 79 1 33 82 1 33 84 1 33 85 1 33 90 1 33 94 1 33 97 1 33 99 1 33 100 1 33 104 1 33 107 1 33 109 1 33 110 1 33 113 1 33 115 1 33 116 1 33 118 1 33 119 1 33 120 1 33 337 1 33 343 1 33 348 1 33 352 1 33 355 1 33 357 1 33 358 1 33 364 1 33 369 1 33 373 1 33 376 1 33 378 1 33 379 1 33 384 1 33 388 1 33 391 1 33 393 1 33 394 1 33 398 1 33 401 1 33 403 1 33 404 1 33 407 1 33 409 1 33 410 1 33 412 1 33 413 1 33 414 1 33 420 1 33 425 1 33 429 1 33 432 1 33 434 1 33 435 1 33 440 1 33 444 1 33 447 1 33 449 1 33 450 1 33 454 1 33 457 1 33 459 1 33 460 1 33 463 1 33 465 1 33 466 1 33 468 1 33 469 1 33 470 1 33 475 1 33 479 1 33 482 1 33 484 1 33 485 1 33 489 1 33 492 1 33 494 1 33 495 1 33 498 1 33 500 1 33 501 1 33 503 1 33 504 1 33 505 1 33 509 1 33 512 1 33 514 1 33 515 1 33 518 1 33 520 1 33 521 1 33 523 1 33 524 1 33 525 1 33 528 1 33 530 1 33 531 1 33 533 1 33 534 1 33 535 1 33 537 1 33 538 1 33 539 1 33 540 1 33 799 1 33 805 1 33 810 1 33 814 1 33 817 1 33 819 1 33 820 1 33 826 1 33 831 1 33 835 1 33 838 1 33 840 1 33 841 1 33 846 1 33 850 1 33 853 1 33 855 1 33 856 1 33 860 1 33 863 1 33 865 1 33 866 1 33 869 1 33 871 1 33 872 1 33 874 1 33 875 1 33 876 1 33 882 1 33 887 1 33 891 1 33 894 1 33 896 1 33 897 1 33 902 1 33 906 1 33 909 1 33 911 1 33 912 1 33 916 1 33 919 1 33 921 1 33 922 1 33 925 1 33 927 1 33 928 1 33 930 1 33 931 1 33 932 1 33 937 1 33 941 1 33 944 1 33 946 1 33 947 1 33 951 1 33 954 1 33 956 1 33 957 1 33 960 1 33 962 1 33 963 1 33 965 1 33 966 1 33 967 1 33 971 1 33 974 1 33 976 1 33 977 1 33 980 1 33 982 1 33 983 1 33 985 1 33 986 1 33 987 1 33 990 1 33 992 1 33 993 1 33 995 1 33 996 1 33 997 1 33 999 1 33 1000 1 33 1001 1 33 1002 1 33 1260 1 33 1265 1 33 1269 1 33 1272 1 33 1274 1 33 1275 1 33 1280 1 33 1284 1 33 1287 1 33 1289 1 33 1290 1 33 1294 1 33 1297 1 33 1299 1 33 1300 1 33 1303 1 33 1305 1 33 1306 1 33 1308 1 33 1309 1 33 1310 1 33 1315 1 33 1319 1 33 1322 1 33 1324 1 33 1325 1 33 1329 1 33 1332 1 33 1334 1 33 1335 1 33 1338 1 33 1340 1 33 1341 1 33 1343 1 33 1344 1 33 1345 1 33 1349 1 33 1352 1 33 1354 1 33 1355 1 33 1358 1 33 1360 1 33 1361 1 33 1363 1 33 1364 1 33 1365 1 33 1368 1 33 1370 1 33 1371 1 33 1373 1 33 1374 1 33 1375 1 33 1377 1 33 1378 1 33 1379 1 33 1380 1 33 1385 1 33 1389 1 33 1392 1 33 1394 1 33 1395 1 33 1399 1 33 1402 1 33 1404 1 33 1405 1 33 1408 1 33 1410 1 33 1411 1 33 1413 1 33 1414 1 33 1415 1 33 1419 1 33 1422 1 33 1424 1 33 1425 1 33 1428 1 33 1430 1 33 1431 1 33 1433 1 33 1434 1 33 1435 1 33 1438 1 33 1440 1 33 1441 1 33 1443 1 33 1444 1 33 1445 1 33 1447 1 33 1448 1 33 1449 1 33 1450 1 33 1454 1 33 1457 1 33 1459 1 33 1460 1 33 1463 1 33 1465 1 33 1466 1 33 1468 1 33 1469 1 33 1470 1 33 1473 1 33 1475 1 33 1476 1 33 1478 1 33 1479 1 33 1480 1 33 1482 1 33 1483 1 33 1484 1 33 1485 1 33 1488 1 33 1490 1 33 1491 1 33 1493 1 33 1494 1 33 1495 1 33 1497 1 33 1498 1 33 1499 1 33 1500 1 33 1502 1 33 1503 1 33 1504 1 33 1505 1 33 1506 1 34 1 1 34 2 1 34 3 1 34 4 1 34 5 1 34 6 1 34 7 1 34 8 1 34 121 1 34 122 1 34 123 1 34 124 1 34 125 1 34 126 1 34 127 1 34 128 1 34 129 1 34 130 1 34 131 1 34 132 1 34 133 1 34 134 1 34 135 1 34 136 1 34 137 1 34 138 1 34 139 1 34 140 1 34 141 1 34 142 1 34 143 1 34 144 1 34 145 1 34 146 1 34 147 1 34 148 1 34 331 1 34 332 1 34 333 1 34 334 1 34 335 1 34 336 1 34 337 1 34 338 1 34 339 1 34 340 1 34 341 1 34 342 1 34 343 1 34 344 1 34 345 1 34 346 1 34 347 1 34 348 1 34 349 1 34 350 1 34 351 1 34 352 1 34 353 1 34 354 1 34 355 1 34 356 1 34 357 1 34 358 1 34 541 1 34 542 1 34 543 1 34 544 1 34 545 1 34 546 1 34 547 1 34 548 1 34 549 1 34 550 1 34 551 1 34 552 1 34 553 1 34 554 1 34 555 1 34 556 1 34 557 1 34 558 1 34 559 1 34 560 1 34 561 1 34 562 1 34 563 1 34 564 1 34 565 1 34 566 1 34 567 1 34 568 1 34 569 1 34 570 1 34 571 1 34 572 1 34 573 1 34 574 1 34 575 1 34 576 1 34 577 1 34 578 1 34 579 1 34 580 1 34 581 1 34 582 1 34 583 1 34 584 1 34 585 1 34 586 1 34 587 1 34 588 1 34 589 1 34 590 1 34 591 1 34 592 1 34 593 1 34 594 1 34 595 1 34 596 1 34 793 1 34 794 1 34 795 1 34 796 1 34 797 1 34 798 1 34 799 1 34 800 1 34 801 1 34 802 1 34 803 1 34 804 1 34 805 1 34 806 1 34 807 1 34 808 1 34 809 1 34 810 1 34 811 1 34 812 1 34 813 1 34 814 1 34 815 1 34 816 1 34 817 1 34 818 1 34 819 1 34 820 1 34 1003 1 34 1004 1 34 1005 1 34 1006 1 34 1007 1 34 1008 1 34 1009 1 34 1010 1 34 1011 1 34 1012 1 34 1013 1 34 1014 1 34 1015 1 34 1016 1 34 1017 1 34 1018 1 34 1019 1 34 1020 1 34 1021 1 34 1022 1 34 1023 1 34 1024 1 34 1025 1 34 1026 1 34 1027 1 34 1028 1 34 1029 1 34 1030 1 34 1031 1 34 1032 1 34 1033 1 34 1034 1 34 1035 1 34 1036 1 34 1037 1 34 1038 1 34 1039 1 34 1040 1 34 1041 1 34 1042 1 34 1043 1 34 1044 1 34 1045 1 34 1046 1 34 1047 1 34 1048 1 34 1049 1 34 1050 1 34 1051 1 34 1052 1 34 1053 1 34 1054 1 34 1055 1 34 1056 1 34 1057 1 34 1058 1 34 1255 1 34 1256 1 34 1257 1 34 1258 1 34 1259 1 34 1260 1 34 1261 1 34 1262 1 34 1263 1 34 1264 1 34 1265 1 34 1266 1 34 1267 1 34 1268 1 34 1269 1 34 1270 1 34 1271 1 34 1272 1 34 1273 1 34 1274 1 34 1275 1 34 1276 1 34 1277 1 34 1278 1 34 1279 1 34 1280 1 34 1281 1 34 1282 1 34 1283 1 34 1284 1 34 1285 1 34 1286 1 34 1287 1 34 1288 1 34 1289 1 34 1290 1 34 1291 1 34 1292 1 34 1293 1 34 1294 1 34 1295 1 34 1296 1 34 1297 1 34 1298 1 34 1299 1 34 1300 1 34 1301 1 34 1302 1 34 1303 1 34 1304 1 34 1305 1 34 1306 1 34 1307 1 34 1308 1 34 1309 1 34 1310 1 34 1507 1 34 1508 1 34 1509 1 34 1510 1 34 1511 1 34 1512 1 34 1513 1 34 1514 1 34 1515 1 34 1516 1 34 1517 1 34 1518 1 34 1519 1 34 1520 1 34 1521 1 34 1522 1 34 1523 1 34 1524 1 34 1525 1 34 1526 1 34 1527 1 34 1528 1 34 1529 1 34 1530 1 34 1531 1 34 1532 1 34 1533 1 34 1534 1 34 1535 1 34 1536 1 34 1537 1 34 1538 1 34 1539 1 34 1540 1 34 1541 1 34 1542 1 34 1543 1 34 1544 1 34 1545 1 34 1546 1 34 1547 1 34 1548 1 34 1549 1 34 1550 1 34 1551 1 34 1552 1 34 1553 1 34 1554 1 34 1555 1 34 1556 1 34 1557 1 34 1558 1 34 1559 1 34 1560 1 34 1561 1 34 1562 1 34 1563 1 34 1564 1 34 1565 1 34 1566 1 34 1567 1 34 1568 1 34 1569 1 34 1570 1 34 1571 1 34 1572 1 34 1573 1 34 1574 1 34 1575 1 34 1576 1 35 1 1 35 9 1 35 10 1 35 11 1 35 12 1 35 13 1 35 14 1 35 15 1 35 121 1 35 122 1 35 123 1 35 124 1 35 125 1 35 126 1 35 127 1 35 149 1 35 150 1 35 151 1 35 152 1 35 153 1 35 154 1 35 155 1 35 156 1 35 157 1 35 158 1 35 159 1 35 160 1 35 161 1 35 162 1 35 163 1 35 164 1 35 165 1 35 166 1 35 167 1 35 168 1 35 169 1 35 331 1 35 332 1 35 333 1 35 334 1 35 335 1 35 336 1 35 337 1 35 359 1 35 360 1 35 361 1 35 362 1 35 363 1 35 364 1 35 365 1 35 366 1 35 367 1 35 368 1 35 369 1 35 370 1 35 371 1 35 372 1 35 373 1 35 374 1 35 375 1 35 376 1 35 377 1 35 378 1 35 379 1 35 541 1 35 542 1 35 543 1 35 544 1 35 545 1 35 546 1 35 547 1 35 548 1 35 549 1 35 550 1 35 551 1 35 552 1 35 553 1 35 554 1 35 555 1 35 556 1 35 557 1 35 558 1 35 559 1 35 560 1 35 561 1 35 597 1 35 598 1 35 599 1 35 600 1 35 601 1 35 602 1 35 603 1 35 604 1 35 605 1 35 606 1 35 607 1 35 608 1 35 609 1 35 610 1 35 611 1 35 612 1 35 613 1 35 614 1 35 615 1 35 616 1 35 617 1 35 618 1 35 619 1 35 620 1 35 621 1 35 622 1 35 623 1 35 624 1 35 625 1 35 626 1 35 627 1 35 628 1 35 629 1 35 630 1 35 631 1 35 793 1 35 794 1 35 795 1 35 796 1 35 797 1 35 798 1 35 799 1 35 821 1 35 822 1 35 823 1 35 824 1 35 825 1 35 826 1 35 827 1 35 828 1 35 829 1 35 830 1 35 831 1 35 832 1 35 833 1 35 834 1 35 835 1 35 836 1 35 837 1 35 838 1 35 839 1 35 840 1 35 841 1 35 1003 1 35 1004 1 35 1005 1 35 1006 1 35 1007 1 35 1008 1 35 1009 1 35 1010 1 35 1011 1 35 1012 1 35 1013 1 35 1014 1 35 1015 1 35 1016 1 35 1017 1 35 1018 1 35 1019 1 35 1020 1 35 1021 1 35 1022 1 35 1023 1 35 1059 1 35 1060 1 35 1061 1 35 1062 1 35 1063 1 35 1064 1 35 1065 1 35 1066 1 35 1067 1 35 1068 1 35 1069 1 35 1070 1 35 1071 1 35 1072 1 35 1073 1 35 1074 1 35 1075 1 35 1076 1 35 1077 1 35 1078 1 35 1079 1 35 1080 1 35 1081 1 35 1082 1 35 1083 1 35 1084 1 35 1085 1 35 1086 1 35 1087 1 35 1088 1 35 1089 1 35 1090 1 35 1091 1 35 1092 1 35 1093 1 35 1255 1 35 1256 1 35 1257 1 35 1258 1 35 1259 1 35 1260 1 35 1261 1 35 1262 1 35 1263 1 35 1264 1 35 1265 1 35 1266 1 35 1267 1 35 1268 1 35 1269 1 35 1270 1 35 1271 1 35 1272 1 35 1273 1 35 1274 1 35 1275 1 35 1311 1 35 1312 1 35 1313 1 35 1314 1 35 1315 1 35 1316 1 35 1317 1 35 1318 1 35 1319 1 35 1320 1 35 1321 1 35 1322 1 35 1323 1 35 1324 1 35 1325 1 35 1326 1 35 1327 1 35 1328 1 35 1329 1 35 1330 1 35 1331 1 35 1332 1 35 1333 1 35 1334 1 35 1335 1 35 1336 1 35 1337 1 35 1338 1 35 1339 1 35 1340 1 35 1341 1 35 1342 1 35 1343 1 35 1344 1 35 1345 1 35 1507 1 35 1508 1 35 1509 1 35 1510 1 35 1511 1 35 1512 1 35 1513 1 35 1514 1 35 1515 1 35 1516 1 35 1517 1 35 1518 1 35 1519 1 35 1520 1 35 1521 1 35 1522 1 35 1523 1 35 1524 1 35 1525 1 35 1526 1 35 1527 1 35 1528 1 35 1529 1 35 1530 1 35 1531 1 35 1532 1 35 1533 1 35 1534 1 35 1535 1 35 1536 1 35 1537 1 35 1538 1 35 1539 1 35 1540 1 35 1541 1 35 1577 1 35 1578 1 35 1579 1 35 1580 1 35 1581 1 35 1582 1 35 1583 1 35 1584 1 35 1585 1 35 1586 1 35 1587 1 35 1588 1 35 1589 1 35 1590 1 35 1591 1 35 1592 1 35 1593 1 35 1594 1 35 1595 1 35 1596 1 35 1597 1 35 1598 1 35 1599 1 35 1600 1 35 1601 1 35 1602 1 35 1603 1 35 1604 1 35 1605 1 35 1606 1 35 1607 1 35 1608 1 35 1609 1 35 1610 1 35 1611 1 36 2 1 36 9 1 36 16 1 36 17 1 36 18 1 36 19 1 36 20 1 36 21 1 36 121 1 36 128 1 36 129 1 36 130 1 36 131 1 36 132 1 36 133 1 36 149 1 36 150 1 36 151 1 36 152 1 36 153 1 36 154 1 36 170 1 36 171 1 36 172 1 36 173 1 36 174 1 36 175 1 36 176 1 36 177 1 36 178 1 36 179 1 36 180 1 36 181 1 36 182 1 36 183 1 36 184 1 36 331 1 36 338 1 36 339 1 36 340 1 36 341 1 36 342 1 36 343 1 36 359 1 36 360 1 36 361 1 36 362 1 36 363 1 36 364 1 36 380 1 36 381 1 36 382 1 36 383 1 36 384 1 36 385 1 36 386 1 36 387 1 36 388 1 36 389 1 36 390 1 36 391 1 36 392 1 36 393 1 36 394 1 36 541 1 36 542 1 36 543 1 36 544 1 36 545 1 36 546 1 36 562 1 36 563 1 36 564 1 36 565 1 36 566 1 36 567 1 36 568 1 36 569 1 36 570 1 36 571 1 36 572 1 36 573 1 36 574 1 36 575 1 36 576 1 36 597 1 36 598 1 36 599 1 36 600 1 36 601 1 36 602 1 36 603 1 36 604 1 36 605 1 36 606 1 36 607 1 36 608 1 36 609 1 36 610 1 36 611 1 36 632 1 36 633 1 36 634 1 36 635 1 36 636 1 36 637 1 36 638 1 36 639 1 36 640 1 36 641 1 36 642 1 36 643 1 36 644 1 36 645 1 36 646 1 36 647 1 36 648 1 36 649 1 36 650 1 36 651 1 36 793 1 36 800 1 36 801 1 36 802 1 36 803 1 36 804 1 36 805 1 36 821 1 36 822 1 36 823 1 36 824 1 36 825 1 36 826 1 36 842 1 36 843 1 36 844 1 36 845 1 36 846 1 36 847 1 36 848 1 36 849 1 36 850 1 36 851 1 36 852 1 36 853 1 36 854 1 36 855 1 36 856 1 36 1003 1 36 1004 1 36 1005 1 36 1006 1 36 1007 1 36 1008 1 36 1024 1 36 1025 1 36 1026 1 36 1027 1 36 1028 1 36 1029 1 36 1030 1 36 1031 1 36 1032 1 36 1033 1 36 1034 1 36 1035 1 36 1036 1 36 1037 1 36 1038 1 36 1059 1 36 1060 1 36 1061 1 36 1062 1 36 1063 1 36 1064 1 36 1065 1 36 1066 1 36 1067 1 36 1068 1 36 1069 1 36 1070 1 36 1071 1 36 1072 1 36 1073 1 36 1094 1 36 1095 1 36 1096 1 36 1097 1 36 1098 1 36 1099 1 36 1100 1 36 1101 1 36 1102 1 36 1103 1 36 1104 1 36 1105 1 36 1106 1 36 1107 1 36 1108 1 36 1109 1 36 1110 1 36 1111 1 36 1112 1 36 1113 1 36 1255 1 36 1256 1 36 1257 1 36 1258 1 36 1259 1 36 1260 1 36 1276 1 36 1277 1 36 1278 1 36 1279 1 36 1280 1 36 1281 1 36 1282 1 36 1283 1 36 1284 1 36 1285 1 36 1286 1 36 1287 1 36 1288 1 36 1289 1 36 1290 1 36 1311 1 36 1312 1 36 1313 1 36 1314 1 36 1315 1 36 1316 1 36 1317 1 36 1318 1 36 1319 1 36 1320 1 36 1321 1 36 1322 1 36 1323 1 36 1324 1 36 1325 1 36 1346 1 36 1347 1 36 1348 1 36 1349 1 36 1350 1 36 1351 1 36 1352 1 36 1353 1 36 1354 1 36 1355 1 36 1356 1 36 1357 1 36 1358 1 36 1359 1 36 1360 1 36 1361 1 36 1362 1 36 1363 1 36 1364 1 36 1365 1 36 1507 1 36 1508 1 36 1509 1 36 1510 1 36 1511 1 36 1512 1 36 1513 1 36 1514 1 36 1515 1 36 1516 1 36 1517 1 36 1518 1 36 1519 1 36 1520 1 36 1521 1 36 1542 1 36 1543 1 36 1544 1 36 1545 1 36 1546 1 36 1547 1 36 1548 1 36 1549 1 36 1550 1 36 1551 1 36 1552 1 36 1553 1 36 1554 1 36 1555 1 36 1556 1 36 1557 1 36 1558 1 36 1559 1 36 1560 1 36 1561 1 36 1577 1 36 1578 1 36 1579 1 36 1580 1 36 1581 1 36 1582 1 36 1583 1 36 1584 1 36 1585 1 36 1586 1 36 1587 1 36 1588 1 36 1589 1 36 1590 1 36 1591 1 36 1592 1 36 1593 1 36 1594 1 36 1595 1 36 1596 1 36 1612 1 36 1613 1 36 1614 1 36 1615 1 36 1616 1 36 1617 1 36 1618 1 36 1619 1 36 1620 1 36 1621 1 36 1622 1 36 1623 1 36 1624 1 36 1625 1 36 1626 1 37 3 1 37 10 1 37 16 1 37 22 1 37 23 1 37 24 1 37 25 1 37 26 1 37 122 1 37 128 1 37 134 1 37 135 1 37 136 1 37 137 1 37 138 1 37 149 1 37 155 1 37 156 1 37 157 1 37 158 1 37 159 1 37 170 1 37 171 1 37 172 1 37 173 1 37 174 1 37 185 1 37 186 1 37 187 1 37 188 1 37 189 1 37 190 1 37 191 1 37 192 1 37 193 1 37 194 1 37 332 1 37 338 1 37 344 1 37 345 1 37 346 1 37 347 1 37 348 1 37 359 1 37 365 1 37 366 1 37 367 1 37 368 1 37 369 1 37 380 1 37 381 1 37 382 1 37 383 1 37 384 1 37 395 1 37 396 1 37 397 1 37 398 1 37 399 1 37 400 1 37 401 1 37 402 1 37 403 1 37 404 1 37 541 1 37 547 1 37 548 1 37 549 1 37 550 1 37 551 1 37 562 1 37 563 1 37 564 1 37 565 1 37 566 1 37 577 1 37 578 1 37 579 1 37 580 1 37 581 1 37 582 1 37 583 1 37 584 1 37 585 1 37 586 1 37 597 1 37 598 1 37 599 1 37 600 1 37 601 1 37 612 1 37 613 1 37 614 1 37 615 1 37 616 1 37 617 1 37 618 1 37 619 1 37 620 1 37 621 1 37 632 1 37 633 1 37 634 1 37 635 1 37 636 1 37 637 1 37 638 1 37 639 1 37 640 1 37 641 1 37 652 1 37 653 1 37 654 1 37 655 1 37 656 1 37 657 1 37 658 1 37 659 1 37 660 1 37 661 1 37 794 1 37 800 1 37 806 1 37 807 1 37 808 1 37 809 1 37 810 1 37 821 1 37 827 1 37 828 1 37 829 1 37 830 1 37 831 1 37 842 1 37 843 1 37 844 1 37 845 1 37 846 1 37 857 1 37 858 1 37 859 1 37 860 1 37 861 1 37 862 1 37 863 1 37 864 1 37 865 1 37 866 1 37 1003 1 37 1009 1 37 1010 1 37 1011 1 37 1012 1 37 1013 1 37 1024 1 37 1025 1 37 1026 1 37 1027 1 37 1028 1 37 1039 1 37 1040 1 37 1041 1 37 1042 1 37 1043 1 37 1044 1 37 1045 1 37 1046 1 37 1047 1 37 1048 1 37 1059 1 37 1060 1 37 1061 1 37 1062 1 37 1063 1 37 1074 1 37 1075 1 37 1076 1 37 1077 1 37 1078 1 37 1079 1 37 1080 1 37 1081 1 37 1082 1 37 1083 1 37 1094 1 37 1095 1 37 1096 1 37 1097 1 37 1098 1 37 1099 1 37 1100 1 37 1101 1 37 1102 1 37 1103 1 37 1114 1 37 1115 1 37 1116 1 37 1117 1 37 1118 1 37 1119 1 37 1120 1 37 1121 1 37 1122 1 37 1123 1 37 1255 1 37 1261 1 37 1262 1 37 1263 1 37 1264 1 37 1265 1 37 1276 1 37 1277 1 37 1278 1 37 1279 1 37 1280 1 37 1291 1 37 1292 1 37 1293 1 37 1294 1 37 1295 1 37 1296 1 37 1297 1 37 1298 1 37 1299 1 37 1300 1 37 1311 1 37 1312 1 37 1313 1 37 1314 1 37 1315 1 37 1326 1 37 1327 1 37 1328 1 37 1329 1 37 1330 1 37 1331 1 37 1332 1 37 1333 1 37 1334 1 37 1335 1 37 1346 1 37 1347 1 37 1348 1 37 1349 1 37 1350 1 37 1351 1 37 1352 1 37 1353 1 37 1354 1 37 1355 1 37 1366 1 37 1367 1 37 1368 1 37 1369 1 37 1370 1 37 1371 1 37 1372 1 37 1373 1 37 1374 1 37 1375 1 37 1507 1 37 1508 1 37 1509 1 37 1510 1 37 1511 1 37 1522 1 37 1523 1 37 1524 1 37 1525 1 37 1526 1 37 1527 1 37 1528 1 37 1529 1 37 1530 1 37 1531 1 37 1542 1 37 1543 1 37 1544 1 37 1545 1 37 1546 1 37 1547 1 37 1548 1 37 1549 1 37 1550 1 37 1551 1 37 1562 1 37 1563 1 37 1564 1 37 1565 1 37 1566 1 37 1567 1 37 1568 1 37 1569 1 37 1570 1 37 1571 1 37 1577 1 37 1578 1 37 1579 1 37 1580 1 37 1581 1 37 1582 1 37 1583 1 37 1584 1 37 1585 1 37 1586 1 37 1597 1 37 1598 1 37 1599 1 37 1600 1 37 1601 1 37 1602 1 37 1603 1 37 1604 1 37 1605 1 37 1606 1 37 1612 1 37 1613 1 37 1614 1 37 1615 1 37 1616 1 37 1617 1 37 1618 1 37 1619 1 37 1620 1 37 1621 1 37 1627 1 37 1628 1 37 1629 1 37 1630 1 37 1631 1 38 4 1 38 11 1 38 17 1 38 22 1 38 27 1 38 28 1 38 29 1 38 30 1 38 123 1 38 129 1 38 134 1 38 139 1 38 140 1 38 141 1 38 142 1 38 150 1 38 155 1 38 160 1 38 161 1 38 162 1 38 163 1 38 170 1 38 175 1 38 176 1 38 177 1 38 178 1 38 185 1 38 186 1 38 187 1 38 188 1 38 195 1 38 196 1 38 197 1 38 198 1 38 199 1 38 200 1 38 333 1 38 339 1 38 344 1 38 349 1 38 350 1 38 351 1 38 352 1 38 360 1 38 365 1 38 370 1 38 371 1 38 372 1 38 373 1 38 380 1 38 385 1 38 386 1 38 387 1 38 388 1 38 395 1 38 396 1 38 397 1 38 398 1 38 405 1 38 406 1 38 407 1 38 408 1 38 409 1 38 410 1 38 542 1 38 547 1 38 552 1 38 553 1 38 554 1 38 555 1 38 562 1 38 567 1 38 568 1 38 569 1 38 570 1 38 577 1 38 578 1 38 579 1 38 580 1 38 587 1 38 588 1 38 589 1 38 590 1 38 591 1 38 592 1 38 597 1 38 602 1 38 603 1 38 604 1 38 605 1 38 612 1 38 613 1 38 614 1 38 615 1 38 622 1 38 623 1 38 624 1 38 625 1 38 626 1 38 627 1 38 632 1 38 633 1 38 634 1 38 635 1 38 642 1 38 643 1 38 644 1 38 645 1 38 646 1 38 647 1 38 652 1 38 653 1 38 654 1 38 655 1 38 656 1 38 657 1 38 662 1 38 663 1 38 664 1 38 665 1 38 795 1 38 801 1 38 806 1 38 811 1 38 812 1 38 813 1 38 814 1 38 822 1 38 827 1 38 832 1 38 833 1 38 834 1 38 835 1 38 842 1 38 847 1 38 848 1 38 849 1 38 850 1 38 857 1 38 858 1 38 859 1 38 860 1 38 867 1 38 868 1 38 869 1 38 870 1 38 871 1 38 872 1 38 1004 1 38 1009 1 38 1014 1 38 1015 1 38 1016 1 38 1017 1 38 1024 1 38 1029 1 38 1030 1 38 1031 1 38 1032 1 38 1039 1 38 1040 1 38 1041 1 38 1042 1 38 1049 1 38 1050 1 38 1051 1 38 1052 1 38 1053 1 38 1054 1 38 1059 1 38 1064 1 38 1065 1 38 1066 1 38 1067 1 38 1074 1 38 1075 1 38 1076 1 38 1077 1 38 1084 1 38 1085 1 38 1086 1 38 1087 1 38 1088 1 38 1089 1 38 1094 1 38 1095 1 38 1096 1 38 1097 1 38 1104 1 38 1105 1 38 1106 1 38 1107 1 38 1108 1 38 1109 1 38 1114 1 38 1115 1 38 1116 1 38 1117 1 38 1118 1 38 1119 1 38 1124 1 38 1125 1 38 1126 1 38 1127 1 38 1256 1 38 1261 1 38 1266 1 38 1267 1 38 1268 1 38 1269 1 38 1276 1 38 1281 1 38 1282 1 38 1283 1 38 1284 1 38 1291 1 38 1292 1 38 1293 1 38 1294 1 38 1301 1 38 1302 1 38 1303 1 38 1304 1 38 1305 1 38 1306 1 38 1311 1 38 1316 1 38 1317 1 38 1318 1 38 1319 1 38 1326 1 38 1327 1 38 1328 1 38 1329 1 38 1336 1 38 1337 1 38 1338 1 38 1339 1 38 1340 1 38 1341 1 38 1346 1 38 1347 1 38 1348 1 38 1349 1 38 1356 1 38 1357 1 38 1358 1 38 1359 1 38 1360 1 38 1361 1 38 1366 1 38 1367 1 38 1368 1 38 1369 1 38 1370 1 38 1371 1 38 1376 1 38 1377 1 38 1378 1 38 1379 1 38 1507 1 38 1512 1 38 1513 1 38 1514 1 38 1515 1 38 1522 1 38 1523 1 38 1524 1 38 1525 1 38 1532 1 38 1533 1 38 1534 1 38 1535 1 38 1536 1 38 1537 1 38 1542 1 38 1543 1 38 1544 1 38 1545 1 38 1552 1 38 1553 1 38 1554 1 38 1555 1 38 1556 1 38 1557 1 38 1562 1 38 1563 1 38 1564 1 38 1565 1 38 1566 1 38 1567 1 38 1572 1 38 1573 1 38 1574 1 38 1575 1 38 1577 1 38 1578 1 38 1579 1 38 1580 1 38 1587 1 38 1588 1 38 1589 1 38 1590 1 38 1591 1 38 1592 1 38 1597 1 38 1598 1 38 1599 1 38 1600 1 38 1601 1 38 1602 1 38 1607 1 38 1608 1 38 1609 1 38 1610 1 38 1612 1 38 1613 1 38 1614 1 38 1615 1 38 1616 1 38 1617 1 38 1622 1 38 1623 1 38 1624 1 38 1625 1 38 1627 1 38 1628 1 38 1629 1 38 1630 1 38 1632 1 39 5 1 39 12 1 39 18 1 39 23 1 39 27 1 39 31 1 39 32 1 39 33 1 39 124 1 39 130 1 39 135 1 39 139 1 39 143 1 39 144 1 39 145 1 39 151 1 39 156 1 39 160 1 39 164 1 39 165 1 39 166 1 39 171 1 39 175 1 39 179 1 39 180 1 39 181 1 39 185 1 39 189 1 39 190 1 39 191 1 39 195 1 39 196 1 39 197 1 39 201 1 39 202 1 39 203 1 39 334 1 39 340 1 39 345 1 39 349 1 39 353 1 39 354 1 39 355 1 39 361 1 39 366 1 39 370 1 39 374 1 39 375 1 39 376 1 39 381 1 39 385 1 39 389 1 39 390 1 39 391 1 39 395 1 39 399 1 39 400 1 39 401 1 39 405 1 39 406 1 39 407 1 39 411 1 39 412 1 39 413 1 39 543 1 39 548 1 39 552 1 39 556 1 39 557 1 39 558 1 39 563 1 39 567 1 39 571 1 39 572 1 39 573 1 39 577 1 39 581 1 39 582 1 39 583 1 39 587 1 39 588 1 39 589 1 39 593 1 39 594 1 39 595 1 39 598 1 39 602 1 39 606 1 39 607 1 39 608 1 39 612 1 39 616 1 39 617 1 39 618 1 39 622 1 39 623 1 39 624 1 39 628 1 39 629 1 39 630 1 39 632 1 39 636 1 39 637 1 39 638 1 39 642 1 39 643 1 39 644 1 39 648 1 39 649 1 39 650 1 39 652 1 39 653 1 39 654 1 39 658 1 39 659 1 39 660 1 39 662 1 39 663 1 39 664 1 39 666 1 39 796 1 39 802 1 39 807 1 39 811 1 39 815 1 39 816 1 39 817 1 39 823 1 39 828 1 39 832 1 39 836 1 39 837 1 39 838 1 39 843 1 39 847 1 39 851 1 39 852 1 39 853 1 39 857 1 39 861 1 39 862 1 39 863 1 39 867 1 39 868 1 39 869 1 39 873 1 39 874 1 39 875 1 39 1005 1 39 1010 1 39 1014 1 39 1018 1 39 1019 1 39 1020 1 39 1025 1 39 1029 1 39 1033 1 39 1034 1 39 1035 1 39 1039 1 39 1043 1 39 1044 1 39 1045 1 39 1049 1 39 1050 1 39 1051 1 39 1055 1 39 1056 1 39 1057 1 39 1060 1 39 1064 1 39 1068 1 39 1069 1 39 1070 1 39 1074 1 39 1078 1 39 1079 1 39 1080 1 39 1084 1 39 1085 1 39 1086 1 39 1090 1 39 1091 1 39 1092 1 39 1094 1 39 1098 1 39 1099 1 39 1100 1 39 1104 1 39 1105 1 39 1106 1 39 1110 1 39 1111 1 39 1112 1 39 1114 1 39 1115 1 39 1116 1 39 1120 1 39 1121 1 39 1122 1 39 1124 1 39 1125 1 39 1126 1 39 1128 1 39 1257 1 39 1262 1 39 1266 1 39 1270 1 39 1271 1 39 1272 1 39 1277 1 39 1281 1 39 1285 1 39 1286 1 39 1287 1 39 1291 1 39 1295 1 39 1296 1 39 1297 1 39 1301 1 39 1302 1 39 1303 1 39 1307 1 39 1308 1 39 1309 1 39 1312 1 39 1316 1 39 1320 1 39 1321 1 39 1322 1 39 1326 1 39 1330 1 39 1331 1 39 1332 1 39 1336 1 39 1337 1 39 1338 1 39 1342 1 39 1343 1 39 1344 1 39 1346 1 39 1350 1 39 1351 1 39 1352 1 39 1356 1 39 1357 1 39 1358 1 39 1362 1 39 1363 1 39 1364 1 39 1366 1 39 1367 1 39 1368 1 39 1372 1 39 1373 1 39 1374 1 39 1376 1 39 1377 1 39 1378 1 39 1380 1 39 1508 1 39 1512 1 39 1516 1 39 1517 1 39 1518 1 39 1522 1 39 1526 1 39 1527 1 39 1528 1 39 1532 1 39 1533 1 39 1534 1 39 1538 1 39 1539 1 39 1540 1 39 1542 1 39 1546 1 39 1547 1 39 1548 1 39 1552 1 39 1553 1 39 1554 1 39 1558 1 39 1559 1 39 1560 1 39 1562 1 39 1563 1 39 1564 1 39 1568 1 39 1569 1 39 1570 1 39 1572 1 39 1573 1 39 1574 1 39 1576 1 39 1577 1 39 1581 1 39 1582 1 39 1583 1 39 1587 1 39 1588 1 39 1589 1 39 1593 1 39 1594 1 39 1595 1 39 1597 1 39 1598 1 39 1599 1 39 1603 1 39 1604 1 39 1605 1 39 1607 1 39 1608 1 39 1609 1 39 1611 1 39 1612 1 39 1613 1 39 1614 1 39 1618 1 39 1619 1 39 1620 1 39 1622 1 39 1623 1 39 1624 1 39 1626 1 39 1627 1 39 1628 1 39 1629 1 39 1631 1 39 1632 1 40 6 1 40 13 1 40 19 1 40 24 1 40 28 1 40 31 1 40 34 1 40 35 1 40 125 1 40 131 1 40 136 1 40 140 1 40 143 1 40 146 1 40 147 1 40 152 1 40 157 1 40 161 1 40 164 1 40 167 1 40 168 1 40 172 1 40 176 1 40 179 1 40 182 1 40 183 1 40 186 1 40 189 1 40 192 1 40 193 1 40 195 1 40 198 1 40 199 1 40 201 1 40 202 1 40 204 1 40 335 1 40 341 1 40 346 1 40 350 1 40 353 1 40 356 1 40 357 1 40 362 1 40 367 1 40 371 1 40 374 1 40 377 1 40 378 1 40 382 1 40 386 1 40 389 1 40 392 1 40 393 1 40 396 1 40 399 1 40 402 1 40 403 1 40 405 1 40 408 1 40 409 1 40 411 1 40 412 1 40 414 1 40 544 1 40 549 1 40 553 1 40 556 1 40 559 1 40 560 1 40 564 1 40 568 1 40 571 1 40 574 1 40 575 1 40 578 1 40 581 1 40 584 1 40 585 1 40 587 1 40 590 1 40 591 1 40 593 1 40 594 1 40 596 1 40 599 1 40 603 1 40 606 1 40 609 1 40 610 1 40 613 1 40 616 1 40 619 1 40 620 1 40 622 1 40 625 1 40 626 1 40 628 1 40 629 1 40 631 1 40 633 1 40 636 1 40 639 1 40 640 1 40 642 1 40 645 1 40 646 1 40 648 1 40 649 1 40 651 1 40 652 1 40 655 1 40 656 1 40 658 1 40 659 1 40 661 1 40 662 1 40 663 1 40 665 1 40 666 1 40 797 1 40 803 1 40 808 1 40 812 1 40 815 1 40 818 1 40 819 1 40 824 1 40 829 1 40 833 1 40 836 1 40 839 1 40 840 1 40 844 1 40 848 1 40 851 1 40 854 1 40 855 1 40 858 1 40 861 1 40 864 1 40 865 1 40 867 1 40 870 1 40 871 1 40 873 1 40 874 1 40 876 1 40 1006 1 40 1011 1 40 1015 1 40 1018 1 40 1021 1 40 1022 1 40 1026 1 40 1030 1 40 1033 1 40 1036 1 40 1037 1 40 1040 1 40 1043 1 40 1046 1 40 1047 1 40 1049 1 40 1052 1 40 1053 1 40 1055 1 40 1056 1 40 1058 1 40 1061 1 40 1065 1 40 1068 1 40 1071 1 40 1072 1 40 1075 1 40 1078 1 40 1081 1 40 1082 1 40 1084 1 40 1087 1 40 1088 1 40 1090 1 40 1091 1 40 1093 1 40 1095 1 40 1098 1 40 1101 1 40 1102 1 40 1104 1 40 1107 1 40 1108 1 40 1110 1 40 1111 1 40 1113 1 40 1114 1 40 1117 1 40 1118 1 40 1120 1 40 1121 1 40 1123 1 40 1124 1 40 1125 1 40 1127 1 40 1128 1 40 1258 1 40 1263 1 40 1267 1 40 1270 1 40 1273 1 40 1274 1 40 1278 1 40 1282 1 40 1285 1 40 1288 1 40 1289 1 40 1292 1 40 1295 1 40 1298 1 40 1299 1 40 1301 1 40 1304 1 40 1305 1 40 1307 1 40 1308 1 40 1310 1 40 1313 1 40 1317 1 40 1320 1 40 1323 1 40 1324 1 40 1327 1 40 1330 1 40 1333 1 40 1334 1 40 1336 1 40 1339 1 40 1340 1 40 1342 1 40 1343 1 40 1345 1 40 1347 1 40 1350 1 40 1353 1 40 1354 1 40 1356 1 40 1359 1 40 1360 1 40 1362 1 40 1363 1 40 1365 1 40 1366 1 40 1369 1 40 1370 1 40 1372 1 40 1373 1 40 1375 1 40 1376 1 40 1377 1 40 1379 1 40 1380 1 40 1509 1 40 1513 1 40 1516 1 40 1519 1 40 1520 1 40 1523 1 40 1526 1 40 1529 1 40 1530 1 40 1532 1 40 1535 1 40 1536 1 40 1538 1 40 1539 1 40 1541 1 40 1543 1 40 1546 1 40 1549 1 40 1550 1 40 1552 1 40 1555 1 40 1556 1 40 1558 1 40 1559 1 40 1561 1 40 1562 1 40 1565 1 40 1566 1 40 1568 1 40 1569 1 40 1571 1 40 1572 1 40 1573 1 40 1575 1 40 1576 1 40 1578 1 40 1581 1 40 1584 1 40 1585 1 40 1587 1 40 1590 1 40 1591 1 40 1593 1 40 1594 1 40 1596 1 40 1597 1 40 1600 1 40 1601 1 40 1603 1 40 1604 1 40 1606 1 40 1607 1 40 1608 1 40 1610 1 40 1611 1 40 1612 1 40 1615 1 40 1616 1 40 1618 1 40 1619 1 40 1621 1 40 1622 1 40 1623 1 40 1625 1 40 1626 1 40 1627 1 40 1628 1 40 1630 1 40 1631 1 40 1632 1 41 7 1 41 14 1 41 20 1 41 25 1 41 29 1 41 32 1 41 34 1 41 36 1 41 126 1 41 132 1 41 137 1 41 141 1 41 144 1 41 146 1 41 148 1 41 153 1 41 158 1 41 162 1 41 165 1 41 167 1 41 169 1 41 173 1 41 177 1 41 180 1 41 182 1 41 184 1 41 187 1 41 190 1 41 192 1 41 194 1 41 196 1 41 198 1 41 200 1 41 201 1 41 203 1 41 204 1 41 336 1 41 342 1 41 347 1 41 351 1 41 354 1 41 356 1 41 358 1 41 363 1 41 368 1 41 372 1 41 375 1 41 377 1 41 379 1 41 383 1 41 387 1 41 390 1 41 392 1 41 394 1 41 397 1 41 400 1 41 402 1 41 404 1 41 406 1 41 408 1 41 410 1 41 411 1 41 413 1 41 414 1 41 545 1 41 550 1 41 554 1 41 557 1 41 559 1 41 561 1 41 565 1 41 569 1 41 572 1 41 574 1 41 576 1 41 579 1 41 582 1 41 584 1 41 586 1 41 588 1 41 590 1 41 592 1 41 593 1 41 595 1 41 596 1 41 600 1 41 604 1 41 607 1 41 609 1 41 611 1 41 614 1 41 617 1 41 619 1 41 621 1 41 623 1 41 625 1 41 627 1 41 628 1 41 630 1 41 631 1 41 634 1 41 637 1 41 639 1 41 641 1 41 643 1 41 645 1 41 647 1 41 648 1 41 650 1 41 651 1 41 653 1 41 655 1 41 657 1 41 658 1 41 660 1 41 661 1 41 662 1 41 664 1 41 665 1 41 666 1 41 798 1 41 804 1 41 809 1 41 813 1 41 816 1 41 818 1 41 820 1 41 825 1 41 830 1 41 834 1 41 837 1 41 839 1 41 841 1 41 845 1 41 849 1 41 852 1 41 854 1 41 856 1 41 859 1 41 862 1 41 864 1 41 866 1 41 868 1 41 870 1 41 872 1 41 873 1 41 875 1 41 876 1 41 1007 1 41 1012 1 41 1016 1 41 1019 1 41 1021 1 41 1023 1 41 1027 1 41 1031 1 41 1034 1 41 1036 1 41 1038 1 41 1041 1 41 1044 1 41 1046 1 41 1048 1 41 1050 1 41 1052 1 41 1054 1 41 1055 1 41 1057 1 41 1058 1 41 1062 1 41 1066 1 41 1069 1 41 1071 1 41 1073 1 41 1076 1 41 1079 1 41 1081 1 41 1083 1 41 1085 1 41 1087 1 41 1089 1 41 1090 1 41 1092 1 41 1093 1 41 1096 1 41 1099 1 41 1101 1 41 1103 1 41 1105 1 41 1107 1 41 1109 1 41 1110 1 41 1112 1 41 1113 1 41 1115 1 41 1117 1 41 1119 1 41 1120 1 41 1122 1 41 1123 1 41 1124 1 41 1126 1 41 1127 1 41 1128 1 41 1259 1 41 1264 1 41 1268 1 41 1271 1 41 1273 1 41 1275 1 41 1279 1 41 1283 1 41 1286 1 41 1288 1 41 1290 1 41 1293 1 41 1296 1 41 1298 1 41 1300 1 41 1302 1 41 1304 1 41 1306 1 41 1307 1 41 1309 1 41 1310 1 41 1314 1 41 1318 1 41 1321 1 41 1323 1 41 1325 1 41 1328 1 41 1331 1 41 1333 1 41 1335 1 41 1337 1 41 1339 1 41 1341 1 41 1342 1 41 1344 1 41 1345 1 41 1348 1 41 1351 1 41 1353 1 41 1355 1 41 1357 1 41 1359 1 41 1361 1 41 1362 1 41 1364 1 41 1365 1 41 1367 1 41 1369 1 41 1371 1 41 1372 1 41 1374 1 41 1375 1 41 1376 1 41 1378 1 41 1379 1 41 1380 1 41 1510 1 41 1514 1 41 1517 1 41 1519 1 41 1521 1 41 1524 1 41 1527 1 41 1529 1 41 1531 1 41 1533 1 41 1535 1 41 1537 1 41 1538 1 41 1540 1 41 1541 1 41 1544 1 41 1547 1 41 1549 1 41 1551 1 41 1553 1 41 1555 1 41 1557 1 41 1558 1 41 1560 1 41 1561 1 41 1563 1 41 1565 1 41 1567 1 41 1568 1 41 1570 1 41 1571 1 41 1572 1 41 1574 1 41 1575 1 41 1576 1 41 1579 1 41 1582 1 41 1584 1 41 1586 1 41 1588 1 41 1590 1 41 1592 1 41 1593 1 41 1595 1 41 1596 1 41 1598 1 41 1600 1 41 1602 1 41 1603 1 41 1605 1 41 1606 1 41 1607 1 41 1609 1 41 1610 1 41 1611 1 41 1613 1 41 1615 1 41 1617 1 41 1618 1 41 1620 1 41 1621 1 41 1622 1 41 1624 1 41 1625 1 41 1626 1 41 1627 1 41 1629 1 41 1630 1 41 1631 1 41 1632 1 42 8 1 42 15 1 42 21 1 42 26 1 42 30 1 42 33 1 42 35 1 42 36 1 42 127 1 42 133 1 42 138 1 42 142 1 42 145 1 42 147 1 42 148 1 42 154 1 42 159 1 42 163 1 42 166 1 42 168 1 42 169 1 42 174 1 42 178 1 42 181 1 42 183 1 42 184 1 42 188 1 42 191 1 42 193 1 42 194 1 42 197 1 42 199 1 42 200 1 42 202 1 42 203 1 42 204 1 42 337 1 42 343 1 42 348 1 42 352 1 42 355 1 42 357 1 42 358 1 42 364 1 42 369 1 42 373 1 42 376 1 42 378 1 42 379 1 42 384 1 42 388 1 42 391 1 42 393 1 42 394 1 42 398 1 42 401 1 42 403 1 42 404 1 42 407 1 42 409 1 42 410 1 42 412 1 42 413 1 42 414 1 42 546 1 42 551 1 42 555 1 42 558 1 42 560 1 42 561 1 42 566 1 42 570 1 42 573 1 42 575 1 42 576 1 42 580 1 42 583 1 42 585 1 42 586 1 42 589 1 42 591 1 42 592 1 42 594 1 42 595 1 42 596 1 42 601 1 42 605 1 42 608 1 42 610 1 42 611 1 42 615 1 42 618 1 42 620 1 42 621 1 42 624 1 42 626 1 42 627 1 42 629 1 42 630 1 42 631 1 42 635 1 42 638 1 42 640 1 42 641 1 42 644 1 42 646 1 42 647 1 42 649 1 42 650 1 42 651 1 42 654 1 42 656 1 42 657 1 42 659 1 42 660 1 42 661 1 42 663 1 42 664 1 42 665 1 42 666 1 42 799 1 42 805 1 42 810 1 42 814 1 42 817 1 42 819 1 42 820 1 42 826 1 42 831 1 42 835 1 42 838 1 42 840 1 42 841 1 42 846 1 42 850 1 42 853 1 42 855 1 42 856 1 42 860 1 42 863 1 42 865 1 42 866 1 42 869 1 42 871 1 42 872 1 42 874 1 42 875 1 42 876 1 42 1008 1 42 1013 1 42 1017 1 42 1020 1 42 1022 1 42 1023 1 42 1028 1 42 1032 1 42 1035 1 42 1037 1 42 1038 1 42 1042 1 42 1045 1 42 1047 1 42 1048 1 42 1051 1 42 1053 1 42 1054 1 42 1056 1 42 1057 1 42 1058 1 42 1063 1 42 1067 1 42 1070 1 42 1072 1 42 1073 1 42 1077 1 42 1080 1 42 1082 1 42 1083 1 42 1086 1 42 1088 1 42 1089 1 42 1091 1 42 1092 1 42 1093 1 42 1097 1 42 1100 1 42 1102 1 42 1103 1 42 1106 1 42 1108 1 42 1109 1 42 1111 1 42 1112 1 42 1113 1 42 1116 1 42 1118 1 42 1119 1 42 1121 1 42 1122 1 42 1123 1 42 1125 1 42 1126 1 42 1127 1 42 1128 1 42 1260 1 42 1265 1 42 1269 1 42 1272 1 42 1274 1 42 1275 1 42 1280 1 42 1284 1 42 1287 1 42 1289 1 42 1290 1 42 1294 1 42 1297 1 42 1299 1 42 1300 1 42 1303 1 42 1305 1 42 1306 1 42 1308 1 42 1309 1 42 1310 1 42 1315 1 42 1319 1 42 1322 1 42 1324 1 42 1325 1 42 1329 1 42 1332 1 42 1334 1 42 1335 1 42 1338 1 42 1340 1 42 1341 1 42 1343 1 42 1344 1 42 1345 1 42 1349 1 42 1352 1 42 1354 1 42 1355 1 42 1358 1 42 1360 1 42 1361 1 42 1363 1 42 1364 1 42 1365 1 42 1368 1 42 1370 1 42 1371 1 42 1373 1 42 1374 1 42 1375 1 42 1377 1 42 1378 1 42 1379 1 42 1380 1 42 1511 1 42 1515 1 42 1518 1 42 1520 1 42 1521 1 42 1525 1 42 1528 1 42 1530 1 42 1531 1 42 1534 1 42 1536 1 42 1537 1 42 1539 1 42 1540 1 42 1541 1 42 1545 1 42 1548 1 42 1550 1 42 1551 1 42 1554 1 42 1556 1 42 1557 1 42 1559 1 42 1560 1 42 1561 1 42 1564 1 42 1566 1 42 1567 1 42 1569 1 42 1570 1 42 1571 1 42 1573 1 42 1574 1 42 1575 1 42 1576 1 42 1580 1 42 1583 1 42 1585 1 42 1586 1 42 1589 1 42 1591 1 42 1592 1 42 1594 1 42 1595 1 42 1596 1 42 1599 1 42 1601 1 42 1602 1 42 1604 1 42 1605 1 42 1606 1 42 1608 1 42 1609 1 42 1610 1 42 1611 1 42 1614 1 42 1616 1 42 1617 1 42 1619 1 42 1620 1 42 1621 1 42 1623 1 42 1624 1 42 1625 1 42 1626 1 42 1628 1 42 1629 1 42 1630 1 42 1631 1 42 1632 1 43 1 1 43 37 1 43 38 1 43 39 1 43 40 1 43 41 1 43 42 1 43 43 1 43 121 1 43 122 1 43 123 1 43 124 1 43 125 1 43 126 1 43 127 1 43 205 1 43 206 1 43 207 1 43 208 1 43 209 1 43 210 1 43 211 1 43 212 1 43 213 1 43 214 1 43 215 1 43 216 1 43 217 1 43 218 1 43 219 1 43 220 1 43 221 1 43 222 1 43 223 1 43 224 1 43 225 1 43 331 1 43 332 1 43 333 1 43 334 1 43 335 1 43 336 1 43 337 1 43 415 1 43 416 1 43 417 1 43 418 1 43 419 1 43 420 1 43 421 1 43 422 1 43 423 1 43 424 1 43 425 1 43 426 1 43 427 1 43 428 1 43 429 1 43 430 1 43 431 1 43 432 1 43 433 1 43 434 1 43 435 1 43 541 1 43 542 1 43 543 1 43 544 1 43 545 1 43 546 1 43 547 1 43 548 1 43 549 1 43 550 1 43 551 1 43 552 1 43 553 1 43 554 1 43 555 1 43 556 1 43 557 1 43 558 1 43 559 1 43 560 1 43 561 1 43 667 1 43 668 1 43 669 1 43 670 1 43 671 1 43 672 1 43 673 1 43 674 1 43 675 1 43 676 1 43 677 1 43 678 1 43 679 1 43 680 1 43 681 1 43 682 1 43 683 1 43 684 1 43 685 1 43 686 1 43 687 1 43 688 1 43 689 1 43 690 1 43 691 1 43 692 1 43 693 1 43 694 1 43 695 1 43 696 1 43 697 1 43 698 1 43 699 1 43 700 1 43 701 1 43 793 1 43 794 1 43 795 1 43 796 1 43 797 1 43 798 1 43 799 1 43 877 1 43 878 1 43 879 1 43 880 1 43 881 1 43 882 1 43 883 1 43 884 1 43 885 1 43 886 1 43 887 1 43 888 1 43 889 1 43 890 1 43 891 1 43 892 1 43 893 1 43 894 1 43 895 1 43 896 1 43 897 1 43 1003 1 43 1004 1 43 1005 1 43 1006 1 43 1007 1 43 1008 1 43 1009 1 43 1010 1 43 1011 1 43 1012 1 43 1013 1 43 1014 1 43 1015 1 43 1016 1 43 1017 1 43 1018 1 43 1019 1 43 1020 1 43 1021 1 43 1022 1 43 1023 1 43 1129 1 43 1130 1 43 1131 1 43 1132 1 43 1133 1 43 1134 1 43 1135 1 43 1136 1 43 1137 1 43 1138 1 43 1139 1 43 1140 1 43 1141 1 43 1142 1 43 1143 1 43 1144 1 43 1145 1 43 1146 1 43 1147 1 43 1148 1 43 1149 1 43 1150 1 43 1151 1 43 1152 1 43 1153 1 43 1154 1 43 1155 1 43 1156 1 43 1157 1 43 1158 1 43 1159 1 43 1160 1 43 1161 1 43 1162 1 43 1163 1 43 1255 1 43 1256 1 43 1257 1 43 1258 1 43 1259 1 43 1260 1 43 1261 1 43 1262 1 43 1263 1 43 1264 1 43 1265 1 43 1266 1 43 1267 1 43 1268 1 43 1269 1 43 1270 1 43 1271 1 43 1272 1 43 1273 1 43 1274 1 43 1275 1 43 1381 1 43 1382 1 43 1383 1 43 1384 1 43 1385 1 43 1386 1 43 1387 1 43 1388 1 43 1389 1 43 1390 1 43 1391 1 43 1392 1 43 1393 1 43 1394 1 43 1395 1 43 1396 1 43 1397 1 43 1398 1 43 1399 1 43 1400 1 43 1401 1 43 1402 1 43 1403 1 43 1404 1 43 1405 1 43 1406 1 43 1407 1 43 1408 1 43 1409 1 43 1410 1 43 1411 1 43 1412 1 43 1413 1 43 1414 1 43 1415 1 43 1507 1 43 1508 1 43 1509 1 43 1510 1 43 1511 1 43 1512 1 43 1513 1 43 1514 1 43 1515 1 43 1516 1 43 1517 1 43 1518 1 43 1519 1 43 1520 1 43 1521 1 43 1522 1 43 1523 1 43 1524 1 43 1525 1 43 1526 1 43 1527 1 43 1528 1 43 1529 1 43 1530 1 43 1531 1 43 1532 1 43 1533 1 43 1534 1 43 1535 1 43 1536 1 43 1537 1 43 1538 1 43 1539 1 43 1540 1 43 1541 1 43 1633 1 43 1634 1 43 1635 1 43 1636 1 43 1637 1 43 1638 1 43 1639 1 43 1640 1 43 1641 1 43 1642 1 43 1643 1 43 1644 1 43 1645 1 43 1646 1 43 1647 1 43 1648 1 43 1649 1 43 1650 1 43 1651 1 43 1652 1 43 1653 1 43 1654 1 43 1655 1 43 1656 1 43 1657 1 43 1658 1 43 1659 1 43 1660 1 43 1661 1 43 1662 1 43 1663 1 43 1664 1 43 1665 1 43 1666 1 43 1667 1 44 2 1 44 37 1 44 44 1 44 45 1 44 46 1 44 47 1 44 48 1 44 49 1 44 121 1 44 128 1 44 129 1 44 130 1 44 131 1 44 132 1 44 133 1 44 205 1 44 206 1 44 207 1 44 208 1 44 209 1 44 210 1 44 226 1 44 227 1 44 228 1 44 229 1 44 230 1 44 231 1 44 232 1 44 233 1 44 234 1 44 235 1 44 236 1 44 237 1 44 238 1 44 239 1 44 240 1 44 331 1 44 338 1 44 339 1 44 340 1 44 341 1 44 342 1 44 343 1 44 415 1 44 416 1 44 417 1 44 418 1 44 419 1 44 420 1 44 436 1 44 437 1 44 438 1 44 439 1 44 440 1 44 441 1 44 442 1 44 443 1 44 444 1 44 445 1 44 446 1 44 447 1 44 448 1 44 449 1 44 450 1 44 541 1 44 542 1 44 543 1 44 544 1 44 545 1 44 546 1 44 562 1 44 563 1 44 564 1 44 565 1 44 566 1 44 567 1 44 568 1 44 569 1 44 570 1 44 571 1 44 572 1 44 573 1 44 574 1 44 575 1 44 576 1 44 667 1 44 668 1 44 669 1 44 670 1 44 671 1 44 672 1 44 673 1 44 674 1 44 675 1 44 676 1 44 677 1 44 678 1 44 679 1 44 680 1 44 681 1 44 702 1 44 703 1 44 704 1 44 705 1 44 706 1 44 707 1 44 708 1 44 709 1 44 710 1 44 711 1 44 712 1 44 713 1 44 714 1 44 715 1 44 716 1 44 717 1 44 718 1 44 719 1 44 720 1 44 721 1 44 793 1 44 800 1 44 801 1 44 802 1 44 803 1 44 804 1 44 805 1 44 877 1 44 878 1 44 879 1 44 880 1 44 881 1 44 882 1 44 898 1 44 899 1 44 900 1 44 901 1 44 902 1 44 903 1 44 904 1 44 905 1 44 906 1 44 907 1 44 908 1 44 909 1 44 910 1 44 911 1 44 912 1 44 1003 1 44 1004 1 44 1005 1 44 1006 1 44 1007 1 44 1008 1 44 1024 1 44 1025 1 44 1026 1 44 1027 1 44 1028 1 44 1029 1 44 1030 1 44 1031 1 44 1032 1 44 1033 1 44 1034 1 44 1035 1 44 1036 1 44 1037 1 44 1038 1 44 1129 1 44 1130 1 44 1131 1 44 1132 1 44 1133 1 44 1134 1 44 1135 1 44 1136 1 44 1137 1 44 1138 1 44 1139 1 44 1140 1 44 1141 1 44 1142 1 44 1143 1 44 1164 1 44 1165 1 44 1166 1 44 1167 1 44 1168 1 44 1169 1 44 1170 1 44 1171 1 44 1172 1 44 1173 1 44 1174 1 44 1175 1 44 1176 1 44 1177 1 44 1178 1 44 1179 1 44 1180 1 44 1181 1 44 1182 1 44 1183 1 44 1255 1 44 1256 1 44 1257 1 44 1258 1 44 1259 1 44 1260 1 44 1276 1 44 1277 1 44 1278 1 44 1279 1 44 1280 1 44 1281 1 44 1282 1 44 1283 1 44 1284 1 44 1285 1 44 1286 1 44 1287 1 44 1288 1 44 1289 1 44 1290 1 44 1381 1 44 1382 1 44 1383 1 44 1384 1 44 1385 1 44 1386 1 44 1387 1 44 1388 1 44 1389 1 44 1390 1 44 1391 1 44 1392 1 44 1393 1 44 1394 1 44 1395 1 44 1416 1 44 1417 1 44 1418 1 44 1419 1 44 1420 1 44 1421 1 44 1422 1 44 1423 1 44 1424 1 44 1425 1 44 1426 1 44 1427 1 44 1428 1 44 1429 1 44 1430 1 44 1431 1 44 1432 1 44 1433 1 44 1434 1 44 1435 1 44 1507 1 44 1508 1 44 1509 1 44 1510 1 44 1511 1 44 1512 1 44 1513 1 44 1514 1 44 1515 1 44 1516 1 44 1517 1 44 1518 1 44 1519 1 44 1520 1 44 1521 1 44 1542 1 44 1543 1 44 1544 1 44 1545 1 44 1546 1 44 1547 1 44 1548 1 44 1549 1 44 1550 1 44 1551 1 44 1552 1 44 1553 1 44 1554 1 44 1555 1 44 1556 1 44 1557 1 44 1558 1 44 1559 1 44 1560 1 44 1561 1 44 1633 1 44 1634 1 44 1635 1 44 1636 1 44 1637 1 44 1638 1 44 1639 1 44 1640 1 44 1641 1 44 1642 1 44 1643 1 44 1644 1 44 1645 1 44 1646 1 44 1647 1 44 1648 1 44 1649 1 44 1650 1 44 1651 1 44 1652 1 44 1668 1 44 1669 1 44 1670 1 44 1671 1 44 1672 1 44 1673 1 44 1674 1 44 1675 1 44 1676 1 44 1677 1 44 1678 1 44 1679 1 44 1680 1 44 1681 1 44 1682 1 45 3 1 45 38 1 45 44 1 45 50 1 45 51 1 45 52 1 45 53 1 45 54 1 45 122 1 45 128 1 45 134 1 45 135 1 45 136 1 45 137 1 45 138 1 45 205 1 45 211 1 45 212 1 45 213 1 45 214 1 45 215 1 45 226 1 45 227 1 45 228 1 45 229 1 45 230 1 45 241 1 45 242 1 45 243 1 45 244 1 45 245 1 45 246 1 45 247 1 45 248 1 45 249 1 45 250 1 45 332 1 45 338 1 45 344 1 45 345 1 45 346 1 45 347 1 45 348 1 45 415 1 45 421 1 45 422 1 45 423 1 45 424 1 45 425 1 45 436 1 45 437 1 45 438 1 45 439 1 45 440 1 45 451 1 45 452 1 45 453 1 45 454 1 45 455 1 45 456 1 45 457 1 45 458 1 45 459 1 45 460 1 45 541 1 45 547 1 45 548 1 45 549 1 45 550 1 45 551 1 45 562 1 45 563 1 45 564 1 45 565 1 45 566 1 45 577 1 45 578 1 45 579 1 45 580 1 45 581 1 45 582 1 45 583 1 45 584 1 45 585 1 45 586 1 45 667 1 45 668 1 45 669 1 45 670 1 45 671 1 45 682 1 45 683 1 45 684 1 45 685 1 45 686 1 45 687 1 45 688 1 45 689 1 45 690 1 45 691 1 45 702 1 45 703 1 45 704 1 45 705 1 45 706 1 45 707 1 45 708 1 45 709 1 45 710 1 45 711 1 45 722 1 45 723 1 45 724 1 45 725 1 45 726 1 45 727 1 45 728 1 45 729 1 45 730 1 45 731 1 45 794 1 45 800 1 45 806 1 45 807 1 45 808 1 45 809 1 45 810 1 45 877 1 45 883 1 45 884 1 45 885 1 45 886 1 45 887 1 45 898 1 45 899 1 45 900 1 45 901 1 45 902 1 45 913 1 45 914 1 45 915 1 45 916 1 45 917 1 45 918 1 45 919 1 45 920 1 45 921 1 45 922 1 45 1003 1 45 1009 1 45 1010 1 45 1011 1 45 1012 1 45 1013 1 45 1024 1 45 1025 1 45 1026 1 45 1027 1 45 1028 1 45 1039 1 45 1040 1 45 1041 1 45 1042 1 45 1043 1 45 1044 1 45 1045 1 45 1046 1 45 1047 1 45 1048 1 45 1129 1 45 1130 1 45 1131 1 45 1132 1 45 1133 1 45 1144 1 45 1145 1 45 1146 1 45 1147 1 45 1148 1 45 1149 1 45 1150 1 45 1151 1 45 1152 1 45 1153 1 45 1164 1 45 1165 1 45 1166 1 45 1167 1 45 1168 1 45 1169 1 45 1170 1 45 1171 1 45 1172 1 45 1173 1 45 1184 1 45 1185 1 45 1186 1 45 1187 1 45 1188 1 45 1189 1 45 1190 1 45 1191 1 45 1192 1 45 1193 1 45 1255 1 45 1261 1 45 1262 1 45 1263 1 45 1264 1 45 1265 1 45 1276 1 45 1277 1 45 1278 1 45 1279 1 45 1280 1 45 1291 1 45 1292 1 45 1293 1 45 1294 1 45 1295 1 45 1296 1 45 1297 1 45 1298 1 45 1299 1 45 1300 1 45 1381 1 45 1382 1 45 1383 1 45 1384 1 45 1385 1 45 1396 1 45 1397 1 45 1398 1 45 1399 1 45 1400 1 45 1401 1 45 1402 1 45 1403 1 45 1404 1 45 1405 1 45 1416 1 45 1417 1 45 1418 1 45 1419 1 45 1420 1 45 1421 1 45 1422 1 45 1423 1 45 1424 1 45 1425 1 45 1436 1 45 1437 1 45 1438 1 45 1439 1 45 1440 1 45 1441 1 45 1442 1 45 1443 1 45 1444 1 45 1445 1 45 1507 1 45 1508 1 45 1509 1 45 1510 1 45 1511 1 45 1522 1 45 1523 1 45 1524 1 45 1525 1 45 1526 1 45 1527 1 45 1528 1 45 1529 1 45 1530 1 45 1531 1 45 1542 1 45 1543 1 45 1544 1 45 1545 1 45 1546 1 45 1547 1 45 1548 1 45 1549 1 45 1550 1 45 1551 1 45 1562 1 45 1563 1 45 1564 1 45 1565 1 45 1566 1 45 1567 1 45 1568 1 45 1569 1 45 1570 1 45 1571 1 45 1633 1 45 1634 1 45 1635 1 45 1636 1 45 1637 1 45 1638 1 45 1639 1 45 1640 1 45 1641 1 45 1642 1 45 1653 1 45 1654 1 45 1655 1 45 1656 1 45 1657 1 45 1658 1 45 1659 1 45 1660 1 45 1661 1 45 1662 1 45 1668 1 45 1669 1 45 1670 1 45 1671 1 45 1672 1 45 1673 1 45 1674 1 45 1675 1 45 1676 1 45 1677 1 45 1683 1 45 1684 1 45 1685 1 45 1686 1 45 1687 1 46 4 1 46 39 1 46 45 1 46 50 1 46 55 1 46 56 1 46 57 1 46 58 1 46 123 1 46 129 1 46 134 1 46 139 1 46 140 1 46 141 1 46 142 1 46 206 1 46 211 1 46 216 1 46 217 1 46 218 1 46 219 1 46 226 1 46 231 1 46 232 1 46 233 1 46 234 1 46 241 1 46 242 1 46 243 1 46 244 1 46 251 1 46 252 1 46 253 1 46 254 1 46 255 1 46 256 1 46 333 1 46 339 1 46 344 1 46 349 1 46 350 1 46 351 1 46 352 1 46 416 1 46 421 1 46 426 1 46 427 1 46 428 1 46 429 1 46 436 1 46 441 1 46 442 1 46 443 1 46 444 1 46 451 1 46 452 1 46 453 1 46 454 1 46 461 1 46 462 1 46 463 1 46 464 1 46 465 1 46 466 1 46 542 1 46 547 1 46 552 1 46 553 1 46 554 1 46 555 1 46 562 1 46 567 1 46 568 1 46 569 1 46 570 1 46 577 1 46 578 1 46 579 1 46 580 1 46 587 1 46 588 1 46 589 1 46 590 1 46 591 1 46 592 1 46 667 1 46 672 1 46 673 1 46 674 1 46 675 1 46 682 1 46 683 1 46 684 1 46 685 1 46 692 1 46 693 1 46 694 1 46 695 1 46 696 1 46 697 1 46 702 1 46 703 1 46 704 1 46 705 1 46 712 1 46 713 1 46 714 1 46 715 1 46 716 1 46 717 1 46 722 1 46 723 1 46 724 1 46 725 1 46 726 1 46 727 1 46 732 1 46 733 1 46 734 1 46 735 1 46 795 1 46 801 1 46 806 1 46 811 1 46 812 1 46 813 1 46 814 1 46 878 1 46 883 1 46 888 1 46 889 1 46 890 1 46 891 1 46 898 1 46 903 1 46 904 1 46 905 1 46 906 1 46 913 1 46 914 1 46 915 1 46 916 1 46 923 1 46 924 1 46 925 1 46 926 1 46 927 1 46 928 1 46 1004 1 46 1009 1 46 1014 1 46 1015 1 46 1016 1 46 1017 1 46 1024 1 46 1029 1 46 1030 1 46 1031 1 46 1032 1 46 1039 1 46 1040 1 46 1041 1 46 1042 1 46 1049 1 46 1050 1 46 1051 1 46 1052 1 46 1053 1 46 1054 1 46 1129 1 46 1134 1 46 1135 1 46 1136 1 46 1137 1 46 1144 1 46 1145 1 46 1146 1 46 1147 1 46 1154 1 46 1155 1 46 1156 1 46 1157 1 46 1158 1 46 1159 1 46 1164 1 46 1165 1 46 1166 1 46 1167 1 46 1174 1 46 1175 1 46 1176 1 46 1177 1 46 1178 1 46 1179 1 46 1184 1 46 1185 1 46 1186 1 46 1187 1 46 1188 1 46 1189 1 46 1194 1 46 1195 1 46 1196 1 46 1197 1 46 1256 1 46 1261 1 46 1266 1 46 1267 1 46 1268 1 46 1269 1 46 1276 1 46 1281 1 46 1282 1 46 1283 1 46 1284 1 46 1291 1 46 1292 1 46 1293 1 46 1294 1 46 1301 1 46 1302 1 46 1303 1 46 1304 1 46 1305 1 46 1306 1 46 1381 1 46 1386 1 46 1387 1 46 1388 1 46 1389 1 46 1396 1 46 1397 1 46 1398 1 46 1399 1 46 1406 1 46 1407 1 46 1408 1 46 1409 1 46 1410 1 46 1411 1 46 1416 1 46 1417 1 46 1418 1 46 1419 1 46 1426 1 46 1427 1 46 1428 1 46 1429 1 46 1430 1 46 1431 1 46 1436 1 46 1437 1 46 1438 1 46 1439 1 46 1440 1 46 1441 1 46 1446 1 46 1447 1 46 1448 1 46 1449 1 46 1507 1 46 1512 1 46 1513 1 46 1514 1 46 1515 1 46 1522 1 46 1523 1 46 1524 1 46 1525 1 46 1532 1 46 1533 1 46 1534 1 46 1535 1 46 1536 1 46 1537 1 46 1542 1 46 1543 1 46 1544 1 46 1545 1 46 1552 1 46 1553 1 46 1554 1 46 1555 1 46 1556 1 46 1557 1 46 1562 1 46 1563 1 46 1564 1 46 1565 1 46 1566 1 46 1567 1 46 1572 1 46 1573 1 46 1574 1 46 1575 1 46 1633 1 46 1634 1 46 1635 1 46 1636 1 46 1643 1 46 1644 1 46 1645 1 46 1646 1 46 1647 1 46 1648 1 46 1653 1 46 1654 1 46 1655 1 46 1656 1 46 1657 1 46 1658 1 46 1663 1 46 1664 1 46 1665 1 46 1666 1 46 1668 1 46 1669 1 46 1670 1 46 1671 1 46 1672 1 46 1673 1 46 1678 1 46 1679 1 46 1680 1 46 1681 1 46 1683 1 46 1684 1 46 1685 1 46 1686 1 46 1688 1 47 5 1 47 40 1 47 46 1 47 51 1 47 55 1 47 59 1 47 60 1 47 61 1 47 124 1 47 130 1 47 135 1 47 139 1 47 143 1 47 144 1 47 145 1 47 207 1 47 212 1 47 216 1 47 220 1 47 221 1 47 222 1 47 227 1 47 231 1 47 235 1 47 236 1 47 237 1 47 241 1 47 245 1 47 246 1 47 247 1 47 251 1 47 252 1 47 253 1 47 257 1 47 258 1 47 259 1 47 334 1 47 340 1 47 345 1 47 349 1 47 353 1 47 354 1 47 355 1 47 417 1 47 422 1 47 426 1 47 430 1 47 431 1 47 432 1 47 437 1 47 441 1 47 445 1 47 446 1 47 447 1 47 451 1 47 455 1 47 456 1 47 457 1 47 461 1 47 462 1 47 463 1 47 467 1 47 468 1 47 469 1 47 543 1 47 548 1 47 552 1 47 556 1 47 557 1 47 558 1 47 563 1 47 567 1 47 571 1 47 572 1 47 573 1 47 577 1 47 581 1 47 582 1 47 583 1 47 587 1 47 588 1 47 589 1 47 593 1 47 594 1 47 595 1 47 668 1 47 672 1 47 676 1 47 677 1 47 678 1 47 682 1 47 686 1 47 687 1 47 688 1 47 692 1 47 693 1 47 694 1 47 698 1 47 699 1 47 700 1 47 702 1 47 706 1 47 707 1 47 708 1 47 712 1 47 713 1 47 714 1 47 718 1 47 719 1 47 720 1 47 722 1 47 723 1 47 724 1 47 728 1 47 729 1 47 730 1 47 732 1 47 733 1 47 734 1 47 736 1 47 796 1 47 802 1 47 807 1 47 811 1 47 815 1 47 816 1 47 817 1 47 879 1 47 884 1 47 888 1 47 892 1 47 893 1 47 894 1 47 899 1 47 903 1 47 907 1 47 908 1 47 909 1 47 913 1 47 917 1 47 918 1 47 919 1 47 923 1 47 924 1 47 925 1 47 929 1 47 930 1 47 931 1 47 1005 1 47 1010 1 47 1014 1 47 1018 1 47 1019 1 47 1020 1 47 1025 1 47 1029 1 47 1033 1 47 1034 1 47 1035 1 47 1039 1 47 1043 1 47 1044 1 47 1045 1 47 1049 1 47 1050 1 47 1051 1 47 1055 1 47 1056 1 47 1057 1 47 1130 1 47 1134 1 47 1138 1 47 1139 1 47 1140 1 47 1144 1 47 1148 1 47 1149 1 47 1150 1 47 1154 1 47 1155 1 47 1156 1 47 1160 1 47 1161 1 47 1162 1 47 1164 1 47 1168 1 47 1169 1 47 1170 1 47 1174 1 47 1175 1 47 1176 1 47 1180 1 47 1181 1 47 1182 1 47 1184 1 47 1185 1 47 1186 1 47 1190 1 47 1191 1 47 1192 1 47 1194 1 47 1195 1 47 1196 1 47 1198 1 47 1257 1 47 1262 1 47 1266 1 47 1270 1 47 1271 1 47 1272 1 47 1277 1 47 1281 1 47 1285 1 47 1286 1 47 1287 1 47 1291 1 47 1295 1 47 1296 1 47 1297 1 47 1301 1 47 1302 1 47 1303 1 47 1307 1 47 1308 1 47 1309 1 47 1382 1 47 1386 1 47 1390 1 47 1391 1 47 1392 1 47 1396 1 47 1400 1 47 1401 1 47 1402 1 47 1406 1 47 1407 1 47 1408 1 47 1412 1 47 1413 1 47 1414 1 47 1416 1 47 1420 1 47 1421 1 47 1422 1 47 1426 1 47 1427 1 47 1428 1 47 1432 1 47 1433 1 47 1434 1 47 1436 1 47 1437 1 47 1438 1 47 1442 1 47 1443 1 47 1444 1 47 1446 1 47 1447 1 47 1448 1 47 1450 1 47 1508 1 47 1512 1 47 1516 1 47 1517 1 47 1518 1 47 1522 1 47 1526 1 47 1527 1 47 1528 1 47 1532 1 47 1533 1 47 1534 1 47 1538 1 47 1539 1 47 1540 1 47 1542 1 47 1546 1 47 1547 1 47 1548 1 47 1552 1 47 1553 1 47 1554 1 47 1558 1 47 1559 1 47 1560 1 47 1562 1 47 1563 1 47 1564 1 47 1568 1 47 1569 1 47 1570 1 47 1572 1 47 1573 1 47 1574 1 47 1576 1 47 1633 1 47 1637 1 47 1638 1 47 1639 1 47 1643 1 47 1644 1 47 1645 1 47 1649 1 47 1650 1 47 1651 1 47 1653 1 47 1654 1 47 1655 1 47 1659 1 47 1660 1 47 1661 1 47 1663 1 47 1664 1 47 1665 1 47 1667 1 47 1668 1 47 1669 1 47 1670 1 47 1674 1 47 1675 1 47 1676 1 47 1678 1 47 1679 1 47 1680 1 47 1682 1 47 1683 1 47 1684 1 47 1685 1 47 1687 1 47 1688 1 48 6 1 48 41 1 48 47 1 48 52 1 48 56 1 48 59 1 48 62 1 48 63 1 48 125 1 48 131 1 48 136 1 48 140 1 48 143 1 48 146 1 48 147 1 48 208 1 48 213 1 48 217 1 48 220 1 48 223 1 48 224 1 48 228 1 48 232 1 48 235 1 48 238 1 48 239 1 48 242 1 48 245 1 48 248 1 48 249 1 48 251 1 48 254 1 48 255 1 48 257 1 48 258 1 48 260 1 48 335 1 48 341 1 48 346 1 48 350 1 48 353 1 48 356 1 48 357 1 48 418 1 48 423 1 48 427 1 48 430 1 48 433 1 48 434 1 48 438 1 48 442 1 48 445 1 48 448 1 48 449 1 48 452 1 48 455 1 48 458 1 48 459 1 48 461 1 48 464 1 48 465 1 48 467 1 48 468 1 48 470 1 48 544 1 48 549 1 48 553 1 48 556 1 48 559 1 48 560 1 48 564 1 48 568 1 48 571 1 48 574 1 48 575 1 48 578 1 48 581 1 48 584 1 48 585 1 48 587 1 48 590 1 48 591 1 48 593 1 48 594 1 48 596 1 48 669 1 48 673 1 48 676 1 48 679 1 48 680 1 48 683 1 48 686 1 48 689 1 48 690 1 48 692 1 48 695 1 48 696 1 48 698 1 48 699 1 48 701 1 48 703 1 48 706 1 48 709 1 48 710 1 48 712 1 48 715 1 48 716 1 48 718 1 48 719 1 48 721 1 48 722 1 48 725 1 48 726 1 48 728 1 48 729 1 48 731 1 48 732 1 48 733 1 48 735 1 48 736 1 48 797 1 48 803 1 48 808 1 48 812 1 48 815 1 48 818 1 48 819 1 48 880 1 48 885 1 48 889 1 48 892 1 48 895 1 48 896 1 48 900 1 48 904 1 48 907 1 48 910 1 48 911 1 48 914 1 48 917 1 48 920 1 48 921 1 48 923 1 48 926 1 48 927 1 48 929 1 48 930 1 48 932 1 48 1006 1 48 1011 1 48 1015 1 48 1018 1 48 1021 1 48 1022 1 48 1026 1 48 1030 1 48 1033 1 48 1036 1 48 1037 1 48 1040 1 48 1043 1 48 1046 1 48 1047 1 48 1049 1 48 1052 1 48 1053 1 48 1055 1 48 1056 1 48 1058 1 48 1131 1 48 1135 1 48 1138 1 48 1141 1 48 1142 1 48 1145 1 48 1148 1 48 1151 1 48 1152 1 48 1154 1 48 1157 1 48 1158 1 48 1160 1 48 1161 1 48 1163 1 48 1165 1 48 1168 1 48 1171 1 48 1172 1 48 1174 1 48 1177 1 48 1178 1 48 1180 1 48 1181 1 48 1183 1 48 1184 1 48 1187 1 48 1188 1 48 1190 1 48 1191 1 48 1193 1 48 1194 1 48 1195 1 48 1197 1 48 1198 1 48 1258 1 48 1263 1 48 1267 1 48 1270 1 48 1273 1 48 1274 1 48 1278 1 48 1282 1 48 1285 1 48 1288 1 48 1289 1 48 1292 1 48 1295 1 48 1298 1 48 1299 1 48 1301 1 48 1304 1 48 1305 1 48 1307 1 48 1308 1 48 1310 1 48 1383 1 48 1387 1 48 1390 1 48 1393 1 48 1394 1 48 1397 1 48 1400 1 48 1403 1 48 1404 1 48 1406 1 48 1409 1 48 1410 1 48 1412 1 48 1413 1 48 1415 1 48 1417 1 48 1420 1 48 1423 1 48 1424 1 48 1426 1 48 1429 1 48 1430 1 48 1432 1 48 1433 1 48 1435 1 48 1436 1 48 1439 1 48 1440 1 48 1442 1 48 1443 1 48 1445 1 48 1446 1 48 1447 1 48 1449 1 48 1450 1 48 1509 1 48 1513 1 48 1516 1 48 1519 1 48 1520 1 48 1523 1 48 1526 1 48 1529 1 48 1530 1 48 1532 1 48 1535 1 48 1536 1 48 1538 1 48 1539 1 48 1541 1 48 1543 1 48 1546 1 48 1549 1 48 1550 1 48 1552 1 48 1555 1 48 1556 1 48 1558 1 48 1559 1 48 1561 1 48 1562 1 48 1565 1 48 1566 1 48 1568 1 48 1569 1 48 1571 1 48 1572 1 48 1573 1 48 1575 1 48 1576 1 48 1634 1 48 1637 1 48 1640 1 48 1641 1 48 1643 1 48 1646 1 48 1647 1 48 1649 1 48 1650 1 48 1652 1 48 1653 1 48 1656 1 48 1657 1 48 1659 1 48 1660 1 48 1662 1 48 1663 1 48 1664 1 48 1666 1 48 1667 1 48 1668 1 48 1671 1 48 1672 1 48 1674 1 48 1675 1 48 1677 1 48 1678 1 48 1679 1 48 1681 1 48 1682 1 48 1683 1 48 1684 1 48 1686 1 48 1687 1 48 1688 1 49 7 1 49 42 1 49 48 1 49 53 1 49 57 1 49 60 1 49 62 1 49 64 1 49 126 1 49 132 1 49 137 1 49 141 1 49 144 1 49 146 1 49 148 1 49 209 1 49 214 1 49 218 1 49 221 1 49 223 1 49 225 1 49 229 1 49 233 1 49 236 1 49 238 1 49 240 1 49 243 1 49 246 1 49 248 1 49 250 1 49 252 1 49 254 1 49 256 1 49 257 1 49 259 1 49 260 1 49 336 1 49 342 1 49 347 1 49 351 1 49 354 1 49 356 1 49 358 1 49 419 1 49 424 1 49 428 1 49 431 1 49 433 1 49 435 1 49 439 1 49 443 1 49 446 1 49 448 1 49 450 1 49 453 1 49 456 1 49 458 1 49 460 1 49 462 1 49 464 1 49 466 1 49 467 1 49 469 1 49 470 1 49 545 1 49 550 1 49 554 1 49 557 1 49 559 1 49 561 1 49 565 1 49 569 1 49 572 1 49 574 1 49 576 1 49 579 1 49 582 1 49 584 1 49 586 1 49 588 1 49 590 1 49 592 1 49 593 1 49 595 1 49 596 1 49 670 1 49 674 1 49 677 1 49 679 1 49 681 1 49 684 1 49 687 1 49 689 1 49 691 1 49 693 1 49 695 1 49 697 1 49 698 1 49 700 1 49 701 1 49 704 1 49 707 1 49 709 1 49 711 1 49 713 1 49 715 1 49 717 1 49 718 1 49 720 1 49 721 1 49 723 1 49 725 1 49 727 1 49 728 1 49 730 1 49 731 1 49 732 1 49 734 1 49 735 1 49 736 1 49 798 1 49 804 1 49 809 1 49 813 1 49 816 1 49 818 1 49 820 1 49 881 1 49 886 1 49 890 1 49 893 1 49 895 1 49 897 1 49 901 1 49 905 1 49 908 1 49 910 1 49 912 1 49 915 1 49 918 1 49 920 1 49 922 1 49 924 1 49 926 1 49 928 1 49 929 1 49 931 1 49 932 1 49 1007 1 49 1012 1 49 1016 1 49 1019 1 49 1021 1 49 1023 1 49 1027 1 49 1031 1 49 1034 1 49 1036 1 49 1038 1 49 1041 1 49 1044 1 49 1046 1 49 1048 1 49 1050 1 49 1052 1 49 1054 1 49 1055 1 49 1057 1 49 1058 1 49 1132 1 49 1136 1 49 1139 1 49 1141 1 49 1143 1 49 1146 1 49 1149 1 49 1151 1 49 1153 1 49 1155 1 49 1157 1 49 1159 1 49 1160 1 49 1162 1 49 1163 1 49 1166 1 49 1169 1 49 1171 1 49 1173 1 49 1175 1 49 1177 1 49 1179 1 49 1180 1 49 1182 1 49 1183 1 49 1185 1 49 1187 1 49 1189 1 49 1190 1 49 1192 1 49 1193 1 49 1194 1 49 1196 1 49 1197 1 49 1198 1 49 1259 1 49 1264 1 49 1268 1 49 1271 1 49 1273 1 49 1275 1 49 1279 1 49 1283 1 49 1286 1 49 1288 1 49 1290 1 49 1293 1 49 1296 1 49 1298 1 49 1300 1 49 1302 1 49 1304 1 49 1306 1 49 1307 1 49 1309 1 49 1310 1 49 1384 1 49 1388 1 49 1391 1 49 1393 1 49 1395 1 49 1398 1 49 1401 1 49 1403 1 49 1405 1 49 1407 1 49 1409 1 49 1411 1 49 1412 1 49 1414 1 49 1415 1 49 1418 1 49 1421 1 49 1423 1 49 1425 1 49 1427 1 49 1429 1 49 1431 1 49 1432 1 49 1434 1 49 1435 1 49 1437 1 49 1439 1 49 1441 1 49 1442 1 49 1444 1 49 1445 1 49 1446 1 49 1448 1 49 1449 1 49 1450 1 49 1510 1 49 1514 1 49 1517 1 49 1519 1 49 1521 1 49 1524 1 49 1527 1 49 1529 1 49 1531 1 49 1533 1 49 1535 1 49 1537 1 49 1538 1 49 1540 1 49 1541 1 49 1544 1 49 1547 1 49 1549 1 49 1551 1 49 1553 1 49 1555 1 49 1557 1 49 1558 1 49 1560 1 49 1561 1 49 1563 1 49 1565 1 49 1567 1 49 1568 1 49 1570 1 49 1571 1 49 1572 1 49 1574 1 49 1575 1 49 1576 1 49 1635 1 49 1638 1 49 1640 1 49 1642 1 49 1644 1 49 1646 1 49 1648 1 49 1649 1 49 1651 1 49 1652 1 49 1654 1 49 1656 1 49 1658 1 49 1659 1 49 1661 1 49 1662 1 49 1663 1 49 1665 1 49 1666 1 49 1667 1 49 1669 1 49 1671 1 49 1673 1 49 1674 1 49 1676 1 49 1677 1 49 1678 1 49 1680 1 49 1681 1 49 1682 1 49 1683 1 49 1685 1 49 1686 1 49 1687 1 49 1688 1 50 8 1 50 43 1 50 49 1 50 54 1 50 58 1 50 61 1 50 63 1 50 64 1 50 127 1 50 133 1 50 138 1 50 142 1 50 145 1 50 147 1 50 148 1 50 210 1 50 215 1 50 219 1 50 222 1 50 224 1 50 225 1 50 230 1 50 234 1 50 237 1 50 239 1 50 240 1 50 244 1 50 247 1 50 249 1 50 250 1 50 253 1 50 255 1 50 256 1 50 258 1 50 259 1 50 260 1 50 337 1 50 343 1 50 348 1 50 352 1 50 355 1 50 357 1 50 358 1 50 420 1 50 425 1 50 429 1 50 432 1 50 434 1 50 435 1 50 440 1 50 444 1 50 447 1 50 449 1 50 450 1 50 454 1 50 457 1 50 459 1 50 460 1 50 463 1 50 465 1 50 466 1 50 468 1 50 469 1 50 470 1 50 546 1 50 551 1 50 555 1 50 558 1 50 560 1 50 561 1 50 566 1 50 570 1 50 573 1 50 575 1 50 576 1 50 580 1 50 583 1 50 585 1 50 586 1 50 589 1 50 591 1 50 592 1 50 594 1 50 595 1 50 596 1 50 671 1 50 675 1 50 678 1 50 680 1 50 681 1 50 685 1 50 688 1 50 690 1 50 691 1 50 694 1 50 696 1 50 697 1 50 699 1 50 700 1 50 701 1 50 705 1 50 708 1 50 710 1 50 711 1 50 714 1 50 716 1 50 717 1 50 719 1 50 720 1 50 721 1 50 724 1 50 726 1 50 727 1 50 729 1 50 730 1 50 731 1 50 733 1 50 734 1 50 735 1 50 736 1 50 799 1 50 805 1 50 810 1 50 814 1 50 817 1 50 819 1 50 820 1 50 882 1 50 887 1 50 891 1 50 894 1 50 896 1 50 897 1 50 902 1 50 906 1 50 909 1 50 911 1 50 912 1 50 916 1 50 919 1 50 921 1 50 922 1 50 925 1 50 927 1 50 928 1 50 930 1 50 931 1 50 932 1 50 1008 1 50 1013 1 50 1017 1 50 1020 1 50 1022 1 50 1023 1 50 1028 1 50 1032 1 50 1035 1 50 1037 1 50 1038 1 50 1042 1 50 1045 1 50 1047 1 50 1048 1 50 1051 1 50 1053 1 50 1054 1 50 1056 1 50 1057 1 50 1058 1 50 1133 1 50 1137 1 50 1140 1 50 1142 1 50 1143 1 50 1147 1 50 1150 1 50 1152 1 50 1153 1 50 1156 1 50 1158 1 50 1159 1 50 1161 1 50 1162 1 50 1163 1 50 1167 1 50 1170 1 50 1172 1 50 1173 1 50 1176 1 50 1178 1 50 1179 1 50 1181 1 50 1182 1 50 1183 1 50 1186 1 50 1188 1 50 1189 1 50 1191 1 50 1192 1 50 1193 1 50 1195 1 50 1196 1 50 1197 1 50 1198 1 50 1260 1 50 1265 1 50 1269 1 50 1272 1 50 1274 1 50 1275 1 50 1280 1 50 1284 1 50 1287 1 50 1289 1 50 1290 1 50 1294 1 50 1297 1 50 1299 1 50 1300 1 50 1303 1 50 1305 1 50 1306 1 50 1308 1 50 1309 1 50 1310 1 50 1385 1 50 1389 1 50 1392 1 50 1394 1 50 1395 1 50 1399 1 50 1402 1 50 1404 1 50 1405 1 50 1408 1 50 1410 1 50 1411 1 50 1413 1 50 1414 1 50 1415 1 50 1419 1 50 1422 1 50 1424 1 50 1425 1 50 1428 1 50 1430 1 50 1431 1 50 1433 1 50 1434 1 50 1435 1 50 1438 1 50 1440 1 50 1441 1 50 1443 1 50 1444 1 50 1445 1 50 1447 1 50 1448 1 50 1449 1 50 1450 1 50 1511 1 50 1515 1 50 1518 1 50 1520 1 50 1521 1 50 1525 1 50 1528 1 50 1530 1 50 1531 1 50 1534 1 50 1536 1 50 1537 1 50 1539 1 50 1540 1 50 1541 1 50 1545 1 50 1548 1 50 1550 1 50 1551 1 50 1554 1 50 1556 1 50 1557 1 50 1559 1 50 1560 1 50 1561 1 50 1564 1 50 1566 1 50 1567 1 50 1569 1 50 1570 1 50 1571 1 50 1573 1 50 1574 1 50 1575 1 50 1576 1 50 1636 1 50 1639 1 50 1641 1 50 1642 1 50 1645 1 50 1647 1 50 1648 1 50 1650 1 50 1651 1 50 1652 1 50 1655 1 50 1657 1 50 1658 1 50 1660 1 50 1661 1 50 1662 1 50 1664 1 50 1665 1 50 1666 1 50 1667 1 50 1670 1 50 1672 1 50 1673 1 50 1675 1 50 1676 1 50 1677 1 50 1679 1 50 1680 1 50 1681 1 50 1682 1 50 1684 1 50 1685 1 50 1686 1 50 1687 1 50 1688 1 51 9 1 51 37 1 51 65 1 51 66 1 51 67 1 51 68 1 51 69 1 51 70 1 51 121 1 51 149 1 51 150 1 51 151 1 51 152 1 51 153 1 51 154 1 51 205 1 51 206 1 51 207 1 51 208 1 51 209 1 51 210 1 51 261 1 51 262 1 51 263 1 51 264 1 51 265 1 51 266 1 51 267 1 51 268 1 51 269 1 51 270 1 51 271 1 51 272 1 51 273 1 51 274 1 51 275 1 51 331 1 51 359 1 51 360 1 51 361 1 51 362 1 51 363 1 51 364 1 51 415 1 51 416 1 51 417 1 51 418 1 51 419 1 51 420 1 51 471 1 51 472 1 51 473 1 51 474 1 51 475 1 51 476 1 51 477 1 51 478 1 51 479 1 51 480 1 51 481 1 51 482 1 51 483 1 51 484 1 51 485 1 51 541 1 51 542 1 51 543 1 51 544 1 51 545 1 51 546 1 51 597 1 51 598 1 51 599 1 51 600 1 51 601 1 51 602 1 51 603 1 51 604 1 51 605 1 51 606 1 51 607 1 51 608 1 51 609 1 51 610 1 51 611 1 51 667 1 51 668 1 51 669 1 51 670 1 51 671 1 51 672 1 51 673 1 51 674 1 51 675 1 51 676 1 51 677 1 51 678 1 51 679 1 51 680 1 51 681 1 51 737 1 51 738 1 51 739 1 51 740 1 51 741 1 51 742 1 51 743 1 51 744 1 51 745 1 51 746 1 51 747 1 51 748 1 51 749 1 51 750 1 51 751 1 51 752 1 51 753 1 51 754 1 51 755 1 51 756 1 51 793 1 51 821 1 51 822 1 51 823 1 51 824 1 51 825 1 51 826 1 51 877 1 51 878 1 51 879 1 51 880 1 51 881 1 51 882 1 51 933 1 51 934 1 51 935 1 51 936 1 51 937 1 51 938 1 51 939 1 51 940 1 51 941 1 51 942 1 51 943 1 51 944 1 51 945 1 51 946 1 51 947 1 51 1003 1 51 1004 1 51 1005 1 51 1006 1 51 1007 1 51 1008 1 51 1059 1 51 1060 1 51 1061 1 51 1062 1 51 1063 1 51 1064 1 51 1065 1 51 1066 1 51 1067 1 51 1068 1 51 1069 1 51 1070 1 51 1071 1 51 1072 1 51 1073 1 51 1129 1 51 1130 1 51 1131 1 51 1132 1 51 1133 1 51 1134 1 51 1135 1 51 1136 1 51 1137 1 51 1138 1 51 1139 1 51 1140 1 51 1141 1 51 1142 1 51 1143 1 51 1199 1 51 1200 1 51 1201 1 51 1202 1 51 1203 1 51 1204 1 51 1205 1 51 1206 1 51 1207 1 51 1208 1 51 1209 1 51 1210 1 51 1211 1 51 1212 1 51 1213 1 51 1214 1 51 1215 1 51 1216 1 51 1217 1 51 1218 1 51 1255 1 51 1256 1 51 1257 1 51 1258 1 51 1259 1 51 1260 1 51 1311 1 51 1312 1 51 1313 1 51 1314 1 51 1315 1 51 1316 1 51 1317 1 51 1318 1 51 1319 1 51 1320 1 51 1321 1 51 1322 1 51 1323 1 51 1324 1 51 1325 1 51 1381 1 51 1382 1 51 1383 1 51 1384 1 51 1385 1 51 1386 1 51 1387 1 51 1388 1 51 1389 1 51 1390 1 51 1391 1 51 1392 1 51 1393 1 51 1394 1 51 1395 1 51 1451 1 51 1452 1 51 1453 1 51 1454 1 51 1455 1 51 1456 1 51 1457 1 51 1458 1 51 1459 1 51 1460 1 51 1461 1 51 1462 1 51 1463 1 51 1464 1 51 1465 1 51 1466 1 51 1467 1 51 1468 1 51 1469 1 51 1470 1 51 1507 1 51 1508 1 51 1509 1 51 1510 1 51 1511 1 51 1512 1 51 1513 1 51 1514 1 51 1515 1 51 1516 1 51 1517 1 51 1518 1 51 1519 1 51 1520 1 51 1521 1 51 1577 1 51 1578 1 51 1579 1 51 1580 1 51 1581 1 51 1582 1 51 1583 1 51 1584 1 51 1585 1 51 1586 1 51 1587 1 51 1588 1 51 1589 1 51 1590 1 51 1591 1 51 1592 1 51 1593 1 51 1594 1 51 1595 1 51 1596 1 51 1633 1 51 1634 1 51 1635 1 51 1636 1 51 1637 1 51 1638 1 51 1639 1 51 1640 1 51 1641 1 51 1642 1 51 1643 1 51 1644 1 51 1645 1 51 1646 1 51 1647 1 51 1648 1 51 1649 1 51 1650 1 51 1651 1 51 1652 1 51 1689 1 51 1690 1 51 1691 1 51 1692 1 51 1693 1 51 1694 1 51 1695 1 51 1696 1 51 1697 1 51 1698 1 51 1699 1 51 1700 1 51 1701 1 51 1702 1 51 1703 1 52 10 1 52 38 1 52 65 1 52 71 1 52 72 1 52 73 1 52 74 1 52 75 1 52 122 1 52 149 1 52 155 1 52 156 1 52 157 1 52 158 1 52 159 1 52 205 1 52 211 1 52 212 1 52 213 1 52 214 1 52 215 1 52 261 1 52 262 1 52 263 1 52 264 1 52 265 1 52 276 1 52 277 1 52 278 1 52 279 1 52 280 1 52 281 1 52 282 1 52 283 1 52 284 1 52 285 1 52 332 1 52 359 1 52 365 1 52 366 1 52 367 1 52 368 1 52 369 1 52 415 1 52 421 1 52 422 1 52 423 1 52 424 1 52 425 1 52 471 1 52 472 1 52 473 1 52 474 1 52 475 1 52 486 1 52 487 1 52 488 1 52 489 1 52 490 1 52 491 1 52 492 1 52 493 1 52 494 1 52 495 1 52 541 1 52 547 1 52 548 1 52 549 1 52 550 1 52 551 1 52 597 1 52 598 1 52 599 1 52 600 1 52 601 1 52 612 1 52 613 1 52 614 1 52 615 1 52 616 1 52 617 1 52 618 1 52 619 1 52 620 1 52 621 1 52 667 1 52 668 1 52 669 1 52 670 1 52 671 1 52 682 1 52 683 1 52 684 1 52 685 1 52 686 1 52 687 1 52 688 1 52 689 1 52 690 1 52 691 1 52 737 1 52 738 1 52 739 1 52 740 1 52 741 1 52 742 1 52 743 1 52 744 1 52 745 1 52 746 1 52 757 1 52 758 1 52 759 1 52 760 1 52 761 1 52 762 1 52 763 1 52 764 1 52 765 1 52 766 1 52 794 1 52 821 1 52 827 1 52 828 1 52 829 1 52 830 1 52 831 1 52 877 1 52 883 1 52 884 1 52 885 1 52 886 1 52 887 1 52 933 1 52 934 1 52 935 1 52 936 1 52 937 1 52 948 1 52 949 1 52 950 1 52 951 1 52 952 1 52 953 1 52 954 1 52 955 1 52 956 1 52 957 1 52 1003 1 52 1009 1 52 1010 1 52 1011 1 52 1012 1 52 1013 1 52 1059 1 52 1060 1 52 1061 1 52 1062 1 52 1063 1 52 1074 1 52 1075 1 52 1076 1 52 1077 1 52 1078 1 52 1079 1 52 1080 1 52 1081 1 52 1082 1 52 1083 1 52 1129 1 52 1130 1 52 1131 1 52 1132 1 52 1133 1 52 1144 1 52 1145 1 52 1146 1 52 1147 1 52 1148 1 52 1149 1 52 1150 1 52 1151 1 52 1152 1 52 1153 1 52 1199 1 52 1200 1 52 1201 1 52 1202 1 52 1203 1 52 1204 1 52 1205 1 52 1206 1 52 1207 1 52 1208 1 52 1219 1 52 1220 1 52 1221 1 52 1222 1 52 1223 1 52 1224 1 52 1225 1 52 1226 1 52 1227 1 52 1228 1 52 1255 1 52 1261 1 52 1262 1 52 1263 1 52 1264 1 52 1265 1 52 1311 1 52 1312 1 52 1313 1 52 1314 1 52 1315 1 52 1326 1 52 1327 1 52 1328 1 52 1329 1 52 1330 1 52 1331 1 52 1332 1 52 1333 1 52 1334 1 52 1335 1 52 1381 1 52 1382 1 52 1383 1 52 1384 1 52 1385 1 52 1396 1 52 1397 1 52 1398 1 52 1399 1 52 1400 1 52 1401 1 52 1402 1 52 1403 1 52 1404 1 52 1405 1 52 1451 1 52 1452 1 52 1453 1 52 1454 1 52 1455 1 52 1456 1 52 1457 1 52 1458 1 52 1459 1 52 1460 1 52 1471 1 52 1472 1 52 1473 1 52 1474 1 52 1475 1 52 1476 1 52 1477 1 52 1478 1 52 1479 1 52 1480 1 52 1507 1 52 1508 1 52 1509 1 52 1510 1 52 1511 1 52 1522 1 52 1523 1 52 1524 1 52 1525 1 52 1526 1 52 1527 1 52 1528 1 52 1529 1 52 1530 1 52 1531 1 52 1577 1 52 1578 1 52 1579 1 52 1580 1 52 1581 1 52 1582 1 52 1583 1 52 1584 1 52 1585 1 52 1586 1 52 1597 1 52 1598 1 52 1599 1 52 1600 1 52 1601 1 52 1602 1 52 1603 1 52 1604 1 52 1605 1 52 1606 1 52 1633 1 52 1634 1 52 1635 1 52 1636 1 52 1637 1 52 1638 1 52 1639 1 52 1640 1 52 1641 1 52 1642 1 52 1653 1 52 1654 1 52 1655 1 52 1656 1 52 1657 1 52 1658 1 52 1659 1 52 1660 1 52 1661 1 52 1662 1 52 1689 1 52 1690 1 52 1691 1 52 1692 1 52 1693 1 52 1694 1 52 1695 1 52 1696 1 52 1697 1 52 1698 1 52 1704 1 52 1705 1 52 1706 1 52 1707 1 52 1708 1 53 11 1 53 39 1 53 66 1 53 71 1 53 76 1 53 77 1 53 78 1 53 79 1 53 123 1 53 150 1 53 155 1 53 160 1 53 161 1 53 162 1 53 163 1 53 206 1 53 211 1 53 216 1 53 217 1 53 218 1 53 219 1 53 261 1 53 266 1 53 267 1 53 268 1 53 269 1 53 276 1 53 277 1 53 278 1 53 279 1 53 286 1 53 287 1 53 288 1 53 289 1 53 290 1 53 291 1 53 333 1 53 360 1 53 365 1 53 370 1 53 371 1 53 372 1 53 373 1 53 416 1 53 421 1 53 426 1 53 427 1 53 428 1 53 429 1 53 471 1 53 476 1 53 477 1 53 478 1 53 479 1 53 486 1 53 487 1 53 488 1 53 489 1 53 496 1 53 497 1 53 498 1 53 499 1 53 500 1 53 501 1 53 542 1 53 547 1 53 552 1 53 553 1 53 554 1 53 555 1 53 597 1 53 602 1 53 603 1 53 604 1 53 605 1 53 612 1 53 613 1 53 614 1 53 615 1 53 622 1 53 623 1 53 624 1 53 625 1 53 626 1 53 627 1 53 667 1 53 672 1 53 673 1 53 674 1 53 675 1 53 682 1 53 683 1 53 684 1 53 685 1 53 692 1 53 693 1 53 694 1 53 695 1 53 696 1 53 697 1 53 737 1 53 738 1 53 739 1 53 740 1 53 747 1 53 748 1 53 749 1 53 750 1 53 751 1 53 752 1 53 757 1 53 758 1 53 759 1 53 760 1 53 761 1 53 762 1 53 767 1 53 768 1 53 769 1 53 770 1 53 795 1 53 822 1 53 827 1 53 832 1 53 833 1 53 834 1 53 835 1 53 878 1 53 883 1 53 888 1 53 889 1 53 890 1 53 891 1 53 933 1 53 938 1 53 939 1 53 940 1 53 941 1 53 948 1 53 949 1 53 950 1 53 951 1 53 958 1 53 959 1 53 960 1 53 961 1 53 962 1 53 963 1 53 1004 1 53 1009 1 53 1014 1 53 1015 1 53 1016 1 53 1017 1 53 1059 1 53 1064 1 53 1065 1 53 1066 1 53 1067 1 53 1074 1 53 1075 1 53 1076 1 53 1077 1 53 1084 1 53 1085 1 53 1086 1 53 1087 1 53 1088 1 53 1089 1 53 1129 1 53 1134 1 53 1135 1 53 1136 1 53 1137 1 53 1144 1 53 1145 1 53 1146 1 53 1147 1 53 1154 1 53 1155 1 53 1156 1 53 1157 1 53 1158 1 53 1159 1 53 1199 1 53 1200 1 53 1201 1 53 1202 1 53 1209 1 53 1210 1 53 1211 1 53 1212 1 53 1213 1 53 1214 1 53 1219 1 53 1220 1 53 1221 1 53 1222 1 53 1223 1 53 1224 1 53 1229 1 53 1230 1 53 1231 1 53 1232 1 53 1256 1 53 1261 1 53 1266 1 53 1267 1 53 1268 1 53 1269 1 53 1311 1 53 1316 1 53 1317 1 53 1318 1 53 1319 1 53 1326 1 53 1327 1 53 1328 1 53 1329 1 53 1336 1 53 1337 1 53 1338 1 53 1339 1 53 1340 1 53 1341 1 53 1381 1 53 1386 1 53 1387 1 53 1388 1 53 1389 1 53 1396 1 53 1397 1 53 1398 1 53 1399 1 53 1406 1 53 1407 1 53 1408 1 53 1409 1 53 1410 1 53 1411 1 53 1451 1 53 1452 1 53 1453 1 53 1454 1 53 1461 1 53 1462 1 53 1463 1 53 1464 1 53 1465 1 53 1466 1 53 1471 1 53 1472 1 53 1473 1 53 1474 1 53 1475 1 53 1476 1 53 1481 1 53 1482 1 53 1483 1 53 1484 1 53 1507 1 53 1512 1 53 1513 1 53 1514 1 53 1515 1 53 1522 1 53 1523 1 53 1524 1 53 1525 1 53 1532 1 53 1533 1 53 1534 1 53 1535 1 53 1536 1 53 1537 1 53 1577 1 53 1578 1 53 1579 1 53 1580 1 53 1587 1 53 1588 1 53 1589 1 53 1590 1 53 1591 1 53 1592 1 53 1597 1 53 1598 1 53 1599 1 53 1600 1 53 1601 1 53 1602 1 53 1607 1 53 1608 1 53 1609 1 53 1610 1 53 1633 1 53 1634 1 53 1635 1 53 1636 1 53 1643 1 53 1644 1 53 1645 1 53 1646 1 53 1647 1 53 1648 1 53 1653 1 53 1654 1 53 1655 1 53 1656 1 53 1657 1 53 1658 1 53 1663 1 53 1664 1 53 1665 1 53 1666 1 53 1689 1 53 1690 1 53 1691 1 53 1692 1 53 1693 1 53 1694 1 53 1699 1 53 1700 1 53 1701 1 53 1702 1 53 1704 1 53 1705 1 53 1706 1 53 1707 1 53 1709 1 54 12 1 54 40 1 54 67 1 54 72 1 54 76 1 54 80 1 54 81 1 54 82 1 54 124 1 54 151 1 54 156 1 54 160 1 54 164 1 54 165 1 54 166 1 54 207 1 54 212 1 54 216 1 54 220 1 54 221 1 54 222 1 54 262 1 54 266 1 54 270 1 54 271 1 54 272 1 54 276 1 54 280 1 54 281 1 54 282 1 54 286 1 54 287 1 54 288 1 54 292 1 54 293 1 54 294 1 54 334 1 54 361 1 54 366 1 54 370 1 54 374 1 54 375 1 54 376 1 54 417 1 54 422 1 54 426 1 54 430 1 54 431 1 54 432 1 54 472 1 54 476 1 54 480 1 54 481 1 54 482 1 54 486 1 54 490 1 54 491 1 54 492 1 54 496 1 54 497 1 54 498 1 54 502 1 54 503 1 54 504 1 54 543 1 54 548 1 54 552 1 54 556 1 54 557 1 54 558 1 54 598 1 54 602 1 54 606 1 54 607 1 54 608 1 54 612 1 54 616 1 54 617 1 54 618 1 54 622 1 54 623 1 54 624 1 54 628 1 54 629 1 54 630 1 54 668 1 54 672 1 54 676 1 54 677 1 54 678 1 54 682 1 54 686 1 54 687 1 54 688 1 54 692 1 54 693 1 54 694 1 54 698 1 54 699 1 54 700 1 54 737 1 54 741 1 54 742 1 54 743 1 54 747 1 54 748 1 54 749 1 54 753 1 54 754 1 54 755 1 54 757 1 54 758 1 54 759 1 54 763 1 54 764 1 54 765 1 54 767 1 54 768 1 54 769 1 54 771 1 54 796 1 54 823 1 54 828 1 54 832 1 54 836 1 54 837 1 54 838 1 54 879 1 54 884 1 54 888 1 54 892 1 54 893 1 54 894 1 54 934 1 54 938 1 54 942 1 54 943 1 54 944 1 54 948 1 54 952 1 54 953 1 54 954 1 54 958 1 54 959 1 54 960 1 54 964 1 54 965 1 54 966 1 54 1005 1 54 1010 1 54 1014 1 54 1018 1 54 1019 1 54 1020 1 54 1060 1 54 1064 1 54 1068 1 54 1069 1 54 1070 1 54 1074 1 54 1078 1 54 1079 1 54 1080 1 54 1084 1 54 1085 1 54 1086 1 54 1090 1 54 1091 1 54 1092 1 54 1130 1 54 1134 1 54 1138 1 54 1139 1 54 1140 1 54 1144 1 54 1148 1 54 1149 1 54 1150 1 54 1154 1 54 1155 1 54 1156 1 54 1160 1 54 1161 1 54 1162 1 54 1199 1 54 1203 1 54 1204 1 54 1205 1 54 1209 1 54 1210 1 54 1211 1 54 1215 1 54 1216 1 54 1217 1 54 1219 1 54 1220 1 54 1221 1 54 1225 1 54 1226 1 54 1227 1 54 1229 1 54 1230 1 54 1231 1 54 1233 1 54 1257 1 54 1262 1 54 1266 1 54 1270 1 54 1271 1 54 1272 1 54 1312 1 54 1316 1 54 1320 1 54 1321 1 54 1322 1 54 1326 1 54 1330 1 54 1331 1 54 1332 1 54 1336 1 54 1337 1 54 1338 1 54 1342 1 54 1343 1 54 1344 1 54 1382 1 54 1386 1 54 1390 1 54 1391 1 54 1392 1 54 1396 1 54 1400 1 54 1401 1 54 1402 1 54 1406 1 54 1407 1 54 1408 1 54 1412 1 54 1413 1 54 1414 1 54 1451 1 54 1455 1 54 1456 1 54 1457 1 54 1461 1 54 1462 1 54 1463 1 54 1467 1 54 1468 1 54 1469 1 54 1471 1 54 1472 1 54 1473 1 54 1477 1 54 1478 1 54 1479 1 54 1481 1 54 1482 1 54 1483 1 54 1485 1 54 1508 1 54 1512 1 54 1516 1 54 1517 1 54 1518 1 54 1522 1 54 1526 1 54 1527 1 54 1528 1 54 1532 1 54 1533 1 54 1534 1 54 1538 1 54 1539 1 54 1540 1 54 1577 1 54 1581 1 54 1582 1 54 1583 1 54 1587 1 54 1588 1 54 1589 1 54 1593 1 54 1594 1 54 1595 1 54 1597 1 54 1598 1 54 1599 1 54 1603 1 54 1604 1 54 1605 1 54 1607 1 54 1608 1 54 1609 1 54 1611 1 54 1633 1 54 1637 1 54 1638 1 54 1639 1 54 1643 1 54 1644 1 54 1645 1 54 1649 1 54 1650 1 54 1651 1 54 1653 1 54 1654 1 54 1655 1 54 1659 1 54 1660 1 54 1661 1 54 1663 1 54 1664 1 54 1665 1 54 1667 1 54 1689 1 54 1690 1 54 1691 1 54 1695 1 54 1696 1 54 1697 1 54 1699 1 54 1700 1 54 1701 1 54 1703 1 54 1704 1 54 1705 1 54 1706 1 54 1708 1 54 1709 1 55 13 1 55 41 1 55 68 1 55 73 1 55 77 1 55 80 1 55 83 1 55 84 1 55 125 1 55 152 1 55 157 1 55 161 1 55 164 1 55 167 1 55 168 1 55 208 1 55 213 1 55 217 1 55 220 1 55 223 1 55 224 1 55 263 1 55 267 1 55 270 1 55 273 1 55 274 1 55 277 1 55 280 1 55 283 1 55 284 1 55 286 1 55 289 1 55 290 1 55 292 1 55 293 1 55 295 1 55 335 1 55 362 1 55 367 1 55 371 1 55 374 1 55 377 1 55 378 1 55 418 1 55 423 1 55 427 1 55 430 1 55 433 1 55 434 1 55 473 1 55 477 1 55 480 1 55 483 1 55 484 1 55 487 1 55 490 1 55 493 1 55 494 1 55 496 1 55 499 1 55 500 1 55 502 1 55 503 1 55 505 1 55 544 1 55 549 1 55 553 1 55 556 1 55 559 1 55 560 1 55 599 1 55 603 1 55 606 1 55 609 1 55 610 1 55 613 1 55 616 1 55 619 1 55 620 1 55 622 1 55 625 1 55 626 1 55 628 1 55 629 1 55 631 1 55 669 1 55 673 1 55 676 1 55 679 1 55 680 1 55 683 1 55 686 1 55 689 1 55 690 1 55 692 1 55 695 1 55 696 1 55 698 1 55 699 1 55 701 1 55 738 1 55 741 1 55 744 1 55 745 1 55 747 1 55 750 1 55 751 1 55 753 1 55 754 1 55 756 1 55 757 1 55 760 1 55 761 1 55 763 1 55 764 1 55 766 1 55 767 1 55 768 1 55 770 1 55 771 1 55 797 1 55 824 1 55 829 1 55 833 1 55 836 1 55 839 1 55 840 1 55 880 1 55 885 1 55 889 1 55 892 1 55 895 1 55 896 1 55 935 1 55 939 1 55 942 1 55 945 1 55 946 1 55 949 1 55 952 1 55 955 1 55 956 1 55 958 1 55 961 1 55 962 1 55 964 1 55 965 1 55 967 1 55 1006 1 55 1011 1 55 1015 1 55 1018 1 55 1021 1 55 1022 1 55 1061 1 55 1065 1 55 1068 1 55 1071 1 55 1072 1 55 1075 1 55 1078 1 55 1081 1 55 1082 1 55 1084 1 55 1087 1 55 1088 1 55 1090 1 55 1091 1 55 1093 1 55 1131 1 55 1135 1 55 1138 1 55 1141 1 55 1142 1 55 1145 1 55 1148 1 55 1151 1 55 1152 1 55 1154 1 55 1157 1 55 1158 1 55 1160 1 55 1161 1 55 1163 1 55 1200 1 55 1203 1 55 1206 1 55 1207 1 55 1209 1 55 1212 1 55 1213 1 55 1215 1 55 1216 1 55 1218 1 55 1219 1 55 1222 1 55 1223 1 55 1225 1 55 1226 1 55 1228 1 55 1229 1 55 1230 1 55 1232 1 55 1233 1 55 1258 1 55 1263 1 55 1267 1 55 1270 1 55 1273 1 55 1274 1 55 1313 1 55 1317 1 55 1320 1 55 1323 1 55 1324 1 55 1327 1 55 1330 1 55 1333 1 55 1334 1 55 1336 1 55 1339 1 55 1340 1 55 1342 1 55 1343 1 55 1345 1 55 1383 1 55 1387 1 55 1390 1 55 1393 1 55 1394 1 55 1397 1 55 1400 1 55 1403 1 55 1404 1 55 1406 1 55 1409 1 55 1410 1 55 1412 1 55 1413 1 55 1415 1 55 1452 1 55 1455 1 55 1458 1 55 1459 1 55 1461 1 55 1464 1 55 1465 1 55 1467 1 55 1468 1 55 1470 1 55 1471 1 55 1474 1 55 1475 1 55 1477 1 55 1478 1 55 1480 1 55 1481 1 55 1482 1 55 1484 1 55 1485 1 55 1509 1 55 1513 1 55 1516 1 55 1519 1 55 1520 1 55 1523 1 55 1526 1 55 1529 1 55 1530 1 55 1532 1 55 1535 1 55 1536 1 55 1538 1 55 1539 1 55 1541 1 55 1578 1 55 1581 1 55 1584 1 55 1585 1 55 1587 1 55 1590 1 55 1591 1 55 1593 1 55 1594 1 55 1596 1 55 1597 1 55 1600 1 55 1601 1 55 1603 1 55 1604 1 55 1606 1 55 1607 1 55 1608 1 55 1610 1 55 1611 1 55 1634 1 55 1637 1 55 1640 1 55 1641 1 55 1643 1 55 1646 1 55 1647 1 55 1649 1 55 1650 1 55 1652 1 55 1653 1 55 1656 1 55 1657 1 55 1659 1 55 1660 1 55 1662 1 55 1663 1 55 1664 1 55 1666 1 55 1667 1 55 1689 1 55 1692 1 55 1693 1 55 1695 1 55 1696 1 55 1698 1 55 1699 1 55 1700 1 55 1702 1 55 1703 1 55 1704 1 55 1705 1 55 1707 1 55 1708 1 55 1709 1 56 14 1 56 42 1 56 69 1 56 74 1 56 78 1 56 81 1 56 83 1 56 85 1 56 126 1 56 153 1 56 158 1 56 162 1 56 165 1 56 167 1 56 169 1 56 209 1 56 214 1 56 218 1 56 221 1 56 223 1 56 225 1 56 264 1 56 268 1 56 271 1 56 273 1 56 275 1 56 278 1 56 281 1 56 283 1 56 285 1 56 287 1 56 289 1 56 291 1 56 292 1 56 294 1 56 295 1 56 336 1 56 363 1 56 368 1 56 372 1 56 375 1 56 377 1 56 379 1 56 419 1 56 424 1 56 428 1 56 431 1 56 433 1 56 435 1 56 474 1 56 478 1 56 481 1 56 483 1 56 485 1 56 488 1 56 491 1 56 493 1 56 495 1 56 497 1 56 499 1 56 501 1 56 502 1 56 504 1 56 505 1 56 545 1 56 550 1 56 554 1 56 557 1 56 559 1 56 561 1 56 600 1 56 604 1 56 607 1 56 609 1 56 611 1 56 614 1 56 617 1 56 619 1 56 621 1 56 623 1 56 625 1 56 627 1 56 628 1 56 630 1 56 631 1 56 670 1 56 674 1 56 677 1 56 679 1 56 681 1 56 684 1 56 687 1 56 689 1 56 691 1 56 693 1 56 695 1 56 697 1 56 698 1 56 700 1 56 701 1 56 739 1 56 742 1 56 744 1 56 746 1 56 748 1 56 750 1 56 752 1 56 753 1 56 755 1 56 756 1 56 758 1 56 760 1 56 762 1 56 763 1 56 765 1 56 766 1 56 767 1 56 769 1 56 770 1 56 771 1 56 798 1 56 825 1 56 830 1 56 834 1 56 837 1 56 839 1 56 841 1 56 881 1 56 886 1 56 890 1 56 893 1 56 895 1 56 897 1 56 936 1 56 940 1 56 943 1 56 945 1 56 947 1 56 950 1 56 953 1 56 955 1 56 957 1 56 959 1 56 961 1 56 963 1 56 964 1 56 966 1 56 967 1 56 1007 1 56 1012 1 56 1016 1 56 1019 1 56 1021 1 56 1023 1 56 1062 1 56 1066 1 56 1069 1 56 1071 1 56 1073 1 56 1076 1 56 1079 1 56 1081 1 56 1083 1 56 1085 1 56 1087 1 56 1089 1 56 1090 1 56 1092 1 56 1093 1 56 1132 1 56 1136 1 56 1139 1 56 1141 1 56 1143 1 56 1146 1 56 1149 1 56 1151 1 56 1153 1 56 1155 1 56 1157 1 56 1159 1 56 1160 1 56 1162 1 56 1163 1 56 1201 1 56 1204 1 56 1206 1 56 1208 1 56 1210 1 56 1212 1 56 1214 1 56 1215 1 56 1217 1 56 1218 1 56 1220 1 56 1222 1 56 1224 1 56 1225 1 56 1227 1 56 1228 1 56 1229 1 56 1231 1 56 1232 1 56 1233 1 56 1259 1 56 1264 1 56 1268 1 56 1271 1 56 1273 1 56 1275 1 56 1314 1 56 1318 1 56 1321 1 56 1323 1 56 1325 1 56 1328 1 56 1331 1 56 1333 1 56 1335 1 56 1337 1 56 1339 1 56 1341 1 56 1342 1 56 1344 1 56 1345 1 56 1384 1 56 1388 1 56 1391 1 56 1393 1 56 1395 1 56 1398 1 56 1401 1 56 1403 1 56 1405 1 56 1407 1 56 1409 1 56 1411 1 56 1412 1 56 1414 1 56 1415 1 56 1453 1 56 1456 1 56 1458 1 56 1460 1 56 1462 1 56 1464 1 56 1466 1 56 1467 1 56 1469 1 56 1470 1 56 1472 1 56 1474 1 56 1476 1 56 1477 1 56 1479 1 56 1480 1 56 1481 1 56 1483 1 56 1484 1 56 1485 1 56 1510 1 56 1514 1 56 1517 1 56 1519 1 56 1521 1 56 1524 1 56 1527 1 56 1529 1 56 1531 1 56 1533 1 56 1535 1 56 1537 1 56 1538 1 56 1540 1 56 1541 1 56 1579 1 56 1582 1 56 1584 1 56 1586 1 56 1588 1 56 1590 1 56 1592 1 56 1593 1 56 1595 1 56 1596 1 56 1598 1 56 1600 1 56 1602 1 56 1603 1 56 1605 1 56 1606 1 56 1607 1 56 1609 1 56 1610 1 56 1611 1 56 1635 1 56 1638 1 56 1640 1 56 1642 1 56 1644 1 56 1646 1 56 1648 1 56 1649 1 56 1651 1 56 1652 1 56 1654 1 56 1656 1 56 1658 1 56 1659 1 56 1661 1 56 1662 1 56 1663 1 56 1665 1 56 1666 1 56 1667 1 56 1690 1 56 1692 1 56 1694 1 56 1695 1 56 1697 1 56 1698 1 56 1699 1 56 1701 1 56 1702 1 56 1703 1 56 1704 1 56 1706 1 56 1707 1 56 1708 1 56 1709 1 57 15 1 57 43 1 57 70 1 57 75 1 57 79 1 57 82 1 57 84 1 57 85 1 57 127 1 57 154 1 57 159 1 57 163 1 57 166 1 57 168 1 57 169 1 57 210 1 57 215 1 57 219 1 57 222 1 57 224 1 57 225 1 57 265 1 57 269 1 57 272 1 57 274 1 57 275 1 57 279 1 57 282 1 57 284 1 57 285 1 57 288 1 57 290 1 57 291 1 57 293 1 57 294 1 57 295 1 57 337 1 57 364 1 57 369 1 57 373 1 57 376 1 57 378 1 57 379 1 57 420 1 57 425 1 57 429 1 57 432 1 57 434 1 57 435 1 57 475 1 57 479 1 57 482 1 57 484 1 57 485 1 57 489 1 57 492 1 57 494 1 57 495 1 57 498 1 57 500 1 57 501 1 57 503 1 57 504 1 57 505 1 57 546 1 57 551 1 57 555 1 57 558 1 57 560 1 57 561 1 57 601 1 57 605 1 57 608 1 57 610 1 57 611 1 57 615 1 57 618 1 57 620 1 57 621 1 57 624 1 57 626 1 57 627 1 57 629 1 57 630 1 57 631 1 57 671 1 57 675 1 57 678 1 57 680 1 57 681 1 57 685 1 57 688 1 57 690 1 57 691 1 57 694 1 57 696 1 57 697 1 57 699 1 57 700 1 57 701 1 57 740 1 57 743 1 57 745 1 57 746 1 57 749 1 57 751 1 57 752 1 57 754 1 57 755 1 57 756 1 57 759 1 57 761 1 57 762 1 57 764 1 57 765 1 57 766 1 57 768 1 57 769 1 57 770 1 57 771 1 57 799 1 57 826 1 57 831 1 57 835 1 57 838 1 57 840 1 57 841 1 57 882 1 57 887 1 57 891 1 57 894 1 57 896 1 57 897 1 57 937 1 57 941 1 57 944 1 57 946 1 57 947 1 57 951 1 57 954 1 57 956 1 57 957 1 57 960 1 57 962 1 57 963 1 57 965 1 57 966 1 57 967 1 57 1008 1 57 1013 1 57 1017 1 57 1020 1 57 1022 1 57 1023 1 57 1063 1 57 1067 1 57 1070 1 57 1072 1 57 1073 1 57 1077 1 57 1080 1 57 1082 1 57 1083 1 57 1086 1 57 1088 1 57 1089 1 57 1091 1 57 1092 1 57 1093 1 57 1133 1 57 1137 1 57 1140 1 57 1142 1 57 1143 1 57 1147 1 57 1150 1 57 1152 1 57 1153 1 57 1156 1 57 1158 1 57 1159 1 57 1161 1 57 1162 1 57 1163 1 57 1202 1 57 1205 1 57 1207 1 57 1208 1 57 1211 1 57 1213 1 57 1214 1 57 1216 1 57 1217 1 57 1218 1 57 1221 1 57 1223 1 57 1224 1 57 1226 1 57 1227 1 57 1228 1 57 1230 1 57 1231 1 57 1232 1 57 1233 1 57 1260 1 57 1265 1 57 1269 1 57 1272 1 57 1274 1 57 1275 1 57 1315 1 57 1319 1 57 1322 1 57 1324 1 57 1325 1 57 1329 1 57 1332 1 57 1334 1 57 1335 1 57 1338 1 57 1340 1 57 1341 1 57 1343 1 57 1344 1 57 1345 1 57 1385 1 57 1389 1 57 1392 1 57 1394 1 57 1395 1 57 1399 1 57 1402 1 57 1404 1 57 1405 1 57 1408 1 57 1410 1 57 1411 1 57 1413 1 57 1414 1 57 1415 1 57 1454 1 57 1457 1 57 1459 1 57 1460 1 57 1463 1 57 1465 1 57 1466 1 57 1468 1 57 1469 1 57 1470 1 57 1473 1 57 1475 1 57 1476 1 57 1478 1 57 1479 1 57 1480 1 57 1482 1 57 1483 1 57 1484 1 57 1485 1 57 1511 1 57 1515 1 57 1518 1 57 1520 1 57 1521 1 57 1525 1 57 1528 1 57 1530 1 57 1531 1 57 1534 1 57 1536 1 57 1537 1 57 1539 1 57 1540 1 57 1541 1 57 1580 1 57 1583 1 57 1585 1 57 1586 1 57 1589 1 57 1591 1 57 1592 1 57 1594 1 57 1595 1 57 1596 1 57 1599 1 57 1601 1 57 1602 1 57 1604 1 57 1605 1 57 1606 1 57 1608 1 57 1609 1 57 1610 1 57 1611 1 57 1636 1 57 1639 1 57 1641 1 57 1642 1 57 1645 1 57 1647 1 57 1648 1 57 1650 1 57 1651 1 57 1652 1 57 1655 1 57 1657 1 57 1658 1 57 1660 1 57 1661 1 57 1662 1 57 1664 1 57 1665 1 57 1666 1 57 1667 1 57 1691 1 57 1693 1 57 1694 1 57 1696 1 57 1697 1 57 1698 1 57 1700 1 57 1701 1 57 1702 1 57 1703 1 57 1705 1 57 1706 1 57 1707 1 57 1708 1 57 1709 1 58 16 1 58 44 1 58 65 1 58 86 1 58 87 1 58 88 1 58 89 1 58 90 1 58 128 1 58 149 1 58 170 1 58 171 1 58 172 1 58 173 1 58 174 1 58 205 1 58 226 1 58 227 1 58 228 1 58 229 1 58 230 1 58 261 1 58 262 1 58 263 1 58 264 1 58 265 1 58 296 1 58 297 1 58 298 1 58 299 1 58 300 1 58 301 1 58 302 1 58 303 1 58 304 1 58 305 1 58 338 1 58 359 1 58 380 1 58 381 1 58 382 1 58 383 1 58 384 1 58 415 1 58 436 1 58 437 1 58 438 1 58 439 1 58 440 1 58 471 1 58 472 1 58 473 1 58 474 1 58 475 1 58 506 1 58 507 1 58 508 1 58 509 1 58 510 1 58 511 1 58 512 1 58 513 1 58 514 1 58 515 1 58 541 1 58 562 1 58 563 1 58 564 1 58 565 1 58 566 1 58 597 1 58 598 1 58 599 1 58 600 1 58 601 1 58 632 1 58 633 1 58 634 1 58 635 1 58 636 1 58 637 1 58 638 1 58 639 1 58 640 1 58 641 1 58 667 1 58 668 1 58 669 1 58 670 1 58 671 1 58 702 1 58 703 1 58 704 1 58 705 1 58 706 1 58 707 1 58 708 1 58 709 1 58 710 1 58 711 1 58 737 1 58 738 1 58 739 1 58 740 1 58 741 1 58 742 1 58 743 1 58 744 1 58 745 1 58 746 1 58 772 1 58 773 1 58 774 1 58 775 1 58 776 1 58 777 1 58 778 1 58 779 1 58 780 1 58 781 1 58 800 1 58 821 1 58 842 1 58 843 1 58 844 1 58 845 1 58 846 1 58 877 1 58 898 1 58 899 1 58 900 1 58 901 1 58 902 1 58 933 1 58 934 1 58 935 1 58 936 1 58 937 1 58 968 1 58 969 1 58 970 1 58 971 1 58 972 1 58 973 1 58 974 1 58 975 1 58 976 1 58 977 1 58 1003 1 58 1024 1 58 1025 1 58 1026 1 58 1027 1 58 1028 1 58 1059 1 58 1060 1 58 1061 1 58 1062 1 58 1063 1 58 1094 1 58 1095 1 58 1096 1 58 1097 1 58 1098 1 58 1099 1 58 1100 1 58 1101 1 58 1102 1 58 1103 1 58 1129 1 58 1130 1 58 1131 1 58 1132 1 58 1133 1 58 1164 1 58 1165 1 58 1166 1 58 1167 1 58 1168 1 58 1169 1 58 1170 1 58 1171 1 58 1172 1 58 1173 1 58 1199 1 58 1200 1 58 1201 1 58 1202 1 58 1203 1 58 1204 1 58 1205 1 58 1206 1 58 1207 1 58 1208 1 58 1234 1 58 1235 1 58 1236 1 58 1237 1 58 1238 1 58 1239 1 58 1240 1 58 1241 1 58 1242 1 58 1243 1 58 1255 1 58 1276 1 58 1277 1 58 1278 1 58 1279 1 58 1280 1 58 1311 1 58 1312 1 58 1313 1 58 1314 1 58 1315 1 58 1346 1 58 1347 1 58 1348 1 58 1349 1 58 1350 1 58 1351 1 58 1352 1 58 1353 1 58 1354 1 58 1355 1 58 1381 1 58 1382 1 58 1383 1 58 1384 1 58 1385 1 58 1416 1 58 1417 1 58 1418 1 58 1419 1 58 1420 1 58 1421 1 58 1422 1 58 1423 1 58 1424 1 58 1425 1 58 1451 1 58 1452 1 58 1453 1 58 1454 1 58 1455 1 58 1456 1 58 1457 1 58 1458 1 58 1459 1 58 1460 1 58 1486 1 58 1487 1 58 1488 1 58 1489 1 58 1490 1 58 1491 1 58 1492 1 58 1493 1 58 1494 1 58 1495 1 58 1507 1 58 1508 1 58 1509 1 58 1510 1 58 1511 1 58 1542 1 58 1543 1 58 1544 1 58 1545 1 58 1546 1 58 1547 1 58 1548 1 58 1549 1 58 1550 1 58 1551 1 58 1577 1 58 1578 1 58 1579 1 58 1580 1 58 1581 1 58 1582 1 58 1583 1 58 1584 1 58 1585 1 58 1586 1 58 1612 1 58 1613 1 58 1614 1 58 1615 1 58 1616 1 58 1617 1 58 1618 1 58 1619 1 58 1620 1 58 1621 1 58 1633 1 58 1634 1 58 1635 1 58 1636 1 58 1637 1 58 1638 1 58 1639 1 58 1640 1 58 1641 1 58 1642 1 58 1668 1 58 1669 1 58 1670 1 58 1671 1 58 1672 1 58 1673 1 58 1674 1 58 1675 1 58 1676 1 58 1677 1 58 1689 1 58 1690 1 58 1691 1 58 1692 1 58 1693 1 58 1694 1 58 1695 1 58 1696 1 58 1697 1 58 1698 1 58 1710 1 58 1711 1 58 1712 1 58 1713 1 58 1714 1 59 17 1 59 45 1 59 66 1 59 86 1 59 91 1 59 92 1 59 93 1 59 94 1 59 129 1 59 150 1 59 170 1 59 175 1 59 176 1 59 177 1 59 178 1 59 206 1 59 226 1 59 231 1 59 232 1 59 233 1 59 234 1 59 261 1 59 266 1 59 267 1 59 268 1 59 269 1 59 296 1 59 297 1 59 298 1 59 299 1 59 306 1 59 307 1 59 308 1 59 309 1 59 310 1 59 311 1 59 339 1 59 360 1 59 380 1 59 385 1 59 386 1 59 387 1 59 388 1 59 416 1 59 436 1 59 441 1 59 442 1 59 443 1 59 444 1 59 471 1 59 476 1 59 477 1 59 478 1 59 479 1 59 506 1 59 507 1 59 508 1 59 509 1 59 516 1 59 517 1 59 518 1 59 519 1 59 520 1 59 521 1 59 542 1 59 562 1 59 567 1 59 568 1 59 569 1 59 570 1 59 597 1 59 602 1 59 603 1 59 604 1 59 605 1 59 632 1 59 633 1 59 634 1 59 635 1 59 642 1 59 643 1 59 644 1 59 645 1 59 646 1 59 647 1 59 667 1 59 672 1 59 673 1 59 674 1 59 675 1 59 702 1 59 703 1 59 704 1 59 705 1 59 712 1 59 713 1 59 714 1 59 715 1 59 716 1 59 717 1 59 737 1 59 738 1 59 739 1 59 740 1 59 747 1 59 748 1 59 749 1 59 750 1 59 751 1 59 752 1 59 772 1 59 773 1 59 774 1 59 775 1 59 776 1 59 777 1 59 782 1 59 783 1 59 784 1 59 785 1 59 801 1 59 822 1 59 842 1 59 847 1 59 848 1 59 849 1 59 850 1 59 878 1 59 898 1 59 903 1 59 904 1 59 905 1 59 906 1 59 933 1 59 938 1 59 939 1 59 940 1 59 941 1 59 968 1 59 969 1 59 970 1 59 971 1 59 978 1 59 979 1 59 980 1 59 981 1 59 982 1 59 983 1 59 1004 1 59 1024 1 59 1029 1 59 1030 1 59 1031 1 59 1032 1 59 1059 1 59 1064 1 59 1065 1 59 1066 1 59 1067 1 59 1094 1 59 1095 1 59 1096 1 59 1097 1 59 1104 1 59 1105 1 59 1106 1 59 1107 1 59 1108 1 59 1109 1 59 1129 1 59 1134 1 59 1135 1 59 1136 1 59 1137 1 59 1164 1 59 1165 1 59 1166 1 59 1167 1 59 1174 1 59 1175 1 59 1176 1 59 1177 1 59 1178 1 59 1179 1 59 1199 1 59 1200 1 59 1201 1 59 1202 1 59 1209 1 59 1210 1 59 1211 1 59 1212 1 59 1213 1 59 1214 1 59 1234 1 59 1235 1 59 1236 1 59 1237 1 59 1238 1 59 1239 1 59 1244 1 59 1245 1 59 1246 1 59 1247 1 59 1256 1 59 1276 1 59 1281 1 59 1282 1 59 1283 1 59 1284 1 59 1311 1 59 1316 1 59 1317 1 59 1318 1 59 1319 1 59 1346 1 59 1347 1 59 1348 1 59 1349 1 59 1356 1 59 1357 1 59 1358 1 59 1359 1 59 1360 1 59 1361 1 59 1381 1 59 1386 1 59 1387 1 59 1388 1 59 1389 1 59 1416 1 59 1417 1 59 1418 1 59 1419 1 59 1426 1 59 1427 1 59 1428 1 59 1429 1 59 1430 1 59 1431 1 59 1451 1 59 1452 1 59 1453 1 59 1454 1 59 1461 1 59 1462 1 59 1463 1 59 1464 1 59 1465 1 59 1466 1 59 1486 1 59 1487 1 59 1488 1 59 1489 1 59 1490 1 59 1491 1 59 1496 1 59 1497 1 59 1498 1 59 1499 1 59 1507 1 59 1512 1 59 1513 1 59 1514 1 59 1515 1 59 1542 1 59 1543 1 59 1544 1 59 1545 1 59 1552 1 59 1553 1 59 1554 1 59 1555 1 59 1556 1 59 1557 1 59 1577 1 59 1578 1 59 1579 1 59 1580 1 59 1587 1 59 1588 1 59 1589 1 59 1590 1 59 1591 1 59 1592 1 59 1612 1 59 1613 1 59 1614 1 59 1615 1 59 1616 1 59 1617 1 59 1622 1 59 1623 1 59 1624 1 59 1625 1 59 1633 1 59 1634 1 59 1635 1 59 1636 1 59 1643 1 59 1644 1 59 1645 1 59 1646 1 59 1647 1 59 1648 1 59 1668 1 59 1669 1 59 1670 1 59 1671 1 59 1672 1 59 1673 1 59 1678 1 59 1679 1 59 1680 1 59 1681 1 59 1689 1 59 1690 1 59 1691 1 59 1692 1 59 1693 1 59 1694 1 59 1699 1 59 1700 1 59 1701 1 59 1702 1 59 1710 1 59 1711 1 59 1712 1 59 1713 1 59 1715 1 60 18 1 60 46 1 60 67 1 60 87 1 60 91 1 60 95 1 60 96 1 60 97 1 60 130 1 60 151 1 60 171 1 60 175 1 60 179 1 60 180 1 60 181 1 60 207 1 60 227 1 60 231 1 60 235 1 60 236 1 60 237 1 60 262 1 60 266 1 60 270 1 60 271 1 60 272 1 60 296 1 60 300 1 60 301 1 60 302 1 60 306 1 60 307 1 60 308 1 60 312 1 60 313 1 60 314 1 60 340 1 60 361 1 60 381 1 60 385 1 60 389 1 60 390 1 60 391 1 60 417 1 60 437 1 60 441 1 60 445 1 60 446 1 60 447 1 60 472 1 60 476 1 60 480 1 60 481 1 60 482 1 60 506 1 60 510 1 60 511 1 60 512 1 60 516 1 60 517 1 60 518 1 60 522 1 60 523 1 60 524 1 60 543 1 60 563 1 60 567 1 60 571 1 60 572 1 60 573 1 60 598 1 60 602 1 60 606 1 60 607 1 60 608 1 60 632 1 60 636 1 60 637 1 60 638 1 60 642 1 60 643 1 60 644 1 60 648 1 60 649 1 60 650 1 60 668 1 60 672 1 60 676 1 60 677 1 60 678 1 60 702 1 60 706 1 60 707 1 60 708 1 60 712 1 60 713 1 60 714 1 60 718 1 60 719 1 60 720 1 60 737 1 60 741 1 60 742 1 60 743 1 60 747 1 60 748 1 60 749 1 60 753 1 60 754 1 60 755 1 60 772 1 60 773 1 60 774 1 60 778 1 60 779 1 60 780 1 60 782 1 60 783 1 60 784 1 60 786 1 60 802 1 60 823 1 60 843 1 60 847 1 60 851 1 60 852 1 60 853 1 60 879 1 60 899 1 60 903 1 60 907 1 60 908 1 60 909 1 60 934 1 60 938 1 60 942 1 60 943 1 60 944 1 60 968 1 60 972 1 60 973 1 60 974 1 60 978 1 60 979 1 60 980 1 60 984 1 60 985 1 60 986 1 60 1005 1 60 1025 1 60 1029 1 60 1033 1 60 1034 1 60 1035 1 60 1060 1 60 1064 1 60 1068 1 60 1069 1 60 1070 1 60 1094 1 60 1098 1 60 1099 1 60 1100 1 60 1104 1 60 1105 1 60 1106 1 60 1110 1 60 1111 1 60 1112 1 60 1130 1 60 1134 1 60 1138 1 60 1139 1 60 1140 1 60 1164 1 60 1168 1 60 1169 1 60 1170 1 60 1174 1 60 1175 1 60 1176 1 60 1180 1 60 1181 1 60 1182 1 60 1199 1 60 1203 1 60 1204 1 60 1205 1 60 1209 1 60 1210 1 60 1211 1 60 1215 1 60 1216 1 60 1217 1 60 1234 1 60 1235 1 60 1236 1 60 1240 1 60 1241 1 60 1242 1 60 1244 1 60 1245 1 60 1246 1 60 1248 1 60 1257 1 60 1277 1 60 1281 1 60 1285 1 60 1286 1 60 1287 1 60 1312 1 60 1316 1 60 1320 1 60 1321 1 60 1322 1 60 1346 1 60 1350 1 60 1351 1 60 1352 1 60 1356 1 60 1357 1 60 1358 1 60 1362 1 60 1363 1 60 1364 1 60 1382 1 60 1386 1 60 1390 1 60 1391 1 60 1392 1 60 1416 1 60 1420 1 60 1421 1 60 1422 1 60 1426 1 60 1427 1 60 1428 1 60 1432 1 60 1433 1 60 1434 1 60 1451 1 60 1455 1 60 1456 1 60 1457 1 60 1461 1 60 1462 1 60 1463 1 60 1467 1 60 1468 1 60 1469 1 60 1486 1 60 1487 1 60 1488 1 60 1492 1 60 1493 1 60 1494 1 60 1496 1 60 1497 1 60 1498 1 60 1500 1 60 1508 1 60 1512 1 60 1516 1 60 1517 1 60 1518 1 60 1542 1 60 1546 1 60 1547 1 60 1548 1 60 1552 1 60 1553 1 60 1554 1 60 1558 1 60 1559 1 60 1560 1 60 1577 1 60 1581 1 60 1582 1 60 1583 1 60 1587 1 60 1588 1 60 1589 1 60 1593 1 60 1594 1 60 1595 1 60 1612 1 60 1613 1 60 1614 1 60 1618 1 60 1619 1 60 1620 1 60 1622 1 60 1623 1 60 1624 1 60 1626 1 60 1633 1 60 1637 1 60 1638 1 60 1639 1 60 1643 1 60 1644 1 60 1645 1 60 1649 1 60 1650 1 60 1651 1 60 1668 1 60 1669 1 60 1670 1 60 1674 1 60 1675 1 60 1676 1 60 1678 1 60 1679 1 60 1680 1 60 1682 1 60 1689 1 60 1690 1 60 1691 1 60 1695 1 60 1696 1 60 1697 1 60 1699 1 60 1700 1 60 1701 1 60 1703 1 60 1710 1 60 1711 1 60 1712 1 60 1714 1 60 1715 1 61 19 1 61 47 1 61 68 1 61 88 1 61 92 1 61 95 1 61 98 1 61 99 1 61 131 1 61 152 1 61 172 1 61 176 1 61 179 1 61 182 1 61 183 1 61 208 1 61 228 1 61 232 1 61 235 1 61 238 1 61 239 1 61 263 1 61 267 1 61 270 1 61 273 1 61 274 1 61 297 1 61 300 1 61 303 1 61 304 1 61 306 1 61 309 1 61 310 1 61 312 1 61 313 1 61 315 1 61 341 1 61 362 1 61 382 1 61 386 1 61 389 1 61 392 1 61 393 1 61 418 1 61 438 1 61 442 1 61 445 1 61 448 1 61 449 1 61 473 1 61 477 1 61 480 1 61 483 1 61 484 1 61 507 1 61 510 1 61 513 1 61 514 1 61 516 1 61 519 1 61 520 1 61 522 1 61 523 1 61 525 1 61 544 1 61 564 1 61 568 1 61 571 1 61 574 1 61 575 1 61 599 1 61 603 1 61 606 1 61 609 1 61 610 1 61 633 1 61 636 1 61 639 1 61 640 1 61 642 1 61 645 1 61 646 1 61 648 1 61 649 1 61 651 1 61 669 1 61 673 1 61 676 1 61 679 1 61 680 1 61 703 1 61 706 1 61 709 1 61 710 1 61 712 1 61 715 1 61 716 1 61 718 1 61 719 1 61 721 1 61 738 1 61 741 1 61 744 1 61 745 1 61 747 1 61 750 1 61 751 1 61 753 1 61 754 1 61 756 1 61 772 1 61 775 1 61 776 1 61 778 1 61 779 1 61 781 1 61 782 1 61 783 1 61 785 1 61 786 1 61 803 1 61 824 1 61 844 1 61 848 1 61 851 1 61 854 1 61 855 1 61 880 1 61 900 1 61 904 1 61 907 1 61 910 1 61 911 1 61 935 1 61 939 1 61 942 1 61 945 1 61 946 1 61 969 1 61 972 1 61 975 1 61 976 1 61 978 1 61 981 1 61 982 1 61 984 1 61 985 1 61 987 1 61 1006 1 61 1026 1 61 1030 1 61 1033 1 61 1036 1 61 1037 1 61 1061 1 61 1065 1 61 1068 1 61 1071 1 61 1072 1 61 1095 1 61 1098 1 61 1101 1 61 1102 1 61 1104 1 61 1107 1 61 1108 1 61 1110 1 61 1111 1 61 1113 1 61 1131 1 61 1135 1 61 1138 1 61 1141 1 61 1142 1 61 1165 1 61 1168 1 61 1171 1 61 1172 1 61 1174 1 61 1177 1 61 1178 1 61 1180 1 61 1181 1 61 1183 1 61 1200 1 61 1203 1 61 1206 1 61 1207 1 61 1209 1 61 1212 1 61 1213 1 61 1215 1 61 1216 1 61 1218 1 61 1234 1 61 1237 1 61 1238 1 61 1240 1 61 1241 1 61 1243 1 61 1244 1 61 1245 1 61 1247 1 61 1248 1 61 1258 1 61 1278 1 61 1282 1 61 1285 1 61 1288 1 61 1289 1 61 1313 1 61 1317 1 61 1320 1 61 1323 1 61 1324 1 61 1347 1 61 1350 1 61 1353 1 61 1354 1 61 1356 1 61 1359 1 61 1360 1 61 1362 1 61 1363 1 61 1365 1 61 1383 1 61 1387 1 61 1390 1 61 1393 1 61 1394 1 61 1417 1 61 1420 1 61 1423 1 61 1424 1 61 1426 1 61 1429 1 61 1430 1 61 1432 1 61 1433 1 61 1435 1 61 1452 1 61 1455 1 61 1458 1 61 1459 1 61 1461 1 61 1464 1 61 1465 1 61 1467 1 61 1468 1 61 1470 1 61 1486 1 61 1489 1 61 1490 1 61 1492 1 61 1493 1 61 1495 1 61 1496 1 61 1497 1 61 1499 1 61 1500 1 61 1509 1 61 1513 1 61 1516 1 61 1519 1 61 1520 1 61 1543 1 61 1546 1 61 1549 1 61 1550 1 61 1552 1 61 1555 1 61 1556 1 61 1558 1 61 1559 1 61 1561 1 61 1578 1 61 1581 1 61 1584 1 61 1585 1 61 1587 1 61 1590 1 61 1591 1 61 1593 1 61 1594 1 61 1596 1 61 1612 1 61 1615 1 61 1616 1 61 1618 1 61 1619 1 61 1621 1 61 1622 1 61 1623 1 61 1625 1 61 1626 1 61 1634 1 61 1637 1 61 1640 1 61 1641 1 61 1643 1 61 1646 1 61 1647 1 61 1649 1 61 1650 1 61 1652 1 61 1668 1 61 1671 1 61 1672 1 61 1674 1 61 1675 1 61 1677 1 61 1678 1 61 1679 1 61 1681 1 61 1682 1 61 1689 1 61 1692 1 61 1693 1 61 1695 1 61 1696 1 61 1698 1 61 1699 1 61 1700 1 61 1702 1 61 1703 1 61 1710 1 61 1711 1 61 1713 1 61 1714 1 61 1715 1 62 20 1 62 48 1 62 69 1 62 89 1 62 93 1 62 96 1 62 98 1 62 100 1 62 132 1 62 153 1 62 173 1 62 177 1 62 180 1 62 182 1 62 184 1 62 209 1 62 229 1 62 233 1 62 236 1 62 238 1 62 240 1 62 264 1 62 268 1 62 271 1 62 273 1 62 275 1 62 298 1 62 301 1 62 303 1 62 305 1 62 307 1 62 309 1 62 311 1 62 312 1 62 314 1 62 315 1 62 342 1 62 363 1 62 383 1 62 387 1 62 390 1 62 392 1 62 394 1 62 419 1 62 439 1 62 443 1 62 446 1 62 448 1 62 450 1 62 474 1 62 478 1 62 481 1 62 483 1 62 485 1 62 508 1 62 511 1 62 513 1 62 515 1 62 517 1 62 519 1 62 521 1 62 522 1 62 524 1 62 525 1 62 545 1 62 565 1 62 569 1 62 572 1 62 574 1 62 576 1 62 600 1 62 604 1 62 607 1 62 609 1 62 611 1 62 634 1 62 637 1 62 639 1 62 641 1 62 643 1 62 645 1 62 647 1 62 648 1 62 650 1 62 651 1 62 670 1 62 674 1 62 677 1 62 679 1 62 681 1 62 704 1 62 707 1 62 709 1 62 711 1 62 713 1 62 715 1 62 717 1 62 718 1 62 720 1 62 721 1 62 739 1 62 742 1 62 744 1 62 746 1 62 748 1 62 750 1 62 752 1 62 753 1 62 755 1 62 756 1 62 773 1 62 775 1 62 777 1 62 778 1 62 780 1 62 781 1 62 782 1 62 784 1 62 785 1 62 786 1 62 804 1 62 825 1 62 845 1 62 849 1 62 852 1 62 854 1 62 856 1 62 881 1 62 901 1 62 905 1 62 908 1 62 910 1 62 912 1 62 936 1 62 940 1 62 943 1 62 945 1 62 947 1 62 970 1 62 973 1 62 975 1 62 977 1 62 979 1 62 981 1 62 983 1 62 984 1 62 986 1 62 987 1 62 1007 1 62 1027 1 62 1031 1 62 1034 1 62 1036 1 62 1038 1 62 1062 1 62 1066 1 62 1069 1 62 1071 1 62 1073 1 62 1096 1 62 1099 1 62 1101 1 62 1103 1 62 1105 1 62 1107 1 62 1109 1 62 1110 1 62 1112 1 62 1113 1 62 1132 1 62 1136 1 62 1139 1 62 1141 1 62 1143 1 62 1166 1 62 1169 1 62 1171 1 62 1173 1 62 1175 1 62 1177 1 62 1179 1 62 1180 1 62 1182 1 62 1183 1 62 1201 1 62 1204 1 62 1206 1 62 1208 1 62 1210 1 62 1212 1 62 1214 1 62 1215 1 62 1217 1 62 1218 1 62 1235 1 62 1237 1 62 1239 1 62 1240 1 62 1242 1 62 1243 1 62 1244 1 62 1246 1 62 1247 1 62 1248 1 62 1259 1 62 1279 1 62 1283 1 62 1286 1 62 1288 1 62 1290 1 62 1314 1 62 1318 1 62 1321 1 62 1323 1 62 1325 1 62 1348 1 62 1351 1 62 1353 1 62 1355 1 62 1357 1 62 1359 1 62 1361 1 62 1362 1 62 1364 1 62 1365 1 62 1384 1 62 1388 1 62 1391 1 62 1393 1 62 1395 1 62 1418 1 62 1421 1 62 1423 1 62 1425 1 62 1427 1 62 1429 1 62 1431 1 62 1432 1 62 1434 1 62 1435 1 62 1453 1 62 1456 1 62 1458 1 62 1460 1 62 1462 1 62 1464 1 62 1466 1 62 1467 1 62 1469 1 62 1470 1 62 1487 1 62 1489 1 62 1491 1 62 1492 1 62 1494 1 62 1495 1 62 1496 1 62 1498 1 62 1499 1 62 1500 1 62 1510 1 62 1514 1 62 1517 1 62 1519 1 62 1521 1 62 1544 1 62 1547 1 62 1549 1 62 1551 1 62 1553 1 62 1555 1 62 1557 1 62 1558 1 62 1560 1 62 1561 1 62 1579 1 62 1582 1 62 1584 1 62 1586 1 62 1588 1 62 1590 1 62 1592 1 62 1593 1 62 1595 1 62 1596 1 62 1613 1 62 1615 1 62 1617 1 62 1618 1 62 1620 1 62 1621 1 62 1622 1 62 1624 1 62 1625 1 62 1626 1 62 1635 1 62 1638 1 62 1640 1 62 1642 1 62 1644 1 62 1646 1 62 1648 1 62 1649 1 62 1651 1 62 1652 1 62 1669 1 62 1671 1 62 1673 1 62 1674 1 62 1676 1 62 1677 1 62 1678 1 62 1680 1 62 1681 1 62 1682 1 62 1690 1 62 1692 1 62 1694 1 62 1695 1 62 1697 1 62 1698 1 62 1699 1 62 1701 1 62 1702 1 62 1703 1 62 1710 1 62 1712 1 62 1713 1 62 1714 1 62 1715 1 63 21 1 63 49 1 63 70 1 63 90 1 63 94 1 63 97 1 63 99 1 63 100 1 63 133 1 63 154 1 63 174 1 63 178 1 63 181 1 63 183 1 63 184 1 63 210 1 63 230 1 63 234 1 63 237 1 63 239 1 63 240 1 63 265 1 63 269 1 63 272 1 63 274 1 63 275 1 63 299 1 63 302 1 63 304 1 63 305 1 63 308 1 63 310 1 63 311 1 63 313 1 63 314 1 63 315 1 63 343 1 63 364 1 63 384 1 63 388 1 63 391 1 63 393 1 63 394 1 63 420 1 63 440 1 63 444 1 63 447 1 63 449 1 63 450 1 63 475 1 63 479 1 63 482 1 63 484 1 63 485 1 63 509 1 63 512 1 63 514 1 63 515 1 63 518 1 63 520 1 63 521 1 63 523 1 63 524 1 63 525 1 63 546 1 63 566 1 63 570 1 63 573 1 63 575 1 63 576 1 63 601 1 63 605 1 63 608 1 63 610 1 63 611 1 63 635 1 63 638 1 63 640 1 63 641 1 63 644 1 63 646 1 63 647 1 63 649 1 63 650 1 63 651 1 63 671 1 63 675 1 63 678 1 63 680 1 63 681 1 63 705 1 63 708 1 63 710 1 63 711 1 63 714 1 63 716 1 63 717 1 63 719 1 63 720 1 63 721 1 63 740 1 63 743 1 63 745 1 63 746 1 63 749 1 63 751 1 63 752 1 63 754 1 63 755 1 63 756 1 63 774 1 63 776 1 63 777 1 63 779 1 63 780 1 63 781 1 63 783 1 63 784 1 63 785 1 63 786 1 63 805 1 63 826 1 63 846 1 63 850 1 63 853 1 63 855 1 63 856 1 63 882 1 63 902 1 63 906 1 63 909 1 63 911 1 63 912 1 63 937 1 63 941 1 63 944 1 63 946 1 63 947 1 63 971 1 63 974 1 63 976 1 63 977 1 63 980 1 63 982 1 63 983 1 63 985 1 63 986 1 63 987 1 63 1008 1 63 1028 1 63 1032 1 63 1035 1 63 1037 1 63 1038 1 63 1063 1 63 1067 1 63 1070 1 63 1072 1 63 1073 1 63 1097 1 63 1100 1 63 1102 1 63 1103 1 63 1106 1 63 1108 1 63 1109 1 63 1111 1 63 1112 1 63 1113 1 63 1133 1 63 1137 1 63 1140 1 63 1142 1 63 1143 1 63 1167 1 63 1170 1 63 1172 1 63 1173 1 63 1176 1 63 1178 1 63 1179 1 63 1181 1 63 1182 1 63 1183 1 63 1202 1 63 1205 1 63 1207 1 63 1208 1 63 1211 1 63 1213 1 63 1214 1 63 1216 1 63 1217 1 63 1218 1 63 1236 1 63 1238 1 63 1239 1 63 1241 1 63 1242 1 63 1243 1 63 1245 1 63 1246 1 63 1247 1 63 1248 1 63 1260 1 63 1280 1 63 1284 1 63 1287 1 63 1289 1 63 1290 1 63 1315 1 63 1319 1 63 1322 1 63 1324 1 63 1325 1 63 1349 1 63 1352 1 63 1354 1 63 1355 1 63 1358 1 63 1360 1 63 1361 1 63 1363 1 63 1364 1 63 1365 1 63 1385 1 63 1389 1 63 1392 1 63 1394 1 63 1395 1 63 1419 1 63 1422 1 63 1424 1 63 1425 1 63 1428 1 63 1430 1 63 1431 1 63 1433 1 63 1434 1 63 1435 1 63 1454 1 63 1457 1 63 1459 1 63 1460 1 63 1463 1 63 1465 1 63 1466 1 63 1468 1 63 1469 1 63 1470 1 63 1488 1 63 1490 1 63 1491 1 63 1493 1 63 1494 1 63 1495 1 63 1497 1 63 1498 1 63 1499 1 63 1500 1 63 1511 1 63 1515 1 63 1518 1 63 1520 1 63 1521 1 63 1545 1 63 1548 1 63 1550 1 63 1551 1 63 1554 1 63 1556 1 63 1557 1 63 1559 1 63 1560 1 63 1561 1 63 1580 1 63 1583 1 63 1585 1 63 1586 1 63 1589 1 63 1591 1 63 1592 1 63 1594 1 63 1595 1 63 1596 1 63 1614 1 63 1616 1 63 1617 1 63 1619 1 63 1620 1 63 1621 1 63 1623 1 63 1624 1 63 1625 1 63 1626 1 63 1636 1 63 1639 1 63 1641 1 63 1642 1 63 1645 1 63 1647 1 63 1648 1 63 1650 1 63 1651 1 63 1652 1 63 1670 1 63 1672 1 63 1673 1 63 1675 1 63 1676 1 63 1677 1 63 1679 1 63 1680 1 63 1681 1 63 1682 1 63 1691 1 63 1693 1 63 1694 1 63 1696 1 63 1697 1 63 1698 1 63 1700 1 63 1701 1 63 1702 1 63 1703 1 63 1711 1 63 1712 1 63 1713 1 63 1714 1 63 1715 1 64 22 1 64 50 1 64 71 1 64 86 1 64 101 1 64 102 1 64 103 1 64 104 1 64 134 1 64 155 1 64 170 1 64 185 1 64 186 1 64 187 1 64 188 1 64 211 1 64 226 1 64 241 1 64 242 1 64 243 1 64 244 1 64 261 1 64 276 1 64 277 1 64 278 1 64 279 1 64 296 1 64 297 1 64 298 1 64 299 1 64 316 1 64 317 1 64 318 1 64 319 1 64 320 1 64 321 1 64 344 1 64 365 1 64 380 1 64 395 1 64 396 1 64 397 1 64 398 1 64 421 1 64 436 1 64 451 1 64 452 1 64 453 1 64 454 1 64 471 1 64 486 1 64 487 1 64 488 1 64 489 1 64 506 1 64 507 1 64 508 1 64 509 1 64 526 1 64 527 1 64 528 1 64 529 1 64 530 1 64 531 1 64 547 1 64 562 1 64 577 1 64 578 1 64 579 1 64 580 1 64 597 1 64 612 1 64 613 1 64 614 1 64 615 1 64 632 1 64 633 1 64 634 1 64 635 1 64 652 1 64 653 1 64 654 1 64 655 1 64 656 1 64 657 1 64 667 1 64 682 1 64 683 1 64 684 1 64 685 1 64 702 1 64 703 1 64 704 1 64 705 1 64 722 1 64 723 1 64 724 1 64 725 1 64 726 1 64 727 1 64 737 1 64 738 1 64 739 1 64 740 1 64 757 1 64 758 1 64 759 1 64 760 1 64 761 1 64 762 1 64 772 1 64 773 1 64 774 1 64 775 1 64 776 1 64 777 1 64 787 1 64 788 1 64 789 1 64 790 1 64 806 1 64 827 1 64 842 1 64 857 1 64 858 1 64 859 1 64 860 1 64 883 1 64 898 1 64 913 1 64 914 1 64 915 1 64 916 1 64 933 1 64 948 1 64 949 1 64 950 1 64 951 1 64 968 1 64 969 1 64 970 1 64 971 1 64 988 1 64 989 1 64 990 1 64 991 1 64 992 1 64 993 1 64 1009 1 64 1024 1 64 1039 1 64 1040 1 64 1041 1 64 1042 1 64 1059 1 64 1074 1 64 1075 1 64 1076 1 64 1077 1 64 1094 1 64 1095 1 64 1096 1 64 1097 1 64 1114 1 64 1115 1 64 1116 1 64 1117 1 64 1118 1 64 1119 1 64 1129 1 64 1144 1 64 1145 1 64 1146 1 64 1147 1 64 1164 1 64 1165 1 64 1166 1 64 1167 1 64 1184 1 64 1185 1 64 1186 1 64 1187 1 64 1188 1 64 1189 1 64 1199 1 64 1200 1 64 1201 1 64 1202 1 64 1219 1 64 1220 1 64 1221 1 64 1222 1 64 1223 1 64 1224 1 64 1234 1 64 1235 1 64 1236 1 64 1237 1 64 1238 1 64 1239 1 64 1249 1 64 1250 1 64 1251 1 64 1252 1 64 1261 1 64 1276 1 64 1291 1 64 1292 1 64 1293 1 64 1294 1 64 1311 1 64 1326 1 64 1327 1 64 1328 1 64 1329 1 64 1346 1 64 1347 1 64 1348 1 64 1349 1 64 1366 1 64 1367 1 64 1368 1 64 1369 1 64 1370 1 64 1371 1 64 1381 1 64 1396 1 64 1397 1 64 1398 1 64 1399 1 64 1416 1 64 1417 1 64 1418 1 64 1419 1 64 1436 1 64 1437 1 64 1438 1 64 1439 1 64 1440 1 64 1441 1 64 1451 1 64 1452 1 64 1453 1 64 1454 1 64 1471 1 64 1472 1 64 1473 1 64 1474 1 64 1475 1 64 1476 1 64 1486 1 64 1487 1 64 1488 1 64 1489 1 64 1490 1 64 1491 1 64 1501 1 64 1502 1 64 1503 1 64 1504 1 64 1507 1 64 1522 1 64 1523 1 64 1524 1 64 1525 1 64 1542 1 64 1543 1 64 1544 1 64 1545 1 64 1562 1 64 1563 1 64 1564 1 64 1565 1 64 1566 1 64 1567 1 64 1577 1 64 1578 1 64 1579 1 64 1580 1 64 1597 1 64 1598 1 64 1599 1 64 1600 1 64 1601 1 64 1602 1 64 1612 1 64 1613 1 64 1614 1 64 1615 1 64 1616 1 64 1617 1 64 1627 1 64 1628 1 64 1629 1 64 1630 1 64 1633 1 64 1634 1 64 1635 1 64 1636 1 64 1653 1 64 1654 1 64 1655 1 64 1656 1 64 1657 1 64 1658 1 64 1668 1 64 1669 1 64 1670 1 64 1671 1 64 1672 1 64 1673 1 64 1683 1 64 1684 1 64 1685 1 64 1686 1 64 1689 1 64 1690 1 64 1691 1 64 1692 1 64 1693 1 64 1694 1 64 1704 1 64 1705 1 64 1706 1 64 1707 1 64 1710 1 64 1711 1 64 1712 1 64 1713 1 64 1716 1 65 23 1 65 51 1 65 72 1 65 87 1 65 101 1 65 105 1 65 106 1 65 107 1 65 135 1 65 156 1 65 171 1 65 185 1 65 189 1 65 190 1 65 191 1 65 212 1 65 227 1 65 241 1 65 245 1 65 246 1 65 247 1 65 262 1 65 276 1 65 280 1 65 281 1 65 282 1 65 296 1 65 300 1 65 301 1 65 302 1 65 316 1 65 317 1 65 318 1 65 322 1 65 323 1 65 324 1 65 345 1 65 366 1 65 381 1 65 395 1 65 399 1 65 400 1 65 401 1 65 422 1 65 437 1 65 451 1 65 455 1 65 456 1 65 457 1 65 472 1 65 486 1 65 490 1 65 491 1 65 492 1 65 506 1 65 510 1 65 511 1 65 512 1 65 526 1 65 527 1 65 528 1 65 532 1 65 533 1 65 534 1 65 548 1 65 563 1 65 577 1 65 581 1 65 582 1 65 583 1 65 598 1 65 612 1 65 616 1 65 617 1 65 618 1 65 632 1 65 636 1 65 637 1 65 638 1 65 652 1 65 653 1 65 654 1 65 658 1 65 659 1 65 660 1 65 668 1 65 682 1 65 686 1 65 687 1 65 688 1 65 702 1 65 706 1 65 707 1 65 708 1 65 722 1 65 723 1 65 724 1 65 728 1 65 729 1 65 730 1 65 737 1 65 741 1 65 742 1 65 743 1 65 757 1 65 758 1 65 759 1 65 763 1 65 764 1 65 765 1 65 772 1 65 773 1 65 774 1 65 778 1 65 779 1 65 780 1 65 787 1 65 788 1 65 789 1 65 791 1 65 807 1 65 828 1 65 843 1 65 857 1 65 861 1 65 862 1 65 863 1 65 884 1 65 899 1 65 913 1 65 917 1 65 918 1 65 919 1 65 934 1 65 948 1 65 952 1 65 953 1 65 954 1 65 968 1 65 972 1 65 973 1 65 974 1 65 988 1 65 989 1 65 990 1 65 994 1 65 995 1 65 996 1 65 1010 1 65 1025 1 65 1039 1 65 1043 1 65 1044 1 65 1045 1 65 1060 1 65 1074 1 65 1078 1 65 1079 1 65 1080 1 65 1094 1 65 1098 1 65 1099 1 65 1100 1 65 1114 1 65 1115 1 65 1116 1 65 1120 1 65 1121 1 65 1122 1 65 1130 1 65 1144 1 65 1148 1 65 1149 1 65 1150 1 65 1164 1 65 1168 1 65 1169 1 65 1170 1 65 1184 1 65 1185 1 65 1186 1 65 1190 1 65 1191 1 65 1192 1 65 1199 1 65 1203 1 65 1204 1 65 1205 1 65 1219 1 65 1220 1 65 1221 1 65 1225 1 65 1226 1 65 1227 1 65 1234 1 65 1235 1 65 1236 1 65 1240 1 65 1241 1 65 1242 1 65 1249 1 65 1250 1 65 1251 1 65 1253 1 65 1262 1 65 1277 1 65 1291 1 65 1295 1 65 1296 1 65 1297 1 65 1312 1 65 1326 1 65 1330 1 65 1331 1 65 1332 1 65 1346 1 65 1350 1 65 1351 1 65 1352 1 65 1366 1 65 1367 1 65 1368 1 65 1372 1 65 1373 1 65 1374 1 65 1382 1 65 1396 1 65 1400 1 65 1401 1 65 1402 1 65 1416 1 65 1420 1 65 1421 1 65 1422 1 65 1436 1 65 1437 1 65 1438 1 65 1442 1 65 1443 1 65 1444 1 65 1451 1 65 1455 1 65 1456 1 65 1457 1 65 1471 1 65 1472 1 65 1473 1 65 1477 1 65 1478 1 65 1479 1 65 1486 1 65 1487 1 65 1488 1 65 1492 1 65 1493 1 65 1494 1 65 1501 1 65 1502 1 65 1503 1 65 1505 1 65 1508 1 65 1522 1 65 1526 1 65 1527 1 65 1528 1 65 1542 1 65 1546 1 65 1547 1 65 1548 1 65 1562 1 65 1563 1 65 1564 1 65 1568 1 65 1569 1 65 1570 1 65 1577 1 65 1581 1 65 1582 1 65 1583 1 65 1597 1 65 1598 1 65 1599 1 65 1603 1 65 1604 1 65 1605 1 65 1612 1 65 1613 1 65 1614 1 65 1618 1 65 1619 1 65 1620 1 65 1627 1 65 1628 1 65 1629 1 65 1631 1 65 1633 1 65 1637 1 65 1638 1 65 1639 1 65 1653 1 65 1654 1 65 1655 1 65 1659 1 65 1660 1 65 1661 1 65 1668 1 65 1669 1 65 1670 1 65 1674 1 65 1675 1 65 1676 1 65 1683 1 65 1684 1 65 1685 1 65 1687 1 65 1689 1 65 1690 1 65 1691 1 65 1695 1 65 1696 1 65 1697 1 65 1704 1 65 1705 1 65 1706 1 65 1708 1 65 1710 1 65 1711 1 65 1712 1 65 1714 1 65 1716 1 66 24 1 66 52 1 66 73 1 66 88 1 66 102 1 66 105 1 66 108 1 66 109 1 66 136 1 66 157 1 66 172 1 66 186 1 66 189 1 66 192 1 66 193 1 66 213 1 66 228 1 66 242 1 66 245 1 66 248 1 66 249 1 66 263 1 66 277 1 66 280 1 66 283 1 66 284 1 66 297 1 66 300 1 66 303 1 66 304 1 66 316 1 66 319 1 66 320 1 66 322 1 66 323 1 66 325 1 66 346 1 66 367 1 66 382 1 66 396 1 66 399 1 66 402 1 66 403 1 66 423 1 66 438 1 66 452 1 66 455 1 66 458 1 66 459 1 66 473 1 66 487 1 66 490 1 66 493 1 66 494 1 66 507 1 66 510 1 66 513 1 66 514 1 66 526 1 66 529 1 66 530 1 66 532 1 66 533 1 66 535 1 66 549 1 66 564 1 66 578 1 66 581 1 66 584 1 66 585 1 66 599 1 66 613 1 66 616 1 66 619 1 66 620 1 66 633 1 66 636 1 66 639 1 66 640 1 66 652 1 66 655 1 66 656 1 66 658 1 66 659 1 66 661 1 66 669 1 66 683 1 66 686 1 66 689 1 66 690 1 66 703 1 66 706 1 66 709 1 66 710 1 66 722 1 66 725 1 66 726 1 66 728 1 66 729 1 66 731 1 66 738 1 66 741 1 66 744 1 66 745 1 66 757 1 66 760 1 66 761 1 66 763 1 66 764 1 66 766 1 66 772 1 66 775 1 66 776 1 66 778 1 66 779 1 66 781 1 66 787 1 66 788 1 66 790 1 66 791 1 66 808 1 66 829 1 66 844 1 66 858 1 66 861 1 66 864 1 66 865 1 66 885 1 66 900 1 66 914 1 66 917 1 66 920 1 66 921 1 66 935 1 66 949 1 66 952 1 66 955 1 66 956 1 66 969 1 66 972 1 66 975 1 66 976 1 66 988 1 66 991 1 66 992 1 66 994 1 66 995 1 66 997 1 66 1011 1 66 1026 1 66 1040 1 66 1043 1 66 1046 1 66 1047 1 66 1061 1 66 1075 1 66 1078 1 66 1081 1 66 1082 1 66 1095 1 66 1098 1 66 1101 1 66 1102 1 66 1114 1 66 1117 1 66 1118 1 66 1120 1 66 1121 1 66 1123 1 66 1131 1 66 1145 1 66 1148 1 66 1151 1 66 1152 1 66 1165 1 66 1168 1 66 1171 1 66 1172 1 66 1184 1 66 1187 1 66 1188 1 66 1190 1 66 1191 1 66 1193 1 66 1200 1 66 1203 1 66 1206 1 66 1207 1 66 1219 1 66 1222 1 66 1223 1 66 1225 1 66 1226 1 66 1228 1 66 1234 1 66 1237 1 66 1238 1 66 1240 1 66 1241 1 66 1243 1 66 1249 1 66 1250 1 66 1252 1 66 1253 1 66 1263 1 66 1278 1 66 1292 1 66 1295 1 66 1298 1 66 1299 1 66 1313 1 66 1327 1 66 1330 1 66 1333 1 66 1334 1 66 1347 1 66 1350 1 66 1353 1 66 1354 1 66 1366 1 66 1369 1 66 1370 1 66 1372 1 66 1373 1 66 1375 1 66 1383 1 66 1397 1 66 1400 1 66 1403 1 66 1404 1 66 1417 1 66 1420 1 66 1423 1 66 1424 1 66 1436 1 66 1439 1 66 1440 1 66 1442 1 66 1443 1 66 1445 1 66 1452 1 66 1455 1 66 1458 1 66 1459 1 66 1471 1 66 1474 1 66 1475 1 66 1477 1 66 1478 1 66 1480 1 66 1486 1 66 1489 1 66 1490 1 66 1492 1 66 1493 1 66 1495 1 66 1501 1 66 1502 1 66 1504 1 66 1505 1 66 1509 1 66 1523 1 66 1526 1 66 1529 1 66 1530 1 66 1543 1 66 1546 1 66 1549 1 66 1550 1 66 1562 1 66 1565 1 66 1566 1 66 1568 1 66 1569 1 66 1571 1 66 1578 1 66 1581 1 66 1584 1 66 1585 1 66 1597 1 66 1600 1 66 1601 1 66 1603 1 66 1604 1 66 1606 1 66 1612 1 66 1615 1 66 1616 1 66 1618 1 66 1619 1 66 1621 1 66 1627 1 66 1628 1 66 1630 1 66 1631 1 66 1634 1 66 1637 1 66 1640 1 66 1641 1 66 1653 1 66 1656 1 66 1657 1 66 1659 1 66 1660 1 66 1662 1 66 1668 1 66 1671 1 66 1672 1 66 1674 1 66 1675 1 66 1677 1 66 1683 1 66 1684 1 66 1686 1 66 1687 1 66 1689 1 66 1692 1 66 1693 1 66 1695 1 66 1696 1 66 1698 1 66 1704 1 66 1705 1 66 1707 1 66 1708 1 66 1710 1 66 1711 1 66 1713 1 66 1714 1 66 1716 1 67 25 1 67 53 1 67 74 1 67 89 1 67 103 1 67 106 1 67 108 1 67 110 1 67 137 1 67 158 1 67 173 1 67 187 1 67 190 1 67 192 1 67 194 1 67 214 1 67 229 1 67 243 1 67 246 1 67 248 1 67 250 1 67 264 1 67 278 1 67 281 1 67 283 1 67 285 1 67 298 1 67 301 1 67 303 1 67 305 1 67 317 1 67 319 1 67 321 1 67 322 1 67 324 1 67 325 1 67 347 1 67 368 1 67 383 1 67 397 1 67 400 1 67 402 1 67 404 1 67 424 1 67 439 1 67 453 1 67 456 1 67 458 1 67 460 1 67 474 1 67 488 1 67 491 1 67 493 1 67 495 1 67 508 1 67 511 1 67 513 1 67 515 1 67 527 1 67 529 1 67 531 1 67 532 1 67 534 1 67 535 1 67 550 1 67 565 1 67 579 1 67 582 1 67 584 1 67 586 1 67 600 1 67 614 1 67 617 1 67 619 1 67 621 1 67 634 1 67 637 1 67 639 1 67 641 1 67 653 1 67 655 1 67 657 1 67 658 1 67 660 1 67 661 1 67 670 1 67 684 1 67 687 1 67 689 1 67 691 1 67 704 1 67 707 1 67 709 1 67 711 1 67 723 1 67 725 1 67 727 1 67 728 1 67 730 1 67 731 1 67 739 1 67 742 1 67 744 1 67 746 1 67 758 1 67 760 1 67 762 1 67 763 1 67 765 1 67 766 1 67 773 1 67 775 1 67 777 1 67 778 1 67 780 1 67 781 1 67 787 1 67 789 1 67 790 1 67 791 1 67 809 1 67 830 1 67 845 1 67 859 1 67 862 1 67 864 1 67 866 1 67 886 1 67 901 1 67 915 1 67 918 1 67 920 1 67 922 1 67 936 1 67 950 1 67 953 1 67 955 1 67 957 1 67 970 1 67 973 1 67 975 1 67 977 1 67 989 1 67 991 1 67 993 1 67 994 1 67 996 1 67 997 1 67 1012 1 67 1027 1 67 1041 1 67 1044 1 67 1046 1 67 1048 1 67 1062 1 67 1076 1 67 1079 1 67 1081 1 67 1083 1 67 1096 1 67 1099 1 67 1101 1 67 1103 1 67 1115 1 67 1117 1 67 1119 1 67 1120 1 67 1122 1 67 1123 1 67 1132 1 67 1146 1 67 1149 1 67 1151 1 67 1153 1 67 1166 1 67 1169 1 67 1171 1 67 1173 1 67 1185 1 67 1187 1 67 1189 1 67 1190 1 67 1192 1 67 1193 1 67 1201 1 67 1204 1 67 1206 1 67 1208 1 67 1220 1 67 1222 1 67 1224 1 67 1225 1 67 1227 1 67 1228 1 67 1235 1 67 1237 1 67 1239 1 67 1240 1 67 1242 1 67 1243 1 67 1249 1 67 1251 1 67 1252 1 67 1253 1 67 1264 1 67 1279 1 67 1293 1 67 1296 1 67 1298 1 67 1300 1 67 1314 1 67 1328 1 67 1331 1 67 1333 1 67 1335 1 67 1348 1 67 1351 1 67 1353 1 67 1355 1 67 1367 1 67 1369 1 67 1371 1 67 1372 1 67 1374 1 67 1375 1 67 1384 1 67 1398 1 67 1401 1 67 1403 1 67 1405 1 67 1418 1 67 1421 1 67 1423 1 67 1425 1 67 1437 1 67 1439 1 67 1441 1 67 1442 1 67 1444 1 67 1445 1 67 1453 1 67 1456 1 67 1458 1 67 1460 1 67 1472 1 67 1474 1 67 1476 1 67 1477 1 67 1479 1 67 1480 1 67 1487 1 67 1489 1 67 1491 1 67 1492 1 67 1494 1 67 1495 1 67 1501 1 67 1503 1 67 1504 1 67 1505 1 67 1510 1 67 1524 1 67 1527 1 67 1529 1 67 1531 1 67 1544 1 67 1547 1 67 1549 1 67 1551 1 67 1563 1 67 1565 1 67 1567 1 67 1568 1 67 1570 1 67 1571 1 67 1579 1 67 1582 1 67 1584 1 67 1586 1 67 1598 1 67 1600 1 67 1602 1 67 1603 1 67 1605 1 67 1606 1 67 1613 1 67 1615 1 67 1617 1 67 1618 1 67 1620 1 67 1621 1 67 1627 1 67 1629 1 67 1630 1 67 1631 1 67 1635 1 67 1638 1 67 1640 1 67 1642 1 67 1654 1 67 1656 1 67 1658 1 67 1659 1 67 1661 1 67 1662 1 67 1669 1 67 1671 1 67 1673 1 67 1674 1 67 1676 1 67 1677 1 67 1683 1 67 1685 1 67 1686 1 67 1687 1 67 1690 1 67 1692 1 67 1694 1 67 1695 1 67 1697 1 67 1698 1 67 1704 1 67 1706 1 67 1707 1 67 1708 1 67 1710 1 67 1712 1 67 1713 1 67 1714 1 67 1716 1 68 26 1 68 54 1 68 75 1 68 90 1 68 104 1 68 107 1 68 109 1 68 110 1 68 138 1 68 159 1 68 174 1 68 188 1 68 191 1 68 193 1 68 194 1 68 215 1 68 230 1 68 244 1 68 247 1 68 249 1 68 250 1 68 265 1 68 279 1 68 282 1 68 284 1 68 285 1 68 299 1 68 302 1 68 304 1 68 305 1 68 318 1 68 320 1 68 321 1 68 323 1 68 324 1 68 325 1 68 348 1 68 369 1 68 384 1 68 398 1 68 401 1 68 403 1 68 404 1 68 425 1 68 440 1 68 454 1 68 457 1 68 459 1 68 460 1 68 475 1 68 489 1 68 492 1 68 494 1 68 495 1 68 509 1 68 512 1 68 514 1 68 515 1 68 528 1 68 530 1 68 531 1 68 533 1 68 534 1 68 535 1 68 551 1 68 566 1 68 580 1 68 583 1 68 585 1 68 586 1 68 601 1 68 615 1 68 618 1 68 620 1 68 621 1 68 635 1 68 638 1 68 640 1 68 641 1 68 654 1 68 656 1 68 657 1 68 659 1 68 660 1 68 661 1 68 671 1 68 685 1 68 688 1 68 690 1 68 691 1 68 705 1 68 708 1 68 710 1 68 711 1 68 724 1 68 726 1 68 727 1 68 729 1 68 730 1 68 731 1 68 740 1 68 743 1 68 745 1 68 746 1 68 759 1 68 761 1 68 762 1 68 764 1 68 765 1 68 766 1 68 774 1 68 776 1 68 777 1 68 779 1 68 780 1 68 781 1 68 788 1 68 789 1 68 790 1 68 791 1 68 810 1 68 831 1 68 846 1 68 860 1 68 863 1 68 865 1 68 866 1 68 887 1 68 902 1 68 916 1 68 919 1 68 921 1 68 922 1 68 937 1 68 951 1 68 954 1 68 956 1 68 957 1 68 971 1 68 974 1 68 976 1 68 977 1 68 990 1 68 992 1 68 993 1 68 995 1 68 996 1 68 997 1 68 1013 1 68 1028 1 68 1042 1 68 1045 1 68 1047 1 68 1048 1 68 1063 1 68 1077 1 68 1080 1 68 1082 1 68 1083 1 68 1097 1 68 1100 1 68 1102 1 68 1103 1 68 1116 1 68 1118 1 68 1119 1 68 1121 1 68 1122 1 68 1123 1 68 1133 1 68 1147 1 68 1150 1 68 1152 1 68 1153 1 68 1167 1 68 1170 1 68 1172 1 68 1173 1 68 1186 1 68 1188 1 68 1189 1 68 1191 1 68 1192 1 68 1193 1 68 1202 1 68 1205 1 68 1207 1 68 1208 1 68 1221 1 68 1223 1 68 1224 1 68 1226 1 68 1227 1 68 1228 1 68 1236 1 68 1238 1 68 1239 1 68 1241 1 68 1242 1 68 1243 1 68 1250 1 68 1251 1 68 1252 1 68 1253 1 68 1265 1 68 1280 1 68 1294 1 68 1297 1 68 1299 1 68 1300 1 68 1315 1 68 1329 1 68 1332 1 68 1334 1 68 1335 1 68 1349 1 68 1352 1 68 1354 1 68 1355 1 68 1368 1 68 1370 1 68 1371 1 68 1373 1 68 1374 1 68 1375 1 68 1385 1 68 1399 1 68 1402 1 68 1404 1 68 1405 1 68 1419 1 68 1422 1 68 1424 1 68 1425 1 68 1438 1 68 1440 1 68 1441 1 68 1443 1 68 1444 1 68 1445 1 68 1454 1 68 1457 1 68 1459 1 68 1460 1 68 1473 1 68 1475 1 68 1476 1 68 1478 1 68 1479 1 68 1480 1 68 1488 1 68 1490 1 68 1491 1 68 1493 1 68 1494 1 68 1495 1 68 1502 1 68 1503 1 68 1504 1 68 1505 1 68 1511 1 68 1525 1 68 1528 1 68 1530 1 68 1531 1 68 1545 1 68 1548 1 68 1550 1 68 1551 1 68 1564 1 68 1566 1 68 1567 1 68 1569 1 68 1570 1 68 1571 1 68 1580 1 68 1583 1 68 1585 1 68 1586 1 68 1599 1 68 1601 1 68 1602 1 68 1604 1 68 1605 1 68 1606 1 68 1614 1 68 1616 1 68 1617 1 68 1619 1 68 1620 1 68 1621 1 68 1628 1 68 1629 1 68 1630 1 68 1631 1 68 1636 1 68 1639 1 68 1641 1 68 1642 1 68 1655 1 68 1657 1 68 1658 1 68 1660 1 68 1661 1 68 1662 1 68 1670 1 68 1672 1 68 1673 1 68 1675 1 68 1676 1 68 1677 1 68 1684 1 68 1685 1 68 1686 1 68 1687 1 68 1691 1 68 1693 1 68 1694 1 68 1696 1 68 1697 1 68 1698 1 68 1705 1 68 1706 1 68 1707 1 68 1708 1 68 1711 1 68 1712 1 68 1713 1 68 1714 1 68 1716 1 69 27 1 69 55 1 69 76 1 69 91 1 69 101 1 69 111 1 69 112 1 69 113 1 69 139 1 69 160 1 69 175 1 69 185 1 69 195 1 69 196 1 69 197 1 69 216 1 69 231 1 69 241 1 69 251 1 69 252 1 69 253 1 69 266 1 69 276 1 69 286 1 69 287 1 69 288 1 69 296 1 69 306 1 69 307 1 69 308 1 69 316 1 69 317 1 69 318 1 69 326 1 69 327 1 69 328 1 69 349 1 69 370 1 69 385 1 69 395 1 69 405 1 69 406 1 69 407 1 69 426 1 69 441 1 69 451 1 69 461 1 69 462 1 69 463 1 69 476 1 69 486 1 69 496 1 69 497 1 69 498 1 69 506 1 69 516 1 69 517 1 69 518 1 69 526 1 69 527 1 69 528 1 69 536 1 69 537 1 69 538 1 69 552 1 69 567 1 69 577 1 69 587 1 69 588 1 69 589 1 69 602 1 69 612 1 69 622 1 69 623 1 69 624 1 69 632 1 69 642 1 69 643 1 69 644 1 69 652 1 69 653 1 69 654 1 69 662 1 69 663 1 69 664 1 69 672 1 69 682 1 69 692 1 69 693 1 69 694 1 69 702 1 69 712 1 69 713 1 69 714 1 69 722 1 69 723 1 69 724 1 69 732 1 69 733 1 69 734 1 69 737 1 69 747 1 69 748 1 69 749 1 69 757 1 69 758 1 69 759 1 69 767 1 69 768 1 69 769 1 69 772 1 69 773 1 69 774 1 69 782 1 69 783 1 69 784 1 69 787 1 69 788 1 69 789 1 69 792 1 69 811 1 69 832 1 69 847 1 69 857 1 69 867 1 69 868 1 69 869 1 69 888 1 69 903 1 69 913 1 69 923 1 69 924 1 69 925 1 69 938 1 69 948 1 69 958 1 69 959 1 69 960 1 69 968 1 69 978 1 69 979 1 69 980 1 69 988 1 69 989 1 69 990 1 69 998 1 69 999 1 69 1000 1 69 1014 1 69 1029 1 69 1039 1 69 1049 1 69 1050 1 69 1051 1 69 1064 1 69 1074 1 69 1084 1 69 1085 1 69 1086 1 69 1094 1 69 1104 1 69 1105 1 69 1106 1 69 1114 1 69 1115 1 69 1116 1 69 1124 1 69 1125 1 69 1126 1 69 1134 1 69 1144 1 69 1154 1 69 1155 1 69 1156 1 69 1164 1 69 1174 1 69 1175 1 69 1176 1 69 1184 1 69 1185 1 69 1186 1 69 1194 1 69 1195 1 69 1196 1 69 1199 1 69 1209 1 69 1210 1 69 1211 1 69 1219 1 69 1220 1 69 1221 1 69 1229 1 69 1230 1 69 1231 1 69 1234 1 69 1235 1 69 1236 1 69 1244 1 69 1245 1 69 1246 1 69 1249 1 69 1250 1 69 1251 1 69 1254 1 69 1266 1 69 1281 1 69 1291 1 69 1301 1 69 1302 1 69 1303 1 69 1316 1 69 1326 1 69 1336 1 69 1337 1 69 1338 1 69 1346 1 69 1356 1 69 1357 1 69 1358 1 69 1366 1 69 1367 1 69 1368 1 69 1376 1 69 1377 1 69 1378 1 69 1386 1 69 1396 1 69 1406 1 69 1407 1 69 1408 1 69 1416 1 69 1426 1 69 1427 1 69 1428 1 69 1436 1 69 1437 1 69 1438 1 69 1446 1 69 1447 1 69 1448 1 69 1451 1 69 1461 1 69 1462 1 69 1463 1 69 1471 1 69 1472 1 69 1473 1 69 1481 1 69 1482 1 69 1483 1 69 1486 1 69 1487 1 69 1488 1 69 1496 1 69 1497 1 69 1498 1 69 1501 1 69 1502 1 69 1503 1 69 1506 1 69 1512 1 69 1522 1 69 1532 1 69 1533 1 69 1534 1 69 1542 1 69 1552 1 69 1553 1 69 1554 1 69 1562 1 69 1563 1 69 1564 1 69 1572 1 69 1573 1 69 1574 1 69 1577 1 69 1587 1 69 1588 1 69 1589 1 69 1597 1 69 1598 1 69 1599 1 69 1607 1 69 1608 1 69 1609 1 69 1612 1 69 1613 1 69 1614 1 69 1622 1 69 1623 1 69 1624 1 69 1627 1 69 1628 1 69 1629 1 69 1632 1 69 1633 1 69 1643 1 69 1644 1 69 1645 1 69 1653 1 69 1654 1 69 1655 1 69 1663 1 69 1664 1 69 1665 1 69 1668 1 69 1669 1 69 1670 1 69 1678 1 69 1679 1 69 1680 1 69 1683 1 69 1684 1 69 1685 1 69 1688 1 69 1689 1 69 1690 1 69 1691 1 69 1699 1 69 1700 1 69 1701 1 69 1704 1 69 1705 1 69 1706 1 69 1709 1 69 1710 1 69 1711 1 69 1712 1 69 1715 1 69 1716 1 70 28 1 70 56 1 70 77 1 70 92 1 70 102 1 70 111 1 70 114 1 70 115 1 70 140 1 70 161 1 70 176 1 70 186 1 70 195 1 70 198 1 70 199 1 70 217 1 70 232 1 70 242 1 70 251 1 70 254 1 70 255 1 70 267 1 70 277 1 70 286 1 70 289 1 70 290 1 70 297 1 70 306 1 70 309 1 70 310 1 70 316 1 70 319 1 70 320 1 70 326 1 70 327 1 70 329 1 70 350 1 70 371 1 70 386 1 70 396 1 70 405 1 70 408 1 70 409 1 70 427 1 70 442 1 70 452 1 70 461 1 70 464 1 70 465 1 70 477 1 70 487 1 70 496 1 70 499 1 70 500 1 70 507 1 70 516 1 70 519 1 70 520 1 70 526 1 70 529 1 70 530 1 70 536 1 70 537 1 70 539 1 70 553 1 70 568 1 70 578 1 70 587 1 70 590 1 70 591 1 70 603 1 70 613 1 70 622 1 70 625 1 70 626 1 70 633 1 70 642 1 70 645 1 70 646 1 70 652 1 70 655 1 70 656 1 70 662 1 70 663 1 70 665 1 70 673 1 70 683 1 70 692 1 70 695 1 70 696 1 70 703 1 70 712 1 70 715 1 70 716 1 70 722 1 70 725 1 70 726 1 70 732 1 70 733 1 70 735 1 70 738 1 70 747 1 70 750 1 70 751 1 70 757 1 70 760 1 70 761 1 70 767 1 70 768 1 70 770 1 70 772 1 70 775 1 70 776 1 70 782 1 70 783 1 70 785 1 70 787 1 70 788 1 70 790 1 70 792 1 70 812 1 70 833 1 70 848 1 70 858 1 70 867 1 70 870 1 70 871 1 70 889 1 70 904 1 70 914 1 70 923 1 70 926 1 70 927 1 70 939 1 70 949 1 70 958 1 70 961 1 70 962 1 70 969 1 70 978 1 70 981 1 70 982 1 70 988 1 70 991 1 70 992 1 70 998 1 70 999 1 70 1001 1 70 1015 1 70 1030 1 70 1040 1 70 1049 1 70 1052 1 70 1053 1 70 1065 1 70 1075 1 70 1084 1 70 1087 1 70 1088 1 70 1095 1 70 1104 1 70 1107 1 70 1108 1 70 1114 1 70 1117 1 70 1118 1 70 1124 1 70 1125 1 70 1127 1 70 1135 1 70 1145 1 70 1154 1 70 1157 1 70 1158 1 70 1165 1 70 1174 1 70 1177 1 70 1178 1 70 1184 1 70 1187 1 70 1188 1 70 1194 1 70 1195 1 70 1197 1 70 1200 1 70 1209 1 70 1212 1 70 1213 1 70 1219 1 70 1222 1 70 1223 1 70 1229 1 70 1230 1 70 1232 1 70 1234 1 70 1237 1 70 1238 1 70 1244 1 70 1245 1 70 1247 1 70 1249 1 70 1250 1 70 1252 1 70 1254 1 70 1267 1 70 1282 1 70 1292 1 70 1301 1 70 1304 1 70 1305 1 70 1317 1 70 1327 1 70 1336 1 70 1339 1 70 1340 1 70 1347 1 70 1356 1 70 1359 1 70 1360 1 70 1366 1 70 1369 1 70 1370 1 70 1376 1 70 1377 1 70 1379 1 70 1387 1 70 1397 1 70 1406 1 70 1409 1 70 1410 1 70 1417 1 70 1426 1 70 1429 1 70 1430 1 70 1436 1 70 1439 1 70 1440 1 70 1446 1 70 1447 1 70 1449 1 70 1452 1 70 1461 1 70 1464 1 70 1465 1 70 1471 1 70 1474 1 70 1475 1 70 1481 1 70 1482 1 70 1484 1 70 1486 1 70 1489 1 70 1490 1 70 1496 1 70 1497 1 70 1499 1 70 1501 1 70 1502 1 70 1504 1 70 1506 1 70 1513 1 70 1523 1 70 1532 1 70 1535 1 70 1536 1 70 1543 1 70 1552 1 70 1555 1 70 1556 1 70 1562 1 70 1565 1 70 1566 1 70 1572 1 70 1573 1 70 1575 1 70 1578 1 70 1587 1 70 1590 1 70 1591 1 70 1597 1 70 1600 1 70 1601 1 70 1607 1 70 1608 1 70 1610 1 70 1612 1 70 1615 1 70 1616 1 70 1622 1 70 1623 1 70 1625 1 70 1627 1 70 1628 1 70 1630 1 70 1632 1 70 1634 1 70 1643 1 70 1646 1 70 1647 1 70 1653 1 70 1656 1 70 1657 1 70 1663 1 70 1664 1 70 1666 1 70 1668 1 70 1671 1 70 1672 1 70 1678 1 70 1679 1 70 1681 1 70 1683 1 70 1684 1 70 1686 1 70 1688 1 70 1689 1 70 1692 1 70 1693 1 70 1699 1 70 1700 1 70 1702 1 70 1704 1 70 1705 1 70 1707 1 70 1709 1 70 1710 1 70 1711 1 70 1713 1 70 1715 1 70 1716 1 71 29 1 71 57 1 71 78 1 71 93 1 71 103 1 71 112 1 71 114 1 71 116 1 71 141 1 71 162 1 71 177 1 71 187 1 71 196 1 71 198 1 71 200 1 71 218 1 71 233 1 71 243 1 71 252 1 71 254 1 71 256 1 71 268 1 71 278 1 71 287 1 71 289 1 71 291 1 71 298 1 71 307 1 71 309 1 71 311 1 71 317 1 71 319 1 71 321 1 71 326 1 71 328 1 71 329 1 71 351 1 71 372 1 71 387 1 71 397 1 71 406 1 71 408 1 71 410 1 71 428 1 71 443 1 71 453 1 71 462 1 71 464 1 71 466 1 71 478 1 71 488 1 71 497 1 71 499 1 71 501 1 71 508 1 71 517 1 71 519 1 71 521 1 71 527 1 71 529 1 71 531 1 71 536 1 71 538 1 71 539 1 71 554 1 71 569 1 71 579 1 71 588 1 71 590 1 71 592 1 71 604 1 71 614 1 71 623 1 71 625 1 71 627 1 71 634 1 71 643 1 71 645 1 71 647 1 71 653 1 71 655 1 71 657 1 71 662 1 71 664 1 71 665 1 71 674 1 71 684 1 71 693 1 71 695 1 71 697 1 71 704 1 71 713 1 71 715 1 71 717 1 71 723 1 71 725 1 71 727 1 71 732 1 71 734 1 71 735 1 71 739 1 71 748 1 71 750 1 71 752 1 71 758 1 71 760 1 71 762 1 71 767 1 71 769 1 71 770 1 71 773 1 71 775 1 71 777 1 71 782 1 71 784 1 71 785 1 71 787 1 71 789 1 71 790 1 71 792 1 71 813 1 71 834 1 71 849 1 71 859 1 71 868 1 71 870 1 71 872 1 71 890 1 71 905 1 71 915 1 71 924 1 71 926 1 71 928 1 71 940 1 71 950 1 71 959 1 71 961 1 71 963 1 71 970 1 71 979 1 71 981 1 71 983 1 71 989 1 71 991 1 71 993 1 71 998 1 71 1000 1 71 1001 1 71 1016 1 71 1031 1 71 1041 1 71 1050 1 71 1052 1 71 1054 1 71 1066 1 71 1076 1 71 1085 1 71 1087 1 71 1089 1 71 1096 1 71 1105 1 71 1107 1 71 1109 1 71 1115 1 71 1117 1 71 1119 1 71 1124 1 71 1126 1 71 1127 1 71 1136 1 71 1146 1 71 1155 1 71 1157 1 71 1159 1 71 1166 1 71 1175 1 71 1177 1 71 1179 1 71 1185 1 71 1187 1 71 1189 1 71 1194 1 71 1196 1 71 1197 1 71 1201 1 71 1210 1 71 1212 1 71 1214 1 71 1220 1 71 1222 1 71 1224 1 71 1229 1 71 1231 1 71 1232 1 71 1235 1 71 1237 1 71 1239 1 71 1244 1 71 1246 1 71 1247 1 71 1249 1 71 1251 1 71 1252 1 71 1254 1 71 1268 1 71 1283 1 71 1293 1 71 1302 1 71 1304 1 71 1306 1 71 1318 1 71 1328 1 71 1337 1 71 1339 1 71 1341 1 71 1348 1 71 1357 1 71 1359 1 71 1361 1 71 1367 1 71 1369 1 71 1371 1 71 1376 1 71 1378 1 71 1379 1 71 1388 1 71 1398 1 71 1407 1 71 1409 1 71 1411 1 71 1418 1 71 1427 1 71 1429 1 71 1431 1 71 1437 1 71 1439 1 71 1441 1 71 1446 1 71 1448 1 71 1449 1 71 1453 1 71 1462 1 71 1464 1 71 1466 1 71 1472 1 71 1474 1 71 1476 1 71 1481 1 71 1483 1 71 1484 1 71 1487 1 71 1489 1 71 1491 1 71 1496 1 71 1498 1 71 1499 1 71 1501 1 71 1503 1 71 1504 1 71 1506 1 71 1514 1 71 1524 1 71 1533 1 71 1535 1 71 1537 1 71 1544 1 71 1553 1 71 1555 1 71 1557 1 71 1563 1 71 1565 1 71 1567 1 71 1572 1 71 1574 1 71 1575 1 71 1579 1 71 1588 1 71 1590 1 71 1592 1 71 1598 1 71 1600 1 71 1602 1 71 1607 1 71 1609 1 71 1610 1 71 1613 1 71 1615 1 71 1617 1 71 1622 1 71 1624 1 71 1625 1 71 1627 1 71 1629 1 71 1630 1 71 1632 1 71 1635 1 71 1644 1 71 1646 1 71 1648 1 71 1654 1 71 1656 1 71 1658 1 71 1663 1 71 1665 1 71 1666 1 71 1669 1 71 1671 1 71 1673 1 71 1678 1 71 1680 1 71 1681 1 71 1683 1 71 1685 1 71 1686 1 71 1688 1 71 1690 1 71 1692 1 71 1694 1 71 1699 1 71 1701 1 71 1702 1 71 1704 1 71 1706 1 71 1707 1 71 1709 1 71 1710 1 71 1712 1 71 1713 1 71 1715 1 71 1716 1 72 30 1 72 58 1 72 79 1 72 94 1 72 104 1 72 113 1 72 115 1 72 116 1 72 142 1 72 163 1 72 178 1 72 188 1 72 197 1 72 199 1 72 200 1 72 219 1 72 234 1 72 244 1 72 253 1 72 255 1 72 256 1 72 269 1 72 279 1 72 288 1 72 290 1 72 291 1 72 299 1 72 308 1 72 310 1 72 311 1 72 318 1 72 320 1 72 321 1 72 327 1 72 328 1 72 329 1 72 352 1 72 373 1 72 388 1 72 398 1 72 407 1 72 409 1 72 410 1 72 429 1 72 444 1 72 454 1 72 463 1 72 465 1 72 466 1 72 479 1 72 489 1 72 498 1 72 500 1 72 501 1 72 509 1 72 518 1 72 520 1 72 521 1 72 528 1 72 530 1 72 531 1 72 537 1 72 538 1 72 539 1 72 555 1 72 570 1 72 580 1 72 589 1 72 591 1 72 592 1 72 605 1 72 615 1 72 624 1 72 626 1 72 627 1 72 635 1 72 644 1 72 646 1 72 647 1 72 654 1 72 656 1 72 657 1 72 663 1 72 664 1 72 665 1 72 675 1 72 685 1 72 694 1 72 696 1 72 697 1 72 705 1 72 714 1 72 716 1 72 717 1 72 724 1 72 726 1 72 727 1 72 733 1 72 734 1 72 735 1 72 740 1 72 749 1 72 751 1 72 752 1 72 759 1 72 761 1 72 762 1 72 768 1 72 769 1 72 770 1 72 774 1 72 776 1 72 777 1 72 783 1 72 784 1 72 785 1 72 788 1 72 789 1 72 790 1 72 792 1 72 814 1 72 835 1 72 850 1 72 860 1 72 869 1 72 871 1 72 872 1 72 891 1 72 906 1 72 916 1 72 925 1 72 927 1 72 928 1 72 941 1 72 951 1 72 960 1 72 962 1 72 963 1 72 971 1 72 980 1 72 982 1 72 983 1 72 990 1 72 992 1 72 993 1 72 999 1 72 1000 1 72 1001 1 72 1017 1 72 1032 1 72 1042 1 72 1051 1 72 1053 1 72 1054 1 72 1067 1 72 1077 1 72 1086 1 72 1088 1 72 1089 1 72 1097 1 72 1106 1 72 1108 1 72 1109 1 72 1116 1 72 1118 1 72 1119 1 72 1125 1 72 1126 1 72 1127 1 72 1137 1 72 1147 1 72 1156 1 72 1158 1 72 1159 1 72 1167 1 72 1176 1 72 1178 1 72 1179 1 72 1186 1 72 1188 1 72 1189 1 72 1195 1 72 1196 1 72 1197 1 72 1202 1 72 1211 1 72 1213 1 72 1214 1 72 1221 1 72 1223 1 72 1224 1 72 1230 1 72 1231 1 72 1232 1 72 1236 1 72 1238 1 72 1239 1 72 1245 1 72 1246 1 72 1247 1 72 1250 1 72 1251 1 72 1252 1 72 1254 1 72 1269 1 72 1284 1 72 1294 1 72 1303 1 72 1305 1 72 1306 1 72 1319 1 72 1329 1 72 1338 1 72 1340 1 72 1341 1 72 1349 1 72 1358 1 72 1360 1 72 1361 1 72 1368 1 72 1370 1 72 1371 1 72 1377 1 72 1378 1 72 1379 1 72 1389 1 72 1399 1 72 1408 1 72 1410 1 72 1411 1 72 1419 1 72 1428 1 72 1430 1 72 1431 1 72 1438 1 72 1440 1 72 1441 1 72 1447 1 72 1448 1 72 1449 1 72 1454 1 72 1463 1 72 1465 1 72 1466 1 72 1473 1 72 1475 1 72 1476 1 72 1482 1 72 1483 1 72 1484 1 72 1488 1 72 1490 1 72 1491 1 72 1497 1 72 1498 1 72 1499 1 72 1502 1 72 1503 1 72 1504 1 72 1506 1 72 1515 1 72 1525 1 72 1534 1 72 1536 1 72 1537 1 72 1545 1 72 1554 1 72 1556 1 72 1557 1 72 1564 1 72 1566 1 72 1567 1 72 1573 1 72 1574 1 72 1575 1 72 1580 1 72 1589 1 72 1591 1 72 1592 1 72 1599 1 72 1601 1 72 1602 1 72 1608 1 72 1609 1 72 1610 1 72 1614 1 72 1616 1 72 1617 1 72 1623 1 72 1624 1 72 1625 1 72 1628 1 72 1629 1 72 1630 1 72 1632 1 72 1636 1 72 1645 1 72 1647 1 72 1648 1 72 1655 1 72 1657 1 72 1658 1 72 1664 1 72 1665 1 72 1666 1 72 1670 1 72 1672 1 72 1673 1 72 1679 1 72 1680 1 72 1681 1 72 1684 1 72 1685 1 72 1686 1 72 1688 1 72 1691 1 72 1693 1 72 1694 1 72 1700 1 72 1701 1 72 1702 1 72 1705 1 72 1706 1 72 1707 1 72 1709 1 72 1711 1 72 1712 1 72 1713 1 72 1715 1 72 1716 1 73 31 1 73 59 1 73 80 1 73 95 1 73 105 1 73 111 1 73 117 1 73 118 1 73 143 1 73 164 1 73 179 1 73 189 1 73 195 1 73 201 1 73 202 1 73 220 1 73 235 1 73 245 1 73 251 1 73 257 1 73 258 1 73 270 1 73 280 1 73 286 1 73 292 1 73 293 1 73 300 1 73 306 1 73 312 1 73 313 1 73 316 1 73 322 1 73 323 1 73 326 1 73 327 1 73 330 1 73 353 1 73 374 1 73 389 1 73 399 1 73 405 1 73 411 1 73 412 1 73 430 1 73 445 1 73 455 1 73 461 1 73 467 1 73 468 1 73 480 1 73 490 1 73 496 1 73 502 1 73 503 1 73 510 1 73 516 1 73 522 1 73 523 1 73 526 1 73 532 1 73 533 1 73 536 1 73 537 1 73 540 1 73 556 1 73 571 1 73 581 1 73 587 1 73 593 1 73 594 1 73 606 1 73 616 1 73 622 1 73 628 1 73 629 1 73 636 1 73 642 1 73 648 1 73 649 1 73 652 1 73 658 1 73 659 1 73 662 1 73 663 1 73 666 1 73 676 1 73 686 1 73 692 1 73 698 1 73 699 1 73 706 1 73 712 1 73 718 1 73 719 1 73 722 1 73 728 1 73 729 1 73 732 1 73 733 1 73 736 1 73 741 1 73 747 1 73 753 1 73 754 1 73 757 1 73 763 1 73 764 1 73 767 1 73 768 1 73 771 1 73 772 1 73 778 1 73 779 1 73 782 1 73 783 1 73 786 1 73 787 1 73 788 1 73 791 1 73 792 1 73 815 1 73 836 1 73 851 1 73 861 1 73 867 1 73 873 1 73 874 1 73 892 1 73 907 1 73 917 1 73 923 1 73 929 1 73 930 1 73 942 1 73 952 1 73 958 1 73 964 1 73 965 1 73 972 1 73 978 1 73 984 1 73 985 1 73 988 1 73 994 1 73 995 1 73 998 1 73 999 1 73 1002 1 73 1018 1 73 1033 1 73 1043 1 73 1049 1 73 1055 1 73 1056 1 73 1068 1 73 1078 1 73 1084 1 73 1090 1 73 1091 1 73 1098 1 73 1104 1 73 1110 1 73 1111 1 73 1114 1 73 1120 1 73 1121 1 73 1124 1 73 1125 1 73 1128 1 73 1138 1 73 1148 1 73 1154 1 73 1160 1 73 1161 1 73 1168 1 73 1174 1 73 1180 1 73 1181 1 73 1184 1 73 1190 1 73 1191 1 73 1194 1 73 1195 1 73 1198 1 73 1203 1 73 1209 1 73 1215 1 73 1216 1 73 1219 1 73 1225 1 73 1226 1 73 1229 1 73 1230 1 73 1233 1 73 1234 1 73 1240 1 73 1241 1 73 1244 1 73 1245 1 73 1248 1 73 1249 1 73 1250 1 73 1253 1 73 1254 1 73 1270 1 73 1285 1 73 1295 1 73 1301 1 73 1307 1 73 1308 1 73 1320 1 73 1330 1 73 1336 1 73 1342 1 73 1343 1 73 1350 1 73 1356 1 73 1362 1 73 1363 1 73 1366 1 73 1372 1 73 1373 1 73 1376 1 73 1377 1 73 1380 1 73 1390 1 73 1400 1 73 1406 1 73 1412 1 73 1413 1 73 1420 1 73 1426 1 73 1432 1 73 1433 1 73 1436 1 73 1442 1 73 1443 1 73 1446 1 73 1447 1 73 1450 1 73 1455 1 73 1461 1 73 1467 1 73 1468 1 73 1471 1 73 1477 1 73 1478 1 73 1481 1 73 1482 1 73 1485 1 73 1486 1 73 1492 1 73 1493 1 73 1496 1 73 1497 1 73 1500 1 73 1501 1 73 1502 1 73 1505 1 73 1506 1 73 1516 1 73 1526 1 73 1532 1 73 1538 1 73 1539 1 73 1546 1 73 1552 1 73 1558 1 73 1559 1 73 1562 1 73 1568 1 73 1569 1 73 1572 1 73 1573 1 73 1576 1 73 1581 1 73 1587 1 73 1593 1 73 1594 1 73 1597 1 73 1603 1 73 1604 1 73 1607 1 73 1608 1 73 1611 1 73 1612 1 73 1618 1 73 1619 1 73 1622 1 73 1623 1 73 1626 1 73 1627 1 73 1628 1 73 1631 1 73 1632 1 73 1637 1 73 1643 1 73 1649 1 73 1650 1 73 1653 1 73 1659 1 73 1660 1 73 1663 1 73 1664 1 73 1667 1 73 1668 1 73 1674 1 73 1675 1 73 1678 1 73 1679 1 73 1682 1 73 1683 1 73 1684 1 73 1687 1 73 1688 1 73 1689 1 73 1695 1 73 1696 1 73 1699 1 73 1700 1 73 1703 1 73 1704 1 73 1705 1 73 1708 1 73 1709 1 73 1710 1 73 1711 1 73 1714 1 73 1715 1 73 1716 1 74 32 1 74 60 1 74 81 1 74 96 1 74 106 1 74 112 1 74 117 1 74 119 1 74 144 1 74 165 1 74 180 1 74 190 1 74 196 1 74 201 1 74 203 1 74 221 1 74 236 1 74 246 1 74 252 1 74 257 1 74 259 1 74 271 1 74 281 1 74 287 1 74 292 1 74 294 1 74 301 1 74 307 1 74 312 1 74 314 1 74 317 1 74 322 1 74 324 1 74 326 1 74 328 1 74 330 1 74 354 1 74 375 1 74 390 1 74 400 1 74 406 1 74 411 1 74 413 1 74 431 1 74 446 1 74 456 1 74 462 1 74 467 1 74 469 1 74 481 1 74 491 1 74 497 1 74 502 1 74 504 1 74 511 1 74 517 1 74 522 1 74 524 1 74 527 1 74 532 1 74 534 1 74 536 1 74 538 1 74 540 1 74 557 1 74 572 1 74 582 1 74 588 1 74 593 1 74 595 1 74 607 1 74 617 1 74 623 1 74 628 1 74 630 1 74 637 1 74 643 1 74 648 1 74 650 1 74 653 1 74 658 1 74 660 1 74 662 1 74 664 1 74 666 1 74 677 1 74 687 1 74 693 1 74 698 1 74 700 1 74 707 1 74 713 1 74 718 1 74 720 1 74 723 1 74 728 1 74 730 1 74 732 1 74 734 1 74 736 1 74 742 1 74 748 1 74 753 1 74 755 1 74 758 1 74 763 1 74 765 1 74 767 1 74 769 1 74 771 1 74 773 1 74 778 1 74 780 1 74 782 1 74 784 1 74 786 1 74 787 1 74 789 1 74 791 1 74 792 1 74 816 1 74 837 1 74 852 1 74 862 1 74 868 1 74 873 1 74 875 1 74 893 1 74 908 1 74 918 1 74 924 1 74 929 1 74 931 1 74 943 1 74 953 1 74 959 1 74 964 1 74 966 1 74 973 1 74 979 1 74 984 1 74 986 1 74 989 1 74 994 1 74 996 1 74 998 1 74 1000 1 74 1002 1 74 1019 1 74 1034 1 74 1044 1 74 1050 1 74 1055 1 74 1057 1 74 1069 1 74 1079 1 74 1085 1 74 1090 1 74 1092 1 74 1099 1 74 1105 1 74 1110 1 74 1112 1 74 1115 1 74 1120 1 74 1122 1 74 1124 1 74 1126 1 74 1128 1 74 1139 1 74 1149 1 74 1155 1 74 1160 1 74 1162 1 74 1169 1 74 1175 1 74 1180 1 74 1182 1 74 1185 1 74 1190 1 74 1192 1 74 1194 1 74 1196 1 74 1198 1 74 1204 1 74 1210 1 74 1215 1 74 1217 1 74 1220 1 74 1225 1 74 1227 1 74 1229 1 74 1231 1 74 1233 1 74 1235 1 74 1240 1 74 1242 1 74 1244 1 74 1246 1 74 1248 1 74 1249 1 74 1251 1 74 1253 1 74 1254 1 74 1271 1 74 1286 1 74 1296 1 74 1302 1 74 1307 1 74 1309 1 74 1321 1 74 1331 1 74 1337 1 74 1342 1 74 1344 1 74 1351 1 74 1357 1 74 1362 1 74 1364 1 74 1367 1 74 1372 1 74 1374 1 74 1376 1 74 1378 1 74 1380 1 74 1391 1 74 1401 1 74 1407 1 74 1412 1 74 1414 1 74 1421 1 74 1427 1 74 1432 1 74 1434 1 74 1437 1 74 1442 1 74 1444 1 74 1446 1 74 1448 1 74 1450 1 74 1456 1 74 1462 1 74 1467 1 74 1469 1 74 1472 1 74 1477 1 74 1479 1 74 1481 1 74 1483 1 74 1485 1 74 1487 1 74 1492 1 74 1494 1 74 1496 1 74 1498 1 74 1500 1 74 1501 1 74 1503 1 74 1505 1 74 1506 1 74 1517 1 74 1527 1 74 1533 1 74 1538 1 74 1540 1 74 1547 1 74 1553 1 74 1558 1 74 1560 1 74 1563 1 74 1568 1 74 1570 1 74 1572 1 74 1574 1 74 1576 1 74 1582 1 74 1588 1 74 1593 1 74 1595 1 74 1598 1 74 1603 1 74 1605 1 74 1607 1 74 1609 1 74 1611 1 74 1613 1 74 1618 1 74 1620 1 74 1622 1 74 1624 1 74 1626 1 74 1627 1 74 1629 1 74 1631 1 74 1632 1 74 1638 1 74 1644 1 74 1649 1 74 1651 1 74 1654 1 74 1659 1 74 1661 1 74 1663 1 74 1665 1 74 1667 1 74 1669 1 74 1674 1 74 1676 1 74 1678 1 74 1680 1 74 1682 1 74 1683 1 74 1685 1 74 1687 1 74 1688 1 74 1690 1 74 1695 1 74 1697 1 74 1699 1 74 1701 1 74 1703 1 74 1704 1 74 1706 1 74 1708 1 74 1709 1 74 1710 1 74 1712 1 74 1714 1 74 1715 1 74 1716 1 75 33 1 75 61 1 75 82 1 75 97 1 75 107 1 75 113 1 75 118 1 75 119 1 75 145 1 75 166 1 75 181 1 75 191 1 75 197 1 75 202 1 75 203 1 75 222 1 75 237 1 75 247 1 75 253 1 75 258 1 75 259 1 75 272 1 75 282 1 75 288 1 75 293 1 75 294 1 75 302 1 75 308 1 75 313 1 75 314 1 75 318 1 75 323 1 75 324 1 75 327 1 75 328 1 75 330 1 75 355 1 75 376 1 75 391 1 75 401 1 75 407 1 75 412 1 75 413 1 75 432 1 75 447 1 75 457 1 75 463 1 75 468 1 75 469 1 75 482 1 75 492 1 75 498 1 75 503 1 75 504 1 75 512 1 75 518 1 75 523 1 75 524 1 75 528 1 75 533 1 75 534 1 75 537 1 75 538 1 75 540 1 75 558 1 75 573 1 75 583 1 75 589 1 75 594 1 75 595 1 75 608 1 75 618 1 75 624 1 75 629 1 75 630 1 75 638 1 75 644 1 75 649 1 75 650 1 75 654 1 75 659 1 75 660 1 75 663 1 75 664 1 75 666 1 75 678 1 75 688 1 75 694 1 75 699 1 75 700 1 75 708 1 75 714 1 75 719 1 75 720 1 75 724 1 75 729 1 75 730 1 75 733 1 75 734 1 75 736 1 75 743 1 75 749 1 75 754 1 75 755 1 75 759 1 75 764 1 75 765 1 75 768 1 75 769 1 75 771 1 75 774 1 75 779 1 75 780 1 75 783 1 75 784 1 75 786 1 75 788 1 75 789 1 75 791 1 75 792 1 75 817 1 75 838 1 75 853 1 75 863 1 75 869 1 75 874 1 75 875 1 75 894 1 75 909 1 75 919 1 75 925 1 75 930 1 75 931 1 75 944 1 75 954 1 75 960 1 75 965 1 75 966 1 75 974 1 75 980 1 75 985 1 75 986 1 75 990 1 75 995 1 75 996 1 75 999 1 75 1000 1 75 1002 1 75 1020 1 75 1035 1 75 1045 1 75 1051 1 75 1056 1 75 1057 1 75 1070 1 75 1080 1 75 1086 1 75 1091 1 75 1092 1 75 1100 1 75 1106 1 75 1111 1 75 1112 1 75 1116 1 75 1121 1 75 1122 1 75 1125 1 75 1126 1 75 1128 1 75 1140 1 75 1150 1 75 1156 1 75 1161 1 75 1162 1 75 1170 1 75 1176 1 75 1181 1 75 1182 1 75 1186 1 75 1191 1 75 1192 1 75 1195 1 75 1196 1 75 1198 1 75 1205 1 75 1211 1 75 1216 1 75 1217 1 75 1221 1 75 1226 1 75 1227 1 75 1230 1 75 1231 1 75 1233 1 75 1236 1 75 1241 1 75 1242 1 75 1245 1 75 1246 1 75 1248 1 75 1250 1 75 1251 1 75 1253 1 75 1254 1 75 1272 1 75 1287 1 75 1297 1 75 1303 1 75 1308 1 75 1309 1 75 1322 1 75 1332 1 75 1338 1 75 1343 1 75 1344 1 75 1352 1 75 1358 1 75 1363 1 75 1364 1 75 1368 1 75 1373 1 75 1374 1 75 1377 1 75 1378 1 75 1380 1 75 1392 1 75 1402 1 75 1408 1 75 1413 1 75 1414 1 75 1422 1 75 1428 1 75 1433 1 75 1434 1 75 1438 1 75 1443 1 75 1444 1 75 1447 1 75 1448 1 75 1450 1 75 1457 1 75 1463 1 75 1468 1 75 1469 1 75 1473 1 75 1478 1 75 1479 1 75 1482 1 75 1483 1 75 1485 1 75 1488 1 75 1493 1 75 1494 1 75 1497 1 75 1498 1 75 1500 1 75 1502 1 75 1503 1 75 1505 1 75 1506 1 75 1518 1 75 1528 1 75 1534 1 75 1539 1 75 1540 1 75 1548 1 75 1554 1 75 1559 1 75 1560 1 75 1564 1 75 1569 1 75 1570 1 75 1573 1 75 1574 1 75 1576 1 75 1583 1 75 1589 1 75 1594 1 75 1595 1 75 1599 1 75 1604 1 75 1605 1 75 1608 1 75 1609 1 75 1611 1 75 1614 1 75 1619 1 75 1620 1 75 1623 1 75 1624 1 75 1626 1 75 1628 1 75 1629 1 75 1631 1 75 1632 1 75 1639 1 75 1645 1 75 1650 1 75 1651 1 75 1655 1 75 1660 1 75 1661 1 75 1664 1 75 1665 1 75 1667 1 75 1670 1 75 1675 1 75 1676 1 75 1679 1 75 1680 1 75 1682 1 75 1684 1 75 1685 1 75 1687 1 75 1688 1 75 1691 1 75 1696 1 75 1697 1 75 1700 1 75 1701 1 75 1703 1 75 1705 1 75 1706 1 75 1708 1 75 1709 1 75 1711 1 75 1712 1 75 1714 1 75 1715 1 75 1716 1 76 34 1 76 62 1 76 83 1 76 98 1 76 108 1 76 114 1 76 117 1 76 120 1 76 146 1 76 167 1 76 182 1 76 192 1 76 198 1 76 201 1 76 204 1 76 223 1 76 238 1 76 248 1 76 254 1 76 257 1 76 260 1 76 273 1 76 283 1 76 289 1 76 292 1 76 295 1 76 303 1 76 309 1 76 312 1 76 315 1 76 319 1 76 322 1 76 325 1 76 326 1 76 329 1 76 330 1 76 356 1 76 377 1 76 392 1 76 402 1 76 408 1 76 411 1 76 414 1 76 433 1 76 448 1 76 458 1 76 464 1 76 467 1 76 470 1 76 483 1 76 493 1 76 499 1 76 502 1 76 505 1 76 513 1 76 519 1 76 522 1 76 525 1 76 529 1 76 532 1 76 535 1 76 536 1 76 539 1 76 540 1 76 559 1 76 574 1 76 584 1 76 590 1 76 593 1 76 596 1 76 609 1 76 619 1 76 625 1 76 628 1 76 631 1 76 639 1 76 645 1 76 648 1 76 651 1 76 655 1 76 658 1 76 661 1 76 662 1 76 665 1 76 666 1 76 679 1 76 689 1 76 695 1 76 698 1 76 701 1 76 709 1 76 715 1 76 718 1 76 721 1 76 725 1 76 728 1 76 731 1 76 732 1 76 735 1 76 736 1 76 744 1 76 750 1 76 753 1 76 756 1 76 760 1 76 763 1 76 766 1 76 767 1 76 770 1 76 771 1 76 775 1 76 778 1 76 781 1 76 782 1 76 785 1 76 786 1 76 787 1 76 790 1 76 791 1 76 792 1 76 818 1 76 839 1 76 854 1 76 864 1 76 870 1 76 873 1 76 876 1 76 895 1 76 910 1 76 920 1 76 926 1 76 929 1 76 932 1 76 945 1 76 955 1 76 961 1 76 964 1 76 967 1 76 975 1 76 981 1 76 984 1 76 987 1 76 991 1 76 994 1 76 997 1 76 998 1 76 1001 1 76 1002 1 76 1021 1 76 1036 1 76 1046 1 76 1052 1 76 1055 1 76 1058 1 76 1071 1 76 1081 1 76 1087 1 76 1090 1 76 1093 1 76 1101 1 76 1107 1 76 1110 1 76 1113 1 76 1117 1 76 1120 1 76 1123 1 76 1124 1 76 1127 1 76 1128 1 76 1141 1 76 1151 1 76 1157 1 76 1160 1 76 1163 1 76 1171 1 76 1177 1 76 1180 1 76 1183 1 76 1187 1 76 1190 1 76 1193 1 76 1194 1 76 1197 1 76 1198 1 76 1206 1 76 1212 1 76 1215 1 76 1218 1 76 1222 1 76 1225 1 76 1228 1 76 1229 1 76 1232 1 76 1233 1 76 1237 1 76 1240 1 76 1243 1 76 1244 1 76 1247 1 76 1248 1 76 1249 1 76 1252 1 76 1253 1 76 1254 1 76 1273 1 76 1288 1 76 1298 1 76 1304 1 76 1307 1 76 1310 1 76 1323 1 76 1333 1 76 1339 1 76 1342 1 76 1345 1 76 1353 1 76 1359 1 76 1362 1 76 1365 1 76 1369 1 76 1372 1 76 1375 1 76 1376 1 76 1379 1 76 1380 1 76 1393 1 76 1403 1 76 1409 1 76 1412 1 76 1415 1 76 1423 1 76 1429 1 76 1432 1 76 1435 1 76 1439 1 76 1442 1 76 1445 1 76 1446 1 76 1449 1 76 1450 1 76 1458 1 76 1464 1 76 1467 1 76 1470 1 76 1474 1 76 1477 1 76 1480 1 76 1481 1 76 1484 1 76 1485 1 76 1489 1 76 1492 1 76 1495 1 76 1496 1 76 1499 1 76 1500 1 76 1501 1 76 1504 1 76 1505 1 76 1506 1 76 1519 1 76 1529 1 76 1535 1 76 1538 1 76 1541 1 76 1549 1 76 1555 1 76 1558 1 76 1561 1 76 1565 1 76 1568 1 76 1571 1 76 1572 1 76 1575 1 76 1576 1 76 1584 1 76 1590 1 76 1593 1 76 1596 1 76 1600 1 76 1603 1 76 1606 1 76 1607 1 76 1610 1 76 1611 1 76 1615 1 76 1618 1 76 1621 1 76 1622 1 76 1625 1 76 1626 1 76 1627 1 76 1630 1 76 1631 1 76 1632 1 76 1640 1 76 1646 1 76 1649 1 76 1652 1 76 1656 1 76 1659 1 76 1662 1 76 1663 1 76 1666 1 76 1667 1 76 1671 1 76 1674 1 76 1677 1 76 1678 1 76 1681 1 76 1682 1 76 1683 1 76 1686 1 76 1687 1 76 1688 1 76 1692 1 76 1695 1 76 1698 1 76 1699 1 76 1702 1 76 1703 1 76 1704 1 76 1707 1 76 1708 1 76 1709 1 76 1710 1 76 1713 1 76 1714 1 76 1715 1 76 1716 1 77 35 1 77 63 1 77 84 1 77 99 1 77 109 1 77 115 1 77 118 1 77 120 1 77 147 1 77 168 1 77 183 1 77 193 1 77 199 1 77 202 1 77 204 1 77 224 1 77 239 1 77 249 1 77 255 1 77 258 1 77 260 1 77 274 1 77 284 1 77 290 1 77 293 1 77 295 1 77 304 1 77 310 1 77 313 1 77 315 1 77 320 1 77 323 1 77 325 1 77 327 1 77 329 1 77 330 1 77 357 1 77 378 1 77 393 1 77 403 1 77 409 1 77 412 1 77 414 1 77 434 1 77 449 1 77 459 1 77 465 1 77 468 1 77 470 1 77 484 1 77 494 1 77 500 1 77 503 1 77 505 1 77 514 1 77 520 1 77 523 1 77 525 1 77 530 1 77 533 1 77 535 1 77 537 1 77 539 1 77 540 1 77 560 1 77 575 1 77 585 1 77 591 1 77 594 1 77 596 1 77 610 1 77 620 1 77 626 1 77 629 1 77 631 1 77 640 1 77 646 1 77 649 1 77 651 1 77 656 1 77 659 1 77 661 1 77 663 1 77 665 1 77 666 1 77 680 1 77 690 1 77 696 1 77 699 1 77 701 1 77 710 1 77 716 1 77 719 1 77 721 1 77 726 1 77 729 1 77 731 1 77 733 1 77 735 1 77 736 1 77 745 1 77 751 1 77 754 1 77 756 1 77 761 1 77 764 1 77 766 1 77 768 1 77 770 1 77 771 1 77 776 1 77 779 1 77 781 1 77 783 1 77 785 1 77 786 1 77 788 1 77 790 1 77 791 1 77 792 1 77 819 1 77 840 1 77 855 1 77 865 1 77 871 1 77 874 1 77 876 1 77 896 1 77 911 1 77 921 1 77 927 1 77 930 1 77 932 1 77 946 1 77 956 1 77 962 1 77 965 1 77 967 1 77 976 1 77 982 1 77 985 1 77 987 1 77 992 1 77 995 1 77 997 1 77 999 1 77 1001 1 77 1002 1 77 1022 1 77 1037 1 77 1047 1 77 1053 1 77 1056 1 77 1058 1 77 1072 1 77 1082 1 77 1088 1 77 1091 1 77 1093 1 77 1102 1 77 1108 1 77 1111 1 77 1113 1 77 1118 1 77 1121 1 77 1123 1 77 1125 1 77 1127 1 77 1128 1 77 1142 1 77 1152 1 77 1158 1 77 1161 1 77 1163 1 77 1172 1 77 1178 1 77 1181 1 77 1183 1 77 1188 1 77 1191 1 77 1193 1 77 1195 1 77 1197 1 77 1198 1 77 1207 1 77 1213 1 77 1216 1 77 1218 1 77 1223 1 77 1226 1 77 1228 1 77 1230 1 77 1232 1 77 1233 1 77 1238 1 77 1241 1 77 1243 1 77 1245 1 77 1247 1 77 1248 1 77 1250 1 77 1252 1 77 1253 1 77 1254 1 77 1274 1 77 1289 1 77 1299 1 77 1305 1 77 1308 1 77 1310 1 77 1324 1 77 1334 1 77 1340 1 77 1343 1 77 1345 1 77 1354 1 77 1360 1 77 1363 1 77 1365 1 77 1370 1 77 1373 1 77 1375 1 77 1377 1 77 1379 1 77 1380 1 77 1394 1 77 1404 1 77 1410 1 77 1413 1 77 1415 1 77 1424 1 77 1430 1 77 1433 1 77 1435 1 77 1440 1 77 1443 1 77 1445 1 77 1447 1 77 1449 1 77 1450 1 77 1459 1 77 1465 1 77 1468 1 77 1470 1 77 1475 1 77 1478 1 77 1480 1 77 1482 1 77 1484 1 77 1485 1 77 1490 1 77 1493 1 77 1495 1 77 1497 1 77 1499 1 77 1500 1 77 1502 1 77 1504 1 77 1505 1 77 1506 1 77 1520 1 77 1530 1 77 1536 1 77 1539 1 77 1541 1 77 1550 1 77 1556 1 77 1559 1 77 1561 1 77 1566 1 77 1569 1 77 1571 1 77 1573 1 77 1575 1 77 1576 1 77 1585 1 77 1591 1 77 1594 1 77 1596 1 77 1601 1 77 1604 1 77 1606 1 77 1608 1 77 1610 1 77 1611 1 77 1616 1 77 1619 1 77 1621 1 77 1623 1 77 1625 1 77 1626 1 77 1628 1 77 1630 1 77 1631 1 77 1632 1 77 1641 1 77 1647 1 77 1650 1 77 1652 1 77 1657 1 77 1660 1 77 1662 1 77 1664 1 77 1666 1 77 1667 1 77 1672 1 77 1675 1 77 1677 1 77 1679 1 77 1681 1 77 1682 1 77 1684 1 77 1686 1 77 1687 1 77 1688 1 77 1693 1 77 1696 1 77 1698 1 77 1700 1 77 1702 1 77 1703 1 77 1705 1 77 1707 1 77 1708 1 77 1709 1 77 1711 1 77 1713 1 77 1714 1 77 1715 1 77 1716 1 78 36 1 78 64 1 78 85 1 78 100 1 78 110 1 78 116 1 78 119 1 78 120 1 78 148 1 78 169 1 78 184 1 78 194 1 78 200 1 78 203 1 78 204 1 78 225 1 78 240 1 78 250 1 78 256 1 78 259 1 78 260 1 78 275 1 78 285 1 78 291 1 78 294 1 78 295 1 78 305 1 78 311 1 78 314 1 78 315 1 78 321 1 78 324 1 78 325 1 78 328 1 78 329 1 78 330 1 78 358 1 78 379 1 78 394 1 78 404 1 78 410 1 78 413 1 78 414 1 78 435 1 78 450 1 78 460 1 78 466 1 78 469 1 78 470 1 78 485 1 78 495 1 78 501 1 78 504 1 78 505 1 78 515 1 78 521 1 78 524 1 78 525 1 78 531 1 78 534 1 78 535 1 78 538 1 78 539 1 78 540 1 78 561 1 78 576 1 78 586 1 78 592 1 78 595 1 78 596 1 78 611 1 78 621 1 78 627 1 78 630 1 78 631 1 78 641 1 78 647 1 78 650 1 78 651 1 78 657 1 78 660 1 78 661 1 78 664 1 78 665 1 78 666 1 78 681 1 78 691 1 78 697 1 78 700 1 78 701 1 78 711 1 78 717 1 78 720 1 78 721 1 78 727 1 78 730 1 78 731 1 78 734 1 78 735 1 78 736 1 78 746 1 78 752 1 78 755 1 78 756 1 78 762 1 78 765 1 78 766 1 78 769 1 78 770 1 78 771 1 78 777 1 78 780 1 78 781 1 78 784 1 78 785 1 78 786 1 78 789 1 78 790 1 78 791 1 78 792 1 78 820 1 78 841 1 78 856 1 78 866 1 78 872 1 78 875 1 78 876 1 78 897 1 78 912 1 78 922 1 78 928 1 78 931 1 78 932 1 78 947 1 78 957 1 78 963 1 78 966 1 78 967 1 78 977 1 78 983 1 78 986 1 78 987 1 78 993 1 78 996 1 78 997 1 78 1000 1 78 1001 1 78 1002 1 78 1023 1 78 1038 1 78 1048 1 78 1054 1 78 1057 1 78 1058 1 78 1073 1 78 1083 1 78 1089 1 78 1092 1 78 1093 1 78 1103 1 78 1109 1 78 1112 1 78 1113 1 78 1119 1 78 1122 1 78 1123 1 78 1126 1 78 1127 1 78 1128 1 78 1143 1 78 1153 1 78 1159 1 78 1162 1 78 1163 1 78 1173 1 78 1179 1 78 1182 1 78 1183 1 78 1189 1 78 1192 1 78 1193 1 78 1196 1 78 1197 1 78 1198 1 78 1208 1 78 1214 1 78 1217 1 78 1218 1 78 1224 1 78 1227 1 78 1228 1 78 1231 1 78 1232 1 78 1233 1 78 1239 1 78 1242 1 78 1243 1 78 1246 1 78 1247 1 78 1248 1 78 1251 1 78 1252 1 78 1253 1 78 1254 1 78 1275 1 78 1290 1 78 1300 1 78 1306 1 78 1309 1 78 1310 1 78 1325 1 78 1335 1 78 1341 1 78 1344 1 78 1345 1 78 1355 1 78 1361 1 78 1364 1 78 1365 1 78 1371 1 78 1374 1 78 1375 1 78 1378 1 78 1379 1 78 1380 1 78 1395 1 78 1405 1 78 1411 1 78 1414 1 78 1415 1 78 1425 1 78 1431 1 78 1434 1 78 1435 1 78 1441 1 78 1444 1 78 1445 1 78 1448 1 78 1449 1 78 1450 1 78 1460 1 78 1466 1 78 1469 1 78 1470 1 78 1476 1 78 1479 1 78 1480 1 78 1483 1 78 1484 1 78 1485 1 78 1491 1 78 1494 1 78 1495 1 78 1498 1 78 1499 1 78 1500 1 78 1503 1 78 1504 1 78 1505 1 78 1506 1 78 1521 1 78 1531 1 78 1537 1 78 1540 1 78 1541 1 78 1551 1 78 1557 1 78 1560 1 78 1561 1 78 1567 1 78 1570 1 78 1571 1 78 1574 1 78 1575 1 78 1576 1 78 1586 1 78 1592 1 78 1595 1 78 1596 1 78 1602 1 78 1605 1 78 1606 1 78 1609 1 78 1610 1 78 1611 1 78 1617 1 78 1620 1 78 1621 1 78 1624 1 78 1625 1 78 1626 1 78 1629 1 78 1630 1 78 1631 1 78 1632 1 78 1642 1 78 1648 1 78 1651 1 78 1652 1 78 1658 1 78 1661 1 78 1662 1 78 1665 1 78 1666 1 78 1667 1 78 1673 1 78 1676 1 78 1677 1 78 1680 1 78 1681 1 78 1682 1 78 1685 1 78 1686 1 78 1687 1 78 1688 1 78 1694 1 78 1697 1 78 1698 1 78 1701 1 78 1702 1 78 1703 1 78 1706 1 78 1707 1 78 1708 1 78 1709 1 78 1712 1 78 1713 1 78 1714 1 78 1715 1 78 1716 1 0 0 0 linbox-1.4.2/benchmarks/matrix/bibd_13_6_78x1716.sms.gz000066400000000000000000001754231274717217100222770ustar00rootroot00000000000000‹.Rbibd_13_6_78x1716.smsLÙ±í:®lÿŸÇ±AgÄõß·—”#gEEÔÄÙ‹E „êÿV­üïÿþßúïßÿþýÿ~ÿÿ¼ÿßÿ÷ÿóýÿzÿ¿ßÿŸ÷ÿ×óý|½××}}ý×Ç`}ÖÇb}<ÖÇd}\öÇeë>.ûã²?.ûã²?.ûã²?.ûãr>.çãr4•Ëù¸œËù¸œËù¸œËý¸ÜËý¸\­ÈÇå~\îÇå~\îÇå~\âã—ø¸ÄÇ%´°—ø¸ÄÇ%>.ñqÉK~\òã’—ü¸¤öçã’—ü¸äÇ¥>.õq©K}\êãR—Ò6\êãR—þ¸ôÇ¥?.ýqéK\úãÒ’–K\æã2—ù¸ÌÇe>.óq™Ë|\FB‡ÔIìÉÝ#Á{$yDï‘ì=¾GÒ÷Hüñ³‹‚Œ$#ÊÈ2ÂŒ4#Î’ç%^½?Éô’P/Iõ’X/Éõ’`/Iö’h/Éö:(šøI¼—ä{IÀ—$|IÄ—d|IÈ—¤|IÌ×EsÅO’¾$êK²¾$ìKÒ¾$îKò¾$ðK¿‚£@ü$ôKR¿$öKr¿$øK’¿$úK²¿$ü+9[ÄOò¿¤K°¤K:°¤KZ°¤Kz°ŠÃJü¤ Kº°¤ KÚ°¤Kú°¤K±¤«9ýÄOZ±¤Kz±¤Kš±¤Kº±¤KÚ±†ã”óTªôcK?¶ôcK?¶ôcK?¶ôcK?¶ôc/hñ“~léÇ–~léÇ–~léÇ–~lÎ{|ŸøâǙϡϩϱϹÏÁ/ýØÒ-ý؇+Dü¤[ú±¥[ú±¥[ú±¥[ú±¥ûr'‰ŸôcK?¶ôcK?¶ôcK?¶ôcK?¶ôc—œøI?¶ôcK?¶ôcK?¶ôcK?¶ôcK?vrkŠŸôcK?¶ôcK?¶ôcK?¶ôcK?¶ôc×°øI?¶ôcK?¶ôcK?¶ôcK?¶ôcK?vs¯‹ŸôcK?¶ôcK?¶ôcK?¶ôcK?¶ôc@¤ ¨ ý8Ò#ý8Ò#ý8Ò#ý8Ò#ý8 è!~Ò#ý8Ò#ý8Ò#ý8Ò#ý8Ò#ý8Ò#ý8Ò#ý8Ò#ý8Ò2zõc¿o¿o¿o¿o¿o¿o¿o¿o¿oooooooooooooooooooooÿ§‰œËÑT>.çãr>.çãr>.çãr>.÷ãr?.÷ãrµ"—ûq¹—ûq¹—ûq‰K|\âã—ÐÂ~\âã—ø¸ÄÇ%?.ùqÉK~\òã’ÚŸK~\òã’—ú¸ÔÇ¥>.õq©K}\JÛüq©K}\úãÒ—þ¸ôÇ¥?.ýqéKKZ>.ýq™Ë|\æã2—ù¸ÌÇe>.óq R'±{$wï‘ä=½G²÷HøIß#ñ{ÄÏb,~2’Œ(#Ë3ÒŒ8Kž—ú ‹FI#âˆ<"H$")™<Ê#©<Ës‘nñ“d‰æ‘l ç‘t‰ç‘| è‘„ž@]ÄOBz$¥Gbz$§G‚z$©G¢z$«GÂzý?Éë‘ÀIì‘ÈÉì‘ÐIí‘ØÉí)Zü$ºG²{$¼GÒ{$¾Gò{$ÀG|$§9!ÄOR|$ÆGr|$ÈG’|$ÊG²|$ÌGÒ|†#‡3G‡ŽäùJž¯äùJž¯äùJž¯äùJž¯äù.1ñ“<_Éó•<_Éó•<_Éó•<_Éó•<ßÍ©(~:£¯é«Sú꘾:§¯ê«“ú꨾Ò{8fÅOúq¥Wúq¥Wúq9³9´9µ9¶}n‹'7G7g7‡·ôãJ?®ôãJ?®ôãøI?®ôãJ?®ôãJ?®ôãJ?®ôãJ?nr³ˆŸôãJ?®ôãJ?®ôãJ?®ôãJ?®ôãW•øI?®ôãJ?®ôãJ?®ôãJ?®ôãJ?ns÷‰ŸôãJ?®ôãJ?®ôãJ?®ôãJ?®ôã—)·©®SéGH?BúÒ~„ô#¤!ýéG,®gñ“~„ô#¤!ýéGH?BúÒ~Äæ¾?éGH?BúÒ~„ô#¤!ýéG„øI?BúÒ~„ô#¤ñêÇy1Þy1Þy1Þy1Þy1Þy1Þy1Þy1Þy1Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þù0Þ‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³¹YŽÜ,Gn–#7Ë‘›åÈÍräf9r³AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx âD<‚ˆGñ"AÄ#ˆx â¿«Aò’§<Ååï¡ßÔoé·õû’§<…ä)$O!y ÉSHžBò’§<…ä)$O!y ÉSHžBò’§<…ä)$O!y ÉSHžBò’§<…ä)$O!y ÉSHžBò’§<…ä)$O!y ÉSHžBò’§<…ä)$O!y ÉSHžBò’§<¥ä)%O)yJÉSJžRò”’§”<¥ä)%O)yJÉSJžRò”’§THa…XH¡…\Há…Ôýº¿S÷wêþNÝß©û;u§îïÔýº¿Sçmê¼M·©ó6uÞ¦ÎÛÔy›:oSçmê¼MéGJ?Rú‘Ò”~¤ô#¥)ýHéGJ?Rú‘Ò”~¤ô#¥)ýHéGJ?Rú‘Ò”~¤ô#¥)ýHéG¾úq_ˆx_ˆx_ˆx_ˆx_ˆxÿûÚÔûÿýµùþãè¿æëò|?³ûq»b÷ñ»Ãûq¼—ûq¹—ø¸ÄÇ%>.ñq =ÕÇ%>.ñq‰K|\òã’—ü¸äÇ%?.F¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^…r®B9W¡œ«PÎU(ç*”sʹ å\…r®B9W¡œ«PÎU(ç*”sʹ å\…r®B9W¡œ«PÎU(ç*”sʹ å\…r®B9W¡œ«PÎU(ç*”sʹ å\…r®B9W¡œ«PÎU(ç*”sʹ å\…r®B9W¡œ«PÎU(ç*”sʹ å\…r®B9W¡œ«PÎU(ç*”sʹ å\aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0â•êÊ u冺rC]¹¡®ÜPWn¨+7Ô•êÊ u冺rC]¹¡®ÜPWn¨+7Ô•êÊ u冺rC]¹¡®ÜPWn¨+7Ô•êÊ u冺rC]¹¡®ÜPWn¨+7Ô•êÊ u冺rC]¹¡®ÜPWn¨+7Ô•êÊ u冺rC]¹¡®ÜPWn¨+7Ô•êÊ u冺rC]¹¡®ÜPWn¨+7ÔF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0âF¼ÂˆWñ #^aÄ+Œx…¯0â¿kPóMÍ75ßÔ|SóMÍ75ßÔ|SóMÍ75ßÔ|SóMÍ75ßÔ|SóMÍ75ßÔ|SóMÍ75ßÔ|SóMÍ75ßÔ|SóMæ;â7â7¿zý.ýnýý^ý†~…‡tŸ–îÓÒ}ZºOK÷ié>-ݧ¥û´tþ•οÒùW:ÿJç_éü+¥ó¯tþ•οÒùW:ÿJç_éü+¥ó¯tþ•οÒùW:ÿJç_½ç_¼1^ç`|ÎÁøœƒñ9ãsÆçŒÏ9RŒ)ƇãCŠñ!Åøb|H1¾Ðf|¡ÍøB›ñ…6ã mÆÚŒ/´_h3¾Ðf|¡ÍøB›ñ…6ã mÆÚŒ/´_h3¾Ðf|¡ÍøB›ñ…6ã m†b)†b)†b)†bÈKòÒ…¼t!/]ÈKòÒ…¼t!/]ÈKòÒ…¼t!/]ÈKòÒ…¼t!/]ÈKòÒ…¼t!/]ÈKBŠ!¤BŠ!¤BŠ!¤BŠ!¤BŠ!¤BŠ!¤BŠ!¤BŠ!¤BŠ!¤BŠ!¤BŠ¡ä–PrK(¹%”ÜJn %·„’[BÉ-¡ä–PrK(¹%”ÜJn %·„’[BÉ-¡ä–PrK(¹%”ÜJn %·„’[BÉ-¡ä–PrK(¹%”ÜJn %·„’[BÉ-¡ä–PrK(¹%„CH1„CH1„CH1„C^º—.ä¥ yéB^º—.ä¥ yéB^º—.ä¥ yéB^º—.ä¥ yéB^º—.ä¥ yéB^ºR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR æB¹P`.˜ æB¹P`.˜ æB¹P`.˜ æB¹P`.˜ æB¹P`.˜ æB¹P`.˜ æB¹P`.˜ æB¹P`.˜ æB¹P`.„CH1„CH1„CH1„CH1„CH1„CH1„CH1„CH1„CH1„CH1„C^³×,ä5 yÍB^³×,ä5 yÍB^³×,ä5 yÍB^³×,ä5 yÍB^³×,ä5 yÍB^³×,ä5 yÍB^³×,ä5 yÍB^³×,ä5 yÍB^³×,ä5 !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !ÅR !Å?È!\!tS‚7%|S’û’Ü×£¤HîKr_’û’Ü—ä¾$÷%¹/É}Iî+=â'¹/É}IîKr_’û’Ü—ÎûÒy_:ï+AQâ'9(ÉAÇd¯äëGÌ)æÎ/8œ_p8¿àp~Ááü‚Ãù!Åü<…ùy óóæç)ÌÏS˜Ÿ§0?¤˜RÌ)æ‡óCŠù!ÅürÓòËMË/7-¿Ü´ürÓòËMË/7-¿Ü´ürÓòËMË/7-¿Ü´ürÓòËMK妥 bÊI˜r¦œ„)'aÊI˜r¦ b *¦ b *¦ b *¦«©Àj*°š ¬¦«©Àj*°š ¬¦«©Àj*°š ¬¦«©Àj*°š‚Š)¨˜‚Š)¨˜‚Š)¨˜r{)ç^ʹ—r{)ç^ʹ—r{)ç^ʹ—r{)ç^ *¦ b *¦ b *¦ b *¦ b *¦ b *¦ b *¦ b *¦òŒSyÆ©<ãTžq*Ï8•gœÊ3Nå§òŒSyÆ©<ãTžq*Ï8•gœÊ3Nå§òŒSyÆ©<ãTžq *¦œ„)'aÊI˜r¦œ„)'a *¦ b *¦ b *¦ b*°š ¬¦«©Àj*°š ¬¦«©Àj*°š ¬¦«©Àj*°š ¬¦«)¨˜‚Š)¨˜‚Š)¨˜‚Š)ç^ʹ—r{)ç^ʹ—r{)ç^ʹ—r{)ç^ʹ—rb *¦ b *¦ b *¦ b *¦ b *¦ b *¦ b *¦ b*G*•#•Ê‘JåH¥r¤R9R©©TŽT*G*•#•Ê‘JåH¥r¤R9R©©TŽT*G*•#•Ê‘JåH¥ b *¦ b *¦ b *¦œ{)ç^ʹ—r{)ç^ʹ—r{)ç^ʹ—r{)ç^ʹ—‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š©f*€™ `¦˜©f*€™ `¦˜©f*€™ `¦˜©f*€™ `¦˜©f*€™ `¦˜)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜rÚ¥œv)§]Êi—rÚ¥œv)§]Êi—rÚ¥œv)§]Êi—rÚ¥œv)§]Êi—rÚ¥œv)§]Êi—‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨˜‚Š)¨øïWûQÚÒ~”ö£ŠvWûQÚÒ~û¡s¨t•ΡÒ9Tïy_o°¹>wb}X±¾,Áú²ëˬ/K°¾,Áú܉õaÅúBÆõ…Œë ×2®/d\V¬ÏeXŸË°>—a}.Ãú\†õŸ콇êÊõaÅú°bé„Ò ¥J/ ”^@(½€Pz¡ôBé„Ò %¿b 4–"Æ¥ˆq)b\Š—"Æ%ÐXò–ü†%¿aÉoXò–@c 4–@c 4–@c){®”=WÊž+eÏ•²çJÙs¥ì¹Rö\){®”=W%¿aÉoXò–ü†%¿a 4–@c 4–@c 4–"¸¥n)‚[Šà–"¸¥n)‚[Šà–"¸¥n 4–@c 4–@c 4–ü%`ÉXò–ü%`ÉXò–ü%` 4–@c 4–@c 4–@c 4–@c 4–@cée²ÒËd¥—ÉJ/“•^&+½LVz™¬ô2Yée²ÒËd%¿b 4–"Æ¥ˆq)b\Š—"Æ%ÐXò–ü†%¿aÉoXò–@c 4–@c 4–@c){®”=WÊž+eÏ•²çJÙs¥ì¹Rö\){®”=W%¿aÉoXò–ü†%¿a 4–@c 4–@c 4–"¸¥n)‚[Šà–"¸¥n)‚[Šà–"¸¥n 4–@c 4–@c 4–ü%`ÉXò–ü%`ÉXò–ü%` 4–@c 4–@c 4–@c 4–@c 4–@c)¾”_J„/%—áK‰ð¥DøR"|)¾”_%¿aÉoXò–ü†%¿a 4–@c 4–@c 4–"¸¥n)‚[Šà–"¸¥n)‚[Šà–"¸¥n 4–@c 4–@c 4–ü%`ÉXò–ü%`ÉXò–ü%` 4–@c 4–@c 4–@c 4–@c 4–@c)K­”¥VÊR+e©•²ÔJYj¥,µR–Z)K­”¥V%ÐX%ÐX%`ÉXò–ü%`ÉXò–ü%`ÉX%ÐX%ÐX%ÐX%ÐX%ÐXŠÌ–"³¥Èl)2[ŠÌ–"³¥Èl)2[ŠÌ–"³%ÐX%ÐX%ÐX%ÐX%ÐX%`ÉXò–ü%`ÉXò–ü%`ÉX%ÐX%ÐX%ÐX%ÐX%Ðø÷«vÚ·Ò¾•ö­Þ}ë77±¿àsžÅþ@c¯ô÷úH¯ô÷úHÁçþ<‹ýÆþr ûË%ì/—°¿\Âþ<‹ýÆþbÉýÅ’û‹%÷Kî4öz¾ùžå=Mûs"¶@c 4¶@c 4¶ÞBm½…Úz µõjë-ÔÖ[¨­ tËÃØ­4ÂVa+°•FØò0¶@c+˜Ü &·‚É­`r 4¶<‰-ObË“Øò$¶@c 4¶@c 4¶^¡h½BÑz…¢õ EëŠÖ+-c 4¶‚É­`r+˜Ü &·@cË“Øò$¶<‰-Ob 4¶@c 4¶@c+¯•Æ×Jãk¥ñµÒøZi|-ÐØò$¶<‰-ObË“Ø-ÐØ-ÐØ ·‚­ p+(Ü ·‚Â-ÐØ-ÐØ-ÏaËsØò¶<‡-ÏaËsØ-ÐØ-ÐØ-ÐØúÂ@ë ­/ ´¾0Ð B·<Œ-ÐØJ#l¥¶Ò[i„-c 4¶‚É­`r+˜Ü &·@cË“Øò$¶<‰-Ob 4¶@c 4¶@cëŠÖ+­W(Z¯P´^¡h½BÑò0¶@c+˜Ü &·‚É­`r 4¶<‰-ObË“Øò$¶@c 4¶@c 4¶ÒøZi|­4¾V_+¯•Æ×-ObË“Øò$¶<‰-ÐØ-ÐØ­ p+(Ü ·‚­ p+(Ü-ÐØ-ÐØò¶<‡-ÏaËsØò¶<‡-ÐØ-ÐØ-ÐØ­·#[oG¶ÞŽl½Ùò0¶@c+˜Ü &·‚É­`r 4¶<‰-ObË“Øò$¶@c 4¶@c 4¶ÒøZi|­4¾V_+¯•Æ×-ObË“Øò$¶<‰-ÐØ-ÐØ­ p+(Ü ·‚­ p+(Ü-ÐØ-ÐØò¶<‡-ÏaËsØò¶<‡-ÐØ-ÐØ-ÐØ­WZ¯.´^]h½ºÐ-ObË“Øò$¶<‰-ÐØ-ÐØ­ p+(Ü ·‚­ p+(Ü-ÐØ-ÐØò¶<‡-ÏaËsØò¶<‡-ÐØ-ÐØ-ÐØ­t½Vº^+]¯•®×-ÐØ-ÐØò¶<‡-ÏaËsØò¶<‡-ÐØ-ÐØ-ÐØ­ q+HÜ ·‚Ä-ÐØ-ÐØ-ÐØ-ObË“Øò$¶<‰-ÐØ-ÐØ¿ýç}•e¾TÅùâÐó¹çó½^<ßëÅó½^<_ªâ|qèù\ŒóÆùÞ5™ï]“ùÞ5™/=Ÿ‹q>Ð8_®á|¹†óåÎçbœ4Îdž/È<_yGÅ‘GqäQÆhÆÑ'JFŸ(}¢d”±8 G<Œ#Ð8zÇdôŽÉè“Q8zäaÆQ¦á(Óp”i8ò0Ž@ã(Ì< 3ÂÌ#Ð8ò(Ž<Š#â4Ž@ã4ŽÞ¯½_;z¿vŽyG q”i8Ê4eŽ<Œ#Ð8 3ÂÌ£0ó4Ž<Š#âÈ£8#Ð8£w?úÄó£¯:?úó£/9?ú\ó£o2?úþò£O.?úÊò£Ï,?ú¤òó=øw£Ï"?|ùáÃÇ_>~øäñÃ7Ž>rüðuã‡Ï?|×øáÃÅ_$~øäð÷…>&üðõà‡Ï?|øáÀ_ú}ø´ï÷|>æûðÕÞ‡Ïó>|÷á¼_à}øäîÃ7v>ªûðU݇Ïé>|?÷áº_Î}øtîÃ7s>ŽûðõÛ‡ÏÜ>|×öáC¶_²}ødí÷i>FûðõÙ‡ÏÏ>|oöá³_”}ø¤ì÷d>ûðõØ‡ÏÆ>|7öჱ_ˆ}øì÷_>öúðµ×‡Ï»>|Ïõá®_p}øtë÷Z>Öúð•ևϴ>|Ÿõáì_b}øôê÷W>ºúð•ՇϬ>|_õá«_V}ø´ê÷T>¦úðՇϨ>|?õáª_P}øtê#°ú4¾ÖzmÎá?Á­?¬üçã| ¦\þG ‚}XçÃ:–÷°¼Ÿ³ó%Ôæ"½—å½1¾,ïå(¸,ïåL¸œ—¥»,Ôe}¾÷d^‚^öEž/ò|¯ÿÄèœ 1¾Hïå༜—Sâó¾ÏÃqqì‹`_–÷"Ïy¾Èóçý#ãËò~ò—H=X ÆÁ‚ ,øçý#ã@zƒu¤7Þ@zé ¶ Þ@z¡ 6%8m‚Ý Ä88±?øûtç ÿ1_‚?!áá[Ý ™`w‚½D=õ/Åò%hÓ´a/¾ˆúKð„lÊç7} ž‡Ý‰ñuË}Ë^$GJ"óÉ^${‘lA._×´a ’•OV>9Þ“-HnÆdå“OÖ9YçDAIΖDS’-HNþDe•I6%Ñ4è@wÒðÃø%ú€óKÐ ÝIîÜäÎM”(Q¢äŒJΨd¿Ò‹+ Ù¦äòMö«¸|‹+6®Ø¸bãŠÃª¸Š,N­b+¿Í— [Yle±•ÅV[YhS±§…6›[zÅ5Q(Q±¹*.ŽbO ý*®õbO‹«¤P´bO‹­,T¯ØÊJ÷âÁ8 ­,U¡•ÅvW¹«žwS!…Â’PhnZ ‘(TXð[åe–êÆP†Ò/”y¡² 5]¨æB­*±Pn…Ò*TS¡Ž T(“B-êžPê„"'”7¡” eK¨TB’Eu’E9’Eý‘þ^TY”YàïEq‘þ^”YàïEÁE%E©EMEþ^”íXÔåXÞXTØX”ÔXàïEEµŒEYŒEŒþ^T¾X”ºXÔ¶XàïE5‹E‹þvá W®pÉ ×¬pQ Wpy דp! Wp©ׄpWpÙ×ypaWtp)×ppñWmpÙ×kpÁWfp ×\p±WYpY×QpWNpÉ×Jp‘WIpy×GpAW@pé×,øA°¿wÑÿü°Îy>,ïay¿$ƒµä8~ Î$¤÷r\Ž‚ËQpYÞÏüôb1/KwY¨Ï‰üô:A/äù"Ïy¾ÈóåL¸,Ýeé.Ò{9%.büå¼sç¸þ^JX} "Ï—å½Èó—ˆðG Æ—sö"½×ë<+ã`Áƒä9Xð`ƒu¤7Þ`Áé ¤7Ø‚@z?óKЋM Îçà¶ v'ç8¾°èÎAô½õG°M„‡LpÈ|/¶¿½Ø‹@Ôƒ½ø^mz Úp†gø—Éú_ ö¯vÓúŠ7­¯zÓúÊ7­¯~Óú 8­¯‚ÓúJ8ýuô+> ¶â´Äj‰×³%nKì–ømñÛ<—ømñÛâ·Åo‹ß¿-~[üŽøñ;LTüŽøñ;âwÄïˆß¿+~Wü®ø]VNü®ø]ñ»âwÅïŠ_ˆ_ˆ_ˆ_ˆ_°âââââ—â—â—â—â—â—ì­ø¥ø¥ø¥ø•ø•ø•ø•ø•ø•øÂ"~%~%~-~-~-~-~-~-~-~ô‰_‹ßˆßˆb=â7â7â7â7â7ˆ³å~è‘~é¡~ê±~ëÁ~àüS8[Y¬-Vë‹Æc•AgJS̺˜v1ïbâÅÌk¼5Þ6‡¹7soæÞ̽™{3÷fîÍÜ›¹÷ò¶Ã™¹7soæÞ̽™{3÷fîÍÜ›¹÷¶DÁ™3£94šS£96šs£98š“£9:š³£…ÎÍùÑ Í Ò!ÍÒ"Í)Ò#}­pæ$iŽ’æ,i“æ4iŽ“æl|Úø¸ñyãÇ'Žœß™gNæØiÎæàit°ÑÁFlt°ÇÇ™Ï34tpÐÁAtpÐÁAtp–J8£ƒƒ:8èà ƒƒ:8èà ƒ³} ÃtpÐÁAtpÐÁAœãÎèà ƒƒ:8èà ƒƒ:8èà ƒƒ:8èà ƒƒ:8èà ƒƒ:8ák Îèà ƒƒ:8èà ƒƒ:8èà¤o<8£ƒƒ:8èà ƒƒ:8èà ƒS¾LáŒ:8èà ƒƒ:8èà ƒƒNûž†³o~_ý¾û}ùûö÷õïûßÀà~À à‡>5¼`þ*Y­¯”ÕújY­¯˜ÕúªY­¯œÕúêYýûuô+> ¶â´Äj‰×³%nKì–ømñÛ<—ømñÛâ·Åo‹ß¿-~[üŽøñ;LTüŽøñ;<ßö„˜°x†ÅC¬í^L‹çX<ÈâI²Ž× Î<Íâq–ŸçÀùÀùÀùÂùÂùÂùzà|á|á|á|á|áp8œÎá†sÀ9àp8'œÎ ç„sÂ9-{|¡=¾Ñ_iÏOÆ}©=¾Õ_kïµÇÛã›íñÕöøn{|¹=¾Ý_oï·ÇÜãîñ÷øŽ{|É=¾å_sï¹ÇÝã›îáúYë1åZË0wYÏ—õ|YÏ—õ|YÏ—õ|YÏ×ïZÏ—õ|YÏ—õ|YÏ—õ|YÏ—õ|YÏ—õüB(ôC8ôDHôE…EãƒúñAýø ~|P?>¨ÔêÇêwôŸ‡ÿu}ô+ÆWœ/¬ÅûŠù÷+~Wü®ø…ø…ø…ø…øÏ*~!~!~!~!~)~)~)~)~)~ZæëX?ÀúÖ°~€õã¿ßún ,¬`ýëX?ÀúÖ°~€õ¬`ýëX?ÀúÖ°~€õ¬`ýëSÉlQÊlQËlQÌlQÍlQÎlQÏlQÐlQÑlQÒlQÓlQÔlQÕlQÖlQ×lQØlQÙlQÚlQÛlQÜlQÝì%àÌ^löb³›½ØìÅf/6{±Ù‹Í^löb³›½ØìÅf/6{±Ù‹Í^löb³›½ØìÅö^ MبÂF6ʰц:lôa£بÄF'„õ¬`ýëX?ÀúÖ°~€õ¬`ýëX?ÀúÖ°~€õ¬`ýëX?ÀúÖ°~€õ¬`ýë>ÖÀÇøXkàc |¬5ð±>ÖÀÇøXkàc |¬5ð±>ÖÀÇøXkàc |¬5ð±>ÖÀÇøXkàc |¬5ð±>ÖÀÇøXkàc |¬5ð±>ÖÀÇøXkàc |¬5ð±>ÖÀÇøXkàc |¬5𱆱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~뇱~ëÇrbŒßþ»ÒwúïRÿÝê¿kýw¯ÿ.ößÍþ»ÚwûïrÿÝî¿ëýw¿ÿ.øß ÿ»â}ǯåµZ^«åµZ^«åµZ^«åµZ^«åµZ¿µ ‘#=FzŒôÆ_rð½”ÇH‘#=FyŒòå1Êc”Ç(Q£W|®ø\ñIõÿvQ%æ–jÌ-™[ª2÷÷+>%>%>¥ç)ñ+ñ+ñ+ñ+ñkñkñkñkñkñë`þ^Vb³›µØnœÅr±®Á †ÃðâÂ0`0 ¶-àœpN8'œÎ gÖ}±ð‹•_,ýbí…ø©H·(I·¨I·(J·¨J÷ bCˆ ççççç göb³›½ØìÅf/6«±YÍjlVc§ó¬Æf5¶WQÜÈâF7Ò¸ÇRFrQGrQHrQIò%àŒŽ”ü å…4Ö¨L£2Ê4*Ó¨L3V#4Ѐ\ø øoÀþð߀ÿ&_¼ÉoòÅ›|ñ&_¼ÉoòÅ›|ñ&_¼ÉoÀãÂo\ø ¿qá7.üü7à¿ÿ øoÀ“Ó$À4 0ML“Ó$À4 0ML“Ó$À4à¿ÿ øoÀþ¯|ã•o¼òW¾ñÊ7^ùÆ+ßxå¯|ã•oÀþð߀ÿü7à¿ÿ øoÀþ›—ßš—ßš—ßš—ßš—ßš—ßš—ßš—ßš—ßš—ßÚà¿í½o{ïÛÞû¶÷¾í½oƒÿ6øoƒÿ6øoƒÿ÷vò×c\q=Æý]cãzŒë1®Ç¸Ã×É“#=FzŒô¾Sžòõ»-=FyŒòí1Úc´Çh1c<ÆxŒß~ŒÇ˜ß¥ü˜Z¦¶)ÆX(9Ô/•¦ÊT›òÛcla°¶ÇØîqÜã¸ÇqãÞÁå\ÞÁå\ÞÁzXá1Âc„Ç‘#=FzŒôé1Òcuü`Çwü€ÇjaèñÃ?ðñC?øñÃ?òC ?²¼çÛ{¾½çÛ{¾½çÛ8ϰðßÿmðßöÅ·}ñm_|ÛßöÅ·}ñm_|ÛßöÅ·}ñmðßÿmðßÿmðßÿmðßÿmðßÿ/å–’m)Ù–%Ï—¸ÿ¯ÏÒo}¿ß„U¢óï·õ;ßï'棔ž‘£þU©óï7õ+>!>©/[ü·Ú•Ú•ø·þ>j?z¾Ñ4†yå>õ>_Âm‚ÑYÞþž9yæä™YÞÍòn–w#‹›åÝmí MÓfX:$v³à›ßc¥²V%DA4mªÇ^öâ°‡½8ì…Àÿþ) º¨ º( úƒöi1µjž°½Q¢F‰%jN‘fˆFh@¹9ø¼úƒWðê^ýüàÿø^û^û^û^û^û^ûþørs†Üœ!7gÈÍÀÿàÕ¼úƒWðêàÿøÀÿÇ>ä±yìCûÇ>ä±àðê^ýÁ«?xõð?€ÿüàH®’k†äš!¹fH®’kð?€ÿüàðá>üÁ‡?øðþàÃÀÿþð?€ÿüàøªÅðU‹¿K3ޝZŒ=þcøÿÞ+¿&L¥)Ñg»ï‰çxŒã1Îï~r;_ïÇÈsÝÎwÉnn¾ðÂÏî›þ·ô<ÒóHÏ£ÜÎWÏã»çñå£tš—r;ß?OÿÚµ)?ËïÖöµôø^z|1ýÏÍýøZF‰ðßý÷cÿýþáÿþáÿþáÿ Üw»ïvßí¾Þé$XÇ=Ž{÷¸nwÝîºÝu»øá· ·‹_;?½wzy§WþÀŒûz§—wú2~(ã3~8c•ÇðîÿÀÇ}üàÇ,ïþòîÿ@É•ü`‰áÈ2þáÿØ?ößý÷cÿýØ?ößáÿþáÿþáÿþSlÆ)6ã›qŠÍþáÿþáÿþáÿا?öé}úcŸþþáÿþáÿKýñû7Õø~ÞÅùûíï÷æßo}¿ïtþ~Õîèïïõ÷›b§v!¾¯0îç{‡öïWOñ-ñ+õoµkµký½Õ~ôï#þ£~£¿ðÿ%˜Ù“´Y´ñ¬×p›†VH+öYø/Á‡6>—Æ—6¬Ì§½kòééKÐ8iSô*þTŒÅR-ÖêÓÀ— ÍІu[,ÜbåK·YºO£^)`é6+öÁÿMÕ— û¦ ³‘žÍŠ}bÿ´¹´aÅ62õI÷¦ÎêK0Dð„á6H0¢÷¹ü_†Å3³¼9Üâfy7Ë»‘Åþ¿ƒ6ƒm†› ¡^Ÿƒÿ%P*üøÿ´a¿Eû\þ/û!`ÈõÁÿ?‚å–w¸&&܆A9¾†ãkÒ‡2§2 >è×°àÂðÿ%àŒê +?œlƒê {1œuÃY7ìÅø’ð-1ôb›ÿ?j›òݱüW´MY÷e.Ûí¶ûnÿ•ÛRI;åv¾=_ïÇÈÿ_*Ãø%è…ð|ðK„ÿd£Í¥Í¥Í¥Mð„Hïçëß”y} z%†Ìm–WðŸ2¯/Cq#‰›åÝmHlhÌ‚o|³àŸÓÿOužâ@ UOB zGãµ!è…Ð þSæõ`SÿðŸ2¯›2¯/Áƒmºu¯±Z¢HBó<ÍcôòŸÄ§‘„†óçô‰„àO(Ñ—èó0dß›}oö½ÙîF›mú²y^‚Y°ïŸ¯ÿ%x Q´öQÔða»›]n6÷{Ùö1lî°§‚ÿKiú/± hƒ6 ÷eó¼Ä`ˆíÆzža¿EmXÞA¿ýΨA¿&|ºÒ†s|Xça‡#}XðaÁ‡ÿœþçØ—Íóp.87œ9Ù›öqg_C/_ C/_ˆñü® ßœzÀÿ—â }|U<¾"_ Ïö_·ûn÷eW€ÿ/õû+gýãÛãñõñøþx9~—œ{„Ÿ/Ü7ü¤¾kžt;_2Où¯¾ožr»r»v;_>{$OÿGý®\ÏmÜ×wÑãËèñm´¼¿«|=¾§ßϾÖzµþçb7žùŸ;þw·{·ûò^®í¾Û}}ù¯m.Û\ŒÖq»ã¿^ÿõzF×í®Û…ÛyWüŠÇõ®®ôÓ{Wúé½Ó?8±¼Ó?d±Êc”Çðž¯öÞýâXÞýÕ?ää¾ÞýåÝÿ!‘5îk9Xc.ó`F`ÜBJåù¨2…~lî¦e¼ü_†ÿ/å1–ûZ“ h€ÿËð‘ÔóQîk7âþ/Ãÿ…§ÿ£ÌŧÀ¶¼lŸûº¯%gûd0RZ†JÀÿ…Ïÿ£Ìï“«ý~ óoÆúÏOö—áÿ÷;ßï7-ø¯2³{ßíùûíï÷`É>{Ëë¿ÿUföïW|‹ÇPÿOĶà¿ÊÌþýªýèßGãúÉUðGˆ„ Í¢ÍÚ‚Æ‹Yq±$²û·Þé} ¯Þ‚€á¥1+³X©ïV®ÏK YŸ/Íî%øSó–wÿD~Hdy÷ ä‡JÖü«k`² H0^Êí,Ûr`À‚°íõß6¶½þÛÀ&Áç£Ü×»¿÷¯¯±¢5~[" ~ðúo›Ÿ—º~‚ë¾–—í“Áø`ÛØ6¶½þÛÀ¶°m|ekÿä=¾ßï@SýØ­:±[ua·êÁnՃݪïºU·u«.ëVýÕ­z«[uV·ê¬nÕOݪºUu«îéV½Ó­z§[õL·ê–nÕ)ݪOú÷üÏq! ‚6‹6ë@DB° ‹^›^†,†lü£ÿ—€á¥ñõ ó`gEŠzðû €£÷z_‚?õ‚ ;‹%Ëûísðû €C¶ÏÁï0~ÿƒp0޾åóºozmoÚ =2}Ù>¿ÿÁ8Êñ Ú T2Ù>¿ÿÁ8øýÀÁ8z¯÷%øSñÌ,ïF7’¸ÅÍòn„q³Î±Ü,øfÁ7 .à(ÇÿÕ© q!P«Gœ .àà÷?àísðû €ƒßÿ` €ƒßÿ` €ƒ@ ÜMYÛMÉÚM]ÚMÚMñÙMñÙM=ÙM­ØMAØMù×MÕ×MÕ×ME×MÙÖM‘ÖMmÖMmÖMÖM¹ÕM•ÕM•ÕMMÕM)ÕM)ÕMÕMÕMÕMQÔMÁÓMUÓM ÓMéÒMéÒMYÒMíÑM¥ÑMÑMÑMÑMÍÐM©ÐM©ÐMaÐM=ÐM=ÐMÐMÐMÐM‰ÏMÏMÕÎM±ÎM±ÎMEÎMýÍMÙÍMÙÍM‘ÍMmÍMmÍMIÍMIÍMIÍMÝÌM•ÌMqÌMqÌM)ÌMÌMÌMáËMáËMáËM™ËMuËMuËMQËMQËMQËM-Ë}lÇÀKq’>¾+žå ÅW³Ýc»Ývßã¿"öøý €÷Êr;ß/Ç7È~Òðh¾Vö àØø£|Ù<é¿–çQ~‚r»r»v»v;ß>O{\ß?2ŽýþÇÀ±ðRŒñ»À—waq‘ìsì÷?6ŽýþÇÀ±ðRîû»Ü}»¯í¾ÞËå½\Ûa›‹qÀòNÿ Áòþ®ëy×u;ïï · ·óþ.ïêò^þÄJ?}º¯wzy§—wzy§—wz•Ç0ÊXå1 8–wÿ‡=Vÿ“ûz÷@dy÷˜dWwÌå'?’}ŽýþÇÀq²Ï±ßÿØ8öûÇÀq²Ï±ßÿØ8öûÇÀ±ßÿØ86Ž €ãdŸc¿ÿ±pì÷?6Ž €c¿ÿ±plÇ~ÿcàØ86Ž €û~àu{÷W·wu{÷W·wu{÷W·wu{÷W·÷¯û£_ñYb´Äi1Œx-1[â¶Än‰ß¿Ís‰ß¿-~[ü¶ømñÛâ·Åïˆß¿ÃDÅïˆß¿“ü¿tqwúõ*ˆ†àA.Orá|á|ý0p¾p¾p¾p¾p¾p8œÎçð<áp8œÎ ç„sÂ9áœpN/!œÎ ç„sÁ¹à\p.8œ Îç‚sÁ¹àÜpn87œÎ ç†sùáÜpn8œÎçóÀyà" ¢ ÎèçEA/zQÑ‹Ž³¨ñ¿‡³(fQÌ¢™E3‹fÍ,šY4³hfÑÌ¢™E3‹fÍ,šY4³hfÑ5ÍYÓ6ÍiÓ7ÍyÓ8͉Ó9Jc¢nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï߯n¦±vüþ­Lµ)n¼Í\ÖNßzÌfm¦³6óY;=FzŒôé1Òc”Ç(Q£ëpú¬Ãñ³çÏ:Ç0Î9F:ç‡uŒvŽñÎ1â9Æ<Ǩç÷œå1¶ÇØc{Œí1¶ÇØc{Œí1¶ÇØãxŒã1ŽÇ8ãxŒã1ŽÇ8ãxŒã1®Ç¸ãzŒë1®Ç¸ãzŒë1®Ç¸#Ëàgý,ßeü³ €–Ð2ZÆ@Ë h-àe´ „–‘Ð2ZÆBË`h -áe<´ ˆ–Q|Pÿ«Û»¿º½û«Û»¿º½û«Û»¿º½û«Û»U·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½ó9 ‚µ9Âm"!X¯ sX™ÃÒÖæ°8‡Õ9,Ïa} tX¡ÃÖè°H‡U:,Óa uX©ÃRÖê.6g±;‹íYnÆov|{ËÙóͦov}ÃyÃyÃyÃyÃùÀ™½¸ÇÒgöâ²—½¸ìÅe/®…ÔRj1µœþÎU˪…ÕÒÊ^\öâ²—½¸ìÅ ëœÙ‹Ë^\ï‚{‘Ü‹è^d÷"¼é½iõ‚sÂ9áœp.qÖ§nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï‚õÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?ŒõÃX?Œõÿ(¯ÕñZ¯ÕñZ¯ÕñZ¯ÕñZ¯ÕñZ¯ÕñZ¯ÕñZ¯ÕñZ¯ÕñZ¯ÕõZ]¯ÕõZ]¯ÕõZ]¯ÕõZ]¯ÕõZ]¯ÕõZÝå1–ÇXcyŒå1–ÇXcyŒå1¶ÇØc{Œí1¶ÇØc{Œí1¶ÇØãxŒã1|n‚,ce²ŒB–aÈ2Y"ËHdŠ,c‘e0²ŒF–áÈ2Y$ˈd’,a’ü°þW·÷ï¿øWýó·C)/}ÊKŸòÒ«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{ÿæsĆ8‚e +1q'òÄAž8Èyâ O䉃:|vøððéáãÃçÐ@#4Ð@#4{ÑìE³Í^4{1¬Æ°Ãj «1ÇB1¬Æ°ñ=œÛJ¢nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nïŸ nFñ§ñ§ñ§ñ§ñ§ñ§ñ§ñ§ñ§ñ§Úÿœö?§ýÏiÿsÚÿœö?§ýÏiÿsÚÿœö?§ýÏiÿsÚÿœö?§ýÏiÿsÚÿœö?§ýÏiÿsÚÿœö?§ýÏiÿsÚÿœö?§ýÏiÿsÚÿœö?§ýÏiÿsÚÿœö?§ýÏiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄŸFüiÄÿG…{„{„{„{į‡ŸÊZ{­µ×Z{­µ×Z{­µ×Z{­µ×Z{­µ×Z{­µ×Z{­µF!Ë0d‡,‘e$² E–±È2YF#Ëpd,’eD² I–0ÉW·wu{ÿT0õ[úmýê«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{ÿæûˆ¡Î›Â]_¸ë w}á®/Üõ…»¾€üä/ ù È_@þ"¥HF)’QŠd”"¥HF)’QŠd”"¥HF)’QŠd”"¥HF)’Q È_@þò¿€üä/¼ë…w½ð®Þõ»^x× ïzá]/¼ë…w½ð®Þõ»^x× ïzù È_@þò¿€üä/ ù È_@þò¿€üõŸÕ+ž„(ˆ†çXÄ‚ØâBÀ™M 6%Ø”`S‚M 66œ7œ7œ·8’ÐhÜõÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíÝÔíýGùË¿ ùË¿ ùË¿ìN/»ÓËîô²;½ìN/»ÓËîô²;½ìN/»ÓËîô²;½ìN/»ÓËîô2ä/Cþ2ä/Cþ2ä/Cþ2ä/Cþ2ä/Cþ2ä/Cþ2ä/Cþ2äÿ£®Ç¸ãzŒë1Âc„Ç#<†wðxwðx}'/_ÊË·òòµ¼|//_̤j”!ò—!ò—!ò—!ò—!ò—!ò—!ò—!Ù9^vŽ—ãeçxÙ9^vŽ—ãeçxÙ9^vŽ—ãeçxÙ9^vŽ—ãeçxÙ9^vŽ—ãeçxò—!ò—!ò—!ò—!ò—!ò—!ò—!ò—!ò—!ò—!ÿå=¿Þóë=¿Þóë=¿Þóë=¿Þóë=¿¿=1c<†!­ü_ÝÞ¿ýÒ~"£º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nïVÝÞ­º½[u{·êönÕíݪۻU·w«nï;±!<Å  Q !Æ‹•‘‹¡ÿMúM“~Ó¤ß4é7MúMþ~ãÂo\ø ¿qá7à¿ÿ øoÀþ›|ñ&_¼ÉoòÅ›|ñ&_¼ÉoòÅ›|ñ&_¼ÿ ¿qá7.üƅ߸ðð߀ÿü7à¿ÿML“Ó$À4 0ML“Ó$À4 0ML“Ó€ÿü7à¿ÿ øo¼òW¾ñÊ7^ùÆ+ßxå¯|ã•o¼òW¾ÿ øoÀþð߀ÿü7à¿ÿ øÿÓ18o8o8o888«&œœÚÉ,iifÑÌ¢™E3‹f´4Öä±yìCûÇ>€ÿÁ«?xõ¯þàÕÀÿþð?€ÿ!¹fH®’k†äš!¹fH®Àÿþð?€ÿÁ‡?øðþàÃ|øƒÿøÀÿþð?€ÿ?‚^‡^‡^Hx!QÍ,šY4JÔ(Q£D5§Hó`ÊÍ¡nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nï¦nïŸr<(*_ð{üÇðœ”3NÊ'匓rÆðìÓûôÇ>ý±O ÿÇð ÿÇðþ#Uý¥¶©cê×.Lñ,ÇWÞY¿+SmŠyœívÛí¶Ûm·;nwÜî¸Ýq;ÄŽtš1üÃÿ1üÃÿ±ÿ~ì¿ûïÇþû±ÿ~ì¿Ãÿ1üÃÿ1üÃÿ1ü)÷-÷-÷-÷õNûv^¾ž—ïg|úcø?†ÿcø?†ÿóßò-½|M/ßÓËõòMM:ÍþáÿþáÿØ?ößý÷cÿýØ?ößáÿþáÿþáÿþ¿”ûz÷¯wÿz÷ –¡Á26XËè`,ãƒe€°Œ–!Â2FþáÿþáÿþÿQÞýk=¿Öók=7´XÆËàb]ÿÇðìÓûôÇ>ý±O ÿÇð ÿÇðÿ¥þø¯nïß¾nýö÷û^:Gu{êöÕí=ªÛ{T·÷¨nïQÝÞ£º½Gu{êöÕí=ªÛ{T·÷¨nïQÝÞ£º½Gu{êöÕí=ªÛ{T·÷¨nïßó? ‚™1ÓÏÁÿG,ÚxÖë@¸MC 3¾"˜óçò ÚÄ 1 q˜ùwýŸ¢qјå8¬Ãÿ_‚±†î¬ÉaQ¾ããݶ‡e¹,ËeY.ËrY–˲\–å²,ŸWà%è~¹ÈÈw"ü—?±byù4ÿ@r.+öÙð/AÖðÓï—à Óm‚E@Æ.«z‘²Ëò^äìÓÑ?‚å½,ïg¿„Û0èhÐOé^â@\«È²°àü‰‚€3+¨æ—§óôB[?øÿG°ÂbüÁÿ— ×¡^cµD‘–æá¿wgu{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{u{ÿ–íáˆÔg;ÿ¨PÉçÿQ\#›s[Y÷åvå¾í¿¶oÙ6—v»q»q»q;ßlÇWÛñ“¤Lï¢~T›b–Ç7ÝAK•´óQæ¼Ýn»Ýq»ãvÇíίŸàø ®Û]?)r'øÿRá1Âc„ûƯÇá=:é1ÒcxßNºoº¯÷í”û–û–ûzWO¹oû™Û\¼¿¾ž—ïg%í|í|E/ßÑòïÔ¯]™â |Q/ßÔÊ—ÿ(÷õN_ï´oòå«\ðÿ£<†wúq<†wß—½àÿKy÷¯wÿz÷–A€àÿKY"Œ –¡Á26XËè`,ãƒe€°Œ–!‚àÿG¹¯%âz÷¯wÿ–ûZÏ"ÿ?ÊÏlÙ¸ÖýÛægÙ¸ã¾ãµúɋσ%ò|Ô2µMSaêå÷ÕíýÓê£ßù~¿»Fu{êöÕí=ªÛ{T·÷¨nïQÝÞ£º½Gu{êöÕí=ªÛ{T·÷¨nïQÝÞ£º½Gu{êöÕí=ªÛ{T·÷¨nïßC>" ‚6kA\¯‚ ×Ö¦|®×"Y ÚÄðŸÄð°:…–œþ/Á¢–ÿIJ7½†­Y–âËÿ{ Ú°—ÕøÂ„/ÁƱ,—e¹,‹N•¥:¾7|¶UðéeÛ— ×¡×…áeôë?1:’#_Êæy Ú$O˜ ‘4fU/’õ¥Ü½Æò^¤ì"f9“f.àÿR6ÏKІu¾¬³ôoÿðéµÙ—@EQº`ÿ—|ý¯>ÑxÙ-ø²ó_‚^›^lŠàÿþ/¥õ¼½vè~Õý{÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷P·÷,|þÅձÇ?÷•|þ/…éÛº¦Ü·ÍÇW~þGñ{ÜnÜnÜÎOzü¤Ù’§ÿ£Ê}§DŸr»í¿nÿu›óv»ãvÇíŽÛ#ˆã'½îÔÿ_ÊÏ|=F¸G¸]xŒðá1Ò=Òcx·NzŒtßt_ïà)÷õ^žrßrßò“–¹´¹´û¶Ûÿ:þëxFH$ðÿ¥Ž©k*M1îõ®ú¢þ¿T˜òÞißßJåù(±=†÷üáÝ¿Çcx÷¯wÿz÷}ïÿ_Ê}¯ûZ €ÿ ŸÿG¹¯5Ôà`,Ãe|° –Â2Dþ/<ýå¾Þýkí6†þ/Ãÿ…Ïÿ£Ì¥=_ë¾Qðþ¿”ûŽûþ$Ç'ƒáðþ/|þ¦^~_ÝÞ¿¾ßï'(ªÛ{T·÷¨nïQÝÞ£º½Gu{êöÕí=ªÛ{T·÷¨nïQÝÞ£º½Gu{êöÕí=ªÛ{T·÷¨nïQÝÞ£º½Gu{ÿîy DBÐfÑfmˆ AãÅ‚,¸X’ÜÏõb¨±\¯ÿÿo}ó]±Á¿|* `X¬; ¡ƒeãõßàÿ­·s_Bm.«!ü¿•ÄÿìËrYáÿ׃ÿ·Þé}÷›Ùt?ô:ô:A¯ËŸ.£#0Ró­\Ÿ—  Kw‘¢‹]äè‹ß½sG´¤Ü[ùý/CÄì²¼A“=¾ñúoðÿVÿK0Öh,©Ýÿo¼þü¿•ëóG°ÎÁ:Iü/QpÞ4Þpf %•׃ÿ·R|^‚^hn°;<Ëë¿ÁÿüOÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞCÝÞ³íõß6¶ €Í+½/Åä”êóRµLSaÊ}Ûåù16¯å~”ÛÛùIŸôøùꨟ*S<Áñ•w|ÕeΜ-/¦Üî¸Ýq»ãvÇã{Ýãú™¯Ÿàºïõáá1ÂíÂcxgNºGz ï– €m¯ÿ¶ðGy} ãõß6¶ €m¯ÿ¶°m¼”ûzÏx ïïsöþ^Ëß5v¹xý· €?j¹‡‘Œ¯j €—òÞéë¾Þé»=ÆöÞó{<ÆñÞýëÝ÷m¯Ÿr_ïþõî ,à €mà¥üÌááév–ãƒe€°Œ–!Â2FÀë¿m¼”û–ûz÷¯wßpbO`lÛ^ÿmಔÜñŒûZ^®O†û“àÀ¶°íõß6¶ €mà«Ûû§Õñý~‚¢º½Gu{êöÕí=ªÛ{T·÷¨nïQÝÞ£º½Gu{êöÕí=ªÛ{T·÷¨nïQÝÞ£º½Gu{êöÕí=ªÛ{T·÷ïážâBmmÖˆ„`A½¶—@ “Öñu”ãÿ¬OИ•8L]ÇÐQŽÿK°ÚEcÖã°:XÙ>¿ÿÁ8ÊñÿÛgA°?,ËeY.ËrY&à`}Ëç%‚î‡^‡Æ‰<G9þ/ÁèŒÔü(Çÿ%h´IÚ F²ëÀÁï0ÀÑ{½/ÁŸ³Ëò^MªyÈö9øýÀ!Ûçà÷?¿ÿÁ8G9þë,o ‡ø h¤üþà`²}~ÿƒpðû €ƒpðû €ƒp0¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{¨Û{Ž €càØ8|Éç£Â”o„r;¦…px­÷£üW¿ÿ±pÈðÿ(·ó“?éápÁïlûý €cà¥ÜÃ7ÛAÆðû/åvÇíŽÛ·;÷z4¤nù²Ä86^Êc„Ç· · á9é1Òc¤ûzßNºo¹o¹o¹¯÷òx/Bº|5/ßÍ/åÞß3ž‘÷÷ŒÛy¯¥Î—4ÀK1®ïi €c¿ÿ±pl¼”ÇðN_ï´¯r’}ŽýþÇÀ±ßÿØ86^Ê}½û×»½û†Ç~ÿcàØ86^Ê}Ã=Âí,†Ëø` ,#„eˆ°ŒHö9öûÇ~ÿcàØ8öûÇÀ±ðRæbÝ¿ãµ÷µ¼rà÷?6Ž €càØïlÇÀ±pßüŸ¯nïùêöž¯nïùêöž¯nïùêöž¯nï_¿½ 6ĸÁh» ÌgD|²÷GÀùÀùÀùÀùÀùÀùÀùÀùÀùÂùÂùÂùÂùÂùÂùÂùÂùŠóá OxxÂÞðð„‡'<Ç|ô„‡'<<áá OxxÂÞðð„ÇOxáp8œÎç€sÀ9àâ ŸÐèÇgôãCúñ)ýø˜~|N?>¨ŸÔêÇgõãÃú9ÃÇõãóúñýøÄ~|d?>³ÚOíÇÇöãsûñÁýøä~|t?×c\#7ÂçFøÜŸás#|n„Ïð¹>7ÂçFøÜŸás#|n„Ïð¹>7ÂçFøÜŸás#|n„Ïð¹a ²ŒT–¡Ê2VY+Ëhe®,ã•eÀ²ŒX–!Ë2fY-˨e¶,ã–eಌ\–¡Ë2vY/Ëèe¾,ã—e³Œ`–!Ì2†Y1Ë(fÆ,ã˜e ³Œd–¡Ì–‰Ï~ˆ·\Àß=úÕ?Rúï÷è÷ê7ø»ÒrÓtÓv»1c~böÇŽqƒ†Àaxp †ßVüpN8'œÎ ç„sÂ9áœpN8§8ËŠ \ð¡\ð¡\ð¡\ð¡\ð¡\ðÁžðð„‡'<<áá OxxÂÞðø Îç‚sÁ¹à\pF4ä= âA\#°"+"°"+"°"+"°"+"°"+"°"+"°"+"°"+"°"+"°"+"°"þêBÓxh>&Ÿ“ÊÇ'åã£òñYùø°||Z>>.Ÿôå1Êc”Ç(Q£<†ï«§7ÂçFøÜŸás#ú‡C=†Ïð¹>7ÂçFøÜˆñã1ÆcŒÇ˜Øý¡]ÃÝÇx÷1àõ f³Œb–aÌ2ŽY2ËHfÊ,a™üÂ_™á¿-Jý–~[¿úû'e©l¥ÄŠH¢ IT!‰*$Q…$ªD+"±"+"±"+"±"þŽÆEã¢qѸÜ8 <7&W” >” >” >” >” þ#xÂÞðð„ÇOØ‘Á371p8œÎ#ÎÁ¼‚yó’‘X‰‘’ @H‚I $A€$’ @H‚I $A€ÄŠH¬ˆÄŠH¬ˆÄŠH¬ˆÄŠH¬ˆÄŠH¬ˆÄŠH¬ˆÄŠH¬ˆüÏš—¨C¢yà|à|à|àŒ°%–[²)ɦ$›’lJ²)ɦä…ó…3Z™he¢•…$4 Õ,T³Pý¸Í…РÍq!+‚ćććÄÓi¦ÓL§™N_7.ˆ†Ðtšé4Ói™æi%<% Oi+"mE¤­ˆ´‘¶"ÒVDÚëŸöú§½þi¯ÚëŸöú§½þi¯ÚëŸöú§½þi¯ÚëŸöú§½þi+"mE¤­ˆ´‘¶"ÒVDÚŠH[i+"mE¤­ˆ´‘¶"ÒVDÚŠø£ÆcŒÇ1c<ú»r¹‚¹’¹–wpy—wpy—wpy×ã1–ÇXcyŒÅŠH[i+"mE¤­ˆ´×?íõO{ýÓ^ÿ´×?íõO{ýÓ^ÿ´×?íõO{ýÓ^ÿ´×?íõO{ýÓVDÚŠH[i+"mE¤­ˆ´‘¶"ÒVDÚŠH[i+"mE¤­ˆ´ñG]q=ÆõÆÇ ãeÃŒcœq 4Žwðxwðx}—/_æË·ùòu¾|Ÿ/_èäK¥­ˆ´‘¶"ÒVDÚŠH[i+"mE¤­ˆ´‘¶"ÒVDÚŠH[i+"íÃOûðÓ>ü´?íÃOûðÓ>ü´?íÃOûðÓ>ü´?íÃOûðÓ>ü´?íÃOûðÓ>ü´?mE¤­ˆ´‘¶"ÒVDÚŠH[i+"mE¤­ˆ´‘¶"ÒVDÚŠH[i+"mE¤­ˆ´‘¶"ò¹oSÇÔ5¦~=ÊT›2â÷ž§÷<­yiÍKk^Zó䊬/{©„(™õ•2øûÕß?¥·œë?º/ÊŒ(òŠ|£"ߨÈ7*ò 3¢ˆ/ñ…"¾PÄŠøBaFfDaFfDaFü#Î ç†sùá|9/ßÎË×3/L¼”Ç0:9†'Çzt¬GÁ ŠQ6#ÊfDÙŒ( Ê‚r  (( Ê‚r  (( Ê‚²Q6#ÊfDÙŒ(›e3¢lF”͈²Q6#þ(k…‘Á24XÆËà€4—òÞ…ð.„wÁxbP,#ŠeH±Œ)–AÅ2ªX†˸bX,#‹eh±Œ-–ÁÅ2º PP”å@A9PP6#ÊfDÙŒ(›e3¢lF”͈²Q6#ÊfÄK¹‡¥$-%i)Q’Bo?´r˜ZQ•Cþûå¿[¿óý~Œš ¦&јÿri|劽‚Ѥ 5)HM R“‚Ô˜M¤¡‰44‘†&ÒИјñïÿ†6C›¡Í¸¦³®³­ BP ù%ø&¨ƒ«y%¡ BP ù`^:š¤&‰É/A/æu˜×a^‡yæu˜×a^zýªù\RóÚtóݤæýéæýé&јM R“‚Ô¤ 5)HÑDšHCih" јјÍ+Í+Í+Í+Í+Í+ÑDšHCih" јјMQ“CÔä59DMQ“CÔ˜јÑÄš¸BWhâ M\¡‰+4fDcF4fDcF4fDcFü#ØDÑ2é…ˆ¥ ’ÿÎfÅškV¬Y¨fšEh¡Y„fšEh&¨HCih" H>H>H>H~ Ú ~ø5â×è`£ƒÄ ÚfĵüoH™G/Å1òl·óIùø}8މ2´Íˆ¶Ñ6#ÚfÄK¹OÓ'Ü.ÜY Ç¿mF´£ í(C;ÊÐŽ2´Íˆ¶Ñ6#ÚfD;g¨3ÔÎjç µs†Ú9Cm3¢mF´Íˆ¶ÑŽ(´# íˆB;¢ÐŽ(´# m3¢mF´Íˆ¶Ñ6#ÚfÄå½\Û}·û"ÚÄ ÚfD;ó¨yÔÎG¹¯O©ð)e<± (VüÖ¾D}6T,£ŠeX±Œ+–Å2²ÀŒh›m3¢mF´ÍˆvQ;¨GÔÎ#j›m3¢mF´Íˆ¶Ñ6#ÚQ†v”¡ehGÚfDÛŒh›m3â¥^~ó½==zb”Ä4ŠB¨°ò¿ßïš›ÿèvý®ˆõ„̈áõåáõåáõåùO)LCb0#†×†×†×† Ä`F YICVÒ•4˜CÈa9 !‡ÁŒ̈ÁŒø·Ï‚؇5Ðêh‚”Zþ#‚ÆAã M²¦ÌKGÐðºÂðºÂðºÂ„ ÔòK0ó:Ìë0/…†Ãr Ôò¡Ôò¡Ôò±hƒxèSC Ó„̈áu…áu…áu…!1˜CVÒ•4d% fÄrBCÈa0#3b0#†×…‡×…‡×…‡ Ä`F YICVÒ•4˜CÈa9 !‡ÁŒ̈ÁŒÞ7Þ7Þ7˜ÿ¬ƒ 9 !‡!ä0˜ƒ1˜CÒƒ4ä fÄ`F fÄrBCÈa0#3b0#þ=a¡ ÍÒ5+ÖH‹^_^_^_R˜† ¥–_‚Æ,B³ÍÜeF YICVÒ•D©å?ýjæÕÌ«Óm"µø5:Ø>džÇÔzL]SmŠ“F¯(Œcc3bœŽ4NG§#͈q¼aoÇÆfÄØŒ›/åv>b–ˆÄØŒ§#Ó‘ÆéHc3boÇÆñ†±16#ÆfÄå#øñ¬— ÆfÄ8Þ0Ž7Œã c3blFŒÍˆqêÑ8õhœz46#ÆfÄØŒÇÆñ†q¼alFŒÍˆ±ñR<óö:oD3büŠÂø…ñ+ ãÄØŒ§#Ó‘ÆéHc3boÇÆñ†±16#ÆfÄKýÚµ)ÖþxýŽ×êx­Ž×êx­Ž×åüÂq»ãvç×ÎOpü×í¬ Çº 3boÇÆñ†±16#ÆfÄ8õhœz4N=›c3blFŒã ãxÃ8Þ06#ÆfÄØŒø£¬3á¯sxƒC”t¤±1Ž7Œã ãxÃØŒ›c3â¥~íØé¸~*¯}xãzŒë¾^ç#~í<†OŸðÚ"`FŒã ãxÃ8Þ06#ÆfÄØŒx)?³×Þ€bQ,CŠeL± *–QÅ2¬XÆËÀ3blFŒÍˆq¼aoÇÆfÄØŒ›ã—ÆfÄØŒ›ãxÃ8Þ0Ž7ŒÍˆ±16#Æ)Jc3blFŒÍˆq b0#þ‰J~?ïýýÎ÷û²þûíï÷íø÷«/»¿ö‚_ Óñ âKÀüúO%"6ÿ’ðÉ á?éa¾¦—€a鹿W^‚A›6M›¡ÍxÖÌbbXˆgAlÖ€Eøü"/‘,Ïq ü'Mç;¶^‚)øC”ÿÄF0Áüó:Ìë0¯/q)Ù|å)½Äˆ† ñZôZz°ÏñjÌ4˜éw^üù@Ћ­ ¦Lùs¼mš6M›¦Mk}>'ÁKИEøÔý%x0V#Y„ÏŒx þ´Ú,Ú $Ÿz¾Ú„:|ù A/4å B¼mÐÏŒx 8#cŸñô 8£V_ìá%èôbwKò3#^‚î©îßÛÓ÷Ñ /!†|fÄKøO«9WšÕh¡Y„fšEh„­™r3ÓïU†—`P&ØÌ«‘ºf:Æ}±‡— qñ<dûySh†bÅÙñ½ÕüQÛ”ûžÇÔ1õû+§ÝsÝÎèãô¹¿vœkOÓ'Ü#ü|á¾á'õiû¤Ûù˜}Êõ‰û”Û•ÛµÛùø}ÐUE>Ê=Æs÷õiüø8~|/Îa¥(}Ô5U¦Ü –ñQÇ”û.÷õ®í¾ÞË/ðþQîëëï‹A|\¶×y£QŠA¼²§·š?êšr_¯énߺýû+»¿}­m¯ßöúmÎ<™uMù÷J¯äñJ¯ßñª¯Õñ ¯ÐñºËý±ÜŸãvÖ€sü¤Ö€Ã1(3â£üÌÖ߻˯R”>Êc„ÇH÷HáÝ:ÖŠ“î›îë<Öã½<Ö”ãÄ÷¹b/Õp .Å >*Mù¯^ñðŠ‡Ï—Ønçcœeä^ñÏŒø(÷Ó(ñQîá3'¼âñÃr>sŒdF|”ûúô ¯}xÅÃ+n´ 3â¥|6Eý0¤ŸÔk^{ã‰e@±Œ(–!Å2¦X˨bV,ãŠe`!3âú"eDË)3â£ÒÔ¯/Oj"3⣶©0e.ë×—µJŸa*2#>Ê\,Ci­5~Q â£Ìï“«õ~½õObî÷û èúÞøûï—æGí>\úöÒA‹ïˆ—傸4þàÀúï{}ú%ø—„O Só½ñü©º7ƒ6m†6C›¡Íð`Ó¬ ñ,ˆÁ°:ä–^€ø#bAÐ8hÌLuX-½ñG|* `XlDÓ‹yæu˜×a^_ Ó] B\J?¿Ä…H=Æ—¹t)ýüB½¾X抂Ð3ë¸Xzâ%øS–±ô"ôKІ= öôKF| =s°Á"Hß—‚/¡^Éj$‹ ^˜K/B¿mmm6möo=¡´paF,¥0½œÑ/ñpFÆ%J¶ ‘ºD­dF,e.½½’^ìN¢z_â%èžZºBAš¥kV¬’/q)ýüGp¬4ëÓ¬F³Í"4‹Ð,B3÷/…éˆ Awô«‘ºf:ÍtšY4'3b)séRúù%Ô«Ó/µ¶)ÿ±ÀŒx©cÊ}ÿÊÜ1#^Šƒð¹nçôñ úø}Ø~̈EÚÒG…)?ÛÇ§í“æìcVfÄKy¿Õ(·k·k·këøK[z)ŸÅãgÜ×Çñƒø£ç°Þoø¨0U¦ÜƒcL1ˆrßå¾Ë}½ƒk»ïv_ï¥ÌˆE â£Ì׫Ó/…*饼ºÛ«»:½ýðR^ÓݾuÛ\¼’Ûë·½~uÕû å›VÚÒG•)žàx%ÏreΖöã:蹘^Êr/3â¥Üΰák ð «ÄG¹¯uÁ÷.fÄK¹5àxgNº‡uáx·ŽAÈ1 9ÖãôÍ­ÄG¹¯uFÞÀe3bÙŒXÿé퇺¦Ê=Â+–İüÅv;¯xxÅÃ+^ñð™óÅ >Ê}½âqÝãz ¯xü°œWÜX3bƒø(÷M÷õЇW<¬3Qîëµ7„XƘËfÄKù™ (–!Å2¦X˨bV,ãŠe`¡ÄeŒ¡´¥:¦ n­yÆ Ë 3bÙŒXÄ >Ê\,%¹~@Ú}-/éÓ,-9Æ,˜ËfÄ"ñRÇü,W2#ö[ýáOGãûýÜß+Ôÿ~¿®ûKbúûU»£¿ëôÜÿ-Z|¯OÿwC¯‡½#"á“ ‘4NÚ½Š?õ‚ {Ó¦i3´Ú m† !3b„ؘ3bëË­Äeu˜×H} ,h´Iø0/y2¶R˜^‚ÆEæu˜×a^‡yæõ½q·R˜^â@\ˆ‚Ð2#6A*H_*Hß­/ý± Bƒê¼Ø˜[¯OÿÅŸ˜²cFl½ñ´iÚ´Û虃EÂo‚3bcFl½>ý¡gNæ.µÝzâ%h³iƒ¶H'7Aˆ± Bl̈±õÄKÀùÒæÒæÂ™O”HAˆ±1#¶R˜^‚^ˆ_¢hÉî$»“¨^"™2#6fÄÖ—[ÿÎ –®Y±F6¾¦— 1+Ö¬O³Í"4‹Ð,B³ÍÜ›™~)L/AwfÚÌ«™N3‹N·áÁŠ!Šó³¥ÈF õÝ¥—B!ôöÃK1IbÛfÄK¹ïñ_™;1ˆm3âºnçôñ úø}ØubÛfÄv bÛŒØ6#þ(Ÿ¶ßÛ/UžGù ÊíÊíÚíÚí|ü>íq}?h+1ˆm3bÛŒx)ÆXÃÄ ¶ÍˆMÓGµ)ÆXh0fͱI`ú(÷]î»Ý×{¹¼—ŠAl›ÛfͱùîÒG…)ÆØ^Ýíûl—Ûyu·o²/é£ÌeÜηÙöúmÔ3â¥|S£Ã˜Û1ˆm3bÛŒx)÷ðZ¯ÐáÄŒx)·³Ü+±mF¼”ǽ`ù†ÅŒØ6#^Êc„ǰø ^¾z‰Al›Û1ˆm3bÛŒx)÷µ~œr_ëÇñ^ïå±Îø>_¾Ð1#özuú£Â”¡’Ï—°t†×9,uqÜî¸W<ŒÜÂgŽbÛfĶñRãÛÂí|úÄËùÌ Ÿ9a€gX°Œ ”ÀôQîë)¬3Æ ˜Û1ˆm3bÛŒØ6#þ¨ß:û”2¢X†˘bT,£ŠeX±Œ+–…˜þ(c ̈íͱmFlÇ ¶Íˆm3bÛŒØ$0}”ûúJë¥aÊ2N!±mFl›ÛfÄv bÛŒØ6#¶Íˆm3â¼U#î_cý¶~çûýÄ꯱~ÕíS룾¾ ·ÿt!"!4Ü~"!ü§†Ð³ìõ@,ˆ q .œœœœœ7œ™Îf:›él¦³™ŽÜ+GŸlz‰q!Ü8!Š% ˆ„ðŸ‚}à ïöN°<áå /OxYðË‚&/e£ß„3ӹǛ g¦s™N D"!ïÅ!bq°9ŽÞÇ~‰†Ðcè`:Ø%G/[¼œÎç€sÀ9àpN8§8gDC¨qÖAãÚâBDBÀ¹à\pn87œÎ ç†sùáÜpn87œÎçóÀyà¡Ñ‹S`-޵8Öò%±Ž{p¬ÅY°gÛZnkq“¬u<Æõ×c\q=Æõ×c\q=Æõ×c„Ç#7ÂçFøÜŸás#ŒíÂà.Œîb{Œí1|Ò„OšðI>iÂ'Mø¤ Ÿ4á“&|Ò„OšðI>i TVšsšsšsšsšsšsšsšsþ8û KŸaé3,}†¥Ï°ô–>ÃÒgXú KŸaé3,}†¥Ï°ôI“>iÒ'Mú¤IŸ4é“&}Ò¤OšôI“>iÒ'Mú¤’úªVÿû9úÏoòÿ~C¿©_þÞúïWfÄÑüé—?‚6gCþDBð`OCˆ¡ÌˆĦñ¦1£oFߌ¾}3úöèçBðÎ,È>p>p¾â|à|hshsÜæÒæ²ÒW£ëø¸˜3âbF\̈‹ñà ¯·ŒÑ/£_F¿Œ~ýztï´·Ú{íÍön³Ý_EùK ëK ëK ëK ëK ëK ëKñèKñèKñèKñèKñèKñèKñèKñèKñèKñèKñèKñèKñèKñèKñè„…?áœpN8'œÎ ç„sÂ9͹à\p.87œ[œëÙâBDBDCˆs¡µà¼à¼à¼àŒÔRWH]!u…ÔRW¨¹ÌªQ_ªQ_ªQ_ªQ_ªQ_ªQÿ¬O³>Íú4ëӬ̈ÄÐxÔx}}}}}}XÌa1‡ÅsXÌa1‡ÅÄŒ¸6#®Íˆk3âÚŒ¸6#þ¨íÛ=¶{l÷Ø¿¤OÒÇGéã³ô9~ªã1ŽÇ8ãx NŒõ;¬§õï¸þ×>°1#®Íˆk3âÚŒ¸6#®Íˆk3âÚŒ¸6#®Íˆ?*=FzŒôé1Òc¤Ç(Q£Ê=ü,Ûϲý,»Wñ6ågékÊOÕ£=F{Œöã›Ücq<ÆñÇcq<ÆñÇcœßã1ÆcŒÇ1Œá tù]¾B—ïÐåKt]Ãyã^꘺¦<†uõZW¯uõZ®õèZ®õèZ®õèZÂçFøÜ&̈k3âÚŒ¸6#®Íˆk3âÚŒ¸6#®Íˆk3âÚŒ¸6#þ(k¨¯øå;~ù’_¾åI~ºŽ_¼”Ç#øú‘ÁR3iA€!0† À˜˜˜ÿ¶ï²— ¼ìà 8œÎç€s"¬j0¯`^ÁB……ÈR”ˆQ"G‰Àe@è1¾/+¼œ Î ç†3ò¬€eð"E ¤BfD`FfD`FfDügMI8'œÎiÎ ç†sÃyà<â,3"0#3"0#3"0#3"0#3"0#þR!H… ‚T(Q¡D…JT(Q8øÈŒ}ðõ% ¢!ħyÂfO›Ål³YÌf1›Å”˜˜ñàÜÎAÑf%DA4œ7œÑÊñ÷°Oı…pl![ÇÂfDØŒ›a3"lFüQÇc\q=Æõ×c\q=Æõ×c ª˜a3"lF„͈°Ž„#áHA8RŽ„#áHA8RŽ„#a3"lF„͈°6#ÂfDØŒ›a3"lFüQí1Úc´ÇhÑ£=ÆxŒñã1†16G+±…pl![DZ…°6#ÂfDØŒ›Á—š>Êcüže<ÆxŒñã1Æc l$D…͈°6#ÂfDØŒG ‘‚p¤ )G ‘‚p¤ )G ‘‚°6#ÂfDØŒ›a3"lF„͈°6#þ(ƒ_¼Ë7ïòÕ»|÷®k]½ÖÕk]½Ö£k= NP̈°6#ÂfD8RŽ„#áHA8RŽ„#áHA8RŽ„͈°6#ÂfDØŒ›a3"lF„͈°ñGY+Œ –¡Á26X¤<½”Çð)>§@ú KCÔ4FMïozÓû›Þßôþ¦÷7½Bé3,Ó§@†Ç#õÒ§žÌˆ°6#ÂfÄe6ØYF;Ëpg ïä[7⦒˜RQˆ”ñï—ÿNýªÛ7ù$…) B$fÄÁ¿ÜbAìP"1#’¤$)ÉAJr3"‰4$‘†$ÒD3"1#3"1#þA› MÐ&Ü& 4úa¬ÃL •­™|²)yé:ym" B$fD’ƒ”ä %9HIRbF$‘†$ÒD’HCbF$fDbF$fÄ?"i“´IÚ¤ÛrÀ :2’¤$)ÉAJr¨b}©P}©P}©P}©Pý´)Úmš6my¤MÓfh3 B£'£KÓ’HCiH" ‰‘˜‰‘˜IQ’D”$%IDIQ’D”˜‰‘˜‰‘Ä’¸BWHâ I\!‰+$fDbF$fDbF$fDbFü#P¢B° %ªC/¦£ DbF¤>øúâ@ˆO³•Íbvû_´qÍÆ5'3"‰4$‘†$ÒD3"1#3"1#þ,˰,òÌv›‚à¬{3"z”N=J§¥SÒfD:ÊŽ2¤£ é(CÚŒH›i3"mF¼”Û…Û…Û…Û¡—¼9‘6#ÒQ†t”!eHGÒfDÚŒH›i3"4”NJ' ¥“†ÒIC餡´‘6#ÒfDÚŒHGÒ…tD!QHGÒ…´‘6#ÒfDÚŒH›i3â÷÷÷E¿—o ̈têQ:õ(z”N=J›é(C:ÊŽ2¤£ i3"mF¤Íˆ´ñw-£¹¼l~_â¥~íÂÏrü,§ÿV¦Ú”Ñ€×åx]θÝü0Bš*SmÊíÖLMXß®õí.÷]î»Ýn»µÛW,…tD!mF¤Íˆ´‘6#ÒfDÚŒx)÷µ~(ÒÿRô Ï<8B‰2¤£ é(CÚŒH›i3"mF¤“†ÒIC餡tÒP:i(4”6#ÒfDÚŒH›éˆB:¢Ž(¤# éˆB:¢6#ÒfDÚŒH›i3"mFüQå¾å¾>Â'Czæé™çùýÎéY¦g™žeÞ_»2Å^¦gžžyzæé™§gž>ÿÒ3OÏ<=óôÌ3=œ4aF¤Íˆ´‘Ž2¤£ é(C:Ê6#ÒfDÚŒH›/õò«·nÄ-½QJb*E!JfÄ_™ßï7Õ.õw½Q¤0AˆÂŒ(>øZ|²©xéºHa*‚…Q¼¯P¼¯P¼¯P! 3¢ÈJ*²’Ь¤ÂŒ(BEÈ¡9fDaFfÄá6 ¡yéˆ"…‰âÕ/Aøè•¯â¥ë"…©BfDñ¾Bñ¾Bñ¾B„(̈"+©ÈJ*²’ 3¢9!‡"äP˜…Q˜„Û4„æì©ü …Q¼¯P¼¯P¼¯@ñê—àO… Ý‹6E›¦MÓ¦iÓnÃÍmæBh’é$ƒÊ"/²’Ь¤ÂŒ(BEÈ¡þ³ÉŒ(̈Œ(^8(^8(^8(̈"äP„ŠCaFfDaF9HER‘ƒT˜…Q˜EÈ¡9!‡ÂŒ(̈Œø#xÂÑ<|óÌ2#оŸl*^º.R˜Š DaFï+ï+ï+AˆÂŒ(²’Ь¤"+©0#ŠCr(B…Q˜…ñGІet¦r ¢lF”ßQ(¿£P~G¡ƒ(›åt¤r:R9©lF”ã åxC9ÞP6#ÊfDÙŒx)·C/yÙºƒ(›åt¤r:R9©lF”ã åxC9ÞP6#ÊfDÙŒ(¿]P~» üvAÙŒ(ÇÊñ†r¼¡lF”͈²QN=*§•SÊfDÙŒ(›åxC9ÞPŽ7”͈²Q6#^ŠgöÝA ¢lF”ßQ(¿£P~G¡ƒ(›åt¤r:R9©lF”ã åxC9ÞP6#ÊfDÙŒx©_»6ÅÚ¯ßñ¯Õñ¯Õñ\Î=â åxCÙŒ(›e3¢üvAùí‚òÛe3¢o(ÇÊñ†²Q6#ÊfD9õ¨œzTN=*›e3¢lF”ã åxC9ÞP6#ÊfDÙŒø£¬3áù†çž[pž‘ŽT6#Êñ†r¼¡o(›e3¢lF”ß.(¿]P~» lF”ã åxC9ÞP6#ÊfDÙŒ(§•SÊ©Ge3¢lF”͈r¼¡o(ÇÊfDÙŒ(›/Å3§gžÞÁôÌÓ3Oï`zÓ§mú¬Kï[ú´MÏ<=óôù—žyzæéó/=óôÌeF”ßB(›e3¢lF”ã åxC9ÞP6#ÊfDÙŒ(§(•͈²Q6#Ê1ˆ²Ñ_݈Ö+Ô­w ZIL­(DËŒø+Á«ßóýêõéæˆ&…© B4fÄá?i½Ñ¤05AˆÆŒh^rn^rnR˜š DcF4¯24¯24AˆÆŒhò”š<¥ÆŒhbMì¡1#3â‘z°Ã ‡Õ;LPAˆÆŒh>øÚ|²©y¢Iaj‚Ѽäܼäܤ05AˆÆŒh^eh^eh‚Ñä)5yJÑÄšØCcF4fÄŸxèÁäŽhR˜(^ýÈ C+ 0”ѼÊмÊ@ñê?¢iÓ´iÚ4ò: 14žgè5z0©_„ḧæU†æU†&јMžR“§Ô˜M졉=4fDcF4¯+7AˆÆŒhò”š<¥ÆŒhbMì¡1#3¢yƒ¡1#šØC{ḧƌh–3¢1#š DcF4¯O7/@4)L¯~‰€ðŸ4V³ªÍ6‹Ù¬a³†Í*…© B4fDó*Có*C„ḧ&O©ÉSj̈&öÐÄ3¢1#þ=o?´˜Ú1ˆ¶Ñ~­¹ýZs;©ƒh›í7Úo0´cm3¢¢ÔNQj›íÈC;òÐ6#ÚfÄKñ¤¿S{±Õ˜Ôõ_9lˆA´ÍˆvŠR;E©mF´#íÈCÛŒh›/uLyŒtr»òå1Êc”{´Çh÷mÑîÛîÛî;î;î;î;î;~Ò14~ùÊ ©ƒh›íךۯ5·˜Ú1ˆ¶Ñ~ƒ¡ýC;Ñ6#Ú)Jí¥¶ÑŽ<´#m3¢mF´¿ÔÔN`jÇ ÚfDû †ö íDÛŒh§(µS”ÚfD;òÐŽ<´Íˆ¶Ñ~5¹ƒh›í¥vŠRÛŒhGÚ‘‡¶Ñ6#Úï-´Íˆvä¡yh›m3¢¬Ô6#ÚfD;Ñ6#Ú LíDÛŒx)ÿÕ³ Ï2<·ðÜÂs Ï-<£ðŒÂž[X÷Ã3 Ï÷>)Jm3¢yhGÚfDÛŒø£¬û‘îkÝWä¡mF´Íˆv²RÛŒh›íDÛŒhÇ ÚfD;E©¢Ô6#Ú‘‡vä¡mF´Íˆ—Ú¦Ü×3OŸé™§Ï¿ôÌÓgD¦ŸÔk>7Ò«‘^ƒô¤Oô¤OǬ__?‹OÇôIcЃÑŽA´Íˆ¶1_݈јF¯PÞ%1¢#3â¯rî÷«/ ¯O/@ )LCb0#þ £×§‡ †¦!1˜Ã'’† †¦!1˜ËÐC Ó„̈á-‡!1˜CæÒ`F AˆÁŒ>¾4¼>=¼1¤0Q¼ú%h]ÁÖáˆ!…iB fÄð‰¤áˆ!…iB fÄð"ôÂ4!3bxËaB fĹ4˜Cb0#†×§‡ †&ŠW¿„zé¸^€R˜(^ýt¯„ MÓ¦iÓ´AŒeF ™KT±¾¯~ õJf‘ *ËáEè!…iB fÄð–Ä̈!si0#† Ä`F )LCb0#†·† Ä`F ™Kƒ1!3bB fĹ4˜Cb0#3bB fÄ`F _^Ÿ^€R˜(^ý4æ ›Umv°Ù¸f ›5lÖpX1¥0 AˆÁŒ^„R˜† Ä`F o9 AˆÁŒ2—3bB fÄøÕéñÛã¦q blFŒ¿‰4~ûaœÀ4ŽAŒÍˆñëÏã¦q blFŒßoÇ ÆfÄ8milFŒcc3bþ[¿S{ù 'Ìúà‹ÃfýÎpÅ ÆfÄK¹Ç]w…{púƒ›ã¦q blF¼”Û•Ç(QîÑ£=F»o»o»o»ï¸ï¸ï¸ï\S~Ò1TdùÊàí‡qÓ816#ÆßD¿ý0N`Ç ÆfÄøõçqÓ816#Æï7Œcc3bœ¶46#Æ1ˆ±1~ûaœÀ4ŽAŒÍˆñëÏã¦q blFŒßoÇ ÆfÄ8milFŒcc3bœÀ4ŽAŒÍˆñû ãÄØŒ§-͈q blFŒcc3bœ¶46#Æ1ˆ±16#Æ1ˆ±16#æ?Þ~'0cc3âò,c»çž[xnŽÀŒ§-͈q blFŒ˜Æ1ˆ±ñGY÷úÖ}c̈q blFŒcc3bœ¶46#Æ1ˆ±16#Æ1ˆ±16#Æ LãÄØŒx©mêšrßûëÁÌÓ3OŸ»és7Ã}=óôyžyúüK¯Az Ò'az5Ògbz Ò'ˆ! 1ˆ±16#Æ1ˆ±16#ÆfÄ816#ÆfÄ`Fü`ý¼×Äßï|¿ïrüýêïï´ÿ~Õ.õ÷ïÓ­Ä9êòy°^" h|ÕæûøÒK„žàKaz‰ A›C¯ÃŸNAÐýÒæÒ†Ñ7“ü̈—8 ñJÁKð¨A¯T¯Ã ‡Õ;Ìë{â%‚Æ0ü<'/Ãnlˆ Aæu™×e^—y]æuÙÆËè—Y\fqÙÒ/ñ Á£&½êA>Ôæ;F^" Ô+"ž€s˜Oºmš6M›¦M» ò: 1zz}ê÷œ3è§\/ATæ B¼m+=Ä„žð3#^bA„8êð™/q!¢ àŒ }fÄKÐkÓ =-d¬P¢ÏŒx‰Aw¤î3#þ¦Ó<|óÌÍ£6OØý !ÎÃB}fÄKІчeŽ”Aã†eù̈?‚e–ePF}wé¥Ö1Å™ö0IÅ >Êí¶ûþø±¼ŠA|”Ûùü||€>>AŸëvh buM¥)÷EC×ïÔ^~‚Å ³~'øºnç'Xáváv~‚åq×o4Å >Ê}Ó}Óc”Ç(·+·+Q£Ê75:,3â£Ú”û.÷m÷ð¯Ðñ¯ÐñÜÇx๦ <îõhåV â£Üw¹ïòÖ¼»Ýn»uðq<†uÁ·îòµ«¦—²~|fÄG¹ïußìùážûãâg¶…çžÛ—ÀôR>_b»çž[xná¹…gœä2#>Šg Ï-<·ð<ÂO¿göé>sº>sºoX°Œ ”ÀôQîëS ¬3Æ 2#>ê˜2ë‘á„Þ~ø(ø¥g™>ëÒóMï[zæé™§gž>ÿ2Ü×3OŸé™§gž>ÿÒk>-Ò«‘^ô¤OôÒÈŒø¨__ÏÜç‹‘ŽÌˆò³XãÓ'fú&ZÿÍ÷ó‰Ô_‘[ý¦~ùw5Oµÿ¦²ôÁ×?âê/º]þþô­òq îG|_jz‰„(ˆ†gÙÿˆ\â@À™™l¦²™Ëf2›Ùl¦óyˆ^Îç‚s‰ó÷Á×?"XÅ| øOxxÂÃê\z×ú% ¢!ÄY6Ç?‚'¼<áå /OxyÂ[p.8œ Î ç†sùáÜpnqÖ)³ô®õKˆ áÆzŒ¯VüK4„ã«úø bCˆ ˜"6‰Ø$b“ˆM"6_—W¸il±FIHÖ9Yçd“uNÖ9ËêgÖ9Yçd“u.”®NC ^÷ 1ë\¬s±ÎÅ:ë\ÎΨg¡ž…zêY¨g¡žp8Ú4Šß{CøO" Ô½YŸf}šõiÖ§YŸFçˆ  Qœl,æ°˜Ãb‹9,æ°˜Ãb‹9,¦¾ÔôQ×T˜JS¿ ű‰Ô2µMyŒôé1Òc¤ÇH‘ÃçóS£<’¬W¬_ê<¦–©mÊ=Ø¥A}Tš*SmÊc\q=Æõ×cp(¬ýøžáXX›samïÇö~øFY¾R–ï”åKeùVY¾VÖ^cyŒå1–ÇXcyŒå1–Ç· · ·‹_;?‹eãøYŽŸåøYŽŸåøYŽŸåøYŽŸåp“üÛTáËûl±=ÆöÛc´{´{´{´{ô¯‡ŸªýTí§j?Õø©ÆcŒÇ1cãr”­k¨q5.§Ùºñ둦ÊT›â©®÷ãZW¯uõZW¯uõZW¯uõZW¯uõZW¯u5,§a9 Ëi¬°Z¦ ­,aÙËFX6²–°l„e#,QîQîQîÑîaÙËFX6²–°l„e#,aÙËFX6²–°l„eC¾ÃõŸÞø¨k*LýÚ•©6ų¤Ï°ô–>ÃÒgX^q=Æõ¾Sòz #è4„NKvZ²Óë’^—ôº¤×%½.éuI¯KþÖeü,ãgñ \>Ë'pùþò²ÿíù~¿Û²#ößíóïwëWí?õïWí¾/¾þß*ìÿ¾pöK$DA4„ëÔßúTÓKlˆq!hœ4N'“ÆÌäûæÅKDCðý@À¹áÜpn8·8_|ý#˜ÎaГ Q ¡Æ—é|¡Ø—ØâBИ¹lÍeo.›sÙÛ Q ÁcÌçóÀyà<â,;bëSM/Ñâ,Ÿ¥®ÿˆ¡ñÐxÔXv5¦ÿ$!‘„D’¥û 9¾DA É Îάs²)ɦ$›";bcGl½cý<’HB²ÎÉ:'뜬s²ÎÉ:ËŽØØ;bcGl숱±#6vÄÆŽØØÚ g4®ÑJ8£D…JT(Qù8@ž Ih³wA4„Æêó@Ðl³YÌf1›ÅlSvÄÆŽØØ;bcGü#ÃA9äpbCÀ9àÌñ5_ããëùš§Ýà ª&>j›rpttttÔù¦Ò”ŸŠãìå1Úc´ÇhÁâcGlÛÛvͱmGüQH^“ø¨4U¦Ú”Ç#ÞéãöU¶Žwúq<†¥éXšŽ¥é´{´{ŒŸjüTã§òN_ïôõN_ïôõN_ïôõN_KÓµ4]KÓ ÷ˆ_4U¦Ú”ŸÊºê{wùâ]¾y—¯Þå»w]ëêµ®^ëêµ®^ëjXNÃr>iÂ'MX6Âr–Ó°œ†å4,aÙËFX6²–ðÓ‡Ÿ>üôñ{zËFX6²–°lDû©,FËÐ`,ƒ‡þ¨cêš SŒ‘–ì´d§%;ϯ]™jS~–ëg¹~–ëg±Ô¥¥.-ui©KK]ZêÒR—–ºô¹‘>7Œ(–!Å2¦ÀŽØ¶#¶íˆm;bێض#¶íˆýg\Sa*M•©·Ç¿Ö÷û­ÓQâÈŽø÷Ë—~Õ¯ÔþûäëñÝ;âü÷eÀ¾Ä‚ØꥳžÒÔAÙé ìtPv:(;ýGÀpó¸Š5b ‡XÃÁŽ8Ø;â`Gü#š6M›¦MÓfÖìh‡™ÊŽø+ ο°§6„z]f*;‚²ÓAÙé ìtPvú€áe^—y]æu™×e^—y]æu™×Ú m†6£6ñ<]aJSe§ƒ²ÓAÙé ìôÁ:±†C¬ák8Ø;â`GìˆĦ rø•y ·IFGZ’MI6E±jTÕ¦ƒjÓAµé ÚtP7:¨ÔêFu£ƒºÑ:tL U¨¡ìˆCdáY8D‘…CdáY8Ø;â`G숃q°#þz¡D…ò\L§YùfUûð/èEÿÿ¦Î(ÛvT…¢ÿ¯· 'Q@ûß±·M˜35ê㬺¢DÍÚ`@-\ta̵ü—~Öb¢-&Ú¦Á¡6†Úªc 1à1à ƒY6fÙ˜ec–ÍbEbÈ#ßjzQˆRT °FZ#­‘ÖHk”r¥\)WÊ-å–rK¹õÉ-}¹ncEœagƆ'ñ¢%RΑžZhƇnÑ1nÓQ˜¾‰Lg÷ÌO.Döª¬[Ö-ë:W§sÕ úšZm.ë.ë:CÍCß }7ôÝp¥ ý4¾1ý4nåôÉÊ9ãc|r)²/õ¡%b<šG c ØÂ0¦0Œ) c ØÂG yÄG yÄG yăJ´DÖÕ_RÍSÍSÍSÍ;¦0Œ) c ØÂ0¦0Œ) yÄG yÄG yÄG¤'¦ž˜zbꉩMS›¦6õUäò]äòe„8Ã0Î0Œ3 ã C1äC1äzÚû ßïßw͘Ç4;1›Gœ«hûïÕoêÏqºJóˆy­r@Ëô/E“0Ä„GÌþXÓ.2)@¸.„ÑàF…n”¸Ñ¢yÄ„GLxÄldÞa9 Õél&YL“0Ä„G€L e:‹i†˜ðˆÙkzÀ@¦£×D¯‰^½:è0 :L‚1á1¬á @«ÓYL“0Ä„GÌþXÓ € -'-÷Ï“ĤIbÒ„GL‚“ Ã$è0á1á(Ó¾žXµÃ\RÜDÜDÜD}ÆLŒ™8Iâ$‰1'Iœ$Uyw7zOxÄ$è0 :L‚1á1ICš¤!MÒ&šfMyÄ”GLyÄ4â08L#S1åSñ ûÖP7·¬Ë=ërӺܵˆBLyÄ4#iš‘4ÍHšòˆiÄaq˜F¦‡ú†ú†£ún¸Ò„£Ž~è§q+çè‡ÞÎøŸ}g|¨[¨G¨G¨G¬OÎö–ímå¶ÏÝj¾­»­ë*®é*®¾9\¾:À#r=H5Oý>Õ<Õ<õûÔï›GL³¦ÙGÓì£)˜òˆ)˜F¦‡iÄaÊ#¦Á½Õ2‘Š’yDÒ`óˆà8Cpœ!C<"HU R•D‚èCÀ#ñ'Oþc6Ž3ǸÀ:¸®:¸œ:¸œútßH¬Ú<"àÁ1ë ðˆ U)HU xD}¢xDpŠ!àAô!ˆ><"àAÎRÀ#„!ýÑ׳0æ]øjóˆ(š,®#+È`Ã… 6ÜL´MƒÍ#‚ã Áq† ðˆ U)HU xD}¢xĬZ8+9La"äÁך^Īøçjø—ÖHk”¥eR®”[Ê-å\‹ÿ–=]ÖÀGáê‘"‡)ŒB„<"<Åžb£!³”Â,¥G„±‡0öòˆG„ǬÃ(DÈ#Â,¥0K)äaì!Œ=„<"äáÙ…G„±‡0öòˆG„ùJ!yD…yDx"Ìa £!x¥lä0…QˆG„§ÂS a"äa–R˜¥òˆ0öÆBòˆa±ü7}mèaC¿Û§±`À#Â,¥0K)äaì!Œ=„<"ä¢WS¯›ñýÛÙž¾6}%™ÎÆéÈLçåtŒ¦3t:FÓêf ó•Bòˆ0 òˆ0‡)ŒB„<"<Åžb£!³”Â,¥G„±‡0öòˆGäÜ5 õ{_ïõˆÐ#Â5'ôÐ7bÛ½$õ’üóýQIýÅxDÈ#Â(DÈ#Â(DÈ#Â,¥0K)äaì!Œ=„<"äºEÖ ë~/ÄzbºþeZ×5"¿æ´•ÿ¼;Ûʶ®Öõ äòäòäò%F!BòˆG„QˆG„<â÷ ùþ}WìsÔÙç ²ó˜²ãÙ<â÷7ºþë¾ù¯³[“CIS†HxÄý˜›~Üt¤Wú$ ‘ðˆäsMÉ!ˆ$‹) C$<"9 d1%aˆ„G$'’0DÂ#’䥄G$aˆ„Gdõõ€€~Vg1%aˆ„GÐè3ÔÉ!.®>`\€èvÑk¢×D¯‰^Å”„!‘œtH H’—‘„!‘œ¡NApqõ @ƒÙ ö"‘d1%aˆ„G$§¡“,¦$ ‘ðˆä¤C†HxD’¼”ðˆ$ ‘ðˆäW?€ZŒNbÕÎbJ HN:pƒupqup_õº…î…y;‹) C$<"9é„!‘$/%<" C$<" C$<"I^JxD†HxDÂ#’0DÂ#‘ýÕ׳`ð…y;‹) C$<â&ˇëÈê‡vS†HxDò¹¦äD’Å”„!‘œ†N²˜’0DÂ#’“I"áIòRÂ#’0DÂ#ÒóÓé ˆ4‡)B¤<"ý\Sz"ÍaJ£)HÏ@§9Li"åé‡4 ‘òˆ4s)åi"åé ˆ4‡)B¤<"=æ0¥Qˆ”G¤gÒ(DÊ#ÒÌ¥”G¤Qˆ”G¤9Li"åé‡4 ‘òˆ4s)åi"åi"åiæRÊ#Ò(DÊ#R‘F!R‘òˆƒÔ×ër˺ܳ.7­Ë]‹iS…HyDz:ÍaJ£)HÏ8¤Qˆ”G¤™K)H£)HO@¤9Li"åéè4‡)B¤<"=ãF!R‘f.¥<"B¤<"ÍaJ£)HÏ8¤Qˆ”G¤™K)H£)H£)H3—R‘F!R‘òˆ4 ‘òˆ”G¤' Ò¦4 ‘òˆƒôƒÐcC? ½3ôƒÐB?ý yD…HyDšÃ”F!R‘žqH£)H3—R‘F!R‘F!R‘f.¥<"B¤<"åi"å)Hs˜Ò(DÊ#äÓôût­ËùÕð®zß›®uõÄü^ˆ]2­û½%»þå÷¬wæÞí³ÖÍísµ®¯ W~Öåïò-‘òˆ”G¤Qˆ”G¤<"å¿‚xÿ¾ûDõw˜ªÏQWŸƒ¨ÎcªŽCTóˆúן}= MMç$`Z¦w‚â uq‚›«0ȤáB¸Fƒnt¸QâF‹Îb*Â(Â(xDñÙ×âLÅêâD‘ÅT„! Q|‚©8C]‚àæêL2%@½&zMôêCES†(xD‘ÅT„! Q„! QðˆâLÅêâ7W4˜-“‚´pâ =ñ‹CES†(xD‘ÅT„! Q„! Qðˆâ uq‚›«X/d0fâ$‰“$N’Xµ(xWXWX? kõ!ˆ"‹©C<¢Èb*Â(Â(xD‘ÅT„! Q„! Qðˆ" Qðˆ‚G<¢øìkñ ¦â uq¢Èb*Â(>ÁTœ¡.Apsõhn&Ú¦Îb*Â(AYLE¢àES†(xD†(xDÁ#ʯ/•ç§ËeS…(yDy~º<Qæ0•Qˆ’G”' ʦ2 Qòˆ2‡©ŒB”<¢ŒB”<¢äåùéòD™ÃTF!JQž€(s˜Ê(DÉ#ʦ2 Qòˆ2 Qòˆ’G”' ʦ2 Qòˆ2‡©ŒB”<¢ŒB”<¢äeS…(yD…(yDÉ#Ê(DÉ#JQòˆƒR¹TæÖåžu¹i]îZœŸ.O@”9Le¢äå ˆ2‡©ŒB”<¢Ìa*£%(£%(yDy~º<Qæ0•Qˆ’G”' ʦ2 Qòˆ2‡©ŒB”<¢ŒB”<¢äå ˆ2‡©ŒB”<¢Ìa*£%(£%(yD™ÃTF!JQF!JQòˆ2 Qòˆ’G”<¢þq~º<Qæ0•Qˆ’G”' ʦ2 Qòˆ2‡©ŒB”<¢ŒB”<¢äå ˆ2‡©ŒB”<¢Ìa*£%(£%(yD™ÃTF!JQF!JQòˆ2 Qòˆ’G”<â 5OõMµL׺ÔÛÓµ®yD…(yDÉ#ʦ2 Qòˆ2 Qòˆ’G”Qˆ’G”<¢äeS…(yD…(yDÉ#Ê(DÉ#JQòˆ2 Qòˆ’G”<¢ä¿ÿÍ÷ï»f¬þ^Óú·úßßíþÜ9Û»Þû*õûÇ» úשõ¯¿ø}À¸Ðë}âÜO€,@·ÜË÷âœõâ Ä"ÓiªXpØ´¼iyÓòî–ûÛÚ\€0Ð-÷‚¼ø^Ó,ÚY´³hgÑÎêvz<÷S3£ °ŸnybÕ‰U'VXµWºõ{íO@ [îA¸7`&€–' A0ÁCП„^œ³^”Xd:-B ®qîK¿€—Ž$  @˘.ésÏÉÅA ®·>ïMì\xBá …'žPع°saggZaçÂÎEŸ‹>}.ú\ô¹c Ò±^,ØÇ‚}ü¾QøFá…oT)L7ŠnÝÀŸ ^ S¯éèØ¢c‹Ž-:¶¦Ë ëÉvAqEù\€nyãØ8ÀÆ6ÆÜŒéfL7cºÓ}6öÙØgcŸ}6}æ{MÝS¢YÃåñ5‚“Ë\§e´bÉ7Ú>cûŒí3¶ÏØ>[^Æü¡Kt‹xÆu[cXcXcXcXƒÙÝWN¿(E%Z"ŸáÖðí ßæðí—zÜêq«Ç­·zÜLÉË…Æ’ƒ,9ÈAÃÃÃÃã«a¯¦½šöjÚ«i¯Â–Ë–õ¦»l¹l™ Ç9ëåI‰e®Ó2Z±ä1É®÷2Ô-Ïá3Âg„ÏŸ>C=Ü×.7¶Ëírkƒoœ×Þ0úÊéùÒpÑ«þUíA—è Ñù õ˜ê1ÕcªÇŒ¯†½ {öʹ:«sYcYcYcYÃ7£Îx½ÚöÊÙ=ÝîÒ—Ûôå>}¹Q_îÔWèu¡×Ë/?<(E>Cß}#ôЦ¡Ç†zl象o„¾úFè¡o„6M}<õñÔÇSÏë«Q¢%ò­VoJ½É׈Ë÷ˆË‰Ë7‰ËW‰Ëw‰Ë—‰Ë·‰Ë× 8ÈA®z¾Q\¾R\¾SpñÃìUÙ«²W®é(¤¾–úZêk©¯¥¾–úZêkéN’î$éNâËÊåÛÊùïõíV¿Õû÷õ¸ÝßkÚÍ#Ε°ý÷î¿£ÿRÿ݈ö¿þujÃ#@ °^Ðký†Gœë¨/À €~hóˆÍ9ëÍA‰M¦Ó&T±á±á±ÿ ºñÞåù€@æúôÓ;,¼ù^Ó†GZ^´¼ºå^a7<â\G}nÀ´îÍ#6ç¬7%6™N›PņGlxĆGlxÄÐÀú'¹ÿýô ‡Í# :C AàÁôo ›ƒ›L§M¨bÃ#6¬`ŠB”¢On‰èË·|_ÃV†­ [¶bï/{ÙûËÞ_¥œûÀ·|;[ÈmyÄ–GlyÄ–GlÏGl3œ¶1Šm®Ó6Z±VlyÄ–GlyÄ–GlyÄ–G4­;­;­;­þ›šßËþ-û§‡ÝL¸Ë]†sÖÛ“Û\§m´bË#¶H9ýÔ]íi_Ö‡leÙʲ•E+îrðˆ-ØòˆƒnånånåôÓé,›Î²ºEC„M§zÌT.•ËO.Döj}Èþ©ïüôÝöoû4gítÖÎm]½Ý]šsÖÛ“Û\§m´bË#¶´Dö™…“óÛ §mŒb›ë´Vl£[±å[±å[±åÝÖ½­ëúÜ Ï[±å[±åiIß%._&.ß&._'ˆVlyÄ–GlyÄ–GlyÄ–G<ȺZ7µn:óR›¦6MmšŸM·-»“¤¾Vßûú%¢n¹ž–ë/9—o9×ûvsŠõþ}¬“ï÷š~Wÿ}úwþ¶ün¹ÝåïÏXDK¾?5=€gmZc*gï/{ÙûËÞ_e¯Ü®²Wn ײ®»Ã­–7îFbH$†YLÃ8ÄH ãC"1$Ã,¦abH$†qˆ!‘‰abH$†DbH$J,t¯Ù?ýªãC"18Aý"J;‹i‡‰Áˆ…rîÊ#” ú7ì_‰abH$†Dbp‚úE>mû´mÜ´÷ÓÞO{?íýtFM^ Ã8ÄH ‰Äà Ä‹JäsÕrªÛT£ÉþEbH$†Db˜Å4ŒC ‰Ä01$C"1ŒC ‰ÄH ‰ÄAú³»óåö|¹?_nÐ}âEÊ…r¡œ –bˆÄ01$C"18ñ¢!ò¹ËöôˆÐ.¡o„v íÒDb˜Å4ŒC ‰Ä01$C"1ŒC ‰ÄH ‰ÄAãC¶ç É߸0 @t«½ÅüÀâ_lð]=XÝ…ë¢/-Ó«ø7`úYïiëäÆê€–ß‘™œ’˜¤9Mš1ÿu"êXdî?@?}П^kgŸ¶>`ó/<}ðôÁÓ'í¼§­þ%nÀô³&£4±êĪ«öÏ&“S“4§I˜bB3~˿ߡ~272ãÐOïß@fŸ¶>€!† ‚À,:š9ûʹL@›®OILÒœ&aŠ Íø •*1T†2 àé XT_T_TÇ{ ç/œ¿pþ¦çxdndndneÐOïS“4§I˜bB3¸Ÿ:¹Ÿ:¹Ÿú€D†éPŒEg7M¢v1 SLhÆ„füÀð,©v?káQ -ótÑÕEW]]tuaçÅ,Ø8ÀÆ6°™•xo¬~@·¼Y¼6s§OILÒœ&aŠ ÍøÜ(¸Qpodö pÑcÎôië ÿ1û!ÎéÊÊ•u‹¾1âE¬‘}Jbšç4 TL™Æ<Ì`ŠB”¢On‰èËu‹¦­L[™¶2m%•KåR¹Tn)ç>ðmßNàVðCö…u™<§i bÊ4RûVîVîVŽYÙßw}ÐøPˆRT¢%òiS>7|nøÜôßß{ûo[9=ìvÌ;cßVý¢-}ŽÖp´ÆTÎ>Gk8Z#•KåÜÈGÙ—%ÒÝÙ.·¶þæëASOœzâÔ§#è&xMm?µýÔöÓY6eî›—çåÎy¹u^î}'Ä‹”«O.Döj}Èþé»î¸0)Ó˜‡-|è ÑÑr軡ì)œ’˜æ9MS¦qP*—Ê9“#?¹Ù—úС¯{ûåæÞwB¼¹t&§ÖH­áûÀå ÁåÁå+LcÊ4º?´D>wøÜaËÎ}_$`é9¾K\¾L\¾M\¾Nô÷]”²ΣÔÿRÿKýÏwË—Ë·+õ¿Ô×R_K}-]UÒU%]U|u¹|wé﻾úçÒ)«˜²Š)«xÐS7þ½^ÿÞ™ÿ^ý¢O[\â€$™AQPTÔZ½ÊÿÀ«û-ÓéàÄuÀ%ýÈ$µŠ¢õ úBf·LŸ”2‚HEÀ%.p‰¸‘Á\ý›ÐÐÃ^ƒ×—8 uŸ<}òôI˽x\â€$F©7n­~ÕwËãÕ¡Ó Ó)ˆT\"à—øÌÀUFëÞ?ƒ'®.ñ!‚þ=#8qp n­~@áé=̓L§ Rp‰€K\âezÞ9?€"z˜3qþ÷Þˆ3+p’˜…ów¤"à—¸ÄÊt7jühŸïL§ RÁÕ Ô),ÿ^ñ€v›ÂIšK\"Hp A€"à—¸Ä¹Ðº{¸Ð}¡×¢«‹®®D˜yºèêZÝżh.q@¼nãu›qߌûfÜ7ƒ»1ÂÆ#lÜ(¸™D{#ÃÞÛEYĉëK„!~hо•Óºe)cÑwÎ=h)·•ÛÊa6b!—¹DÈ%º•»/Ñ –Úç #÷s åR¹T.•+å–rîײWîn?d¯Ô²OJ„©Na¬"ä!—¹Äƒ”c‰»Üfà!—¹D˜àF(ÂEÈ%B.r‰Ùç´Fù\õ½·ÏÕÃú÷®ðÄuÈ%r´Þ;ç^¤ÜTÎ^ {5B¹T.}šc9J9¦Ía«±,µÏîl—[[ßñ =q:FÓ1r„K„\"äiûé,›z¬ûæåÆy¹s^np‰K„\âAŸœÏu^ºÝÂ%B.&8…Š0Br‰K„\âA!¢½Ð.nÏ—ûóå —OJ„©Na¬"ä!—¹Äƒ>9ô g²ûåÎ~¹µ_îíp‰K„\"þõ­r/š"4÷}.r‰0Á)ŒP„ŠK„\"ä9Srز拱ŠK„\"äRÎ=ÓghÉÔ’©%ÓyÔŠ0Br‰K„\âAöÙ×étMW•tUIgh:2¥íKÛû^sù>—¹DÈ%¸DÈ%òßûº“ÿÞUæÜ¶ûþ}gHŽH¸Äí£{ï0= ¨µ(ZoŠv?ªcÓÉ©ë$‘p‰,êvúÔuŽH¸7W? µëå9áÉa‰$Ù)áI"‰B$\"átÇzñ>—Zóˆ…ð¦hwƒcNž>i°—Ì$‘p‰,¢F©—´„KpsõÙ¿–i.‘–H’.‘D!’(DÂ%.q@w,‹^‘’pDÂ% hQ k$ÝH,ŸX>±|òÐÄÇz¾'ÉN —H¢I"á —ø¼ü Þ’øj⫉U‹ñê9—–H’.‘D!’(DÂ%.q¦Ù hò/sh‡iÕQˆ$ Á=Õ VòPæ`G!’(DÂ%.‘ä8%\"áI8"῵`¡Î¢Ï ƒ/z¸èØÊ`ii°™Œ?l.ñ8À¾»×m¼n3î›qߌûfp7FØac„‚½6KÓfî4—8€•íïº@ /ш”K<è+µnZ·\MËåtYº\t·r¹þy'ÍvJ¹DƒHc)—H¹Äƒèé5ü7<.qPX>-•KåJ9ÿkÙ«e¯ÜY®m¯¶uY¾ˆF¤\"=,‘f;¥\"A¤1ˆ”K¤\âAô ¹DƒHc)—H¹Dšã”r‰”K¤Ñˆ”K”"Gúv¼ß{¥î«¬D#R.ñ KÕcèkÃ^ ûÒÙN)—Hci "å)—x=ËsVLGË­­ï{>9õDw>²R.‘Æ ÒDÊ%R.ñ zå¾y¹q^['\"A¤1ˆ”K¤\â e|›™¾Î¸óÂ%R.‘æ8¥\"åi4"å¢åÐBnÏ—ûóåM4"åéa‰4Û)åi "A¤\"åi+7öËýrk¿ÜÛái "A¤\"å¢Í%ÒDƒH¹DÊ%Ò§”K¤\"F¤\"F¤\â =,çéœñ]‚DÊ%R.ñ {¯%Sû¥3*õºÔëR¯óe.‘F#R.‘r‰4‘Æ R.‘r‰4Ç)å)—H£)—H¹DÊ%ÒhDÊ%R.QÿÞµ¶þ½¶;·é¾ß¾ME8¢àõ¯óÕ¿N³­ï=¦µEáW÷úQÝZ¼.2šŠpDÁ%N»>x]d4ሂKp{õ»e:Qp‰â¼DŽ(¸D‘ÈTp‰"Qp‰˜ÔJÁÓ{¥-—8 Û™4Ø‹g‘ÑT„# .ñI;ŒRÿ(R„# .ÁíÕgd¯G\¢8/Q„# .Q$2\¢G\â\cÝý鵩Èh*—8 ÕI¬‘Œ{bùÄò‰å“‡&>–ª'~Ž(¸D‘ÈTp‰"Qp‰âàu‘ÑT„# .ÁíÕgV0^=ç .Qœ—(—(™ .Q„# .Qd4ሂKpÃõhQhщL—à®êä®ê˜ƒÍ%ŠD¦‚KሂK\¢G\¢à¿µÝêôÁë"£©G\â€îØÂ6“q㇎(¸ÄÝN¼.2šŠpDÁ%¸½úwc„6FØ(¸Ñk3w6KS‡# .qV¿‹õëïößpE¢%—x«â_Z·,-WÚe+ËEw+·‘»0Ûõ-΄K”YL%—(£%—(^—ùLe4¢ä²F*—Ê•r.þײWî—;Ë·%|{ÂÅÏTF#J.Qž—(£%—(³˜J.QF#J.QF#J.Qf1•\¢ŒF”\¢äe4¢ä%—8(í‹#}Z:¾nQ×øs_e…$Ÿ©ŒF”\âAè1ôµa¯†}¡\–ˆ^ G°¹D(¹DyðºÌg*£%—x5æ¥Ü­œþ7£é(¸’ÅTr‰2Qr‰2Ÿ©ŒF”\¢S(¹Dy^¢ŒF”\¢Ìb*¹D(¹D(¹D™ÅTr‰2Qr‰’K”ш’K”\¢Ìg*£%—x=)²zS†ÏH[vmOgTj¿tML½.õºÔëÒ•?];Sëú†B4¢äeSÉ%ÊhDÉ%J.QF#J.Qr‰’K”ш’K”\¢äç"è÷ïk»õï]1úëã^P€ÝàBæ–u\©AQkQôN¹E8bÁ%~]¸ú™}özq(b‘Ñ´G,¸7XP½^¾G,¸WY'W'÷U'÷UpuW;±à‹pÄ‚K,¸ÄLj%àé½Ò.2šáˆ—øÚéŸ_‡"M‹pÄ‚Kpƒõ‹¢}¨¾[&¯Îhâ¾êä¾êîîj0½T- .±à?È$^´¨¾¨Åôzà ÖðôÄò‰åË'ÏJ|,1Ts‰EFÓ"±à‹pÄ‚K,¸7X@_Mœ?qÚÂIz¦q_ur_õøF1§šK, .±à\e\\ÜWÜWýÌIªÓùæ‹pÄ‚K,¸wZ'WY'WY'7X'7X'7X?q­Â…5º/´XtuaçÎhZ„#\âV±Æ´›Õ¨3šáˆ—àëðºÍ¸oÆ}3î›ÁÝac„6zmæÎfiÚÌæ .qV¿‹õëIɈe>Ó2±ä˳×ËË|¦e4bÉ%–'"–ùLËhÄ’K,ó™–ш%—XF#–\bÉ%–g¯—'"–ùLËhÄ’K,OD,ó™–ш%—Xæ3-£K.±ŒF,¹Ä’K,OD,ó™–ш%—Xæ3-£K.±ŒF,¹Ä’K,ó™–ш%—XF#–\bÉ%–ш%—Xr‰%—8(í½#}oûçøºEÁ%–g¯—'"–ùLËhÄ’K,OD,ó™–ш%—Xæ3-£K.±ŒF,¹Ä’K,Ï^/OD,ó™–ш%—XžˆXæ3-£K.±ÌgZF#–\bXr‰%—XžˆXæ3-£K.±ÌgZF#–\bXr‰%—Xæ3-£K.±ŒF,¹Ä’K,£K.±äK.qû '"–ùLËhÄ’K,OD,ó™–ш%—Xæ3-£K.±ŒF,¹Ä’K,OD,ó™–ш%—Xæ3-£K.±ŒF,¹Ä’K,ó™–ш%—XF#–\bÉ%–ш%—Xr‰%—x-;Ï}‘€K,ó™–ш%—XF#–\bÉ%–ùLËhÄ’K,£K.±äËhÄ’K,¹Ä’K,ó™–ш%—XF#–\bÉ%–ш%—Xr‰%—XF#–\bÉ%–\bÉ%ö¿w…Ýÿ^ÛíÕÿþöus^bÿëopFƒwXöqŒÕÍõ/S?° èGßöeô#zÿÜ€~h_L·9/ñK@ËïÜç¦ëä:ëä:ëä:ëèF(6ìânŠ0WÿNô³uï5™ ®@å^TH@·3iy¢òDåþö7 uŸ¨‚묓묊‚¢ ËWR”¡`(¸é:¹Î:¹Î:¹Îú4ÈÀWØg±,ôZt~ÑÕ•‚èv-÷Åt›ó?p & çÎÆë6öÙ!è–7ëÏæ¡}}×Y'×Y?€"lvqE›•íï¥íçbºí‰ƒ¦(¬.¦iÝ­…ˆEòäòˆ…¹Ë^uˆbK0ž%ÛÒÛÒÛÒaéҬÖP«>¤\)§nßFp©Ûõéæîðm—¶ï/†tý‰.‘¥·¥·¥ŽQÿRõ KÕ¼C[‚qÖè\Û}¥¶ìH»_ýuÓËR·×ñ÷¡[äÆêºýˆÃ‡J´@öoć” åìÕHKÓRGp”¥e©#8-·¶Ë½í‡¨1Õà ¯¿>H9u›ê6ÕmªÛœ–NKµ½;çåÖy¹w’ä´ Ql ÆAŽÑ\–®¯Ô,{°ìÁgm)K ‰-­ØÒŠQ7|¿Š[4>d }7¦¥ñ!åôÄС5™Z#´FÔWŠFní—{ûåæN’Ó6D±%û¼–h‰,UóôÕ2]×|K¸|M¸|O 0±¥[ZqöKíç‹Ä囟oÚ&9mC[‚qöó}⇾R{ö€×C¾ùú K—¥úZºv¦kgjñÔ⹭몒Z¼Ü·Jÿ+w’r')ý¯rµ-W[_€ø|Ó†Lü|,_ç¢â÷ïã3¿¿Ï‹Ã1Ààiï ž_Hdª›{wŽ6Â{vwáêg¾·Ó0q& Ûyo§;€.ßKhyÿZæ%h™÷° è¢è¦è¦è¦™@¦º«ƒn¼+í¼dâ ÐÕ' NT~?À˜ïW°@;¨ü.iø,¬ú~fî-((((èõþòŠí dž ÷8^T: Áû‘¸úëÛé¸÷ @?ôûÅÖ@f"ƒÅßH¼ù% løþTpÀàó‰¯&V-úüÎ¥´(´(´(»P§2£-ö’‰ð¨Âù_2q@R„oTZD;…LñÐâYÌÊ—LwZ?î%0‚…}FX¨óÞNw@èØ¢?‹ ²˜žïít°¤¼dâ `AÂëÞð¬56Ãý˜(î´>`!ƒî7ž¹Qpo‹º™`iûsÙûcŽô‰‰Y#\B™'};݃J´¦¨D,’®›×Ÿë.3º¿û oU¾,½,½-½mïVnøoSß*¯\Øžz¼dâEÊ•rêv©Û¥n/™x‘í±R÷‰‰aÓÏë/À¾ÈÒÛÒÛÒÛRGË}¦ÉÄ‹|.3²ÉÄ‹B¤œ#}‡-;ænX—UßN÷ ·×¡_ Çw°_ôítr´ òу¡ÿ û7B¹P.•KKÓÒ²Ôý{8ª£”s,‡£5ÙX/÷¶…ø)w+çÈLGfªÛT·©nsZª–ÓQpã¼Ü9/·Î˽³ÉÄ‹,u6Îe©£5õâéëÌ\>wÛ¿mégWp¤ÃwªpÌCû…žzqè±á\ucîÒÊé‘–jТ,-ÛÓ.îì—[ûåÞ~¹¹7™8(¿©æù÷•Ò^ê%éìNרd{½|Kh2ñ"åœyÛ²~•Ú/ñ©Õ|“è/À>È5Û—‰ŽQ<(-ÕÃRKfÚ}-µnÖWŠo¤^çÛH“‰Ù²kgê¾¶tŒâE”–£Pz]éuåJSŽL9Ë‘)_þKïô 2qnƒ~ÿ¾v:Û¾ß~]}bâ€w¤/ÈÄÝÆ{›Ñ‰Lus½‡\x@?¡7‹¸ø—ÑÏzcÉÄ ˜:žÔ¢Ë7Ïj2q”»-ó$Š‹­¸.EE7Ewh»½‰©TwuÐ^i¯H< «÷2û48QùÍü<cöŠxí òû«È>k3  e߀Ä(ÐÎ@†Ay#¤èX/8´:o¨ó©‡ 2q@÷§çþÕ‰âbë ƒÅšL\åt6LlØdâêêX|¾ÉÄÌ úÜs‰‹­€ ZZZ4™¸: ñd0æ(.¶~µ‚¢¤½šL\8 )úS<«œäTG÷&dâê€ÄŒ`1‚ #,Ôyo¨; LÏEdÑà{CÝó H< ,H“Z!èg5™8 ;¶yèÆ!›L\}Ä(b•Ø8Àf¹è€Ä‹Xäþ\÷þ†ÿæøÖ`ü~ˆ%ó/­["l›xйp^˜ 6ñ ä®ËÒËÒËÒÛEû¶½[¹á¿MQØ^(¶§W)碕rêöí—º5›¸H¼¹[‹ß,—°‰Q÷ H¼ÈÒû+åi·£u嘇°‰‹<§M[Ñ.÷Tn*¶ì˜»c]îT}E݃Ü_߀ċ¦ˆ§ öÆË­§/¢CÿS9Çm8n#•KKÓÒ²Tïe{ŽêXþ›3eê“SŸœì­}fâAzÝtd¦#3ÕmªÛT·é(LµœŽ‚;çåÖy¹w^nžx‘¥ê;—Os´æRN/žzñÜÖЋçg6ä˹/š"ꆞzq k象­B? mÎßÐ"-MKõƒÐ.¡]ÂÙíÖ~¹·_nî—»{$J×ÎÔÇS/I½$ÝÉÆ›¸Èsz³;µ‹o —¯ xаeg|j¿Ôj©_¥~•Îß KÃR-é lâ" ñ gT–5œQo@âEÊéuéÚÙlâ’M\$^¤n®§©×•^WŽ‚¯3xQ‰¬ëÈ”ë®o@—¯@°‰sËóû÷µÓýïõ™û½¤î¸×àmå&"qÃ&îï•F$2ÕÍõïPwg5= ŸÐlâ.þeô³z¿;«é臾×Ô@—ožÕ‰6q÷™‰Gݖ鈷[?€¢›¢›¢»ÊÐ`´îožét£WÚ»³šе&OŸ´3QùÍý<cö¯*7lâîkêXžXµ×®»ÏL€‚‚‚^¡? ŠF”¡AåͲ|¼H€ CÐëÍÝ×Ô€#õâp‘¸awŸ™8ûôÌçvë°XâÍ&n"7lâ†MÜ}MÝ €ÏwDâ†MÜ}fâ€k€ ZZZtDâ†Mܰ‰»ÏL< -Ö n·~EIQR”Ì[¦C1oVÓèOÑŸE2¡ðÞb‹ÙTŒà -ÞkêHAWïˆÄ ›ø\⽦îŒùf5= ÝŸ÷šº°ÏæYkl†{óÐCvD‚Û­@¯^Í&n"·lâ–MĈ÷=ur ü åX¼`¥uK´R´DöÀ…óÂ\D$nÙÄMRÓ‹,½,½]´oån[¢) åÂöÂöÔã*å\ô¯RNݾàR·ŽHܲ‰[6qsjâA¬ÑD$nÙÄMRÓ‹,½-eEƒMܲ‰›¤¦-ýëˆÄ-›¸e·‰[6qË&nÙÄAi{Ës}“š^"ž6AwœNjz‹lâæÔă·‘Ê¥riiYZ–ê£>9[v‡3eê“nn°‰›Sº•sd¦#3ÕmªÛT·©í›Mܲ‰›Sò=Ľóró줦YªO ØÄ-›¸IjzжÛþé»îǰ‰ÛˆÄ-›¸e·lâ _°ÂYC9=Ö¹OM- - - «V-ôz?û€¶XáQïÍÖ -ЉVie,:Ñiô·›ŠK¯X-ÄÅÀ5­}ðú]k]í¢ -ót¥ ÛY5ÝçE;û¯e6KÊÆ!7¦ÛLìt7ÖØÙÛè¾Ñ}/d2(¸ñÌ͵·E,_Ì«™`Ùûc4ûƒ°/²F|Kh‚Òº%¢g?fð'ºDÈõï:ÏJü'rQ¾,½-½-½¿R×óÛ–‡hŠÂi{i{êq•rK¹¥œº]êv©Ûµ¿R{¥¾7 ‰Náy}­õ‹,U·û¶ô¶OºnÇ­¿:hZÊŒ$41¤²ŽtÓŠÁÁëY·,]¶¢¾ƒíð̆«ò:ȱtÃ!Ñé ¦ÄñÜa_†^7R¹T.--KËÒúJí•ã;Ëù÷!j¸·ýíMõ˜ŽÌÊ9SݦºMuëÐÄV¤¾nœ—;çåÖy¹w’èô KSßË8nsÙƒmé¶û+¥åÐBáH»G÷ÁëQ×múrW¾Ü–¯p®özi—åB¹PN?­ÑiÃÐÄV<È–µ‹[ûåÞ~¹¹“è4þõ§›^4E_)=H×°ÔsòúJéŸo Њ¥È–]×rزöË¡ÜÞZ}†Þ”Îd_&úàõ‹,õ•7õµÔºéêØ?^CCZq¾–Ë–];S‹ç²®/ÖéZ’úŸ/.ЊÁµÖ/ò5]ÿ+Ç£\mË}¦£rŸ)×â&çç÷ïk§ùïõ™soìû·›$:MÈÄ»Á»èÎLû«›ë=d’è4!Œ7ÿ2™€¸è‡ÞE­%@fSkwÇí{B&@½šLÌþxÓ´Öj0Z¯÷[Të>P¹WÚI¢Ó„Lк÷2?€Êï‡íÈP€Ö}¢rÿ*2Itš‰ºcÁC;ÑiB&f¼é hÝ›LüƒÒëÐì/Â>á=§u­¤?½8LÈĹÚú€ÌDf"ÈEAޜذçü„Lü@Ñ2n“tµÉĹÚúÐ2ÅÀ5™8Y#ƒ………U «V}¿ûj¡NE(JŠ˜h…o¾QÌ‹Ntš‰Ùoz]ôgѬѡ‰ ™˜‰³F´ðbtót¥ ºèÆb‚,ì¼ÿZfcÌC6™8·^³ á;È0¸›ÁÝ<´&dâdPp³JlÖ¨š˜²‰ƒ\÷þÎþ$ìƒÂŒß±dþ¥uK´”sµüÛ>m#׿ëLÙă\•/KoKoK1,¡‰)›8høŒ)²÷WÚ^Úžz\¥œ‹þµ”S·o'¸ÔíÚöÊýæÒö7+‰NS6ñ lz«o³‰}¥ôôÆ•`ÓD§)›xÐ-²,ϰ‰)›˜†&¦lbÊ&*K—­¨ïЯܛ®ÎÂ=ˆ½±? û"åì鰧þ ½n8n#•KKËÒ²´ì«lâ –„þ$ì‹hoê““½µ? û"å†rΣ©nSݦº¹Iš˜²‰Yª¾î—›'‰NS6ñ K—=]C"kèÅS/žŽêÔ‹Ã$´Uðꛘ²‰ƒôl·e¦lâ =öý$ìƒô¿圿‘–¦¥e©v ý ô·ö˽ýrs¿ÜÝIt𲉅¨DX`"3‘ d‚"|£ÙD‘ØDÀ&~ h·IºÚS1`Ür}ÞR8³ ®».n¹.n¹~À 3ºï7a@-Ô)\«Ð«Ð¢ÙD‘ØDÀ&¸îº¸åº¸åú›QÞXc3¸›‡nTîˆDÀ&¸îº¸åº¸åú¬lxlâ Û,|.èF$B6ñ¬¦Ö]RÎÕò[÷Ga_„\G$B6&:…‰M„‰M„lâ é3âCÊ¥í¥í©ÇUʹè_K9uûv‚ëÓmÛ«ýÉÑ«÷£°Rß[-oœD§0"²‰0"²‰M„‰NaD"daD"d!›#!›ÙDÈ&*Û[öÊýu°`_îM°‰ƒÁ1>¤Ü´.³£? û"åR¹T.--KËÒ²¥œ;Áù÷!äÜÜ`©ÇÔ릣0‡rê6Õmª››$l"d²T}Ý;/7OˆDÈ&ˆDÈ&B6&:…‰M„‰M„l"ŒH„l"d!›8È,·åË혈DÈ&¤œ^¡\*çè‡Ög²»8l"di ÷öËÍýrw'Ñ)ŒH„l"ŒH„l"da¢S‘ÙD‘ÙDÈ&ˆDÈ&B6²‰Yú½¶êCéLΰTû¥+¡ï°‰M„‰NaD"daD"d!›#!›ÙDÈ&ÂD§0"²‰0"²‰M„‰M„l"daD"d!›ÙDÈ&ÎÎïßwŸÈ¯Ïœ bß¿¡›ÿ:’žÄ&ò_ÿ–ÿúä^þëdÚXÝ\ïÉÙë$6q@7ØÉ®?0™€@&ºå;û¡wQk vÚñd.¼~@Ëtlâd.ŠnŠnŠn¬u#3ºNþêžÞ+mrö:‰MÐzõŠú¨ü^µs@"ƒUgõC'*÷’–œ½Nbtçû ÉÙë$6q2èÕ± î¹~@™Ý^°ÎÍ×ÝÕ÷&›62ô0v·“ AÒŸ¤½"œ{®/2 ÕŸ›¯‹ ¯‹{®pIºQ´ŒÛ$Þ’øjá«EŸ oéØÄ¹Õ´(´(´(¬ZXµ°ê{IÝñdðùŽMpÏõÚ7 ßh6ÁÍ×Å…×Å=× ? ™Eƒ‹Áf ›ø­è¾Å<]8í¢?‹yºª±°ó¾Zfß‚tËÓm`3Ü›QÞĪù‡Í¨­Ö—Ô½¹ Ã]×¥œËò·._·¥·«÷ýÉ}K»Ïˆ)—¶—¶§W)·”[ʩۥn×§Û¶Wû“£Wï%ub±&6ñ ånKoKï¯tƒ†r¬º½Nc²”ÉÉa‰”M¤±‰ô°DÊ&R6qPùo˺j9؉MäøGpŒñÜŽM<͇=¡\*—Ê¥¥eiYÊdå°DÊ&rç߇›ŽÖt´¦zLÇc:s(§nSݦºMgÙÔö3| q–¹u^î—›'G¯ÓØÄAê6—s)·ìÁò¹¾ÙÌmé¶ìǰ‰46‘–HÙDÊ&º¬«­ÜމMä¬ ­®9¡5"•sô;6q39ôƒÐB?pk¿ÜÛ/7÷ËÝ£×ilâA_)O}{]Ä& 6Q}MÝ 4m6Qœ½.bÜtýW?<6qÐ-bnô5uŠ!Jëâ_Yw}ÈÒíÓ\7/ŸÛ?ì”±‰’M<ÈÒÛÒÛÒÛÕÃ&š>#>diÚ^Úžz\¥ÜRÎåÿR·Kݾ=áÚöjÛ«ým/üÛ­–7ó6Q½.c%›(c%›(ÙDyôºŒM”l¢ŒM”l¢del¢d%›(ÙÄA%ZøÕ­‡ Öib%›8ˆ½±¯©{дԞ{:|îHå·‘Ê•¥ei}¥%²§Ë,ê}M݃ìót´¦ï S=¦ã1…9”S·©ns~¥%¢WÓQpç¼Ü:/÷ÎËÍ“£×el¢del¢d%›8h+§Ïý•Ú?Ç×™ØDÉ&J6Q²‰ƒ|¯r[æèu›(ÙÄAÚ \sBk„ó7ÒÒ´´,ÕÜÏai÷öËÍýrwçèu›(ÙD›(ÙDÉ&¤[ l¢ŒM”l¢del¢d%›(ÙÄAZ-¿×Ví—Îä KG™–¦ºiÓLk¸:¦–ÌúJÕÍ3õºÔërÙò²®ëiêùÙÞµ³ôºÒëŠWCb%›(ÙDÉ&ÊØDÉ&J6Q²‰’MœÛ›ß¿¯uÖ¿×gÖ¿°¯ý;Ø Ø nŠÞvýëtÚXÝ^ÿü´ø‚Ó"ÃiA'~àî‡öïC\vý€tËM'Îõ×Ô¢Ïý§E†Ó‚NpÙõטŠnŠnŠn‹ »Ñtâ‚¢¢ˆ§OœØ°ÚøÑ˜¨qÐ=@L޾ìúA1E¶––uׇX6ÿ¶Ï w}Ùõ‹»°|âA–Þ–ÚÓÎpZò‰%Ÿ8h*²½´½´´>¤ÜRNÝ.u»ÔíútÛߦb¯6½z/»~ë%NK>qÐm©ºÝêvãJð‰%Ÿx»Ù´TkÜÌNøÄ’O,3œ–|bÉ'–|â ¦Àu3©ú²ë¥ˆ¾ w]÷ ¾ìúAL;2œ–|â ¥r©\ZZ––¥õ•.‘½ZöŠU½/»~käåîŸ8H=¦ã1‡rê6ÕmªÛœ_éÑ+wÎË­órï¼Üà´ÌpZò‰e†Ó’O,ùÄAÛþmK?kè»Í'–|b™á´äK>±ä±¥\îË|Ài™á´äŇ”ÓîÓ|Ài™á´äË §%ŸXò‰ƒ–È™ìî~¹½ó§e†Ó’O,3œ–|bÉ'DÿÒ—K_ÈpZò‰%ŸXf8-ùÄ’O,ùÄAóCŒ–ïð‰YªýҕЊË7 øÄA®Ž©ý²,Õ×| O,3œ–|bÉ'–|â ýÏøÄ2ÃiÉ'–|b™á´äK>±äË §%ŸXò‰%ŸXð‰¿¿ÿþ÷àä̶¡linbox-1.4.2/benchmarks/matrix/bibd_14_7_91x3432.sms000066400000000000000000025042711274717217100216510ustar00rootroot0000000000000091 3432 M 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 1 1 24 1 1 25 1 1 26 1 1 27 1 1 28 1 1 29 1 1 30 1 1 31 1 1 32 1 1 33 1 1 34 1 1 35 1 1 36 1 1 37 1 1 38 1 1 39 1 1 40 1 1 41 1 1 42 1 1 43 1 1 44 1 1 45 1 1 46 1 1 47 1 1 48 1 1 49 1 1 50 1 1 51 1 1 52 1 1 53 1 1 54 1 1 55 1 1 56 1 1 57 1 1 58 1 1 59 1 1 60 1 1 61 1 1 62 1 1 63 1 1 64 1 1 65 1 1 66 1 1 67 1 1 68 1 1 69 1 1 70 1 1 71 1 1 72 1 1 73 1 1 74 1 1 75 1 1 76 1 1 77 1 1 78 1 1 79 1 1 80 1 1 81 1 1 82 1 1 83 1 1 84 1 1 85 1 1 86 1 1 87 1 1 88 1 1 89 1 1 90 1 1 91 1 1 92 1 1 93 1 1 94 1 1 95 1 1 96 1 1 97 1 1 98 1 1 99 1 1 100 1 1 101 1 1 102 1 1 103 1 1 104 1 1 105 1 1 106 1 1 107 1 1 108 1 1 109 1 1 110 1 1 111 1 1 112 1 1 113 1 1 114 1 1 115 1 1 116 1 1 117 1 1 118 1 1 119 1 1 120 1 1 121 1 1 122 1 1 123 1 1 124 1 1 125 1 1 126 1 1 127 1 1 128 1 1 129 1 1 130 1 1 131 1 1 132 1 1 133 1 1 134 1 1 135 1 1 136 1 1 137 1 1 138 1 1 139 1 1 140 1 1 141 1 1 142 1 1 143 1 1 144 1 1 145 1 1 146 1 1 147 1 1 148 1 1 149 1 1 150 1 1 151 1 1 152 1 1 153 1 1 154 1 1 155 1 1 156 1 1 157 1 1 158 1 1 159 1 1 160 1 1 161 1 1 162 1 1 163 1 1 164 1 1 165 1 1 166 1 1 167 1 1 168 1 1 169 1 1 170 1 1 171 1 1 172 1 1 173 1 1 174 1 1 175 1 1 176 1 1 177 1 1 178 1 1 179 1 1 180 1 1 181 1 1 182 1 1 183 1 1 184 1 1 185 1 1 186 1 1 187 1 1 188 1 1 189 1 1 190 1 1 191 1 1 192 1 1 193 1 1 194 1 1 195 1 1 196 1 1 197 1 1 198 1 1 199 1 1 200 1 1 201 1 1 202 1 1 203 1 1 204 1 1 205 1 1 206 1 1 207 1 1 208 1 1 209 1 1 210 1 1 211 1 1 212 1 1 213 1 1 214 1 1 215 1 1 216 1 1 217 1 1 218 1 1 219 1 1 220 1 1 221 1 1 222 1 1 223 1 1 224 1 1 225 1 1 226 1 1 227 1 1 228 1 1 229 1 1 230 1 1 231 1 1 232 1 1 233 1 1 234 1 1 235 1 1 236 1 1 237 1 1 238 1 1 239 1 1 240 1 1 241 1 1 242 1 1 243 1 1 244 1 1 245 1 1 246 1 1 247 1 1 248 1 1 249 1 1 250 1 1 251 1 1 252 1 1 253 1 1 254 1 1 255 1 1 256 1 1 257 1 1 258 1 1 259 1 1 260 1 1 261 1 1 262 1 1 263 1 1 264 1 1 265 1 1 266 1 1 267 1 1 268 1 1 269 1 1 270 1 1 271 1 1 272 1 1 273 1 1 274 1 1 275 1 1 276 1 1 277 1 1 278 1 1 279 1 1 280 1 1 281 1 1 282 1 1 283 1 1 284 1 1 285 1 1 286 1 1 287 1 1 288 1 1 289 1 1 290 1 1 291 1 1 292 1 1 293 1 1 294 1 1 295 1 1 296 1 1 297 1 1 298 1 1 299 1 1 300 1 1 301 1 1 302 1 1 303 1 1 304 1 1 305 1 1 306 1 1 307 1 1 308 1 1 309 1 1 310 1 1 311 1 1 312 1 1 313 1 1 314 1 1 315 1 1 316 1 1 317 1 1 318 1 1 319 1 1 320 1 1 321 1 1 322 1 1 323 1 1 324 1 1 325 1 1 326 1 1 327 1 1 328 1 1 329 1 1 330 1 1 331 1 1 332 1 1 333 1 1 334 1 1 335 1 1 336 1 1 337 1 1 338 1 1 339 1 1 340 1 1 341 1 1 342 1 1 343 1 1 344 1 1 345 1 1 346 1 1 347 1 1 348 1 1 349 1 1 350 1 1 351 1 1 352 1 1 353 1 1 354 1 1 355 1 1 356 1 1 357 1 1 358 1 1 359 1 1 360 1 1 361 1 1 362 1 1 363 1 1 364 1 1 365 1 1 366 1 1 367 1 1 368 1 1 369 1 1 370 1 1 371 1 1 372 1 1 373 1 1 374 1 1 375 1 1 376 1 1 377 1 1 378 1 1 379 1 1 380 1 1 381 1 1 382 1 1 383 1 1 384 1 1 385 1 1 386 1 1 387 1 1 388 1 1 389 1 1 390 1 1 391 1 1 392 1 1 393 1 1 394 1 1 395 1 1 396 1 1 397 1 1 398 1 1 399 1 1 400 1 1 401 1 1 402 1 1 403 1 1 404 1 1 405 1 1 406 1 1 407 1 1 408 1 1 409 1 1 410 1 1 411 1 1 412 1 1 413 1 1 414 1 1 415 1 1 416 1 1 417 1 1 418 1 1 419 1 1 420 1 1 421 1 1 422 1 1 423 1 1 424 1 1 425 1 1 426 1 1 427 1 1 428 1 1 429 1 1 430 1 1 431 1 1 432 1 1 433 1 1 434 1 1 435 1 1 436 1 1 437 1 1 438 1 1 439 1 1 440 1 1 441 1 1 442 1 1 443 1 1 444 1 1 445 1 1 446 1 1 447 1 1 448 1 1 449 1 1 450 1 1 451 1 1 452 1 1 453 1 1 454 1 1 455 1 1 456 1 1 457 1 1 458 1 1 459 1 1 460 1 1 461 1 1 462 1 1 463 1 1 464 1 1 465 1 1 466 1 1 467 1 1 468 1 1 469 1 1 470 1 1 471 1 1 472 1 1 473 1 1 474 1 1 475 1 1 476 1 1 477 1 1 478 1 1 479 1 1 480 1 1 481 1 1 482 1 1 483 1 1 484 1 1 485 1 1 486 1 1 487 1 1 488 1 1 489 1 1 490 1 1 491 1 1 492 1 1 493 1 1 494 1 1 495 1 1 496 1 1 497 1 1 498 1 1 499 1 1 500 1 1 501 1 1 502 1 1 503 1 1 504 1 1 505 1 1 506 1 1 507 1 1 508 1 1 509 1 1 510 1 1 511 1 1 512 1 1 513 1 1 514 1 1 515 1 1 516 1 1 517 1 1 518 1 1 519 1 1 520 1 1 521 1 1 522 1 1 523 1 1 524 1 1 525 1 1 526 1 1 527 1 1 528 1 1 529 1 1 530 1 1 531 1 1 532 1 1 533 1 1 534 1 1 535 1 1 536 1 1 537 1 1 538 1 1 539 1 1 540 1 1 541 1 1 542 1 1 543 1 1 544 1 1 545 1 1 546 1 1 547 1 1 548 1 1 549 1 1 550 1 1 551 1 1 552 1 1 553 1 1 554 1 1 555 1 1 556 1 1 557 1 1 558 1 1 559 1 1 560 1 1 561 1 1 562 1 1 563 1 1 564 1 1 565 1 1 566 1 1 567 1 1 568 1 1 569 1 1 570 1 1 571 1 1 572 1 1 573 1 1 574 1 1 575 1 1 576 1 1 577 1 1 578 1 1 579 1 1 580 1 1 581 1 1 582 1 1 583 1 1 584 1 1 585 1 1 586 1 1 587 1 1 588 1 1 589 1 1 590 1 1 591 1 1 592 1 1 593 1 1 594 1 1 595 1 1 596 1 1 597 1 1 598 1 1 599 1 1 600 1 1 601 1 1 602 1 1 603 1 1 604 1 1 605 1 1 606 1 1 607 1 1 608 1 1 609 1 1 610 1 1 611 1 1 612 1 1 613 1 1 614 1 1 615 1 1 616 1 1 617 1 1 618 1 1 619 1 1 620 1 1 621 1 1 622 1 1 623 1 1 624 1 1 625 1 1 626 1 1 627 1 1 628 1 1 629 1 1 630 1 1 631 1 1 632 1 1 633 1 1 634 1 1 635 1 1 636 1 1 637 1 1 638 1 1 639 1 1 640 1 1 641 1 1 642 1 1 643 1 1 644 1 1 645 1 1 646 1 1 647 1 1 648 1 1 649 1 1 650 1 1 651 1 1 652 1 1 653 1 1 654 1 1 655 1 1 656 1 1 657 1 1 658 1 1 659 1 1 660 1 1 661 1 1 662 1 1 663 1 1 664 1 1 665 1 1 666 1 1 667 1 1 668 1 1 669 1 1 670 1 1 671 1 1 672 1 1 673 1 1 674 1 1 675 1 1 676 1 1 677 1 1 678 1 1 679 1 1 680 1 1 681 1 1 682 1 1 683 1 1 684 1 1 685 1 1 686 1 1 687 1 1 688 1 1 689 1 1 690 1 1 691 1 1 692 1 1 693 1 1 694 1 1 695 1 1 696 1 1 697 1 1 698 1 1 699 1 1 700 1 1 701 1 1 702 1 1 703 1 1 704 1 1 705 1 1 706 1 1 707 1 1 708 1 1 709 1 1 710 1 1 711 1 1 712 1 1 713 1 1 714 1 1 715 1 1 716 1 1 717 1 1 718 1 1 719 1 1 720 1 1 721 1 1 722 1 1 723 1 1 724 1 1 725 1 1 726 1 1 727 1 1 728 1 1 729 1 1 730 1 1 731 1 1 732 1 1 733 1 1 734 1 1 735 1 1 736 1 1 737 1 1 738 1 1 739 1 1 740 1 1 741 1 1 742 1 1 743 1 1 744 1 1 745 1 1 746 1 1 747 1 1 748 1 1 749 1 1 750 1 1 751 1 1 752 1 1 753 1 1 754 1 1 755 1 1 756 1 1 757 1 1 758 1 1 759 1 1 760 1 1 761 1 1 762 1 1 763 1 1 764 1 1 765 1 1 766 1 1 767 1 1 768 1 1 769 1 1 770 1 1 771 1 1 772 1 1 773 1 1 774 1 1 775 1 1 776 1 1 777 1 1 778 1 1 779 1 1 780 1 1 781 1 1 782 1 1 783 1 1 784 1 1 785 1 1 786 1 1 787 1 1 788 1 1 789 1 1 790 1 1 791 1 1 792 1 2 1 1 2 2 1 2 3 1 2 4 1 2 5 1 2 6 1 2 7 1 2 8 1 2 9 1 2 10 1 2 11 1 2 12 1 2 13 1 2 14 1 2 15 1 2 16 1 2 17 1 2 18 1 2 19 1 2 20 1 2 21 1 2 22 1 2 23 1 2 24 1 2 25 1 2 26 1 2 27 1 2 28 1 2 29 1 2 30 1 2 31 1 2 32 1 2 33 1 2 34 1 2 35 1 2 36 1 2 37 1 2 38 1 2 39 1 2 40 1 2 41 1 2 42 1 2 43 1 2 44 1 2 45 1 2 46 1 2 47 1 2 48 1 2 49 1 2 50 1 2 51 1 2 52 1 2 53 1 2 54 1 2 55 1 2 56 1 2 57 1 2 58 1 2 59 1 2 60 1 2 61 1 2 62 1 2 63 1 2 64 1 2 65 1 2 66 1 2 67 1 2 68 1 2 69 1 2 70 1 2 71 1 2 72 1 2 73 1 2 74 1 2 75 1 2 76 1 2 77 1 2 78 1 2 79 1 2 80 1 2 81 1 2 82 1 2 83 1 2 84 1 2 85 1 2 86 1 2 87 1 2 88 1 2 89 1 2 90 1 2 91 1 2 92 1 2 93 1 2 94 1 2 95 1 2 96 1 2 97 1 2 98 1 2 99 1 2 100 1 2 101 1 2 102 1 2 103 1 2 104 1 2 105 1 2 106 1 2 107 1 2 108 1 2 109 1 2 110 1 2 111 1 2 112 1 2 113 1 2 114 1 2 115 1 2 116 1 2 117 1 2 118 1 2 119 1 2 120 1 2 121 1 2 122 1 2 123 1 2 124 1 2 125 1 2 126 1 2 127 1 2 128 1 2 129 1 2 130 1 2 131 1 2 132 1 2 133 1 2 134 1 2 135 1 2 136 1 2 137 1 2 138 1 2 139 1 2 140 1 2 141 1 2 142 1 2 143 1 2 144 1 2 145 1 2 146 1 2 147 1 2 148 1 2 149 1 2 150 1 2 151 1 2 152 1 2 153 1 2 154 1 2 155 1 2 156 1 2 157 1 2 158 1 2 159 1 2 160 1 2 161 1 2 162 1 2 163 1 2 164 1 2 165 1 2 166 1 2 167 1 2 168 1 2 169 1 2 170 1 2 171 1 2 172 1 2 173 1 2 174 1 2 175 1 2 176 1 2 177 1 2 178 1 2 179 1 2 180 1 2 181 1 2 182 1 2 183 1 2 184 1 2 185 1 2 186 1 2 187 1 2 188 1 2 189 1 2 190 1 2 191 1 2 192 1 2 193 1 2 194 1 2 195 1 2 196 1 2 197 1 2 198 1 2 199 1 2 200 1 2 201 1 2 202 1 2 203 1 2 204 1 2 205 1 2 206 1 2 207 1 2 208 1 2 209 1 2 210 1 2 211 1 2 212 1 2 213 1 2 214 1 2 215 1 2 216 1 2 217 1 2 218 1 2 219 1 2 220 1 2 221 1 2 222 1 2 223 1 2 224 1 2 225 1 2 226 1 2 227 1 2 228 1 2 229 1 2 230 1 2 231 1 2 232 1 2 233 1 2 234 1 2 235 1 2 236 1 2 237 1 2 238 1 2 239 1 2 240 1 2 241 1 2 242 1 2 243 1 2 244 1 2 245 1 2 246 1 2 247 1 2 248 1 2 249 1 2 250 1 2 251 1 2 252 1 2 253 1 2 254 1 2 255 1 2 256 1 2 257 1 2 258 1 2 259 1 2 260 1 2 261 1 2 262 1 2 263 1 2 264 1 2 265 1 2 266 1 2 267 1 2 268 1 2 269 1 2 270 1 2 271 1 2 272 1 2 273 1 2 274 1 2 275 1 2 276 1 2 277 1 2 278 1 2 279 1 2 280 1 2 281 1 2 282 1 2 283 1 2 284 1 2 285 1 2 286 1 2 287 1 2 288 1 2 289 1 2 290 1 2 291 1 2 292 1 2 293 1 2 294 1 2 295 1 2 296 1 2 297 1 2 298 1 2 299 1 2 300 1 2 301 1 2 302 1 2 303 1 2 304 1 2 305 1 2 306 1 2 307 1 2 308 1 2 309 1 2 310 1 2 311 1 2 312 1 2 313 1 2 314 1 2 315 1 2 316 1 2 317 1 2 318 1 2 319 1 2 320 1 2 321 1 2 322 1 2 323 1 2 324 1 2 325 1 2 326 1 2 327 1 2 328 1 2 329 1 2 330 1 2 793 1 2 794 1 2 795 1 2 796 1 2 797 1 2 798 1 2 799 1 2 800 1 2 801 1 2 802 1 2 803 1 2 804 1 2 805 1 2 806 1 2 807 1 2 808 1 2 809 1 2 810 1 2 811 1 2 812 1 2 813 1 2 814 1 2 815 1 2 816 1 2 817 1 2 818 1 2 819 1 2 820 1 2 821 1 2 822 1 2 823 1 2 824 1 2 825 1 2 826 1 2 827 1 2 828 1 2 829 1 2 830 1 2 831 1 2 832 1 2 833 1 2 834 1 2 835 1 2 836 1 2 837 1 2 838 1 2 839 1 2 840 1 2 841 1 2 842 1 2 843 1 2 844 1 2 845 1 2 846 1 2 847 1 2 848 1 2 849 1 2 850 1 2 851 1 2 852 1 2 853 1 2 854 1 2 855 1 2 856 1 2 857 1 2 858 1 2 859 1 2 860 1 2 861 1 2 862 1 2 863 1 2 864 1 2 865 1 2 866 1 2 867 1 2 868 1 2 869 1 2 870 1 2 871 1 2 872 1 2 873 1 2 874 1 2 875 1 2 876 1 2 877 1 2 878 1 2 879 1 2 880 1 2 881 1 2 882 1 2 883 1 2 884 1 2 885 1 2 886 1 2 887 1 2 888 1 2 889 1 2 890 1 2 891 1 2 892 1 2 893 1 2 894 1 2 895 1 2 896 1 2 897 1 2 898 1 2 899 1 2 900 1 2 901 1 2 902 1 2 903 1 2 904 1 2 905 1 2 906 1 2 907 1 2 908 1 2 909 1 2 910 1 2 911 1 2 912 1 2 913 1 2 914 1 2 915 1 2 916 1 2 917 1 2 918 1 2 919 1 2 920 1 2 921 1 2 922 1 2 923 1 2 924 1 2 925 1 2 926 1 2 927 1 2 928 1 2 929 1 2 930 1 2 931 1 2 932 1 2 933 1 2 934 1 2 935 1 2 936 1 2 937 1 2 938 1 2 939 1 2 940 1 2 941 1 2 942 1 2 943 1 2 944 1 2 945 1 2 946 1 2 947 1 2 948 1 2 949 1 2 950 1 2 951 1 2 952 1 2 953 1 2 954 1 2 955 1 2 956 1 2 957 1 2 958 1 2 959 1 2 960 1 2 961 1 2 962 1 2 963 1 2 964 1 2 965 1 2 966 1 2 967 1 2 968 1 2 969 1 2 970 1 2 971 1 2 972 1 2 973 1 2 974 1 2 975 1 2 976 1 2 977 1 2 978 1 2 979 1 2 980 1 2 981 1 2 982 1 2 983 1 2 984 1 2 985 1 2 986 1 2 987 1 2 988 1 2 989 1 2 990 1 2 991 1 2 992 1 2 993 1 2 994 1 2 995 1 2 996 1 2 997 1 2 998 1 2 999 1 2 1000 1 2 1001 1 2 1002 1 2 1003 1 2 1004 1 2 1005 1 2 1006 1 2 1007 1 2 1008 1 2 1009 1 2 1010 1 2 1011 1 2 1012 1 2 1013 1 2 1014 1 2 1015 1 2 1016 1 2 1017 1 2 1018 1 2 1019 1 2 1020 1 2 1021 1 2 1022 1 2 1023 1 2 1024 1 2 1025 1 2 1026 1 2 1027 1 2 1028 1 2 1029 1 2 1030 1 2 1031 1 2 1032 1 2 1033 1 2 1034 1 2 1035 1 2 1036 1 2 1037 1 2 1038 1 2 1039 1 2 1040 1 2 1041 1 2 1042 1 2 1043 1 2 1044 1 2 1045 1 2 1046 1 2 1047 1 2 1048 1 2 1049 1 2 1050 1 2 1051 1 2 1052 1 2 1053 1 2 1054 1 2 1055 1 2 1056 1 2 1057 1 2 1058 1 2 1059 1 2 1060 1 2 1061 1 2 1062 1 2 1063 1 2 1064 1 2 1065 1 2 1066 1 2 1067 1 2 1068 1 2 1069 1 2 1070 1 2 1071 1 2 1072 1 2 1073 1 2 1074 1 2 1075 1 2 1076 1 2 1077 1 2 1078 1 2 1079 1 2 1080 1 2 1081 1 2 1082 1 2 1083 1 2 1084 1 2 1085 1 2 1086 1 2 1087 1 2 1088 1 2 1089 1 2 1090 1 2 1091 1 2 1092 1 2 1093 1 2 1094 1 2 1095 1 2 1096 1 2 1097 1 2 1098 1 2 1099 1 2 1100 1 2 1101 1 2 1102 1 2 1103 1 2 1104 1 2 1105 1 2 1106 1 2 1107 1 2 1108 1 2 1109 1 2 1110 1 2 1111 1 2 1112 1 2 1113 1 2 1114 1 2 1115 1 2 1116 1 2 1117 1 2 1118 1 2 1119 1 2 1120 1 2 1121 1 2 1122 1 2 1123 1 2 1124 1 2 1125 1 2 1126 1 2 1127 1 2 1128 1 2 1129 1 2 1130 1 2 1131 1 2 1132 1 2 1133 1 2 1134 1 2 1135 1 2 1136 1 2 1137 1 2 1138 1 2 1139 1 2 1140 1 2 1141 1 2 1142 1 2 1143 1 2 1144 1 2 1145 1 2 1146 1 2 1147 1 2 1148 1 2 1149 1 2 1150 1 2 1151 1 2 1152 1 2 1153 1 2 1154 1 2 1155 1 2 1156 1 2 1157 1 2 1158 1 2 1159 1 2 1160 1 2 1161 1 2 1162 1 2 1163 1 2 1164 1 2 1165 1 2 1166 1 2 1167 1 2 1168 1 2 1169 1 2 1170 1 2 1171 1 2 1172 1 2 1173 1 2 1174 1 2 1175 1 2 1176 1 2 1177 1 2 1178 1 2 1179 1 2 1180 1 2 1181 1 2 1182 1 2 1183 1 2 1184 1 2 1185 1 2 1186 1 2 1187 1 2 1188 1 2 1189 1 2 1190 1 2 1191 1 2 1192 1 2 1193 1 2 1194 1 2 1195 1 2 1196 1 2 1197 1 2 1198 1 2 1199 1 2 1200 1 2 1201 1 2 1202 1 2 1203 1 2 1204 1 2 1205 1 2 1206 1 2 1207 1 2 1208 1 2 1209 1 2 1210 1 2 1211 1 2 1212 1 2 1213 1 2 1214 1 2 1215 1 2 1216 1 2 1217 1 2 1218 1 2 1219 1 2 1220 1 2 1221 1 2 1222 1 2 1223 1 2 1224 1 2 1225 1 2 1226 1 2 1227 1 2 1228 1 2 1229 1 2 1230 1 2 1231 1 2 1232 1 2 1233 1 2 1234 1 2 1235 1 2 1236 1 2 1237 1 2 1238 1 2 1239 1 2 1240 1 2 1241 1 2 1242 1 2 1243 1 2 1244 1 2 1245 1 2 1246 1 2 1247 1 2 1248 1 2 1249 1 2 1250 1 2 1251 1 2 1252 1 2 1253 1 2 1254 1 3 1 1 3 2 1 3 3 1 3 4 1 3 5 1 3 6 1 3 7 1 3 8 1 3 9 1 3 10 1 3 11 1 3 12 1 3 13 1 3 14 1 3 15 1 3 16 1 3 17 1 3 18 1 3 19 1 3 20 1 3 21 1 3 22 1 3 23 1 3 24 1 3 25 1 3 26 1 3 27 1 3 28 1 3 29 1 3 30 1 3 31 1 3 32 1 3 33 1 3 34 1 3 35 1 3 36 1 3 37 1 3 38 1 3 39 1 3 40 1 3 41 1 3 42 1 3 43 1 3 44 1 3 45 1 3 46 1 3 47 1 3 48 1 3 49 1 3 50 1 3 51 1 3 52 1 3 53 1 3 54 1 3 55 1 3 56 1 3 57 1 3 58 1 3 59 1 3 60 1 3 61 1 3 62 1 3 63 1 3 64 1 3 65 1 3 66 1 3 67 1 3 68 1 3 69 1 3 70 1 3 71 1 3 72 1 3 73 1 3 74 1 3 75 1 3 76 1 3 77 1 3 78 1 3 79 1 3 80 1 3 81 1 3 82 1 3 83 1 3 84 1 3 85 1 3 86 1 3 87 1 3 88 1 3 89 1 3 90 1 3 91 1 3 92 1 3 93 1 3 94 1 3 95 1 3 96 1 3 97 1 3 98 1 3 99 1 3 100 1 3 101 1 3 102 1 3 103 1 3 104 1 3 105 1 3 106 1 3 107 1 3 108 1 3 109 1 3 110 1 3 111 1 3 112 1 3 113 1 3 114 1 3 115 1 3 116 1 3 117 1 3 118 1 3 119 1 3 120 1 3 331 1 3 332 1 3 333 1 3 334 1 3 335 1 3 336 1 3 337 1 3 338 1 3 339 1 3 340 1 3 341 1 3 342 1 3 343 1 3 344 1 3 345 1 3 346 1 3 347 1 3 348 1 3 349 1 3 350 1 3 351 1 3 352 1 3 353 1 3 354 1 3 355 1 3 356 1 3 357 1 3 358 1 3 359 1 3 360 1 3 361 1 3 362 1 3 363 1 3 364 1 3 365 1 3 366 1 3 367 1 3 368 1 3 369 1 3 370 1 3 371 1 3 372 1 3 373 1 3 374 1 3 375 1 3 376 1 3 377 1 3 378 1 3 379 1 3 380 1 3 381 1 3 382 1 3 383 1 3 384 1 3 385 1 3 386 1 3 387 1 3 388 1 3 389 1 3 390 1 3 391 1 3 392 1 3 393 1 3 394 1 3 395 1 3 396 1 3 397 1 3 398 1 3 399 1 3 400 1 3 401 1 3 402 1 3 403 1 3 404 1 3 405 1 3 406 1 3 407 1 3 408 1 3 409 1 3 410 1 3 411 1 3 412 1 3 413 1 3 414 1 3 415 1 3 416 1 3 417 1 3 418 1 3 419 1 3 420 1 3 421 1 3 422 1 3 423 1 3 424 1 3 425 1 3 426 1 3 427 1 3 428 1 3 429 1 3 430 1 3 431 1 3 432 1 3 433 1 3 434 1 3 435 1 3 436 1 3 437 1 3 438 1 3 439 1 3 440 1 3 441 1 3 442 1 3 443 1 3 444 1 3 445 1 3 446 1 3 447 1 3 448 1 3 449 1 3 450 1 3 451 1 3 452 1 3 453 1 3 454 1 3 455 1 3 456 1 3 457 1 3 458 1 3 459 1 3 460 1 3 461 1 3 462 1 3 463 1 3 464 1 3 465 1 3 466 1 3 467 1 3 468 1 3 469 1 3 470 1 3 471 1 3 472 1 3 473 1 3 474 1 3 475 1 3 476 1 3 477 1 3 478 1 3 479 1 3 480 1 3 481 1 3 482 1 3 483 1 3 484 1 3 485 1 3 486 1 3 487 1 3 488 1 3 489 1 3 490 1 3 491 1 3 492 1 3 493 1 3 494 1 3 495 1 3 496 1 3 497 1 3 498 1 3 499 1 3 500 1 3 501 1 3 502 1 3 503 1 3 504 1 3 505 1 3 506 1 3 507 1 3 508 1 3 509 1 3 510 1 3 511 1 3 512 1 3 513 1 3 514 1 3 515 1 3 516 1 3 517 1 3 518 1 3 519 1 3 520 1 3 521 1 3 522 1 3 523 1 3 524 1 3 525 1 3 526 1 3 527 1 3 528 1 3 529 1 3 530 1 3 531 1 3 532 1 3 533 1 3 534 1 3 535 1 3 536 1 3 537 1 3 538 1 3 539 1 3 540 1 3 793 1 3 794 1 3 795 1 3 796 1 3 797 1 3 798 1 3 799 1 3 800 1 3 801 1 3 802 1 3 803 1 3 804 1 3 805 1 3 806 1 3 807 1 3 808 1 3 809 1 3 810 1 3 811 1 3 812 1 3 813 1 3 814 1 3 815 1 3 816 1 3 817 1 3 818 1 3 819 1 3 820 1 3 821 1 3 822 1 3 823 1 3 824 1 3 825 1 3 826 1 3 827 1 3 828 1 3 829 1 3 830 1 3 831 1 3 832 1 3 833 1 3 834 1 3 835 1 3 836 1 3 837 1 3 838 1 3 839 1 3 840 1 3 841 1 3 842 1 3 843 1 3 844 1 3 845 1 3 846 1 3 847 1 3 848 1 3 849 1 3 850 1 3 851 1 3 852 1 3 853 1 3 854 1 3 855 1 3 856 1 3 857 1 3 858 1 3 859 1 3 860 1 3 861 1 3 862 1 3 863 1 3 864 1 3 865 1 3 866 1 3 867 1 3 868 1 3 869 1 3 870 1 3 871 1 3 872 1 3 873 1 3 874 1 3 875 1 3 876 1 3 877 1 3 878 1 3 879 1 3 880 1 3 881 1 3 882 1 3 883 1 3 884 1 3 885 1 3 886 1 3 887 1 3 888 1 3 889 1 3 890 1 3 891 1 3 892 1 3 893 1 3 894 1 3 895 1 3 896 1 3 897 1 3 898 1 3 899 1 3 900 1 3 901 1 3 902 1 3 903 1 3 904 1 3 905 1 3 906 1 3 907 1 3 908 1 3 909 1 3 910 1 3 911 1 3 912 1 3 913 1 3 914 1 3 915 1 3 916 1 3 917 1 3 918 1 3 919 1 3 920 1 3 921 1 3 922 1 3 923 1 3 924 1 3 925 1 3 926 1 3 927 1 3 928 1 3 929 1 3 930 1 3 931 1 3 932 1 3 933 1 3 934 1 3 935 1 3 936 1 3 937 1 3 938 1 3 939 1 3 940 1 3 941 1 3 942 1 3 943 1 3 944 1 3 945 1 3 946 1 3 947 1 3 948 1 3 949 1 3 950 1 3 951 1 3 952 1 3 953 1 3 954 1 3 955 1 3 956 1 3 957 1 3 958 1 3 959 1 3 960 1 3 961 1 3 962 1 3 963 1 3 964 1 3 965 1 3 966 1 3 967 1 3 968 1 3 969 1 3 970 1 3 971 1 3 972 1 3 973 1 3 974 1 3 975 1 3 976 1 3 977 1 3 978 1 3 979 1 3 980 1 3 981 1 3 982 1 3 983 1 3 984 1 3 985 1 3 986 1 3 987 1 3 988 1 3 989 1 3 990 1 3 991 1 3 992 1 3 993 1 3 994 1 3 995 1 3 996 1 3 997 1 3 998 1 3 999 1 3 1000 1 3 1001 1 3 1002 1 3 1255 1 3 1256 1 3 1257 1 3 1258 1 3 1259 1 3 1260 1 3 1261 1 3 1262 1 3 1263 1 3 1264 1 3 1265 1 3 1266 1 3 1267 1 3 1268 1 3 1269 1 3 1270 1 3 1271 1 3 1272 1 3 1273 1 3 1274 1 3 1275 1 3 1276 1 3 1277 1 3 1278 1 3 1279 1 3 1280 1 3 1281 1 3 1282 1 3 1283 1 3 1284 1 3 1285 1 3 1286 1 3 1287 1 3 1288 1 3 1289 1 3 1290 1 3 1291 1 3 1292 1 3 1293 1 3 1294 1 3 1295 1 3 1296 1 3 1297 1 3 1298 1 3 1299 1 3 1300 1 3 1301 1 3 1302 1 3 1303 1 3 1304 1 3 1305 1 3 1306 1 3 1307 1 3 1308 1 3 1309 1 3 1310 1 3 1311 1 3 1312 1 3 1313 1 3 1314 1 3 1315 1 3 1316 1 3 1317 1 3 1318 1 3 1319 1 3 1320 1 3 1321 1 3 1322 1 3 1323 1 3 1324 1 3 1325 1 3 1326 1 3 1327 1 3 1328 1 3 1329 1 3 1330 1 3 1331 1 3 1332 1 3 1333 1 3 1334 1 3 1335 1 3 1336 1 3 1337 1 3 1338 1 3 1339 1 3 1340 1 3 1341 1 3 1342 1 3 1343 1 3 1344 1 3 1345 1 3 1346 1 3 1347 1 3 1348 1 3 1349 1 3 1350 1 3 1351 1 3 1352 1 3 1353 1 3 1354 1 3 1355 1 3 1356 1 3 1357 1 3 1358 1 3 1359 1 3 1360 1 3 1361 1 3 1362 1 3 1363 1 3 1364 1 3 1365 1 3 1366 1 3 1367 1 3 1368 1 3 1369 1 3 1370 1 3 1371 1 3 1372 1 3 1373 1 3 1374 1 3 1375 1 3 1376 1 3 1377 1 3 1378 1 3 1379 1 3 1380 1 3 1381 1 3 1382 1 3 1383 1 3 1384 1 3 1385 1 3 1386 1 3 1387 1 3 1388 1 3 1389 1 3 1390 1 3 1391 1 3 1392 1 3 1393 1 3 1394 1 3 1395 1 3 1396 1 3 1397 1 3 1398 1 3 1399 1 3 1400 1 3 1401 1 3 1402 1 3 1403 1 3 1404 1 3 1405 1 3 1406 1 3 1407 1 3 1408 1 3 1409 1 3 1410 1 3 1411 1 3 1412 1 3 1413 1 3 1414 1 3 1415 1 3 1416 1 3 1417 1 3 1418 1 3 1419 1 3 1420 1 3 1421 1 3 1422 1 3 1423 1 3 1424 1 3 1425 1 3 1426 1 3 1427 1 3 1428 1 3 1429 1 3 1430 1 3 1431 1 3 1432 1 3 1433 1 3 1434 1 3 1435 1 3 1436 1 3 1437 1 3 1438 1 3 1439 1 3 1440 1 3 1441 1 3 1442 1 3 1443 1 3 1444 1 3 1445 1 3 1446 1 3 1447 1 3 1448 1 3 1449 1 3 1450 1 3 1451 1 3 1452 1 3 1453 1 3 1454 1 3 1455 1 3 1456 1 3 1457 1 3 1458 1 3 1459 1 3 1460 1 3 1461 1 3 1462 1 3 1463 1 3 1464 1 3 1465 1 3 1466 1 3 1467 1 3 1468 1 3 1469 1 3 1470 1 3 1471 1 3 1472 1 3 1473 1 3 1474 1 3 1475 1 3 1476 1 3 1477 1 3 1478 1 3 1479 1 3 1480 1 3 1481 1 3 1482 1 3 1483 1 3 1484 1 3 1485 1 3 1486 1 3 1487 1 3 1488 1 3 1489 1 3 1490 1 3 1491 1 3 1492 1 3 1493 1 3 1494 1 3 1495 1 3 1496 1 3 1497 1 3 1498 1 3 1499 1 3 1500 1 3 1501 1 3 1502 1 3 1503 1 3 1504 1 3 1505 1 3 1506 1 4 1 1 4 2 1 4 3 1 4 4 1 4 5 1 4 6 1 4 7 1 4 8 1 4 9 1 4 10 1 4 11 1 4 12 1 4 13 1 4 14 1 4 15 1 4 16 1 4 17 1 4 18 1 4 19 1 4 20 1 4 21 1 4 22 1 4 23 1 4 24 1 4 25 1 4 26 1 4 27 1 4 28 1 4 29 1 4 30 1 4 31 1 4 32 1 4 33 1 4 34 1 4 35 1 4 36 1 4 121 1 4 122 1 4 123 1 4 124 1 4 125 1 4 126 1 4 127 1 4 128 1 4 129 1 4 130 1 4 131 1 4 132 1 4 133 1 4 134 1 4 135 1 4 136 1 4 137 1 4 138 1 4 139 1 4 140 1 4 141 1 4 142 1 4 143 1 4 144 1 4 145 1 4 146 1 4 147 1 4 148 1 4 149 1 4 150 1 4 151 1 4 152 1 4 153 1 4 154 1 4 155 1 4 156 1 4 157 1 4 158 1 4 159 1 4 160 1 4 161 1 4 162 1 4 163 1 4 164 1 4 165 1 4 166 1 4 167 1 4 168 1 4 169 1 4 170 1 4 171 1 4 172 1 4 173 1 4 174 1 4 175 1 4 176 1 4 177 1 4 178 1 4 179 1 4 180 1 4 181 1 4 182 1 4 183 1 4 184 1 4 185 1 4 186 1 4 187 1 4 188 1 4 189 1 4 190 1 4 191 1 4 192 1 4 193 1 4 194 1 4 195 1 4 196 1 4 197 1 4 198 1 4 199 1 4 200 1 4 201 1 4 202 1 4 203 1 4 204 1 4 331 1 4 332 1 4 333 1 4 334 1 4 335 1 4 336 1 4 337 1 4 338 1 4 339 1 4 340 1 4 341 1 4 342 1 4 343 1 4 344 1 4 345 1 4 346 1 4 347 1 4 348 1 4 349 1 4 350 1 4 351 1 4 352 1 4 353 1 4 354 1 4 355 1 4 356 1 4 357 1 4 358 1 4 359 1 4 360 1 4 361 1 4 362 1 4 363 1 4 364 1 4 365 1 4 366 1 4 367 1 4 368 1 4 369 1 4 370 1 4 371 1 4 372 1 4 373 1 4 374 1 4 375 1 4 376 1 4 377 1 4 378 1 4 379 1 4 380 1 4 381 1 4 382 1 4 383 1 4 384 1 4 385 1 4 386 1 4 387 1 4 388 1 4 389 1 4 390 1 4 391 1 4 392 1 4 393 1 4 394 1 4 395 1 4 396 1 4 397 1 4 398 1 4 399 1 4 400 1 4 401 1 4 402 1 4 403 1 4 404 1 4 405 1 4 406 1 4 407 1 4 408 1 4 409 1 4 410 1 4 411 1 4 412 1 4 413 1 4 414 1 4 541 1 4 542 1 4 543 1 4 544 1 4 545 1 4 546 1 4 547 1 4 548 1 4 549 1 4 550 1 4 551 1 4 552 1 4 553 1 4 554 1 4 555 1 4 556 1 4 557 1 4 558 1 4 559 1 4 560 1 4 561 1 4 562 1 4 563 1 4 564 1 4 565 1 4 566 1 4 567 1 4 568 1 4 569 1 4 570 1 4 571 1 4 572 1 4 573 1 4 574 1 4 575 1 4 576 1 4 577 1 4 578 1 4 579 1 4 580 1 4 581 1 4 582 1 4 583 1 4 584 1 4 585 1 4 586 1 4 587 1 4 588 1 4 589 1 4 590 1 4 591 1 4 592 1 4 593 1 4 594 1 4 595 1 4 596 1 4 597 1 4 598 1 4 599 1 4 600 1 4 601 1 4 602 1 4 603 1 4 604 1 4 605 1 4 606 1 4 607 1 4 608 1 4 609 1 4 610 1 4 611 1 4 612 1 4 613 1 4 614 1 4 615 1 4 616 1 4 617 1 4 618 1 4 619 1 4 620 1 4 621 1 4 622 1 4 623 1 4 624 1 4 625 1 4 626 1 4 627 1 4 628 1 4 629 1 4 630 1 4 631 1 4 632 1 4 633 1 4 634 1 4 635 1 4 636 1 4 637 1 4 638 1 4 639 1 4 640 1 4 641 1 4 642 1 4 643 1 4 644 1 4 645 1 4 646 1 4 647 1 4 648 1 4 649 1 4 650 1 4 651 1 4 652 1 4 653 1 4 654 1 4 655 1 4 656 1 4 657 1 4 658 1 4 659 1 4 660 1 4 661 1 4 662 1 4 663 1 4 664 1 4 665 1 4 666 1 4 793 1 4 794 1 4 795 1 4 796 1 4 797 1 4 798 1 4 799 1 4 800 1 4 801 1 4 802 1 4 803 1 4 804 1 4 805 1 4 806 1 4 807 1 4 808 1 4 809 1 4 810 1 4 811 1 4 812 1 4 813 1 4 814 1 4 815 1 4 816 1 4 817 1 4 818 1 4 819 1 4 820 1 4 821 1 4 822 1 4 823 1 4 824 1 4 825 1 4 826 1 4 827 1 4 828 1 4 829 1 4 830 1 4 831 1 4 832 1 4 833 1 4 834 1 4 835 1 4 836 1 4 837 1 4 838 1 4 839 1 4 840 1 4 841 1 4 842 1 4 843 1 4 844 1 4 845 1 4 846 1 4 847 1 4 848 1 4 849 1 4 850 1 4 851 1 4 852 1 4 853 1 4 854 1 4 855 1 4 856 1 4 857 1 4 858 1 4 859 1 4 860 1 4 861 1 4 862 1 4 863 1 4 864 1 4 865 1 4 866 1 4 867 1 4 868 1 4 869 1 4 870 1 4 871 1 4 872 1 4 873 1 4 874 1 4 875 1 4 876 1 4 1003 1 4 1004 1 4 1005 1 4 1006 1 4 1007 1 4 1008 1 4 1009 1 4 1010 1 4 1011 1 4 1012 1 4 1013 1 4 1014 1 4 1015 1 4 1016 1 4 1017 1 4 1018 1 4 1019 1 4 1020 1 4 1021 1 4 1022 1 4 1023 1 4 1024 1 4 1025 1 4 1026 1 4 1027 1 4 1028 1 4 1029 1 4 1030 1 4 1031 1 4 1032 1 4 1033 1 4 1034 1 4 1035 1 4 1036 1 4 1037 1 4 1038 1 4 1039 1 4 1040 1 4 1041 1 4 1042 1 4 1043 1 4 1044 1 4 1045 1 4 1046 1 4 1047 1 4 1048 1 4 1049 1 4 1050 1 4 1051 1 4 1052 1 4 1053 1 4 1054 1 4 1055 1 4 1056 1 4 1057 1 4 1058 1 4 1059 1 4 1060 1 4 1061 1 4 1062 1 4 1063 1 4 1064 1 4 1065 1 4 1066 1 4 1067 1 4 1068 1 4 1069 1 4 1070 1 4 1071 1 4 1072 1 4 1073 1 4 1074 1 4 1075 1 4 1076 1 4 1077 1 4 1078 1 4 1079 1 4 1080 1 4 1081 1 4 1082 1 4 1083 1 4 1084 1 4 1085 1 4 1086 1 4 1087 1 4 1088 1 4 1089 1 4 1090 1 4 1091 1 4 1092 1 4 1093 1 4 1094 1 4 1095 1 4 1096 1 4 1097 1 4 1098 1 4 1099 1 4 1100 1 4 1101 1 4 1102 1 4 1103 1 4 1104 1 4 1105 1 4 1106 1 4 1107 1 4 1108 1 4 1109 1 4 1110 1 4 1111 1 4 1112 1 4 1113 1 4 1114 1 4 1115 1 4 1116 1 4 1117 1 4 1118 1 4 1119 1 4 1120 1 4 1121 1 4 1122 1 4 1123 1 4 1124 1 4 1125 1 4 1126 1 4 1127 1 4 1128 1 4 1255 1 4 1256 1 4 1257 1 4 1258 1 4 1259 1 4 1260 1 4 1261 1 4 1262 1 4 1263 1 4 1264 1 4 1265 1 4 1266 1 4 1267 1 4 1268 1 4 1269 1 4 1270 1 4 1271 1 4 1272 1 4 1273 1 4 1274 1 4 1275 1 4 1276 1 4 1277 1 4 1278 1 4 1279 1 4 1280 1 4 1281 1 4 1282 1 4 1283 1 4 1284 1 4 1285 1 4 1286 1 4 1287 1 4 1288 1 4 1289 1 4 1290 1 4 1291 1 4 1292 1 4 1293 1 4 1294 1 4 1295 1 4 1296 1 4 1297 1 4 1298 1 4 1299 1 4 1300 1 4 1301 1 4 1302 1 4 1303 1 4 1304 1 4 1305 1 4 1306 1 4 1307 1 4 1308 1 4 1309 1 4 1310 1 4 1311 1 4 1312 1 4 1313 1 4 1314 1 4 1315 1 4 1316 1 4 1317 1 4 1318 1 4 1319 1 4 1320 1 4 1321 1 4 1322 1 4 1323 1 4 1324 1 4 1325 1 4 1326 1 4 1327 1 4 1328 1 4 1329 1 4 1330 1 4 1331 1 4 1332 1 4 1333 1 4 1334 1 4 1335 1 4 1336 1 4 1337 1 4 1338 1 4 1339 1 4 1340 1 4 1341 1 4 1342 1 4 1343 1 4 1344 1 4 1345 1 4 1346 1 4 1347 1 4 1348 1 4 1349 1 4 1350 1 4 1351 1 4 1352 1 4 1353 1 4 1354 1 4 1355 1 4 1356 1 4 1357 1 4 1358 1 4 1359 1 4 1360 1 4 1361 1 4 1362 1 4 1363 1 4 1364 1 4 1365 1 4 1366 1 4 1367 1 4 1368 1 4 1369 1 4 1370 1 4 1371 1 4 1372 1 4 1373 1 4 1374 1 4 1375 1 4 1376 1 4 1377 1 4 1378 1 4 1379 1 4 1380 1 4 1507 1 4 1508 1 4 1509 1 4 1510 1 4 1511 1 4 1512 1 4 1513 1 4 1514 1 4 1515 1 4 1516 1 4 1517 1 4 1518 1 4 1519 1 4 1520 1 4 1521 1 4 1522 1 4 1523 1 4 1524 1 4 1525 1 4 1526 1 4 1527 1 4 1528 1 4 1529 1 4 1530 1 4 1531 1 4 1532 1 4 1533 1 4 1534 1 4 1535 1 4 1536 1 4 1537 1 4 1538 1 4 1539 1 4 1540 1 4 1541 1 4 1542 1 4 1543 1 4 1544 1 4 1545 1 4 1546 1 4 1547 1 4 1548 1 4 1549 1 4 1550 1 4 1551 1 4 1552 1 4 1553 1 4 1554 1 4 1555 1 4 1556 1 4 1557 1 4 1558 1 4 1559 1 4 1560 1 4 1561 1 4 1562 1 4 1563 1 4 1564 1 4 1565 1 4 1566 1 4 1567 1 4 1568 1 4 1569 1 4 1570 1 4 1571 1 4 1572 1 4 1573 1 4 1574 1 4 1575 1 4 1576 1 4 1577 1 4 1578 1 4 1579 1 4 1580 1 4 1581 1 4 1582 1 4 1583 1 4 1584 1 4 1585 1 4 1586 1 4 1587 1 4 1588 1 4 1589 1 4 1590 1 4 1591 1 4 1592 1 4 1593 1 4 1594 1 4 1595 1 4 1596 1 4 1597 1 4 1598 1 4 1599 1 4 1600 1 4 1601 1 4 1602 1 4 1603 1 4 1604 1 4 1605 1 4 1606 1 4 1607 1 4 1608 1 4 1609 1 4 1610 1 4 1611 1 4 1612 1 4 1613 1 4 1614 1 4 1615 1 4 1616 1 4 1617 1 4 1618 1 4 1619 1 4 1620 1 4 1621 1 4 1622 1 4 1623 1 4 1624 1 4 1625 1 4 1626 1 4 1627 1 4 1628 1 4 1629 1 4 1630 1 4 1631 1 4 1632 1 5 1 1 5 2 1 5 3 1 5 4 1 5 5 1 5 6 1 5 7 1 5 8 1 5 37 1 5 38 1 5 39 1 5 40 1 5 41 1 5 42 1 5 43 1 5 44 1 5 45 1 5 46 1 5 47 1 5 48 1 5 49 1 5 50 1 5 51 1 5 52 1 5 53 1 5 54 1 5 55 1 5 56 1 5 57 1 5 58 1 5 59 1 5 60 1 5 61 1 5 62 1 5 63 1 5 64 1 5 121 1 5 122 1 5 123 1 5 124 1 5 125 1 5 126 1 5 127 1 5 128 1 5 129 1 5 130 1 5 131 1 5 132 1 5 133 1 5 134 1 5 135 1 5 136 1 5 137 1 5 138 1 5 139 1 5 140 1 5 141 1 5 142 1 5 143 1 5 144 1 5 145 1 5 146 1 5 147 1 5 148 1 5 205 1 5 206 1 5 207 1 5 208 1 5 209 1 5 210 1 5 211 1 5 212 1 5 213 1 5 214 1 5 215 1 5 216 1 5 217 1 5 218 1 5 219 1 5 220 1 5 221 1 5 222 1 5 223 1 5 224 1 5 225 1 5 226 1 5 227 1 5 228 1 5 229 1 5 230 1 5 231 1 5 232 1 5 233 1 5 234 1 5 235 1 5 236 1 5 237 1 5 238 1 5 239 1 5 240 1 5 241 1 5 242 1 5 243 1 5 244 1 5 245 1 5 246 1 5 247 1 5 248 1 5 249 1 5 250 1 5 251 1 5 252 1 5 253 1 5 254 1 5 255 1 5 256 1 5 257 1 5 258 1 5 259 1 5 260 1 5 331 1 5 332 1 5 333 1 5 334 1 5 335 1 5 336 1 5 337 1 5 338 1 5 339 1 5 340 1 5 341 1 5 342 1 5 343 1 5 344 1 5 345 1 5 346 1 5 347 1 5 348 1 5 349 1 5 350 1 5 351 1 5 352 1 5 353 1 5 354 1 5 355 1 5 356 1 5 357 1 5 358 1 5 415 1 5 416 1 5 417 1 5 418 1 5 419 1 5 420 1 5 421 1 5 422 1 5 423 1 5 424 1 5 425 1 5 426 1 5 427 1 5 428 1 5 429 1 5 430 1 5 431 1 5 432 1 5 433 1 5 434 1 5 435 1 5 436 1 5 437 1 5 438 1 5 439 1 5 440 1 5 441 1 5 442 1 5 443 1 5 444 1 5 445 1 5 446 1 5 447 1 5 448 1 5 449 1 5 450 1 5 451 1 5 452 1 5 453 1 5 454 1 5 455 1 5 456 1 5 457 1 5 458 1 5 459 1 5 460 1 5 461 1 5 462 1 5 463 1 5 464 1 5 465 1 5 466 1 5 467 1 5 468 1 5 469 1 5 470 1 5 541 1 5 542 1 5 543 1 5 544 1 5 545 1 5 546 1 5 547 1 5 548 1 5 549 1 5 550 1 5 551 1 5 552 1 5 553 1 5 554 1 5 555 1 5 556 1 5 557 1 5 558 1 5 559 1 5 560 1 5 561 1 5 562 1 5 563 1 5 564 1 5 565 1 5 566 1 5 567 1 5 568 1 5 569 1 5 570 1 5 571 1 5 572 1 5 573 1 5 574 1 5 575 1 5 576 1 5 577 1 5 578 1 5 579 1 5 580 1 5 581 1 5 582 1 5 583 1 5 584 1 5 585 1 5 586 1 5 587 1 5 588 1 5 589 1 5 590 1 5 591 1 5 592 1 5 593 1 5 594 1 5 595 1 5 596 1 5 667 1 5 668 1 5 669 1 5 670 1 5 671 1 5 672 1 5 673 1 5 674 1 5 675 1 5 676 1 5 677 1 5 678 1 5 679 1 5 680 1 5 681 1 5 682 1 5 683 1 5 684 1 5 685 1 5 686 1 5 687 1 5 688 1 5 689 1 5 690 1 5 691 1 5 692 1 5 693 1 5 694 1 5 695 1 5 696 1 5 697 1 5 698 1 5 699 1 5 700 1 5 701 1 5 702 1 5 703 1 5 704 1 5 705 1 5 706 1 5 707 1 5 708 1 5 709 1 5 710 1 5 711 1 5 712 1 5 713 1 5 714 1 5 715 1 5 716 1 5 717 1 5 718 1 5 719 1 5 720 1 5 721 1 5 722 1 5 723 1 5 724 1 5 725 1 5 726 1 5 727 1 5 728 1 5 729 1 5 730 1 5 731 1 5 732 1 5 733 1 5 734 1 5 735 1 5 736 1 5 793 1 5 794 1 5 795 1 5 796 1 5 797 1 5 798 1 5 799 1 5 800 1 5 801 1 5 802 1 5 803 1 5 804 1 5 805 1 5 806 1 5 807 1 5 808 1 5 809 1 5 810 1 5 811 1 5 812 1 5 813 1 5 814 1 5 815 1 5 816 1 5 817 1 5 818 1 5 819 1 5 820 1 5 877 1 5 878 1 5 879 1 5 880 1 5 881 1 5 882 1 5 883 1 5 884 1 5 885 1 5 886 1 5 887 1 5 888 1 5 889 1 5 890 1 5 891 1 5 892 1 5 893 1 5 894 1 5 895 1 5 896 1 5 897 1 5 898 1 5 899 1 5 900 1 5 901 1 5 902 1 5 903 1 5 904 1 5 905 1 5 906 1 5 907 1 5 908 1 5 909 1 5 910 1 5 911 1 5 912 1 5 913 1 5 914 1 5 915 1 5 916 1 5 917 1 5 918 1 5 919 1 5 920 1 5 921 1 5 922 1 5 923 1 5 924 1 5 925 1 5 926 1 5 927 1 5 928 1 5 929 1 5 930 1 5 931 1 5 932 1 5 1003 1 5 1004 1 5 1005 1 5 1006 1 5 1007 1 5 1008 1 5 1009 1 5 1010 1 5 1011 1 5 1012 1 5 1013 1 5 1014 1 5 1015 1 5 1016 1 5 1017 1 5 1018 1 5 1019 1 5 1020 1 5 1021 1 5 1022 1 5 1023 1 5 1024 1 5 1025 1 5 1026 1 5 1027 1 5 1028 1 5 1029 1 5 1030 1 5 1031 1 5 1032 1 5 1033 1 5 1034 1 5 1035 1 5 1036 1 5 1037 1 5 1038 1 5 1039 1 5 1040 1 5 1041 1 5 1042 1 5 1043 1 5 1044 1 5 1045 1 5 1046 1 5 1047 1 5 1048 1 5 1049 1 5 1050 1 5 1051 1 5 1052 1 5 1053 1 5 1054 1 5 1055 1 5 1056 1 5 1057 1 5 1058 1 5 1129 1 5 1130 1 5 1131 1 5 1132 1 5 1133 1 5 1134 1 5 1135 1 5 1136 1 5 1137 1 5 1138 1 5 1139 1 5 1140 1 5 1141 1 5 1142 1 5 1143 1 5 1144 1 5 1145 1 5 1146 1 5 1147 1 5 1148 1 5 1149 1 5 1150 1 5 1151 1 5 1152 1 5 1153 1 5 1154 1 5 1155 1 5 1156 1 5 1157 1 5 1158 1 5 1159 1 5 1160 1 5 1161 1 5 1162 1 5 1163 1 5 1164 1 5 1165 1 5 1166 1 5 1167 1 5 1168 1 5 1169 1 5 1170 1 5 1171 1 5 1172 1 5 1173 1 5 1174 1 5 1175 1 5 1176 1 5 1177 1 5 1178 1 5 1179 1 5 1180 1 5 1181 1 5 1182 1 5 1183 1 5 1184 1 5 1185 1 5 1186 1 5 1187 1 5 1188 1 5 1189 1 5 1190 1 5 1191 1 5 1192 1 5 1193 1 5 1194 1 5 1195 1 5 1196 1 5 1197 1 5 1198 1 5 1255 1 5 1256 1 5 1257 1 5 1258 1 5 1259 1 5 1260 1 5 1261 1 5 1262 1 5 1263 1 5 1264 1 5 1265 1 5 1266 1 5 1267 1 5 1268 1 5 1269 1 5 1270 1 5 1271 1 5 1272 1 5 1273 1 5 1274 1 5 1275 1 5 1276 1 5 1277 1 5 1278 1 5 1279 1 5 1280 1 5 1281 1 5 1282 1 5 1283 1 5 1284 1 5 1285 1 5 1286 1 5 1287 1 5 1288 1 5 1289 1 5 1290 1 5 1291 1 5 1292 1 5 1293 1 5 1294 1 5 1295 1 5 1296 1 5 1297 1 5 1298 1 5 1299 1 5 1300 1 5 1301 1 5 1302 1 5 1303 1 5 1304 1 5 1305 1 5 1306 1 5 1307 1 5 1308 1 5 1309 1 5 1310 1 5 1381 1 5 1382 1 5 1383 1 5 1384 1 5 1385 1 5 1386 1 5 1387 1 5 1388 1 5 1389 1 5 1390 1 5 1391 1 5 1392 1 5 1393 1 5 1394 1 5 1395 1 5 1396 1 5 1397 1 5 1398 1 5 1399 1 5 1400 1 5 1401 1 5 1402 1 5 1403 1 5 1404 1 5 1405 1 5 1406 1 5 1407 1 5 1408 1 5 1409 1 5 1410 1 5 1411 1 5 1412 1 5 1413 1 5 1414 1 5 1415 1 5 1416 1 5 1417 1 5 1418 1 5 1419 1 5 1420 1 5 1421 1 5 1422 1 5 1423 1 5 1424 1 5 1425 1 5 1426 1 5 1427 1 5 1428 1 5 1429 1 5 1430 1 5 1431 1 5 1432 1 5 1433 1 5 1434 1 5 1435 1 5 1436 1 5 1437 1 5 1438 1 5 1439 1 5 1440 1 5 1441 1 5 1442 1 5 1443 1 5 1444 1 5 1445 1 5 1446 1 5 1447 1 5 1448 1 5 1449 1 5 1450 1 5 1507 1 5 1508 1 5 1509 1 5 1510 1 5 1511 1 5 1512 1 5 1513 1 5 1514 1 5 1515 1 5 1516 1 5 1517 1 5 1518 1 5 1519 1 5 1520 1 5 1521 1 5 1522 1 5 1523 1 5 1524 1 5 1525 1 5 1526 1 5 1527 1 5 1528 1 5 1529 1 5 1530 1 5 1531 1 5 1532 1 5 1533 1 5 1534 1 5 1535 1 5 1536 1 5 1537 1 5 1538 1 5 1539 1 5 1540 1 5 1541 1 5 1542 1 5 1543 1 5 1544 1 5 1545 1 5 1546 1 5 1547 1 5 1548 1 5 1549 1 5 1550 1 5 1551 1 5 1552 1 5 1553 1 5 1554 1 5 1555 1 5 1556 1 5 1557 1 5 1558 1 5 1559 1 5 1560 1 5 1561 1 5 1562 1 5 1563 1 5 1564 1 5 1565 1 5 1566 1 5 1567 1 5 1568 1 5 1569 1 5 1570 1 5 1571 1 5 1572 1 5 1573 1 5 1574 1 5 1575 1 5 1576 1 5 1633 1 5 1634 1 5 1635 1 5 1636 1 5 1637 1 5 1638 1 5 1639 1 5 1640 1 5 1641 1 5 1642 1 5 1643 1 5 1644 1 5 1645 1 5 1646 1 5 1647 1 5 1648 1 5 1649 1 5 1650 1 5 1651 1 5 1652 1 5 1653 1 5 1654 1 5 1655 1 5 1656 1 5 1657 1 5 1658 1 5 1659 1 5 1660 1 5 1661 1 5 1662 1 5 1663 1 5 1664 1 5 1665 1 5 1666 1 5 1667 1 5 1668 1 5 1669 1 5 1670 1 5 1671 1 5 1672 1 5 1673 1 5 1674 1 5 1675 1 5 1676 1 5 1677 1 5 1678 1 5 1679 1 5 1680 1 5 1681 1 5 1682 1 5 1683 1 5 1684 1 5 1685 1 5 1686 1 5 1687 1 5 1688 1 6 1 1 6 9 1 6 10 1 6 11 1 6 12 1 6 13 1 6 14 1 6 15 1 6 37 1 6 38 1 6 39 1 6 40 1 6 41 1 6 42 1 6 43 1 6 65 1 6 66 1 6 67 1 6 68 1 6 69 1 6 70 1 6 71 1 6 72 1 6 73 1 6 74 1 6 75 1 6 76 1 6 77 1 6 78 1 6 79 1 6 80 1 6 81 1 6 82 1 6 83 1 6 84 1 6 85 1 6 121 1 6 122 1 6 123 1 6 124 1 6 125 1 6 126 1 6 127 1 6 149 1 6 150 1 6 151 1 6 152 1 6 153 1 6 154 1 6 155 1 6 156 1 6 157 1 6 158 1 6 159 1 6 160 1 6 161 1 6 162 1 6 163 1 6 164 1 6 165 1 6 166 1 6 167 1 6 168 1 6 169 1 6 205 1 6 206 1 6 207 1 6 208 1 6 209 1 6 210 1 6 211 1 6 212 1 6 213 1 6 214 1 6 215 1 6 216 1 6 217 1 6 218 1 6 219 1 6 220 1 6 221 1 6 222 1 6 223 1 6 224 1 6 225 1 6 261 1 6 262 1 6 263 1 6 264 1 6 265 1 6 266 1 6 267 1 6 268 1 6 269 1 6 270 1 6 271 1 6 272 1 6 273 1 6 274 1 6 275 1 6 276 1 6 277 1 6 278 1 6 279 1 6 280 1 6 281 1 6 282 1 6 283 1 6 284 1 6 285 1 6 286 1 6 287 1 6 288 1 6 289 1 6 290 1 6 291 1 6 292 1 6 293 1 6 294 1 6 295 1 6 331 1 6 332 1 6 333 1 6 334 1 6 335 1 6 336 1 6 337 1 6 359 1 6 360 1 6 361 1 6 362 1 6 363 1 6 364 1 6 365 1 6 366 1 6 367 1 6 368 1 6 369 1 6 370 1 6 371 1 6 372 1 6 373 1 6 374 1 6 375 1 6 376 1 6 377 1 6 378 1 6 379 1 6 415 1 6 416 1 6 417 1 6 418 1 6 419 1 6 420 1 6 421 1 6 422 1 6 423 1 6 424 1 6 425 1 6 426 1 6 427 1 6 428 1 6 429 1 6 430 1 6 431 1 6 432 1 6 433 1 6 434 1 6 435 1 6 471 1 6 472 1 6 473 1 6 474 1 6 475 1 6 476 1 6 477 1 6 478 1 6 479 1 6 480 1 6 481 1 6 482 1 6 483 1 6 484 1 6 485 1 6 486 1 6 487 1 6 488 1 6 489 1 6 490 1 6 491 1 6 492 1 6 493 1 6 494 1 6 495 1 6 496 1 6 497 1 6 498 1 6 499 1 6 500 1 6 501 1 6 502 1 6 503 1 6 504 1 6 505 1 6 541 1 6 542 1 6 543 1 6 544 1 6 545 1 6 546 1 6 547 1 6 548 1 6 549 1 6 550 1 6 551 1 6 552 1 6 553 1 6 554 1 6 555 1 6 556 1 6 557 1 6 558 1 6 559 1 6 560 1 6 561 1 6 597 1 6 598 1 6 599 1 6 600 1 6 601 1 6 602 1 6 603 1 6 604 1 6 605 1 6 606 1 6 607 1 6 608 1 6 609 1 6 610 1 6 611 1 6 612 1 6 613 1 6 614 1 6 615 1 6 616 1 6 617 1 6 618 1 6 619 1 6 620 1 6 621 1 6 622 1 6 623 1 6 624 1 6 625 1 6 626 1 6 627 1 6 628 1 6 629 1 6 630 1 6 631 1 6 667 1 6 668 1 6 669 1 6 670 1 6 671 1 6 672 1 6 673 1 6 674 1 6 675 1 6 676 1 6 677 1 6 678 1 6 679 1 6 680 1 6 681 1 6 682 1 6 683 1 6 684 1 6 685 1 6 686 1 6 687 1 6 688 1 6 689 1 6 690 1 6 691 1 6 692 1 6 693 1 6 694 1 6 695 1 6 696 1 6 697 1 6 698 1 6 699 1 6 700 1 6 701 1 6 737 1 6 738 1 6 739 1 6 740 1 6 741 1 6 742 1 6 743 1 6 744 1 6 745 1 6 746 1 6 747 1 6 748 1 6 749 1 6 750 1 6 751 1 6 752 1 6 753 1 6 754 1 6 755 1 6 756 1 6 757 1 6 758 1 6 759 1 6 760 1 6 761 1 6 762 1 6 763 1 6 764 1 6 765 1 6 766 1 6 767 1 6 768 1 6 769 1 6 770 1 6 771 1 6 793 1 6 794 1 6 795 1 6 796 1 6 797 1 6 798 1 6 799 1 6 821 1 6 822 1 6 823 1 6 824 1 6 825 1 6 826 1 6 827 1 6 828 1 6 829 1 6 830 1 6 831 1 6 832 1 6 833 1 6 834 1 6 835 1 6 836 1 6 837 1 6 838 1 6 839 1 6 840 1 6 841 1 6 877 1 6 878 1 6 879 1 6 880 1 6 881 1 6 882 1 6 883 1 6 884 1 6 885 1 6 886 1 6 887 1 6 888 1 6 889 1 6 890 1 6 891 1 6 892 1 6 893 1 6 894 1 6 895 1 6 896 1 6 897 1 6 933 1 6 934 1 6 935 1 6 936 1 6 937 1 6 938 1 6 939 1 6 940 1 6 941 1 6 942 1 6 943 1 6 944 1 6 945 1 6 946 1 6 947 1 6 948 1 6 949 1 6 950 1 6 951 1 6 952 1 6 953 1 6 954 1 6 955 1 6 956 1 6 957 1 6 958 1 6 959 1 6 960 1 6 961 1 6 962 1 6 963 1 6 964 1 6 965 1 6 966 1 6 967 1 6 1003 1 6 1004 1 6 1005 1 6 1006 1 6 1007 1 6 1008 1 6 1009 1 6 1010 1 6 1011 1 6 1012 1 6 1013 1 6 1014 1 6 1015 1 6 1016 1 6 1017 1 6 1018 1 6 1019 1 6 1020 1 6 1021 1 6 1022 1 6 1023 1 6 1059 1 6 1060 1 6 1061 1 6 1062 1 6 1063 1 6 1064 1 6 1065 1 6 1066 1 6 1067 1 6 1068 1 6 1069 1 6 1070 1 6 1071 1 6 1072 1 6 1073 1 6 1074 1 6 1075 1 6 1076 1 6 1077 1 6 1078 1 6 1079 1 6 1080 1 6 1081 1 6 1082 1 6 1083 1 6 1084 1 6 1085 1 6 1086 1 6 1087 1 6 1088 1 6 1089 1 6 1090 1 6 1091 1 6 1092 1 6 1093 1 6 1129 1 6 1130 1 6 1131 1 6 1132 1 6 1133 1 6 1134 1 6 1135 1 6 1136 1 6 1137 1 6 1138 1 6 1139 1 6 1140 1 6 1141 1 6 1142 1 6 1143 1 6 1144 1 6 1145 1 6 1146 1 6 1147 1 6 1148 1 6 1149 1 6 1150 1 6 1151 1 6 1152 1 6 1153 1 6 1154 1 6 1155 1 6 1156 1 6 1157 1 6 1158 1 6 1159 1 6 1160 1 6 1161 1 6 1162 1 6 1163 1 6 1199 1 6 1200 1 6 1201 1 6 1202 1 6 1203 1 6 1204 1 6 1205 1 6 1206 1 6 1207 1 6 1208 1 6 1209 1 6 1210 1 6 1211 1 6 1212 1 6 1213 1 6 1214 1 6 1215 1 6 1216 1 6 1217 1 6 1218 1 6 1219 1 6 1220 1 6 1221 1 6 1222 1 6 1223 1 6 1224 1 6 1225 1 6 1226 1 6 1227 1 6 1228 1 6 1229 1 6 1230 1 6 1231 1 6 1232 1 6 1233 1 6 1255 1 6 1256 1 6 1257 1 6 1258 1 6 1259 1 6 1260 1 6 1261 1 6 1262 1 6 1263 1 6 1264 1 6 1265 1 6 1266 1 6 1267 1 6 1268 1 6 1269 1 6 1270 1 6 1271 1 6 1272 1 6 1273 1 6 1274 1 6 1275 1 6 1311 1 6 1312 1 6 1313 1 6 1314 1 6 1315 1 6 1316 1 6 1317 1 6 1318 1 6 1319 1 6 1320 1 6 1321 1 6 1322 1 6 1323 1 6 1324 1 6 1325 1 6 1326 1 6 1327 1 6 1328 1 6 1329 1 6 1330 1 6 1331 1 6 1332 1 6 1333 1 6 1334 1 6 1335 1 6 1336 1 6 1337 1 6 1338 1 6 1339 1 6 1340 1 6 1341 1 6 1342 1 6 1343 1 6 1344 1 6 1345 1 6 1381 1 6 1382 1 6 1383 1 6 1384 1 6 1385 1 6 1386 1 6 1387 1 6 1388 1 6 1389 1 6 1390 1 6 1391 1 6 1392 1 6 1393 1 6 1394 1 6 1395 1 6 1396 1 6 1397 1 6 1398 1 6 1399 1 6 1400 1 6 1401 1 6 1402 1 6 1403 1 6 1404 1 6 1405 1 6 1406 1 6 1407 1 6 1408 1 6 1409 1 6 1410 1 6 1411 1 6 1412 1 6 1413 1 6 1414 1 6 1415 1 6 1451 1 6 1452 1 6 1453 1 6 1454 1 6 1455 1 6 1456 1 6 1457 1 6 1458 1 6 1459 1 6 1460 1 6 1461 1 6 1462 1 6 1463 1 6 1464 1 6 1465 1 6 1466 1 6 1467 1 6 1468 1 6 1469 1 6 1470 1 6 1471 1 6 1472 1 6 1473 1 6 1474 1 6 1475 1 6 1476 1 6 1477 1 6 1478 1 6 1479 1 6 1480 1 6 1481 1 6 1482 1 6 1483 1 6 1484 1 6 1485 1 6 1507 1 6 1508 1 6 1509 1 6 1510 1 6 1511 1 6 1512 1 6 1513 1 6 1514 1 6 1515 1 6 1516 1 6 1517 1 6 1518 1 6 1519 1 6 1520 1 6 1521 1 6 1522 1 6 1523 1 6 1524 1 6 1525 1 6 1526 1 6 1527 1 6 1528 1 6 1529 1 6 1530 1 6 1531 1 6 1532 1 6 1533 1 6 1534 1 6 1535 1 6 1536 1 6 1537 1 6 1538 1 6 1539 1 6 1540 1 6 1541 1 6 1577 1 6 1578 1 6 1579 1 6 1580 1 6 1581 1 6 1582 1 6 1583 1 6 1584 1 6 1585 1 6 1586 1 6 1587 1 6 1588 1 6 1589 1 6 1590 1 6 1591 1 6 1592 1 6 1593 1 6 1594 1 6 1595 1 6 1596 1 6 1597 1 6 1598 1 6 1599 1 6 1600 1 6 1601 1 6 1602 1 6 1603 1 6 1604 1 6 1605 1 6 1606 1 6 1607 1 6 1608 1 6 1609 1 6 1610 1 6 1611 1 6 1633 1 6 1634 1 6 1635 1 6 1636 1 6 1637 1 6 1638 1 6 1639 1 6 1640 1 6 1641 1 6 1642 1 6 1643 1 6 1644 1 6 1645 1 6 1646 1 6 1647 1 6 1648 1 6 1649 1 6 1650 1 6 1651 1 6 1652 1 6 1653 1 6 1654 1 6 1655 1 6 1656 1 6 1657 1 6 1658 1 6 1659 1 6 1660 1 6 1661 1 6 1662 1 6 1663 1 6 1664 1 6 1665 1 6 1666 1 6 1667 1 6 1689 1 6 1690 1 6 1691 1 6 1692 1 6 1693 1 6 1694 1 6 1695 1 6 1696 1 6 1697 1 6 1698 1 6 1699 1 6 1700 1 6 1701 1 6 1702 1 6 1703 1 6 1704 1 6 1705 1 6 1706 1 6 1707 1 6 1708 1 6 1709 1 7 2 1 7 9 1 7 16 1 7 17 1 7 18 1 7 19 1 7 20 1 7 21 1 7 37 1 7 44 1 7 45 1 7 46 1 7 47 1 7 48 1 7 49 1 7 65 1 7 66 1 7 67 1 7 68 1 7 69 1 7 70 1 7 86 1 7 87 1 7 88 1 7 89 1 7 90 1 7 91 1 7 92 1 7 93 1 7 94 1 7 95 1 7 96 1 7 97 1 7 98 1 7 99 1 7 100 1 7 121 1 7 128 1 7 129 1 7 130 1 7 131 1 7 132 1 7 133 1 7 149 1 7 150 1 7 151 1 7 152 1 7 153 1 7 154 1 7 170 1 7 171 1 7 172 1 7 173 1 7 174 1 7 175 1 7 176 1 7 177 1 7 178 1 7 179 1 7 180 1 7 181 1 7 182 1 7 183 1 7 184 1 7 205 1 7 206 1 7 207 1 7 208 1 7 209 1 7 210 1 7 226 1 7 227 1 7 228 1 7 229 1 7 230 1 7 231 1 7 232 1 7 233 1 7 234 1 7 235 1 7 236 1 7 237 1 7 238 1 7 239 1 7 240 1 7 261 1 7 262 1 7 263 1 7 264 1 7 265 1 7 266 1 7 267 1 7 268 1 7 269 1 7 270 1 7 271 1 7 272 1 7 273 1 7 274 1 7 275 1 7 296 1 7 297 1 7 298 1 7 299 1 7 300 1 7 301 1 7 302 1 7 303 1 7 304 1 7 305 1 7 306 1 7 307 1 7 308 1 7 309 1 7 310 1 7 311 1 7 312 1 7 313 1 7 314 1 7 315 1 7 331 1 7 338 1 7 339 1 7 340 1 7 341 1 7 342 1 7 343 1 7 359 1 7 360 1 7 361 1 7 362 1 7 363 1 7 364 1 7 380 1 7 381 1 7 382 1 7 383 1 7 384 1 7 385 1 7 386 1 7 387 1 7 388 1 7 389 1 7 390 1 7 391 1 7 392 1 7 393 1 7 394 1 7 415 1 7 416 1 7 417 1 7 418 1 7 419 1 7 420 1 7 436 1 7 437 1 7 438 1 7 439 1 7 440 1 7 441 1 7 442 1 7 443 1 7 444 1 7 445 1 7 446 1 7 447 1 7 448 1 7 449 1 7 450 1 7 471 1 7 472 1 7 473 1 7 474 1 7 475 1 7 476 1 7 477 1 7 478 1 7 479 1 7 480 1 7 481 1 7 482 1 7 483 1 7 484 1 7 485 1 7 506 1 7 507 1 7 508 1 7 509 1 7 510 1 7 511 1 7 512 1 7 513 1 7 514 1 7 515 1 7 516 1 7 517 1 7 518 1 7 519 1 7 520 1 7 521 1 7 522 1 7 523 1 7 524 1 7 525 1 7 541 1 7 542 1 7 543 1 7 544 1 7 545 1 7 546 1 7 562 1 7 563 1 7 564 1 7 565 1 7 566 1 7 567 1 7 568 1 7 569 1 7 570 1 7 571 1 7 572 1 7 573 1 7 574 1 7 575 1 7 576 1 7 597 1 7 598 1 7 599 1 7 600 1 7 601 1 7 602 1 7 603 1 7 604 1 7 605 1 7 606 1 7 607 1 7 608 1 7 609 1 7 610 1 7 611 1 7 632 1 7 633 1 7 634 1 7 635 1 7 636 1 7 637 1 7 638 1 7 639 1 7 640 1 7 641 1 7 642 1 7 643 1 7 644 1 7 645 1 7 646 1 7 647 1 7 648 1 7 649 1 7 650 1 7 651 1 7 667 1 7 668 1 7 669 1 7 670 1 7 671 1 7 672 1 7 673 1 7 674 1 7 675 1 7 676 1 7 677 1 7 678 1 7 679 1 7 680 1 7 681 1 7 702 1 7 703 1 7 704 1 7 705 1 7 706 1 7 707 1 7 708 1 7 709 1 7 710 1 7 711 1 7 712 1 7 713 1 7 714 1 7 715 1 7 716 1 7 717 1 7 718 1 7 719 1 7 720 1 7 721 1 7 737 1 7 738 1 7 739 1 7 740 1 7 741 1 7 742 1 7 743 1 7 744 1 7 745 1 7 746 1 7 747 1 7 748 1 7 749 1 7 750 1 7 751 1 7 752 1 7 753 1 7 754 1 7 755 1 7 756 1 7 772 1 7 773 1 7 774 1 7 775 1 7 776 1 7 777 1 7 778 1 7 779 1 7 780 1 7 781 1 7 782 1 7 783 1 7 784 1 7 785 1 7 786 1 7 793 1 7 800 1 7 801 1 7 802 1 7 803 1 7 804 1 7 805 1 7 821 1 7 822 1 7 823 1 7 824 1 7 825 1 7 826 1 7 842 1 7 843 1 7 844 1 7 845 1 7 846 1 7 847 1 7 848 1 7 849 1 7 850 1 7 851 1 7 852 1 7 853 1 7 854 1 7 855 1 7 856 1 7 877 1 7 878 1 7 879 1 7 880 1 7 881 1 7 882 1 7 898 1 7 899 1 7 900 1 7 901 1 7 902 1 7 903 1 7 904 1 7 905 1 7 906 1 7 907 1 7 908 1 7 909 1 7 910 1 7 911 1 7 912 1 7 933 1 7 934 1 7 935 1 7 936 1 7 937 1 7 938 1 7 939 1 7 940 1 7 941 1 7 942 1 7 943 1 7 944 1 7 945 1 7 946 1 7 947 1 7 968 1 7 969 1 7 970 1 7 971 1 7 972 1 7 973 1 7 974 1 7 975 1 7 976 1 7 977 1 7 978 1 7 979 1 7 980 1 7 981 1 7 982 1 7 983 1 7 984 1 7 985 1 7 986 1 7 987 1 7 1003 1 7 1004 1 7 1005 1 7 1006 1 7 1007 1 7 1008 1 7 1024 1 7 1025 1 7 1026 1 7 1027 1 7 1028 1 7 1029 1 7 1030 1 7 1031 1 7 1032 1 7 1033 1 7 1034 1 7 1035 1 7 1036 1 7 1037 1 7 1038 1 7 1059 1 7 1060 1 7 1061 1 7 1062 1 7 1063 1 7 1064 1 7 1065 1 7 1066 1 7 1067 1 7 1068 1 7 1069 1 7 1070 1 7 1071 1 7 1072 1 7 1073 1 7 1094 1 7 1095 1 7 1096 1 7 1097 1 7 1098 1 7 1099 1 7 1100 1 7 1101 1 7 1102 1 7 1103 1 7 1104 1 7 1105 1 7 1106 1 7 1107 1 7 1108 1 7 1109 1 7 1110 1 7 1111 1 7 1112 1 7 1113 1 7 1129 1 7 1130 1 7 1131 1 7 1132 1 7 1133 1 7 1134 1 7 1135 1 7 1136 1 7 1137 1 7 1138 1 7 1139 1 7 1140 1 7 1141 1 7 1142 1 7 1143 1 7 1164 1 7 1165 1 7 1166 1 7 1167 1 7 1168 1 7 1169 1 7 1170 1 7 1171 1 7 1172 1 7 1173 1 7 1174 1 7 1175 1 7 1176 1 7 1177 1 7 1178 1 7 1179 1 7 1180 1 7 1181 1 7 1182 1 7 1183 1 7 1199 1 7 1200 1 7 1201 1 7 1202 1 7 1203 1 7 1204 1 7 1205 1 7 1206 1 7 1207 1 7 1208 1 7 1209 1 7 1210 1 7 1211 1 7 1212 1 7 1213 1 7 1214 1 7 1215 1 7 1216 1 7 1217 1 7 1218 1 7 1234 1 7 1235 1 7 1236 1 7 1237 1 7 1238 1 7 1239 1 7 1240 1 7 1241 1 7 1242 1 7 1243 1 7 1244 1 7 1245 1 7 1246 1 7 1247 1 7 1248 1 7 1255 1 7 1256 1 7 1257 1 7 1258 1 7 1259 1 7 1260 1 7 1276 1 7 1277 1 7 1278 1 7 1279 1 7 1280 1 7 1281 1 7 1282 1 7 1283 1 7 1284 1 7 1285 1 7 1286 1 7 1287 1 7 1288 1 7 1289 1 7 1290 1 7 1311 1 7 1312 1 7 1313 1 7 1314 1 7 1315 1 7 1316 1 7 1317 1 7 1318 1 7 1319 1 7 1320 1 7 1321 1 7 1322 1 7 1323 1 7 1324 1 7 1325 1 7 1346 1 7 1347 1 7 1348 1 7 1349 1 7 1350 1 7 1351 1 7 1352 1 7 1353 1 7 1354 1 7 1355 1 7 1356 1 7 1357 1 7 1358 1 7 1359 1 7 1360 1 7 1361 1 7 1362 1 7 1363 1 7 1364 1 7 1365 1 7 1381 1 7 1382 1 7 1383 1 7 1384 1 7 1385 1 7 1386 1 7 1387 1 7 1388 1 7 1389 1 7 1390 1 7 1391 1 7 1392 1 7 1393 1 7 1394 1 7 1395 1 7 1416 1 7 1417 1 7 1418 1 7 1419 1 7 1420 1 7 1421 1 7 1422 1 7 1423 1 7 1424 1 7 1425 1 7 1426 1 7 1427 1 7 1428 1 7 1429 1 7 1430 1 7 1431 1 7 1432 1 7 1433 1 7 1434 1 7 1435 1 7 1451 1 7 1452 1 7 1453 1 7 1454 1 7 1455 1 7 1456 1 7 1457 1 7 1458 1 7 1459 1 7 1460 1 7 1461 1 7 1462 1 7 1463 1 7 1464 1 7 1465 1 7 1466 1 7 1467 1 7 1468 1 7 1469 1 7 1470 1 7 1486 1 7 1487 1 7 1488 1 7 1489 1 7 1490 1 7 1491 1 7 1492 1 7 1493 1 7 1494 1 7 1495 1 7 1496 1 7 1497 1 7 1498 1 7 1499 1 7 1500 1 7 1507 1 7 1508 1 7 1509 1 7 1510 1 7 1511 1 7 1512 1 7 1513 1 7 1514 1 7 1515 1 7 1516 1 7 1517 1 7 1518 1 7 1519 1 7 1520 1 7 1521 1 7 1542 1 7 1543 1 7 1544 1 7 1545 1 7 1546 1 7 1547 1 7 1548 1 7 1549 1 7 1550 1 7 1551 1 7 1552 1 7 1553 1 7 1554 1 7 1555 1 7 1556 1 7 1557 1 7 1558 1 7 1559 1 7 1560 1 7 1561 1 7 1577 1 7 1578 1 7 1579 1 7 1580 1 7 1581 1 7 1582 1 7 1583 1 7 1584 1 7 1585 1 7 1586 1 7 1587 1 7 1588 1 7 1589 1 7 1590 1 7 1591 1 7 1592 1 7 1593 1 7 1594 1 7 1595 1 7 1596 1 7 1612 1 7 1613 1 7 1614 1 7 1615 1 7 1616 1 7 1617 1 7 1618 1 7 1619 1 7 1620 1 7 1621 1 7 1622 1 7 1623 1 7 1624 1 7 1625 1 7 1626 1 7 1633 1 7 1634 1 7 1635 1 7 1636 1 7 1637 1 7 1638 1 7 1639 1 7 1640 1 7 1641 1 7 1642 1 7 1643 1 7 1644 1 7 1645 1 7 1646 1 7 1647 1 7 1648 1 7 1649 1 7 1650 1 7 1651 1 7 1652 1 7 1668 1 7 1669 1 7 1670 1 7 1671 1 7 1672 1 7 1673 1 7 1674 1 7 1675 1 7 1676 1 7 1677 1 7 1678 1 7 1679 1 7 1680 1 7 1681 1 7 1682 1 7 1689 1 7 1690 1 7 1691 1 7 1692 1 7 1693 1 7 1694 1 7 1695 1 7 1696 1 7 1697 1 7 1698 1 7 1699 1 7 1700 1 7 1701 1 7 1702 1 7 1703 1 7 1710 1 7 1711 1 7 1712 1 7 1713 1 7 1714 1 7 1715 1 8 3 1 8 10 1 8 16 1 8 22 1 8 23 1 8 24 1 8 25 1 8 26 1 8 38 1 8 44 1 8 50 1 8 51 1 8 52 1 8 53 1 8 54 1 8 65 1 8 71 1 8 72 1 8 73 1 8 74 1 8 75 1 8 86 1 8 87 1 8 88 1 8 89 1 8 90 1 8 101 1 8 102 1 8 103 1 8 104 1 8 105 1 8 106 1 8 107 1 8 108 1 8 109 1 8 110 1 8 122 1 8 128 1 8 134 1 8 135 1 8 136 1 8 137 1 8 138 1 8 149 1 8 155 1 8 156 1 8 157 1 8 158 1 8 159 1 8 170 1 8 171 1 8 172 1 8 173 1 8 174 1 8 185 1 8 186 1 8 187 1 8 188 1 8 189 1 8 190 1 8 191 1 8 192 1 8 193 1 8 194 1 8 205 1 8 211 1 8 212 1 8 213 1 8 214 1 8 215 1 8 226 1 8 227 1 8 228 1 8 229 1 8 230 1 8 241 1 8 242 1 8 243 1 8 244 1 8 245 1 8 246 1 8 247 1 8 248 1 8 249 1 8 250 1 8 261 1 8 262 1 8 263 1 8 264 1 8 265 1 8 276 1 8 277 1 8 278 1 8 279 1 8 280 1 8 281 1 8 282 1 8 283 1 8 284 1 8 285 1 8 296 1 8 297 1 8 298 1 8 299 1 8 300 1 8 301 1 8 302 1 8 303 1 8 304 1 8 305 1 8 316 1 8 317 1 8 318 1 8 319 1 8 320 1 8 321 1 8 322 1 8 323 1 8 324 1 8 325 1 8 332 1 8 338 1 8 344 1 8 345 1 8 346 1 8 347 1 8 348 1 8 359 1 8 365 1 8 366 1 8 367 1 8 368 1 8 369 1 8 380 1 8 381 1 8 382 1 8 383 1 8 384 1 8 395 1 8 396 1 8 397 1 8 398 1 8 399 1 8 400 1 8 401 1 8 402 1 8 403 1 8 404 1 8 415 1 8 421 1 8 422 1 8 423 1 8 424 1 8 425 1 8 436 1 8 437 1 8 438 1 8 439 1 8 440 1 8 451 1 8 452 1 8 453 1 8 454 1 8 455 1 8 456 1 8 457 1 8 458 1 8 459 1 8 460 1 8 471 1 8 472 1 8 473 1 8 474 1 8 475 1 8 486 1 8 487 1 8 488 1 8 489 1 8 490 1 8 491 1 8 492 1 8 493 1 8 494 1 8 495 1 8 506 1 8 507 1 8 508 1 8 509 1 8 510 1 8 511 1 8 512 1 8 513 1 8 514 1 8 515 1 8 526 1 8 527 1 8 528 1 8 529 1 8 530 1 8 531 1 8 532 1 8 533 1 8 534 1 8 535 1 8 541 1 8 547 1 8 548 1 8 549 1 8 550 1 8 551 1 8 562 1 8 563 1 8 564 1 8 565 1 8 566 1 8 577 1 8 578 1 8 579 1 8 580 1 8 581 1 8 582 1 8 583 1 8 584 1 8 585 1 8 586 1 8 597 1 8 598 1 8 599 1 8 600 1 8 601 1 8 612 1 8 613 1 8 614 1 8 615 1 8 616 1 8 617 1 8 618 1 8 619 1 8 620 1 8 621 1 8 632 1 8 633 1 8 634 1 8 635 1 8 636 1 8 637 1 8 638 1 8 639 1 8 640 1 8 641 1 8 652 1 8 653 1 8 654 1 8 655 1 8 656 1 8 657 1 8 658 1 8 659 1 8 660 1 8 661 1 8 667 1 8 668 1 8 669 1 8 670 1 8 671 1 8 682 1 8 683 1 8 684 1 8 685 1 8 686 1 8 687 1 8 688 1 8 689 1 8 690 1 8 691 1 8 702 1 8 703 1 8 704 1 8 705 1 8 706 1 8 707 1 8 708 1 8 709 1 8 710 1 8 711 1 8 722 1 8 723 1 8 724 1 8 725 1 8 726 1 8 727 1 8 728 1 8 729 1 8 730 1 8 731 1 8 737 1 8 738 1 8 739 1 8 740 1 8 741 1 8 742 1 8 743 1 8 744 1 8 745 1 8 746 1 8 757 1 8 758 1 8 759 1 8 760 1 8 761 1 8 762 1 8 763 1 8 764 1 8 765 1 8 766 1 8 772 1 8 773 1 8 774 1 8 775 1 8 776 1 8 777 1 8 778 1 8 779 1 8 780 1 8 781 1 8 787 1 8 788 1 8 789 1 8 790 1 8 791 1 8 794 1 8 800 1 8 806 1 8 807 1 8 808 1 8 809 1 8 810 1 8 821 1 8 827 1 8 828 1 8 829 1 8 830 1 8 831 1 8 842 1 8 843 1 8 844 1 8 845 1 8 846 1 8 857 1 8 858 1 8 859 1 8 860 1 8 861 1 8 862 1 8 863 1 8 864 1 8 865 1 8 866 1 8 877 1 8 883 1 8 884 1 8 885 1 8 886 1 8 887 1 8 898 1 8 899 1 8 900 1 8 901 1 8 902 1 8 913 1 8 914 1 8 915 1 8 916 1 8 917 1 8 918 1 8 919 1 8 920 1 8 921 1 8 922 1 8 933 1 8 934 1 8 935 1 8 936 1 8 937 1 8 948 1 8 949 1 8 950 1 8 951 1 8 952 1 8 953 1 8 954 1 8 955 1 8 956 1 8 957 1 8 968 1 8 969 1 8 970 1 8 971 1 8 972 1 8 973 1 8 974 1 8 975 1 8 976 1 8 977 1 8 988 1 8 989 1 8 990 1 8 991 1 8 992 1 8 993 1 8 994 1 8 995 1 8 996 1 8 997 1 8 1003 1 8 1009 1 8 1010 1 8 1011 1 8 1012 1 8 1013 1 8 1024 1 8 1025 1 8 1026 1 8 1027 1 8 1028 1 8 1039 1 8 1040 1 8 1041 1 8 1042 1 8 1043 1 8 1044 1 8 1045 1 8 1046 1 8 1047 1 8 1048 1 8 1059 1 8 1060 1 8 1061 1 8 1062 1 8 1063 1 8 1074 1 8 1075 1 8 1076 1 8 1077 1 8 1078 1 8 1079 1 8 1080 1 8 1081 1 8 1082 1 8 1083 1 8 1094 1 8 1095 1 8 1096 1 8 1097 1 8 1098 1 8 1099 1 8 1100 1 8 1101 1 8 1102 1 8 1103 1 8 1114 1 8 1115 1 8 1116 1 8 1117 1 8 1118 1 8 1119 1 8 1120 1 8 1121 1 8 1122 1 8 1123 1 8 1129 1 8 1130 1 8 1131 1 8 1132 1 8 1133 1 8 1144 1 8 1145 1 8 1146 1 8 1147 1 8 1148 1 8 1149 1 8 1150 1 8 1151 1 8 1152 1 8 1153 1 8 1164 1 8 1165 1 8 1166 1 8 1167 1 8 1168 1 8 1169 1 8 1170 1 8 1171 1 8 1172 1 8 1173 1 8 1184 1 8 1185 1 8 1186 1 8 1187 1 8 1188 1 8 1189 1 8 1190 1 8 1191 1 8 1192 1 8 1193 1 8 1199 1 8 1200 1 8 1201 1 8 1202 1 8 1203 1 8 1204 1 8 1205 1 8 1206 1 8 1207 1 8 1208 1 8 1219 1 8 1220 1 8 1221 1 8 1222 1 8 1223 1 8 1224 1 8 1225 1 8 1226 1 8 1227 1 8 1228 1 8 1234 1 8 1235 1 8 1236 1 8 1237 1 8 1238 1 8 1239 1 8 1240 1 8 1241 1 8 1242 1 8 1243 1 8 1249 1 8 1250 1 8 1251 1 8 1252 1 8 1253 1 8 1255 1 8 1261 1 8 1262 1 8 1263 1 8 1264 1 8 1265 1 8 1276 1 8 1277 1 8 1278 1 8 1279 1 8 1280 1 8 1291 1 8 1292 1 8 1293 1 8 1294 1 8 1295 1 8 1296 1 8 1297 1 8 1298 1 8 1299 1 8 1300 1 8 1311 1 8 1312 1 8 1313 1 8 1314 1 8 1315 1 8 1326 1 8 1327 1 8 1328 1 8 1329 1 8 1330 1 8 1331 1 8 1332 1 8 1333 1 8 1334 1 8 1335 1 8 1346 1 8 1347 1 8 1348 1 8 1349 1 8 1350 1 8 1351 1 8 1352 1 8 1353 1 8 1354 1 8 1355 1 8 1366 1 8 1367 1 8 1368 1 8 1369 1 8 1370 1 8 1371 1 8 1372 1 8 1373 1 8 1374 1 8 1375 1 8 1381 1 8 1382 1 8 1383 1 8 1384 1 8 1385 1 8 1396 1 8 1397 1 8 1398 1 8 1399 1 8 1400 1 8 1401 1 8 1402 1 8 1403 1 8 1404 1 8 1405 1 8 1416 1 8 1417 1 8 1418 1 8 1419 1 8 1420 1 8 1421 1 8 1422 1 8 1423 1 8 1424 1 8 1425 1 8 1436 1 8 1437 1 8 1438 1 8 1439 1 8 1440 1 8 1441 1 8 1442 1 8 1443 1 8 1444 1 8 1445 1 8 1451 1 8 1452 1 8 1453 1 8 1454 1 8 1455 1 8 1456 1 8 1457 1 8 1458 1 8 1459 1 8 1460 1 8 1471 1 8 1472 1 8 1473 1 8 1474 1 8 1475 1 8 1476 1 8 1477 1 8 1478 1 8 1479 1 8 1480 1 8 1486 1 8 1487 1 8 1488 1 8 1489 1 8 1490 1 8 1491 1 8 1492 1 8 1493 1 8 1494 1 8 1495 1 8 1501 1 8 1502 1 8 1503 1 8 1504 1 8 1505 1 8 1507 1 8 1508 1 8 1509 1 8 1510 1 8 1511 1 8 1522 1 8 1523 1 8 1524 1 8 1525 1 8 1526 1 8 1527 1 8 1528 1 8 1529 1 8 1530 1 8 1531 1 8 1542 1 8 1543 1 8 1544 1 8 1545 1 8 1546 1 8 1547 1 8 1548 1 8 1549 1 8 1550 1 8 1551 1 8 1562 1 8 1563 1 8 1564 1 8 1565 1 8 1566 1 8 1567 1 8 1568 1 8 1569 1 8 1570 1 8 1571 1 8 1577 1 8 1578 1 8 1579 1 8 1580 1 8 1581 1 8 1582 1 8 1583 1 8 1584 1 8 1585 1 8 1586 1 8 1597 1 8 1598 1 8 1599 1 8 1600 1 8 1601 1 8 1602 1 8 1603 1 8 1604 1 8 1605 1 8 1606 1 8 1612 1 8 1613 1 8 1614 1 8 1615 1 8 1616 1 8 1617 1 8 1618 1 8 1619 1 8 1620 1 8 1621 1 8 1627 1 8 1628 1 8 1629 1 8 1630 1 8 1631 1 8 1633 1 8 1634 1 8 1635 1 8 1636 1 8 1637 1 8 1638 1 8 1639 1 8 1640 1 8 1641 1 8 1642 1 8 1653 1 8 1654 1 8 1655 1 8 1656 1 8 1657 1 8 1658 1 8 1659 1 8 1660 1 8 1661 1 8 1662 1 8 1668 1 8 1669 1 8 1670 1 8 1671 1 8 1672 1 8 1673 1 8 1674 1 8 1675 1 8 1676 1 8 1677 1 8 1683 1 8 1684 1 8 1685 1 8 1686 1 8 1687 1 8 1689 1 8 1690 1 8 1691 1 8 1692 1 8 1693 1 8 1694 1 8 1695 1 8 1696 1 8 1697 1 8 1698 1 8 1704 1 8 1705 1 8 1706 1 8 1707 1 8 1708 1 8 1710 1 8 1711 1 8 1712 1 8 1713 1 8 1714 1 8 1716 1 9 4 1 9 11 1 9 17 1 9 22 1 9 27 1 9 28 1 9 29 1 9 30 1 9 39 1 9 45 1 9 50 1 9 55 1 9 56 1 9 57 1 9 58 1 9 66 1 9 71 1 9 76 1 9 77 1 9 78 1 9 79 1 9 86 1 9 91 1 9 92 1 9 93 1 9 94 1 9 101 1 9 102 1 9 103 1 9 104 1 9 111 1 9 112 1 9 113 1 9 114 1 9 115 1 9 116 1 9 123 1 9 129 1 9 134 1 9 139 1 9 140 1 9 141 1 9 142 1 9 150 1 9 155 1 9 160 1 9 161 1 9 162 1 9 163 1 9 170 1 9 175 1 9 176 1 9 177 1 9 178 1 9 185 1 9 186 1 9 187 1 9 188 1 9 195 1 9 196 1 9 197 1 9 198 1 9 199 1 9 200 1 9 206 1 9 211 1 9 216 1 9 217 1 9 218 1 9 219 1 9 226 1 9 231 1 9 232 1 9 233 1 9 234 1 9 241 1 9 242 1 9 243 1 9 244 1 9 251 1 9 252 1 9 253 1 9 254 1 9 255 1 9 256 1 9 261 1 9 266 1 9 267 1 9 268 1 9 269 1 9 276 1 9 277 1 9 278 1 9 279 1 9 286 1 9 287 1 9 288 1 9 289 1 9 290 1 9 291 1 9 296 1 9 297 1 9 298 1 9 299 1 9 306 1 9 307 1 9 308 1 9 309 1 9 310 1 9 311 1 9 316 1 9 317 1 9 318 1 9 319 1 9 320 1 9 321 1 9 326 1 9 327 1 9 328 1 9 329 1 9 333 1 9 339 1 9 344 1 9 349 1 9 350 1 9 351 1 9 352 1 9 360 1 9 365 1 9 370 1 9 371 1 9 372 1 9 373 1 9 380 1 9 385 1 9 386 1 9 387 1 9 388 1 9 395 1 9 396 1 9 397 1 9 398 1 9 405 1 9 406 1 9 407 1 9 408 1 9 409 1 9 410 1 9 416 1 9 421 1 9 426 1 9 427 1 9 428 1 9 429 1 9 436 1 9 441 1 9 442 1 9 443 1 9 444 1 9 451 1 9 452 1 9 453 1 9 454 1 9 461 1 9 462 1 9 463 1 9 464 1 9 465 1 9 466 1 9 471 1 9 476 1 9 477 1 9 478 1 9 479 1 9 486 1 9 487 1 9 488 1 9 489 1 9 496 1 9 497 1 9 498 1 9 499 1 9 500 1 9 501 1 9 506 1 9 507 1 9 508 1 9 509 1 9 516 1 9 517 1 9 518 1 9 519 1 9 520 1 9 521 1 9 526 1 9 527 1 9 528 1 9 529 1 9 530 1 9 531 1 9 536 1 9 537 1 9 538 1 9 539 1 9 542 1 9 547 1 9 552 1 9 553 1 9 554 1 9 555 1 9 562 1 9 567 1 9 568 1 9 569 1 9 570 1 9 577 1 9 578 1 9 579 1 9 580 1 9 587 1 9 588 1 9 589 1 9 590 1 9 591 1 9 592 1 9 597 1 9 602 1 9 603 1 9 604 1 9 605 1 9 612 1 9 613 1 9 614 1 9 615 1 9 622 1 9 623 1 9 624 1 9 625 1 9 626 1 9 627 1 9 632 1 9 633 1 9 634 1 9 635 1 9 642 1 9 643 1 9 644 1 9 645 1 9 646 1 9 647 1 9 652 1 9 653 1 9 654 1 9 655 1 9 656 1 9 657 1 9 662 1 9 663 1 9 664 1 9 665 1 9 667 1 9 672 1 9 673 1 9 674 1 9 675 1 9 682 1 9 683 1 9 684 1 9 685 1 9 692 1 9 693 1 9 694 1 9 695 1 9 696 1 9 697 1 9 702 1 9 703 1 9 704 1 9 705 1 9 712 1 9 713 1 9 714 1 9 715 1 9 716 1 9 717 1 9 722 1 9 723 1 9 724 1 9 725 1 9 726 1 9 727 1 9 732 1 9 733 1 9 734 1 9 735 1 9 737 1 9 738 1 9 739 1 9 740 1 9 747 1 9 748 1 9 749 1 9 750 1 9 751 1 9 752 1 9 757 1 9 758 1 9 759 1 9 760 1 9 761 1 9 762 1 9 767 1 9 768 1 9 769 1 9 770 1 9 772 1 9 773 1 9 774 1 9 775 1 9 776 1 9 777 1 9 782 1 9 783 1 9 784 1 9 785 1 9 787 1 9 788 1 9 789 1 9 790 1 9 792 1 9 795 1 9 801 1 9 806 1 9 811 1 9 812 1 9 813 1 9 814 1 9 822 1 9 827 1 9 832 1 9 833 1 9 834 1 9 835 1 9 842 1 9 847 1 9 848 1 9 849 1 9 850 1 9 857 1 9 858 1 9 859 1 9 860 1 9 867 1 9 868 1 9 869 1 9 870 1 9 871 1 9 872 1 9 878 1 9 883 1 9 888 1 9 889 1 9 890 1 9 891 1 9 898 1 9 903 1 9 904 1 9 905 1 9 906 1 9 913 1 9 914 1 9 915 1 9 916 1 9 923 1 9 924 1 9 925 1 9 926 1 9 927 1 9 928 1 9 933 1 9 938 1 9 939 1 9 940 1 9 941 1 9 948 1 9 949 1 9 950 1 9 951 1 9 958 1 9 959 1 9 960 1 9 961 1 9 962 1 9 963 1 9 968 1 9 969 1 9 970 1 9 971 1 9 978 1 9 979 1 9 980 1 9 981 1 9 982 1 9 983 1 9 988 1 9 989 1 9 990 1 9 991 1 9 992 1 9 993 1 9 998 1 9 999 1 9 1000 1 9 1001 1 9 1004 1 9 1009 1 9 1014 1 9 1015 1 9 1016 1 9 1017 1 9 1024 1 9 1029 1 9 1030 1 9 1031 1 9 1032 1 9 1039 1 9 1040 1 9 1041 1 9 1042 1 9 1049 1 9 1050 1 9 1051 1 9 1052 1 9 1053 1 9 1054 1 9 1059 1 9 1064 1 9 1065 1 9 1066 1 9 1067 1 9 1074 1 9 1075 1 9 1076 1 9 1077 1 9 1084 1 9 1085 1 9 1086 1 9 1087 1 9 1088 1 9 1089 1 9 1094 1 9 1095 1 9 1096 1 9 1097 1 9 1104 1 9 1105 1 9 1106 1 9 1107 1 9 1108 1 9 1109 1 9 1114 1 9 1115 1 9 1116 1 9 1117 1 9 1118 1 9 1119 1 9 1124 1 9 1125 1 9 1126 1 9 1127 1 9 1129 1 9 1134 1 9 1135 1 9 1136 1 9 1137 1 9 1144 1 9 1145 1 9 1146 1 9 1147 1 9 1154 1 9 1155 1 9 1156 1 9 1157 1 9 1158 1 9 1159 1 9 1164 1 9 1165 1 9 1166 1 9 1167 1 9 1174 1 9 1175 1 9 1176 1 9 1177 1 9 1178 1 9 1179 1 9 1184 1 9 1185 1 9 1186 1 9 1187 1 9 1188 1 9 1189 1 9 1194 1 9 1195 1 9 1196 1 9 1197 1 9 1199 1 9 1200 1 9 1201 1 9 1202 1 9 1209 1 9 1210 1 9 1211 1 9 1212 1 9 1213 1 9 1214 1 9 1219 1 9 1220 1 9 1221 1 9 1222 1 9 1223 1 9 1224 1 9 1229 1 9 1230 1 9 1231 1 9 1232 1 9 1234 1 9 1235 1 9 1236 1 9 1237 1 9 1238 1 9 1239 1 9 1244 1 9 1245 1 9 1246 1 9 1247 1 9 1249 1 9 1250 1 9 1251 1 9 1252 1 9 1254 1 9 1256 1 9 1261 1 9 1266 1 9 1267 1 9 1268 1 9 1269 1 9 1276 1 9 1281 1 9 1282 1 9 1283 1 9 1284 1 9 1291 1 9 1292 1 9 1293 1 9 1294 1 9 1301 1 9 1302 1 9 1303 1 9 1304 1 9 1305 1 9 1306 1 9 1311 1 9 1316 1 9 1317 1 9 1318 1 9 1319 1 9 1326 1 9 1327 1 9 1328 1 9 1329 1 9 1336 1 9 1337 1 9 1338 1 9 1339 1 9 1340 1 9 1341 1 9 1346 1 9 1347 1 9 1348 1 9 1349 1 9 1356 1 9 1357 1 9 1358 1 9 1359 1 9 1360 1 9 1361 1 9 1366 1 9 1367 1 9 1368 1 9 1369 1 9 1370 1 9 1371 1 9 1376 1 9 1377 1 9 1378 1 9 1379 1 9 1381 1 9 1386 1 9 1387 1 9 1388 1 9 1389 1 9 1396 1 9 1397 1 9 1398 1 9 1399 1 9 1406 1 9 1407 1 9 1408 1 9 1409 1 9 1410 1 9 1411 1 9 1416 1 9 1417 1 9 1418 1 9 1419 1 9 1426 1 9 1427 1 9 1428 1 9 1429 1 9 1430 1 9 1431 1 9 1436 1 9 1437 1 9 1438 1 9 1439 1 9 1440 1 9 1441 1 9 1446 1 9 1447 1 9 1448 1 9 1449 1 9 1451 1 9 1452 1 9 1453 1 9 1454 1 9 1461 1 9 1462 1 9 1463 1 9 1464 1 9 1465 1 9 1466 1 9 1471 1 9 1472 1 9 1473 1 9 1474 1 9 1475 1 9 1476 1 9 1481 1 9 1482 1 9 1483 1 9 1484 1 9 1486 1 9 1487 1 9 1488 1 9 1489 1 9 1490 1 9 1491 1 9 1496 1 9 1497 1 9 1498 1 9 1499 1 9 1501 1 9 1502 1 9 1503 1 9 1504 1 9 1506 1 9 1507 1 9 1512 1 9 1513 1 9 1514 1 9 1515 1 9 1522 1 9 1523 1 9 1524 1 9 1525 1 9 1532 1 9 1533 1 9 1534 1 9 1535 1 9 1536 1 9 1537 1 9 1542 1 9 1543 1 9 1544 1 9 1545 1 9 1552 1 9 1553 1 9 1554 1 9 1555 1 9 1556 1 9 1557 1 9 1562 1 9 1563 1 9 1564 1 9 1565 1 9 1566 1 9 1567 1 9 1572 1 9 1573 1 9 1574 1 9 1575 1 9 1577 1 9 1578 1 9 1579 1 9 1580 1 9 1587 1 9 1588 1 9 1589 1 9 1590 1 9 1591 1 9 1592 1 9 1597 1 9 1598 1 9 1599 1 9 1600 1 9 1601 1 9 1602 1 9 1607 1 9 1608 1 9 1609 1 9 1610 1 9 1612 1 9 1613 1 9 1614 1 9 1615 1 9 1616 1 9 1617 1 9 1622 1 9 1623 1 9 1624 1 9 1625 1 9 1627 1 9 1628 1 9 1629 1 9 1630 1 9 1632 1 9 1633 1 9 1634 1 9 1635 1 9 1636 1 9 1643 1 9 1644 1 9 1645 1 9 1646 1 9 1647 1 9 1648 1 9 1653 1 9 1654 1 9 1655 1 9 1656 1 9 1657 1 9 1658 1 9 1663 1 9 1664 1 9 1665 1 9 1666 1 9 1668 1 9 1669 1 9 1670 1 9 1671 1 9 1672 1 9 1673 1 9 1678 1 9 1679 1 9 1680 1 9 1681 1 9 1683 1 9 1684 1 9 1685 1 9 1686 1 9 1688 1 9 1689 1 9 1690 1 9 1691 1 9 1692 1 9 1693 1 9 1694 1 9 1699 1 9 1700 1 9 1701 1 9 1702 1 9 1704 1 9 1705 1 9 1706 1 9 1707 1 9 1709 1 9 1710 1 9 1711 1 9 1712 1 9 1713 1 9 1715 1 9 1716 1 10 5 1 10 12 1 10 18 1 10 23 1 10 27 1 10 31 1 10 32 1 10 33 1 10 40 1 10 46 1 10 51 1 10 55 1 10 59 1 10 60 1 10 61 1 10 67 1 10 72 1 10 76 1 10 80 1 10 81 1 10 82 1 10 87 1 10 91 1 10 95 1 10 96 1 10 97 1 10 101 1 10 105 1 10 106 1 10 107 1 10 111 1 10 112 1 10 113 1 10 117 1 10 118 1 10 119 1 10 124 1 10 130 1 10 135 1 10 139 1 10 143 1 10 144 1 10 145 1 10 151 1 10 156 1 10 160 1 10 164 1 10 165 1 10 166 1 10 171 1 10 175 1 10 179 1 10 180 1 10 181 1 10 185 1 10 189 1 10 190 1 10 191 1 10 195 1 10 196 1 10 197 1 10 201 1 10 202 1 10 203 1 10 207 1 10 212 1 10 216 1 10 220 1 10 221 1 10 222 1 10 227 1 10 231 1 10 235 1 10 236 1 10 237 1 10 241 1 10 245 1 10 246 1 10 247 1 10 251 1 10 252 1 10 253 1 10 257 1 10 258 1 10 259 1 10 262 1 10 266 1 10 270 1 10 271 1 10 272 1 10 276 1 10 280 1 10 281 1 10 282 1 10 286 1 10 287 1 10 288 1 10 292 1 10 293 1 10 294 1 10 296 1 10 300 1 10 301 1 10 302 1 10 306 1 10 307 1 10 308 1 10 312 1 10 313 1 10 314 1 10 316 1 10 317 1 10 318 1 10 322 1 10 323 1 10 324 1 10 326 1 10 327 1 10 328 1 10 330 1 10 334 1 10 340 1 10 345 1 10 349 1 10 353 1 10 354 1 10 355 1 10 361 1 10 366 1 10 370 1 10 374 1 10 375 1 10 376 1 10 381 1 10 385 1 10 389 1 10 390 1 10 391 1 10 395 1 10 399 1 10 400 1 10 401 1 10 405 1 10 406 1 10 407 1 10 411 1 10 412 1 10 413 1 10 417 1 10 422 1 10 426 1 10 430 1 10 431 1 10 432 1 10 437 1 10 441 1 10 445 1 10 446 1 10 447 1 10 451 1 10 455 1 10 456 1 10 457 1 10 461 1 10 462 1 10 463 1 10 467 1 10 468 1 10 469 1 10 472 1 10 476 1 10 480 1 10 481 1 10 482 1 10 486 1 10 490 1 10 491 1 10 492 1 10 496 1 10 497 1 10 498 1 10 502 1 10 503 1 10 504 1 10 506 1 10 510 1 10 511 1 10 512 1 10 516 1 10 517 1 10 518 1 10 522 1 10 523 1 10 524 1 10 526 1 10 527 1 10 528 1 10 532 1 10 533 1 10 534 1 10 536 1 10 537 1 10 538 1 10 540 1 10 543 1 10 548 1 10 552 1 10 556 1 10 557 1 10 558 1 10 563 1 10 567 1 10 571 1 10 572 1 10 573 1 10 577 1 10 581 1 10 582 1 10 583 1 10 587 1 10 588 1 10 589 1 10 593 1 10 594 1 10 595 1 10 598 1 10 602 1 10 606 1 10 607 1 10 608 1 10 612 1 10 616 1 10 617 1 10 618 1 10 622 1 10 623 1 10 624 1 10 628 1 10 629 1 10 630 1 10 632 1 10 636 1 10 637 1 10 638 1 10 642 1 10 643 1 10 644 1 10 648 1 10 649 1 10 650 1 10 652 1 10 653 1 10 654 1 10 658 1 10 659 1 10 660 1 10 662 1 10 663 1 10 664 1 10 666 1 10 668 1 10 672 1 10 676 1 10 677 1 10 678 1 10 682 1 10 686 1 10 687 1 10 688 1 10 692 1 10 693 1 10 694 1 10 698 1 10 699 1 10 700 1 10 702 1 10 706 1 10 707 1 10 708 1 10 712 1 10 713 1 10 714 1 10 718 1 10 719 1 10 720 1 10 722 1 10 723 1 10 724 1 10 728 1 10 729 1 10 730 1 10 732 1 10 733 1 10 734 1 10 736 1 10 737 1 10 741 1 10 742 1 10 743 1 10 747 1 10 748 1 10 749 1 10 753 1 10 754 1 10 755 1 10 757 1 10 758 1 10 759 1 10 763 1 10 764 1 10 765 1 10 767 1 10 768 1 10 769 1 10 771 1 10 772 1 10 773 1 10 774 1 10 778 1 10 779 1 10 780 1 10 782 1 10 783 1 10 784 1 10 786 1 10 787 1 10 788 1 10 789 1 10 791 1 10 792 1 10 796 1 10 802 1 10 807 1 10 811 1 10 815 1 10 816 1 10 817 1 10 823 1 10 828 1 10 832 1 10 836 1 10 837 1 10 838 1 10 843 1 10 847 1 10 851 1 10 852 1 10 853 1 10 857 1 10 861 1 10 862 1 10 863 1 10 867 1 10 868 1 10 869 1 10 873 1 10 874 1 10 875 1 10 879 1 10 884 1 10 888 1 10 892 1 10 893 1 10 894 1 10 899 1 10 903 1 10 907 1 10 908 1 10 909 1 10 913 1 10 917 1 10 918 1 10 919 1 10 923 1 10 924 1 10 925 1 10 929 1 10 930 1 10 931 1 10 934 1 10 938 1 10 942 1 10 943 1 10 944 1 10 948 1 10 952 1 10 953 1 10 954 1 10 958 1 10 959 1 10 960 1 10 964 1 10 965 1 10 966 1 10 968 1 10 972 1 10 973 1 10 974 1 10 978 1 10 979 1 10 980 1 10 984 1 10 985 1 10 986 1 10 988 1 10 989 1 10 990 1 10 994 1 10 995 1 10 996 1 10 998 1 10 999 1 10 1000 1 10 1002 1 10 1005 1 10 1010 1 10 1014 1 10 1018 1 10 1019 1 10 1020 1 10 1025 1 10 1029 1 10 1033 1 10 1034 1 10 1035 1 10 1039 1 10 1043 1 10 1044 1 10 1045 1 10 1049 1 10 1050 1 10 1051 1 10 1055 1 10 1056 1 10 1057 1 10 1060 1 10 1064 1 10 1068 1 10 1069 1 10 1070 1 10 1074 1 10 1078 1 10 1079 1 10 1080 1 10 1084 1 10 1085 1 10 1086 1 10 1090 1 10 1091 1 10 1092 1 10 1094 1 10 1098 1 10 1099 1 10 1100 1 10 1104 1 10 1105 1 10 1106 1 10 1110 1 10 1111 1 10 1112 1 10 1114 1 10 1115 1 10 1116 1 10 1120 1 10 1121 1 10 1122 1 10 1124 1 10 1125 1 10 1126 1 10 1128 1 10 1130 1 10 1134 1 10 1138 1 10 1139 1 10 1140 1 10 1144 1 10 1148 1 10 1149 1 10 1150 1 10 1154 1 10 1155 1 10 1156 1 10 1160 1 10 1161 1 10 1162 1 10 1164 1 10 1168 1 10 1169 1 10 1170 1 10 1174 1 10 1175 1 10 1176 1 10 1180 1 10 1181 1 10 1182 1 10 1184 1 10 1185 1 10 1186 1 10 1190 1 10 1191 1 10 1192 1 10 1194 1 10 1195 1 10 1196 1 10 1198 1 10 1199 1 10 1203 1 10 1204 1 10 1205 1 10 1209 1 10 1210 1 10 1211 1 10 1215 1 10 1216 1 10 1217 1 10 1219 1 10 1220 1 10 1221 1 10 1225 1 10 1226 1 10 1227 1 10 1229 1 10 1230 1 10 1231 1 10 1233 1 10 1234 1 10 1235 1 10 1236 1 10 1240 1 10 1241 1 10 1242 1 10 1244 1 10 1245 1 10 1246 1 10 1248 1 10 1249 1 10 1250 1 10 1251 1 10 1253 1 10 1254 1 10 1257 1 10 1262 1 10 1266 1 10 1270 1 10 1271 1 10 1272 1 10 1277 1 10 1281 1 10 1285 1 10 1286 1 10 1287 1 10 1291 1 10 1295 1 10 1296 1 10 1297 1 10 1301 1 10 1302 1 10 1303 1 10 1307 1 10 1308 1 10 1309 1 10 1312 1 10 1316 1 10 1320 1 10 1321 1 10 1322 1 10 1326 1 10 1330 1 10 1331 1 10 1332 1 10 1336 1 10 1337 1 10 1338 1 10 1342 1 10 1343 1 10 1344 1 10 1346 1 10 1350 1 10 1351 1 10 1352 1 10 1356 1 10 1357 1 10 1358 1 10 1362 1 10 1363 1 10 1364 1 10 1366 1 10 1367 1 10 1368 1 10 1372 1 10 1373 1 10 1374 1 10 1376 1 10 1377 1 10 1378 1 10 1380 1 10 1382 1 10 1386 1 10 1390 1 10 1391 1 10 1392 1 10 1396 1 10 1400 1 10 1401 1 10 1402 1 10 1406 1 10 1407 1 10 1408 1 10 1412 1 10 1413 1 10 1414 1 10 1416 1 10 1420 1 10 1421 1 10 1422 1 10 1426 1 10 1427 1 10 1428 1 10 1432 1 10 1433 1 10 1434 1 10 1436 1 10 1437 1 10 1438 1 10 1442 1 10 1443 1 10 1444 1 10 1446 1 10 1447 1 10 1448 1 10 1450 1 10 1451 1 10 1455 1 10 1456 1 10 1457 1 10 1461 1 10 1462 1 10 1463 1 10 1467 1 10 1468 1 10 1469 1 10 1471 1 10 1472 1 10 1473 1 10 1477 1 10 1478 1 10 1479 1 10 1481 1 10 1482 1 10 1483 1 10 1485 1 10 1486 1 10 1487 1 10 1488 1 10 1492 1 10 1493 1 10 1494 1 10 1496 1 10 1497 1 10 1498 1 10 1500 1 10 1501 1 10 1502 1 10 1503 1 10 1505 1 10 1506 1 10 1508 1 10 1512 1 10 1516 1 10 1517 1 10 1518 1 10 1522 1 10 1526 1 10 1527 1 10 1528 1 10 1532 1 10 1533 1 10 1534 1 10 1538 1 10 1539 1 10 1540 1 10 1542 1 10 1546 1 10 1547 1 10 1548 1 10 1552 1 10 1553 1 10 1554 1 10 1558 1 10 1559 1 10 1560 1 10 1562 1 10 1563 1 10 1564 1 10 1568 1 10 1569 1 10 1570 1 10 1572 1 10 1573 1 10 1574 1 10 1576 1 10 1577 1 10 1581 1 10 1582 1 10 1583 1 10 1587 1 10 1588 1 10 1589 1 10 1593 1 10 1594 1 10 1595 1 10 1597 1 10 1598 1 10 1599 1 10 1603 1 10 1604 1 10 1605 1 10 1607 1 10 1608 1 10 1609 1 10 1611 1 10 1612 1 10 1613 1 10 1614 1 10 1618 1 10 1619 1 10 1620 1 10 1622 1 10 1623 1 10 1624 1 10 1626 1 10 1627 1 10 1628 1 10 1629 1 10 1631 1 10 1632 1 10 1633 1 10 1637 1 10 1638 1 10 1639 1 10 1643 1 10 1644 1 10 1645 1 10 1649 1 10 1650 1 10 1651 1 10 1653 1 10 1654 1 10 1655 1 10 1659 1 10 1660 1 10 1661 1 10 1663 1 10 1664 1 10 1665 1 10 1667 1 10 1668 1 10 1669 1 10 1670 1 10 1674 1 10 1675 1 10 1676 1 10 1678 1 10 1679 1 10 1680 1 10 1682 1 10 1683 1 10 1684 1 10 1685 1 10 1687 1 10 1688 1 10 1689 1 10 1690 1 10 1691 1 10 1695 1 10 1696 1 10 1697 1 10 1699 1 10 1700 1 10 1701 1 10 1703 1 10 1704 1 10 1705 1 10 1706 1 10 1708 1 10 1709 1 10 1710 1 10 1711 1 10 1712 1 10 1714 1 10 1715 1 10 1716 1 11 6 1 11 13 1 11 19 1 11 24 1 11 28 1 11 31 1 11 34 1 11 35 1 11 41 1 11 47 1 11 52 1 11 56 1 11 59 1 11 62 1 11 63 1 11 68 1 11 73 1 11 77 1 11 80 1 11 83 1 11 84 1 11 88 1 11 92 1 11 95 1 11 98 1 11 99 1 11 102 1 11 105 1 11 108 1 11 109 1 11 111 1 11 114 1 11 115 1 11 117 1 11 118 1 11 120 1 11 125 1 11 131 1 11 136 1 11 140 1 11 143 1 11 146 1 11 147 1 11 152 1 11 157 1 11 161 1 11 164 1 11 167 1 11 168 1 11 172 1 11 176 1 11 179 1 11 182 1 11 183 1 11 186 1 11 189 1 11 192 1 11 193 1 11 195 1 11 198 1 11 199 1 11 201 1 11 202 1 11 204 1 11 208 1 11 213 1 11 217 1 11 220 1 11 223 1 11 224 1 11 228 1 11 232 1 11 235 1 11 238 1 11 239 1 11 242 1 11 245 1 11 248 1 11 249 1 11 251 1 11 254 1 11 255 1 11 257 1 11 258 1 11 260 1 11 263 1 11 267 1 11 270 1 11 273 1 11 274 1 11 277 1 11 280 1 11 283 1 11 284 1 11 286 1 11 289 1 11 290 1 11 292 1 11 293 1 11 295 1 11 297 1 11 300 1 11 303 1 11 304 1 11 306 1 11 309 1 11 310 1 11 312 1 11 313 1 11 315 1 11 316 1 11 319 1 11 320 1 11 322 1 11 323 1 11 325 1 11 326 1 11 327 1 11 329 1 11 330 1 11 335 1 11 341 1 11 346 1 11 350 1 11 353 1 11 356 1 11 357 1 11 362 1 11 367 1 11 371 1 11 374 1 11 377 1 11 378 1 11 382 1 11 386 1 11 389 1 11 392 1 11 393 1 11 396 1 11 399 1 11 402 1 11 403 1 11 405 1 11 408 1 11 409 1 11 411 1 11 412 1 11 414 1 11 418 1 11 423 1 11 427 1 11 430 1 11 433 1 11 434 1 11 438 1 11 442 1 11 445 1 11 448 1 11 449 1 11 452 1 11 455 1 11 458 1 11 459 1 11 461 1 11 464 1 11 465 1 11 467 1 11 468 1 11 470 1 11 473 1 11 477 1 11 480 1 11 483 1 11 484 1 11 487 1 11 490 1 11 493 1 11 494 1 11 496 1 11 499 1 11 500 1 11 502 1 11 503 1 11 505 1 11 507 1 11 510 1 11 513 1 11 514 1 11 516 1 11 519 1 11 520 1 11 522 1 11 523 1 11 525 1 11 526 1 11 529 1 11 530 1 11 532 1 11 533 1 11 535 1 11 536 1 11 537 1 11 539 1 11 540 1 11 544 1 11 549 1 11 553 1 11 556 1 11 559 1 11 560 1 11 564 1 11 568 1 11 571 1 11 574 1 11 575 1 11 578 1 11 581 1 11 584 1 11 585 1 11 587 1 11 590 1 11 591 1 11 593 1 11 594 1 11 596 1 11 599 1 11 603 1 11 606 1 11 609 1 11 610 1 11 613 1 11 616 1 11 619 1 11 620 1 11 622 1 11 625 1 11 626 1 11 628 1 11 629 1 11 631 1 11 633 1 11 636 1 11 639 1 11 640 1 11 642 1 11 645 1 11 646 1 11 648 1 11 649 1 11 651 1 11 652 1 11 655 1 11 656 1 11 658 1 11 659 1 11 661 1 11 662 1 11 663 1 11 665 1 11 666 1 11 669 1 11 673 1 11 676 1 11 679 1 11 680 1 11 683 1 11 686 1 11 689 1 11 690 1 11 692 1 11 695 1 11 696 1 11 698 1 11 699 1 11 701 1 11 703 1 11 706 1 11 709 1 11 710 1 11 712 1 11 715 1 11 716 1 11 718 1 11 719 1 11 721 1 11 722 1 11 725 1 11 726 1 11 728 1 11 729 1 11 731 1 11 732 1 11 733 1 11 735 1 11 736 1 11 738 1 11 741 1 11 744 1 11 745 1 11 747 1 11 750 1 11 751 1 11 753 1 11 754 1 11 756 1 11 757 1 11 760 1 11 761 1 11 763 1 11 764 1 11 766 1 11 767 1 11 768 1 11 770 1 11 771 1 11 772 1 11 775 1 11 776 1 11 778 1 11 779 1 11 781 1 11 782 1 11 783 1 11 785 1 11 786 1 11 787 1 11 788 1 11 790 1 11 791 1 11 792 1 11 797 1 11 803 1 11 808 1 11 812 1 11 815 1 11 818 1 11 819 1 11 824 1 11 829 1 11 833 1 11 836 1 11 839 1 11 840 1 11 844 1 11 848 1 11 851 1 11 854 1 11 855 1 11 858 1 11 861 1 11 864 1 11 865 1 11 867 1 11 870 1 11 871 1 11 873 1 11 874 1 11 876 1 11 880 1 11 885 1 11 889 1 11 892 1 11 895 1 11 896 1 11 900 1 11 904 1 11 907 1 11 910 1 11 911 1 11 914 1 11 917 1 11 920 1 11 921 1 11 923 1 11 926 1 11 927 1 11 929 1 11 930 1 11 932 1 11 935 1 11 939 1 11 942 1 11 945 1 11 946 1 11 949 1 11 952 1 11 955 1 11 956 1 11 958 1 11 961 1 11 962 1 11 964 1 11 965 1 11 967 1 11 969 1 11 972 1 11 975 1 11 976 1 11 978 1 11 981 1 11 982 1 11 984 1 11 985 1 11 987 1 11 988 1 11 991 1 11 992 1 11 994 1 11 995 1 11 997 1 11 998 1 11 999 1 11 1001 1 11 1002 1 11 1006 1 11 1011 1 11 1015 1 11 1018 1 11 1021 1 11 1022 1 11 1026 1 11 1030 1 11 1033 1 11 1036 1 11 1037 1 11 1040 1 11 1043 1 11 1046 1 11 1047 1 11 1049 1 11 1052 1 11 1053 1 11 1055 1 11 1056 1 11 1058 1 11 1061 1 11 1065 1 11 1068 1 11 1071 1 11 1072 1 11 1075 1 11 1078 1 11 1081 1 11 1082 1 11 1084 1 11 1087 1 11 1088 1 11 1090 1 11 1091 1 11 1093 1 11 1095 1 11 1098 1 11 1101 1 11 1102 1 11 1104 1 11 1107 1 11 1108 1 11 1110 1 11 1111 1 11 1113 1 11 1114 1 11 1117 1 11 1118 1 11 1120 1 11 1121 1 11 1123 1 11 1124 1 11 1125 1 11 1127 1 11 1128 1 11 1131 1 11 1135 1 11 1138 1 11 1141 1 11 1142 1 11 1145 1 11 1148 1 11 1151 1 11 1152 1 11 1154 1 11 1157 1 11 1158 1 11 1160 1 11 1161 1 11 1163 1 11 1165 1 11 1168 1 11 1171 1 11 1172 1 11 1174 1 11 1177 1 11 1178 1 11 1180 1 11 1181 1 11 1183 1 11 1184 1 11 1187 1 11 1188 1 11 1190 1 11 1191 1 11 1193 1 11 1194 1 11 1195 1 11 1197 1 11 1198 1 11 1200 1 11 1203 1 11 1206 1 11 1207 1 11 1209 1 11 1212 1 11 1213 1 11 1215 1 11 1216 1 11 1218 1 11 1219 1 11 1222 1 11 1223 1 11 1225 1 11 1226 1 11 1228 1 11 1229 1 11 1230 1 11 1232 1 11 1233 1 11 1234 1 11 1237 1 11 1238 1 11 1240 1 11 1241 1 11 1243 1 11 1244 1 11 1245 1 11 1247 1 11 1248 1 11 1249 1 11 1250 1 11 1252 1 11 1253 1 11 1254 1 11 1258 1 11 1263 1 11 1267 1 11 1270 1 11 1273 1 11 1274 1 11 1278 1 11 1282 1 11 1285 1 11 1288 1 11 1289 1 11 1292 1 11 1295 1 11 1298 1 11 1299 1 11 1301 1 11 1304 1 11 1305 1 11 1307 1 11 1308 1 11 1310 1 11 1313 1 11 1317 1 11 1320 1 11 1323 1 11 1324 1 11 1327 1 11 1330 1 11 1333 1 11 1334 1 11 1336 1 11 1339 1 11 1340 1 11 1342 1 11 1343 1 11 1345 1 11 1347 1 11 1350 1 11 1353 1 11 1354 1 11 1356 1 11 1359 1 11 1360 1 11 1362 1 11 1363 1 11 1365 1 11 1366 1 11 1369 1 11 1370 1 11 1372 1 11 1373 1 11 1375 1 11 1376 1 11 1377 1 11 1379 1 11 1380 1 11 1383 1 11 1387 1 11 1390 1 11 1393 1 11 1394 1 11 1397 1 11 1400 1 11 1403 1 11 1404 1 11 1406 1 11 1409 1 11 1410 1 11 1412 1 11 1413 1 11 1415 1 11 1417 1 11 1420 1 11 1423 1 11 1424 1 11 1426 1 11 1429 1 11 1430 1 11 1432 1 11 1433 1 11 1435 1 11 1436 1 11 1439 1 11 1440 1 11 1442 1 11 1443 1 11 1445 1 11 1446 1 11 1447 1 11 1449 1 11 1450 1 11 1452 1 11 1455 1 11 1458 1 11 1459 1 11 1461 1 11 1464 1 11 1465 1 11 1467 1 11 1468 1 11 1470 1 11 1471 1 11 1474 1 11 1475 1 11 1477 1 11 1478 1 11 1480 1 11 1481 1 11 1482 1 11 1484 1 11 1485 1 11 1486 1 11 1489 1 11 1490 1 11 1492 1 11 1493 1 11 1495 1 11 1496 1 11 1497 1 11 1499 1 11 1500 1 11 1501 1 11 1502 1 11 1504 1 11 1505 1 11 1506 1 11 1509 1 11 1513 1 11 1516 1 11 1519 1 11 1520 1 11 1523 1 11 1526 1 11 1529 1 11 1530 1 11 1532 1 11 1535 1 11 1536 1 11 1538 1 11 1539 1 11 1541 1 11 1543 1 11 1546 1 11 1549 1 11 1550 1 11 1552 1 11 1555 1 11 1556 1 11 1558 1 11 1559 1 11 1561 1 11 1562 1 11 1565 1 11 1566 1 11 1568 1 11 1569 1 11 1571 1 11 1572 1 11 1573 1 11 1575 1 11 1576 1 11 1578 1 11 1581 1 11 1584 1 11 1585 1 11 1587 1 11 1590 1 11 1591 1 11 1593 1 11 1594 1 11 1596 1 11 1597 1 11 1600 1 11 1601 1 11 1603 1 11 1604 1 11 1606 1 11 1607 1 11 1608 1 11 1610 1 11 1611 1 11 1612 1 11 1615 1 11 1616 1 11 1618 1 11 1619 1 11 1621 1 11 1622 1 11 1623 1 11 1625 1 11 1626 1 11 1627 1 11 1628 1 11 1630 1 11 1631 1 11 1632 1 11 1634 1 11 1637 1 11 1640 1 11 1641 1 11 1643 1 11 1646 1 11 1647 1 11 1649 1 11 1650 1 11 1652 1 11 1653 1 11 1656 1 11 1657 1 11 1659 1 11 1660 1 11 1662 1 11 1663 1 11 1664 1 11 1666 1 11 1667 1 11 1668 1 11 1671 1 11 1672 1 11 1674 1 11 1675 1 11 1677 1 11 1678 1 11 1679 1 11 1681 1 11 1682 1 11 1683 1 11 1684 1 11 1686 1 11 1687 1 11 1688 1 11 1689 1 11 1692 1 11 1693 1 11 1695 1 11 1696 1 11 1698 1 11 1699 1 11 1700 1 11 1702 1 11 1703 1 11 1704 1 11 1705 1 11 1707 1 11 1708 1 11 1709 1 11 1710 1 11 1711 1 11 1713 1 11 1714 1 11 1715 1 11 1716 1 12 7 1 12 14 1 12 20 1 12 25 1 12 29 1 12 32 1 12 34 1 12 36 1 12 42 1 12 48 1 12 53 1 12 57 1 12 60 1 12 62 1 12 64 1 12 69 1 12 74 1 12 78 1 12 81 1 12 83 1 12 85 1 12 89 1 12 93 1 12 96 1 12 98 1 12 100 1 12 103 1 12 106 1 12 108 1 12 110 1 12 112 1 12 114 1 12 116 1 12 117 1 12 119 1 12 120 1 12 126 1 12 132 1 12 137 1 12 141 1 12 144 1 12 146 1 12 148 1 12 153 1 12 158 1 12 162 1 12 165 1 12 167 1 12 169 1 12 173 1 12 177 1 12 180 1 12 182 1 12 184 1 12 187 1 12 190 1 12 192 1 12 194 1 12 196 1 12 198 1 12 200 1 12 201 1 12 203 1 12 204 1 12 209 1 12 214 1 12 218 1 12 221 1 12 223 1 12 225 1 12 229 1 12 233 1 12 236 1 12 238 1 12 240 1 12 243 1 12 246 1 12 248 1 12 250 1 12 252 1 12 254 1 12 256 1 12 257 1 12 259 1 12 260 1 12 264 1 12 268 1 12 271 1 12 273 1 12 275 1 12 278 1 12 281 1 12 283 1 12 285 1 12 287 1 12 289 1 12 291 1 12 292 1 12 294 1 12 295 1 12 298 1 12 301 1 12 303 1 12 305 1 12 307 1 12 309 1 12 311 1 12 312 1 12 314 1 12 315 1 12 317 1 12 319 1 12 321 1 12 322 1 12 324 1 12 325 1 12 326 1 12 328 1 12 329 1 12 330 1 12 336 1 12 342 1 12 347 1 12 351 1 12 354 1 12 356 1 12 358 1 12 363 1 12 368 1 12 372 1 12 375 1 12 377 1 12 379 1 12 383 1 12 387 1 12 390 1 12 392 1 12 394 1 12 397 1 12 400 1 12 402 1 12 404 1 12 406 1 12 408 1 12 410 1 12 411 1 12 413 1 12 414 1 12 419 1 12 424 1 12 428 1 12 431 1 12 433 1 12 435 1 12 439 1 12 443 1 12 446 1 12 448 1 12 450 1 12 453 1 12 456 1 12 458 1 12 460 1 12 462 1 12 464 1 12 466 1 12 467 1 12 469 1 12 470 1 12 474 1 12 478 1 12 481 1 12 483 1 12 485 1 12 488 1 12 491 1 12 493 1 12 495 1 12 497 1 12 499 1 12 501 1 12 502 1 12 504 1 12 505 1 12 508 1 12 511 1 12 513 1 12 515 1 12 517 1 12 519 1 12 521 1 12 522 1 12 524 1 12 525 1 12 527 1 12 529 1 12 531 1 12 532 1 12 534 1 12 535 1 12 536 1 12 538 1 12 539 1 12 540 1 12 545 1 12 550 1 12 554 1 12 557 1 12 559 1 12 561 1 12 565 1 12 569 1 12 572 1 12 574 1 12 576 1 12 579 1 12 582 1 12 584 1 12 586 1 12 588 1 12 590 1 12 592 1 12 593 1 12 595 1 12 596 1 12 600 1 12 604 1 12 607 1 12 609 1 12 611 1 12 614 1 12 617 1 12 619 1 12 621 1 12 623 1 12 625 1 12 627 1 12 628 1 12 630 1 12 631 1 12 634 1 12 637 1 12 639 1 12 641 1 12 643 1 12 645 1 12 647 1 12 648 1 12 650 1 12 651 1 12 653 1 12 655 1 12 657 1 12 658 1 12 660 1 12 661 1 12 662 1 12 664 1 12 665 1 12 666 1 12 670 1 12 674 1 12 677 1 12 679 1 12 681 1 12 684 1 12 687 1 12 689 1 12 691 1 12 693 1 12 695 1 12 697 1 12 698 1 12 700 1 12 701 1 12 704 1 12 707 1 12 709 1 12 711 1 12 713 1 12 715 1 12 717 1 12 718 1 12 720 1 12 721 1 12 723 1 12 725 1 12 727 1 12 728 1 12 730 1 12 731 1 12 732 1 12 734 1 12 735 1 12 736 1 12 739 1 12 742 1 12 744 1 12 746 1 12 748 1 12 750 1 12 752 1 12 753 1 12 755 1 12 756 1 12 758 1 12 760 1 12 762 1 12 763 1 12 765 1 12 766 1 12 767 1 12 769 1 12 770 1 12 771 1 12 773 1 12 775 1 12 777 1 12 778 1 12 780 1 12 781 1 12 782 1 12 784 1 12 785 1 12 786 1 12 787 1 12 789 1 12 790 1 12 791 1 12 792 1 12 798 1 12 804 1 12 809 1 12 813 1 12 816 1 12 818 1 12 820 1 12 825 1 12 830 1 12 834 1 12 837 1 12 839 1 12 841 1 12 845 1 12 849 1 12 852 1 12 854 1 12 856 1 12 859 1 12 862 1 12 864 1 12 866 1 12 868 1 12 870 1 12 872 1 12 873 1 12 875 1 12 876 1 12 881 1 12 886 1 12 890 1 12 893 1 12 895 1 12 897 1 12 901 1 12 905 1 12 908 1 12 910 1 12 912 1 12 915 1 12 918 1 12 920 1 12 922 1 12 924 1 12 926 1 12 928 1 12 929 1 12 931 1 12 932 1 12 936 1 12 940 1 12 943 1 12 945 1 12 947 1 12 950 1 12 953 1 12 955 1 12 957 1 12 959 1 12 961 1 12 963 1 12 964 1 12 966 1 12 967 1 12 970 1 12 973 1 12 975 1 12 977 1 12 979 1 12 981 1 12 983 1 12 984 1 12 986 1 12 987 1 12 989 1 12 991 1 12 993 1 12 994 1 12 996 1 12 997 1 12 998 1 12 1000 1 12 1001 1 12 1002 1 12 1007 1 12 1012 1 12 1016 1 12 1019 1 12 1021 1 12 1023 1 12 1027 1 12 1031 1 12 1034 1 12 1036 1 12 1038 1 12 1041 1 12 1044 1 12 1046 1 12 1048 1 12 1050 1 12 1052 1 12 1054 1 12 1055 1 12 1057 1 12 1058 1 12 1062 1 12 1066 1 12 1069 1 12 1071 1 12 1073 1 12 1076 1 12 1079 1 12 1081 1 12 1083 1 12 1085 1 12 1087 1 12 1089 1 12 1090 1 12 1092 1 12 1093 1 12 1096 1 12 1099 1 12 1101 1 12 1103 1 12 1105 1 12 1107 1 12 1109 1 12 1110 1 12 1112 1 12 1113 1 12 1115 1 12 1117 1 12 1119 1 12 1120 1 12 1122 1 12 1123 1 12 1124 1 12 1126 1 12 1127 1 12 1128 1 12 1132 1 12 1136 1 12 1139 1 12 1141 1 12 1143 1 12 1146 1 12 1149 1 12 1151 1 12 1153 1 12 1155 1 12 1157 1 12 1159 1 12 1160 1 12 1162 1 12 1163 1 12 1166 1 12 1169 1 12 1171 1 12 1173 1 12 1175 1 12 1177 1 12 1179 1 12 1180 1 12 1182 1 12 1183 1 12 1185 1 12 1187 1 12 1189 1 12 1190 1 12 1192 1 12 1193 1 12 1194 1 12 1196 1 12 1197 1 12 1198 1 12 1201 1 12 1204 1 12 1206 1 12 1208 1 12 1210 1 12 1212 1 12 1214 1 12 1215 1 12 1217 1 12 1218 1 12 1220 1 12 1222 1 12 1224 1 12 1225 1 12 1227 1 12 1228 1 12 1229 1 12 1231 1 12 1232 1 12 1233 1 12 1235 1 12 1237 1 12 1239 1 12 1240 1 12 1242 1 12 1243 1 12 1244 1 12 1246 1 12 1247 1 12 1248 1 12 1249 1 12 1251 1 12 1252 1 12 1253 1 12 1254 1 12 1259 1 12 1264 1 12 1268 1 12 1271 1 12 1273 1 12 1275 1 12 1279 1 12 1283 1 12 1286 1 12 1288 1 12 1290 1 12 1293 1 12 1296 1 12 1298 1 12 1300 1 12 1302 1 12 1304 1 12 1306 1 12 1307 1 12 1309 1 12 1310 1 12 1314 1 12 1318 1 12 1321 1 12 1323 1 12 1325 1 12 1328 1 12 1331 1 12 1333 1 12 1335 1 12 1337 1 12 1339 1 12 1341 1 12 1342 1 12 1344 1 12 1345 1 12 1348 1 12 1351 1 12 1353 1 12 1355 1 12 1357 1 12 1359 1 12 1361 1 12 1362 1 12 1364 1 12 1365 1 12 1367 1 12 1369 1 12 1371 1 12 1372 1 12 1374 1 12 1375 1 12 1376 1 12 1378 1 12 1379 1 12 1380 1 12 1384 1 12 1388 1 12 1391 1 12 1393 1 12 1395 1 12 1398 1 12 1401 1 12 1403 1 12 1405 1 12 1407 1 12 1409 1 12 1411 1 12 1412 1 12 1414 1 12 1415 1 12 1418 1 12 1421 1 12 1423 1 12 1425 1 12 1427 1 12 1429 1 12 1431 1 12 1432 1 12 1434 1 12 1435 1 12 1437 1 12 1439 1 12 1441 1 12 1442 1 12 1444 1 12 1445 1 12 1446 1 12 1448 1 12 1449 1 12 1450 1 12 1453 1 12 1456 1 12 1458 1 12 1460 1 12 1462 1 12 1464 1 12 1466 1 12 1467 1 12 1469 1 12 1470 1 12 1472 1 12 1474 1 12 1476 1 12 1477 1 12 1479 1 12 1480 1 12 1481 1 12 1483 1 12 1484 1 12 1485 1 12 1487 1 12 1489 1 12 1491 1 12 1492 1 12 1494 1 12 1495 1 12 1496 1 12 1498 1 12 1499 1 12 1500 1 12 1501 1 12 1503 1 12 1504 1 12 1505 1 12 1506 1 12 1510 1 12 1514 1 12 1517 1 12 1519 1 12 1521 1 12 1524 1 12 1527 1 12 1529 1 12 1531 1 12 1533 1 12 1535 1 12 1537 1 12 1538 1 12 1540 1 12 1541 1 12 1544 1 12 1547 1 12 1549 1 12 1551 1 12 1553 1 12 1555 1 12 1557 1 12 1558 1 12 1560 1 12 1561 1 12 1563 1 12 1565 1 12 1567 1 12 1568 1 12 1570 1 12 1571 1 12 1572 1 12 1574 1 12 1575 1 12 1576 1 12 1579 1 12 1582 1 12 1584 1 12 1586 1 12 1588 1 12 1590 1 12 1592 1 12 1593 1 12 1595 1 12 1596 1 12 1598 1 12 1600 1 12 1602 1 12 1603 1 12 1605 1 12 1606 1 12 1607 1 12 1609 1 12 1610 1 12 1611 1 12 1613 1 12 1615 1 12 1617 1 12 1618 1 12 1620 1 12 1621 1 12 1622 1 12 1624 1 12 1625 1 12 1626 1 12 1627 1 12 1629 1 12 1630 1 12 1631 1 12 1632 1 12 1635 1 12 1638 1 12 1640 1 12 1642 1 12 1644 1 12 1646 1 12 1648 1 12 1649 1 12 1651 1 12 1652 1 12 1654 1 12 1656 1 12 1658 1 12 1659 1 12 1661 1 12 1662 1 12 1663 1 12 1665 1 12 1666 1 12 1667 1 12 1669 1 12 1671 1 12 1673 1 12 1674 1 12 1676 1 12 1677 1 12 1678 1 12 1680 1 12 1681 1 12 1682 1 12 1683 1 12 1685 1 12 1686 1 12 1687 1 12 1688 1 12 1690 1 12 1692 1 12 1694 1 12 1695 1 12 1697 1 12 1698 1 12 1699 1 12 1701 1 12 1702 1 12 1703 1 12 1704 1 12 1706 1 12 1707 1 12 1708 1 12 1709 1 12 1710 1 12 1712 1 12 1713 1 12 1714 1 12 1715 1 12 1716 1 13 8 1 13 15 1 13 21 1 13 26 1 13 30 1 13 33 1 13 35 1 13 36 1 13 43 1 13 49 1 13 54 1 13 58 1 13 61 1 13 63 1 13 64 1 13 70 1 13 75 1 13 79 1 13 82 1 13 84 1 13 85 1 13 90 1 13 94 1 13 97 1 13 99 1 13 100 1 13 104 1 13 107 1 13 109 1 13 110 1 13 113 1 13 115 1 13 116 1 13 118 1 13 119 1 13 120 1 13 127 1 13 133 1 13 138 1 13 142 1 13 145 1 13 147 1 13 148 1 13 154 1 13 159 1 13 163 1 13 166 1 13 168 1 13 169 1 13 174 1 13 178 1 13 181 1 13 183 1 13 184 1 13 188 1 13 191 1 13 193 1 13 194 1 13 197 1 13 199 1 13 200 1 13 202 1 13 203 1 13 204 1 13 210 1 13 215 1 13 219 1 13 222 1 13 224 1 13 225 1 13 230 1 13 234 1 13 237 1 13 239 1 13 240 1 13 244 1 13 247 1 13 249 1 13 250 1 13 253 1 13 255 1 13 256 1 13 258 1 13 259 1 13 260 1 13 265 1 13 269 1 13 272 1 13 274 1 13 275 1 13 279 1 13 282 1 13 284 1 13 285 1 13 288 1 13 290 1 13 291 1 13 293 1 13 294 1 13 295 1 13 299 1 13 302 1 13 304 1 13 305 1 13 308 1 13 310 1 13 311 1 13 313 1 13 314 1 13 315 1 13 318 1 13 320 1 13 321 1 13 323 1 13 324 1 13 325 1 13 327 1 13 328 1 13 329 1 13 330 1 13 337 1 13 343 1 13 348 1 13 352 1 13 355 1 13 357 1 13 358 1 13 364 1 13 369 1 13 373 1 13 376 1 13 378 1 13 379 1 13 384 1 13 388 1 13 391 1 13 393 1 13 394 1 13 398 1 13 401 1 13 403 1 13 404 1 13 407 1 13 409 1 13 410 1 13 412 1 13 413 1 13 414 1 13 420 1 13 425 1 13 429 1 13 432 1 13 434 1 13 435 1 13 440 1 13 444 1 13 447 1 13 449 1 13 450 1 13 454 1 13 457 1 13 459 1 13 460 1 13 463 1 13 465 1 13 466 1 13 468 1 13 469 1 13 470 1 13 475 1 13 479 1 13 482 1 13 484 1 13 485 1 13 489 1 13 492 1 13 494 1 13 495 1 13 498 1 13 500 1 13 501 1 13 503 1 13 504 1 13 505 1 13 509 1 13 512 1 13 514 1 13 515 1 13 518 1 13 520 1 13 521 1 13 523 1 13 524 1 13 525 1 13 528 1 13 530 1 13 531 1 13 533 1 13 534 1 13 535 1 13 537 1 13 538 1 13 539 1 13 540 1 13 546 1 13 551 1 13 555 1 13 558 1 13 560 1 13 561 1 13 566 1 13 570 1 13 573 1 13 575 1 13 576 1 13 580 1 13 583 1 13 585 1 13 586 1 13 589 1 13 591 1 13 592 1 13 594 1 13 595 1 13 596 1 13 601 1 13 605 1 13 608 1 13 610 1 13 611 1 13 615 1 13 618 1 13 620 1 13 621 1 13 624 1 13 626 1 13 627 1 13 629 1 13 630 1 13 631 1 13 635 1 13 638 1 13 640 1 13 641 1 13 644 1 13 646 1 13 647 1 13 649 1 13 650 1 13 651 1 13 654 1 13 656 1 13 657 1 13 659 1 13 660 1 13 661 1 13 663 1 13 664 1 13 665 1 13 666 1 13 671 1 13 675 1 13 678 1 13 680 1 13 681 1 13 685 1 13 688 1 13 690 1 13 691 1 13 694 1 13 696 1 13 697 1 13 699 1 13 700 1 13 701 1 13 705 1 13 708 1 13 710 1 13 711 1 13 714 1 13 716 1 13 717 1 13 719 1 13 720 1 13 721 1 13 724 1 13 726 1 13 727 1 13 729 1 13 730 1 13 731 1 13 733 1 13 734 1 13 735 1 13 736 1 13 740 1 13 743 1 13 745 1 13 746 1 13 749 1 13 751 1 13 752 1 13 754 1 13 755 1 13 756 1 13 759 1 13 761 1 13 762 1 13 764 1 13 765 1 13 766 1 13 768 1 13 769 1 13 770 1 13 771 1 13 774 1 13 776 1 13 777 1 13 779 1 13 780 1 13 781 1 13 783 1 13 784 1 13 785 1 13 786 1 13 788 1 13 789 1 13 790 1 13 791 1 13 792 1 13 799 1 13 805 1 13 810 1 13 814 1 13 817 1 13 819 1 13 820 1 13 826 1 13 831 1 13 835 1 13 838 1 13 840 1 13 841 1 13 846 1 13 850 1 13 853 1 13 855 1 13 856 1 13 860 1 13 863 1 13 865 1 13 866 1 13 869 1 13 871 1 13 872 1 13 874 1 13 875 1 13 876 1 13 882 1 13 887 1 13 891 1 13 894 1 13 896 1 13 897 1 13 902 1 13 906 1 13 909 1 13 911 1 13 912 1 13 916 1 13 919 1 13 921 1 13 922 1 13 925 1 13 927 1 13 928 1 13 930 1 13 931 1 13 932 1 13 937 1 13 941 1 13 944 1 13 946 1 13 947 1 13 951 1 13 954 1 13 956 1 13 957 1 13 960 1 13 962 1 13 963 1 13 965 1 13 966 1 13 967 1 13 971 1 13 974 1 13 976 1 13 977 1 13 980 1 13 982 1 13 983 1 13 985 1 13 986 1 13 987 1 13 990 1 13 992 1 13 993 1 13 995 1 13 996 1 13 997 1 13 999 1 13 1000 1 13 1001 1 13 1002 1 13 1008 1 13 1013 1 13 1017 1 13 1020 1 13 1022 1 13 1023 1 13 1028 1 13 1032 1 13 1035 1 13 1037 1 13 1038 1 13 1042 1 13 1045 1 13 1047 1 13 1048 1 13 1051 1 13 1053 1 13 1054 1 13 1056 1 13 1057 1 13 1058 1 13 1063 1 13 1067 1 13 1070 1 13 1072 1 13 1073 1 13 1077 1 13 1080 1 13 1082 1 13 1083 1 13 1086 1 13 1088 1 13 1089 1 13 1091 1 13 1092 1 13 1093 1 13 1097 1 13 1100 1 13 1102 1 13 1103 1 13 1106 1 13 1108 1 13 1109 1 13 1111 1 13 1112 1 13 1113 1 13 1116 1 13 1118 1 13 1119 1 13 1121 1 13 1122 1 13 1123 1 13 1125 1 13 1126 1 13 1127 1 13 1128 1 13 1133 1 13 1137 1 13 1140 1 13 1142 1 13 1143 1 13 1147 1 13 1150 1 13 1152 1 13 1153 1 13 1156 1 13 1158 1 13 1159 1 13 1161 1 13 1162 1 13 1163 1 13 1167 1 13 1170 1 13 1172 1 13 1173 1 13 1176 1 13 1178 1 13 1179 1 13 1181 1 13 1182 1 13 1183 1 13 1186 1 13 1188 1 13 1189 1 13 1191 1 13 1192 1 13 1193 1 13 1195 1 13 1196 1 13 1197 1 13 1198 1 13 1202 1 13 1205 1 13 1207 1 13 1208 1 13 1211 1 13 1213 1 13 1214 1 13 1216 1 13 1217 1 13 1218 1 13 1221 1 13 1223 1 13 1224 1 13 1226 1 13 1227 1 13 1228 1 13 1230 1 13 1231 1 13 1232 1 13 1233 1 13 1236 1 13 1238 1 13 1239 1 13 1241 1 13 1242 1 13 1243 1 13 1245 1 13 1246 1 13 1247 1 13 1248 1 13 1250 1 13 1251 1 13 1252 1 13 1253 1 13 1254 1 13 1260 1 13 1265 1 13 1269 1 13 1272 1 13 1274 1 13 1275 1 13 1280 1 13 1284 1 13 1287 1 13 1289 1 13 1290 1 13 1294 1 13 1297 1 13 1299 1 13 1300 1 13 1303 1 13 1305 1 13 1306 1 13 1308 1 13 1309 1 13 1310 1 13 1315 1 13 1319 1 13 1322 1 13 1324 1 13 1325 1 13 1329 1 13 1332 1 13 1334 1 13 1335 1 13 1338 1 13 1340 1 13 1341 1 13 1343 1 13 1344 1 13 1345 1 13 1349 1 13 1352 1 13 1354 1 13 1355 1 13 1358 1 13 1360 1 13 1361 1 13 1363 1 13 1364 1 13 1365 1 13 1368 1 13 1370 1 13 1371 1 13 1373 1 13 1374 1 13 1375 1 13 1377 1 13 1378 1 13 1379 1 13 1380 1 13 1385 1 13 1389 1 13 1392 1 13 1394 1 13 1395 1 13 1399 1 13 1402 1 13 1404 1 13 1405 1 13 1408 1 13 1410 1 13 1411 1 13 1413 1 13 1414 1 13 1415 1 13 1419 1 13 1422 1 13 1424 1 13 1425 1 13 1428 1 13 1430 1 13 1431 1 13 1433 1 13 1434 1 13 1435 1 13 1438 1 13 1440 1 13 1441 1 13 1443 1 13 1444 1 13 1445 1 13 1447 1 13 1448 1 13 1449 1 13 1450 1 13 1454 1 13 1457 1 13 1459 1 13 1460 1 13 1463 1 13 1465 1 13 1466 1 13 1468 1 13 1469 1 13 1470 1 13 1473 1 13 1475 1 13 1476 1 13 1478 1 13 1479 1 13 1480 1 13 1482 1 13 1483 1 13 1484 1 13 1485 1 13 1488 1 13 1490 1 13 1491 1 13 1493 1 13 1494 1 13 1495 1 13 1497 1 13 1498 1 13 1499 1 13 1500 1 13 1502 1 13 1503 1 13 1504 1 13 1505 1 13 1506 1 13 1511 1 13 1515 1 13 1518 1 13 1520 1 13 1521 1 13 1525 1 13 1528 1 13 1530 1 13 1531 1 13 1534 1 13 1536 1 13 1537 1 13 1539 1 13 1540 1 13 1541 1 13 1545 1 13 1548 1 13 1550 1 13 1551 1 13 1554 1 13 1556 1 13 1557 1 13 1559 1 13 1560 1 13 1561 1 13 1564 1 13 1566 1 13 1567 1 13 1569 1 13 1570 1 13 1571 1 13 1573 1 13 1574 1 13 1575 1 13 1576 1 13 1580 1 13 1583 1 13 1585 1 13 1586 1 13 1589 1 13 1591 1 13 1592 1 13 1594 1 13 1595 1 13 1596 1 13 1599 1 13 1601 1 13 1602 1 13 1604 1 13 1605 1 13 1606 1 13 1608 1 13 1609 1 13 1610 1 13 1611 1 13 1614 1 13 1616 1 13 1617 1 13 1619 1 13 1620 1 13 1621 1 13 1623 1 13 1624 1 13 1625 1 13 1626 1 13 1628 1 13 1629 1 13 1630 1 13 1631 1 13 1632 1 13 1636 1 13 1639 1 13 1641 1 13 1642 1 13 1645 1 13 1647 1 13 1648 1 13 1650 1 13 1651 1 13 1652 1 13 1655 1 13 1657 1 13 1658 1 13 1660 1 13 1661 1 13 1662 1 13 1664 1 13 1665 1 13 1666 1 13 1667 1 13 1670 1 13 1672 1 13 1673 1 13 1675 1 13 1676 1 13 1677 1 13 1679 1 13 1680 1 13 1681 1 13 1682 1 13 1684 1 13 1685 1 13 1686 1 13 1687 1 13 1688 1 13 1691 1 13 1693 1 13 1694 1 13 1696 1 13 1697 1 13 1698 1 13 1700 1 13 1701 1 13 1702 1 13 1703 1 13 1705 1 13 1706 1 13 1707 1 13 1708 1 13 1709 1 13 1711 1 13 1712 1 13 1713 1 13 1714 1 13 1715 1 13 1716 1 14 1 1 14 2 1 14 3 1 14 4 1 14 5 1 14 6 1 14 7 1 14 8 1 14 9 1 14 10 1 14 11 1 14 12 1 14 13 1 14 14 1 14 15 1 14 16 1 14 17 1 14 18 1 14 19 1 14 20 1 14 21 1 14 22 1 14 23 1 14 24 1 14 25 1 14 26 1 14 27 1 14 28 1 14 29 1 14 30 1 14 31 1 14 32 1 14 33 1 14 34 1 14 35 1 14 36 1 14 37 1 14 38 1 14 39 1 14 40 1 14 41 1 14 42 1 14 43 1 14 44 1 14 45 1 14 46 1 14 47 1 14 48 1 14 49 1 14 50 1 14 51 1 14 52 1 14 53 1 14 54 1 14 55 1 14 56 1 14 57 1 14 58 1 14 59 1 14 60 1 14 61 1 14 62 1 14 63 1 14 64 1 14 65 1 14 66 1 14 67 1 14 68 1 14 69 1 14 70 1 14 71 1 14 72 1 14 73 1 14 74 1 14 75 1 14 76 1 14 77 1 14 78 1 14 79 1 14 80 1 14 81 1 14 82 1 14 83 1 14 84 1 14 85 1 14 86 1 14 87 1 14 88 1 14 89 1 14 90 1 14 91 1 14 92 1 14 93 1 14 94 1 14 95 1 14 96 1 14 97 1 14 98 1 14 99 1 14 100 1 14 101 1 14 102 1 14 103 1 14 104 1 14 105 1 14 106 1 14 107 1 14 108 1 14 109 1 14 110 1 14 111 1 14 112 1 14 113 1 14 114 1 14 115 1 14 116 1 14 117 1 14 118 1 14 119 1 14 120 1 14 121 1 14 122 1 14 123 1 14 124 1 14 125 1 14 126 1 14 127 1 14 128 1 14 129 1 14 130 1 14 131 1 14 132 1 14 133 1 14 134 1 14 135 1 14 136 1 14 137 1 14 138 1 14 139 1 14 140 1 14 141 1 14 142 1 14 143 1 14 144 1 14 145 1 14 146 1 14 147 1 14 148 1 14 149 1 14 150 1 14 151 1 14 152 1 14 153 1 14 154 1 14 155 1 14 156 1 14 157 1 14 158 1 14 159 1 14 160 1 14 161 1 14 162 1 14 163 1 14 164 1 14 165 1 14 166 1 14 167 1 14 168 1 14 169 1 14 170 1 14 171 1 14 172 1 14 173 1 14 174 1 14 175 1 14 176 1 14 177 1 14 178 1 14 179 1 14 180 1 14 181 1 14 182 1 14 183 1 14 184 1 14 185 1 14 186 1 14 187 1 14 188 1 14 189 1 14 190 1 14 191 1 14 192 1 14 193 1 14 194 1 14 195 1 14 196 1 14 197 1 14 198 1 14 199 1 14 200 1 14 201 1 14 202 1 14 203 1 14 204 1 14 205 1 14 206 1 14 207 1 14 208 1 14 209 1 14 210 1 14 211 1 14 212 1 14 213 1 14 214 1 14 215 1 14 216 1 14 217 1 14 218 1 14 219 1 14 220 1 14 221 1 14 222 1 14 223 1 14 224 1 14 225 1 14 226 1 14 227 1 14 228 1 14 229 1 14 230 1 14 231 1 14 232 1 14 233 1 14 234 1 14 235 1 14 236 1 14 237 1 14 238 1 14 239 1 14 240 1 14 241 1 14 242 1 14 243 1 14 244 1 14 245 1 14 246 1 14 247 1 14 248 1 14 249 1 14 250 1 14 251 1 14 252 1 14 253 1 14 254 1 14 255 1 14 256 1 14 257 1 14 258 1 14 259 1 14 260 1 14 261 1 14 262 1 14 263 1 14 264 1 14 265 1 14 266 1 14 267 1 14 268 1 14 269 1 14 270 1 14 271 1 14 272 1 14 273 1 14 274 1 14 275 1 14 276 1 14 277 1 14 278 1 14 279 1 14 280 1 14 281 1 14 282 1 14 283 1 14 284 1 14 285 1 14 286 1 14 287 1 14 288 1 14 289 1 14 290 1 14 291 1 14 292 1 14 293 1 14 294 1 14 295 1 14 296 1 14 297 1 14 298 1 14 299 1 14 300 1 14 301 1 14 302 1 14 303 1 14 304 1 14 305 1 14 306 1 14 307 1 14 308 1 14 309 1 14 310 1 14 311 1 14 312 1 14 313 1 14 314 1 14 315 1 14 316 1 14 317 1 14 318 1 14 319 1 14 320 1 14 321 1 14 322 1 14 323 1 14 324 1 14 325 1 14 326 1 14 327 1 14 328 1 14 329 1 14 330 1 14 1717 1 14 1718 1 14 1719 1 14 1720 1 14 1721 1 14 1722 1 14 1723 1 14 1724 1 14 1725 1 14 1726 1 14 1727 1 14 1728 1 14 1729 1 14 1730 1 14 1731 1 14 1732 1 14 1733 1 14 1734 1 14 1735 1 14 1736 1 14 1737 1 14 1738 1 14 1739 1 14 1740 1 14 1741 1 14 1742 1 14 1743 1 14 1744 1 14 1745 1 14 1746 1 14 1747 1 14 1748 1 14 1749 1 14 1750 1 14 1751 1 14 1752 1 14 1753 1 14 1754 1 14 1755 1 14 1756 1 14 1757 1 14 1758 1 14 1759 1 14 1760 1 14 1761 1 14 1762 1 14 1763 1 14 1764 1 14 1765 1 14 1766 1 14 1767 1 14 1768 1 14 1769 1 14 1770 1 14 1771 1 14 1772 1 14 1773 1 14 1774 1 14 1775 1 14 1776 1 14 1777 1 14 1778 1 14 1779 1 14 1780 1 14 1781 1 14 1782 1 14 1783 1 14 1784 1 14 1785 1 14 1786 1 14 1787 1 14 1788 1 14 1789 1 14 1790 1 14 1791 1 14 1792 1 14 1793 1 14 1794 1 14 1795 1 14 1796 1 14 1797 1 14 1798 1 14 1799 1 14 1800 1 14 1801 1 14 1802 1 14 1803 1 14 1804 1 14 1805 1 14 1806 1 14 1807 1 14 1808 1 14 1809 1 14 1810 1 14 1811 1 14 1812 1 14 1813 1 14 1814 1 14 1815 1 14 1816 1 14 1817 1 14 1818 1 14 1819 1 14 1820 1 14 1821 1 14 1822 1 14 1823 1 14 1824 1 14 1825 1 14 1826 1 14 1827 1 14 1828 1 14 1829 1 14 1830 1 14 1831 1 14 1832 1 14 1833 1 14 1834 1 14 1835 1 14 1836 1 14 1837 1 14 1838 1 14 1839 1 14 1840 1 14 1841 1 14 1842 1 14 1843 1 14 1844 1 14 1845 1 14 1846 1 14 1847 1 14 1848 1 14 1849 1 14 1850 1 14 1851 1 14 1852 1 14 1853 1 14 1854 1 14 1855 1 14 1856 1 14 1857 1 14 1858 1 14 1859 1 14 1860 1 14 1861 1 14 1862 1 14 1863 1 14 1864 1 14 1865 1 14 1866 1 14 1867 1 14 1868 1 14 1869 1 14 1870 1 14 1871 1 14 1872 1 14 1873 1 14 1874 1 14 1875 1 14 1876 1 14 1877 1 14 1878 1 14 1879 1 14 1880 1 14 1881 1 14 1882 1 14 1883 1 14 1884 1 14 1885 1 14 1886 1 14 1887 1 14 1888 1 14 1889 1 14 1890 1 14 1891 1 14 1892 1 14 1893 1 14 1894 1 14 1895 1 14 1896 1 14 1897 1 14 1898 1 14 1899 1 14 1900 1 14 1901 1 14 1902 1 14 1903 1 14 1904 1 14 1905 1 14 1906 1 14 1907 1 14 1908 1 14 1909 1 14 1910 1 14 1911 1 14 1912 1 14 1913 1 14 1914 1 14 1915 1 14 1916 1 14 1917 1 14 1918 1 14 1919 1 14 1920 1 14 1921 1 14 1922 1 14 1923 1 14 1924 1 14 1925 1 14 1926 1 14 1927 1 14 1928 1 14 1929 1 14 1930 1 14 1931 1 14 1932 1 14 1933 1 14 1934 1 14 1935 1 14 1936 1 14 1937 1 14 1938 1 14 1939 1 14 1940 1 14 1941 1 14 1942 1 14 1943 1 14 1944 1 14 1945 1 14 1946 1 14 1947 1 14 1948 1 14 1949 1 14 1950 1 14 1951 1 14 1952 1 14 1953 1 14 1954 1 14 1955 1 14 1956 1 14 1957 1 14 1958 1 14 1959 1 14 1960 1 14 1961 1 14 1962 1 14 1963 1 14 1964 1 14 1965 1 14 1966 1 14 1967 1 14 1968 1 14 1969 1 14 1970 1 14 1971 1 14 1972 1 14 1973 1 14 1974 1 14 1975 1 14 1976 1 14 1977 1 14 1978 1 14 1979 1 14 1980 1 14 1981 1 14 1982 1 14 1983 1 14 1984 1 14 1985 1 14 1986 1 14 1987 1 14 1988 1 14 1989 1 14 1990 1 14 1991 1 14 1992 1 14 1993 1 14 1994 1 14 1995 1 14 1996 1 14 1997 1 14 1998 1 14 1999 1 14 2000 1 14 2001 1 14 2002 1 14 2003 1 14 2004 1 14 2005 1 14 2006 1 14 2007 1 14 2008 1 14 2009 1 14 2010 1 14 2011 1 14 2012 1 14 2013 1 14 2014 1 14 2015 1 14 2016 1 14 2017 1 14 2018 1 14 2019 1 14 2020 1 14 2021 1 14 2022 1 14 2023 1 14 2024 1 14 2025 1 14 2026 1 14 2027 1 14 2028 1 14 2029 1 14 2030 1 14 2031 1 14 2032 1 14 2033 1 14 2034 1 14 2035 1 14 2036 1 14 2037 1 14 2038 1 14 2039 1 14 2040 1 14 2041 1 14 2042 1 14 2043 1 14 2044 1 14 2045 1 14 2046 1 14 2047 1 14 2048 1 14 2049 1 14 2050 1 14 2051 1 14 2052 1 14 2053 1 14 2054 1 14 2055 1 14 2056 1 14 2057 1 14 2058 1 14 2059 1 14 2060 1 14 2061 1 14 2062 1 14 2063 1 14 2064 1 14 2065 1 14 2066 1 14 2067 1 14 2068 1 14 2069 1 14 2070 1 14 2071 1 14 2072 1 14 2073 1 14 2074 1 14 2075 1 14 2076 1 14 2077 1 14 2078 1 14 2079 1 14 2080 1 14 2081 1 14 2082 1 14 2083 1 14 2084 1 14 2085 1 14 2086 1 14 2087 1 14 2088 1 14 2089 1 14 2090 1 14 2091 1 14 2092 1 14 2093 1 14 2094 1 14 2095 1 14 2096 1 14 2097 1 14 2098 1 14 2099 1 14 2100 1 14 2101 1 14 2102 1 14 2103 1 14 2104 1 14 2105 1 14 2106 1 14 2107 1 14 2108 1 14 2109 1 14 2110 1 14 2111 1 14 2112 1 14 2113 1 14 2114 1 14 2115 1 14 2116 1 14 2117 1 14 2118 1 14 2119 1 14 2120 1 14 2121 1 14 2122 1 14 2123 1 14 2124 1 14 2125 1 14 2126 1 14 2127 1 14 2128 1 14 2129 1 14 2130 1 14 2131 1 14 2132 1 14 2133 1 14 2134 1 14 2135 1 14 2136 1 14 2137 1 14 2138 1 14 2139 1 14 2140 1 14 2141 1 14 2142 1 14 2143 1 14 2144 1 14 2145 1 14 2146 1 14 2147 1 14 2148 1 14 2149 1 14 2150 1 14 2151 1 14 2152 1 14 2153 1 14 2154 1 14 2155 1 14 2156 1 14 2157 1 14 2158 1 14 2159 1 14 2160 1 14 2161 1 14 2162 1 14 2163 1 14 2164 1 14 2165 1 14 2166 1 14 2167 1 14 2168 1 14 2169 1 14 2170 1 14 2171 1 14 2172 1 14 2173 1 14 2174 1 14 2175 1 14 2176 1 14 2177 1 14 2178 1 15 1 1 15 2 1 15 3 1 15 4 1 15 5 1 15 6 1 15 7 1 15 8 1 15 9 1 15 10 1 15 11 1 15 12 1 15 13 1 15 14 1 15 15 1 15 16 1 15 17 1 15 18 1 15 19 1 15 20 1 15 21 1 15 22 1 15 23 1 15 24 1 15 25 1 15 26 1 15 27 1 15 28 1 15 29 1 15 30 1 15 31 1 15 32 1 15 33 1 15 34 1 15 35 1 15 36 1 15 37 1 15 38 1 15 39 1 15 40 1 15 41 1 15 42 1 15 43 1 15 44 1 15 45 1 15 46 1 15 47 1 15 48 1 15 49 1 15 50 1 15 51 1 15 52 1 15 53 1 15 54 1 15 55 1 15 56 1 15 57 1 15 58 1 15 59 1 15 60 1 15 61 1 15 62 1 15 63 1 15 64 1 15 65 1 15 66 1 15 67 1 15 68 1 15 69 1 15 70 1 15 71 1 15 72 1 15 73 1 15 74 1 15 75 1 15 76 1 15 77 1 15 78 1 15 79 1 15 80 1 15 81 1 15 82 1 15 83 1 15 84 1 15 85 1 15 86 1 15 87 1 15 88 1 15 89 1 15 90 1 15 91 1 15 92 1 15 93 1 15 94 1 15 95 1 15 96 1 15 97 1 15 98 1 15 99 1 15 100 1 15 101 1 15 102 1 15 103 1 15 104 1 15 105 1 15 106 1 15 107 1 15 108 1 15 109 1 15 110 1 15 111 1 15 112 1 15 113 1 15 114 1 15 115 1 15 116 1 15 117 1 15 118 1 15 119 1 15 120 1 15 331 1 15 332 1 15 333 1 15 334 1 15 335 1 15 336 1 15 337 1 15 338 1 15 339 1 15 340 1 15 341 1 15 342 1 15 343 1 15 344 1 15 345 1 15 346 1 15 347 1 15 348 1 15 349 1 15 350 1 15 351 1 15 352 1 15 353 1 15 354 1 15 355 1 15 356 1 15 357 1 15 358 1 15 359 1 15 360 1 15 361 1 15 362 1 15 363 1 15 364 1 15 365 1 15 366 1 15 367 1 15 368 1 15 369 1 15 370 1 15 371 1 15 372 1 15 373 1 15 374 1 15 375 1 15 376 1 15 377 1 15 378 1 15 379 1 15 380 1 15 381 1 15 382 1 15 383 1 15 384 1 15 385 1 15 386 1 15 387 1 15 388 1 15 389 1 15 390 1 15 391 1 15 392 1 15 393 1 15 394 1 15 395 1 15 396 1 15 397 1 15 398 1 15 399 1 15 400 1 15 401 1 15 402 1 15 403 1 15 404 1 15 405 1 15 406 1 15 407 1 15 408 1 15 409 1 15 410 1 15 411 1 15 412 1 15 413 1 15 414 1 15 415 1 15 416 1 15 417 1 15 418 1 15 419 1 15 420 1 15 421 1 15 422 1 15 423 1 15 424 1 15 425 1 15 426 1 15 427 1 15 428 1 15 429 1 15 430 1 15 431 1 15 432 1 15 433 1 15 434 1 15 435 1 15 436 1 15 437 1 15 438 1 15 439 1 15 440 1 15 441 1 15 442 1 15 443 1 15 444 1 15 445 1 15 446 1 15 447 1 15 448 1 15 449 1 15 450 1 15 451 1 15 452 1 15 453 1 15 454 1 15 455 1 15 456 1 15 457 1 15 458 1 15 459 1 15 460 1 15 461 1 15 462 1 15 463 1 15 464 1 15 465 1 15 466 1 15 467 1 15 468 1 15 469 1 15 470 1 15 471 1 15 472 1 15 473 1 15 474 1 15 475 1 15 476 1 15 477 1 15 478 1 15 479 1 15 480 1 15 481 1 15 482 1 15 483 1 15 484 1 15 485 1 15 486 1 15 487 1 15 488 1 15 489 1 15 490 1 15 491 1 15 492 1 15 493 1 15 494 1 15 495 1 15 496 1 15 497 1 15 498 1 15 499 1 15 500 1 15 501 1 15 502 1 15 503 1 15 504 1 15 505 1 15 506 1 15 507 1 15 508 1 15 509 1 15 510 1 15 511 1 15 512 1 15 513 1 15 514 1 15 515 1 15 516 1 15 517 1 15 518 1 15 519 1 15 520 1 15 521 1 15 522 1 15 523 1 15 524 1 15 525 1 15 526 1 15 527 1 15 528 1 15 529 1 15 530 1 15 531 1 15 532 1 15 533 1 15 534 1 15 535 1 15 536 1 15 537 1 15 538 1 15 539 1 15 540 1 15 1717 1 15 1718 1 15 1719 1 15 1720 1 15 1721 1 15 1722 1 15 1723 1 15 1724 1 15 1725 1 15 1726 1 15 1727 1 15 1728 1 15 1729 1 15 1730 1 15 1731 1 15 1732 1 15 1733 1 15 1734 1 15 1735 1 15 1736 1 15 1737 1 15 1738 1 15 1739 1 15 1740 1 15 1741 1 15 1742 1 15 1743 1 15 1744 1 15 1745 1 15 1746 1 15 1747 1 15 1748 1 15 1749 1 15 1750 1 15 1751 1 15 1752 1 15 1753 1 15 1754 1 15 1755 1 15 1756 1 15 1757 1 15 1758 1 15 1759 1 15 1760 1 15 1761 1 15 1762 1 15 1763 1 15 1764 1 15 1765 1 15 1766 1 15 1767 1 15 1768 1 15 1769 1 15 1770 1 15 1771 1 15 1772 1 15 1773 1 15 1774 1 15 1775 1 15 1776 1 15 1777 1 15 1778 1 15 1779 1 15 1780 1 15 1781 1 15 1782 1 15 1783 1 15 1784 1 15 1785 1 15 1786 1 15 1787 1 15 1788 1 15 1789 1 15 1790 1 15 1791 1 15 1792 1 15 1793 1 15 1794 1 15 1795 1 15 1796 1 15 1797 1 15 1798 1 15 1799 1 15 1800 1 15 1801 1 15 1802 1 15 1803 1 15 1804 1 15 1805 1 15 1806 1 15 1807 1 15 1808 1 15 1809 1 15 1810 1 15 1811 1 15 1812 1 15 1813 1 15 1814 1 15 1815 1 15 1816 1 15 1817 1 15 1818 1 15 1819 1 15 1820 1 15 1821 1 15 1822 1 15 1823 1 15 1824 1 15 1825 1 15 1826 1 15 1827 1 15 1828 1 15 1829 1 15 1830 1 15 1831 1 15 1832 1 15 1833 1 15 1834 1 15 1835 1 15 1836 1 15 1837 1 15 1838 1 15 1839 1 15 1840 1 15 1841 1 15 1842 1 15 1843 1 15 1844 1 15 1845 1 15 1846 1 15 1847 1 15 1848 1 15 1849 1 15 1850 1 15 1851 1 15 1852 1 15 1853 1 15 1854 1 15 1855 1 15 1856 1 15 1857 1 15 1858 1 15 1859 1 15 1860 1 15 1861 1 15 1862 1 15 1863 1 15 1864 1 15 1865 1 15 1866 1 15 1867 1 15 1868 1 15 1869 1 15 1870 1 15 1871 1 15 1872 1 15 1873 1 15 1874 1 15 1875 1 15 1876 1 15 1877 1 15 1878 1 15 1879 1 15 1880 1 15 1881 1 15 1882 1 15 1883 1 15 1884 1 15 1885 1 15 1886 1 15 1887 1 15 1888 1 15 1889 1 15 1890 1 15 1891 1 15 1892 1 15 1893 1 15 1894 1 15 1895 1 15 1896 1 15 1897 1 15 1898 1 15 1899 1 15 1900 1 15 1901 1 15 1902 1 15 1903 1 15 1904 1 15 1905 1 15 1906 1 15 1907 1 15 1908 1 15 1909 1 15 1910 1 15 1911 1 15 1912 1 15 1913 1 15 1914 1 15 1915 1 15 1916 1 15 1917 1 15 1918 1 15 1919 1 15 1920 1 15 1921 1 15 1922 1 15 1923 1 15 1924 1 15 1925 1 15 1926 1 15 2179 1 15 2180 1 15 2181 1 15 2182 1 15 2183 1 15 2184 1 15 2185 1 15 2186 1 15 2187 1 15 2188 1 15 2189 1 15 2190 1 15 2191 1 15 2192 1 15 2193 1 15 2194 1 15 2195 1 15 2196 1 15 2197 1 15 2198 1 15 2199 1 15 2200 1 15 2201 1 15 2202 1 15 2203 1 15 2204 1 15 2205 1 15 2206 1 15 2207 1 15 2208 1 15 2209 1 15 2210 1 15 2211 1 15 2212 1 15 2213 1 15 2214 1 15 2215 1 15 2216 1 15 2217 1 15 2218 1 15 2219 1 15 2220 1 15 2221 1 15 2222 1 15 2223 1 15 2224 1 15 2225 1 15 2226 1 15 2227 1 15 2228 1 15 2229 1 15 2230 1 15 2231 1 15 2232 1 15 2233 1 15 2234 1 15 2235 1 15 2236 1 15 2237 1 15 2238 1 15 2239 1 15 2240 1 15 2241 1 15 2242 1 15 2243 1 15 2244 1 15 2245 1 15 2246 1 15 2247 1 15 2248 1 15 2249 1 15 2250 1 15 2251 1 15 2252 1 15 2253 1 15 2254 1 15 2255 1 15 2256 1 15 2257 1 15 2258 1 15 2259 1 15 2260 1 15 2261 1 15 2262 1 15 2263 1 15 2264 1 15 2265 1 15 2266 1 15 2267 1 15 2268 1 15 2269 1 15 2270 1 15 2271 1 15 2272 1 15 2273 1 15 2274 1 15 2275 1 15 2276 1 15 2277 1 15 2278 1 15 2279 1 15 2280 1 15 2281 1 15 2282 1 15 2283 1 15 2284 1 15 2285 1 15 2286 1 15 2287 1 15 2288 1 15 2289 1 15 2290 1 15 2291 1 15 2292 1 15 2293 1 15 2294 1 15 2295 1 15 2296 1 15 2297 1 15 2298 1 15 2299 1 15 2300 1 15 2301 1 15 2302 1 15 2303 1 15 2304 1 15 2305 1 15 2306 1 15 2307 1 15 2308 1 15 2309 1 15 2310 1 15 2311 1 15 2312 1 15 2313 1 15 2314 1 15 2315 1 15 2316 1 15 2317 1 15 2318 1 15 2319 1 15 2320 1 15 2321 1 15 2322 1 15 2323 1 15 2324 1 15 2325 1 15 2326 1 15 2327 1 15 2328 1 15 2329 1 15 2330 1 15 2331 1 15 2332 1 15 2333 1 15 2334 1 15 2335 1 15 2336 1 15 2337 1 15 2338 1 15 2339 1 15 2340 1 15 2341 1 15 2342 1 15 2343 1 15 2344 1 15 2345 1 15 2346 1 15 2347 1 15 2348 1 15 2349 1 15 2350 1 15 2351 1 15 2352 1 15 2353 1 15 2354 1 15 2355 1 15 2356 1 15 2357 1 15 2358 1 15 2359 1 15 2360 1 15 2361 1 15 2362 1 15 2363 1 15 2364 1 15 2365 1 15 2366 1 15 2367 1 15 2368 1 15 2369 1 15 2370 1 15 2371 1 15 2372 1 15 2373 1 15 2374 1 15 2375 1 15 2376 1 15 2377 1 15 2378 1 15 2379 1 15 2380 1 15 2381 1 15 2382 1 15 2383 1 15 2384 1 15 2385 1 15 2386 1 15 2387 1 15 2388 1 15 2389 1 15 2390 1 15 2391 1 15 2392 1 15 2393 1 15 2394 1 15 2395 1 15 2396 1 15 2397 1 15 2398 1 15 2399 1 15 2400 1 15 2401 1 15 2402 1 15 2403 1 15 2404 1 15 2405 1 15 2406 1 15 2407 1 15 2408 1 15 2409 1 15 2410 1 15 2411 1 15 2412 1 15 2413 1 15 2414 1 15 2415 1 15 2416 1 15 2417 1 15 2418 1 15 2419 1 15 2420 1 15 2421 1 15 2422 1 15 2423 1 15 2424 1 15 2425 1 15 2426 1 15 2427 1 15 2428 1 15 2429 1 15 2430 1 16 1 1 16 2 1 16 3 1 16 4 1 16 5 1 16 6 1 16 7 1 16 8 1 16 9 1 16 10 1 16 11 1 16 12 1 16 13 1 16 14 1 16 15 1 16 16 1 16 17 1 16 18 1 16 19 1 16 20 1 16 21 1 16 22 1 16 23 1 16 24 1 16 25 1 16 26 1 16 27 1 16 28 1 16 29 1 16 30 1 16 31 1 16 32 1 16 33 1 16 34 1 16 35 1 16 36 1 16 121 1 16 122 1 16 123 1 16 124 1 16 125 1 16 126 1 16 127 1 16 128 1 16 129 1 16 130 1 16 131 1 16 132 1 16 133 1 16 134 1 16 135 1 16 136 1 16 137 1 16 138 1 16 139 1 16 140 1 16 141 1 16 142 1 16 143 1 16 144 1 16 145 1 16 146 1 16 147 1 16 148 1 16 149 1 16 150 1 16 151 1 16 152 1 16 153 1 16 154 1 16 155 1 16 156 1 16 157 1 16 158 1 16 159 1 16 160 1 16 161 1 16 162 1 16 163 1 16 164 1 16 165 1 16 166 1 16 167 1 16 168 1 16 169 1 16 170 1 16 171 1 16 172 1 16 173 1 16 174 1 16 175 1 16 176 1 16 177 1 16 178 1 16 179 1 16 180 1 16 181 1 16 182 1 16 183 1 16 184 1 16 185 1 16 186 1 16 187 1 16 188 1 16 189 1 16 190 1 16 191 1 16 192 1 16 193 1 16 194 1 16 195 1 16 196 1 16 197 1 16 198 1 16 199 1 16 200 1 16 201 1 16 202 1 16 203 1 16 204 1 16 331 1 16 332 1 16 333 1 16 334 1 16 335 1 16 336 1 16 337 1 16 338 1 16 339 1 16 340 1 16 341 1 16 342 1 16 343 1 16 344 1 16 345 1 16 346 1 16 347 1 16 348 1 16 349 1 16 350 1 16 351 1 16 352 1 16 353 1 16 354 1 16 355 1 16 356 1 16 357 1 16 358 1 16 359 1 16 360 1 16 361 1 16 362 1 16 363 1 16 364 1 16 365 1 16 366 1 16 367 1 16 368 1 16 369 1 16 370 1 16 371 1 16 372 1 16 373 1 16 374 1 16 375 1 16 376 1 16 377 1 16 378 1 16 379 1 16 380 1 16 381 1 16 382 1 16 383 1 16 384 1 16 385 1 16 386 1 16 387 1 16 388 1 16 389 1 16 390 1 16 391 1 16 392 1 16 393 1 16 394 1 16 395 1 16 396 1 16 397 1 16 398 1 16 399 1 16 400 1 16 401 1 16 402 1 16 403 1 16 404 1 16 405 1 16 406 1 16 407 1 16 408 1 16 409 1 16 410 1 16 411 1 16 412 1 16 413 1 16 414 1 16 541 1 16 542 1 16 543 1 16 544 1 16 545 1 16 546 1 16 547 1 16 548 1 16 549 1 16 550 1 16 551 1 16 552 1 16 553 1 16 554 1 16 555 1 16 556 1 16 557 1 16 558 1 16 559 1 16 560 1 16 561 1 16 562 1 16 563 1 16 564 1 16 565 1 16 566 1 16 567 1 16 568 1 16 569 1 16 570 1 16 571 1 16 572 1 16 573 1 16 574 1 16 575 1 16 576 1 16 577 1 16 578 1 16 579 1 16 580 1 16 581 1 16 582 1 16 583 1 16 584 1 16 585 1 16 586 1 16 587 1 16 588 1 16 589 1 16 590 1 16 591 1 16 592 1 16 593 1 16 594 1 16 595 1 16 596 1 16 597 1 16 598 1 16 599 1 16 600 1 16 601 1 16 602 1 16 603 1 16 604 1 16 605 1 16 606 1 16 607 1 16 608 1 16 609 1 16 610 1 16 611 1 16 612 1 16 613 1 16 614 1 16 615 1 16 616 1 16 617 1 16 618 1 16 619 1 16 620 1 16 621 1 16 622 1 16 623 1 16 624 1 16 625 1 16 626 1 16 627 1 16 628 1 16 629 1 16 630 1 16 631 1 16 632 1 16 633 1 16 634 1 16 635 1 16 636 1 16 637 1 16 638 1 16 639 1 16 640 1 16 641 1 16 642 1 16 643 1 16 644 1 16 645 1 16 646 1 16 647 1 16 648 1 16 649 1 16 650 1 16 651 1 16 652 1 16 653 1 16 654 1 16 655 1 16 656 1 16 657 1 16 658 1 16 659 1 16 660 1 16 661 1 16 662 1 16 663 1 16 664 1 16 665 1 16 666 1 16 1717 1 16 1718 1 16 1719 1 16 1720 1 16 1721 1 16 1722 1 16 1723 1 16 1724 1 16 1725 1 16 1726 1 16 1727 1 16 1728 1 16 1729 1 16 1730 1 16 1731 1 16 1732 1 16 1733 1 16 1734 1 16 1735 1 16 1736 1 16 1737 1 16 1738 1 16 1739 1 16 1740 1 16 1741 1 16 1742 1 16 1743 1 16 1744 1 16 1745 1 16 1746 1 16 1747 1 16 1748 1 16 1749 1 16 1750 1 16 1751 1 16 1752 1 16 1753 1 16 1754 1 16 1755 1 16 1756 1 16 1757 1 16 1758 1 16 1759 1 16 1760 1 16 1761 1 16 1762 1 16 1763 1 16 1764 1 16 1765 1 16 1766 1 16 1767 1 16 1768 1 16 1769 1 16 1770 1 16 1771 1 16 1772 1 16 1773 1 16 1774 1 16 1775 1 16 1776 1 16 1777 1 16 1778 1 16 1779 1 16 1780 1 16 1781 1 16 1782 1 16 1783 1 16 1784 1 16 1785 1 16 1786 1 16 1787 1 16 1788 1 16 1789 1 16 1790 1 16 1791 1 16 1792 1 16 1793 1 16 1794 1 16 1795 1 16 1796 1 16 1797 1 16 1798 1 16 1799 1 16 1800 1 16 1927 1 16 1928 1 16 1929 1 16 1930 1 16 1931 1 16 1932 1 16 1933 1 16 1934 1 16 1935 1 16 1936 1 16 1937 1 16 1938 1 16 1939 1 16 1940 1 16 1941 1 16 1942 1 16 1943 1 16 1944 1 16 1945 1 16 1946 1 16 1947 1 16 1948 1 16 1949 1 16 1950 1 16 1951 1 16 1952 1 16 1953 1 16 1954 1 16 1955 1 16 1956 1 16 1957 1 16 1958 1 16 1959 1 16 1960 1 16 1961 1 16 1962 1 16 1963 1 16 1964 1 16 1965 1 16 1966 1 16 1967 1 16 1968 1 16 1969 1 16 1970 1 16 1971 1 16 1972 1 16 1973 1 16 1974 1 16 1975 1 16 1976 1 16 1977 1 16 1978 1 16 1979 1 16 1980 1 16 1981 1 16 1982 1 16 1983 1 16 1984 1 16 1985 1 16 1986 1 16 1987 1 16 1988 1 16 1989 1 16 1990 1 16 1991 1 16 1992 1 16 1993 1 16 1994 1 16 1995 1 16 1996 1 16 1997 1 16 1998 1 16 1999 1 16 2000 1 16 2001 1 16 2002 1 16 2003 1 16 2004 1 16 2005 1 16 2006 1 16 2007 1 16 2008 1 16 2009 1 16 2010 1 16 2011 1 16 2012 1 16 2013 1 16 2014 1 16 2015 1 16 2016 1 16 2017 1 16 2018 1 16 2019 1 16 2020 1 16 2021 1 16 2022 1 16 2023 1 16 2024 1 16 2025 1 16 2026 1 16 2027 1 16 2028 1 16 2029 1 16 2030 1 16 2031 1 16 2032 1 16 2033 1 16 2034 1 16 2035 1 16 2036 1 16 2037 1 16 2038 1 16 2039 1 16 2040 1 16 2041 1 16 2042 1 16 2043 1 16 2044 1 16 2045 1 16 2046 1 16 2047 1 16 2048 1 16 2049 1 16 2050 1 16 2051 1 16 2052 1 16 2179 1 16 2180 1 16 2181 1 16 2182 1 16 2183 1 16 2184 1 16 2185 1 16 2186 1 16 2187 1 16 2188 1 16 2189 1 16 2190 1 16 2191 1 16 2192 1 16 2193 1 16 2194 1 16 2195 1 16 2196 1 16 2197 1 16 2198 1 16 2199 1 16 2200 1 16 2201 1 16 2202 1 16 2203 1 16 2204 1 16 2205 1 16 2206 1 16 2207 1 16 2208 1 16 2209 1 16 2210 1 16 2211 1 16 2212 1 16 2213 1 16 2214 1 16 2215 1 16 2216 1 16 2217 1 16 2218 1 16 2219 1 16 2220 1 16 2221 1 16 2222 1 16 2223 1 16 2224 1 16 2225 1 16 2226 1 16 2227 1 16 2228 1 16 2229 1 16 2230 1 16 2231 1 16 2232 1 16 2233 1 16 2234 1 16 2235 1 16 2236 1 16 2237 1 16 2238 1 16 2239 1 16 2240 1 16 2241 1 16 2242 1 16 2243 1 16 2244 1 16 2245 1 16 2246 1 16 2247 1 16 2248 1 16 2249 1 16 2250 1 16 2251 1 16 2252 1 16 2253 1 16 2254 1 16 2255 1 16 2256 1 16 2257 1 16 2258 1 16 2259 1 16 2260 1 16 2261 1 16 2262 1 16 2263 1 16 2264 1 16 2265 1 16 2266 1 16 2267 1 16 2268 1 16 2269 1 16 2270 1 16 2271 1 16 2272 1 16 2273 1 16 2274 1 16 2275 1 16 2276 1 16 2277 1 16 2278 1 16 2279 1 16 2280 1 16 2281 1 16 2282 1 16 2283 1 16 2284 1 16 2285 1 16 2286 1 16 2287 1 16 2288 1 16 2289 1 16 2290 1 16 2291 1 16 2292 1 16 2293 1 16 2294 1 16 2295 1 16 2296 1 16 2297 1 16 2298 1 16 2299 1 16 2300 1 16 2301 1 16 2302 1 16 2303 1 16 2304 1 16 2431 1 16 2432 1 16 2433 1 16 2434 1 16 2435 1 16 2436 1 16 2437 1 16 2438 1 16 2439 1 16 2440 1 16 2441 1 16 2442 1 16 2443 1 16 2444 1 16 2445 1 16 2446 1 16 2447 1 16 2448 1 16 2449 1 16 2450 1 16 2451 1 16 2452 1 16 2453 1 16 2454 1 16 2455 1 16 2456 1 16 2457 1 16 2458 1 16 2459 1 16 2460 1 16 2461 1 16 2462 1 16 2463 1 16 2464 1 16 2465 1 16 2466 1 16 2467 1 16 2468 1 16 2469 1 16 2470 1 16 2471 1 16 2472 1 16 2473 1 16 2474 1 16 2475 1 16 2476 1 16 2477 1 16 2478 1 16 2479 1 16 2480 1 16 2481 1 16 2482 1 16 2483 1 16 2484 1 16 2485 1 16 2486 1 16 2487 1 16 2488 1 16 2489 1 16 2490 1 16 2491 1 16 2492 1 16 2493 1 16 2494 1 16 2495 1 16 2496 1 16 2497 1 16 2498 1 16 2499 1 16 2500 1 16 2501 1 16 2502 1 16 2503 1 16 2504 1 16 2505 1 16 2506 1 16 2507 1 16 2508 1 16 2509 1 16 2510 1 16 2511 1 16 2512 1 16 2513 1 16 2514 1 16 2515 1 16 2516 1 16 2517 1 16 2518 1 16 2519 1 16 2520 1 16 2521 1 16 2522 1 16 2523 1 16 2524 1 16 2525 1 16 2526 1 16 2527 1 16 2528 1 16 2529 1 16 2530 1 16 2531 1 16 2532 1 16 2533 1 16 2534 1 16 2535 1 16 2536 1 16 2537 1 16 2538 1 16 2539 1 16 2540 1 16 2541 1 16 2542 1 16 2543 1 16 2544 1 16 2545 1 16 2546 1 16 2547 1 16 2548 1 16 2549 1 16 2550 1 16 2551 1 16 2552 1 16 2553 1 16 2554 1 16 2555 1 16 2556 1 17 1 1 17 2 1 17 3 1 17 4 1 17 5 1 17 6 1 17 7 1 17 8 1 17 37 1 17 38 1 17 39 1 17 40 1 17 41 1 17 42 1 17 43 1 17 44 1 17 45 1 17 46 1 17 47 1 17 48 1 17 49 1 17 50 1 17 51 1 17 52 1 17 53 1 17 54 1 17 55 1 17 56 1 17 57 1 17 58 1 17 59 1 17 60 1 17 61 1 17 62 1 17 63 1 17 64 1 17 121 1 17 122 1 17 123 1 17 124 1 17 125 1 17 126 1 17 127 1 17 128 1 17 129 1 17 130 1 17 131 1 17 132 1 17 133 1 17 134 1 17 135 1 17 136 1 17 137 1 17 138 1 17 139 1 17 140 1 17 141 1 17 142 1 17 143 1 17 144 1 17 145 1 17 146 1 17 147 1 17 148 1 17 205 1 17 206 1 17 207 1 17 208 1 17 209 1 17 210 1 17 211 1 17 212 1 17 213 1 17 214 1 17 215 1 17 216 1 17 217 1 17 218 1 17 219 1 17 220 1 17 221 1 17 222 1 17 223 1 17 224 1 17 225 1 17 226 1 17 227 1 17 228 1 17 229 1 17 230 1 17 231 1 17 232 1 17 233 1 17 234 1 17 235 1 17 236 1 17 237 1 17 238 1 17 239 1 17 240 1 17 241 1 17 242 1 17 243 1 17 244 1 17 245 1 17 246 1 17 247 1 17 248 1 17 249 1 17 250 1 17 251 1 17 252 1 17 253 1 17 254 1 17 255 1 17 256 1 17 257 1 17 258 1 17 259 1 17 260 1 17 331 1 17 332 1 17 333 1 17 334 1 17 335 1 17 336 1 17 337 1 17 338 1 17 339 1 17 340 1 17 341 1 17 342 1 17 343 1 17 344 1 17 345 1 17 346 1 17 347 1 17 348 1 17 349 1 17 350 1 17 351 1 17 352 1 17 353 1 17 354 1 17 355 1 17 356 1 17 357 1 17 358 1 17 415 1 17 416 1 17 417 1 17 418 1 17 419 1 17 420 1 17 421 1 17 422 1 17 423 1 17 424 1 17 425 1 17 426 1 17 427 1 17 428 1 17 429 1 17 430 1 17 431 1 17 432 1 17 433 1 17 434 1 17 435 1 17 436 1 17 437 1 17 438 1 17 439 1 17 440 1 17 441 1 17 442 1 17 443 1 17 444 1 17 445 1 17 446 1 17 447 1 17 448 1 17 449 1 17 450 1 17 451 1 17 452 1 17 453 1 17 454 1 17 455 1 17 456 1 17 457 1 17 458 1 17 459 1 17 460 1 17 461 1 17 462 1 17 463 1 17 464 1 17 465 1 17 466 1 17 467 1 17 468 1 17 469 1 17 470 1 17 541 1 17 542 1 17 543 1 17 544 1 17 545 1 17 546 1 17 547 1 17 548 1 17 549 1 17 550 1 17 551 1 17 552 1 17 553 1 17 554 1 17 555 1 17 556 1 17 557 1 17 558 1 17 559 1 17 560 1 17 561 1 17 562 1 17 563 1 17 564 1 17 565 1 17 566 1 17 567 1 17 568 1 17 569 1 17 570 1 17 571 1 17 572 1 17 573 1 17 574 1 17 575 1 17 576 1 17 577 1 17 578 1 17 579 1 17 580 1 17 581 1 17 582 1 17 583 1 17 584 1 17 585 1 17 586 1 17 587 1 17 588 1 17 589 1 17 590 1 17 591 1 17 592 1 17 593 1 17 594 1 17 595 1 17 596 1 17 667 1 17 668 1 17 669 1 17 670 1 17 671 1 17 672 1 17 673 1 17 674 1 17 675 1 17 676 1 17 677 1 17 678 1 17 679 1 17 680 1 17 681 1 17 682 1 17 683 1 17 684 1 17 685 1 17 686 1 17 687 1 17 688 1 17 689 1 17 690 1 17 691 1 17 692 1 17 693 1 17 694 1 17 695 1 17 696 1 17 697 1 17 698 1 17 699 1 17 700 1 17 701 1 17 702 1 17 703 1 17 704 1 17 705 1 17 706 1 17 707 1 17 708 1 17 709 1 17 710 1 17 711 1 17 712 1 17 713 1 17 714 1 17 715 1 17 716 1 17 717 1 17 718 1 17 719 1 17 720 1 17 721 1 17 722 1 17 723 1 17 724 1 17 725 1 17 726 1 17 727 1 17 728 1 17 729 1 17 730 1 17 731 1 17 732 1 17 733 1 17 734 1 17 735 1 17 736 1 17 1717 1 17 1718 1 17 1719 1 17 1720 1 17 1721 1 17 1722 1 17 1723 1 17 1724 1 17 1725 1 17 1726 1 17 1727 1 17 1728 1 17 1729 1 17 1730 1 17 1731 1 17 1732 1 17 1733 1 17 1734 1 17 1735 1 17 1736 1 17 1737 1 17 1738 1 17 1739 1 17 1740 1 17 1741 1 17 1742 1 17 1743 1 17 1744 1 17 1801 1 17 1802 1 17 1803 1 17 1804 1 17 1805 1 17 1806 1 17 1807 1 17 1808 1 17 1809 1 17 1810 1 17 1811 1 17 1812 1 17 1813 1 17 1814 1 17 1815 1 17 1816 1 17 1817 1 17 1818 1 17 1819 1 17 1820 1 17 1821 1 17 1822 1 17 1823 1 17 1824 1 17 1825 1 17 1826 1 17 1827 1 17 1828 1 17 1829 1 17 1830 1 17 1831 1 17 1832 1 17 1833 1 17 1834 1 17 1835 1 17 1836 1 17 1837 1 17 1838 1 17 1839 1 17 1840 1 17 1841 1 17 1842 1 17 1843 1 17 1844 1 17 1845 1 17 1846 1 17 1847 1 17 1848 1 17 1849 1 17 1850 1 17 1851 1 17 1852 1 17 1853 1 17 1854 1 17 1855 1 17 1856 1 17 1927 1 17 1928 1 17 1929 1 17 1930 1 17 1931 1 17 1932 1 17 1933 1 17 1934 1 17 1935 1 17 1936 1 17 1937 1 17 1938 1 17 1939 1 17 1940 1 17 1941 1 17 1942 1 17 1943 1 17 1944 1 17 1945 1 17 1946 1 17 1947 1 17 1948 1 17 1949 1 17 1950 1 17 1951 1 17 1952 1 17 1953 1 17 1954 1 17 1955 1 17 1956 1 17 1957 1 17 1958 1 17 1959 1 17 1960 1 17 1961 1 17 1962 1 17 1963 1 17 1964 1 17 1965 1 17 1966 1 17 1967 1 17 1968 1 17 1969 1 17 1970 1 17 1971 1 17 1972 1 17 1973 1 17 1974 1 17 1975 1 17 1976 1 17 1977 1 17 1978 1 17 1979 1 17 1980 1 17 1981 1 17 1982 1 17 2053 1 17 2054 1 17 2055 1 17 2056 1 17 2057 1 17 2058 1 17 2059 1 17 2060 1 17 2061 1 17 2062 1 17 2063 1 17 2064 1 17 2065 1 17 2066 1 17 2067 1 17 2068 1 17 2069 1 17 2070 1 17 2071 1 17 2072 1 17 2073 1 17 2074 1 17 2075 1 17 2076 1 17 2077 1 17 2078 1 17 2079 1 17 2080 1 17 2081 1 17 2082 1 17 2083 1 17 2084 1 17 2085 1 17 2086 1 17 2087 1 17 2088 1 17 2089 1 17 2090 1 17 2091 1 17 2092 1 17 2093 1 17 2094 1 17 2095 1 17 2096 1 17 2097 1 17 2098 1 17 2099 1 17 2100 1 17 2101 1 17 2102 1 17 2103 1 17 2104 1 17 2105 1 17 2106 1 17 2107 1 17 2108 1 17 2109 1 17 2110 1 17 2111 1 17 2112 1 17 2113 1 17 2114 1 17 2115 1 17 2116 1 17 2117 1 17 2118 1 17 2119 1 17 2120 1 17 2121 1 17 2122 1 17 2179 1 17 2180 1 17 2181 1 17 2182 1 17 2183 1 17 2184 1 17 2185 1 17 2186 1 17 2187 1 17 2188 1 17 2189 1 17 2190 1 17 2191 1 17 2192 1 17 2193 1 17 2194 1 17 2195 1 17 2196 1 17 2197 1 17 2198 1 17 2199 1 17 2200 1 17 2201 1 17 2202 1 17 2203 1 17 2204 1 17 2205 1 17 2206 1 17 2207 1 17 2208 1 17 2209 1 17 2210 1 17 2211 1 17 2212 1 17 2213 1 17 2214 1 17 2215 1 17 2216 1 17 2217 1 17 2218 1 17 2219 1 17 2220 1 17 2221 1 17 2222 1 17 2223 1 17 2224 1 17 2225 1 17 2226 1 17 2227 1 17 2228 1 17 2229 1 17 2230 1 17 2231 1 17 2232 1 17 2233 1 17 2234 1 17 2305 1 17 2306 1 17 2307 1 17 2308 1 17 2309 1 17 2310 1 17 2311 1 17 2312 1 17 2313 1 17 2314 1 17 2315 1 17 2316 1 17 2317 1 17 2318 1 17 2319 1 17 2320 1 17 2321 1 17 2322 1 17 2323 1 17 2324 1 17 2325 1 17 2326 1 17 2327 1 17 2328 1 17 2329 1 17 2330 1 17 2331 1 17 2332 1 17 2333 1 17 2334 1 17 2335 1 17 2336 1 17 2337 1 17 2338 1 17 2339 1 17 2340 1 17 2341 1 17 2342 1 17 2343 1 17 2344 1 17 2345 1 17 2346 1 17 2347 1 17 2348 1 17 2349 1 17 2350 1 17 2351 1 17 2352 1 17 2353 1 17 2354 1 17 2355 1 17 2356 1 17 2357 1 17 2358 1 17 2359 1 17 2360 1 17 2361 1 17 2362 1 17 2363 1 17 2364 1 17 2365 1 17 2366 1 17 2367 1 17 2368 1 17 2369 1 17 2370 1 17 2371 1 17 2372 1 17 2373 1 17 2374 1 17 2431 1 17 2432 1 17 2433 1 17 2434 1 17 2435 1 17 2436 1 17 2437 1 17 2438 1 17 2439 1 17 2440 1 17 2441 1 17 2442 1 17 2443 1 17 2444 1 17 2445 1 17 2446 1 17 2447 1 17 2448 1 17 2449 1 17 2450 1 17 2451 1 17 2452 1 17 2453 1 17 2454 1 17 2455 1 17 2456 1 17 2457 1 17 2458 1 17 2459 1 17 2460 1 17 2461 1 17 2462 1 17 2463 1 17 2464 1 17 2465 1 17 2466 1 17 2467 1 17 2468 1 17 2469 1 17 2470 1 17 2471 1 17 2472 1 17 2473 1 17 2474 1 17 2475 1 17 2476 1 17 2477 1 17 2478 1 17 2479 1 17 2480 1 17 2481 1 17 2482 1 17 2483 1 17 2484 1 17 2485 1 17 2486 1 17 2487 1 17 2488 1 17 2489 1 17 2490 1 17 2491 1 17 2492 1 17 2493 1 17 2494 1 17 2495 1 17 2496 1 17 2497 1 17 2498 1 17 2499 1 17 2500 1 17 2557 1 17 2558 1 17 2559 1 17 2560 1 17 2561 1 17 2562 1 17 2563 1 17 2564 1 17 2565 1 17 2566 1 17 2567 1 17 2568 1 17 2569 1 17 2570 1 17 2571 1 17 2572 1 17 2573 1 17 2574 1 17 2575 1 17 2576 1 17 2577 1 17 2578 1 17 2579 1 17 2580 1 17 2581 1 17 2582 1 17 2583 1 17 2584 1 17 2585 1 17 2586 1 17 2587 1 17 2588 1 17 2589 1 17 2590 1 17 2591 1 17 2592 1 17 2593 1 17 2594 1 17 2595 1 17 2596 1 17 2597 1 17 2598 1 17 2599 1 17 2600 1 17 2601 1 17 2602 1 17 2603 1 17 2604 1 17 2605 1 17 2606 1 17 2607 1 17 2608 1 17 2609 1 17 2610 1 17 2611 1 17 2612 1 18 1 1 18 9 1 18 10 1 18 11 1 18 12 1 18 13 1 18 14 1 18 15 1 18 37 1 18 38 1 18 39 1 18 40 1 18 41 1 18 42 1 18 43 1 18 65 1 18 66 1 18 67 1 18 68 1 18 69 1 18 70 1 18 71 1 18 72 1 18 73 1 18 74 1 18 75 1 18 76 1 18 77 1 18 78 1 18 79 1 18 80 1 18 81 1 18 82 1 18 83 1 18 84 1 18 85 1 18 121 1 18 122 1 18 123 1 18 124 1 18 125 1 18 126 1 18 127 1 18 149 1 18 150 1 18 151 1 18 152 1 18 153 1 18 154 1 18 155 1 18 156 1 18 157 1 18 158 1 18 159 1 18 160 1 18 161 1 18 162 1 18 163 1 18 164 1 18 165 1 18 166 1 18 167 1 18 168 1 18 169 1 18 205 1 18 206 1 18 207 1 18 208 1 18 209 1 18 210 1 18 211 1 18 212 1 18 213 1 18 214 1 18 215 1 18 216 1 18 217 1 18 218 1 18 219 1 18 220 1 18 221 1 18 222 1 18 223 1 18 224 1 18 225 1 18 261 1 18 262 1 18 263 1 18 264 1 18 265 1 18 266 1 18 267 1 18 268 1 18 269 1 18 270 1 18 271 1 18 272 1 18 273 1 18 274 1 18 275 1 18 276 1 18 277 1 18 278 1 18 279 1 18 280 1 18 281 1 18 282 1 18 283 1 18 284 1 18 285 1 18 286 1 18 287 1 18 288 1 18 289 1 18 290 1 18 291 1 18 292 1 18 293 1 18 294 1 18 295 1 18 331 1 18 332 1 18 333 1 18 334 1 18 335 1 18 336 1 18 337 1 18 359 1 18 360 1 18 361 1 18 362 1 18 363 1 18 364 1 18 365 1 18 366 1 18 367 1 18 368 1 18 369 1 18 370 1 18 371 1 18 372 1 18 373 1 18 374 1 18 375 1 18 376 1 18 377 1 18 378 1 18 379 1 18 415 1 18 416 1 18 417 1 18 418 1 18 419 1 18 420 1 18 421 1 18 422 1 18 423 1 18 424 1 18 425 1 18 426 1 18 427 1 18 428 1 18 429 1 18 430 1 18 431 1 18 432 1 18 433 1 18 434 1 18 435 1 18 471 1 18 472 1 18 473 1 18 474 1 18 475 1 18 476 1 18 477 1 18 478 1 18 479 1 18 480 1 18 481 1 18 482 1 18 483 1 18 484 1 18 485 1 18 486 1 18 487 1 18 488 1 18 489 1 18 490 1 18 491 1 18 492 1 18 493 1 18 494 1 18 495 1 18 496 1 18 497 1 18 498 1 18 499 1 18 500 1 18 501 1 18 502 1 18 503 1 18 504 1 18 505 1 18 541 1 18 542 1 18 543 1 18 544 1 18 545 1 18 546 1 18 547 1 18 548 1 18 549 1 18 550 1 18 551 1 18 552 1 18 553 1 18 554 1 18 555 1 18 556 1 18 557 1 18 558 1 18 559 1 18 560 1 18 561 1 18 597 1 18 598 1 18 599 1 18 600 1 18 601 1 18 602 1 18 603 1 18 604 1 18 605 1 18 606 1 18 607 1 18 608 1 18 609 1 18 610 1 18 611 1 18 612 1 18 613 1 18 614 1 18 615 1 18 616 1 18 617 1 18 618 1 18 619 1 18 620 1 18 621 1 18 622 1 18 623 1 18 624 1 18 625 1 18 626 1 18 627 1 18 628 1 18 629 1 18 630 1 18 631 1 18 667 1 18 668 1 18 669 1 18 670 1 18 671 1 18 672 1 18 673 1 18 674 1 18 675 1 18 676 1 18 677 1 18 678 1 18 679 1 18 680 1 18 681 1 18 682 1 18 683 1 18 684 1 18 685 1 18 686 1 18 687 1 18 688 1 18 689 1 18 690 1 18 691 1 18 692 1 18 693 1 18 694 1 18 695 1 18 696 1 18 697 1 18 698 1 18 699 1 18 700 1 18 701 1 18 737 1 18 738 1 18 739 1 18 740 1 18 741 1 18 742 1 18 743 1 18 744 1 18 745 1 18 746 1 18 747 1 18 748 1 18 749 1 18 750 1 18 751 1 18 752 1 18 753 1 18 754 1 18 755 1 18 756 1 18 757 1 18 758 1 18 759 1 18 760 1 18 761 1 18 762 1 18 763 1 18 764 1 18 765 1 18 766 1 18 767 1 18 768 1 18 769 1 18 770 1 18 771 1 18 1717 1 18 1718 1 18 1719 1 18 1720 1 18 1721 1 18 1722 1 18 1723 1 18 1745 1 18 1746 1 18 1747 1 18 1748 1 18 1749 1 18 1750 1 18 1751 1 18 1752 1 18 1753 1 18 1754 1 18 1755 1 18 1756 1 18 1757 1 18 1758 1 18 1759 1 18 1760 1 18 1761 1 18 1762 1 18 1763 1 18 1764 1 18 1765 1 18 1801 1 18 1802 1 18 1803 1 18 1804 1 18 1805 1 18 1806 1 18 1807 1 18 1808 1 18 1809 1 18 1810 1 18 1811 1 18 1812 1 18 1813 1 18 1814 1 18 1815 1 18 1816 1 18 1817 1 18 1818 1 18 1819 1 18 1820 1 18 1821 1 18 1857 1 18 1858 1 18 1859 1 18 1860 1 18 1861 1 18 1862 1 18 1863 1 18 1864 1 18 1865 1 18 1866 1 18 1867 1 18 1868 1 18 1869 1 18 1870 1 18 1871 1 18 1872 1 18 1873 1 18 1874 1 18 1875 1 18 1876 1 18 1877 1 18 1878 1 18 1879 1 18 1880 1 18 1881 1 18 1882 1 18 1883 1 18 1884 1 18 1885 1 18 1886 1 18 1887 1 18 1888 1 18 1889 1 18 1890 1 18 1891 1 18 1927 1 18 1928 1 18 1929 1 18 1930 1 18 1931 1 18 1932 1 18 1933 1 18 1934 1 18 1935 1 18 1936 1 18 1937 1 18 1938 1 18 1939 1 18 1940 1 18 1941 1 18 1942 1 18 1943 1 18 1944 1 18 1945 1 18 1946 1 18 1947 1 18 1983 1 18 1984 1 18 1985 1 18 1986 1 18 1987 1 18 1988 1 18 1989 1 18 1990 1 18 1991 1 18 1992 1 18 1993 1 18 1994 1 18 1995 1 18 1996 1 18 1997 1 18 1998 1 18 1999 1 18 2000 1 18 2001 1 18 2002 1 18 2003 1 18 2004 1 18 2005 1 18 2006 1 18 2007 1 18 2008 1 18 2009 1 18 2010 1 18 2011 1 18 2012 1 18 2013 1 18 2014 1 18 2015 1 18 2016 1 18 2017 1 18 2053 1 18 2054 1 18 2055 1 18 2056 1 18 2057 1 18 2058 1 18 2059 1 18 2060 1 18 2061 1 18 2062 1 18 2063 1 18 2064 1 18 2065 1 18 2066 1 18 2067 1 18 2068 1 18 2069 1 18 2070 1 18 2071 1 18 2072 1 18 2073 1 18 2074 1 18 2075 1 18 2076 1 18 2077 1 18 2078 1 18 2079 1 18 2080 1 18 2081 1 18 2082 1 18 2083 1 18 2084 1 18 2085 1 18 2086 1 18 2087 1 18 2123 1 18 2124 1 18 2125 1 18 2126 1 18 2127 1 18 2128 1 18 2129 1 18 2130 1 18 2131 1 18 2132 1 18 2133 1 18 2134 1 18 2135 1 18 2136 1 18 2137 1 18 2138 1 18 2139 1 18 2140 1 18 2141 1 18 2142 1 18 2143 1 18 2144 1 18 2145 1 18 2146 1 18 2147 1 18 2148 1 18 2149 1 18 2150 1 18 2151 1 18 2152 1 18 2153 1 18 2154 1 18 2155 1 18 2156 1 18 2157 1 18 2179 1 18 2180 1 18 2181 1 18 2182 1 18 2183 1 18 2184 1 18 2185 1 18 2186 1 18 2187 1 18 2188 1 18 2189 1 18 2190 1 18 2191 1 18 2192 1 18 2193 1 18 2194 1 18 2195 1 18 2196 1 18 2197 1 18 2198 1 18 2199 1 18 2235 1 18 2236 1 18 2237 1 18 2238 1 18 2239 1 18 2240 1 18 2241 1 18 2242 1 18 2243 1 18 2244 1 18 2245 1 18 2246 1 18 2247 1 18 2248 1 18 2249 1 18 2250 1 18 2251 1 18 2252 1 18 2253 1 18 2254 1 18 2255 1 18 2256 1 18 2257 1 18 2258 1 18 2259 1 18 2260 1 18 2261 1 18 2262 1 18 2263 1 18 2264 1 18 2265 1 18 2266 1 18 2267 1 18 2268 1 18 2269 1 18 2305 1 18 2306 1 18 2307 1 18 2308 1 18 2309 1 18 2310 1 18 2311 1 18 2312 1 18 2313 1 18 2314 1 18 2315 1 18 2316 1 18 2317 1 18 2318 1 18 2319 1 18 2320 1 18 2321 1 18 2322 1 18 2323 1 18 2324 1 18 2325 1 18 2326 1 18 2327 1 18 2328 1 18 2329 1 18 2330 1 18 2331 1 18 2332 1 18 2333 1 18 2334 1 18 2335 1 18 2336 1 18 2337 1 18 2338 1 18 2339 1 18 2375 1 18 2376 1 18 2377 1 18 2378 1 18 2379 1 18 2380 1 18 2381 1 18 2382 1 18 2383 1 18 2384 1 18 2385 1 18 2386 1 18 2387 1 18 2388 1 18 2389 1 18 2390 1 18 2391 1 18 2392 1 18 2393 1 18 2394 1 18 2395 1 18 2396 1 18 2397 1 18 2398 1 18 2399 1 18 2400 1 18 2401 1 18 2402 1 18 2403 1 18 2404 1 18 2405 1 18 2406 1 18 2407 1 18 2408 1 18 2409 1 18 2431 1 18 2432 1 18 2433 1 18 2434 1 18 2435 1 18 2436 1 18 2437 1 18 2438 1 18 2439 1 18 2440 1 18 2441 1 18 2442 1 18 2443 1 18 2444 1 18 2445 1 18 2446 1 18 2447 1 18 2448 1 18 2449 1 18 2450 1 18 2451 1 18 2452 1 18 2453 1 18 2454 1 18 2455 1 18 2456 1 18 2457 1 18 2458 1 18 2459 1 18 2460 1 18 2461 1 18 2462 1 18 2463 1 18 2464 1 18 2465 1 18 2501 1 18 2502 1 18 2503 1 18 2504 1 18 2505 1 18 2506 1 18 2507 1 18 2508 1 18 2509 1 18 2510 1 18 2511 1 18 2512 1 18 2513 1 18 2514 1 18 2515 1 18 2516 1 18 2517 1 18 2518 1 18 2519 1 18 2520 1 18 2521 1 18 2522 1 18 2523 1 18 2524 1 18 2525 1 18 2526 1 18 2527 1 18 2528 1 18 2529 1 18 2530 1 18 2531 1 18 2532 1 18 2533 1 18 2534 1 18 2535 1 18 2557 1 18 2558 1 18 2559 1 18 2560 1 18 2561 1 18 2562 1 18 2563 1 18 2564 1 18 2565 1 18 2566 1 18 2567 1 18 2568 1 18 2569 1 18 2570 1 18 2571 1 18 2572 1 18 2573 1 18 2574 1 18 2575 1 18 2576 1 18 2577 1 18 2578 1 18 2579 1 18 2580 1 18 2581 1 18 2582 1 18 2583 1 18 2584 1 18 2585 1 18 2586 1 18 2587 1 18 2588 1 18 2589 1 18 2590 1 18 2591 1 18 2613 1 18 2614 1 18 2615 1 18 2616 1 18 2617 1 18 2618 1 18 2619 1 18 2620 1 18 2621 1 18 2622 1 18 2623 1 18 2624 1 18 2625 1 18 2626 1 18 2627 1 18 2628 1 18 2629 1 18 2630 1 18 2631 1 18 2632 1 18 2633 1 19 2 1 19 9 1 19 16 1 19 17 1 19 18 1 19 19 1 19 20 1 19 21 1 19 37 1 19 44 1 19 45 1 19 46 1 19 47 1 19 48 1 19 49 1 19 65 1 19 66 1 19 67 1 19 68 1 19 69 1 19 70 1 19 86 1 19 87 1 19 88 1 19 89 1 19 90 1 19 91 1 19 92 1 19 93 1 19 94 1 19 95 1 19 96 1 19 97 1 19 98 1 19 99 1 19 100 1 19 121 1 19 128 1 19 129 1 19 130 1 19 131 1 19 132 1 19 133 1 19 149 1 19 150 1 19 151 1 19 152 1 19 153 1 19 154 1 19 170 1 19 171 1 19 172 1 19 173 1 19 174 1 19 175 1 19 176 1 19 177 1 19 178 1 19 179 1 19 180 1 19 181 1 19 182 1 19 183 1 19 184 1 19 205 1 19 206 1 19 207 1 19 208 1 19 209 1 19 210 1 19 226 1 19 227 1 19 228 1 19 229 1 19 230 1 19 231 1 19 232 1 19 233 1 19 234 1 19 235 1 19 236 1 19 237 1 19 238 1 19 239 1 19 240 1 19 261 1 19 262 1 19 263 1 19 264 1 19 265 1 19 266 1 19 267 1 19 268 1 19 269 1 19 270 1 19 271 1 19 272 1 19 273 1 19 274 1 19 275 1 19 296 1 19 297 1 19 298 1 19 299 1 19 300 1 19 301 1 19 302 1 19 303 1 19 304 1 19 305 1 19 306 1 19 307 1 19 308 1 19 309 1 19 310 1 19 311 1 19 312 1 19 313 1 19 314 1 19 315 1 19 331 1 19 338 1 19 339 1 19 340 1 19 341 1 19 342 1 19 343 1 19 359 1 19 360 1 19 361 1 19 362 1 19 363 1 19 364 1 19 380 1 19 381 1 19 382 1 19 383 1 19 384 1 19 385 1 19 386 1 19 387 1 19 388 1 19 389 1 19 390 1 19 391 1 19 392 1 19 393 1 19 394 1 19 415 1 19 416 1 19 417 1 19 418 1 19 419 1 19 420 1 19 436 1 19 437 1 19 438 1 19 439 1 19 440 1 19 441 1 19 442 1 19 443 1 19 444 1 19 445 1 19 446 1 19 447 1 19 448 1 19 449 1 19 450 1 19 471 1 19 472 1 19 473 1 19 474 1 19 475 1 19 476 1 19 477 1 19 478 1 19 479 1 19 480 1 19 481 1 19 482 1 19 483 1 19 484 1 19 485 1 19 506 1 19 507 1 19 508 1 19 509 1 19 510 1 19 511 1 19 512 1 19 513 1 19 514 1 19 515 1 19 516 1 19 517 1 19 518 1 19 519 1 19 520 1 19 521 1 19 522 1 19 523 1 19 524 1 19 525 1 19 541 1 19 542 1 19 543 1 19 544 1 19 545 1 19 546 1 19 562 1 19 563 1 19 564 1 19 565 1 19 566 1 19 567 1 19 568 1 19 569 1 19 570 1 19 571 1 19 572 1 19 573 1 19 574 1 19 575 1 19 576 1 19 597 1 19 598 1 19 599 1 19 600 1 19 601 1 19 602 1 19 603 1 19 604 1 19 605 1 19 606 1 19 607 1 19 608 1 19 609 1 19 610 1 19 611 1 19 632 1 19 633 1 19 634 1 19 635 1 19 636 1 19 637 1 19 638 1 19 639 1 19 640 1 19 641 1 19 642 1 19 643 1 19 644 1 19 645 1 19 646 1 19 647 1 19 648 1 19 649 1 19 650 1 19 651 1 19 667 1 19 668 1 19 669 1 19 670 1 19 671 1 19 672 1 19 673 1 19 674 1 19 675 1 19 676 1 19 677 1 19 678 1 19 679 1 19 680 1 19 681 1 19 702 1 19 703 1 19 704 1 19 705 1 19 706 1 19 707 1 19 708 1 19 709 1 19 710 1 19 711 1 19 712 1 19 713 1 19 714 1 19 715 1 19 716 1 19 717 1 19 718 1 19 719 1 19 720 1 19 721 1 19 737 1 19 738 1 19 739 1 19 740 1 19 741 1 19 742 1 19 743 1 19 744 1 19 745 1 19 746 1 19 747 1 19 748 1 19 749 1 19 750 1 19 751 1 19 752 1 19 753 1 19 754 1 19 755 1 19 756 1 19 772 1 19 773 1 19 774 1 19 775 1 19 776 1 19 777 1 19 778 1 19 779 1 19 780 1 19 781 1 19 782 1 19 783 1 19 784 1 19 785 1 19 786 1 19 1717 1 19 1724 1 19 1725 1 19 1726 1 19 1727 1 19 1728 1 19 1729 1 19 1745 1 19 1746 1 19 1747 1 19 1748 1 19 1749 1 19 1750 1 19 1766 1 19 1767 1 19 1768 1 19 1769 1 19 1770 1 19 1771 1 19 1772 1 19 1773 1 19 1774 1 19 1775 1 19 1776 1 19 1777 1 19 1778 1 19 1779 1 19 1780 1 19 1801 1 19 1802 1 19 1803 1 19 1804 1 19 1805 1 19 1806 1 19 1822 1 19 1823 1 19 1824 1 19 1825 1 19 1826 1 19 1827 1 19 1828 1 19 1829 1 19 1830 1 19 1831 1 19 1832 1 19 1833 1 19 1834 1 19 1835 1 19 1836 1 19 1857 1 19 1858 1 19 1859 1 19 1860 1 19 1861 1 19 1862 1 19 1863 1 19 1864 1 19 1865 1 19 1866 1 19 1867 1 19 1868 1 19 1869 1 19 1870 1 19 1871 1 19 1892 1 19 1893 1 19 1894 1 19 1895 1 19 1896 1 19 1897 1 19 1898 1 19 1899 1 19 1900 1 19 1901 1 19 1902 1 19 1903 1 19 1904 1 19 1905 1 19 1906 1 19 1907 1 19 1908 1 19 1909 1 19 1910 1 19 1911 1 19 1927 1 19 1928 1 19 1929 1 19 1930 1 19 1931 1 19 1932 1 19 1948 1 19 1949 1 19 1950 1 19 1951 1 19 1952 1 19 1953 1 19 1954 1 19 1955 1 19 1956 1 19 1957 1 19 1958 1 19 1959 1 19 1960 1 19 1961 1 19 1962 1 19 1983 1 19 1984 1 19 1985 1 19 1986 1 19 1987 1 19 1988 1 19 1989 1 19 1990 1 19 1991 1 19 1992 1 19 1993 1 19 1994 1 19 1995 1 19 1996 1 19 1997 1 19 2018 1 19 2019 1 19 2020 1 19 2021 1 19 2022 1 19 2023 1 19 2024 1 19 2025 1 19 2026 1 19 2027 1 19 2028 1 19 2029 1 19 2030 1 19 2031 1 19 2032 1 19 2033 1 19 2034 1 19 2035 1 19 2036 1 19 2037 1 19 2053 1 19 2054 1 19 2055 1 19 2056 1 19 2057 1 19 2058 1 19 2059 1 19 2060 1 19 2061 1 19 2062 1 19 2063 1 19 2064 1 19 2065 1 19 2066 1 19 2067 1 19 2088 1 19 2089 1 19 2090 1 19 2091 1 19 2092 1 19 2093 1 19 2094 1 19 2095 1 19 2096 1 19 2097 1 19 2098 1 19 2099 1 19 2100 1 19 2101 1 19 2102 1 19 2103 1 19 2104 1 19 2105 1 19 2106 1 19 2107 1 19 2123 1 19 2124 1 19 2125 1 19 2126 1 19 2127 1 19 2128 1 19 2129 1 19 2130 1 19 2131 1 19 2132 1 19 2133 1 19 2134 1 19 2135 1 19 2136 1 19 2137 1 19 2138 1 19 2139 1 19 2140 1 19 2141 1 19 2142 1 19 2158 1 19 2159 1 19 2160 1 19 2161 1 19 2162 1 19 2163 1 19 2164 1 19 2165 1 19 2166 1 19 2167 1 19 2168 1 19 2169 1 19 2170 1 19 2171 1 19 2172 1 19 2179 1 19 2180 1 19 2181 1 19 2182 1 19 2183 1 19 2184 1 19 2200 1 19 2201 1 19 2202 1 19 2203 1 19 2204 1 19 2205 1 19 2206 1 19 2207 1 19 2208 1 19 2209 1 19 2210 1 19 2211 1 19 2212 1 19 2213 1 19 2214 1 19 2235 1 19 2236 1 19 2237 1 19 2238 1 19 2239 1 19 2240 1 19 2241 1 19 2242 1 19 2243 1 19 2244 1 19 2245 1 19 2246 1 19 2247 1 19 2248 1 19 2249 1 19 2270 1 19 2271 1 19 2272 1 19 2273 1 19 2274 1 19 2275 1 19 2276 1 19 2277 1 19 2278 1 19 2279 1 19 2280 1 19 2281 1 19 2282 1 19 2283 1 19 2284 1 19 2285 1 19 2286 1 19 2287 1 19 2288 1 19 2289 1 19 2305 1 19 2306 1 19 2307 1 19 2308 1 19 2309 1 19 2310 1 19 2311 1 19 2312 1 19 2313 1 19 2314 1 19 2315 1 19 2316 1 19 2317 1 19 2318 1 19 2319 1 19 2340 1 19 2341 1 19 2342 1 19 2343 1 19 2344 1 19 2345 1 19 2346 1 19 2347 1 19 2348 1 19 2349 1 19 2350 1 19 2351 1 19 2352 1 19 2353 1 19 2354 1 19 2355 1 19 2356 1 19 2357 1 19 2358 1 19 2359 1 19 2375 1 19 2376 1 19 2377 1 19 2378 1 19 2379 1 19 2380 1 19 2381 1 19 2382 1 19 2383 1 19 2384 1 19 2385 1 19 2386 1 19 2387 1 19 2388 1 19 2389 1 19 2390 1 19 2391 1 19 2392 1 19 2393 1 19 2394 1 19 2410 1 19 2411 1 19 2412 1 19 2413 1 19 2414 1 19 2415 1 19 2416 1 19 2417 1 19 2418 1 19 2419 1 19 2420 1 19 2421 1 19 2422 1 19 2423 1 19 2424 1 19 2431 1 19 2432 1 19 2433 1 19 2434 1 19 2435 1 19 2436 1 19 2437 1 19 2438 1 19 2439 1 19 2440 1 19 2441 1 19 2442 1 19 2443 1 19 2444 1 19 2445 1 19 2466 1 19 2467 1 19 2468 1 19 2469 1 19 2470 1 19 2471 1 19 2472 1 19 2473 1 19 2474 1 19 2475 1 19 2476 1 19 2477 1 19 2478 1 19 2479 1 19 2480 1 19 2481 1 19 2482 1 19 2483 1 19 2484 1 19 2485 1 19 2501 1 19 2502 1 19 2503 1 19 2504 1 19 2505 1 19 2506 1 19 2507 1 19 2508 1 19 2509 1 19 2510 1 19 2511 1 19 2512 1 19 2513 1 19 2514 1 19 2515 1 19 2516 1 19 2517 1 19 2518 1 19 2519 1 19 2520 1 19 2536 1 19 2537 1 19 2538 1 19 2539 1 19 2540 1 19 2541 1 19 2542 1 19 2543 1 19 2544 1 19 2545 1 19 2546 1 19 2547 1 19 2548 1 19 2549 1 19 2550 1 19 2557 1 19 2558 1 19 2559 1 19 2560 1 19 2561 1 19 2562 1 19 2563 1 19 2564 1 19 2565 1 19 2566 1 19 2567 1 19 2568 1 19 2569 1 19 2570 1 19 2571 1 19 2572 1 19 2573 1 19 2574 1 19 2575 1 19 2576 1 19 2592 1 19 2593 1 19 2594 1 19 2595 1 19 2596 1 19 2597 1 19 2598 1 19 2599 1 19 2600 1 19 2601 1 19 2602 1 19 2603 1 19 2604 1 19 2605 1 19 2606 1 19 2613 1 19 2614 1 19 2615 1 19 2616 1 19 2617 1 19 2618 1 19 2619 1 19 2620 1 19 2621 1 19 2622 1 19 2623 1 19 2624 1 19 2625 1 19 2626 1 19 2627 1 19 2634 1 19 2635 1 19 2636 1 19 2637 1 19 2638 1 19 2639 1 20 3 1 20 10 1 20 16 1 20 22 1 20 23 1 20 24 1 20 25 1 20 26 1 20 38 1 20 44 1 20 50 1 20 51 1 20 52 1 20 53 1 20 54 1 20 65 1 20 71 1 20 72 1 20 73 1 20 74 1 20 75 1 20 86 1 20 87 1 20 88 1 20 89 1 20 90 1 20 101 1 20 102 1 20 103 1 20 104 1 20 105 1 20 106 1 20 107 1 20 108 1 20 109 1 20 110 1 20 122 1 20 128 1 20 134 1 20 135 1 20 136 1 20 137 1 20 138 1 20 149 1 20 155 1 20 156 1 20 157 1 20 158 1 20 159 1 20 170 1 20 171 1 20 172 1 20 173 1 20 174 1 20 185 1 20 186 1 20 187 1 20 188 1 20 189 1 20 190 1 20 191 1 20 192 1 20 193 1 20 194 1 20 205 1 20 211 1 20 212 1 20 213 1 20 214 1 20 215 1 20 226 1 20 227 1 20 228 1 20 229 1 20 230 1 20 241 1 20 242 1 20 243 1 20 244 1 20 245 1 20 246 1 20 247 1 20 248 1 20 249 1 20 250 1 20 261 1 20 262 1 20 263 1 20 264 1 20 265 1 20 276 1 20 277 1 20 278 1 20 279 1 20 280 1 20 281 1 20 282 1 20 283 1 20 284 1 20 285 1 20 296 1 20 297 1 20 298 1 20 299 1 20 300 1 20 301 1 20 302 1 20 303 1 20 304 1 20 305 1 20 316 1 20 317 1 20 318 1 20 319 1 20 320 1 20 321 1 20 322 1 20 323 1 20 324 1 20 325 1 20 332 1 20 338 1 20 344 1 20 345 1 20 346 1 20 347 1 20 348 1 20 359 1 20 365 1 20 366 1 20 367 1 20 368 1 20 369 1 20 380 1 20 381 1 20 382 1 20 383 1 20 384 1 20 395 1 20 396 1 20 397 1 20 398 1 20 399 1 20 400 1 20 401 1 20 402 1 20 403 1 20 404 1 20 415 1 20 421 1 20 422 1 20 423 1 20 424 1 20 425 1 20 436 1 20 437 1 20 438 1 20 439 1 20 440 1 20 451 1 20 452 1 20 453 1 20 454 1 20 455 1 20 456 1 20 457 1 20 458 1 20 459 1 20 460 1 20 471 1 20 472 1 20 473 1 20 474 1 20 475 1 20 486 1 20 487 1 20 488 1 20 489 1 20 490 1 20 491 1 20 492 1 20 493 1 20 494 1 20 495 1 20 506 1 20 507 1 20 508 1 20 509 1 20 510 1 20 511 1 20 512 1 20 513 1 20 514 1 20 515 1 20 526 1 20 527 1 20 528 1 20 529 1 20 530 1 20 531 1 20 532 1 20 533 1 20 534 1 20 535 1 20 541 1 20 547 1 20 548 1 20 549 1 20 550 1 20 551 1 20 562 1 20 563 1 20 564 1 20 565 1 20 566 1 20 577 1 20 578 1 20 579 1 20 580 1 20 581 1 20 582 1 20 583 1 20 584 1 20 585 1 20 586 1 20 597 1 20 598 1 20 599 1 20 600 1 20 601 1 20 612 1 20 613 1 20 614 1 20 615 1 20 616 1 20 617 1 20 618 1 20 619 1 20 620 1 20 621 1 20 632 1 20 633 1 20 634 1 20 635 1 20 636 1 20 637 1 20 638 1 20 639 1 20 640 1 20 641 1 20 652 1 20 653 1 20 654 1 20 655 1 20 656 1 20 657 1 20 658 1 20 659 1 20 660 1 20 661 1 20 667 1 20 668 1 20 669 1 20 670 1 20 671 1 20 682 1 20 683 1 20 684 1 20 685 1 20 686 1 20 687 1 20 688 1 20 689 1 20 690 1 20 691 1 20 702 1 20 703 1 20 704 1 20 705 1 20 706 1 20 707 1 20 708 1 20 709 1 20 710 1 20 711 1 20 722 1 20 723 1 20 724 1 20 725 1 20 726 1 20 727 1 20 728 1 20 729 1 20 730 1 20 731 1 20 737 1 20 738 1 20 739 1 20 740 1 20 741 1 20 742 1 20 743 1 20 744 1 20 745 1 20 746 1 20 757 1 20 758 1 20 759 1 20 760 1 20 761 1 20 762 1 20 763 1 20 764 1 20 765 1 20 766 1 20 772 1 20 773 1 20 774 1 20 775 1 20 776 1 20 777 1 20 778 1 20 779 1 20 780 1 20 781 1 20 787 1 20 788 1 20 789 1 20 790 1 20 791 1 20 1718 1 20 1724 1 20 1730 1 20 1731 1 20 1732 1 20 1733 1 20 1734 1 20 1745 1 20 1751 1 20 1752 1 20 1753 1 20 1754 1 20 1755 1 20 1766 1 20 1767 1 20 1768 1 20 1769 1 20 1770 1 20 1781 1 20 1782 1 20 1783 1 20 1784 1 20 1785 1 20 1786 1 20 1787 1 20 1788 1 20 1789 1 20 1790 1 20 1801 1 20 1807 1 20 1808 1 20 1809 1 20 1810 1 20 1811 1 20 1822 1 20 1823 1 20 1824 1 20 1825 1 20 1826 1 20 1837 1 20 1838 1 20 1839 1 20 1840 1 20 1841 1 20 1842 1 20 1843 1 20 1844 1 20 1845 1 20 1846 1 20 1857 1 20 1858 1 20 1859 1 20 1860 1 20 1861 1 20 1872 1 20 1873 1 20 1874 1 20 1875 1 20 1876 1 20 1877 1 20 1878 1 20 1879 1 20 1880 1 20 1881 1 20 1892 1 20 1893 1 20 1894 1 20 1895 1 20 1896 1 20 1897 1 20 1898 1 20 1899 1 20 1900 1 20 1901 1 20 1912 1 20 1913 1 20 1914 1 20 1915 1 20 1916 1 20 1917 1 20 1918 1 20 1919 1 20 1920 1 20 1921 1 20 1927 1 20 1933 1 20 1934 1 20 1935 1 20 1936 1 20 1937 1 20 1948 1 20 1949 1 20 1950 1 20 1951 1 20 1952 1 20 1963 1 20 1964 1 20 1965 1 20 1966 1 20 1967 1 20 1968 1 20 1969 1 20 1970 1 20 1971 1 20 1972 1 20 1983 1 20 1984 1 20 1985 1 20 1986 1 20 1987 1 20 1998 1 20 1999 1 20 2000 1 20 2001 1 20 2002 1 20 2003 1 20 2004 1 20 2005 1 20 2006 1 20 2007 1 20 2018 1 20 2019 1 20 2020 1 20 2021 1 20 2022 1 20 2023 1 20 2024 1 20 2025 1 20 2026 1 20 2027 1 20 2038 1 20 2039 1 20 2040 1 20 2041 1 20 2042 1 20 2043 1 20 2044 1 20 2045 1 20 2046 1 20 2047 1 20 2053 1 20 2054 1 20 2055 1 20 2056 1 20 2057 1 20 2068 1 20 2069 1 20 2070 1 20 2071 1 20 2072 1 20 2073 1 20 2074 1 20 2075 1 20 2076 1 20 2077 1 20 2088 1 20 2089 1 20 2090 1 20 2091 1 20 2092 1 20 2093 1 20 2094 1 20 2095 1 20 2096 1 20 2097 1 20 2108 1 20 2109 1 20 2110 1 20 2111 1 20 2112 1 20 2113 1 20 2114 1 20 2115 1 20 2116 1 20 2117 1 20 2123 1 20 2124 1 20 2125 1 20 2126 1 20 2127 1 20 2128 1 20 2129 1 20 2130 1 20 2131 1 20 2132 1 20 2143 1 20 2144 1 20 2145 1 20 2146 1 20 2147 1 20 2148 1 20 2149 1 20 2150 1 20 2151 1 20 2152 1 20 2158 1 20 2159 1 20 2160 1 20 2161 1 20 2162 1 20 2163 1 20 2164 1 20 2165 1 20 2166 1 20 2167 1 20 2173 1 20 2174 1 20 2175 1 20 2176 1 20 2177 1 20 2179 1 20 2185 1 20 2186 1 20 2187 1 20 2188 1 20 2189 1 20 2200 1 20 2201 1 20 2202 1 20 2203 1 20 2204 1 20 2215 1 20 2216 1 20 2217 1 20 2218 1 20 2219 1 20 2220 1 20 2221 1 20 2222 1 20 2223 1 20 2224 1 20 2235 1 20 2236 1 20 2237 1 20 2238 1 20 2239 1 20 2250 1 20 2251 1 20 2252 1 20 2253 1 20 2254 1 20 2255 1 20 2256 1 20 2257 1 20 2258 1 20 2259 1 20 2270 1 20 2271 1 20 2272 1 20 2273 1 20 2274 1 20 2275 1 20 2276 1 20 2277 1 20 2278 1 20 2279 1 20 2290 1 20 2291 1 20 2292 1 20 2293 1 20 2294 1 20 2295 1 20 2296 1 20 2297 1 20 2298 1 20 2299 1 20 2305 1 20 2306 1 20 2307 1 20 2308 1 20 2309 1 20 2320 1 20 2321 1 20 2322 1 20 2323 1 20 2324 1 20 2325 1 20 2326 1 20 2327 1 20 2328 1 20 2329 1 20 2340 1 20 2341 1 20 2342 1 20 2343 1 20 2344 1 20 2345 1 20 2346 1 20 2347 1 20 2348 1 20 2349 1 20 2360 1 20 2361 1 20 2362 1 20 2363 1 20 2364 1 20 2365 1 20 2366 1 20 2367 1 20 2368 1 20 2369 1 20 2375 1 20 2376 1 20 2377 1 20 2378 1 20 2379 1 20 2380 1 20 2381 1 20 2382 1 20 2383 1 20 2384 1 20 2395 1 20 2396 1 20 2397 1 20 2398 1 20 2399 1 20 2400 1 20 2401 1 20 2402 1 20 2403 1 20 2404 1 20 2410 1 20 2411 1 20 2412 1 20 2413 1 20 2414 1 20 2415 1 20 2416 1 20 2417 1 20 2418 1 20 2419 1 20 2425 1 20 2426 1 20 2427 1 20 2428 1 20 2429 1 20 2431 1 20 2432 1 20 2433 1 20 2434 1 20 2435 1 20 2446 1 20 2447 1 20 2448 1 20 2449 1 20 2450 1 20 2451 1 20 2452 1 20 2453 1 20 2454 1 20 2455 1 20 2466 1 20 2467 1 20 2468 1 20 2469 1 20 2470 1 20 2471 1 20 2472 1 20 2473 1 20 2474 1 20 2475 1 20 2486 1 20 2487 1 20 2488 1 20 2489 1 20 2490 1 20 2491 1 20 2492 1 20 2493 1 20 2494 1 20 2495 1 20 2501 1 20 2502 1 20 2503 1 20 2504 1 20 2505 1 20 2506 1 20 2507 1 20 2508 1 20 2509 1 20 2510 1 20 2521 1 20 2522 1 20 2523 1 20 2524 1 20 2525 1 20 2526 1 20 2527 1 20 2528 1 20 2529 1 20 2530 1 20 2536 1 20 2537 1 20 2538 1 20 2539 1 20 2540 1 20 2541 1 20 2542 1 20 2543 1 20 2544 1 20 2545 1 20 2551 1 20 2552 1 20 2553 1 20 2554 1 20 2555 1 20 2557 1 20 2558 1 20 2559 1 20 2560 1 20 2561 1 20 2562 1 20 2563 1 20 2564 1 20 2565 1 20 2566 1 20 2577 1 20 2578 1 20 2579 1 20 2580 1 20 2581 1 20 2582 1 20 2583 1 20 2584 1 20 2585 1 20 2586 1 20 2592 1 20 2593 1 20 2594 1 20 2595 1 20 2596 1 20 2597 1 20 2598 1 20 2599 1 20 2600 1 20 2601 1 20 2607 1 20 2608 1 20 2609 1 20 2610 1 20 2611 1 20 2613 1 20 2614 1 20 2615 1 20 2616 1 20 2617 1 20 2618 1 20 2619 1 20 2620 1 20 2621 1 20 2622 1 20 2628 1 20 2629 1 20 2630 1 20 2631 1 20 2632 1 20 2634 1 20 2635 1 20 2636 1 20 2637 1 20 2638 1 20 2640 1 21 4 1 21 11 1 21 17 1 21 22 1 21 27 1 21 28 1 21 29 1 21 30 1 21 39 1 21 45 1 21 50 1 21 55 1 21 56 1 21 57 1 21 58 1 21 66 1 21 71 1 21 76 1 21 77 1 21 78 1 21 79 1 21 86 1 21 91 1 21 92 1 21 93 1 21 94 1 21 101 1 21 102 1 21 103 1 21 104 1 21 111 1 21 112 1 21 113 1 21 114 1 21 115 1 21 116 1 21 123 1 21 129 1 21 134 1 21 139 1 21 140 1 21 141 1 21 142 1 21 150 1 21 155 1 21 160 1 21 161 1 21 162 1 21 163 1 21 170 1 21 175 1 21 176 1 21 177 1 21 178 1 21 185 1 21 186 1 21 187 1 21 188 1 21 195 1 21 196 1 21 197 1 21 198 1 21 199 1 21 200 1 21 206 1 21 211 1 21 216 1 21 217 1 21 218 1 21 219 1 21 226 1 21 231 1 21 232 1 21 233 1 21 234 1 21 241 1 21 242 1 21 243 1 21 244 1 21 251 1 21 252 1 21 253 1 21 254 1 21 255 1 21 256 1 21 261 1 21 266 1 21 267 1 21 268 1 21 269 1 21 276 1 21 277 1 21 278 1 21 279 1 21 286 1 21 287 1 21 288 1 21 289 1 21 290 1 21 291 1 21 296 1 21 297 1 21 298 1 21 299 1 21 306 1 21 307 1 21 308 1 21 309 1 21 310 1 21 311 1 21 316 1 21 317 1 21 318 1 21 319 1 21 320 1 21 321 1 21 326 1 21 327 1 21 328 1 21 329 1 21 333 1 21 339 1 21 344 1 21 349 1 21 350 1 21 351 1 21 352 1 21 360 1 21 365 1 21 370 1 21 371 1 21 372 1 21 373 1 21 380 1 21 385 1 21 386 1 21 387 1 21 388 1 21 395 1 21 396 1 21 397 1 21 398 1 21 405 1 21 406 1 21 407 1 21 408 1 21 409 1 21 410 1 21 416 1 21 421 1 21 426 1 21 427 1 21 428 1 21 429 1 21 436 1 21 441 1 21 442 1 21 443 1 21 444 1 21 451 1 21 452 1 21 453 1 21 454 1 21 461 1 21 462 1 21 463 1 21 464 1 21 465 1 21 466 1 21 471 1 21 476 1 21 477 1 21 478 1 21 479 1 21 486 1 21 487 1 21 488 1 21 489 1 21 496 1 21 497 1 21 498 1 21 499 1 21 500 1 21 501 1 21 506 1 21 507 1 21 508 1 21 509 1 21 516 1 21 517 1 21 518 1 21 519 1 21 520 1 21 521 1 21 526 1 21 527 1 21 528 1 21 529 1 21 530 1 21 531 1 21 536 1 21 537 1 21 538 1 21 539 1 21 542 1 21 547 1 21 552 1 21 553 1 21 554 1 21 555 1 21 562 1 21 567 1 21 568 1 21 569 1 21 570 1 21 577 1 21 578 1 21 579 1 21 580 1 21 587 1 21 588 1 21 589 1 21 590 1 21 591 1 21 592 1 21 597 1 21 602 1 21 603 1 21 604 1 21 605 1 21 612 1 21 613 1 21 614 1 21 615 1 21 622 1 21 623 1 21 624 1 21 625 1 21 626 1 21 627 1 21 632 1 21 633 1 21 634 1 21 635 1 21 642 1 21 643 1 21 644 1 21 645 1 21 646 1 21 647 1 21 652 1 21 653 1 21 654 1 21 655 1 21 656 1 21 657 1 21 662 1 21 663 1 21 664 1 21 665 1 21 667 1 21 672 1 21 673 1 21 674 1 21 675 1 21 682 1 21 683 1 21 684 1 21 685 1 21 692 1 21 693 1 21 694 1 21 695 1 21 696 1 21 697 1 21 702 1 21 703 1 21 704 1 21 705 1 21 712 1 21 713 1 21 714 1 21 715 1 21 716 1 21 717 1 21 722 1 21 723 1 21 724 1 21 725 1 21 726 1 21 727 1 21 732 1 21 733 1 21 734 1 21 735 1 21 737 1 21 738 1 21 739 1 21 740 1 21 747 1 21 748 1 21 749 1 21 750 1 21 751 1 21 752 1 21 757 1 21 758 1 21 759 1 21 760 1 21 761 1 21 762 1 21 767 1 21 768 1 21 769 1 21 770 1 21 772 1 21 773 1 21 774 1 21 775 1 21 776 1 21 777 1 21 782 1 21 783 1 21 784 1 21 785 1 21 787 1 21 788 1 21 789 1 21 790 1 21 792 1 21 1719 1 21 1725 1 21 1730 1 21 1735 1 21 1736 1 21 1737 1 21 1738 1 21 1746 1 21 1751 1 21 1756 1 21 1757 1 21 1758 1 21 1759 1 21 1766 1 21 1771 1 21 1772 1 21 1773 1 21 1774 1 21 1781 1 21 1782 1 21 1783 1 21 1784 1 21 1791 1 21 1792 1 21 1793 1 21 1794 1 21 1795 1 21 1796 1 21 1802 1 21 1807 1 21 1812 1 21 1813 1 21 1814 1 21 1815 1 21 1822 1 21 1827 1 21 1828 1 21 1829 1 21 1830 1 21 1837 1 21 1838 1 21 1839 1 21 1840 1 21 1847 1 21 1848 1 21 1849 1 21 1850 1 21 1851 1 21 1852 1 21 1857 1 21 1862 1 21 1863 1 21 1864 1 21 1865 1 21 1872 1 21 1873 1 21 1874 1 21 1875 1 21 1882 1 21 1883 1 21 1884 1 21 1885 1 21 1886 1 21 1887 1 21 1892 1 21 1893 1 21 1894 1 21 1895 1 21 1902 1 21 1903 1 21 1904 1 21 1905 1 21 1906 1 21 1907 1 21 1912 1 21 1913 1 21 1914 1 21 1915 1 21 1916 1 21 1917 1 21 1922 1 21 1923 1 21 1924 1 21 1925 1 21 1928 1 21 1933 1 21 1938 1 21 1939 1 21 1940 1 21 1941 1 21 1948 1 21 1953 1 21 1954 1 21 1955 1 21 1956 1 21 1963 1 21 1964 1 21 1965 1 21 1966 1 21 1973 1 21 1974 1 21 1975 1 21 1976 1 21 1977 1 21 1978 1 21 1983 1 21 1988 1 21 1989 1 21 1990 1 21 1991 1 21 1998 1 21 1999 1 21 2000 1 21 2001 1 21 2008 1 21 2009 1 21 2010 1 21 2011 1 21 2012 1 21 2013 1 21 2018 1 21 2019 1 21 2020 1 21 2021 1 21 2028 1 21 2029 1 21 2030 1 21 2031 1 21 2032 1 21 2033 1 21 2038 1 21 2039 1 21 2040 1 21 2041 1 21 2042 1 21 2043 1 21 2048 1 21 2049 1 21 2050 1 21 2051 1 21 2053 1 21 2058 1 21 2059 1 21 2060 1 21 2061 1 21 2068 1 21 2069 1 21 2070 1 21 2071 1 21 2078 1 21 2079 1 21 2080 1 21 2081 1 21 2082 1 21 2083 1 21 2088 1 21 2089 1 21 2090 1 21 2091 1 21 2098 1 21 2099 1 21 2100 1 21 2101 1 21 2102 1 21 2103 1 21 2108 1 21 2109 1 21 2110 1 21 2111 1 21 2112 1 21 2113 1 21 2118 1 21 2119 1 21 2120 1 21 2121 1 21 2123 1 21 2124 1 21 2125 1 21 2126 1 21 2133 1 21 2134 1 21 2135 1 21 2136 1 21 2137 1 21 2138 1 21 2143 1 21 2144 1 21 2145 1 21 2146 1 21 2147 1 21 2148 1 21 2153 1 21 2154 1 21 2155 1 21 2156 1 21 2158 1 21 2159 1 21 2160 1 21 2161 1 21 2162 1 21 2163 1 21 2168 1 21 2169 1 21 2170 1 21 2171 1 21 2173 1 21 2174 1 21 2175 1 21 2176 1 21 2178 1 21 2180 1 21 2185 1 21 2190 1 21 2191 1 21 2192 1 21 2193 1 21 2200 1 21 2205 1 21 2206 1 21 2207 1 21 2208 1 21 2215 1 21 2216 1 21 2217 1 21 2218 1 21 2225 1 21 2226 1 21 2227 1 21 2228 1 21 2229 1 21 2230 1 21 2235 1 21 2240 1 21 2241 1 21 2242 1 21 2243 1 21 2250 1 21 2251 1 21 2252 1 21 2253 1 21 2260 1 21 2261 1 21 2262 1 21 2263 1 21 2264 1 21 2265 1 21 2270 1 21 2271 1 21 2272 1 21 2273 1 21 2280 1 21 2281 1 21 2282 1 21 2283 1 21 2284 1 21 2285 1 21 2290 1 21 2291 1 21 2292 1 21 2293 1 21 2294 1 21 2295 1 21 2300 1 21 2301 1 21 2302 1 21 2303 1 21 2305 1 21 2310 1 21 2311 1 21 2312 1 21 2313 1 21 2320 1 21 2321 1 21 2322 1 21 2323 1 21 2330 1 21 2331 1 21 2332 1 21 2333 1 21 2334 1 21 2335 1 21 2340 1 21 2341 1 21 2342 1 21 2343 1 21 2350 1 21 2351 1 21 2352 1 21 2353 1 21 2354 1 21 2355 1 21 2360 1 21 2361 1 21 2362 1 21 2363 1 21 2364 1 21 2365 1 21 2370 1 21 2371 1 21 2372 1 21 2373 1 21 2375 1 21 2376 1 21 2377 1 21 2378 1 21 2385 1 21 2386 1 21 2387 1 21 2388 1 21 2389 1 21 2390 1 21 2395 1 21 2396 1 21 2397 1 21 2398 1 21 2399 1 21 2400 1 21 2405 1 21 2406 1 21 2407 1 21 2408 1 21 2410 1 21 2411 1 21 2412 1 21 2413 1 21 2414 1 21 2415 1 21 2420 1 21 2421 1 21 2422 1 21 2423 1 21 2425 1 21 2426 1 21 2427 1 21 2428 1 21 2430 1 21 2431 1 21 2436 1 21 2437 1 21 2438 1 21 2439 1 21 2446 1 21 2447 1 21 2448 1 21 2449 1 21 2456 1 21 2457 1 21 2458 1 21 2459 1 21 2460 1 21 2461 1 21 2466 1 21 2467 1 21 2468 1 21 2469 1 21 2476 1 21 2477 1 21 2478 1 21 2479 1 21 2480 1 21 2481 1 21 2486 1 21 2487 1 21 2488 1 21 2489 1 21 2490 1 21 2491 1 21 2496 1 21 2497 1 21 2498 1 21 2499 1 21 2501 1 21 2502 1 21 2503 1 21 2504 1 21 2511 1 21 2512 1 21 2513 1 21 2514 1 21 2515 1 21 2516 1 21 2521 1 21 2522 1 21 2523 1 21 2524 1 21 2525 1 21 2526 1 21 2531 1 21 2532 1 21 2533 1 21 2534 1 21 2536 1 21 2537 1 21 2538 1 21 2539 1 21 2540 1 21 2541 1 21 2546 1 21 2547 1 21 2548 1 21 2549 1 21 2551 1 21 2552 1 21 2553 1 21 2554 1 21 2556 1 21 2557 1 21 2558 1 21 2559 1 21 2560 1 21 2567 1 21 2568 1 21 2569 1 21 2570 1 21 2571 1 21 2572 1 21 2577 1 21 2578 1 21 2579 1 21 2580 1 21 2581 1 21 2582 1 21 2587 1 21 2588 1 21 2589 1 21 2590 1 21 2592 1 21 2593 1 21 2594 1 21 2595 1 21 2596 1 21 2597 1 21 2602 1 21 2603 1 21 2604 1 21 2605 1 21 2607 1 21 2608 1 21 2609 1 21 2610 1 21 2612 1 21 2613 1 21 2614 1 21 2615 1 21 2616 1 21 2617 1 21 2618 1 21 2623 1 21 2624 1 21 2625 1 21 2626 1 21 2628 1 21 2629 1 21 2630 1 21 2631 1 21 2633 1 21 2634 1 21 2635 1 21 2636 1 21 2637 1 21 2639 1 21 2640 1 22 5 1 22 12 1 22 18 1 22 23 1 22 27 1 22 31 1 22 32 1 22 33 1 22 40 1 22 46 1 22 51 1 22 55 1 22 59 1 22 60 1 22 61 1 22 67 1 22 72 1 22 76 1 22 80 1 22 81 1 22 82 1 22 87 1 22 91 1 22 95 1 22 96 1 22 97 1 22 101 1 22 105 1 22 106 1 22 107 1 22 111 1 22 112 1 22 113 1 22 117 1 22 118 1 22 119 1 22 124 1 22 130 1 22 135 1 22 139 1 22 143 1 22 144 1 22 145 1 22 151 1 22 156 1 22 160 1 22 164 1 22 165 1 22 166 1 22 171 1 22 175 1 22 179 1 22 180 1 22 181 1 22 185 1 22 189 1 22 190 1 22 191 1 22 195 1 22 196 1 22 197 1 22 201 1 22 202 1 22 203 1 22 207 1 22 212 1 22 216 1 22 220 1 22 221 1 22 222 1 22 227 1 22 231 1 22 235 1 22 236 1 22 237 1 22 241 1 22 245 1 22 246 1 22 247 1 22 251 1 22 252 1 22 253 1 22 257 1 22 258 1 22 259 1 22 262 1 22 266 1 22 270 1 22 271 1 22 272 1 22 276 1 22 280 1 22 281 1 22 282 1 22 286 1 22 287 1 22 288 1 22 292 1 22 293 1 22 294 1 22 296 1 22 300 1 22 301 1 22 302 1 22 306 1 22 307 1 22 308 1 22 312 1 22 313 1 22 314 1 22 316 1 22 317 1 22 318 1 22 322 1 22 323 1 22 324 1 22 326 1 22 327 1 22 328 1 22 330 1 22 334 1 22 340 1 22 345 1 22 349 1 22 353 1 22 354 1 22 355 1 22 361 1 22 366 1 22 370 1 22 374 1 22 375 1 22 376 1 22 381 1 22 385 1 22 389 1 22 390 1 22 391 1 22 395 1 22 399 1 22 400 1 22 401 1 22 405 1 22 406 1 22 407 1 22 411 1 22 412 1 22 413 1 22 417 1 22 422 1 22 426 1 22 430 1 22 431 1 22 432 1 22 437 1 22 441 1 22 445 1 22 446 1 22 447 1 22 451 1 22 455 1 22 456 1 22 457 1 22 461 1 22 462 1 22 463 1 22 467 1 22 468 1 22 469 1 22 472 1 22 476 1 22 480 1 22 481 1 22 482 1 22 486 1 22 490 1 22 491 1 22 492 1 22 496 1 22 497 1 22 498 1 22 502 1 22 503 1 22 504 1 22 506 1 22 510 1 22 511 1 22 512 1 22 516 1 22 517 1 22 518 1 22 522 1 22 523 1 22 524 1 22 526 1 22 527 1 22 528 1 22 532 1 22 533 1 22 534 1 22 536 1 22 537 1 22 538 1 22 540 1 22 543 1 22 548 1 22 552 1 22 556 1 22 557 1 22 558 1 22 563 1 22 567 1 22 571 1 22 572 1 22 573 1 22 577 1 22 581 1 22 582 1 22 583 1 22 587 1 22 588 1 22 589 1 22 593 1 22 594 1 22 595 1 22 598 1 22 602 1 22 606 1 22 607 1 22 608 1 22 612 1 22 616 1 22 617 1 22 618 1 22 622 1 22 623 1 22 624 1 22 628 1 22 629 1 22 630 1 22 632 1 22 636 1 22 637 1 22 638 1 22 642 1 22 643 1 22 644 1 22 648 1 22 649 1 22 650 1 22 652 1 22 653 1 22 654 1 22 658 1 22 659 1 22 660 1 22 662 1 22 663 1 22 664 1 22 666 1 22 668 1 22 672 1 22 676 1 22 677 1 22 678 1 22 682 1 22 686 1 22 687 1 22 688 1 22 692 1 22 693 1 22 694 1 22 698 1 22 699 1 22 700 1 22 702 1 22 706 1 22 707 1 22 708 1 22 712 1 22 713 1 22 714 1 22 718 1 22 719 1 22 720 1 22 722 1 22 723 1 22 724 1 22 728 1 22 729 1 22 730 1 22 732 1 22 733 1 22 734 1 22 736 1 22 737 1 22 741 1 22 742 1 22 743 1 22 747 1 22 748 1 22 749 1 22 753 1 22 754 1 22 755 1 22 757 1 22 758 1 22 759 1 22 763 1 22 764 1 22 765 1 22 767 1 22 768 1 22 769 1 22 771 1 22 772 1 22 773 1 22 774 1 22 778 1 22 779 1 22 780 1 22 782 1 22 783 1 22 784 1 22 786 1 22 787 1 22 788 1 22 789 1 22 791 1 22 792 1 22 1720 1 22 1726 1 22 1731 1 22 1735 1 22 1739 1 22 1740 1 22 1741 1 22 1747 1 22 1752 1 22 1756 1 22 1760 1 22 1761 1 22 1762 1 22 1767 1 22 1771 1 22 1775 1 22 1776 1 22 1777 1 22 1781 1 22 1785 1 22 1786 1 22 1787 1 22 1791 1 22 1792 1 22 1793 1 22 1797 1 22 1798 1 22 1799 1 22 1803 1 22 1808 1 22 1812 1 22 1816 1 22 1817 1 22 1818 1 22 1823 1 22 1827 1 22 1831 1 22 1832 1 22 1833 1 22 1837 1 22 1841 1 22 1842 1 22 1843 1 22 1847 1 22 1848 1 22 1849 1 22 1853 1 22 1854 1 22 1855 1 22 1858 1 22 1862 1 22 1866 1 22 1867 1 22 1868 1 22 1872 1 22 1876 1 22 1877 1 22 1878 1 22 1882 1 22 1883 1 22 1884 1 22 1888 1 22 1889 1 22 1890 1 22 1892 1 22 1896 1 22 1897 1 22 1898 1 22 1902 1 22 1903 1 22 1904 1 22 1908 1 22 1909 1 22 1910 1 22 1912 1 22 1913 1 22 1914 1 22 1918 1 22 1919 1 22 1920 1 22 1922 1 22 1923 1 22 1924 1 22 1926 1 22 1929 1 22 1934 1 22 1938 1 22 1942 1 22 1943 1 22 1944 1 22 1949 1 22 1953 1 22 1957 1 22 1958 1 22 1959 1 22 1963 1 22 1967 1 22 1968 1 22 1969 1 22 1973 1 22 1974 1 22 1975 1 22 1979 1 22 1980 1 22 1981 1 22 1984 1 22 1988 1 22 1992 1 22 1993 1 22 1994 1 22 1998 1 22 2002 1 22 2003 1 22 2004 1 22 2008 1 22 2009 1 22 2010 1 22 2014 1 22 2015 1 22 2016 1 22 2018 1 22 2022 1 22 2023 1 22 2024 1 22 2028 1 22 2029 1 22 2030 1 22 2034 1 22 2035 1 22 2036 1 22 2038 1 22 2039 1 22 2040 1 22 2044 1 22 2045 1 22 2046 1 22 2048 1 22 2049 1 22 2050 1 22 2052 1 22 2054 1 22 2058 1 22 2062 1 22 2063 1 22 2064 1 22 2068 1 22 2072 1 22 2073 1 22 2074 1 22 2078 1 22 2079 1 22 2080 1 22 2084 1 22 2085 1 22 2086 1 22 2088 1 22 2092 1 22 2093 1 22 2094 1 22 2098 1 22 2099 1 22 2100 1 22 2104 1 22 2105 1 22 2106 1 22 2108 1 22 2109 1 22 2110 1 22 2114 1 22 2115 1 22 2116 1 22 2118 1 22 2119 1 22 2120 1 22 2122 1 22 2123 1 22 2127 1 22 2128 1 22 2129 1 22 2133 1 22 2134 1 22 2135 1 22 2139 1 22 2140 1 22 2141 1 22 2143 1 22 2144 1 22 2145 1 22 2149 1 22 2150 1 22 2151 1 22 2153 1 22 2154 1 22 2155 1 22 2157 1 22 2158 1 22 2159 1 22 2160 1 22 2164 1 22 2165 1 22 2166 1 22 2168 1 22 2169 1 22 2170 1 22 2172 1 22 2173 1 22 2174 1 22 2175 1 22 2177 1 22 2178 1 22 2181 1 22 2186 1 22 2190 1 22 2194 1 22 2195 1 22 2196 1 22 2201 1 22 2205 1 22 2209 1 22 2210 1 22 2211 1 22 2215 1 22 2219 1 22 2220 1 22 2221 1 22 2225 1 22 2226 1 22 2227 1 22 2231 1 22 2232 1 22 2233 1 22 2236 1 22 2240 1 22 2244 1 22 2245 1 22 2246 1 22 2250 1 22 2254 1 22 2255 1 22 2256 1 22 2260 1 22 2261 1 22 2262 1 22 2266 1 22 2267 1 22 2268 1 22 2270 1 22 2274 1 22 2275 1 22 2276 1 22 2280 1 22 2281 1 22 2282 1 22 2286 1 22 2287 1 22 2288 1 22 2290 1 22 2291 1 22 2292 1 22 2296 1 22 2297 1 22 2298 1 22 2300 1 22 2301 1 22 2302 1 22 2304 1 22 2306 1 22 2310 1 22 2314 1 22 2315 1 22 2316 1 22 2320 1 22 2324 1 22 2325 1 22 2326 1 22 2330 1 22 2331 1 22 2332 1 22 2336 1 22 2337 1 22 2338 1 22 2340 1 22 2344 1 22 2345 1 22 2346 1 22 2350 1 22 2351 1 22 2352 1 22 2356 1 22 2357 1 22 2358 1 22 2360 1 22 2361 1 22 2362 1 22 2366 1 22 2367 1 22 2368 1 22 2370 1 22 2371 1 22 2372 1 22 2374 1 22 2375 1 22 2379 1 22 2380 1 22 2381 1 22 2385 1 22 2386 1 22 2387 1 22 2391 1 22 2392 1 22 2393 1 22 2395 1 22 2396 1 22 2397 1 22 2401 1 22 2402 1 22 2403 1 22 2405 1 22 2406 1 22 2407 1 22 2409 1 22 2410 1 22 2411 1 22 2412 1 22 2416 1 22 2417 1 22 2418 1 22 2420 1 22 2421 1 22 2422 1 22 2424 1 22 2425 1 22 2426 1 22 2427 1 22 2429 1 22 2430 1 22 2432 1 22 2436 1 22 2440 1 22 2441 1 22 2442 1 22 2446 1 22 2450 1 22 2451 1 22 2452 1 22 2456 1 22 2457 1 22 2458 1 22 2462 1 22 2463 1 22 2464 1 22 2466 1 22 2470 1 22 2471 1 22 2472 1 22 2476 1 22 2477 1 22 2478 1 22 2482 1 22 2483 1 22 2484 1 22 2486 1 22 2487 1 22 2488 1 22 2492 1 22 2493 1 22 2494 1 22 2496 1 22 2497 1 22 2498 1 22 2500 1 22 2501 1 22 2505 1 22 2506 1 22 2507 1 22 2511 1 22 2512 1 22 2513 1 22 2517 1 22 2518 1 22 2519 1 22 2521 1 22 2522 1 22 2523 1 22 2527 1 22 2528 1 22 2529 1 22 2531 1 22 2532 1 22 2533 1 22 2535 1 22 2536 1 22 2537 1 22 2538 1 22 2542 1 22 2543 1 22 2544 1 22 2546 1 22 2547 1 22 2548 1 22 2550 1 22 2551 1 22 2552 1 22 2553 1 22 2555 1 22 2556 1 22 2557 1 22 2561 1 22 2562 1 22 2563 1 22 2567 1 22 2568 1 22 2569 1 22 2573 1 22 2574 1 22 2575 1 22 2577 1 22 2578 1 22 2579 1 22 2583 1 22 2584 1 22 2585 1 22 2587 1 22 2588 1 22 2589 1 22 2591 1 22 2592 1 22 2593 1 22 2594 1 22 2598 1 22 2599 1 22 2600 1 22 2602 1 22 2603 1 22 2604 1 22 2606 1 22 2607 1 22 2608 1 22 2609 1 22 2611 1 22 2612 1 22 2613 1 22 2614 1 22 2615 1 22 2619 1 22 2620 1 22 2621 1 22 2623 1 22 2624 1 22 2625 1 22 2627 1 22 2628 1 22 2629 1 22 2630 1 22 2632 1 22 2633 1 22 2634 1 22 2635 1 22 2636 1 22 2638 1 22 2639 1 22 2640 1 23 6 1 23 13 1 23 19 1 23 24 1 23 28 1 23 31 1 23 34 1 23 35 1 23 41 1 23 47 1 23 52 1 23 56 1 23 59 1 23 62 1 23 63 1 23 68 1 23 73 1 23 77 1 23 80 1 23 83 1 23 84 1 23 88 1 23 92 1 23 95 1 23 98 1 23 99 1 23 102 1 23 105 1 23 108 1 23 109 1 23 111 1 23 114 1 23 115 1 23 117 1 23 118 1 23 120 1 23 125 1 23 131 1 23 136 1 23 140 1 23 143 1 23 146 1 23 147 1 23 152 1 23 157 1 23 161 1 23 164 1 23 167 1 23 168 1 23 172 1 23 176 1 23 179 1 23 182 1 23 183 1 23 186 1 23 189 1 23 192 1 23 193 1 23 195 1 23 198 1 23 199 1 23 201 1 23 202 1 23 204 1 23 208 1 23 213 1 23 217 1 23 220 1 23 223 1 23 224 1 23 228 1 23 232 1 23 235 1 23 238 1 23 239 1 23 242 1 23 245 1 23 248 1 23 249 1 23 251 1 23 254 1 23 255 1 23 257 1 23 258 1 23 260 1 23 263 1 23 267 1 23 270 1 23 273 1 23 274 1 23 277 1 23 280 1 23 283 1 23 284 1 23 286 1 23 289 1 23 290 1 23 292 1 23 293 1 23 295 1 23 297 1 23 300 1 23 303 1 23 304 1 23 306 1 23 309 1 23 310 1 23 312 1 23 313 1 23 315 1 23 316 1 23 319 1 23 320 1 23 322 1 23 323 1 23 325 1 23 326 1 23 327 1 23 329 1 23 330 1 23 335 1 23 341 1 23 346 1 23 350 1 23 353 1 23 356 1 23 357 1 23 362 1 23 367 1 23 371 1 23 374 1 23 377 1 23 378 1 23 382 1 23 386 1 23 389 1 23 392 1 23 393 1 23 396 1 23 399 1 23 402 1 23 403 1 23 405 1 23 408 1 23 409 1 23 411 1 23 412 1 23 414 1 23 418 1 23 423 1 23 427 1 23 430 1 23 433 1 23 434 1 23 438 1 23 442 1 23 445 1 23 448 1 23 449 1 23 452 1 23 455 1 23 458 1 23 459 1 23 461 1 23 464 1 23 465 1 23 467 1 23 468 1 23 470 1 23 473 1 23 477 1 23 480 1 23 483 1 23 484 1 23 487 1 23 490 1 23 493 1 23 494 1 23 496 1 23 499 1 23 500 1 23 502 1 23 503 1 23 505 1 23 507 1 23 510 1 23 513 1 23 514 1 23 516 1 23 519 1 23 520 1 23 522 1 23 523 1 23 525 1 23 526 1 23 529 1 23 530 1 23 532 1 23 533 1 23 535 1 23 536 1 23 537 1 23 539 1 23 540 1 23 544 1 23 549 1 23 553 1 23 556 1 23 559 1 23 560 1 23 564 1 23 568 1 23 571 1 23 574 1 23 575 1 23 578 1 23 581 1 23 584 1 23 585 1 23 587 1 23 590 1 23 591 1 23 593 1 23 594 1 23 596 1 23 599 1 23 603 1 23 606 1 23 609 1 23 610 1 23 613 1 23 616 1 23 619 1 23 620 1 23 622 1 23 625 1 23 626 1 23 628 1 23 629 1 23 631 1 23 633 1 23 636 1 23 639 1 23 640 1 23 642 1 23 645 1 23 646 1 23 648 1 23 649 1 23 651 1 23 652 1 23 655 1 23 656 1 23 658 1 23 659 1 23 661 1 23 662 1 23 663 1 23 665 1 23 666 1 23 669 1 23 673 1 23 676 1 23 679 1 23 680 1 23 683 1 23 686 1 23 689 1 23 690 1 23 692 1 23 695 1 23 696 1 23 698 1 23 699 1 23 701 1 23 703 1 23 706 1 23 709 1 23 710 1 23 712 1 23 715 1 23 716 1 23 718 1 23 719 1 23 721 1 23 722 1 23 725 1 23 726 1 23 728 1 23 729 1 23 731 1 23 732 1 23 733 1 23 735 1 23 736 1 23 738 1 23 741 1 23 744 1 23 745 1 23 747 1 23 750 1 23 751 1 23 753 1 23 754 1 23 756 1 23 757 1 23 760 1 23 761 1 23 763 1 23 764 1 23 766 1 23 767 1 23 768 1 23 770 1 23 771 1 23 772 1 23 775 1 23 776 1 23 778 1 23 779 1 23 781 1 23 782 1 23 783 1 23 785 1 23 786 1 23 787 1 23 788 1 23 790 1 23 791 1 23 792 1 23 1721 1 23 1727 1 23 1732 1 23 1736 1 23 1739 1 23 1742 1 23 1743 1 23 1748 1 23 1753 1 23 1757 1 23 1760 1 23 1763 1 23 1764 1 23 1768 1 23 1772 1 23 1775 1 23 1778 1 23 1779 1 23 1782 1 23 1785 1 23 1788 1 23 1789 1 23 1791 1 23 1794 1 23 1795 1 23 1797 1 23 1798 1 23 1800 1 23 1804 1 23 1809 1 23 1813 1 23 1816 1 23 1819 1 23 1820 1 23 1824 1 23 1828 1 23 1831 1 23 1834 1 23 1835 1 23 1838 1 23 1841 1 23 1844 1 23 1845 1 23 1847 1 23 1850 1 23 1851 1 23 1853 1 23 1854 1 23 1856 1 23 1859 1 23 1863 1 23 1866 1 23 1869 1 23 1870 1 23 1873 1 23 1876 1 23 1879 1 23 1880 1 23 1882 1 23 1885 1 23 1886 1 23 1888 1 23 1889 1 23 1891 1 23 1893 1 23 1896 1 23 1899 1 23 1900 1 23 1902 1 23 1905 1 23 1906 1 23 1908 1 23 1909 1 23 1911 1 23 1912 1 23 1915 1 23 1916 1 23 1918 1 23 1919 1 23 1921 1 23 1922 1 23 1923 1 23 1925 1 23 1926 1 23 1930 1 23 1935 1 23 1939 1 23 1942 1 23 1945 1 23 1946 1 23 1950 1 23 1954 1 23 1957 1 23 1960 1 23 1961 1 23 1964 1 23 1967 1 23 1970 1 23 1971 1 23 1973 1 23 1976 1 23 1977 1 23 1979 1 23 1980 1 23 1982 1 23 1985 1 23 1989 1 23 1992 1 23 1995 1 23 1996 1 23 1999 1 23 2002 1 23 2005 1 23 2006 1 23 2008 1 23 2011 1 23 2012 1 23 2014 1 23 2015 1 23 2017 1 23 2019 1 23 2022 1 23 2025 1 23 2026 1 23 2028 1 23 2031 1 23 2032 1 23 2034 1 23 2035 1 23 2037 1 23 2038 1 23 2041 1 23 2042 1 23 2044 1 23 2045 1 23 2047 1 23 2048 1 23 2049 1 23 2051 1 23 2052 1 23 2055 1 23 2059 1 23 2062 1 23 2065 1 23 2066 1 23 2069 1 23 2072 1 23 2075 1 23 2076 1 23 2078 1 23 2081 1 23 2082 1 23 2084 1 23 2085 1 23 2087 1 23 2089 1 23 2092 1 23 2095 1 23 2096 1 23 2098 1 23 2101 1 23 2102 1 23 2104 1 23 2105 1 23 2107 1 23 2108 1 23 2111 1 23 2112 1 23 2114 1 23 2115 1 23 2117 1 23 2118 1 23 2119 1 23 2121 1 23 2122 1 23 2124 1 23 2127 1 23 2130 1 23 2131 1 23 2133 1 23 2136 1 23 2137 1 23 2139 1 23 2140 1 23 2142 1 23 2143 1 23 2146 1 23 2147 1 23 2149 1 23 2150 1 23 2152 1 23 2153 1 23 2154 1 23 2156 1 23 2157 1 23 2158 1 23 2161 1 23 2162 1 23 2164 1 23 2165 1 23 2167 1 23 2168 1 23 2169 1 23 2171 1 23 2172 1 23 2173 1 23 2174 1 23 2176 1 23 2177 1 23 2178 1 23 2182 1 23 2187 1 23 2191 1 23 2194 1 23 2197 1 23 2198 1 23 2202 1 23 2206 1 23 2209 1 23 2212 1 23 2213 1 23 2216 1 23 2219 1 23 2222 1 23 2223 1 23 2225 1 23 2228 1 23 2229 1 23 2231 1 23 2232 1 23 2234 1 23 2237 1 23 2241 1 23 2244 1 23 2247 1 23 2248 1 23 2251 1 23 2254 1 23 2257 1 23 2258 1 23 2260 1 23 2263 1 23 2264 1 23 2266 1 23 2267 1 23 2269 1 23 2271 1 23 2274 1 23 2277 1 23 2278 1 23 2280 1 23 2283 1 23 2284 1 23 2286 1 23 2287 1 23 2289 1 23 2290 1 23 2293 1 23 2294 1 23 2296 1 23 2297 1 23 2299 1 23 2300 1 23 2301 1 23 2303 1 23 2304 1 23 2307 1 23 2311 1 23 2314 1 23 2317 1 23 2318 1 23 2321 1 23 2324 1 23 2327 1 23 2328 1 23 2330 1 23 2333 1 23 2334 1 23 2336 1 23 2337 1 23 2339 1 23 2341 1 23 2344 1 23 2347 1 23 2348 1 23 2350 1 23 2353 1 23 2354 1 23 2356 1 23 2357 1 23 2359 1 23 2360 1 23 2363 1 23 2364 1 23 2366 1 23 2367 1 23 2369 1 23 2370 1 23 2371 1 23 2373 1 23 2374 1 23 2376 1 23 2379 1 23 2382 1 23 2383 1 23 2385 1 23 2388 1 23 2389 1 23 2391 1 23 2392 1 23 2394 1 23 2395 1 23 2398 1 23 2399 1 23 2401 1 23 2402 1 23 2404 1 23 2405 1 23 2406 1 23 2408 1 23 2409 1 23 2410 1 23 2413 1 23 2414 1 23 2416 1 23 2417 1 23 2419 1 23 2420 1 23 2421 1 23 2423 1 23 2424 1 23 2425 1 23 2426 1 23 2428 1 23 2429 1 23 2430 1 23 2433 1 23 2437 1 23 2440 1 23 2443 1 23 2444 1 23 2447 1 23 2450 1 23 2453 1 23 2454 1 23 2456 1 23 2459 1 23 2460 1 23 2462 1 23 2463 1 23 2465 1 23 2467 1 23 2470 1 23 2473 1 23 2474 1 23 2476 1 23 2479 1 23 2480 1 23 2482 1 23 2483 1 23 2485 1 23 2486 1 23 2489 1 23 2490 1 23 2492 1 23 2493 1 23 2495 1 23 2496 1 23 2497 1 23 2499 1 23 2500 1 23 2502 1 23 2505 1 23 2508 1 23 2509 1 23 2511 1 23 2514 1 23 2515 1 23 2517 1 23 2518 1 23 2520 1 23 2521 1 23 2524 1 23 2525 1 23 2527 1 23 2528 1 23 2530 1 23 2531 1 23 2532 1 23 2534 1 23 2535 1 23 2536 1 23 2539 1 23 2540 1 23 2542 1 23 2543 1 23 2545 1 23 2546 1 23 2547 1 23 2549 1 23 2550 1 23 2551 1 23 2552 1 23 2554 1 23 2555 1 23 2556 1 23 2558 1 23 2561 1 23 2564 1 23 2565 1 23 2567 1 23 2570 1 23 2571 1 23 2573 1 23 2574 1 23 2576 1 23 2577 1 23 2580 1 23 2581 1 23 2583 1 23 2584 1 23 2586 1 23 2587 1 23 2588 1 23 2590 1 23 2591 1 23 2592 1 23 2595 1 23 2596 1 23 2598 1 23 2599 1 23 2601 1 23 2602 1 23 2603 1 23 2605 1 23 2606 1 23 2607 1 23 2608 1 23 2610 1 23 2611 1 23 2612 1 23 2613 1 23 2616 1 23 2617 1 23 2619 1 23 2620 1 23 2622 1 23 2623 1 23 2624 1 23 2626 1 23 2627 1 23 2628 1 23 2629 1 23 2631 1 23 2632 1 23 2633 1 23 2634 1 23 2635 1 23 2637 1 23 2638 1 23 2639 1 23 2640 1 24 7 1 24 14 1 24 20 1 24 25 1 24 29 1 24 32 1 24 34 1 24 36 1 24 42 1 24 48 1 24 53 1 24 57 1 24 60 1 24 62 1 24 64 1 24 69 1 24 74 1 24 78 1 24 81 1 24 83 1 24 85 1 24 89 1 24 93 1 24 96 1 24 98 1 24 100 1 24 103 1 24 106 1 24 108 1 24 110 1 24 112 1 24 114 1 24 116 1 24 117 1 24 119 1 24 120 1 24 126 1 24 132 1 24 137 1 24 141 1 24 144 1 24 146 1 24 148 1 24 153 1 24 158 1 24 162 1 24 165 1 24 167 1 24 169 1 24 173 1 24 177 1 24 180 1 24 182 1 24 184 1 24 187 1 24 190 1 24 192 1 24 194 1 24 196 1 24 198 1 24 200 1 24 201 1 24 203 1 24 204 1 24 209 1 24 214 1 24 218 1 24 221 1 24 223 1 24 225 1 24 229 1 24 233 1 24 236 1 24 238 1 24 240 1 24 243 1 24 246 1 24 248 1 24 250 1 24 252 1 24 254 1 24 256 1 24 257 1 24 259 1 24 260 1 24 264 1 24 268 1 24 271 1 24 273 1 24 275 1 24 278 1 24 281 1 24 283 1 24 285 1 24 287 1 24 289 1 24 291 1 24 292 1 24 294 1 24 295 1 24 298 1 24 301 1 24 303 1 24 305 1 24 307 1 24 309 1 24 311 1 24 312 1 24 314 1 24 315 1 24 317 1 24 319 1 24 321 1 24 322 1 24 324 1 24 325 1 24 326 1 24 328 1 24 329 1 24 330 1 24 336 1 24 342 1 24 347 1 24 351 1 24 354 1 24 356 1 24 358 1 24 363 1 24 368 1 24 372 1 24 375 1 24 377 1 24 379 1 24 383 1 24 387 1 24 390 1 24 392 1 24 394 1 24 397 1 24 400 1 24 402 1 24 404 1 24 406 1 24 408 1 24 410 1 24 411 1 24 413 1 24 414 1 24 419 1 24 424 1 24 428 1 24 431 1 24 433 1 24 435 1 24 439 1 24 443 1 24 446 1 24 448 1 24 450 1 24 453 1 24 456 1 24 458 1 24 460 1 24 462 1 24 464 1 24 466 1 24 467 1 24 469 1 24 470 1 24 474 1 24 478 1 24 481 1 24 483 1 24 485 1 24 488 1 24 491 1 24 493 1 24 495 1 24 497 1 24 499 1 24 501 1 24 502 1 24 504 1 24 505 1 24 508 1 24 511 1 24 513 1 24 515 1 24 517 1 24 519 1 24 521 1 24 522 1 24 524 1 24 525 1 24 527 1 24 529 1 24 531 1 24 532 1 24 534 1 24 535 1 24 536 1 24 538 1 24 539 1 24 540 1 24 545 1 24 550 1 24 554 1 24 557 1 24 559 1 24 561 1 24 565 1 24 569 1 24 572 1 24 574 1 24 576 1 24 579 1 24 582 1 24 584 1 24 586 1 24 588 1 24 590 1 24 592 1 24 593 1 24 595 1 24 596 1 24 600 1 24 604 1 24 607 1 24 609 1 24 611 1 24 614 1 24 617 1 24 619 1 24 621 1 24 623 1 24 625 1 24 627 1 24 628 1 24 630 1 24 631 1 24 634 1 24 637 1 24 639 1 24 641 1 24 643 1 24 645 1 24 647 1 24 648 1 24 650 1 24 651 1 24 653 1 24 655 1 24 657 1 24 658 1 24 660 1 24 661 1 24 662 1 24 664 1 24 665 1 24 666 1 24 670 1 24 674 1 24 677 1 24 679 1 24 681 1 24 684 1 24 687 1 24 689 1 24 691 1 24 693 1 24 695 1 24 697 1 24 698 1 24 700 1 24 701 1 24 704 1 24 707 1 24 709 1 24 711 1 24 713 1 24 715 1 24 717 1 24 718 1 24 720 1 24 721 1 24 723 1 24 725 1 24 727 1 24 728 1 24 730 1 24 731 1 24 732 1 24 734 1 24 735 1 24 736 1 24 739 1 24 742 1 24 744 1 24 746 1 24 748 1 24 750 1 24 752 1 24 753 1 24 755 1 24 756 1 24 758 1 24 760 1 24 762 1 24 763 1 24 765 1 24 766 1 24 767 1 24 769 1 24 770 1 24 771 1 24 773 1 24 775 1 24 777 1 24 778 1 24 780 1 24 781 1 24 782 1 24 784 1 24 785 1 24 786 1 24 787 1 24 789 1 24 790 1 24 791 1 24 792 1 24 1722 1 24 1728 1 24 1733 1 24 1737 1 24 1740 1 24 1742 1 24 1744 1 24 1749 1 24 1754 1 24 1758 1 24 1761 1 24 1763 1 24 1765 1 24 1769 1 24 1773 1 24 1776 1 24 1778 1 24 1780 1 24 1783 1 24 1786 1 24 1788 1 24 1790 1 24 1792 1 24 1794 1 24 1796 1 24 1797 1 24 1799 1 24 1800 1 24 1805 1 24 1810 1 24 1814 1 24 1817 1 24 1819 1 24 1821 1 24 1825 1 24 1829 1 24 1832 1 24 1834 1 24 1836 1 24 1839 1 24 1842 1 24 1844 1 24 1846 1 24 1848 1 24 1850 1 24 1852 1 24 1853 1 24 1855 1 24 1856 1 24 1860 1 24 1864 1 24 1867 1 24 1869 1 24 1871 1 24 1874 1 24 1877 1 24 1879 1 24 1881 1 24 1883 1 24 1885 1 24 1887 1 24 1888 1 24 1890 1 24 1891 1 24 1894 1 24 1897 1 24 1899 1 24 1901 1 24 1903 1 24 1905 1 24 1907 1 24 1908 1 24 1910 1 24 1911 1 24 1913 1 24 1915 1 24 1917 1 24 1918 1 24 1920 1 24 1921 1 24 1922 1 24 1924 1 24 1925 1 24 1926 1 24 1931 1 24 1936 1 24 1940 1 24 1943 1 24 1945 1 24 1947 1 24 1951 1 24 1955 1 24 1958 1 24 1960 1 24 1962 1 24 1965 1 24 1968 1 24 1970 1 24 1972 1 24 1974 1 24 1976 1 24 1978 1 24 1979 1 24 1981 1 24 1982 1 24 1986 1 24 1990 1 24 1993 1 24 1995 1 24 1997 1 24 2000 1 24 2003 1 24 2005 1 24 2007 1 24 2009 1 24 2011 1 24 2013 1 24 2014 1 24 2016 1 24 2017 1 24 2020 1 24 2023 1 24 2025 1 24 2027 1 24 2029 1 24 2031 1 24 2033 1 24 2034 1 24 2036 1 24 2037 1 24 2039 1 24 2041 1 24 2043 1 24 2044 1 24 2046 1 24 2047 1 24 2048 1 24 2050 1 24 2051 1 24 2052 1 24 2056 1 24 2060 1 24 2063 1 24 2065 1 24 2067 1 24 2070 1 24 2073 1 24 2075 1 24 2077 1 24 2079 1 24 2081 1 24 2083 1 24 2084 1 24 2086 1 24 2087 1 24 2090 1 24 2093 1 24 2095 1 24 2097 1 24 2099 1 24 2101 1 24 2103 1 24 2104 1 24 2106 1 24 2107 1 24 2109 1 24 2111 1 24 2113 1 24 2114 1 24 2116 1 24 2117 1 24 2118 1 24 2120 1 24 2121 1 24 2122 1 24 2125 1 24 2128 1 24 2130 1 24 2132 1 24 2134 1 24 2136 1 24 2138 1 24 2139 1 24 2141 1 24 2142 1 24 2144 1 24 2146 1 24 2148 1 24 2149 1 24 2151 1 24 2152 1 24 2153 1 24 2155 1 24 2156 1 24 2157 1 24 2159 1 24 2161 1 24 2163 1 24 2164 1 24 2166 1 24 2167 1 24 2168 1 24 2170 1 24 2171 1 24 2172 1 24 2173 1 24 2175 1 24 2176 1 24 2177 1 24 2178 1 24 2183 1 24 2188 1 24 2192 1 24 2195 1 24 2197 1 24 2199 1 24 2203 1 24 2207 1 24 2210 1 24 2212 1 24 2214 1 24 2217 1 24 2220 1 24 2222 1 24 2224 1 24 2226 1 24 2228 1 24 2230 1 24 2231 1 24 2233 1 24 2234 1 24 2238 1 24 2242 1 24 2245 1 24 2247 1 24 2249 1 24 2252 1 24 2255 1 24 2257 1 24 2259 1 24 2261 1 24 2263 1 24 2265 1 24 2266 1 24 2268 1 24 2269 1 24 2272 1 24 2275 1 24 2277 1 24 2279 1 24 2281 1 24 2283 1 24 2285 1 24 2286 1 24 2288 1 24 2289 1 24 2291 1 24 2293 1 24 2295 1 24 2296 1 24 2298 1 24 2299 1 24 2300 1 24 2302 1 24 2303 1 24 2304 1 24 2308 1 24 2312 1 24 2315 1 24 2317 1 24 2319 1 24 2322 1 24 2325 1 24 2327 1 24 2329 1 24 2331 1 24 2333 1 24 2335 1 24 2336 1 24 2338 1 24 2339 1 24 2342 1 24 2345 1 24 2347 1 24 2349 1 24 2351 1 24 2353 1 24 2355 1 24 2356 1 24 2358 1 24 2359 1 24 2361 1 24 2363 1 24 2365 1 24 2366 1 24 2368 1 24 2369 1 24 2370 1 24 2372 1 24 2373 1 24 2374 1 24 2377 1 24 2380 1 24 2382 1 24 2384 1 24 2386 1 24 2388 1 24 2390 1 24 2391 1 24 2393 1 24 2394 1 24 2396 1 24 2398 1 24 2400 1 24 2401 1 24 2403 1 24 2404 1 24 2405 1 24 2407 1 24 2408 1 24 2409 1 24 2411 1 24 2413 1 24 2415 1 24 2416 1 24 2418 1 24 2419 1 24 2420 1 24 2422 1 24 2423 1 24 2424 1 24 2425 1 24 2427 1 24 2428 1 24 2429 1 24 2430 1 24 2434 1 24 2438 1 24 2441 1 24 2443 1 24 2445 1 24 2448 1 24 2451 1 24 2453 1 24 2455 1 24 2457 1 24 2459 1 24 2461 1 24 2462 1 24 2464 1 24 2465 1 24 2468 1 24 2471 1 24 2473 1 24 2475 1 24 2477 1 24 2479 1 24 2481 1 24 2482 1 24 2484 1 24 2485 1 24 2487 1 24 2489 1 24 2491 1 24 2492 1 24 2494 1 24 2495 1 24 2496 1 24 2498 1 24 2499 1 24 2500 1 24 2503 1 24 2506 1 24 2508 1 24 2510 1 24 2512 1 24 2514 1 24 2516 1 24 2517 1 24 2519 1 24 2520 1 24 2522 1 24 2524 1 24 2526 1 24 2527 1 24 2529 1 24 2530 1 24 2531 1 24 2533 1 24 2534 1 24 2535 1 24 2537 1 24 2539 1 24 2541 1 24 2542 1 24 2544 1 24 2545 1 24 2546 1 24 2548 1 24 2549 1 24 2550 1 24 2551 1 24 2553 1 24 2554 1 24 2555 1 24 2556 1 24 2559 1 24 2562 1 24 2564 1 24 2566 1 24 2568 1 24 2570 1 24 2572 1 24 2573 1 24 2575 1 24 2576 1 24 2578 1 24 2580 1 24 2582 1 24 2583 1 24 2585 1 24 2586 1 24 2587 1 24 2589 1 24 2590 1 24 2591 1 24 2593 1 24 2595 1 24 2597 1 24 2598 1 24 2600 1 24 2601 1 24 2602 1 24 2604 1 24 2605 1 24 2606 1 24 2607 1 24 2609 1 24 2610 1 24 2611 1 24 2612 1 24 2614 1 24 2616 1 24 2618 1 24 2619 1 24 2621 1 24 2622 1 24 2623 1 24 2625 1 24 2626 1 24 2627 1 24 2628 1 24 2630 1 24 2631 1 24 2632 1 24 2633 1 24 2634 1 24 2636 1 24 2637 1 24 2638 1 24 2639 1 24 2640 1 25 8 1 25 15 1 25 21 1 25 26 1 25 30 1 25 33 1 25 35 1 25 36 1 25 43 1 25 49 1 25 54 1 25 58 1 25 61 1 25 63 1 25 64 1 25 70 1 25 75 1 25 79 1 25 82 1 25 84 1 25 85 1 25 90 1 25 94 1 25 97 1 25 99 1 25 100 1 25 104 1 25 107 1 25 109 1 25 110 1 25 113 1 25 115 1 25 116 1 25 118 1 25 119 1 25 120 1 25 127 1 25 133 1 25 138 1 25 142 1 25 145 1 25 147 1 25 148 1 25 154 1 25 159 1 25 163 1 25 166 1 25 168 1 25 169 1 25 174 1 25 178 1 25 181 1 25 183 1 25 184 1 25 188 1 25 191 1 25 193 1 25 194 1 25 197 1 25 199 1 25 200 1 25 202 1 25 203 1 25 204 1 25 210 1 25 215 1 25 219 1 25 222 1 25 224 1 25 225 1 25 230 1 25 234 1 25 237 1 25 239 1 25 240 1 25 244 1 25 247 1 25 249 1 25 250 1 25 253 1 25 255 1 25 256 1 25 258 1 25 259 1 25 260 1 25 265 1 25 269 1 25 272 1 25 274 1 25 275 1 25 279 1 25 282 1 25 284 1 25 285 1 25 288 1 25 290 1 25 291 1 25 293 1 25 294 1 25 295 1 25 299 1 25 302 1 25 304 1 25 305 1 25 308 1 25 310 1 25 311 1 25 313 1 25 314 1 25 315 1 25 318 1 25 320 1 25 321 1 25 323 1 25 324 1 25 325 1 25 327 1 25 328 1 25 329 1 25 330 1 25 337 1 25 343 1 25 348 1 25 352 1 25 355 1 25 357 1 25 358 1 25 364 1 25 369 1 25 373 1 25 376 1 25 378 1 25 379 1 25 384 1 25 388 1 25 391 1 25 393 1 25 394 1 25 398 1 25 401 1 25 403 1 25 404 1 25 407 1 25 409 1 25 410 1 25 412 1 25 413 1 25 414 1 25 420 1 25 425 1 25 429 1 25 432 1 25 434 1 25 435 1 25 440 1 25 444 1 25 447 1 25 449 1 25 450 1 25 454 1 25 457 1 25 459 1 25 460 1 25 463 1 25 465 1 25 466 1 25 468 1 25 469 1 25 470 1 25 475 1 25 479 1 25 482 1 25 484 1 25 485 1 25 489 1 25 492 1 25 494 1 25 495 1 25 498 1 25 500 1 25 501 1 25 503 1 25 504 1 25 505 1 25 509 1 25 512 1 25 514 1 25 515 1 25 518 1 25 520 1 25 521 1 25 523 1 25 524 1 25 525 1 25 528 1 25 530 1 25 531 1 25 533 1 25 534 1 25 535 1 25 537 1 25 538 1 25 539 1 25 540 1 25 546 1 25 551 1 25 555 1 25 558 1 25 560 1 25 561 1 25 566 1 25 570 1 25 573 1 25 575 1 25 576 1 25 580 1 25 583 1 25 585 1 25 586 1 25 589 1 25 591 1 25 592 1 25 594 1 25 595 1 25 596 1 25 601 1 25 605 1 25 608 1 25 610 1 25 611 1 25 615 1 25 618 1 25 620 1 25 621 1 25 624 1 25 626 1 25 627 1 25 629 1 25 630 1 25 631 1 25 635 1 25 638 1 25 640 1 25 641 1 25 644 1 25 646 1 25 647 1 25 649 1 25 650 1 25 651 1 25 654 1 25 656 1 25 657 1 25 659 1 25 660 1 25 661 1 25 663 1 25 664 1 25 665 1 25 666 1 25 671 1 25 675 1 25 678 1 25 680 1 25 681 1 25 685 1 25 688 1 25 690 1 25 691 1 25 694 1 25 696 1 25 697 1 25 699 1 25 700 1 25 701 1 25 705 1 25 708 1 25 710 1 25 711 1 25 714 1 25 716 1 25 717 1 25 719 1 25 720 1 25 721 1 25 724 1 25 726 1 25 727 1 25 729 1 25 730 1 25 731 1 25 733 1 25 734 1 25 735 1 25 736 1 25 740 1 25 743 1 25 745 1 25 746 1 25 749 1 25 751 1 25 752 1 25 754 1 25 755 1 25 756 1 25 759 1 25 761 1 25 762 1 25 764 1 25 765 1 25 766 1 25 768 1 25 769 1 25 770 1 25 771 1 25 774 1 25 776 1 25 777 1 25 779 1 25 780 1 25 781 1 25 783 1 25 784 1 25 785 1 25 786 1 25 788 1 25 789 1 25 790 1 25 791 1 25 792 1 25 1723 1 25 1729 1 25 1734 1 25 1738 1 25 1741 1 25 1743 1 25 1744 1 25 1750 1 25 1755 1 25 1759 1 25 1762 1 25 1764 1 25 1765 1 25 1770 1 25 1774 1 25 1777 1 25 1779 1 25 1780 1 25 1784 1 25 1787 1 25 1789 1 25 1790 1 25 1793 1 25 1795 1 25 1796 1 25 1798 1 25 1799 1 25 1800 1 25 1806 1 25 1811 1 25 1815 1 25 1818 1 25 1820 1 25 1821 1 25 1826 1 25 1830 1 25 1833 1 25 1835 1 25 1836 1 25 1840 1 25 1843 1 25 1845 1 25 1846 1 25 1849 1 25 1851 1 25 1852 1 25 1854 1 25 1855 1 25 1856 1 25 1861 1 25 1865 1 25 1868 1 25 1870 1 25 1871 1 25 1875 1 25 1878 1 25 1880 1 25 1881 1 25 1884 1 25 1886 1 25 1887 1 25 1889 1 25 1890 1 25 1891 1 25 1895 1 25 1898 1 25 1900 1 25 1901 1 25 1904 1 25 1906 1 25 1907 1 25 1909 1 25 1910 1 25 1911 1 25 1914 1 25 1916 1 25 1917 1 25 1919 1 25 1920 1 25 1921 1 25 1923 1 25 1924 1 25 1925 1 25 1926 1 25 1932 1 25 1937 1 25 1941 1 25 1944 1 25 1946 1 25 1947 1 25 1952 1 25 1956 1 25 1959 1 25 1961 1 25 1962 1 25 1966 1 25 1969 1 25 1971 1 25 1972 1 25 1975 1 25 1977 1 25 1978 1 25 1980 1 25 1981 1 25 1982 1 25 1987 1 25 1991 1 25 1994 1 25 1996 1 25 1997 1 25 2001 1 25 2004 1 25 2006 1 25 2007 1 25 2010 1 25 2012 1 25 2013 1 25 2015 1 25 2016 1 25 2017 1 25 2021 1 25 2024 1 25 2026 1 25 2027 1 25 2030 1 25 2032 1 25 2033 1 25 2035 1 25 2036 1 25 2037 1 25 2040 1 25 2042 1 25 2043 1 25 2045 1 25 2046 1 25 2047 1 25 2049 1 25 2050 1 25 2051 1 25 2052 1 25 2057 1 25 2061 1 25 2064 1 25 2066 1 25 2067 1 25 2071 1 25 2074 1 25 2076 1 25 2077 1 25 2080 1 25 2082 1 25 2083 1 25 2085 1 25 2086 1 25 2087 1 25 2091 1 25 2094 1 25 2096 1 25 2097 1 25 2100 1 25 2102 1 25 2103 1 25 2105 1 25 2106 1 25 2107 1 25 2110 1 25 2112 1 25 2113 1 25 2115 1 25 2116 1 25 2117 1 25 2119 1 25 2120 1 25 2121 1 25 2122 1 25 2126 1 25 2129 1 25 2131 1 25 2132 1 25 2135 1 25 2137 1 25 2138 1 25 2140 1 25 2141 1 25 2142 1 25 2145 1 25 2147 1 25 2148 1 25 2150 1 25 2151 1 25 2152 1 25 2154 1 25 2155 1 25 2156 1 25 2157 1 25 2160 1 25 2162 1 25 2163 1 25 2165 1 25 2166 1 25 2167 1 25 2169 1 25 2170 1 25 2171 1 25 2172 1 25 2174 1 25 2175 1 25 2176 1 25 2177 1 25 2178 1 25 2184 1 25 2189 1 25 2193 1 25 2196 1 25 2198 1 25 2199 1 25 2204 1 25 2208 1 25 2211 1 25 2213 1 25 2214 1 25 2218 1 25 2221 1 25 2223 1 25 2224 1 25 2227 1 25 2229 1 25 2230 1 25 2232 1 25 2233 1 25 2234 1 25 2239 1 25 2243 1 25 2246 1 25 2248 1 25 2249 1 25 2253 1 25 2256 1 25 2258 1 25 2259 1 25 2262 1 25 2264 1 25 2265 1 25 2267 1 25 2268 1 25 2269 1 25 2273 1 25 2276 1 25 2278 1 25 2279 1 25 2282 1 25 2284 1 25 2285 1 25 2287 1 25 2288 1 25 2289 1 25 2292 1 25 2294 1 25 2295 1 25 2297 1 25 2298 1 25 2299 1 25 2301 1 25 2302 1 25 2303 1 25 2304 1 25 2309 1 25 2313 1 25 2316 1 25 2318 1 25 2319 1 25 2323 1 25 2326 1 25 2328 1 25 2329 1 25 2332 1 25 2334 1 25 2335 1 25 2337 1 25 2338 1 25 2339 1 25 2343 1 25 2346 1 25 2348 1 25 2349 1 25 2352 1 25 2354 1 25 2355 1 25 2357 1 25 2358 1 25 2359 1 25 2362 1 25 2364 1 25 2365 1 25 2367 1 25 2368 1 25 2369 1 25 2371 1 25 2372 1 25 2373 1 25 2374 1 25 2378 1 25 2381 1 25 2383 1 25 2384 1 25 2387 1 25 2389 1 25 2390 1 25 2392 1 25 2393 1 25 2394 1 25 2397 1 25 2399 1 25 2400 1 25 2402 1 25 2403 1 25 2404 1 25 2406 1 25 2407 1 25 2408 1 25 2409 1 25 2412 1 25 2414 1 25 2415 1 25 2417 1 25 2418 1 25 2419 1 25 2421 1 25 2422 1 25 2423 1 25 2424 1 25 2426 1 25 2427 1 25 2428 1 25 2429 1 25 2430 1 25 2435 1 25 2439 1 25 2442 1 25 2444 1 25 2445 1 25 2449 1 25 2452 1 25 2454 1 25 2455 1 25 2458 1 25 2460 1 25 2461 1 25 2463 1 25 2464 1 25 2465 1 25 2469 1 25 2472 1 25 2474 1 25 2475 1 25 2478 1 25 2480 1 25 2481 1 25 2483 1 25 2484 1 25 2485 1 25 2488 1 25 2490 1 25 2491 1 25 2493 1 25 2494 1 25 2495 1 25 2497 1 25 2498 1 25 2499 1 25 2500 1 25 2504 1 25 2507 1 25 2509 1 25 2510 1 25 2513 1 25 2515 1 25 2516 1 25 2518 1 25 2519 1 25 2520 1 25 2523 1 25 2525 1 25 2526 1 25 2528 1 25 2529 1 25 2530 1 25 2532 1 25 2533 1 25 2534 1 25 2535 1 25 2538 1 25 2540 1 25 2541 1 25 2543 1 25 2544 1 25 2545 1 25 2547 1 25 2548 1 25 2549 1 25 2550 1 25 2552 1 25 2553 1 25 2554 1 25 2555 1 25 2556 1 25 2560 1 25 2563 1 25 2565 1 25 2566 1 25 2569 1 25 2571 1 25 2572 1 25 2574 1 25 2575 1 25 2576 1 25 2579 1 25 2581 1 25 2582 1 25 2584 1 25 2585 1 25 2586 1 25 2588 1 25 2589 1 25 2590 1 25 2591 1 25 2594 1 25 2596 1 25 2597 1 25 2599 1 25 2600 1 25 2601 1 25 2603 1 25 2604 1 25 2605 1 25 2606 1 25 2608 1 25 2609 1 25 2610 1 25 2611 1 25 2612 1 25 2615 1 25 2617 1 25 2618 1 25 2620 1 25 2621 1 25 2622 1 25 2624 1 25 2625 1 25 2626 1 25 2627 1 25 2629 1 25 2630 1 25 2631 1 25 2632 1 25 2633 1 25 2635 1 25 2636 1 25 2637 1 25 2638 1 25 2639 1 25 2640 1 26 1 1 26 2 1 26 3 1 26 4 1 26 5 1 26 6 1 26 7 1 26 8 1 26 9 1 26 10 1 26 11 1 26 12 1 26 13 1 26 14 1 26 15 1 26 16 1 26 17 1 26 18 1 26 19 1 26 20 1 26 21 1 26 22 1 26 23 1 26 24 1 26 25 1 26 26 1 26 27 1 26 28 1 26 29 1 26 30 1 26 31 1 26 32 1 26 33 1 26 34 1 26 35 1 26 36 1 26 37 1 26 38 1 26 39 1 26 40 1 26 41 1 26 42 1 26 43 1 26 44 1 26 45 1 26 46 1 26 47 1 26 48 1 26 49 1 26 50 1 26 51 1 26 52 1 26 53 1 26 54 1 26 55 1 26 56 1 26 57 1 26 58 1 26 59 1 26 60 1 26 61 1 26 62 1 26 63 1 26 64 1 26 65 1 26 66 1 26 67 1 26 68 1 26 69 1 26 70 1 26 71 1 26 72 1 26 73 1 26 74 1 26 75 1 26 76 1 26 77 1 26 78 1 26 79 1 26 80 1 26 81 1 26 82 1 26 83 1 26 84 1 26 85 1 26 86 1 26 87 1 26 88 1 26 89 1 26 90 1 26 91 1 26 92 1 26 93 1 26 94 1 26 95 1 26 96 1 26 97 1 26 98 1 26 99 1 26 100 1 26 101 1 26 102 1 26 103 1 26 104 1 26 105 1 26 106 1 26 107 1 26 108 1 26 109 1 26 110 1 26 111 1 26 112 1 26 113 1 26 114 1 26 115 1 26 116 1 26 117 1 26 118 1 26 119 1 26 120 1 26 793 1 26 794 1 26 795 1 26 796 1 26 797 1 26 798 1 26 799 1 26 800 1 26 801 1 26 802 1 26 803 1 26 804 1 26 805 1 26 806 1 26 807 1 26 808 1 26 809 1 26 810 1 26 811 1 26 812 1 26 813 1 26 814 1 26 815 1 26 816 1 26 817 1 26 818 1 26 819 1 26 820 1 26 821 1 26 822 1 26 823 1 26 824 1 26 825 1 26 826 1 26 827 1 26 828 1 26 829 1 26 830 1 26 831 1 26 832 1 26 833 1 26 834 1 26 835 1 26 836 1 26 837 1 26 838 1 26 839 1 26 840 1 26 841 1 26 842 1 26 843 1 26 844 1 26 845 1 26 846 1 26 847 1 26 848 1 26 849 1 26 850 1 26 851 1 26 852 1 26 853 1 26 854 1 26 855 1 26 856 1 26 857 1 26 858 1 26 859 1 26 860 1 26 861 1 26 862 1 26 863 1 26 864 1 26 865 1 26 866 1 26 867 1 26 868 1 26 869 1 26 870 1 26 871 1 26 872 1 26 873 1 26 874 1 26 875 1 26 876 1 26 877 1 26 878 1 26 879 1 26 880 1 26 881 1 26 882 1 26 883 1 26 884 1 26 885 1 26 886 1 26 887 1 26 888 1 26 889 1 26 890 1 26 891 1 26 892 1 26 893 1 26 894 1 26 895 1 26 896 1 26 897 1 26 898 1 26 899 1 26 900 1 26 901 1 26 902 1 26 903 1 26 904 1 26 905 1 26 906 1 26 907 1 26 908 1 26 909 1 26 910 1 26 911 1 26 912 1 26 913 1 26 914 1 26 915 1 26 916 1 26 917 1 26 918 1 26 919 1 26 920 1 26 921 1 26 922 1 26 923 1 26 924 1 26 925 1 26 926 1 26 927 1 26 928 1 26 929 1 26 930 1 26 931 1 26 932 1 26 933 1 26 934 1 26 935 1 26 936 1 26 937 1 26 938 1 26 939 1 26 940 1 26 941 1 26 942 1 26 943 1 26 944 1 26 945 1 26 946 1 26 947 1 26 948 1 26 949 1 26 950 1 26 951 1 26 952 1 26 953 1 26 954 1 26 955 1 26 956 1 26 957 1 26 958 1 26 959 1 26 960 1 26 961 1 26 962 1 26 963 1 26 964 1 26 965 1 26 966 1 26 967 1 26 968 1 26 969 1 26 970 1 26 971 1 26 972 1 26 973 1 26 974 1 26 975 1 26 976 1 26 977 1 26 978 1 26 979 1 26 980 1 26 981 1 26 982 1 26 983 1 26 984 1 26 985 1 26 986 1 26 987 1 26 988 1 26 989 1 26 990 1 26 991 1 26 992 1 26 993 1 26 994 1 26 995 1 26 996 1 26 997 1 26 998 1 26 999 1 26 1000 1 26 1001 1 26 1002 1 26 1717 1 26 1718 1 26 1719 1 26 1720 1 26 1721 1 26 1722 1 26 1723 1 26 1724 1 26 1725 1 26 1726 1 26 1727 1 26 1728 1 26 1729 1 26 1730 1 26 1731 1 26 1732 1 26 1733 1 26 1734 1 26 1735 1 26 1736 1 26 1737 1 26 1738 1 26 1739 1 26 1740 1 26 1741 1 26 1742 1 26 1743 1 26 1744 1 26 1745 1 26 1746 1 26 1747 1 26 1748 1 26 1749 1 26 1750 1 26 1751 1 26 1752 1 26 1753 1 26 1754 1 26 1755 1 26 1756 1 26 1757 1 26 1758 1 26 1759 1 26 1760 1 26 1761 1 26 1762 1 26 1763 1 26 1764 1 26 1765 1 26 1766 1 26 1767 1 26 1768 1 26 1769 1 26 1770 1 26 1771 1 26 1772 1 26 1773 1 26 1774 1 26 1775 1 26 1776 1 26 1777 1 26 1778 1 26 1779 1 26 1780 1 26 1781 1 26 1782 1 26 1783 1 26 1784 1 26 1785 1 26 1786 1 26 1787 1 26 1788 1 26 1789 1 26 1790 1 26 1791 1 26 1792 1 26 1793 1 26 1794 1 26 1795 1 26 1796 1 26 1797 1 26 1798 1 26 1799 1 26 1800 1 26 1801 1 26 1802 1 26 1803 1 26 1804 1 26 1805 1 26 1806 1 26 1807 1 26 1808 1 26 1809 1 26 1810 1 26 1811 1 26 1812 1 26 1813 1 26 1814 1 26 1815 1 26 1816 1 26 1817 1 26 1818 1 26 1819 1 26 1820 1 26 1821 1 26 1822 1 26 1823 1 26 1824 1 26 1825 1 26 1826 1 26 1827 1 26 1828 1 26 1829 1 26 1830 1 26 1831 1 26 1832 1 26 1833 1 26 1834 1 26 1835 1 26 1836 1 26 1837 1 26 1838 1 26 1839 1 26 1840 1 26 1841 1 26 1842 1 26 1843 1 26 1844 1 26 1845 1 26 1846 1 26 1847 1 26 1848 1 26 1849 1 26 1850 1 26 1851 1 26 1852 1 26 1853 1 26 1854 1 26 1855 1 26 1856 1 26 1857 1 26 1858 1 26 1859 1 26 1860 1 26 1861 1 26 1862 1 26 1863 1 26 1864 1 26 1865 1 26 1866 1 26 1867 1 26 1868 1 26 1869 1 26 1870 1 26 1871 1 26 1872 1 26 1873 1 26 1874 1 26 1875 1 26 1876 1 26 1877 1 26 1878 1 26 1879 1 26 1880 1 26 1881 1 26 1882 1 26 1883 1 26 1884 1 26 1885 1 26 1886 1 26 1887 1 26 1888 1 26 1889 1 26 1890 1 26 1891 1 26 1892 1 26 1893 1 26 1894 1 26 1895 1 26 1896 1 26 1897 1 26 1898 1 26 1899 1 26 1900 1 26 1901 1 26 1902 1 26 1903 1 26 1904 1 26 1905 1 26 1906 1 26 1907 1 26 1908 1 26 1909 1 26 1910 1 26 1911 1 26 1912 1 26 1913 1 26 1914 1 26 1915 1 26 1916 1 26 1917 1 26 1918 1 26 1919 1 26 1920 1 26 1921 1 26 1922 1 26 1923 1 26 1924 1 26 1925 1 26 1926 1 26 2641 1 26 2642 1 26 2643 1 26 2644 1 26 2645 1 26 2646 1 26 2647 1 26 2648 1 26 2649 1 26 2650 1 26 2651 1 26 2652 1 26 2653 1 26 2654 1 26 2655 1 26 2656 1 26 2657 1 26 2658 1 26 2659 1 26 2660 1 26 2661 1 26 2662 1 26 2663 1 26 2664 1 26 2665 1 26 2666 1 26 2667 1 26 2668 1 26 2669 1 26 2670 1 26 2671 1 26 2672 1 26 2673 1 26 2674 1 26 2675 1 26 2676 1 26 2677 1 26 2678 1 26 2679 1 26 2680 1 26 2681 1 26 2682 1 26 2683 1 26 2684 1 26 2685 1 26 2686 1 26 2687 1 26 2688 1 26 2689 1 26 2690 1 26 2691 1 26 2692 1 26 2693 1 26 2694 1 26 2695 1 26 2696 1 26 2697 1 26 2698 1 26 2699 1 26 2700 1 26 2701 1 26 2702 1 26 2703 1 26 2704 1 26 2705 1 26 2706 1 26 2707 1 26 2708 1 26 2709 1 26 2710 1 26 2711 1 26 2712 1 26 2713 1 26 2714 1 26 2715 1 26 2716 1 26 2717 1 26 2718 1 26 2719 1 26 2720 1 26 2721 1 26 2722 1 26 2723 1 26 2724 1 26 2725 1 26 2726 1 26 2727 1 26 2728 1 26 2729 1 26 2730 1 26 2731 1 26 2732 1 26 2733 1 26 2734 1 26 2735 1 26 2736 1 26 2737 1 26 2738 1 26 2739 1 26 2740 1 26 2741 1 26 2742 1 26 2743 1 26 2744 1 26 2745 1 26 2746 1 26 2747 1 26 2748 1 26 2749 1 26 2750 1 26 2751 1 26 2752 1 26 2753 1 26 2754 1 26 2755 1 26 2756 1 26 2757 1 26 2758 1 26 2759 1 26 2760 1 26 2761 1 26 2762 1 26 2763 1 26 2764 1 26 2765 1 26 2766 1 26 2767 1 26 2768 1 26 2769 1 26 2770 1 26 2771 1 26 2772 1 26 2773 1 26 2774 1 26 2775 1 26 2776 1 26 2777 1 26 2778 1 26 2779 1 26 2780 1 26 2781 1 26 2782 1 26 2783 1 26 2784 1 26 2785 1 26 2786 1 26 2787 1 26 2788 1 26 2789 1 26 2790 1 26 2791 1 26 2792 1 26 2793 1 26 2794 1 26 2795 1 26 2796 1 26 2797 1 26 2798 1 26 2799 1 26 2800 1 26 2801 1 26 2802 1 26 2803 1 26 2804 1 26 2805 1 26 2806 1 26 2807 1 26 2808 1 26 2809 1 26 2810 1 26 2811 1 26 2812 1 26 2813 1 26 2814 1 26 2815 1 26 2816 1 26 2817 1 26 2818 1 26 2819 1 26 2820 1 26 2821 1 26 2822 1 26 2823 1 26 2824 1 26 2825 1 26 2826 1 26 2827 1 26 2828 1 26 2829 1 26 2830 1 26 2831 1 26 2832 1 26 2833 1 26 2834 1 26 2835 1 26 2836 1 26 2837 1 26 2838 1 26 2839 1 26 2840 1 26 2841 1 26 2842 1 26 2843 1 26 2844 1 26 2845 1 26 2846 1 26 2847 1 26 2848 1 26 2849 1 26 2850 1 26 2851 1 26 2852 1 26 2853 1 26 2854 1 26 2855 1 26 2856 1 26 2857 1 26 2858 1 26 2859 1 26 2860 1 26 2861 1 26 2862 1 26 2863 1 26 2864 1 26 2865 1 26 2866 1 26 2867 1 26 2868 1 26 2869 1 26 2870 1 26 2871 1 26 2872 1 26 2873 1 26 2874 1 26 2875 1 26 2876 1 26 2877 1 26 2878 1 26 2879 1 26 2880 1 26 2881 1 26 2882 1 26 2883 1 26 2884 1 26 2885 1 26 2886 1 26 2887 1 26 2888 1 26 2889 1 26 2890 1 26 2891 1 26 2892 1 27 1 1 27 2 1 27 3 1 27 4 1 27 5 1 27 6 1 27 7 1 27 8 1 27 9 1 27 10 1 27 11 1 27 12 1 27 13 1 27 14 1 27 15 1 27 16 1 27 17 1 27 18 1 27 19 1 27 20 1 27 21 1 27 22 1 27 23 1 27 24 1 27 25 1 27 26 1 27 27 1 27 28 1 27 29 1 27 30 1 27 31 1 27 32 1 27 33 1 27 34 1 27 35 1 27 36 1 27 121 1 27 122 1 27 123 1 27 124 1 27 125 1 27 126 1 27 127 1 27 128 1 27 129 1 27 130 1 27 131 1 27 132 1 27 133 1 27 134 1 27 135 1 27 136 1 27 137 1 27 138 1 27 139 1 27 140 1 27 141 1 27 142 1 27 143 1 27 144 1 27 145 1 27 146 1 27 147 1 27 148 1 27 149 1 27 150 1 27 151 1 27 152 1 27 153 1 27 154 1 27 155 1 27 156 1 27 157 1 27 158 1 27 159 1 27 160 1 27 161 1 27 162 1 27 163 1 27 164 1 27 165 1 27 166 1 27 167 1 27 168 1 27 169 1 27 170 1 27 171 1 27 172 1 27 173 1 27 174 1 27 175 1 27 176 1 27 177 1 27 178 1 27 179 1 27 180 1 27 181 1 27 182 1 27 183 1 27 184 1 27 185 1 27 186 1 27 187 1 27 188 1 27 189 1 27 190 1 27 191 1 27 192 1 27 193 1 27 194 1 27 195 1 27 196 1 27 197 1 27 198 1 27 199 1 27 200 1 27 201 1 27 202 1 27 203 1 27 204 1 27 793 1 27 794 1 27 795 1 27 796 1 27 797 1 27 798 1 27 799 1 27 800 1 27 801 1 27 802 1 27 803 1 27 804 1 27 805 1 27 806 1 27 807 1 27 808 1 27 809 1 27 810 1 27 811 1 27 812 1 27 813 1 27 814 1 27 815 1 27 816 1 27 817 1 27 818 1 27 819 1 27 820 1 27 821 1 27 822 1 27 823 1 27 824 1 27 825 1 27 826 1 27 827 1 27 828 1 27 829 1 27 830 1 27 831 1 27 832 1 27 833 1 27 834 1 27 835 1 27 836 1 27 837 1 27 838 1 27 839 1 27 840 1 27 841 1 27 842 1 27 843 1 27 844 1 27 845 1 27 846 1 27 847 1 27 848 1 27 849 1 27 850 1 27 851 1 27 852 1 27 853 1 27 854 1 27 855 1 27 856 1 27 857 1 27 858 1 27 859 1 27 860 1 27 861 1 27 862 1 27 863 1 27 864 1 27 865 1 27 866 1 27 867 1 27 868 1 27 869 1 27 870 1 27 871 1 27 872 1 27 873 1 27 874 1 27 875 1 27 876 1 27 1003 1 27 1004 1 27 1005 1 27 1006 1 27 1007 1 27 1008 1 27 1009 1 27 1010 1 27 1011 1 27 1012 1 27 1013 1 27 1014 1 27 1015 1 27 1016 1 27 1017 1 27 1018 1 27 1019 1 27 1020 1 27 1021 1 27 1022 1 27 1023 1 27 1024 1 27 1025 1 27 1026 1 27 1027 1 27 1028 1 27 1029 1 27 1030 1 27 1031 1 27 1032 1 27 1033 1 27 1034 1 27 1035 1 27 1036 1 27 1037 1 27 1038 1 27 1039 1 27 1040 1 27 1041 1 27 1042 1 27 1043 1 27 1044 1 27 1045 1 27 1046 1 27 1047 1 27 1048 1 27 1049 1 27 1050 1 27 1051 1 27 1052 1 27 1053 1 27 1054 1 27 1055 1 27 1056 1 27 1057 1 27 1058 1 27 1059 1 27 1060 1 27 1061 1 27 1062 1 27 1063 1 27 1064 1 27 1065 1 27 1066 1 27 1067 1 27 1068 1 27 1069 1 27 1070 1 27 1071 1 27 1072 1 27 1073 1 27 1074 1 27 1075 1 27 1076 1 27 1077 1 27 1078 1 27 1079 1 27 1080 1 27 1081 1 27 1082 1 27 1083 1 27 1084 1 27 1085 1 27 1086 1 27 1087 1 27 1088 1 27 1089 1 27 1090 1 27 1091 1 27 1092 1 27 1093 1 27 1094 1 27 1095 1 27 1096 1 27 1097 1 27 1098 1 27 1099 1 27 1100 1 27 1101 1 27 1102 1 27 1103 1 27 1104 1 27 1105 1 27 1106 1 27 1107 1 27 1108 1 27 1109 1 27 1110 1 27 1111 1 27 1112 1 27 1113 1 27 1114 1 27 1115 1 27 1116 1 27 1117 1 27 1118 1 27 1119 1 27 1120 1 27 1121 1 27 1122 1 27 1123 1 27 1124 1 27 1125 1 27 1126 1 27 1127 1 27 1128 1 27 1717 1 27 1718 1 27 1719 1 27 1720 1 27 1721 1 27 1722 1 27 1723 1 27 1724 1 27 1725 1 27 1726 1 27 1727 1 27 1728 1 27 1729 1 27 1730 1 27 1731 1 27 1732 1 27 1733 1 27 1734 1 27 1735 1 27 1736 1 27 1737 1 27 1738 1 27 1739 1 27 1740 1 27 1741 1 27 1742 1 27 1743 1 27 1744 1 27 1745 1 27 1746 1 27 1747 1 27 1748 1 27 1749 1 27 1750 1 27 1751 1 27 1752 1 27 1753 1 27 1754 1 27 1755 1 27 1756 1 27 1757 1 27 1758 1 27 1759 1 27 1760 1 27 1761 1 27 1762 1 27 1763 1 27 1764 1 27 1765 1 27 1766 1 27 1767 1 27 1768 1 27 1769 1 27 1770 1 27 1771 1 27 1772 1 27 1773 1 27 1774 1 27 1775 1 27 1776 1 27 1777 1 27 1778 1 27 1779 1 27 1780 1 27 1781 1 27 1782 1 27 1783 1 27 1784 1 27 1785 1 27 1786 1 27 1787 1 27 1788 1 27 1789 1 27 1790 1 27 1791 1 27 1792 1 27 1793 1 27 1794 1 27 1795 1 27 1796 1 27 1797 1 27 1798 1 27 1799 1 27 1800 1 27 1927 1 27 1928 1 27 1929 1 27 1930 1 27 1931 1 27 1932 1 27 1933 1 27 1934 1 27 1935 1 27 1936 1 27 1937 1 27 1938 1 27 1939 1 27 1940 1 27 1941 1 27 1942 1 27 1943 1 27 1944 1 27 1945 1 27 1946 1 27 1947 1 27 1948 1 27 1949 1 27 1950 1 27 1951 1 27 1952 1 27 1953 1 27 1954 1 27 1955 1 27 1956 1 27 1957 1 27 1958 1 27 1959 1 27 1960 1 27 1961 1 27 1962 1 27 1963 1 27 1964 1 27 1965 1 27 1966 1 27 1967 1 27 1968 1 27 1969 1 27 1970 1 27 1971 1 27 1972 1 27 1973 1 27 1974 1 27 1975 1 27 1976 1 27 1977 1 27 1978 1 27 1979 1 27 1980 1 27 1981 1 27 1982 1 27 1983 1 27 1984 1 27 1985 1 27 1986 1 27 1987 1 27 1988 1 27 1989 1 27 1990 1 27 1991 1 27 1992 1 27 1993 1 27 1994 1 27 1995 1 27 1996 1 27 1997 1 27 1998 1 27 1999 1 27 2000 1 27 2001 1 27 2002 1 27 2003 1 27 2004 1 27 2005 1 27 2006 1 27 2007 1 27 2008 1 27 2009 1 27 2010 1 27 2011 1 27 2012 1 27 2013 1 27 2014 1 27 2015 1 27 2016 1 27 2017 1 27 2018 1 27 2019 1 27 2020 1 27 2021 1 27 2022 1 27 2023 1 27 2024 1 27 2025 1 27 2026 1 27 2027 1 27 2028 1 27 2029 1 27 2030 1 27 2031 1 27 2032 1 27 2033 1 27 2034 1 27 2035 1 27 2036 1 27 2037 1 27 2038 1 27 2039 1 27 2040 1 27 2041 1 27 2042 1 27 2043 1 27 2044 1 27 2045 1 27 2046 1 27 2047 1 27 2048 1 27 2049 1 27 2050 1 27 2051 1 27 2052 1 27 2641 1 27 2642 1 27 2643 1 27 2644 1 27 2645 1 27 2646 1 27 2647 1 27 2648 1 27 2649 1 27 2650 1 27 2651 1 27 2652 1 27 2653 1 27 2654 1 27 2655 1 27 2656 1 27 2657 1 27 2658 1 27 2659 1 27 2660 1 27 2661 1 27 2662 1 27 2663 1 27 2664 1 27 2665 1 27 2666 1 27 2667 1 27 2668 1 27 2669 1 27 2670 1 27 2671 1 27 2672 1 27 2673 1 27 2674 1 27 2675 1 27 2676 1 27 2677 1 27 2678 1 27 2679 1 27 2680 1 27 2681 1 27 2682 1 27 2683 1 27 2684 1 27 2685 1 27 2686 1 27 2687 1 27 2688 1 27 2689 1 27 2690 1 27 2691 1 27 2692 1 27 2693 1 27 2694 1 27 2695 1 27 2696 1 27 2697 1 27 2698 1 27 2699 1 27 2700 1 27 2701 1 27 2702 1 27 2703 1 27 2704 1 27 2705 1 27 2706 1 27 2707 1 27 2708 1 27 2709 1 27 2710 1 27 2711 1 27 2712 1 27 2713 1 27 2714 1 27 2715 1 27 2716 1 27 2717 1 27 2718 1 27 2719 1 27 2720 1 27 2721 1 27 2722 1 27 2723 1 27 2724 1 27 2725 1 27 2726 1 27 2727 1 27 2728 1 27 2729 1 27 2730 1 27 2731 1 27 2732 1 27 2733 1 27 2734 1 27 2735 1 27 2736 1 27 2737 1 27 2738 1 27 2739 1 27 2740 1 27 2741 1 27 2742 1 27 2743 1 27 2744 1 27 2745 1 27 2746 1 27 2747 1 27 2748 1 27 2749 1 27 2750 1 27 2751 1 27 2752 1 27 2753 1 27 2754 1 27 2755 1 27 2756 1 27 2757 1 27 2758 1 27 2759 1 27 2760 1 27 2761 1 27 2762 1 27 2763 1 27 2764 1 27 2765 1 27 2766 1 27 2893 1 27 2894 1 27 2895 1 27 2896 1 27 2897 1 27 2898 1 27 2899 1 27 2900 1 27 2901 1 27 2902 1 27 2903 1 27 2904 1 27 2905 1 27 2906 1 27 2907 1 27 2908 1 27 2909 1 27 2910 1 27 2911 1 27 2912 1 27 2913 1 27 2914 1 27 2915 1 27 2916 1 27 2917 1 27 2918 1 27 2919 1 27 2920 1 27 2921 1 27 2922 1 27 2923 1 27 2924 1 27 2925 1 27 2926 1 27 2927 1 27 2928 1 27 2929 1 27 2930 1 27 2931 1 27 2932 1 27 2933 1 27 2934 1 27 2935 1 27 2936 1 27 2937 1 27 2938 1 27 2939 1 27 2940 1 27 2941 1 27 2942 1 27 2943 1 27 2944 1 27 2945 1 27 2946 1 27 2947 1 27 2948 1 27 2949 1 27 2950 1 27 2951 1 27 2952 1 27 2953 1 27 2954 1 27 2955 1 27 2956 1 27 2957 1 27 2958 1 27 2959 1 27 2960 1 27 2961 1 27 2962 1 27 2963 1 27 2964 1 27 2965 1 27 2966 1 27 2967 1 27 2968 1 27 2969 1 27 2970 1 27 2971 1 27 2972 1 27 2973 1 27 2974 1 27 2975 1 27 2976 1 27 2977 1 27 2978 1 27 2979 1 27 2980 1 27 2981 1 27 2982 1 27 2983 1 27 2984 1 27 2985 1 27 2986 1 27 2987 1 27 2988 1 27 2989 1 27 2990 1 27 2991 1 27 2992 1 27 2993 1 27 2994 1 27 2995 1 27 2996 1 27 2997 1 27 2998 1 27 2999 1 27 3000 1 27 3001 1 27 3002 1 27 3003 1 27 3004 1 27 3005 1 27 3006 1 27 3007 1 27 3008 1 27 3009 1 27 3010 1 27 3011 1 27 3012 1 27 3013 1 27 3014 1 27 3015 1 27 3016 1 27 3017 1 27 3018 1 28 1 1 28 2 1 28 3 1 28 4 1 28 5 1 28 6 1 28 7 1 28 8 1 28 37 1 28 38 1 28 39 1 28 40 1 28 41 1 28 42 1 28 43 1 28 44 1 28 45 1 28 46 1 28 47 1 28 48 1 28 49 1 28 50 1 28 51 1 28 52 1 28 53 1 28 54 1 28 55 1 28 56 1 28 57 1 28 58 1 28 59 1 28 60 1 28 61 1 28 62 1 28 63 1 28 64 1 28 121 1 28 122 1 28 123 1 28 124 1 28 125 1 28 126 1 28 127 1 28 128 1 28 129 1 28 130 1 28 131 1 28 132 1 28 133 1 28 134 1 28 135 1 28 136 1 28 137 1 28 138 1 28 139 1 28 140 1 28 141 1 28 142 1 28 143 1 28 144 1 28 145 1 28 146 1 28 147 1 28 148 1 28 205 1 28 206 1 28 207 1 28 208 1 28 209 1 28 210 1 28 211 1 28 212 1 28 213 1 28 214 1 28 215 1 28 216 1 28 217 1 28 218 1 28 219 1 28 220 1 28 221 1 28 222 1 28 223 1 28 224 1 28 225 1 28 226 1 28 227 1 28 228 1 28 229 1 28 230 1 28 231 1 28 232 1 28 233 1 28 234 1 28 235 1 28 236 1 28 237 1 28 238 1 28 239 1 28 240 1 28 241 1 28 242 1 28 243 1 28 244 1 28 245 1 28 246 1 28 247 1 28 248 1 28 249 1 28 250 1 28 251 1 28 252 1 28 253 1 28 254 1 28 255 1 28 256 1 28 257 1 28 258 1 28 259 1 28 260 1 28 793 1 28 794 1 28 795 1 28 796 1 28 797 1 28 798 1 28 799 1 28 800 1 28 801 1 28 802 1 28 803 1 28 804 1 28 805 1 28 806 1 28 807 1 28 808 1 28 809 1 28 810 1 28 811 1 28 812 1 28 813 1 28 814 1 28 815 1 28 816 1 28 817 1 28 818 1 28 819 1 28 820 1 28 877 1 28 878 1 28 879 1 28 880 1 28 881 1 28 882 1 28 883 1 28 884 1 28 885 1 28 886 1 28 887 1 28 888 1 28 889 1 28 890 1 28 891 1 28 892 1 28 893 1 28 894 1 28 895 1 28 896 1 28 897 1 28 898 1 28 899 1 28 900 1 28 901 1 28 902 1 28 903 1 28 904 1 28 905 1 28 906 1 28 907 1 28 908 1 28 909 1 28 910 1 28 911 1 28 912 1 28 913 1 28 914 1 28 915 1 28 916 1 28 917 1 28 918 1 28 919 1 28 920 1 28 921 1 28 922 1 28 923 1 28 924 1 28 925 1 28 926 1 28 927 1 28 928 1 28 929 1 28 930 1 28 931 1 28 932 1 28 1003 1 28 1004 1 28 1005 1 28 1006 1 28 1007 1 28 1008 1 28 1009 1 28 1010 1 28 1011 1 28 1012 1 28 1013 1 28 1014 1 28 1015 1 28 1016 1 28 1017 1 28 1018 1 28 1019 1 28 1020 1 28 1021 1 28 1022 1 28 1023 1 28 1024 1 28 1025 1 28 1026 1 28 1027 1 28 1028 1 28 1029 1 28 1030 1 28 1031 1 28 1032 1 28 1033 1 28 1034 1 28 1035 1 28 1036 1 28 1037 1 28 1038 1 28 1039 1 28 1040 1 28 1041 1 28 1042 1 28 1043 1 28 1044 1 28 1045 1 28 1046 1 28 1047 1 28 1048 1 28 1049 1 28 1050 1 28 1051 1 28 1052 1 28 1053 1 28 1054 1 28 1055 1 28 1056 1 28 1057 1 28 1058 1 28 1129 1 28 1130 1 28 1131 1 28 1132 1 28 1133 1 28 1134 1 28 1135 1 28 1136 1 28 1137 1 28 1138 1 28 1139 1 28 1140 1 28 1141 1 28 1142 1 28 1143 1 28 1144 1 28 1145 1 28 1146 1 28 1147 1 28 1148 1 28 1149 1 28 1150 1 28 1151 1 28 1152 1 28 1153 1 28 1154 1 28 1155 1 28 1156 1 28 1157 1 28 1158 1 28 1159 1 28 1160 1 28 1161 1 28 1162 1 28 1163 1 28 1164 1 28 1165 1 28 1166 1 28 1167 1 28 1168 1 28 1169 1 28 1170 1 28 1171 1 28 1172 1 28 1173 1 28 1174 1 28 1175 1 28 1176 1 28 1177 1 28 1178 1 28 1179 1 28 1180 1 28 1181 1 28 1182 1 28 1183 1 28 1184 1 28 1185 1 28 1186 1 28 1187 1 28 1188 1 28 1189 1 28 1190 1 28 1191 1 28 1192 1 28 1193 1 28 1194 1 28 1195 1 28 1196 1 28 1197 1 28 1198 1 28 1717 1 28 1718 1 28 1719 1 28 1720 1 28 1721 1 28 1722 1 28 1723 1 28 1724 1 28 1725 1 28 1726 1 28 1727 1 28 1728 1 28 1729 1 28 1730 1 28 1731 1 28 1732 1 28 1733 1 28 1734 1 28 1735 1 28 1736 1 28 1737 1 28 1738 1 28 1739 1 28 1740 1 28 1741 1 28 1742 1 28 1743 1 28 1744 1 28 1801 1 28 1802 1 28 1803 1 28 1804 1 28 1805 1 28 1806 1 28 1807 1 28 1808 1 28 1809 1 28 1810 1 28 1811 1 28 1812 1 28 1813 1 28 1814 1 28 1815 1 28 1816 1 28 1817 1 28 1818 1 28 1819 1 28 1820 1 28 1821 1 28 1822 1 28 1823 1 28 1824 1 28 1825 1 28 1826 1 28 1827 1 28 1828 1 28 1829 1 28 1830 1 28 1831 1 28 1832 1 28 1833 1 28 1834 1 28 1835 1 28 1836 1 28 1837 1 28 1838 1 28 1839 1 28 1840 1 28 1841 1 28 1842 1 28 1843 1 28 1844 1 28 1845 1 28 1846 1 28 1847 1 28 1848 1 28 1849 1 28 1850 1 28 1851 1 28 1852 1 28 1853 1 28 1854 1 28 1855 1 28 1856 1 28 1927 1 28 1928 1 28 1929 1 28 1930 1 28 1931 1 28 1932 1 28 1933 1 28 1934 1 28 1935 1 28 1936 1 28 1937 1 28 1938 1 28 1939 1 28 1940 1 28 1941 1 28 1942 1 28 1943 1 28 1944 1 28 1945 1 28 1946 1 28 1947 1 28 1948 1 28 1949 1 28 1950 1 28 1951 1 28 1952 1 28 1953 1 28 1954 1 28 1955 1 28 1956 1 28 1957 1 28 1958 1 28 1959 1 28 1960 1 28 1961 1 28 1962 1 28 1963 1 28 1964 1 28 1965 1 28 1966 1 28 1967 1 28 1968 1 28 1969 1 28 1970 1 28 1971 1 28 1972 1 28 1973 1 28 1974 1 28 1975 1 28 1976 1 28 1977 1 28 1978 1 28 1979 1 28 1980 1 28 1981 1 28 1982 1 28 2053 1 28 2054 1 28 2055 1 28 2056 1 28 2057 1 28 2058 1 28 2059 1 28 2060 1 28 2061 1 28 2062 1 28 2063 1 28 2064 1 28 2065 1 28 2066 1 28 2067 1 28 2068 1 28 2069 1 28 2070 1 28 2071 1 28 2072 1 28 2073 1 28 2074 1 28 2075 1 28 2076 1 28 2077 1 28 2078 1 28 2079 1 28 2080 1 28 2081 1 28 2082 1 28 2083 1 28 2084 1 28 2085 1 28 2086 1 28 2087 1 28 2088 1 28 2089 1 28 2090 1 28 2091 1 28 2092 1 28 2093 1 28 2094 1 28 2095 1 28 2096 1 28 2097 1 28 2098 1 28 2099 1 28 2100 1 28 2101 1 28 2102 1 28 2103 1 28 2104 1 28 2105 1 28 2106 1 28 2107 1 28 2108 1 28 2109 1 28 2110 1 28 2111 1 28 2112 1 28 2113 1 28 2114 1 28 2115 1 28 2116 1 28 2117 1 28 2118 1 28 2119 1 28 2120 1 28 2121 1 28 2122 1 28 2641 1 28 2642 1 28 2643 1 28 2644 1 28 2645 1 28 2646 1 28 2647 1 28 2648 1 28 2649 1 28 2650 1 28 2651 1 28 2652 1 28 2653 1 28 2654 1 28 2655 1 28 2656 1 28 2657 1 28 2658 1 28 2659 1 28 2660 1 28 2661 1 28 2662 1 28 2663 1 28 2664 1 28 2665 1 28 2666 1 28 2667 1 28 2668 1 28 2669 1 28 2670 1 28 2671 1 28 2672 1 28 2673 1 28 2674 1 28 2675 1 28 2676 1 28 2677 1 28 2678 1 28 2679 1 28 2680 1 28 2681 1 28 2682 1 28 2683 1 28 2684 1 28 2685 1 28 2686 1 28 2687 1 28 2688 1 28 2689 1 28 2690 1 28 2691 1 28 2692 1 28 2693 1 28 2694 1 28 2695 1 28 2696 1 28 2767 1 28 2768 1 28 2769 1 28 2770 1 28 2771 1 28 2772 1 28 2773 1 28 2774 1 28 2775 1 28 2776 1 28 2777 1 28 2778 1 28 2779 1 28 2780 1 28 2781 1 28 2782 1 28 2783 1 28 2784 1 28 2785 1 28 2786 1 28 2787 1 28 2788 1 28 2789 1 28 2790 1 28 2791 1 28 2792 1 28 2793 1 28 2794 1 28 2795 1 28 2796 1 28 2797 1 28 2798 1 28 2799 1 28 2800 1 28 2801 1 28 2802 1 28 2803 1 28 2804 1 28 2805 1 28 2806 1 28 2807 1 28 2808 1 28 2809 1 28 2810 1 28 2811 1 28 2812 1 28 2813 1 28 2814 1 28 2815 1 28 2816 1 28 2817 1 28 2818 1 28 2819 1 28 2820 1 28 2821 1 28 2822 1 28 2823 1 28 2824 1 28 2825 1 28 2826 1 28 2827 1 28 2828 1 28 2829 1 28 2830 1 28 2831 1 28 2832 1 28 2833 1 28 2834 1 28 2835 1 28 2836 1 28 2893 1 28 2894 1 28 2895 1 28 2896 1 28 2897 1 28 2898 1 28 2899 1 28 2900 1 28 2901 1 28 2902 1 28 2903 1 28 2904 1 28 2905 1 28 2906 1 28 2907 1 28 2908 1 28 2909 1 28 2910 1 28 2911 1 28 2912 1 28 2913 1 28 2914 1 28 2915 1 28 2916 1 28 2917 1 28 2918 1 28 2919 1 28 2920 1 28 2921 1 28 2922 1 28 2923 1 28 2924 1 28 2925 1 28 2926 1 28 2927 1 28 2928 1 28 2929 1 28 2930 1 28 2931 1 28 2932 1 28 2933 1 28 2934 1 28 2935 1 28 2936 1 28 2937 1 28 2938 1 28 2939 1 28 2940 1 28 2941 1 28 2942 1 28 2943 1 28 2944 1 28 2945 1 28 2946 1 28 2947 1 28 2948 1 28 2949 1 28 2950 1 28 2951 1 28 2952 1 28 2953 1 28 2954 1 28 2955 1 28 2956 1 28 2957 1 28 2958 1 28 2959 1 28 2960 1 28 2961 1 28 2962 1 28 3019 1 28 3020 1 28 3021 1 28 3022 1 28 3023 1 28 3024 1 28 3025 1 28 3026 1 28 3027 1 28 3028 1 28 3029 1 28 3030 1 28 3031 1 28 3032 1 28 3033 1 28 3034 1 28 3035 1 28 3036 1 28 3037 1 28 3038 1 28 3039 1 28 3040 1 28 3041 1 28 3042 1 28 3043 1 28 3044 1 28 3045 1 28 3046 1 28 3047 1 28 3048 1 28 3049 1 28 3050 1 28 3051 1 28 3052 1 28 3053 1 28 3054 1 28 3055 1 28 3056 1 28 3057 1 28 3058 1 28 3059 1 28 3060 1 28 3061 1 28 3062 1 28 3063 1 28 3064 1 28 3065 1 28 3066 1 28 3067 1 28 3068 1 28 3069 1 28 3070 1 28 3071 1 28 3072 1 28 3073 1 28 3074 1 29 1 1 29 9 1 29 10 1 29 11 1 29 12 1 29 13 1 29 14 1 29 15 1 29 37 1 29 38 1 29 39 1 29 40 1 29 41 1 29 42 1 29 43 1 29 65 1 29 66 1 29 67 1 29 68 1 29 69 1 29 70 1 29 71 1 29 72 1 29 73 1 29 74 1 29 75 1 29 76 1 29 77 1 29 78 1 29 79 1 29 80 1 29 81 1 29 82 1 29 83 1 29 84 1 29 85 1 29 121 1 29 122 1 29 123 1 29 124 1 29 125 1 29 126 1 29 127 1 29 149 1 29 150 1 29 151 1 29 152 1 29 153 1 29 154 1 29 155 1 29 156 1 29 157 1 29 158 1 29 159 1 29 160 1 29 161 1 29 162 1 29 163 1 29 164 1 29 165 1 29 166 1 29 167 1 29 168 1 29 169 1 29 205 1 29 206 1 29 207 1 29 208 1 29 209 1 29 210 1 29 211 1 29 212 1 29 213 1 29 214 1 29 215 1 29 216 1 29 217 1 29 218 1 29 219 1 29 220 1 29 221 1 29 222 1 29 223 1 29 224 1 29 225 1 29 261 1 29 262 1 29 263 1 29 264 1 29 265 1 29 266 1 29 267 1 29 268 1 29 269 1 29 270 1 29 271 1 29 272 1 29 273 1 29 274 1 29 275 1 29 276 1 29 277 1 29 278 1 29 279 1 29 280 1 29 281 1 29 282 1 29 283 1 29 284 1 29 285 1 29 286 1 29 287 1 29 288 1 29 289 1 29 290 1 29 291 1 29 292 1 29 293 1 29 294 1 29 295 1 29 793 1 29 794 1 29 795 1 29 796 1 29 797 1 29 798 1 29 799 1 29 821 1 29 822 1 29 823 1 29 824 1 29 825 1 29 826 1 29 827 1 29 828 1 29 829 1 29 830 1 29 831 1 29 832 1 29 833 1 29 834 1 29 835 1 29 836 1 29 837 1 29 838 1 29 839 1 29 840 1 29 841 1 29 877 1 29 878 1 29 879 1 29 880 1 29 881 1 29 882 1 29 883 1 29 884 1 29 885 1 29 886 1 29 887 1 29 888 1 29 889 1 29 890 1 29 891 1 29 892 1 29 893 1 29 894 1 29 895 1 29 896 1 29 897 1 29 933 1 29 934 1 29 935 1 29 936 1 29 937 1 29 938 1 29 939 1 29 940 1 29 941 1 29 942 1 29 943 1 29 944 1 29 945 1 29 946 1 29 947 1 29 948 1 29 949 1 29 950 1 29 951 1 29 952 1 29 953 1 29 954 1 29 955 1 29 956 1 29 957 1 29 958 1 29 959 1 29 960 1 29 961 1 29 962 1 29 963 1 29 964 1 29 965 1 29 966 1 29 967 1 29 1003 1 29 1004 1 29 1005 1 29 1006 1 29 1007 1 29 1008 1 29 1009 1 29 1010 1 29 1011 1 29 1012 1 29 1013 1 29 1014 1 29 1015 1 29 1016 1 29 1017 1 29 1018 1 29 1019 1 29 1020 1 29 1021 1 29 1022 1 29 1023 1 29 1059 1 29 1060 1 29 1061 1 29 1062 1 29 1063 1 29 1064 1 29 1065 1 29 1066 1 29 1067 1 29 1068 1 29 1069 1 29 1070 1 29 1071 1 29 1072 1 29 1073 1 29 1074 1 29 1075 1 29 1076 1 29 1077 1 29 1078 1 29 1079 1 29 1080 1 29 1081 1 29 1082 1 29 1083 1 29 1084 1 29 1085 1 29 1086 1 29 1087 1 29 1088 1 29 1089 1 29 1090 1 29 1091 1 29 1092 1 29 1093 1 29 1129 1 29 1130 1 29 1131 1 29 1132 1 29 1133 1 29 1134 1 29 1135 1 29 1136 1 29 1137 1 29 1138 1 29 1139 1 29 1140 1 29 1141 1 29 1142 1 29 1143 1 29 1144 1 29 1145 1 29 1146 1 29 1147 1 29 1148 1 29 1149 1 29 1150 1 29 1151 1 29 1152 1 29 1153 1 29 1154 1 29 1155 1 29 1156 1 29 1157 1 29 1158 1 29 1159 1 29 1160 1 29 1161 1 29 1162 1 29 1163 1 29 1199 1 29 1200 1 29 1201 1 29 1202 1 29 1203 1 29 1204 1 29 1205 1 29 1206 1 29 1207 1 29 1208 1 29 1209 1 29 1210 1 29 1211 1 29 1212 1 29 1213 1 29 1214 1 29 1215 1 29 1216 1 29 1217 1 29 1218 1 29 1219 1 29 1220 1 29 1221 1 29 1222 1 29 1223 1 29 1224 1 29 1225 1 29 1226 1 29 1227 1 29 1228 1 29 1229 1 29 1230 1 29 1231 1 29 1232 1 29 1233 1 29 1717 1 29 1718 1 29 1719 1 29 1720 1 29 1721 1 29 1722 1 29 1723 1 29 1745 1 29 1746 1 29 1747 1 29 1748 1 29 1749 1 29 1750 1 29 1751 1 29 1752 1 29 1753 1 29 1754 1 29 1755 1 29 1756 1 29 1757 1 29 1758 1 29 1759 1 29 1760 1 29 1761 1 29 1762 1 29 1763 1 29 1764 1 29 1765 1 29 1801 1 29 1802 1 29 1803 1 29 1804 1 29 1805 1 29 1806 1 29 1807 1 29 1808 1 29 1809 1 29 1810 1 29 1811 1 29 1812 1 29 1813 1 29 1814 1 29 1815 1 29 1816 1 29 1817 1 29 1818 1 29 1819 1 29 1820 1 29 1821 1 29 1857 1 29 1858 1 29 1859 1 29 1860 1 29 1861 1 29 1862 1 29 1863 1 29 1864 1 29 1865 1 29 1866 1 29 1867 1 29 1868 1 29 1869 1 29 1870 1 29 1871 1 29 1872 1 29 1873 1 29 1874 1 29 1875 1 29 1876 1 29 1877 1 29 1878 1 29 1879 1 29 1880 1 29 1881 1 29 1882 1 29 1883 1 29 1884 1 29 1885 1 29 1886 1 29 1887 1 29 1888 1 29 1889 1 29 1890 1 29 1891 1 29 1927 1 29 1928 1 29 1929 1 29 1930 1 29 1931 1 29 1932 1 29 1933 1 29 1934 1 29 1935 1 29 1936 1 29 1937 1 29 1938 1 29 1939 1 29 1940 1 29 1941 1 29 1942 1 29 1943 1 29 1944 1 29 1945 1 29 1946 1 29 1947 1 29 1983 1 29 1984 1 29 1985 1 29 1986 1 29 1987 1 29 1988 1 29 1989 1 29 1990 1 29 1991 1 29 1992 1 29 1993 1 29 1994 1 29 1995 1 29 1996 1 29 1997 1 29 1998 1 29 1999 1 29 2000 1 29 2001 1 29 2002 1 29 2003 1 29 2004 1 29 2005 1 29 2006 1 29 2007 1 29 2008 1 29 2009 1 29 2010 1 29 2011 1 29 2012 1 29 2013 1 29 2014 1 29 2015 1 29 2016 1 29 2017 1 29 2053 1 29 2054 1 29 2055 1 29 2056 1 29 2057 1 29 2058 1 29 2059 1 29 2060 1 29 2061 1 29 2062 1 29 2063 1 29 2064 1 29 2065 1 29 2066 1 29 2067 1 29 2068 1 29 2069 1 29 2070 1 29 2071 1 29 2072 1 29 2073 1 29 2074 1 29 2075 1 29 2076 1 29 2077 1 29 2078 1 29 2079 1 29 2080 1 29 2081 1 29 2082 1 29 2083 1 29 2084 1 29 2085 1 29 2086 1 29 2087 1 29 2123 1 29 2124 1 29 2125 1 29 2126 1 29 2127 1 29 2128 1 29 2129 1 29 2130 1 29 2131 1 29 2132 1 29 2133 1 29 2134 1 29 2135 1 29 2136 1 29 2137 1 29 2138 1 29 2139 1 29 2140 1 29 2141 1 29 2142 1 29 2143 1 29 2144 1 29 2145 1 29 2146 1 29 2147 1 29 2148 1 29 2149 1 29 2150 1 29 2151 1 29 2152 1 29 2153 1 29 2154 1 29 2155 1 29 2156 1 29 2157 1 29 2641 1 29 2642 1 29 2643 1 29 2644 1 29 2645 1 29 2646 1 29 2647 1 29 2648 1 29 2649 1 29 2650 1 29 2651 1 29 2652 1 29 2653 1 29 2654 1 29 2655 1 29 2656 1 29 2657 1 29 2658 1 29 2659 1 29 2660 1 29 2661 1 29 2697 1 29 2698 1 29 2699 1 29 2700 1 29 2701 1 29 2702 1 29 2703 1 29 2704 1 29 2705 1 29 2706 1 29 2707 1 29 2708 1 29 2709 1 29 2710 1 29 2711 1 29 2712 1 29 2713 1 29 2714 1 29 2715 1 29 2716 1 29 2717 1 29 2718 1 29 2719 1 29 2720 1 29 2721 1 29 2722 1 29 2723 1 29 2724 1 29 2725 1 29 2726 1 29 2727 1 29 2728 1 29 2729 1 29 2730 1 29 2731 1 29 2767 1 29 2768 1 29 2769 1 29 2770 1 29 2771 1 29 2772 1 29 2773 1 29 2774 1 29 2775 1 29 2776 1 29 2777 1 29 2778 1 29 2779 1 29 2780 1 29 2781 1 29 2782 1 29 2783 1 29 2784 1 29 2785 1 29 2786 1 29 2787 1 29 2788 1 29 2789 1 29 2790 1 29 2791 1 29 2792 1 29 2793 1 29 2794 1 29 2795 1 29 2796 1 29 2797 1 29 2798 1 29 2799 1 29 2800 1 29 2801 1 29 2837 1 29 2838 1 29 2839 1 29 2840 1 29 2841 1 29 2842 1 29 2843 1 29 2844 1 29 2845 1 29 2846 1 29 2847 1 29 2848 1 29 2849 1 29 2850 1 29 2851 1 29 2852 1 29 2853 1 29 2854 1 29 2855 1 29 2856 1 29 2857 1 29 2858 1 29 2859 1 29 2860 1 29 2861 1 29 2862 1 29 2863 1 29 2864 1 29 2865 1 29 2866 1 29 2867 1 29 2868 1 29 2869 1 29 2870 1 29 2871 1 29 2893 1 29 2894 1 29 2895 1 29 2896 1 29 2897 1 29 2898 1 29 2899 1 29 2900 1 29 2901 1 29 2902 1 29 2903 1 29 2904 1 29 2905 1 29 2906 1 29 2907 1 29 2908 1 29 2909 1 29 2910 1 29 2911 1 29 2912 1 29 2913 1 29 2914 1 29 2915 1 29 2916 1 29 2917 1 29 2918 1 29 2919 1 29 2920 1 29 2921 1 29 2922 1 29 2923 1 29 2924 1 29 2925 1 29 2926 1 29 2927 1 29 2963 1 29 2964 1 29 2965 1 29 2966 1 29 2967 1 29 2968 1 29 2969 1 29 2970 1 29 2971 1 29 2972 1 29 2973 1 29 2974 1 29 2975 1 29 2976 1 29 2977 1 29 2978 1 29 2979 1 29 2980 1 29 2981 1 29 2982 1 29 2983 1 29 2984 1 29 2985 1 29 2986 1 29 2987 1 29 2988 1 29 2989 1 29 2990 1 29 2991 1 29 2992 1 29 2993 1 29 2994 1 29 2995 1 29 2996 1 29 2997 1 29 3019 1 29 3020 1 29 3021 1 29 3022 1 29 3023 1 29 3024 1 29 3025 1 29 3026 1 29 3027 1 29 3028 1 29 3029 1 29 3030 1 29 3031 1 29 3032 1 29 3033 1 29 3034 1 29 3035 1 29 3036 1 29 3037 1 29 3038 1 29 3039 1 29 3040 1 29 3041 1 29 3042 1 29 3043 1 29 3044 1 29 3045 1 29 3046 1 29 3047 1 29 3048 1 29 3049 1 29 3050 1 29 3051 1 29 3052 1 29 3053 1 29 3075 1 29 3076 1 29 3077 1 29 3078 1 29 3079 1 29 3080 1 29 3081 1 29 3082 1 29 3083 1 29 3084 1 29 3085 1 29 3086 1 29 3087 1 29 3088 1 29 3089 1 29 3090 1 29 3091 1 29 3092 1 29 3093 1 29 3094 1 29 3095 1 30 2 1 30 9 1 30 16 1 30 17 1 30 18 1 30 19 1 30 20 1 30 21 1 30 37 1 30 44 1 30 45 1 30 46 1 30 47 1 30 48 1 30 49 1 30 65 1 30 66 1 30 67 1 30 68 1 30 69 1 30 70 1 30 86 1 30 87 1 30 88 1 30 89 1 30 90 1 30 91 1 30 92 1 30 93 1 30 94 1 30 95 1 30 96 1 30 97 1 30 98 1 30 99 1 30 100 1 30 121 1 30 128 1 30 129 1 30 130 1 30 131 1 30 132 1 30 133 1 30 149 1 30 150 1 30 151 1 30 152 1 30 153 1 30 154 1 30 170 1 30 171 1 30 172 1 30 173 1 30 174 1 30 175 1 30 176 1 30 177 1 30 178 1 30 179 1 30 180 1 30 181 1 30 182 1 30 183 1 30 184 1 30 205 1 30 206 1 30 207 1 30 208 1 30 209 1 30 210 1 30 226 1 30 227 1 30 228 1 30 229 1 30 230 1 30 231 1 30 232 1 30 233 1 30 234 1 30 235 1 30 236 1 30 237 1 30 238 1 30 239 1 30 240 1 30 261 1 30 262 1 30 263 1 30 264 1 30 265 1 30 266 1 30 267 1 30 268 1 30 269 1 30 270 1 30 271 1 30 272 1 30 273 1 30 274 1 30 275 1 30 296 1 30 297 1 30 298 1 30 299 1 30 300 1 30 301 1 30 302 1 30 303 1 30 304 1 30 305 1 30 306 1 30 307 1 30 308 1 30 309 1 30 310 1 30 311 1 30 312 1 30 313 1 30 314 1 30 315 1 30 793 1 30 800 1 30 801 1 30 802 1 30 803 1 30 804 1 30 805 1 30 821 1 30 822 1 30 823 1 30 824 1 30 825 1 30 826 1 30 842 1 30 843 1 30 844 1 30 845 1 30 846 1 30 847 1 30 848 1 30 849 1 30 850 1 30 851 1 30 852 1 30 853 1 30 854 1 30 855 1 30 856 1 30 877 1 30 878 1 30 879 1 30 880 1 30 881 1 30 882 1 30 898 1 30 899 1 30 900 1 30 901 1 30 902 1 30 903 1 30 904 1 30 905 1 30 906 1 30 907 1 30 908 1 30 909 1 30 910 1 30 911 1 30 912 1 30 933 1 30 934 1 30 935 1 30 936 1 30 937 1 30 938 1 30 939 1 30 940 1 30 941 1 30 942 1 30 943 1 30 944 1 30 945 1 30 946 1 30 947 1 30 968 1 30 969 1 30 970 1 30 971 1 30 972 1 30 973 1 30 974 1 30 975 1 30 976 1 30 977 1 30 978 1 30 979 1 30 980 1 30 981 1 30 982 1 30 983 1 30 984 1 30 985 1 30 986 1 30 987 1 30 1003 1 30 1004 1 30 1005 1 30 1006 1 30 1007 1 30 1008 1 30 1024 1 30 1025 1 30 1026 1 30 1027 1 30 1028 1 30 1029 1 30 1030 1 30 1031 1 30 1032 1 30 1033 1 30 1034 1 30 1035 1 30 1036 1 30 1037 1 30 1038 1 30 1059 1 30 1060 1 30 1061 1 30 1062 1 30 1063 1 30 1064 1 30 1065 1 30 1066 1 30 1067 1 30 1068 1 30 1069 1 30 1070 1 30 1071 1 30 1072 1 30 1073 1 30 1094 1 30 1095 1 30 1096 1 30 1097 1 30 1098 1 30 1099 1 30 1100 1 30 1101 1 30 1102 1 30 1103 1 30 1104 1 30 1105 1 30 1106 1 30 1107 1 30 1108 1 30 1109 1 30 1110 1 30 1111 1 30 1112 1 30 1113 1 30 1129 1 30 1130 1 30 1131 1 30 1132 1 30 1133 1 30 1134 1 30 1135 1 30 1136 1 30 1137 1 30 1138 1 30 1139 1 30 1140 1 30 1141 1 30 1142 1 30 1143 1 30 1164 1 30 1165 1 30 1166 1 30 1167 1 30 1168 1 30 1169 1 30 1170 1 30 1171 1 30 1172 1 30 1173 1 30 1174 1 30 1175 1 30 1176 1 30 1177 1 30 1178 1 30 1179 1 30 1180 1 30 1181 1 30 1182 1 30 1183 1 30 1199 1 30 1200 1 30 1201 1 30 1202 1 30 1203 1 30 1204 1 30 1205 1 30 1206 1 30 1207 1 30 1208 1 30 1209 1 30 1210 1 30 1211 1 30 1212 1 30 1213 1 30 1214 1 30 1215 1 30 1216 1 30 1217 1 30 1218 1 30 1234 1 30 1235 1 30 1236 1 30 1237 1 30 1238 1 30 1239 1 30 1240 1 30 1241 1 30 1242 1 30 1243 1 30 1244 1 30 1245 1 30 1246 1 30 1247 1 30 1248 1 30 1717 1 30 1724 1 30 1725 1 30 1726 1 30 1727 1 30 1728 1 30 1729 1 30 1745 1 30 1746 1 30 1747 1 30 1748 1 30 1749 1 30 1750 1 30 1766 1 30 1767 1 30 1768 1 30 1769 1 30 1770 1 30 1771 1 30 1772 1 30 1773 1 30 1774 1 30 1775 1 30 1776 1 30 1777 1 30 1778 1 30 1779 1 30 1780 1 30 1801 1 30 1802 1 30 1803 1 30 1804 1 30 1805 1 30 1806 1 30 1822 1 30 1823 1 30 1824 1 30 1825 1 30 1826 1 30 1827 1 30 1828 1 30 1829 1 30 1830 1 30 1831 1 30 1832 1 30 1833 1 30 1834 1 30 1835 1 30 1836 1 30 1857 1 30 1858 1 30 1859 1 30 1860 1 30 1861 1 30 1862 1 30 1863 1 30 1864 1 30 1865 1 30 1866 1 30 1867 1 30 1868 1 30 1869 1 30 1870 1 30 1871 1 30 1892 1 30 1893 1 30 1894 1 30 1895 1 30 1896 1 30 1897 1 30 1898 1 30 1899 1 30 1900 1 30 1901 1 30 1902 1 30 1903 1 30 1904 1 30 1905 1 30 1906 1 30 1907 1 30 1908 1 30 1909 1 30 1910 1 30 1911 1 30 1927 1 30 1928 1 30 1929 1 30 1930 1 30 1931 1 30 1932 1 30 1948 1 30 1949 1 30 1950 1 30 1951 1 30 1952 1 30 1953 1 30 1954 1 30 1955 1 30 1956 1 30 1957 1 30 1958 1 30 1959 1 30 1960 1 30 1961 1 30 1962 1 30 1983 1 30 1984 1 30 1985 1 30 1986 1 30 1987 1 30 1988 1 30 1989 1 30 1990 1 30 1991 1 30 1992 1 30 1993 1 30 1994 1 30 1995 1 30 1996 1 30 1997 1 30 2018 1 30 2019 1 30 2020 1 30 2021 1 30 2022 1 30 2023 1 30 2024 1 30 2025 1 30 2026 1 30 2027 1 30 2028 1 30 2029 1 30 2030 1 30 2031 1 30 2032 1 30 2033 1 30 2034 1 30 2035 1 30 2036 1 30 2037 1 30 2053 1 30 2054 1 30 2055 1 30 2056 1 30 2057 1 30 2058 1 30 2059 1 30 2060 1 30 2061 1 30 2062 1 30 2063 1 30 2064 1 30 2065 1 30 2066 1 30 2067 1 30 2088 1 30 2089 1 30 2090 1 30 2091 1 30 2092 1 30 2093 1 30 2094 1 30 2095 1 30 2096 1 30 2097 1 30 2098 1 30 2099 1 30 2100 1 30 2101 1 30 2102 1 30 2103 1 30 2104 1 30 2105 1 30 2106 1 30 2107 1 30 2123 1 30 2124 1 30 2125 1 30 2126 1 30 2127 1 30 2128 1 30 2129 1 30 2130 1 30 2131 1 30 2132 1 30 2133 1 30 2134 1 30 2135 1 30 2136 1 30 2137 1 30 2138 1 30 2139 1 30 2140 1 30 2141 1 30 2142 1 30 2158 1 30 2159 1 30 2160 1 30 2161 1 30 2162 1 30 2163 1 30 2164 1 30 2165 1 30 2166 1 30 2167 1 30 2168 1 30 2169 1 30 2170 1 30 2171 1 30 2172 1 30 2641 1 30 2642 1 30 2643 1 30 2644 1 30 2645 1 30 2646 1 30 2662 1 30 2663 1 30 2664 1 30 2665 1 30 2666 1 30 2667 1 30 2668 1 30 2669 1 30 2670 1 30 2671 1 30 2672 1 30 2673 1 30 2674 1 30 2675 1 30 2676 1 30 2697 1 30 2698 1 30 2699 1 30 2700 1 30 2701 1 30 2702 1 30 2703 1 30 2704 1 30 2705 1 30 2706 1 30 2707 1 30 2708 1 30 2709 1 30 2710 1 30 2711 1 30 2732 1 30 2733 1 30 2734 1 30 2735 1 30 2736 1 30 2737 1 30 2738 1 30 2739 1 30 2740 1 30 2741 1 30 2742 1 30 2743 1 30 2744 1 30 2745 1 30 2746 1 30 2747 1 30 2748 1 30 2749 1 30 2750 1 30 2751 1 30 2767 1 30 2768 1 30 2769 1 30 2770 1 30 2771 1 30 2772 1 30 2773 1 30 2774 1 30 2775 1 30 2776 1 30 2777 1 30 2778 1 30 2779 1 30 2780 1 30 2781 1 30 2802 1 30 2803 1 30 2804 1 30 2805 1 30 2806 1 30 2807 1 30 2808 1 30 2809 1 30 2810 1 30 2811 1 30 2812 1 30 2813 1 30 2814 1 30 2815 1 30 2816 1 30 2817 1 30 2818 1 30 2819 1 30 2820 1 30 2821 1 30 2837 1 30 2838 1 30 2839 1 30 2840 1 30 2841 1 30 2842 1 30 2843 1 30 2844 1 30 2845 1 30 2846 1 30 2847 1 30 2848 1 30 2849 1 30 2850 1 30 2851 1 30 2852 1 30 2853 1 30 2854 1 30 2855 1 30 2856 1 30 2872 1 30 2873 1 30 2874 1 30 2875 1 30 2876 1 30 2877 1 30 2878 1 30 2879 1 30 2880 1 30 2881 1 30 2882 1 30 2883 1 30 2884 1 30 2885 1 30 2886 1 30 2893 1 30 2894 1 30 2895 1 30 2896 1 30 2897 1 30 2898 1 30 2899 1 30 2900 1 30 2901 1 30 2902 1 30 2903 1 30 2904 1 30 2905 1 30 2906 1 30 2907 1 30 2928 1 30 2929 1 30 2930 1 30 2931 1 30 2932 1 30 2933 1 30 2934 1 30 2935 1 30 2936 1 30 2937 1 30 2938 1 30 2939 1 30 2940 1 30 2941 1 30 2942 1 30 2943 1 30 2944 1 30 2945 1 30 2946 1 30 2947 1 30 2963 1 30 2964 1 30 2965 1 30 2966 1 30 2967 1 30 2968 1 30 2969 1 30 2970 1 30 2971 1 30 2972 1 30 2973 1 30 2974 1 30 2975 1 30 2976 1 30 2977 1 30 2978 1 30 2979 1 30 2980 1 30 2981 1 30 2982 1 30 2998 1 30 2999 1 30 3000 1 30 3001 1 30 3002 1 30 3003 1 30 3004 1 30 3005 1 30 3006 1 30 3007 1 30 3008 1 30 3009 1 30 3010 1 30 3011 1 30 3012 1 30 3019 1 30 3020 1 30 3021 1 30 3022 1 30 3023 1 30 3024 1 30 3025 1 30 3026 1 30 3027 1 30 3028 1 30 3029 1 30 3030 1 30 3031 1 30 3032 1 30 3033 1 30 3034 1 30 3035 1 30 3036 1 30 3037 1 30 3038 1 30 3054 1 30 3055 1 30 3056 1 30 3057 1 30 3058 1 30 3059 1 30 3060 1 30 3061 1 30 3062 1 30 3063 1 30 3064 1 30 3065 1 30 3066 1 30 3067 1 30 3068 1 30 3075 1 30 3076 1 30 3077 1 30 3078 1 30 3079 1 30 3080 1 30 3081 1 30 3082 1 30 3083 1 30 3084 1 30 3085 1 30 3086 1 30 3087 1 30 3088 1 30 3089 1 30 3096 1 30 3097 1 30 3098 1 30 3099 1 30 3100 1 30 3101 1 31 3 1 31 10 1 31 16 1 31 22 1 31 23 1 31 24 1 31 25 1 31 26 1 31 38 1 31 44 1 31 50 1 31 51 1 31 52 1 31 53 1 31 54 1 31 65 1 31 71 1 31 72 1 31 73 1 31 74 1 31 75 1 31 86 1 31 87 1 31 88 1 31 89 1 31 90 1 31 101 1 31 102 1 31 103 1 31 104 1 31 105 1 31 106 1 31 107 1 31 108 1 31 109 1 31 110 1 31 122 1 31 128 1 31 134 1 31 135 1 31 136 1 31 137 1 31 138 1 31 149 1 31 155 1 31 156 1 31 157 1 31 158 1 31 159 1 31 170 1 31 171 1 31 172 1 31 173 1 31 174 1 31 185 1 31 186 1 31 187 1 31 188 1 31 189 1 31 190 1 31 191 1 31 192 1 31 193 1 31 194 1 31 205 1 31 211 1 31 212 1 31 213 1 31 214 1 31 215 1 31 226 1 31 227 1 31 228 1 31 229 1 31 230 1 31 241 1 31 242 1 31 243 1 31 244 1 31 245 1 31 246 1 31 247 1 31 248 1 31 249 1 31 250 1 31 261 1 31 262 1 31 263 1 31 264 1 31 265 1 31 276 1 31 277 1 31 278 1 31 279 1 31 280 1 31 281 1 31 282 1 31 283 1 31 284 1 31 285 1 31 296 1 31 297 1 31 298 1 31 299 1 31 300 1 31 301 1 31 302 1 31 303 1 31 304 1 31 305 1 31 316 1 31 317 1 31 318 1 31 319 1 31 320 1 31 321 1 31 322 1 31 323 1 31 324 1 31 325 1 31 794 1 31 800 1 31 806 1 31 807 1 31 808 1 31 809 1 31 810 1 31 821 1 31 827 1 31 828 1 31 829 1 31 830 1 31 831 1 31 842 1 31 843 1 31 844 1 31 845 1 31 846 1 31 857 1 31 858 1 31 859 1 31 860 1 31 861 1 31 862 1 31 863 1 31 864 1 31 865 1 31 866 1 31 877 1 31 883 1 31 884 1 31 885 1 31 886 1 31 887 1 31 898 1 31 899 1 31 900 1 31 901 1 31 902 1 31 913 1 31 914 1 31 915 1 31 916 1 31 917 1 31 918 1 31 919 1 31 920 1 31 921 1 31 922 1 31 933 1 31 934 1 31 935 1 31 936 1 31 937 1 31 948 1 31 949 1 31 950 1 31 951 1 31 952 1 31 953 1 31 954 1 31 955 1 31 956 1 31 957 1 31 968 1 31 969 1 31 970 1 31 971 1 31 972 1 31 973 1 31 974 1 31 975 1 31 976 1 31 977 1 31 988 1 31 989 1 31 990 1 31 991 1 31 992 1 31 993 1 31 994 1 31 995 1 31 996 1 31 997 1 31 1003 1 31 1009 1 31 1010 1 31 1011 1 31 1012 1 31 1013 1 31 1024 1 31 1025 1 31 1026 1 31 1027 1 31 1028 1 31 1039 1 31 1040 1 31 1041 1 31 1042 1 31 1043 1 31 1044 1 31 1045 1 31 1046 1 31 1047 1 31 1048 1 31 1059 1 31 1060 1 31 1061 1 31 1062 1 31 1063 1 31 1074 1 31 1075 1 31 1076 1 31 1077 1 31 1078 1 31 1079 1 31 1080 1 31 1081 1 31 1082 1 31 1083 1 31 1094 1 31 1095 1 31 1096 1 31 1097 1 31 1098 1 31 1099 1 31 1100 1 31 1101 1 31 1102 1 31 1103 1 31 1114 1 31 1115 1 31 1116 1 31 1117 1 31 1118 1 31 1119 1 31 1120 1 31 1121 1 31 1122 1 31 1123 1 31 1129 1 31 1130 1 31 1131 1 31 1132 1 31 1133 1 31 1144 1 31 1145 1 31 1146 1 31 1147 1 31 1148 1 31 1149 1 31 1150 1 31 1151 1 31 1152 1 31 1153 1 31 1164 1 31 1165 1 31 1166 1 31 1167 1 31 1168 1 31 1169 1 31 1170 1 31 1171 1 31 1172 1 31 1173 1 31 1184 1 31 1185 1 31 1186 1 31 1187 1 31 1188 1 31 1189 1 31 1190 1 31 1191 1 31 1192 1 31 1193 1 31 1199 1 31 1200 1 31 1201 1 31 1202 1 31 1203 1 31 1204 1 31 1205 1 31 1206 1 31 1207 1 31 1208 1 31 1219 1 31 1220 1 31 1221 1 31 1222 1 31 1223 1 31 1224 1 31 1225 1 31 1226 1 31 1227 1 31 1228 1 31 1234 1 31 1235 1 31 1236 1 31 1237 1 31 1238 1 31 1239 1 31 1240 1 31 1241 1 31 1242 1 31 1243 1 31 1249 1 31 1250 1 31 1251 1 31 1252 1 31 1253 1 31 1718 1 31 1724 1 31 1730 1 31 1731 1 31 1732 1 31 1733 1 31 1734 1 31 1745 1 31 1751 1 31 1752 1 31 1753 1 31 1754 1 31 1755 1 31 1766 1 31 1767 1 31 1768 1 31 1769 1 31 1770 1 31 1781 1 31 1782 1 31 1783 1 31 1784 1 31 1785 1 31 1786 1 31 1787 1 31 1788 1 31 1789 1 31 1790 1 31 1801 1 31 1807 1 31 1808 1 31 1809 1 31 1810 1 31 1811 1 31 1822 1 31 1823 1 31 1824 1 31 1825 1 31 1826 1 31 1837 1 31 1838 1 31 1839 1 31 1840 1 31 1841 1 31 1842 1 31 1843 1 31 1844 1 31 1845 1 31 1846 1 31 1857 1 31 1858 1 31 1859 1 31 1860 1 31 1861 1 31 1872 1 31 1873 1 31 1874 1 31 1875 1 31 1876 1 31 1877 1 31 1878 1 31 1879 1 31 1880 1 31 1881 1 31 1892 1 31 1893 1 31 1894 1 31 1895 1 31 1896 1 31 1897 1 31 1898 1 31 1899 1 31 1900 1 31 1901 1 31 1912 1 31 1913 1 31 1914 1 31 1915 1 31 1916 1 31 1917 1 31 1918 1 31 1919 1 31 1920 1 31 1921 1 31 1927 1 31 1933 1 31 1934 1 31 1935 1 31 1936 1 31 1937 1 31 1948 1 31 1949 1 31 1950 1 31 1951 1 31 1952 1 31 1963 1 31 1964 1 31 1965 1 31 1966 1 31 1967 1 31 1968 1 31 1969 1 31 1970 1 31 1971 1 31 1972 1 31 1983 1 31 1984 1 31 1985 1 31 1986 1 31 1987 1 31 1998 1 31 1999 1 31 2000 1 31 2001 1 31 2002 1 31 2003 1 31 2004 1 31 2005 1 31 2006 1 31 2007 1 31 2018 1 31 2019 1 31 2020 1 31 2021 1 31 2022 1 31 2023 1 31 2024 1 31 2025 1 31 2026 1 31 2027 1 31 2038 1 31 2039 1 31 2040 1 31 2041 1 31 2042 1 31 2043 1 31 2044 1 31 2045 1 31 2046 1 31 2047 1 31 2053 1 31 2054 1 31 2055 1 31 2056 1 31 2057 1 31 2068 1 31 2069 1 31 2070 1 31 2071 1 31 2072 1 31 2073 1 31 2074 1 31 2075 1 31 2076 1 31 2077 1 31 2088 1 31 2089 1 31 2090 1 31 2091 1 31 2092 1 31 2093 1 31 2094 1 31 2095 1 31 2096 1 31 2097 1 31 2108 1 31 2109 1 31 2110 1 31 2111 1 31 2112 1 31 2113 1 31 2114 1 31 2115 1 31 2116 1 31 2117 1 31 2123 1 31 2124 1 31 2125 1 31 2126 1 31 2127 1 31 2128 1 31 2129 1 31 2130 1 31 2131 1 31 2132 1 31 2143 1 31 2144 1 31 2145 1 31 2146 1 31 2147 1 31 2148 1 31 2149 1 31 2150 1 31 2151 1 31 2152 1 31 2158 1 31 2159 1 31 2160 1 31 2161 1 31 2162 1 31 2163 1 31 2164 1 31 2165 1 31 2166 1 31 2167 1 31 2173 1 31 2174 1 31 2175 1 31 2176 1 31 2177 1 31 2641 1 31 2647 1 31 2648 1 31 2649 1 31 2650 1 31 2651 1 31 2662 1 31 2663 1 31 2664 1 31 2665 1 31 2666 1 31 2677 1 31 2678 1 31 2679 1 31 2680 1 31 2681 1 31 2682 1 31 2683 1 31 2684 1 31 2685 1 31 2686 1 31 2697 1 31 2698 1 31 2699 1 31 2700 1 31 2701 1 31 2712 1 31 2713 1 31 2714 1 31 2715 1 31 2716 1 31 2717 1 31 2718 1 31 2719 1 31 2720 1 31 2721 1 31 2732 1 31 2733 1 31 2734 1 31 2735 1 31 2736 1 31 2737 1 31 2738 1 31 2739 1 31 2740 1 31 2741 1 31 2752 1 31 2753 1 31 2754 1 31 2755 1 31 2756 1 31 2757 1 31 2758 1 31 2759 1 31 2760 1 31 2761 1 31 2767 1 31 2768 1 31 2769 1 31 2770 1 31 2771 1 31 2782 1 31 2783 1 31 2784 1 31 2785 1 31 2786 1 31 2787 1 31 2788 1 31 2789 1 31 2790 1 31 2791 1 31 2802 1 31 2803 1 31 2804 1 31 2805 1 31 2806 1 31 2807 1 31 2808 1 31 2809 1 31 2810 1 31 2811 1 31 2822 1 31 2823 1 31 2824 1 31 2825 1 31 2826 1 31 2827 1 31 2828 1 31 2829 1 31 2830 1 31 2831 1 31 2837 1 31 2838 1 31 2839 1 31 2840 1 31 2841 1 31 2842 1 31 2843 1 31 2844 1 31 2845 1 31 2846 1 31 2857 1 31 2858 1 31 2859 1 31 2860 1 31 2861 1 31 2862 1 31 2863 1 31 2864 1 31 2865 1 31 2866 1 31 2872 1 31 2873 1 31 2874 1 31 2875 1 31 2876 1 31 2877 1 31 2878 1 31 2879 1 31 2880 1 31 2881 1 31 2887 1 31 2888 1 31 2889 1 31 2890 1 31 2891 1 31 2893 1 31 2894 1 31 2895 1 31 2896 1 31 2897 1 31 2908 1 31 2909 1 31 2910 1 31 2911 1 31 2912 1 31 2913 1 31 2914 1 31 2915 1 31 2916 1 31 2917 1 31 2928 1 31 2929 1 31 2930 1 31 2931 1 31 2932 1 31 2933 1 31 2934 1 31 2935 1 31 2936 1 31 2937 1 31 2948 1 31 2949 1 31 2950 1 31 2951 1 31 2952 1 31 2953 1 31 2954 1 31 2955 1 31 2956 1 31 2957 1 31 2963 1 31 2964 1 31 2965 1 31 2966 1 31 2967 1 31 2968 1 31 2969 1 31 2970 1 31 2971 1 31 2972 1 31 2983 1 31 2984 1 31 2985 1 31 2986 1 31 2987 1 31 2988 1 31 2989 1 31 2990 1 31 2991 1 31 2992 1 31 2998 1 31 2999 1 31 3000 1 31 3001 1 31 3002 1 31 3003 1 31 3004 1 31 3005 1 31 3006 1 31 3007 1 31 3013 1 31 3014 1 31 3015 1 31 3016 1 31 3017 1 31 3019 1 31 3020 1 31 3021 1 31 3022 1 31 3023 1 31 3024 1 31 3025 1 31 3026 1 31 3027 1 31 3028 1 31 3039 1 31 3040 1 31 3041 1 31 3042 1 31 3043 1 31 3044 1 31 3045 1 31 3046 1 31 3047 1 31 3048 1 31 3054 1 31 3055 1 31 3056 1 31 3057 1 31 3058 1 31 3059 1 31 3060 1 31 3061 1 31 3062 1 31 3063 1 31 3069 1 31 3070 1 31 3071 1 31 3072 1 31 3073 1 31 3075 1 31 3076 1 31 3077 1 31 3078 1 31 3079 1 31 3080 1 31 3081 1 31 3082 1 31 3083 1 31 3084 1 31 3090 1 31 3091 1 31 3092 1 31 3093 1 31 3094 1 31 3096 1 31 3097 1 31 3098 1 31 3099 1 31 3100 1 31 3102 1 32 4 1 32 11 1 32 17 1 32 22 1 32 27 1 32 28 1 32 29 1 32 30 1 32 39 1 32 45 1 32 50 1 32 55 1 32 56 1 32 57 1 32 58 1 32 66 1 32 71 1 32 76 1 32 77 1 32 78 1 32 79 1 32 86 1 32 91 1 32 92 1 32 93 1 32 94 1 32 101 1 32 102 1 32 103 1 32 104 1 32 111 1 32 112 1 32 113 1 32 114 1 32 115 1 32 116 1 32 123 1 32 129 1 32 134 1 32 139 1 32 140 1 32 141 1 32 142 1 32 150 1 32 155 1 32 160 1 32 161 1 32 162 1 32 163 1 32 170 1 32 175 1 32 176 1 32 177 1 32 178 1 32 185 1 32 186 1 32 187 1 32 188 1 32 195 1 32 196 1 32 197 1 32 198 1 32 199 1 32 200 1 32 206 1 32 211 1 32 216 1 32 217 1 32 218 1 32 219 1 32 226 1 32 231 1 32 232 1 32 233 1 32 234 1 32 241 1 32 242 1 32 243 1 32 244 1 32 251 1 32 252 1 32 253 1 32 254 1 32 255 1 32 256 1 32 261 1 32 266 1 32 267 1 32 268 1 32 269 1 32 276 1 32 277 1 32 278 1 32 279 1 32 286 1 32 287 1 32 288 1 32 289 1 32 290 1 32 291 1 32 296 1 32 297 1 32 298 1 32 299 1 32 306 1 32 307 1 32 308 1 32 309 1 32 310 1 32 311 1 32 316 1 32 317 1 32 318 1 32 319 1 32 320 1 32 321 1 32 326 1 32 327 1 32 328 1 32 329 1 32 795 1 32 801 1 32 806 1 32 811 1 32 812 1 32 813 1 32 814 1 32 822 1 32 827 1 32 832 1 32 833 1 32 834 1 32 835 1 32 842 1 32 847 1 32 848 1 32 849 1 32 850 1 32 857 1 32 858 1 32 859 1 32 860 1 32 867 1 32 868 1 32 869 1 32 870 1 32 871 1 32 872 1 32 878 1 32 883 1 32 888 1 32 889 1 32 890 1 32 891 1 32 898 1 32 903 1 32 904 1 32 905 1 32 906 1 32 913 1 32 914 1 32 915 1 32 916 1 32 923 1 32 924 1 32 925 1 32 926 1 32 927 1 32 928 1 32 933 1 32 938 1 32 939 1 32 940 1 32 941 1 32 948 1 32 949 1 32 950 1 32 951 1 32 958 1 32 959 1 32 960 1 32 961 1 32 962 1 32 963 1 32 968 1 32 969 1 32 970 1 32 971 1 32 978 1 32 979 1 32 980 1 32 981 1 32 982 1 32 983 1 32 988 1 32 989 1 32 990 1 32 991 1 32 992 1 32 993 1 32 998 1 32 999 1 32 1000 1 32 1001 1 32 1004 1 32 1009 1 32 1014 1 32 1015 1 32 1016 1 32 1017 1 32 1024 1 32 1029 1 32 1030 1 32 1031 1 32 1032 1 32 1039 1 32 1040 1 32 1041 1 32 1042 1 32 1049 1 32 1050 1 32 1051 1 32 1052 1 32 1053 1 32 1054 1 32 1059 1 32 1064 1 32 1065 1 32 1066 1 32 1067 1 32 1074 1 32 1075 1 32 1076 1 32 1077 1 32 1084 1 32 1085 1 32 1086 1 32 1087 1 32 1088 1 32 1089 1 32 1094 1 32 1095 1 32 1096 1 32 1097 1 32 1104 1 32 1105 1 32 1106 1 32 1107 1 32 1108 1 32 1109 1 32 1114 1 32 1115 1 32 1116 1 32 1117 1 32 1118 1 32 1119 1 32 1124 1 32 1125 1 32 1126 1 32 1127 1 32 1129 1 32 1134 1 32 1135 1 32 1136 1 32 1137 1 32 1144 1 32 1145 1 32 1146 1 32 1147 1 32 1154 1 32 1155 1 32 1156 1 32 1157 1 32 1158 1 32 1159 1 32 1164 1 32 1165 1 32 1166 1 32 1167 1 32 1174 1 32 1175 1 32 1176 1 32 1177 1 32 1178 1 32 1179 1 32 1184 1 32 1185 1 32 1186 1 32 1187 1 32 1188 1 32 1189 1 32 1194 1 32 1195 1 32 1196 1 32 1197 1 32 1199 1 32 1200 1 32 1201 1 32 1202 1 32 1209 1 32 1210 1 32 1211 1 32 1212 1 32 1213 1 32 1214 1 32 1219 1 32 1220 1 32 1221 1 32 1222 1 32 1223 1 32 1224 1 32 1229 1 32 1230 1 32 1231 1 32 1232 1 32 1234 1 32 1235 1 32 1236 1 32 1237 1 32 1238 1 32 1239 1 32 1244 1 32 1245 1 32 1246 1 32 1247 1 32 1249 1 32 1250 1 32 1251 1 32 1252 1 32 1254 1 32 1719 1 32 1725 1 32 1730 1 32 1735 1 32 1736 1 32 1737 1 32 1738 1 32 1746 1 32 1751 1 32 1756 1 32 1757 1 32 1758 1 32 1759 1 32 1766 1 32 1771 1 32 1772 1 32 1773 1 32 1774 1 32 1781 1 32 1782 1 32 1783 1 32 1784 1 32 1791 1 32 1792 1 32 1793 1 32 1794 1 32 1795 1 32 1796 1 32 1802 1 32 1807 1 32 1812 1 32 1813 1 32 1814 1 32 1815 1 32 1822 1 32 1827 1 32 1828 1 32 1829 1 32 1830 1 32 1837 1 32 1838 1 32 1839 1 32 1840 1 32 1847 1 32 1848 1 32 1849 1 32 1850 1 32 1851 1 32 1852 1 32 1857 1 32 1862 1 32 1863 1 32 1864 1 32 1865 1 32 1872 1 32 1873 1 32 1874 1 32 1875 1 32 1882 1 32 1883 1 32 1884 1 32 1885 1 32 1886 1 32 1887 1 32 1892 1 32 1893 1 32 1894 1 32 1895 1 32 1902 1 32 1903 1 32 1904 1 32 1905 1 32 1906 1 32 1907 1 32 1912 1 32 1913 1 32 1914 1 32 1915 1 32 1916 1 32 1917 1 32 1922 1 32 1923 1 32 1924 1 32 1925 1 32 1928 1 32 1933 1 32 1938 1 32 1939 1 32 1940 1 32 1941 1 32 1948 1 32 1953 1 32 1954 1 32 1955 1 32 1956 1 32 1963 1 32 1964 1 32 1965 1 32 1966 1 32 1973 1 32 1974 1 32 1975 1 32 1976 1 32 1977 1 32 1978 1 32 1983 1 32 1988 1 32 1989 1 32 1990 1 32 1991 1 32 1998 1 32 1999 1 32 2000 1 32 2001 1 32 2008 1 32 2009 1 32 2010 1 32 2011 1 32 2012 1 32 2013 1 32 2018 1 32 2019 1 32 2020 1 32 2021 1 32 2028 1 32 2029 1 32 2030 1 32 2031 1 32 2032 1 32 2033 1 32 2038 1 32 2039 1 32 2040 1 32 2041 1 32 2042 1 32 2043 1 32 2048 1 32 2049 1 32 2050 1 32 2051 1 32 2053 1 32 2058 1 32 2059 1 32 2060 1 32 2061 1 32 2068 1 32 2069 1 32 2070 1 32 2071 1 32 2078 1 32 2079 1 32 2080 1 32 2081 1 32 2082 1 32 2083 1 32 2088 1 32 2089 1 32 2090 1 32 2091 1 32 2098 1 32 2099 1 32 2100 1 32 2101 1 32 2102 1 32 2103 1 32 2108 1 32 2109 1 32 2110 1 32 2111 1 32 2112 1 32 2113 1 32 2118 1 32 2119 1 32 2120 1 32 2121 1 32 2123 1 32 2124 1 32 2125 1 32 2126 1 32 2133 1 32 2134 1 32 2135 1 32 2136 1 32 2137 1 32 2138 1 32 2143 1 32 2144 1 32 2145 1 32 2146 1 32 2147 1 32 2148 1 32 2153 1 32 2154 1 32 2155 1 32 2156 1 32 2158 1 32 2159 1 32 2160 1 32 2161 1 32 2162 1 32 2163 1 32 2168 1 32 2169 1 32 2170 1 32 2171 1 32 2173 1 32 2174 1 32 2175 1 32 2176 1 32 2178 1 32 2642 1 32 2647 1 32 2652 1 32 2653 1 32 2654 1 32 2655 1 32 2662 1 32 2667 1 32 2668 1 32 2669 1 32 2670 1 32 2677 1 32 2678 1 32 2679 1 32 2680 1 32 2687 1 32 2688 1 32 2689 1 32 2690 1 32 2691 1 32 2692 1 32 2697 1 32 2702 1 32 2703 1 32 2704 1 32 2705 1 32 2712 1 32 2713 1 32 2714 1 32 2715 1 32 2722 1 32 2723 1 32 2724 1 32 2725 1 32 2726 1 32 2727 1 32 2732 1 32 2733 1 32 2734 1 32 2735 1 32 2742 1 32 2743 1 32 2744 1 32 2745 1 32 2746 1 32 2747 1 32 2752 1 32 2753 1 32 2754 1 32 2755 1 32 2756 1 32 2757 1 32 2762 1 32 2763 1 32 2764 1 32 2765 1 32 2767 1 32 2772 1 32 2773 1 32 2774 1 32 2775 1 32 2782 1 32 2783 1 32 2784 1 32 2785 1 32 2792 1 32 2793 1 32 2794 1 32 2795 1 32 2796 1 32 2797 1 32 2802 1 32 2803 1 32 2804 1 32 2805 1 32 2812 1 32 2813 1 32 2814 1 32 2815 1 32 2816 1 32 2817 1 32 2822 1 32 2823 1 32 2824 1 32 2825 1 32 2826 1 32 2827 1 32 2832 1 32 2833 1 32 2834 1 32 2835 1 32 2837 1 32 2838 1 32 2839 1 32 2840 1 32 2847 1 32 2848 1 32 2849 1 32 2850 1 32 2851 1 32 2852 1 32 2857 1 32 2858 1 32 2859 1 32 2860 1 32 2861 1 32 2862 1 32 2867 1 32 2868 1 32 2869 1 32 2870 1 32 2872 1 32 2873 1 32 2874 1 32 2875 1 32 2876 1 32 2877 1 32 2882 1 32 2883 1 32 2884 1 32 2885 1 32 2887 1 32 2888 1 32 2889 1 32 2890 1 32 2892 1 32 2893 1 32 2898 1 32 2899 1 32 2900 1 32 2901 1 32 2908 1 32 2909 1 32 2910 1 32 2911 1 32 2918 1 32 2919 1 32 2920 1 32 2921 1 32 2922 1 32 2923 1 32 2928 1 32 2929 1 32 2930 1 32 2931 1 32 2938 1 32 2939 1 32 2940 1 32 2941 1 32 2942 1 32 2943 1 32 2948 1 32 2949 1 32 2950 1 32 2951 1 32 2952 1 32 2953 1 32 2958 1 32 2959 1 32 2960 1 32 2961 1 32 2963 1 32 2964 1 32 2965 1 32 2966 1 32 2973 1 32 2974 1 32 2975 1 32 2976 1 32 2977 1 32 2978 1 32 2983 1 32 2984 1 32 2985 1 32 2986 1 32 2987 1 32 2988 1 32 2993 1 32 2994 1 32 2995 1 32 2996 1 32 2998 1 32 2999 1 32 3000 1 32 3001 1 32 3002 1 32 3003 1 32 3008 1 32 3009 1 32 3010 1 32 3011 1 32 3013 1 32 3014 1 32 3015 1 32 3016 1 32 3018 1 32 3019 1 32 3020 1 32 3021 1 32 3022 1 32 3029 1 32 3030 1 32 3031 1 32 3032 1 32 3033 1 32 3034 1 32 3039 1 32 3040 1 32 3041 1 32 3042 1 32 3043 1 32 3044 1 32 3049 1 32 3050 1 32 3051 1 32 3052 1 32 3054 1 32 3055 1 32 3056 1 32 3057 1 32 3058 1 32 3059 1 32 3064 1 32 3065 1 32 3066 1 32 3067 1 32 3069 1 32 3070 1 32 3071 1 32 3072 1 32 3074 1 32 3075 1 32 3076 1 32 3077 1 32 3078 1 32 3079 1 32 3080 1 32 3085 1 32 3086 1 32 3087 1 32 3088 1 32 3090 1 32 3091 1 32 3092 1 32 3093 1 32 3095 1 32 3096 1 32 3097 1 32 3098 1 32 3099 1 32 3101 1 32 3102 1 33 5 1 33 12 1 33 18 1 33 23 1 33 27 1 33 31 1 33 32 1 33 33 1 33 40 1 33 46 1 33 51 1 33 55 1 33 59 1 33 60 1 33 61 1 33 67 1 33 72 1 33 76 1 33 80 1 33 81 1 33 82 1 33 87 1 33 91 1 33 95 1 33 96 1 33 97 1 33 101 1 33 105 1 33 106 1 33 107 1 33 111 1 33 112 1 33 113 1 33 117 1 33 118 1 33 119 1 33 124 1 33 130 1 33 135 1 33 139 1 33 143 1 33 144 1 33 145 1 33 151 1 33 156 1 33 160 1 33 164 1 33 165 1 33 166 1 33 171 1 33 175 1 33 179 1 33 180 1 33 181 1 33 185 1 33 189 1 33 190 1 33 191 1 33 195 1 33 196 1 33 197 1 33 201 1 33 202 1 33 203 1 33 207 1 33 212 1 33 216 1 33 220 1 33 221 1 33 222 1 33 227 1 33 231 1 33 235 1 33 236 1 33 237 1 33 241 1 33 245 1 33 246 1 33 247 1 33 251 1 33 252 1 33 253 1 33 257 1 33 258 1 33 259 1 33 262 1 33 266 1 33 270 1 33 271 1 33 272 1 33 276 1 33 280 1 33 281 1 33 282 1 33 286 1 33 287 1 33 288 1 33 292 1 33 293 1 33 294 1 33 296 1 33 300 1 33 301 1 33 302 1 33 306 1 33 307 1 33 308 1 33 312 1 33 313 1 33 314 1 33 316 1 33 317 1 33 318 1 33 322 1 33 323 1 33 324 1 33 326 1 33 327 1 33 328 1 33 330 1 33 796 1 33 802 1 33 807 1 33 811 1 33 815 1 33 816 1 33 817 1 33 823 1 33 828 1 33 832 1 33 836 1 33 837 1 33 838 1 33 843 1 33 847 1 33 851 1 33 852 1 33 853 1 33 857 1 33 861 1 33 862 1 33 863 1 33 867 1 33 868 1 33 869 1 33 873 1 33 874 1 33 875 1 33 879 1 33 884 1 33 888 1 33 892 1 33 893 1 33 894 1 33 899 1 33 903 1 33 907 1 33 908 1 33 909 1 33 913 1 33 917 1 33 918 1 33 919 1 33 923 1 33 924 1 33 925 1 33 929 1 33 930 1 33 931 1 33 934 1 33 938 1 33 942 1 33 943 1 33 944 1 33 948 1 33 952 1 33 953 1 33 954 1 33 958 1 33 959 1 33 960 1 33 964 1 33 965 1 33 966 1 33 968 1 33 972 1 33 973 1 33 974 1 33 978 1 33 979 1 33 980 1 33 984 1 33 985 1 33 986 1 33 988 1 33 989 1 33 990 1 33 994 1 33 995 1 33 996 1 33 998 1 33 999 1 33 1000 1 33 1002 1 33 1005 1 33 1010 1 33 1014 1 33 1018 1 33 1019 1 33 1020 1 33 1025 1 33 1029 1 33 1033 1 33 1034 1 33 1035 1 33 1039 1 33 1043 1 33 1044 1 33 1045 1 33 1049 1 33 1050 1 33 1051 1 33 1055 1 33 1056 1 33 1057 1 33 1060 1 33 1064 1 33 1068 1 33 1069 1 33 1070 1 33 1074 1 33 1078 1 33 1079 1 33 1080 1 33 1084 1 33 1085 1 33 1086 1 33 1090 1 33 1091 1 33 1092 1 33 1094 1 33 1098 1 33 1099 1 33 1100 1 33 1104 1 33 1105 1 33 1106 1 33 1110 1 33 1111 1 33 1112 1 33 1114 1 33 1115 1 33 1116 1 33 1120 1 33 1121 1 33 1122 1 33 1124 1 33 1125 1 33 1126 1 33 1128 1 33 1130 1 33 1134 1 33 1138 1 33 1139 1 33 1140 1 33 1144 1 33 1148 1 33 1149 1 33 1150 1 33 1154 1 33 1155 1 33 1156 1 33 1160 1 33 1161 1 33 1162 1 33 1164 1 33 1168 1 33 1169 1 33 1170 1 33 1174 1 33 1175 1 33 1176 1 33 1180 1 33 1181 1 33 1182 1 33 1184 1 33 1185 1 33 1186 1 33 1190 1 33 1191 1 33 1192 1 33 1194 1 33 1195 1 33 1196 1 33 1198 1 33 1199 1 33 1203 1 33 1204 1 33 1205 1 33 1209 1 33 1210 1 33 1211 1 33 1215 1 33 1216 1 33 1217 1 33 1219 1 33 1220 1 33 1221 1 33 1225 1 33 1226 1 33 1227 1 33 1229 1 33 1230 1 33 1231 1 33 1233 1 33 1234 1 33 1235 1 33 1236 1 33 1240 1 33 1241 1 33 1242 1 33 1244 1 33 1245 1 33 1246 1 33 1248 1 33 1249 1 33 1250 1 33 1251 1 33 1253 1 33 1254 1 33 1720 1 33 1726 1 33 1731 1 33 1735 1 33 1739 1 33 1740 1 33 1741 1 33 1747 1 33 1752 1 33 1756 1 33 1760 1 33 1761 1 33 1762 1 33 1767 1 33 1771 1 33 1775 1 33 1776 1 33 1777 1 33 1781 1 33 1785 1 33 1786 1 33 1787 1 33 1791 1 33 1792 1 33 1793 1 33 1797 1 33 1798 1 33 1799 1 33 1803 1 33 1808 1 33 1812 1 33 1816 1 33 1817 1 33 1818 1 33 1823 1 33 1827 1 33 1831 1 33 1832 1 33 1833 1 33 1837 1 33 1841 1 33 1842 1 33 1843 1 33 1847 1 33 1848 1 33 1849 1 33 1853 1 33 1854 1 33 1855 1 33 1858 1 33 1862 1 33 1866 1 33 1867 1 33 1868 1 33 1872 1 33 1876 1 33 1877 1 33 1878 1 33 1882 1 33 1883 1 33 1884 1 33 1888 1 33 1889 1 33 1890 1 33 1892 1 33 1896 1 33 1897 1 33 1898 1 33 1902 1 33 1903 1 33 1904 1 33 1908 1 33 1909 1 33 1910 1 33 1912 1 33 1913 1 33 1914 1 33 1918 1 33 1919 1 33 1920 1 33 1922 1 33 1923 1 33 1924 1 33 1926 1 33 1929 1 33 1934 1 33 1938 1 33 1942 1 33 1943 1 33 1944 1 33 1949 1 33 1953 1 33 1957 1 33 1958 1 33 1959 1 33 1963 1 33 1967 1 33 1968 1 33 1969 1 33 1973 1 33 1974 1 33 1975 1 33 1979 1 33 1980 1 33 1981 1 33 1984 1 33 1988 1 33 1992 1 33 1993 1 33 1994 1 33 1998 1 33 2002 1 33 2003 1 33 2004 1 33 2008 1 33 2009 1 33 2010 1 33 2014 1 33 2015 1 33 2016 1 33 2018 1 33 2022 1 33 2023 1 33 2024 1 33 2028 1 33 2029 1 33 2030 1 33 2034 1 33 2035 1 33 2036 1 33 2038 1 33 2039 1 33 2040 1 33 2044 1 33 2045 1 33 2046 1 33 2048 1 33 2049 1 33 2050 1 33 2052 1 33 2054 1 33 2058 1 33 2062 1 33 2063 1 33 2064 1 33 2068 1 33 2072 1 33 2073 1 33 2074 1 33 2078 1 33 2079 1 33 2080 1 33 2084 1 33 2085 1 33 2086 1 33 2088 1 33 2092 1 33 2093 1 33 2094 1 33 2098 1 33 2099 1 33 2100 1 33 2104 1 33 2105 1 33 2106 1 33 2108 1 33 2109 1 33 2110 1 33 2114 1 33 2115 1 33 2116 1 33 2118 1 33 2119 1 33 2120 1 33 2122 1 33 2123 1 33 2127 1 33 2128 1 33 2129 1 33 2133 1 33 2134 1 33 2135 1 33 2139 1 33 2140 1 33 2141 1 33 2143 1 33 2144 1 33 2145 1 33 2149 1 33 2150 1 33 2151 1 33 2153 1 33 2154 1 33 2155 1 33 2157 1 33 2158 1 33 2159 1 33 2160 1 33 2164 1 33 2165 1 33 2166 1 33 2168 1 33 2169 1 33 2170 1 33 2172 1 33 2173 1 33 2174 1 33 2175 1 33 2177 1 33 2178 1 33 2643 1 33 2648 1 33 2652 1 33 2656 1 33 2657 1 33 2658 1 33 2663 1 33 2667 1 33 2671 1 33 2672 1 33 2673 1 33 2677 1 33 2681 1 33 2682 1 33 2683 1 33 2687 1 33 2688 1 33 2689 1 33 2693 1 33 2694 1 33 2695 1 33 2698 1 33 2702 1 33 2706 1 33 2707 1 33 2708 1 33 2712 1 33 2716 1 33 2717 1 33 2718 1 33 2722 1 33 2723 1 33 2724 1 33 2728 1 33 2729 1 33 2730 1 33 2732 1 33 2736 1 33 2737 1 33 2738 1 33 2742 1 33 2743 1 33 2744 1 33 2748 1 33 2749 1 33 2750 1 33 2752 1 33 2753 1 33 2754 1 33 2758 1 33 2759 1 33 2760 1 33 2762 1 33 2763 1 33 2764 1 33 2766 1 33 2768 1 33 2772 1 33 2776 1 33 2777 1 33 2778 1 33 2782 1 33 2786 1 33 2787 1 33 2788 1 33 2792 1 33 2793 1 33 2794 1 33 2798 1 33 2799 1 33 2800 1 33 2802 1 33 2806 1 33 2807 1 33 2808 1 33 2812 1 33 2813 1 33 2814 1 33 2818 1 33 2819 1 33 2820 1 33 2822 1 33 2823 1 33 2824 1 33 2828 1 33 2829 1 33 2830 1 33 2832 1 33 2833 1 33 2834 1 33 2836 1 33 2837 1 33 2841 1 33 2842 1 33 2843 1 33 2847 1 33 2848 1 33 2849 1 33 2853 1 33 2854 1 33 2855 1 33 2857 1 33 2858 1 33 2859 1 33 2863 1 33 2864 1 33 2865 1 33 2867 1 33 2868 1 33 2869 1 33 2871 1 33 2872 1 33 2873 1 33 2874 1 33 2878 1 33 2879 1 33 2880 1 33 2882 1 33 2883 1 33 2884 1 33 2886 1 33 2887 1 33 2888 1 33 2889 1 33 2891 1 33 2892 1 33 2894 1 33 2898 1 33 2902 1 33 2903 1 33 2904 1 33 2908 1 33 2912 1 33 2913 1 33 2914 1 33 2918 1 33 2919 1 33 2920 1 33 2924 1 33 2925 1 33 2926 1 33 2928 1 33 2932 1 33 2933 1 33 2934 1 33 2938 1 33 2939 1 33 2940 1 33 2944 1 33 2945 1 33 2946 1 33 2948 1 33 2949 1 33 2950 1 33 2954 1 33 2955 1 33 2956 1 33 2958 1 33 2959 1 33 2960 1 33 2962 1 33 2963 1 33 2967 1 33 2968 1 33 2969 1 33 2973 1 33 2974 1 33 2975 1 33 2979 1 33 2980 1 33 2981 1 33 2983 1 33 2984 1 33 2985 1 33 2989 1 33 2990 1 33 2991 1 33 2993 1 33 2994 1 33 2995 1 33 2997 1 33 2998 1 33 2999 1 33 3000 1 33 3004 1 33 3005 1 33 3006 1 33 3008 1 33 3009 1 33 3010 1 33 3012 1 33 3013 1 33 3014 1 33 3015 1 33 3017 1 33 3018 1 33 3019 1 33 3023 1 33 3024 1 33 3025 1 33 3029 1 33 3030 1 33 3031 1 33 3035 1 33 3036 1 33 3037 1 33 3039 1 33 3040 1 33 3041 1 33 3045 1 33 3046 1 33 3047 1 33 3049 1 33 3050 1 33 3051 1 33 3053 1 33 3054 1 33 3055 1 33 3056 1 33 3060 1 33 3061 1 33 3062 1 33 3064 1 33 3065 1 33 3066 1 33 3068 1 33 3069 1 33 3070 1 33 3071 1 33 3073 1 33 3074 1 33 3075 1 33 3076 1 33 3077 1 33 3081 1 33 3082 1 33 3083 1 33 3085 1 33 3086 1 33 3087 1 33 3089 1 33 3090 1 33 3091 1 33 3092 1 33 3094 1 33 3095 1 33 3096 1 33 3097 1 33 3098 1 33 3100 1 33 3101 1 33 3102 1 34 6 1 34 13 1 34 19 1 34 24 1 34 28 1 34 31 1 34 34 1 34 35 1 34 41 1 34 47 1 34 52 1 34 56 1 34 59 1 34 62 1 34 63 1 34 68 1 34 73 1 34 77 1 34 80 1 34 83 1 34 84 1 34 88 1 34 92 1 34 95 1 34 98 1 34 99 1 34 102 1 34 105 1 34 108 1 34 109 1 34 111 1 34 114 1 34 115 1 34 117 1 34 118 1 34 120 1 34 125 1 34 131 1 34 136 1 34 140 1 34 143 1 34 146 1 34 147 1 34 152 1 34 157 1 34 161 1 34 164 1 34 167 1 34 168 1 34 172 1 34 176 1 34 179 1 34 182 1 34 183 1 34 186 1 34 189 1 34 192 1 34 193 1 34 195 1 34 198 1 34 199 1 34 201 1 34 202 1 34 204 1 34 208 1 34 213 1 34 217 1 34 220 1 34 223 1 34 224 1 34 228 1 34 232 1 34 235 1 34 238 1 34 239 1 34 242 1 34 245 1 34 248 1 34 249 1 34 251 1 34 254 1 34 255 1 34 257 1 34 258 1 34 260 1 34 263 1 34 267 1 34 270 1 34 273 1 34 274 1 34 277 1 34 280 1 34 283 1 34 284 1 34 286 1 34 289 1 34 290 1 34 292 1 34 293 1 34 295 1 34 297 1 34 300 1 34 303 1 34 304 1 34 306 1 34 309 1 34 310 1 34 312 1 34 313 1 34 315 1 34 316 1 34 319 1 34 320 1 34 322 1 34 323 1 34 325 1 34 326 1 34 327 1 34 329 1 34 330 1 34 797 1 34 803 1 34 808 1 34 812 1 34 815 1 34 818 1 34 819 1 34 824 1 34 829 1 34 833 1 34 836 1 34 839 1 34 840 1 34 844 1 34 848 1 34 851 1 34 854 1 34 855 1 34 858 1 34 861 1 34 864 1 34 865 1 34 867 1 34 870 1 34 871 1 34 873 1 34 874 1 34 876 1 34 880 1 34 885 1 34 889 1 34 892 1 34 895 1 34 896 1 34 900 1 34 904 1 34 907 1 34 910 1 34 911 1 34 914 1 34 917 1 34 920 1 34 921 1 34 923 1 34 926 1 34 927 1 34 929 1 34 930 1 34 932 1 34 935 1 34 939 1 34 942 1 34 945 1 34 946 1 34 949 1 34 952 1 34 955 1 34 956 1 34 958 1 34 961 1 34 962 1 34 964 1 34 965 1 34 967 1 34 969 1 34 972 1 34 975 1 34 976 1 34 978 1 34 981 1 34 982 1 34 984 1 34 985 1 34 987 1 34 988 1 34 991 1 34 992 1 34 994 1 34 995 1 34 997 1 34 998 1 34 999 1 34 1001 1 34 1002 1 34 1006 1 34 1011 1 34 1015 1 34 1018 1 34 1021 1 34 1022 1 34 1026 1 34 1030 1 34 1033 1 34 1036 1 34 1037 1 34 1040 1 34 1043 1 34 1046 1 34 1047 1 34 1049 1 34 1052 1 34 1053 1 34 1055 1 34 1056 1 34 1058 1 34 1061 1 34 1065 1 34 1068 1 34 1071 1 34 1072 1 34 1075 1 34 1078 1 34 1081 1 34 1082 1 34 1084 1 34 1087 1 34 1088 1 34 1090 1 34 1091 1 34 1093 1 34 1095 1 34 1098 1 34 1101 1 34 1102 1 34 1104 1 34 1107 1 34 1108 1 34 1110 1 34 1111 1 34 1113 1 34 1114 1 34 1117 1 34 1118 1 34 1120 1 34 1121 1 34 1123 1 34 1124 1 34 1125 1 34 1127 1 34 1128 1 34 1131 1 34 1135 1 34 1138 1 34 1141 1 34 1142 1 34 1145 1 34 1148 1 34 1151 1 34 1152 1 34 1154 1 34 1157 1 34 1158 1 34 1160 1 34 1161 1 34 1163 1 34 1165 1 34 1168 1 34 1171 1 34 1172 1 34 1174 1 34 1177 1 34 1178 1 34 1180 1 34 1181 1 34 1183 1 34 1184 1 34 1187 1 34 1188 1 34 1190 1 34 1191 1 34 1193 1 34 1194 1 34 1195 1 34 1197 1 34 1198 1 34 1200 1 34 1203 1 34 1206 1 34 1207 1 34 1209 1 34 1212 1 34 1213 1 34 1215 1 34 1216 1 34 1218 1 34 1219 1 34 1222 1 34 1223 1 34 1225 1 34 1226 1 34 1228 1 34 1229 1 34 1230 1 34 1232 1 34 1233 1 34 1234 1 34 1237 1 34 1238 1 34 1240 1 34 1241 1 34 1243 1 34 1244 1 34 1245 1 34 1247 1 34 1248 1 34 1249 1 34 1250 1 34 1252 1 34 1253 1 34 1254 1 34 1721 1 34 1727 1 34 1732 1 34 1736 1 34 1739 1 34 1742 1 34 1743 1 34 1748 1 34 1753 1 34 1757 1 34 1760 1 34 1763 1 34 1764 1 34 1768 1 34 1772 1 34 1775 1 34 1778 1 34 1779 1 34 1782 1 34 1785 1 34 1788 1 34 1789 1 34 1791 1 34 1794 1 34 1795 1 34 1797 1 34 1798 1 34 1800 1 34 1804 1 34 1809 1 34 1813 1 34 1816 1 34 1819 1 34 1820 1 34 1824 1 34 1828 1 34 1831 1 34 1834 1 34 1835 1 34 1838 1 34 1841 1 34 1844 1 34 1845 1 34 1847 1 34 1850 1 34 1851 1 34 1853 1 34 1854 1 34 1856 1 34 1859 1 34 1863 1 34 1866 1 34 1869 1 34 1870 1 34 1873 1 34 1876 1 34 1879 1 34 1880 1 34 1882 1 34 1885 1 34 1886 1 34 1888 1 34 1889 1 34 1891 1 34 1893 1 34 1896 1 34 1899 1 34 1900 1 34 1902 1 34 1905 1 34 1906 1 34 1908 1 34 1909 1 34 1911 1 34 1912 1 34 1915 1 34 1916 1 34 1918 1 34 1919 1 34 1921 1 34 1922 1 34 1923 1 34 1925 1 34 1926 1 34 1930 1 34 1935 1 34 1939 1 34 1942 1 34 1945 1 34 1946 1 34 1950 1 34 1954 1 34 1957 1 34 1960 1 34 1961 1 34 1964 1 34 1967 1 34 1970 1 34 1971 1 34 1973 1 34 1976 1 34 1977 1 34 1979 1 34 1980 1 34 1982 1 34 1985 1 34 1989 1 34 1992 1 34 1995 1 34 1996 1 34 1999 1 34 2002 1 34 2005 1 34 2006 1 34 2008 1 34 2011 1 34 2012 1 34 2014 1 34 2015 1 34 2017 1 34 2019 1 34 2022 1 34 2025 1 34 2026 1 34 2028 1 34 2031 1 34 2032 1 34 2034 1 34 2035 1 34 2037 1 34 2038 1 34 2041 1 34 2042 1 34 2044 1 34 2045 1 34 2047 1 34 2048 1 34 2049 1 34 2051 1 34 2052 1 34 2055 1 34 2059 1 34 2062 1 34 2065 1 34 2066 1 34 2069 1 34 2072 1 34 2075 1 34 2076 1 34 2078 1 34 2081 1 34 2082 1 34 2084 1 34 2085 1 34 2087 1 34 2089 1 34 2092 1 34 2095 1 34 2096 1 34 2098 1 34 2101 1 34 2102 1 34 2104 1 34 2105 1 34 2107 1 34 2108 1 34 2111 1 34 2112 1 34 2114 1 34 2115 1 34 2117 1 34 2118 1 34 2119 1 34 2121 1 34 2122 1 34 2124 1 34 2127 1 34 2130 1 34 2131 1 34 2133 1 34 2136 1 34 2137 1 34 2139 1 34 2140 1 34 2142 1 34 2143 1 34 2146 1 34 2147 1 34 2149 1 34 2150 1 34 2152 1 34 2153 1 34 2154 1 34 2156 1 34 2157 1 34 2158 1 34 2161 1 34 2162 1 34 2164 1 34 2165 1 34 2167 1 34 2168 1 34 2169 1 34 2171 1 34 2172 1 34 2173 1 34 2174 1 34 2176 1 34 2177 1 34 2178 1 34 2644 1 34 2649 1 34 2653 1 34 2656 1 34 2659 1 34 2660 1 34 2664 1 34 2668 1 34 2671 1 34 2674 1 34 2675 1 34 2678 1 34 2681 1 34 2684 1 34 2685 1 34 2687 1 34 2690 1 34 2691 1 34 2693 1 34 2694 1 34 2696 1 34 2699 1 34 2703 1 34 2706 1 34 2709 1 34 2710 1 34 2713 1 34 2716 1 34 2719 1 34 2720 1 34 2722 1 34 2725 1 34 2726 1 34 2728 1 34 2729 1 34 2731 1 34 2733 1 34 2736 1 34 2739 1 34 2740 1 34 2742 1 34 2745 1 34 2746 1 34 2748 1 34 2749 1 34 2751 1 34 2752 1 34 2755 1 34 2756 1 34 2758 1 34 2759 1 34 2761 1 34 2762 1 34 2763 1 34 2765 1 34 2766 1 34 2769 1 34 2773 1 34 2776 1 34 2779 1 34 2780 1 34 2783 1 34 2786 1 34 2789 1 34 2790 1 34 2792 1 34 2795 1 34 2796 1 34 2798 1 34 2799 1 34 2801 1 34 2803 1 34 2806 1 34 2809 1 34 2810 1 34 2812 1 34 2815 1 34 2816 1 34 2818 1 34 2819 1 34 2821 1 34 2822 1 34 2825 1 34 2826 1 34 2828 1 34 2829 1 34 2831 1 34 2832 1 34 2833 1 34 2835 1 34 2836 1 34 2838 1 34 2841 1 34 2844 1 34 2845 1 34 2847 1 34 2850 1 34 2851 1 34 2853 1 34 2854 1 34 2856 1 34 2857 1 34 2860 1 34 2861 1 34 2863 1 34 2864 1 34 2866 1 34 2867 1 34 2868 1 34 2870 1 34 2871 1 34 2872 1 34 2875 1 34 2876 1 34 2878 1 34 2879 1 34 2881 1 34 2882 1 34 2883 1 34 2885 1 34 2886 1 34 2887 1 34 2888 1 34 2890 1 34 2891 1 34 2892 1 34 2895 1 34 2899 1 34 2902 1 34 2905 1 34 2906 1 34 2909 1 34 2912 1 34 2915 1 34 2916 1 34 2918 1 34 2921 1 34 2922 1 34 2924 1 34 2925 1 34 2927 1 34 2929 1 34 2932 1 34 2935 1 34 2936 1 34 2938 1 34 2941 1 34 2942 1 34 2944 1 34 2945 1 34 2947 1 34 2948 1 34 2951 1 34 2952 1 34 2954 1 34 2955 1 34 2957 1 34 2958 1 34 2959 1 34 2961 1 34 2962 1 34 2964 1 34 2967 1 34 2970 1 34 2971 1 34 2973 1 34 2976 1 34 2977 1 34 2979 1 34 2980 1 34 2982 1 34 2983 1 34 2986 1 34 2987 1 34 2989 1 34 2990 1 34 2992 1 34 2993 1 34 2994 1 34 2996 1 34 2997 1 34 2998 1 34 3001 1 34 3002 1 34 3004 1 34 3005 1 34 3007 1 34 3008 1 34 3009 1 34 3011 1 34 3012 1 34 3013 1 34 3014 1 34 3016 1 34 3017 1 34 3018 1 34 3020 1 34 3023 1 34 3026 1 34 3027 1 34 3029 1 34 3032 1 34 3033 1 34 3035 1 34 3036 1 34 3038 1 34 3039 1 34 3042 1 34 3043 1 34 3045 1 34 3046 1 34 3048 1 34 3049 1 34 3050 1 34 3052 1 34 3053 1 34 3054 1 34 3057 1 34 3058 1 34 3060 1 34 3061 1 34 3063 1 34 3064 1 34 3065 1 34 3067 1 34 3068 1 34 3069 1 34 3070 1 34 3072 1 34 3073 1 34 3074 1 34 3075 1 34 3078 1 34 3079 1 34 3081 1 34 3082 1 34 3084 1 34 3085 1 34 3086 1 34 3088 1 34 3089 1 34 3090 1 34 3091 1 34 3093 1 34 3094 1 34 3095 1 34 3096 1 34 3097 1 34 3099 1 34 3100 1 34 3101 1 34 3102 1 35 7 1 35 14 1 35 20 1 35 25 1 35 29 1 35 32 1 35 34 1 35 36 1 35 42 1 35 48 1 35 53 1 35 57 1 35 60 1 35 62 1 35 64 1 35 69 1 35 74 1 35 78 1 35 81 1 35 83 1 35 85 1 35 89 1 35 93 1 35 96 1 35 98 1 35 100 1 35 103 1 35 106 1 35 108 1 35 110 1 35 112 1 35 114 1 35 116 1 35 117 1 35 119 1 35 120 1 35 126 1 35 132 1 35 137 1 35 141 1 35 144 1 35 146 1 35 148 1 35 153 1 35 158 1 35 162 1 35 165 1 35 167 1 35 169 1 35 173 1 35 177 1 35 180 1 35 182 1 35 184 1 35 187 1 35 190 1 35 192 1 35 194 1 35 196 1 35 198 1 35 200 1 35 201 1 35 203 1 35 204 1 35 209 1 35 214 1 35 218 1 35 221 1 35 223 1 35 225 1 35 229 1 35 233 1 35 236 1 35 238 1 35 240 1 35 243 1 35 246 1 35 248 1 35 250 1 35 252 1 35 254 1 35 256 1 35 257 1 35 259 1 35 260 1 35 264 1 35 268 1 35 271 1 35 273 1 35 275 1 35 278 1 35 281 1 35 283 1 35 285 1 35 287 1 35 289 1 35 291 1 35 292 1 35 294 1 35 295 1 35 298 1 35 301 1 35 303 1 35 305 1 35 307 1 35 309 1 35 311 1 35 312 1 35 314 1 35 315 1 35 317 1 35 319 1 35 321 1 35 322 1 35 324 1 35 325 1 35 326 1 35 328 1 35 329 1 35 330 1 35 798 1 35 804 1 35 809 1 35 813 1 35 816 1 35 818 1 35 820 1 35 825 1 35 830 1 35 834 1 35 837 1 35 839 1 35 841 1 35 845 1 35 849 1 35 852 1 35 854 1 35 856 1 35 859 1 35 862 1 35 864 1 35 866 1 35 868 1 35 870 1 35 872 1 35 873 1 35 875 1 35 876 1 35 881 1 35 886 1 35 890 1 35 893 1 35 895 1 35 897 1 35 901 1 35 905 1 35 908 1 35 910 1 35 912 1 35 915 1 35 918 1 35 920 1 35 922 1 35 924 1 35 926 1 35 928 1 35 929 1 35 931 1 35 932 1 35 936 1 35 940 1 35 943 1 35 945 1 35 947 1 35 950 1 35 953 1 35 955 1 35 957 1 35 959 1 35 961 1 35 963 1 35 964 1 35 966 1 35 967 1 35 970 1 35 973 1 35 975 1 35 977 1 35 979 1 35 981 1 35 983 1 35 984 1 35 986 1 35 987 1 35 989 1 35 991 1 35 993 1 35 994 1 35 996 1 35 997 1 35 998 1 35 1000 1 35 1001 1 35 1002 1 35 1007 1 35 1012 1 35 1016 1 35 1019 1 35 1021 1 35 1023 1 35 1027 1 35 1031 1 35 1034 1 35 1036 1 35 1038 1 35 1041 1 35 1044 1 35 1046 1 35 1048 1 35 1050 1 35 1052 1 35 1054 1 35 1055 1 35 1057 1 35 1058 1 35 1062 1 35 1066 1 35 1069 1 35 1071 1 35 1073 1 35 1076 1 35 1079 1 35 1081 1 35 1083 1 35 1085 1 35 1087 1 35 1089 1 35 1090 1 35 1092 1 35 1093 1 35 1096 1 35 1099 1 35 1101 1 35 1103 1 35 1105 1 35 1107 1 35 1109 1 35 1110 1 35 1112 1 35 1113 1 35 1115 1 35 1117 1 35 1119 1 35 1120 1 35 1122 1 35 1123 1 35 1124 1 35 1126 1 35 1127 1 35 1128 1 35 1132 1 35 1136 1 35 1139 1 35 1141 1 35 1143 1 35 1146 1 35 1149 1 35 1151 1 35 1153 1 35 1155 1 35 1157 1 35 1159 1 35 1160 1 35 1162 1 35 1163 1 35 1166 1 35 1169 1 35 1171 1 35 1173 1 35 1175 1 35 1177 1 35 1179 1 35 1180 1 35 1182 1 35 1183 1 35 1185 1 35 1187 1 35 1189 1 35 1190 1 35 1192 1 35 1193 1 35 1194 1 35 1196 1 35 1197 1 35 1198 1 35 1201 1 35 1204 1 35 1206 1 35 1208 1 35 1210 1 35 1212 1 35 1214 1 35 1215 1 35 1217 1 35 1218 1 35 1220 1 35 1222 1 35 1224 1 35 1225 1 35 1227 1 35 1228 1 35 1229 1 35 1231 1 35 1232 1 35 1233 1 35 1235 1 35 1237 1 35 1239 1 35 1240 1 35 1242 1 35 1243 1 35 1244 1 35 1246 1 35 1247 1 35 1248 1 35 1249 1 35 1251 1 35 1252 1 35 1253 1 35 1254 1 35 1722 1 35 1728 1 35 1733 1 35 1737 1 35 1740 1 35 1742 1 35 1744 1 35 1749 1 35 1754 1 35 1758 1 35 1761 1 35 1763 1 35 1765 1 35 1769 1 35 1773 1 35 1776 1 35 1778 1 35 1780 1 35 1783 1 35 1786 1 35 1788 1 35 1790 1 35 1792 1 35 1794 1 35 1796 1 35 1797 1 35 1799 1 35 1800 1 35 1805 1 35 1810 1 35 1814 1 35 1817 1 35 1819 1 35 1821 1 35 1825 1 35 1829 1 35 1832 1 35 1834 1 35 1836 1 35 1839 1 35 1842 1 35 1844 1 35 1846 1 35 1848 1 35 1850 1 35 1852 1 35 1853 1 35 1855 1 35 1856 1 35 1860 1 35 1864 1 35 1867 1 35 1869 1 35 1871 1 35 1874 1 35 1877 1 35 1879 1 35 1881 1 35 1883 1 35 1885 1 35 1887 1 35 1888 1 35 1890 1 35 1891 1 35 1894 1 35 1897 1 35 1899 1 35 1901 1 35 1903 1 35 1905 1 35 1907 1 35 1908 1 35 1910 1 35 1911 1 35 1913 1 35 1915 1 35 1917 1 35 1918 1 35 1920 1 35 1921 1 35 1922 1 35 1924 1 35 1925 1 35 1926 1 35 1931 1 35 1936 1 35 1940 1 35 1943 1 35 1945 1 35 1947 1 35 1951 1 35 1955 1 35 1958 1 35 1960 1 35 1962 1 35 1965 1 35 1968 1 35 1970 1 35 1972 1 35 1974 1 35 1976 1 35 1978 1 35 1979 1 35 1981 1 35 1982 1 35 1986 1 35 1990 1 35 1993 1 35 1995 1 35 1997 1 35 2000 1 35 2003 1 35 2005 1 35 2007 1 35 2009 1 35 2011 1 35 2013 1 35 2014 1 35 2016 1 35 2017 1 35 2020 1 35 2023 1 35 2025 1 35 2027 1 35 2029 1 35 2031 1 35 2033 1 35 2034 1 35 2036 1 35 2037 1 35 2039 1 35 2041 1 35 2043 1 35 2044 1 35 2046 1 35 2047 1 35 2048 1 35 2050 1 35 2051 1 35 2052 1 35 2056 1 35 2060 1 35 2063 1 35 2065 1 35 2067 1 35 2070 1 35 2073 1 35 2075 1 35 2077 1 35 2079 1 35 2081 1 35 2083 1 35 2084 1 35 2086 1 35 2087 1 35 2090 1 35 2093 1 35 2095 1 35 2097 1 35 2099 1 35 2101 1 35 2103 1 35 2104 1 35 2106 1 35 2107 1 35 2109 1 35 2111 1 35 2113 1 35 2114 1 35 2116 1 35 2117 1 35 2118 1 35 2120 1 35 2121 1 35 2122 1 35 2125 1 35 2128 1 35 2130 1 35 2132 1 35 2134 1 35 2136 1 35 2138 1 35 2139 1 35 2141 1 35 2142 1 35 2144 1 35 2146 1 35 2148 1 35 2149 1 35 2151 1 35 2152 1 35 2153 1 35 2155 1 35 2156 1 35 2157 1 35 2159 1 35 2161 1 35 2163 1 35 2164 1 35 2166 1 35 2167 1 35 2168 1 35 2170 1 35 2171 1 35 2172 1 35 2173 1 35 2175 1 35 2176 1 35 2177 1 35 2178 1 35 2645 1 35 2650 1 35 2654 1 35 2657 1 35 2659 1 35 2661 1 35 2665 1 35 2669 1 35 2672 1 35 2674 1 35 2676 1 35 2679 1 35 2682 1 35 2684 1 35 2686 1 35 2688 1 35 2690 1 35 2692 1 35 2693 1 35 2695 1 35 2696 1 35 2700 1 35 2704 1 35 2707 1 35 2709 1 35 2711 1 35 2714 1 35 2717 1 35 2719 1 35 2721 1 35 2723 1 35 2725 1 35 2727 1 35 2728 1 35 2730 1 35 2731 1 35 2734 1 35 2737 1 35 2739 1 35 2741 1 35 2743 1 35 2745 1 35 2747 1 35 2748 1 35 2750 1 35 2751 1 35 2753 1 35 2755 1 35 2757 1 35 2758 1 35 2760 1 35 2761 1 35 2762 1 35 2764 1 35 2765 1 35 2766 1 35 2770 1 35 2774 1 35 2777 1 35 2779 1 35 2781 1 35 2784 1 35 2787 1 35 2789 1 35 2791 1 35 2793 1 35 2795 1 35 2797 1 35 2798 1 35 2800 1 35 2801 1 35 2804 1 35 2807 1 35 2809 1 35 2811 1 35 2813 1 35 2815 1 35 2817 1 35 2818 1 35 2820 1 35 2821 1 35 2823 1 35 2825 1 35 2827 1 35 2828 1 35 2830 1 35 2831 1 35 2832 1 35 2834 1 35 2835 1 35 2836 1 35 2839 1 35 2842 1 35 2844 1 35 2846 1 35 2848 1 35 2850 1 35 2852 1 35 2853 1 35 2855 1 35 2856 1 35 2858 1 35 2860 1 35 2862 1 35 2863 1 35 2865 1 35 2866 1 35 2867 1 35 2869 1 35 2870 1 35 2871 1 35 2873 1 35 2875 1 35 2877 1 35 2878 1 35 2880 1 35 2881 1 35 2882 1 35 2884 1 35 2885 1 35 2886 1 35 2887 1 35 2889 1 35 2890 1 35 2891 1 35 2892 1 35 2896 1 35 2900 1 35 2903 1 35 2905 1 35 2907 1 35 2910 1 35 2913 1 35 2915 1 35 2917 1 35 2919 1 35 2921 1 35 2923 1 35 2924 1 35 2926 1 35 2927 1 35 2930 1 35 2933 1 35 2935 1 35 2937 1 35 2939 1 35 2941 1 35 2943 1 35 2944 1 35 2946 1 35 2947 1 35 2949 1 35 2951 1 35 2953 1 35 2954 1 35 2956 1 35 2957 1 35 2958 1 35 2960 1 35 2961 1 35 2962 1 35 2965 1 35 2968 1 35 2970 1 35 2972 1 35 2974 1 35 2976 1 35 2978 1 35 2979 1 35 2981 1 35 2982 1 35 2984 1 35 2986 1 35 2988 1 35 2989 1 35 2991 1 35 2992 1 35 2993 1 35 2995 1 35 2996 1 35 2997 1 35 2999 1 35 3001 1 35 3003 1 35 3004 1 35 3006 1 35 3007 1 35 3008 1 35 3010 1 35 3011 1 35 3012 1 35 3013 1 35 3015 1 35 3016 1 35 3017 1 35 3018 1 35 3021 1 35 3024 1 35 3026 1 35 3028 1 35 3030 1 35 3032 1 35 3034 1 35 3035 1 35 3037 1 35 3038 1 35 3040 1 35 3042 1 35 3044 1 35 3045 1 35 3047 1 35 3048 1 35 3049 1 35 3051 1 35 3052 1 35 3053 1 35 3055 1 35 3057 1 35 3059 1 35 3060 1 35 3062 1 35 3063 1 35 3064 1 35 3066 1 35 3067 1 35 3068 1 35 3069 1 35 3071 1 35 3072 1 35 3073 1 35 3074 1 35 3076 1 35 3078 1 35 3080 1 35 3081 1 35 3083 1 35 3084 1 35 3085 1 35 3087 1 35 3088 1 35 3089 1 35 3090 1 35 3092 1 35 3093 1 35 3094 1 35 3095 1 35 3096 1 35 3098 1 35 3099 1 35 3100 1 35 3101 1 35 3102 1 36 8 1 36 15 1 36 21 1 36 26 1 36 30 1 36 33 1 36 35 1 36 36 1 36 43 1 36 49 1 36 54 1 36 58 1 36 61 1 36 63 1 36 64 1 36 70 1 36 75 1 36 79 1 36 82 1 36 84 1 36 85 1 36 90 1 36 94 1 36 97 1 36 99 1 36 100 1 36 104 1 36 107 1 36 109 1 36 110 1 36 113 1 36 115 1 36 116 1 36 118 1 36 119 1 36 120 1 36 127 1 36 133 1 36 138 1 36 142 1 36 145 1 36 147 1 36 148 1 36 154 1 36 159 1 36 163 1 36 166 1 36 168 1 36 169 1 36 174 1 36 178 1 36 181 1 36 183 1 36 184 1 36 188 1 36 191 1 36 193 1 36 194 1 36 197 1 36 199 1 36 200 1 36 202 1 36 203 1 36 204 1 36 210 1 36 215 1 36 219 1 36 222 1 36 224 1 36 225 1 36 230 1 36 234 1 36 237 1 36 239 1 36 240 1 36 244 1 36 247 1 36 249 1 36 250 1 36 253 1 36 255 1 36 256 1 36 258 1 36 259 1 36 260 1 36 265 1 36 269 1 36 272 1 36 274 1 36 275 1 36 279 1 36 282 1 36 284 1 36 285 1 36 288 1 36 290 1 36 291 1 36 293 1 36 294 1 36 295 1 36 299 1 36 302 1 36 304 1 36 305 1 36 308 1 36 310 1 36 311 1 36 313 1 36 314 1 36 315 1 36 318 1 36 320 1 36 321 1 36 323 1 36 324 1 36 325 1 36 327 1 36 328 1 36 329 1 36 330 1 36 799 1 36 805 1 36 810 1 36 814 1 36 817 1 36 819 1 36 820 1 36 826 1 36 831 1 36 835 1 36 838 1 36 840 1 36 841 1 36 846 1 36 850 1 36 853 1 36 855 1 36 856 1 36 860 1 36 863 1 36 865 1 36 866 1 36 869 1 36 871 1 36 872 1 36 874 1 36 875 1 36 876 1 36 882 1 36 887 1 36 891 1 36 894 1 36 896 1 36 897 1 36 902 1 36 906 1 36 909 1 36 911 1 36 912 1 36 916 1 36 919 1 36 921 1 36 922 1 36 925 1 36 927 1 36 928 1 36 930 1 36 931 1 36 932 1 36 937 1 36 941 1 36 944 1 36 946 1 36 947 1 36 951 1 36 954 1 36 956 1 36 957 1 36 960 1 36 962 1 36 963 1 36 965 1 36 966 1 36 967 1 36 971 1 36 974 1 36 976 1 36 977 1 36 980 1 36 982 1 36 983 1 36 985 1 36 986 1 36 987 1 36 990 1 36 992 1 36 993 1 36 995 1 36 996 1 36 997 1 36 999 1 36 1000 1 36 1001 1 36 1002 1 36 1008 1 36 1013 1 36 1017 1 36 1020 1 36 1022 1 36 1023 1 36 1028 1 36 1032 1 36 1035 1 36 1037 1 36 1038 1 36 1042 1 36 1045 1 36 1047 1 36 1048 1 36 1051 1 36 1053 1 36 1054 1 36 1056 1 36 1057 1 36 1058 1 36 1063 1 36 1067 1 36 1070 1 36 1072 1 36 1073 1 36 1077 1 36 1080 1 36 1082 1 36 1083 1 36 1086 1 36 1088 1 36 1089 1 36 1091 1 36 1092 1 36 1093 1 36 1097 1 36 1100 1 36 1102 1 36 1103 1 36 1106 1 36 1108 1 36 1109 1 36 1111 1 36 1112 1 36 1113 1 36 1116 1 36 1118 1 36 1119 1 36 1121 1 36 1122 1 36 1123 1 36 1125 1 36 1126 1 36 1127 1 36 1128 1 36 1133 1 36 1137 1 36 1140 1 36 1142 1 36 1143 1 36 1147 1 36 1150 1 36 1152 1 36 1153 1 36 1156 1 36 1158 1 36 1159 1 36 1161 1 36 1162 1 36 1163 1 36 1167 1 36 1170 1 36 1172 1 36 1173 1 36 1176 1 36 1178 1 36 1179 1 36 1181 1 36 1182 1 36 1183 1 36 1186 1 36 1188 1 36 1189 1 36 1191 1 36 1192 1 36 1193 1 36 1195 1 36 1196 1 36 1197 1 36 1198 1 36 1202 1 36 1205 1 36 1207 1 36 1208 1 36 1211 1 36 1213 1 36 1214 1 36 1216 1 36 1217 1 36 1218 1 36 1221 1 36 1223 1 36 1224 1 36 1226 1 36 1227 1 36 1228 1 36 1230 1 36 1231 1 36 1232 1 36 1233 1 36 1236 1 36 1238 1 36 1239 1 36 1241 1 36 1242 1 36 1243 1 36 1245 1 36 1246 1 36 1247 1 36 1248 1 36 1250 1 36 1251 1 36 1252 1 36 1253 1 36 1254 1 36 1723 1 36 1729 1 36 1734 1 36 1738 1 36 1741 1 36 1743 1 36 1744 1 36 1750 1 36 1755 1 36 1759 1 36 1762 1 36 1764 1 36 1765 1 36 1770 1 36 1774 1 36 1777 1 36 1779 1 36 1780 1 36 1784 1 36 1787 1 36 1789 1 36 1790 1 36 1793 1 36 1795 1 36 1796 1 36 1798 1 36 1799 1 36 1800 1 36 1806 1 36 1811 1 36 1815 1 36 1818 1 36 1820 1 36 1821 1 36 1826 1 36 1830 1 36 1833 1 36 1835 1 36 1836 1 36 1840 1 36 1843 1 36 1845 1 36 1846 1 36 1849 1 36 1851 1 36 1852 1 36 1854 1 36 1855 1 36 1856 1 36 1861 1 36 1865 1 36 1868 1 36 1870 1 36 1871 1 36 1875 1 36 1878 1 36 1880 1 36 1881 1 36 1884 1 36 1886 1 36 1887 1 36 1889 1 36 1890 1 36 1891 1 36 1895 1 36 1898 1 36 1900 1 36 1901 1 36 1904 1 36 1906 1 36 1907 1 36 1909 1 36 1910 1 36 1911 1 36 1914 1 36 1916 1 36 1917 1 36 1919 1 36 1920 1 36 1921 1 36 1923 1 36 1924 1 36 1925 1 36 1926 1 36 1932 1 36 1937 1 36 1941 1 36 1944 1 36 1946 1 36 1947 1 36 1952 1 36 1956 1 36 1959 1 36 1961 1 36 1962 1 36 1966 1 36 1969 1 36 1971 1 36 1972 1 36 1975 1 36 1977 1 36 1978 1 36 1980 1 36 1981 1 36 1982 1 36 1987 1 36 1991 1 36 1994 1 36 1996 1 36 1997 1 36 2001 1 36 2004 1 36 2006 1 36 2007 1 36 2010 1 36 2012 1 36 2013 1 36 2015 1 36 2016 1 36 2017 1 36 2021 1 36 2024 1 36 2026 1 36 2027 1 36 2030 1 36 2032 1 36 2033 1 36 2035 1 36 2036 1 36 2037 1 36 2040 1 36 2042 1 36 2043 1 36 2045 1 36 2046 1 36 2047 1 36 2049 1 36 2050 1 36 2051 1 36 2052 1 36 2057 1 36 2061 1 36 2064 1 36 2066 1 36 2067 1 36 2071 1 36 2074 1 36 2076 1 36 2077 1 36 2080 1 36 2082 1 36 2083 1 36 2085 1 36 2086 1 36 2087 1 36 2091 1 36 2094 1 36 2096 1 36 2097 1 36 2100 1 36 2102 1 36 2103 1 36 2105 1 36 2106 1 36 2107 1 36 2110 1 36 2112 1 36 2113 1 36 2115 1 36 2116 1 36 2117 1 36 2119 1 36 2120 1 36 2121 1 36 2122 1 36 2126 1 36 2129 1 36 2131 1 36 2132 1 36 2135 1 36 2137 1 36 2138 1 36 2140 1 36 2141 1 36 2142 1 36 2145 1 36 2147 1 36 2148 1 36 2150 1 36 2151 1 36 2152 1 36 2154 1 36 2155 1 36 2156 1 36 2157 1 36 2160 1 36 2162 1 36 2163 1 36 2165 1 36 2166 1 36 2167 1 36 2169 1 36 2170 1 36 2171 1 36 2172 1 36 2174 1 36 2175 1 36 2176 1 36 2177 1 36 2178 1 36 2646 1 36 2651 1 36 2655 1 36 2658 1 36 2660 1 36 2661 1 36 2666 1 36 2670 1 36 2673 1 36 2675 1 36 2676 1 36 2680 1 36 2683 1 36 2685 1 36 2686 1 36 2689 1 36 2691 1 36 2692 1 36 2694 1 36 2695 1 36 2696 1 36 2701 1 36 2705 1 36 2708 1 36 2710 1 36 2711 1 36 2715 1 36 2718 1 36 2720 1 36 2721 1 36 2724 1 36 2726 1 36 2727 1 36 2729 1 36 2730 1 36 2731 1 36 2735 1 36 2738 1 36 2740 1 36 2741 1 36 2744 1 36 2746 1 36 2747 1 36 2749 1 36 2750 1 36 2751 1 36 2754 1 36 2756 1 36 2757 1 36 2759 1 36 2760 1 36 2761 1 36 2763 1 36 2764 1 36 2765 1 36 2766 1 36 2771 1 36 2775 1 36 2778 1 36 2780 1 36 2781 1 36 2785 1 36 2788 1 36 2790 1 36 2791 1 36 2794 1 36 2796 1 36 2797 1 36 2799 1 36 2800 1 36 2801 1 36 2805 1 36 2808 1 36 2810 1 36 2811 1 36 2814 1 36 2816 1 36 2817 1 36 2819 1 36 2820 1 36 2821 1 36 2824 1 36 2826 1 36 2827 1 36 2829 1 36 2830 1 36 2831 1 36 2833 1 36 2834 1 36 2835 1 36 2836 1 36 2840 1 36 2843 1 36 2845 1 36 2846 1 36 2849 1 36 2851 1 36 2852 1 36 2854 1 36 2855 1 36 2856 1 36 2859 1 36 2861 1 36 2862 1 36 2864 1 36 2865 1 36 2866 1 36 2868 1 36 2869 1 36 2870 1 36 2871 1 36 2874 1 36 2876 1 36 2877 1 36 2879 1 36 2880 1 36 2881 1 36 2883 1 36 2884 1 36 2885 1 36 2886 1 36 2888 1 36 2889 1 36 2890 1 36 2891 1 36 2892 1 36 2897 1 36 2901 1 36 2904 1 36 2906 1 36 2907 1 36 2911 1 36 2914 1 36 2916 1 36 2917 1 36 2920 1 36 2922 1 36 2923 1 36 2925 1 36 2926 1 36 2927 1 36 2931 1 36 2934 1 36 2936 1 36 2937 1 36 2940 1 36 2942 1 36 2943 1 36 2945 1 36 2946 1 36 2947 1 36 2950 1 36 2952 1 36 2953 1 36 2955 1 36 2956 1 36 2957 1 36 2959 1 36 2960 1 36 2961 1 36 2962 1 36 2966 1 36 2969 1 36 2971 1 36 2972 1 36 2975 1 36 2977 1 36 2978 1 36 2980 1 36 2981 1 36 2982 1 36 2985 1 36 2987 1 36 2988 1 36 2990 1 36 2991 1 36 2992 1 36 2994 1 36 2995 1 36 2996 1 36 2997 1 36 3000 1 36 3002 1 36 3003 1 36 3005 1 36 3006 1 36 3007 1 36 3009 1 36 3010 1 36 3011 1 36 3012 1 36 3014 1 36 3015 1 36 3016 1 36 3017 1 36 3018 1 36 3022 1 36 3025 1 36 3027 1 36 3028 1 36 3031 1 36 3033 1 36 3034 1 36 3036 1 36 3037 1 36 3038 1 36 3041 1 36 3043 1 36 3044 1 36 3046 1 36 3047 1 36 3048 1 36 3050 1 36 3051 1 36 3052 1 36 3053 1 36 3056 1 36 3058 1 36 3059 1 36 3061 1 36 3062 1 36 3063 1 36 3065 1 36 3066 1 36 3067 1 36 3068 1 36 3070 1 36 3071 1 36 3072 1 36 3073 1 36 3074 1 36 3077 1 36 3079 1 36 3080 1 36 3082 1 36 3083 1 36 3084 1 36 3086 1 36 3087 1 36 3088 1 36 3089 1 36 3091 1 36 3092 1 36 3093 1 36 3094 1 36 3095 1 36 3097 1 36 3098 1 36 3099 1 36 3100 1 36 3101 1 36 3102 1 37 1 1 37 2 1 37 3 1 37 4 1 37 5 1 37 6 1 37 7 1 37 8 1 37 9 1 37 10 1 37 11 1 37 12 1 37 13 1 37 14 1 37 15 1 37 16 1 37 17 1 37 18 1 37 19 1 37 20 1 37 21 1 37 22 1 37 23 1 37 24 1 37 25 1 37 26 1 37 27 1 37 28 1 37 29 1 37 30 1 37 31 1 37 32 1 37 33 1 37 34 1 37 35 1 37 36 1 37 331 1 37 332 1 37 333 1 37 334 1 37 335 1 37 336 1 37 337 1 37 338 1 37 339 1 37 340 1 37 341 1 37 342 1 37 343 1 37 344 1 37 345 1 37 346 1 37 347 1 37 348 1 37 349 1 37 350 1 37 351 1 37 352 1 37 353 1 37 354 1 37 355 1 37 356 1 37 357 1 37 358 1 37 359 1 37 360 1 37 361 1 37 362 1 37 363 1 37 364 1 37 365 1 37 366 1 37 367 1 37 368 1 37 369 1 37 370 1 37 371 1 37 372 1 37 373 1 37 374 1 37 375 1 37 376 1 37 377 1 37 378 1 37 379 1 37 380 1 37 381 1 37 382 1 37 383 1 37 384 1 37 385 1 37 386 1 37 387 1 37 388 1 37 389 1 37 390 1 37 391 1 37 392 1 37 393 1 37 394 1 37 395 1 37 396 1 37 397 1 37 398 1 37 399 1 37 400 1 37 401 1 37 402 1 37 403 1 37 404 1 37 405 1 37 406 1 37 407 1 37 408 1 37 409 1 37 410 1 37 411 1 37 412 1 37 413 1 37 414 1 37 793 1 37 794 1 37 795 1 37 796 1 37 797 1 37 798 1 37 799 1 37 800 1 37 801 1 37 802 1 37 803 1 37 804 1 37 805 1 37 806 1 37 807 1 37 808 1 37 809 1 37 810 1 37 811 1 37 812 1 37 813 1 37 814 1 37 815 1 37 816 1 37 817 1 37 818 1 37 819 1 37 820 1 37 821 1 37 822 1 37 823 1 37 824 1 37 825 1 37 826 1 37 827 1 37 828 1 37 829 1 37 830 1 37 831 1 37 832 1 37 833 1 37 834 1 37 835 1 37 836 1 37 837 1 37 838 1 37 839 1 37 840 1 37 841 1 37 842 1 37 843 1 37 844 1 37 845 1 37 846 1 37 847 1 37 848 1 37 849 1 37 850 1 37 851 1 37 852 1 37 853 1 37 854 1 37 855 1 37 856 1 37 857 1 37 858 1 37 859 1 37 860 1 37 861 1 37 862 1 37 863 1 37 864 1 37 865 1 37 866 1 37 867 1 37 868 1 37 869 1 37 870 1 37 871 1 37 872 1 37 873 1 37 874 1 37 875 1 37 876 1 37 1255 1 37 1256 1 37 1257 1 37 1258 1 37 1259 1 37 1260 1 37 1261 1 37 1262 1 37 1263 1 37 1264 1 37 1265 1 37 1266 1 37 1267 1 37 1268 1 37 1269 1 37 1270 1 37 1271 1 37 1272 1 37 1273 1 37 1274 1 37 1275 1 37 1276 1 37 1277 1 37 1278 1 37 1279 1 37 1280 1 37 1281 1 37 1282 1 37 1283 1 37 1284 1 37 1285 1 37 1286 1 37 1287 1 37 1288 1 37 1289 1 37 1290 1 37 1291 1 37 1292 1 37 1293 1 37 1294 1 37 1295 1 37 1296 1 37 1297 1 37 1298 1 37 1299 1 37 1300 1 37 1301 1 37 1302 1 37 1303 1 37 1304 1 37 1305 1 37 1306 1 37 1307 1 37 1308 1 37 1309 1 37 1310 1 37 1311 1 37 1312 1 37 1313 1 37 1314 1 37 1315 1 37 1316 1 37 1317 1 37 1318 1 37 1319 1 37 1320 1 37 1321 1 37 1322 1 37 1323 1 37 1324 1 37 1325 1 37 1326 1 37 1327 1 37 1328 1 37 1329 1 37 1330 1 37 1331 1 37 1332 1 37 1333 1 37 1334 1 37 1335 1 37 1336 1 37 1337 1 37 1338 1 37 1339 1 37 1340 1 37 1341 1 37 1342 1 37 1343 1 37 1344 1 37 1345 1 37 1346 1 37 1347 1 37 1348 1 37 1349 1 37 1350 1 37 1351 1 37 1352 1 37 1353 1 37 1354 1 37 1355 1 37 1356 1 37 1357 1 37 1358 1 37 1359 1 37 1360 1 37 1361 1 37 1362 1 37 1363 1 37 1364 1 37 1365 1 37 1366 1 37 1367 1 37 1368 1 37 1369 1 37 1370 1 37 1371 1 37 1372 1 37 1373 1 37 1374 1 37 1375 1 37 1376 1 37 1377 1 37 1378 1 37 1379 1 37 1380 1 37 1717 1 37 1718 1 37 1719 1 37 1720 1 37 1721 1 37 1722 1 37 1723 1 37 1724 1 37 1725 1 37 1726 1 37 1727 1 37 1728 1 37 1729 1 37 1730 1 37 1731 1 37 1732 1 37 1733 1 37 1734 1 37 1735 1 37 1736 1 37 1737 1 37 1738 1 37 1739 1 37 1740 1 37 1741 1 37 1742 1 37 1743 1 37 1744 1 37 1745 1 37 1746 1 37 1747 1 37 1748 1 37 1749 1 37 1750 1 37 1751 1 37 1752 1 37 1753 1 37 1754 1 37 1755 1 37 1756 1 37 1757 1 37 1758 1 37 1759 1 37 1760 1 37 1761 1 37 1762 1 37 1763 1 37 1764 1 37 1765 1 37 1766 1 37 1767 1 37 1768 1 37 1769 1 37 1770 1 37 1771 1 37 1772 1 37 1773 1 37 1774 1 37 1775 1 37 1776 1 37 1777 1 37 1778 1 37 1779 1 37 1780 1 37 1781 1 37 1782 1 37 1783 1 37 1784 1 37 1785 1 37 1786 1 37 1787 1 37 1788 1 37 1789 1 37 1790 1 37 1791 1 37 1792 1 37 1793 1 37 1794 1 37 1795 1 37 1796 1 37 1797 1 37 1798 1 37 1799 1 37 1800 1 37 2179 1 37 2180 1 37 2181 1 37 2182 1 37 2183 1 37 2184 1 37 2185 1 37 2186 1 37 2187 1 37 2188 1 37 2189 1 37 2190 1 37 2191 1 37 2192 1 37 2193 1 37 2194 1 37 2195 1 37 2196 1 37 2197 1 37 2198 1 37 2199 1 37 2200 1 37 2201 1 37 2202 1 37 2203 1 37 2204 1 37 2205 1 37 2206 1 37 2207 1 37 2208 1 37 2209 1 37 2210 1 37 2211 1 37 2212 1 37 2213 1 37 2214 1 37 2215 1 37 2216 1 37 2217 1 37 2218 1 37 2219 1 37 2220 1 37 2221 1 37 2222 1 37 2223 1 37 2224 1 37 2225 1 37 2226 1 37 2227 1 37 2228 1 37 2229 1 37 2230 1 37 2231 1 37 2232 1 37 2233 1 37 2234 1 37 2235 1 37 2236 1 37 2237 1 37 2238 1 37 2239 1 37 2240 1 37 2241 1 37 2242 1 37 2243 1 37 2244 1 37 2245 1 37 2246 1 37 2247 1 37 2248 1 37 2249 1 37 2250 1 37 2251 1 37 2252 1 37 2253 1 37 2254 1 37 2255 1 37 2256 1 37 2257 1 37 2258 1 37 2259 1 37 2260 1 37 2261 1 37 2262 1 37 2263 1 37 2264 1 37 2265 1 37 2266 1 37 2267 1 37 2268 1 37 2269 1 37 2270 1 37 2271 1 37 2272 1 37 2273 1 37 2274 1 37 2275 1 37 2276 1 37 2277 1 37 2278 1 37 2279 1 37 2280 1 37 2281 1 37 2282 1 37 2283 1 37 2284 1 37 2285 1 37 2286 1 37 2287 1 37 2288 1 37 2289 1 37 2290 1 37 2291 1 37 2292 1 37 2293 1 37 2294 1 37 2295 1 37 2296 1 37 2297 1 37 2298 1 37 2299 1 37 2300 1 37 2301 1 37 2302 1 37 2303 1 37 2304 1 37 2641 1 37 2642 1 37 2643 1 37 2644 1 37 2645 1 37 2646 1 37 2647 1 37 2648 1 37 2649 1 37 2650 1 37 2651 1 37 2652 1 37 2653 1 37 2654 1 37 2655 1 37 2656 1 37 2657 1 37 2658 1 37 2659 1 37 2660 1 37 2661 1 37 2662 1 37 2663 1 37 2664 1 37 2665 1 37 2666 1 37 2667 1 37 2668 1 37 2669 1 37 2670 1 37 2671 1 37 2672 1 37 2673 1 37 2674 1 37 2675 1 37 2676 1 37 2677 1 37 2678 1 37 2679 1 37 2680 1 37 2681 1 37 2682 1 37 2683 1 37 2684 1 37 2685 1 37 2686 1 37 2687 1 37 2688 1 37 2689 1 37 2690 1 37 2691 1 37 2692 1 37 2693 1 37 2694 1 37 2695 1 37 2696 1 37 2697 1 37 2698 1 37 2699 1 37 2700 1 37 2701 1 37 2702 1 37 2703 1 37 2704 1 37 2705 1 37 2706 1 37 2707 1 37 2708 1 37 2709 1 37 2710 1 37 2711 1 37 2712 1 37 2713 1 37 2714 1 37 2715 1 37 2716 1 37 2717 1 37 2718 1 37 2719 1 37 2720 1 37 2721 1 37 2722 1 37 2723 1 37 2724 1 37 2725 1 37 2726 1 37 2727 1 37 2728 1 37 2729 1 37 2730 1 37 2731 1 37 2732 1 37 2733 1 37 2734 1 37 2735 1 37 2736 1 37 2737 1 37 2738 1 37 2739 1 37 2740 1 37 2741 1 37 2742 1 37 2743 1 37 2744 1 37 2745 1 37 2746 1 37 2747 1 37 2748 1 37 2749 1 37 2750 1 37 2751 1 37 2752 1 37 2753 1 37 2754 1 37 2755 1 37 2756 1 37 2757 1 37 2758 1 37 2759 1 37 2760 1 37 2761 1 37 2762 1 37 2763 1 37 2764 1 37 2765 1 37 2766 1 37 3103 1 37 3104 1 37 3105 1 37 3106 1 37 3107 1 37 3108 1 37 3109 1 37 3110 1 37 3111 1 37 3112 1 37 3113 1 37 3114 1 37 3115 1 37 3116 1 37 3117 1 37 3118 1 37 3119 1 37 3120 1 37 3121 1 37 3122 1 37 3123 1 37 3124 1 37 3125 1 37 3126 1 37 3127 1 37 3128 1 37 3129 1 37 3130 1 37 3131 1 37 3132 1 37 3133 1 37 3134 1 37 3135 1 37 3136 1 37 3137 1 37 3138 1 37 3139 1 37 3140 1 37 3141 1 37 3142 1 37 3143 1 37 3144 1 37 3145 1 37 3146 1 37 3147 1 37 3148 1 37 3149 1 37 3150 1 37 3151 1 37 3152 1 37 3153 1 37 3154 1 37 3155 1 37 3156 1 37 3157 1 37 3158 1 37 3159 1 37 3160 1 37 3161 1 37 3162 1 37 3163 1 37 3164 1 37 3165 1 37 3166 1 37 3167 1 37 3168 1 37 3169 1 37 3170 1 37 3171 1 37 3172 1 37 3173 1 37 3174 1 37 3175 1 37 3176 1 37 3177 1 37 3178 1 37 3179 1 37 3180 1 37 3181 1 37 3182 1 37 3183 1 37 3184 1 37 3185 1 37 3186 1 37 3187 1 37 3188 1 37 3189 1 37 3190 1 37 3191 1 37 3192 1 37 3193 1 37 3194 1 37 3195 1 37 3196 1 37 3197 1 37 3198 1 37 3199 1 37 3200 1 37 3201 1 37 3202 1 37 3203 1 37 3204 1 37 3205 1 37 3206 1 37 3207 1 37 3208 1 37 3209 1 37 3210 1 37 3211 1 37 3212 1 37 3213 1 37 3214 1 37 3215 1 37 3216 1 37 3217 1 37 3218 1 37 3219 1 37 3220 1 37 3221 1 37 3222 1 37 3223 1 37 3224 1 37 3225 1 37 3226 1 37 3227 1 37 3228 1 38 1 1 38 2 1 38 3 1 38 4 1 38 5 1 38 6 1 38 7 1 38 8 1 38 37 1 38 38 1 38 39 1 38 40 1 38 41 1 38 42 1 38 43 1 38 44 1 38 45 1 38 46 1 38 47 1 38 48 1 38 49 1 38 50 1 38 51 1 38 52 1 38 53 1 38 54 1 38 55 1 38 56 1 38 57 1 38 58 1 38 59 1 38 60 1 38 61 1 38 62 1 38 63 1 38 64 1 38 331 1 38 332 1 38 333 1 38 334 1 38 335 1 38 336 1 38 337 1 38 338 1 38 339 1 38 340 1 38 341 1 38 342 1 38 343 1 38 344 1 38 345 1 38 346 1 38 347 1 38 348 1 38 349 1 38 350 1 38 351 1 38 352 1 38 353 1 38 354 1 38 355 1 38 356 1 38 357 1 38 358 1 38 415 1 38 416 1 38 417 1 38 418 1 38 419 1 38 420 1 38 421 1 38 422 1 38 423 1 38 424 1 38 425 1 38 426 1 38 427 1 38 428 1 38 429 1 38 430 1 38 431 1 38 432 1 38 433 1 38 434 1 38 435 1 38 436 1 38 437 1 38 438 1 38 439 1 38 440 1 38 441 1 38 442 1 38 443 1 38 444 1 38 445 1 38 446 1 38 447 1 38 448 1 38 449 1 38 450 1 38 451 1 38 452 1 38 453 1 38 454 1 38 455 1 38 456 1 38 457 1 38 458 1 38 459 1 38 460 1 38 461 1 38 462 1 38 463 1 38 464 1 38 465 1 38 466 1 38 467 1 38 468 1 38 469 1 38 470 1 38 793 1 38 794 1 38 795 1 38 796 1 38 797 1 38 798 1 38 799 1 38 800 1 38 801 1 38 802 1 38 803 1 38 804 1 38 805 1 38 806 1 38 807 1 38 808 1 38 809 1 38 810 1 38 811 1 38 812 1 38 813 1 38 814 1 38 815 1 38 816 1 38 817 1 38 818 1 38 819 1 38 820 1 38 877 1 38 878 1 38 879 1 38 880 1 38 881 1 38 882 1 38 883 1 38 884 1 38 885 1 38 886 1 38 887 1 38 888 1 38 889 1 38 890 1 38 891 1 38 892 1 38 893 1 38 894 1 38 895 1 38 896 1 38 897 1 38 898 1 38 899 1 38 900 1 38 901 1 38 902 1 38 903 1 38 904 1 38 905 1 38 906 1 38 907 1 38 908 1 38 909 1 38 910 1 38 911 1 38 912 1 38 913 1 38 914 1 38 915 1 38 916 1 38 917 1 38 918 1 38 919 1 38 920 1 38 921 1 38 922 1 38 923 1 38 924 1 38 925 1 38 926 1 38 927 1 38 928 1 38 929 1 38 930 1 38 931 1 38 932 1 38 1255 1 38 1256 1 38 1257 1 38 1258 1 38 1259 1 38 1260 1 38 1261 1 38 1262 1 38 1263 1 38 1264 1 38 1265 1 38 1266 1 38 1267 1 38 1268 1 38 1269 1 38 1270 1 38 1271 1 38 1272 1 38 1273 1 38 1274 1 38 1275 1 38 1276 1 38 1277 1 38 1278 1 38 1279 1 38 1280 1 38 1281 1 38 1282 1 38 1283 1 38 1284 1 38 1285 1 38 1286 1 38 1287 1 38 1288 1 38 1289 1 38 1290 1 38 1291 1 38 1292 1 38 1293 1 38 1294 1 38 1295 1 38 1296 1 38 1297 1 38 1298 1 38 1299 1 38 1300 1 38 1301 1 38 1302 1 38 1303 1 38 1304 1 38 1305 1 38 1306 1 38 1307 1 38 1308 1 38 1309 1 38 1310 1 38 1381 1 38 1382 1 38 1383 1 38 1384 1 38 1385 1 38 1386 1 38 1387 1 38 1388 1 38 1389 1 38 1390 1 38 1391 1 38 1392 1 38 1393 1 38 1394 1 38 1395 1 38 1396 1 38 1397 1 38 1398 1 38 1399 1 38 1400 1 38 1401 1 38 1402 1 38 1403 1 38 1404 1 38 1405 1 38 1406 1 38 1407 1 38 1408 1 38 1409 1 38 1410 1 38 1411 1 38 1412 1 38 1413 1 38 1414 1 38 1415 1 38 1416 1 38 1417 1 38 1418 1 38 1419 1 38 1420 1 38 1421 1 38 1422 1 38 1423 1 38 1424 1 38 1425 1 38 1426 1 38 1427 1 38 1428 1 38 1429 1 38 1430 1 38 1431 1 38 1432 1 38 1433 1 38 1434 1 38 1435 1 38 1436 1 38 1437 1 38 1438 1 38 1439 1 38 1440 1 38 1441 1 38 1442 1 38 1443 1 38 1444 1 38 1445 1 38 1446 1 38 1447 1 38 1448 1 38 1449 1 38 1450 1 38 1717 1 38 1718 1 38 1719 1 38 1720 1 38 1721 1 38 1722 1 38 1723 1 38 1724 1 38 1725 1 38 1726 1 38 1727 1 38 1728 1 38 1729 1 38 1730 1 38 1731 1 38 1732 1 38 1733 1 38 1734 1 38 1735 1 38 1736 1 38 1737 1 38 1738 1 38 1739 1 38 1740 1 38 1741 1 38 1742 1 38 1743 1 38 1744 1 38 1801 1 38 1802 1 38 1803 1 38 1804 1 38 1805 1 38 1806 1 38 1807 1 38 1808 1 38 1809 1 38 1810 1 38 1811 1 38 1812 1 38 1813 1 38 1814 1 38 1815 1 38 1816 1 38 1817 1 38 1818 1 38 1819 1 38 1820 1 38 1821 1 38 1822 1 38 1823 1 38 1824 1 38 1825 1 38 1826 1 38 1827 1 38 1828 1 38 1829 1 38 1830 1 38 1831 1 38 1832 1 38 1833 1 38 1834 1 38 1835 1 38 1836 1 38 1837 1 38 1838 1 38 1839 1 38 1840 1 38 1841 1 38 1842 1 38 1843 1 38 1844 1 38 1845 1 38 1846 1 38 1847 1 38 1848 1 38 1849 1 38 1850 1 38 1851 1 38 1852 1 38 1853 1 38 1854 1 38 1855 1 38 1856 1 38 2179 1 38 2180 1 38 2181 1 38 2182 1 38 2183 1 38 2184 1 38 2185 1 38 2186 1 38 2187 1 38 2188 1 38 2189 1 38 2190 1 38 2191 1 38 2192 1 38 2193 1 38 2194 1 38 2195 1 38 2196 1 38 2197 1 38 2198 1 38 2199 1 38 2200 1 38 2201 1 38 2202 1 38 2203 1 38 2204 1 38 2205 1 38 2206 1 38 2207 1 38 2208 1 38 2209 1 38 2210 1 38 2211 1 38 2212 1 38 2213 1 38 2214 1 38 2215 1 38 2216 1 38 2217 1 38 2218 1 38 2219 1 38 2220 1 38 2221 1 38 2222 1 38 2223 1 38 2224 1 38 2225 1 38 2226 1 38 2227 1 38 2228 1 38 2229 1 38 2230 1 38 2231 1 38 2232 1 38 2233 1 38 2234 1 38 2305 1 38 2306 1 38 2307 1 38 2308 1 38 2309 1 38 2310 1 38 2311 1 38 2312 1 38 2313 1 38 2314 1 38 2315 1 38 2316 1 38 2317 1 38 2318 1 38 2319 1 38 2320 1 38 2321 1 38 2322 1 38 2323 1 38 2324 1 38 2325 1 38 2326 1 38 2327 1 38 2328 1 38 2329 1 38 2330 1 38 2331 1 38 2332 1 38 2333 1 38 2334 1 38 2335 1 38 2336 1 38 2337 1 38 2338 1 38 2339 1 38 2340 1 38 2341 1 38 2342 1 38 2343 1 38 2344 1 38 2345 1 38 2346 1 38 2347 1 38 2348 1 38 2349 1 38 2350 1 38 2351 1 38 2352 1 38 2353 1 38 2354 1 38 2355 1 38 2356 1 38 2357 1 38 2358 1 38 2359 1 38 2360 1 38 2361 1 38 2362 1 38 2363 1 38 2364 1 38 2365 1 38 2366 1 38 2367 1 38 2368 1 38 2369 1 38 2370 1 38 2371 1 38 2372 1 38 2373 1 38 2374 1 38 2641 1 38 2642 1 38 2643 1 38 2644 1 38 2645 1 38 2646 1 38 2647 1 38 2648 1 38 2649 1 38 2650 1 38 2651 1 38 2652 1 38 2653 1 38 2654 1 38 2655 1 38 2656 1 38 2657 1 38 2658 1 38 2659 1 38 2660 1 38 2661 1 38 2662 1 38 2663 1 38 2664 1 38 2665 1 38 2666 1 38 2667 1 38 2668 1 38 2669 1 38 2670 1 38 2671 1 38 2672 1 38 2673 1 38 2674 1 38 2675 1 38 2676 1 38 2677 1 38 2678 1 38 2679 1 38 2680 1 38 2681 1 38 2682 1 38 2683 1 38 2684 1 38 2685 1 38 2686 1 38 2687 1 38 2688 1 38 2689 1 38 2690 1 38 2691 1 38 2692 1 38 2693 1 38 2694 1 38 2695 1 38 2696 1 38 2767 1 38 2768 1 38 2769 1 38 2770 1 38 2771 1 38 2772 1 38 2773 1 38 2774 1 38 2775 1 38 2776 1 38 2777 1 38 2778 1 38 2779 1 38 2780 1 38 2781 1 38 2782 1 38 2783 1 38 2784 1 38 2785 1 38 2786 1 38 2787 1 38 2788 1 38 2789 1 38 2790 1 38 2791 1 38 2792 1 38 2793 1 38 2794 1 38 2795 1 38 2796 1 38 2797 1 38 2798 1 38 2799 1 38 2800 1 38 2801 1 38 2802 1 38 2803 1 38 2804 1 38 2805 1 38 2806 1 38 2807 1 38 2808 1 38 2809 1 38 2810 1 38 2811 1 38 2812 1 38 2813 1 38 2814 1 38 2815 1 38 2816 1 38 2817 1 38 2818 1 38 2819 1 38 2820 1 38 2821 1 38 2822 1 38 2823 1 38 2824 1 38 2825 1 38 2826 1 38 2827 1 38 2828 1 38 2829 1 38 2830 1 38 2831 1 38 2832 1 38 2833 1 38 2834 1 38 2835 1 38 2836 1 38 3103 1 38 3104 1 38 3105 1 38 3106 1 38 3107 1 38 3108 1 38 3109 1 38 3110 1 38 3111 1 38 3112 1 38 3113 1 38 3114 1 38 3115 1 38 3116 1 38 3117 1 38 3118 1 38 3119 1 38 3120 1 38 3121 1 38 3122 1 38 3123 1 38 3124 1 38 3125 1 38 3126 1 38 3127 1 38 3128 1 38 3129 1 38 3130 1 38 3131 1 38 3132 1 38 3133 1 38 3134 1 38 3135 1 38 3136 1 38 3137 1 38 3138 1 38 3139 1 38 3140 1 38 3141 1 38 3142 1 38 3143 1 38 3144 1 38 3145 1 38 3146 1 38 3147 1 38 3148 1 38 3149 1 38 3150 1 38 3151 1 38 3152 1 38 3153 1 38 3154 1 38 3155 1 38 3156 1 38 3157 1 38 3158 1 38 3159 1 38 3160 1 38 3161 1 38 3162 1 38 3163 1 38 3164 1 38 3165 1 38 3166 1 38 3167 1 38 3168 1 38 3169 1 38 3170 1 38 3171 1 38 3172 1 38 3229 1 38 3230 1 38 3231 1 38 3232 1 38 3233 1 38 3234 1 38 3235 1 38 3236 1 38 3237 1 38 3238 1 38 3239 1 38 3240 1 38 3241 1 38 3242 1 38 3243 1 38 3244 1 38 3245 1 38 3246 1 38 3247 1 38 3248 1 38 3249 1 38 3250 1 38 3251 1 38 3252 1 38 3253 1 38 3254 1 38 3255 1 38 3256 1 38 3257 1 38 3258 1 38 3259 1 38 3260 1 38 3261 1 38 3262 1 38 3263 1 38 3264 1 38 3265 1 38 3266 1 38 3267 1 38 3268 1 38 3269 1 38 3270 1 38 3271 1 38 3272 1 38 3273 1 38 3274 1 38 3275 1 38 3276 1 38 3277 1 38 3278 1 38 3279 1 38 3280 1 38 3281 1 38 3282 1 38 3283 1 38 3284 1 39 1 1 39 9 1 39 10 1 39 11 1 39 12 1 39 13 1 39 14 1 39 15 1 39 37 1 39 38 1 39 39 1 39 40 1 39 41 1 39 42 1 39 43 1 39 65 1 39 66 1 39 67 1 39 68 1 39 69 1 39 70 1 39 71 1 39 72 1 39 73 1 39 74 1 39 75 1 39 76 1 39 77 1 39 78 1 39 79 1 39 80 1 39 81 1 39 82 1 39 83 1 39 84 1 39 85 1 39 331 1 39 332 1 39 333 1 39 334 1 39 335 1 39 336 1 39 337 1 39 359 1 39 360 1 39 361 1 39 362 1 39 363 1 39 364 1 39 365 1 39 366 1 39 367 1 39 368 1 39 369 1 39 370 1 39 371 1 39 372 1 39 373 1 39 374 1 39 375 1 39 376 1 39 377 1 39 378 1 39 379 1 39 415 1 39 416 1 39 417 1 39 418 1 39 419 1 39 420 1 39 421 1 39 422 1 39 423 1 39 424 1 39 425 1 39 426 1 39 427 1 39 428 1 39 429 1 39 430 1 39 431 1 39 432 1 39 433 1 39 434 1 39 435 1 39 471 1 39 472 1 39 473 1 39 474 1 39 475 1 39 476 1 39 477 1 39 478 1 39 479 1 39 480 1 39 481 1 39 482 1 39 483 1 39 484 1 39 485 1 39 486 1 39 487 1 39 488 1 39 489 1 39 490 1 39 491 1 39 492 1 39 493 1 39 494 1 39 495 1 39 496 1 39 497 1 39 498 1 39 499 1 39 500 1 39 501 1 39 502 1 39 503 1 39 504 1 39 505 1 39 793 1 39 794 1 39 795 1 39 796 1 39 797 1 39 798 1 39 799 1 39 821 1 39 822 1 39 823 1 39 824 1 39 825 1 39 826 1 39 827 1 39 828 1 39 829 1 39 830 1 39 831 1 39 832 1 39 833 1 39 834 1 39 835 1 39 836 1 39 837 1 39 838 1 39 839 1 39 840 1 39 841 1 39 877 1 39 878 1 39 879 1 39 880 1 39 881 1 39 882 1 39 883 1 39 884 1 39 885 1 39 886 1 39 887 1 39 888 1 39 889 1 39 890 1 39 891 1 39 892 1 39 893 1 39 894 1 39 895 1 39 896 1 39 897 1 39 933 1 39 934 1 39 935 1 39 936 1 39 937 1 39 938 1 39 939 1 39 940 1 39 941 1 39 942 1 39 943 1 39 944 1 39 945 1 39 946 1 39 947 1 39 948 1 39 949 1 39 950 1 39 951 1 39 952 1 39 953 1 39 954 1 39 955 1 39 956 1 39 957 1 39 958 1 39 959 1 39 960 1 39 961 1 39 962 1 39 963 1 39 964 1 39 965 1 39 966 1 39 967 1 39 1255 1 39 1256 1 39 1257 1 39 1258 1 39 1259 1 39 1260 1 39 1261 1 39 1262 1 39 1263 1 39 1264 1 39 1265 1 39 1266 1 39 1267 1 39 1268 1 39 1269 1 39 1270 1 39 1271 1 39 1272 1 39 1273 1 39 1274 1 39 1275 1 39 1311 1 39 1312 1 39 1313 1 39 1314 1 39 1315 1 39 1316 1 39 1317 1 39 1318 1 39 1319 1 39 1320 1 39 1321 1 39 1322 1 39 1323 1 39 1324 1 39 1325 1 39 1326 1 39 1327 1 39 1328 1 39 1329 1 39 1330 1 39 1331 1 39 1332 1 39 1333 1 39 1334 1 39 1335 1 39 1336 1 39 1337 1 39 1338 1 39 1339 1 39 1340 1 39 1341 1 39 1342 1 39 1343 1 39 1344 1 39 1345 1 39 1381 1 39 1382 1 39 1383 1 39 1384 1 39 1385 1 39 1386 1 39 1387 1 39 1388 1 39 1389 1 39 1390 1 39 1391 1 39 1392 1 39 1393 1 39 1394 1 39 1395 1 39 1396 1 39 1397 1 39 1398 1 39 1399 1 39 1400 1 39 1401 1 39 1402 1 39 1403 1 39 1404 1 39 1405 1 39 1406 1 39 1407 1 39 1408 1 39 1409 1 39 1410 1 39 1411 1 39 1412 1 39 1413 1 39 1414 1 39 1415 1 39 1451 1 39 1452 1 39 1453 1 39 1454 1 39 1455 1 39 1456 1 39 1457 1 39 1458 1 39 1459 1 39 1460 1 39 1461 1 39 1462 1 39 1463 1 39 1464 1 39 1465 1 39 1466 1 39 1467 1 39 1468 1 39 1469 1 39 1470 1 39 1471 1 39 1472 1 39 1473 1 39 1474 1 39 1475 1 39 1476 1 39 1477 1 39 1478 1 39 1479 1 39 1480 1 39 1481 1 39 1482 1 39 1483 1 39 1484 1 39 1485 1 39 1717 1 39 1718 1 39 1719 1 39 1720 1 39 1721 1 39 1722 1 39 1723 1 39 1745 1 39 1746 1 39 1747 1 39 1748 1 39 1749 1 39 1750 1 39 1751 1 39 1752 1 39 1753 1 39 1754 1 39 1755 1 39 1756 1 39 1757 1 39 1758 1 39 1759 1 39 1760 1 39 1761 1 39 1762 1 39 1763 1 39 1764 1 39 1765 1 39 1801 1 39 1802 1 39 1803 1 39 1804 1 39 1805 1 39 1806 1 39 1807 1 39 1808 1 39 1809 1 39 1810 1 39 1811 1 39 1812 1 39 1813 1 39 1814 1 39 1815 1 39 1816 1 39 1817 1 39 1818 1 39 1819 1 39 1820 1 39 1821 1 39 1857 1 39 1858 1 39 1859 1 39 1860 1 39 1861 1 39 1862 1 39 1863 1 39 1864 1 39 1865 1 39 1866 1 39 1867 1 39 1868 1 39 1869 1 39 1870 1 39 1871 1 39 1872 1 39 1873 1 39 1874 1 39 1875 1 39 1876 1 39 1877 1 39 1878 1 39 1879 1 39 1880 1 39 1881 1 39 1882 1 39 1883 1 39 1884 1 39 1885 1 39 1886 1 39 1887 1 39 1888 1 39 1889 1 39 1890 1 39 1891 1 39 2179 1 39 2180 1 39 2181 1 39 2182 1 39 2183 1 39 2184 1 39 2185 1 39 2186 1 39 2187 1 39 2188 1 39 2189 1 39 2190 1 39 2191 1 39 2192 1 39 2193 1 39 2194 1 39 2195 1 39 2196 1 39 2197 1 39 2198 1 39 2199 1 39 2235 1 39 2236 1 39 2237 1 39 2238 1 39 2239 1 39 2240 1 39 2241 1 39 2242 1 39 2243 1 39 2244 1 39 2245 1 39 2246 1 39 2247 1 39 2248 1 39 2249 1 39 2250 1 39 2251 1 39 2252 1 39 2253 1 39 2254 1 39 2255 1 39 2256 1 39 2257 1 39 2258 1 39 2259 1 39 2260 1 39 2261 1 39 2262 1 39 2263 1 39 2264 1 39 2265 1 39 2266 1 39 2267 1 39 2268 1 39 2269 1 39 2305 1 39 2306 1 39 2307 1 39 2308 1 39 2309 1 39 2310 1 39 2311 1 39 2312 1 39 2313 1 39 2314 1 39 2315 1 39 2316 1 39 2317 1 39 2318 1 39 2319 1 39 2320 1 39 2321 1 39 2322 1 39 2323 1 39 2324 1 39 2325 1 39 2326 1 39 2327 1 39 2328 1 39 2329 1 39 2330 1 39 2331 1 39 2332 1 39 2333 1 39 2334 1 39 2335 1 39 2336 1 39 2337 1 39 2338 1 39 2339 1 39 2375 1 39 2376 1 39 2377 1 39 2378 1 39 2379 1 39 2380 1 39 2381 1 39 2382 1 39 2383 1 39 2384 1 39 2385 1 39 2386 1 39 2387 1 39 2388 1 39 2389 1 39 2390 1 39 2391 1 39 2392 1 39 2393 1 39 2394 1 39 2395 1 39 2396 1 39 2397 1 39 2398 1 39 2399 1 39 2400 1 39 2401 1 39 2402 1 39 2403 1 39 2404 1 39 2405 1 39 2406 1 39 2407 1 39 2408 1 39 2409 1 39 2641 1 39 2642 1 39 2643 1 39 2644 1 39 2645 1 39 2646 1 39 2647 1 39 2648 1 39 2649 1 39 2650 1 39 2651 1 39 2652 1 39 2653 1 39 2654 1 39 2655 1 39 2656 1 39 2657 1 39 2658 1 39 2659 1 39 2660 1 39 2661 1 39 2697 1 39 2698 1 39 2699 1 39 2700 1 39 2701 1 39 2702 1 39 2703 1 39 2704 1 39 2705 1 39 2706 1 39 2707 1 39 2708 1 39 2709 1 39 2710 1 39 2711 1 39 2712 1 39 2713 1 39 2714 1 39 2715 1 39 2716 1 39 2717 1 39 2718 1 39 2719 1 39 2720 1 39 2721 1 39 2722 1 39 2723 1 39 2724 1 39 2725 1 39 2726 1 39 2727 1 39 2728 1 39 2729 1 39 2730 1 39 2731 1 39 2767 1 39 2768 1 39 2769 1 39 2770 1 39 2771 1 39 2772 1 39 2773 1 39 2774 1 39 2775 1 39 2776 1 39 2777 1 39 2778 1 39 2779 1 39 2780 1 39 2781 1 39 2782 1 39 2783 1 39 2784 1 39 2785 1 39 2786 1 39 2787 1 39 2788 1 39 2789 1 39 2790 1 39 2791 1 39 2792 1 39 2793 1 39 2794 1 39 2795 1 39 2796 1 39 2797 1 39 2798 1 39 2799 1 39 2800 1 39 2801 1 39 2837 1 39 2838 1 39 2839 1 39 2840 1 39 2841 1 39 2842 1 39 2843 1 39 2844 1 39 2845 1 39 2846 1 39 2847 1 39 2848 1 39 2849 1 39 2850 1 39 2851 1 39 2852 1 39 2853 1 39 2854 1 39 2855 1 39 2856 1 39 2857 1 39 2858 1 39 2859 1 39 2860 1 39 2861 1 39 2862 1 39 2863 1 39 2864 1 39 2865 1 39 2866 1 39 2867 1 39 2868 1 39 2869 1 39 2870 1 39 2871 1 39 3103 1 39 3104 1 39 3105 1 39 3106 1 39 3107 1 39 3108 1 39 3109 1 39 3110 1 39 3111 1 39 3112 1 39 3113 1 39 3114 1 39 3115 1 39 3116 1 39 3117 1 39 3118 1 39 3119 1 39 3120 1 39 3121 1 39 3122 1 39 3123 1 39 3124 1 39 3125 1 39 3126 1 39 3127 1 39 3128 1 39 3129 1 39 3130 1 39 3131 1 39 3132 1 39 3133 1 39 3134 1 39 3135 1 39 3136 1 39 3137 1 39 3173 1 39 3174 1 39 3175 1 39 3176 1 39 3177 1 39 3178 1 39 3179 1 39 3180 1 39 3181 1 39 3182 1 39 3183 1 39 3184 1 39 3185 1 39 3186 1 39 3187 1 39 3188 1 39 3189 1 39 3190 1 39 3191 1 39 3192 1 39 3193 1 39 3194 1 39 3195 1 39 3196 1 39 3197 1 39 3198 1 39 3199 1 39 3200 1 39 3201 1 39 3202 1 39 3203 1 39 3204 1 39 3205 1 39 3206 1 39 3207 1 39 3229 1 39 3230 1 39 3231 1 39 3232 1 39 3233 1 39 3234 1 39 3235 1 39 3236 1 39 3237 1 39 3238 1 39 3239 1 39 3240 1 39 3241 1 39 3242 1 39 3243 1 39 3244 1 39 3245 1 39 3246 1 39 3247 1 39 3248 1 39 3249 1 39 3250 1 39 3251 1 39 3252 1 39 3253 1 39 3254 1 39 3255 1 39 3256 1 39 3257 1 39 3258 1 39 3259 1 39 3260 1 39 3261 1 39 3262 1 39 3263 1 39 3285 1 39 3286 1 39 3287 1 39 3288 1 39 3289 1 39 3290 1 39 3291 1 39 3292 1 39 3293 1 39 3294 1 39 3295 1 39 3296 1 39 3297 1 39 3298 1 39 3299 1 39 3300 1 39 3301 1 39 3302 1 39 3303 1 39 3304 1 39 3305 1 40 2 1 40 9 1 40 16 1 40 17 1 40 18 1 40 19 1 40 20 1 40 21 1 40 37 1 40 44 1 40 45 1 40 46 1 40 47 1 40 48 1 40 49 1 40 65 1 40 66 1 40 67 1 40 68 1 40 69 1 40 70 1 40 86 1 40 87 1 40 88 1 40 89 1 40 90 1 40 91 1 40 92 1 40 93 1 40 94 1 40 95 1 40 96 1 40 97 1 40 98 1 40 99 1 40 100 1 40 331 1 40 338 1 40 339 1 40 340 1 40 341 1 40 342 1 40 343 1 40 359 1 40 360 1 40 361 1 40 362 1 40 363 1 40 364 1 40 380 1 40 381 1 40 382 1 40 383 1 40 384 1 40 385 1 40 386 1 40 387 1 40 388 1 40 389 1 40 390 1 40 391 1 40 392 1 40 393 1 40 394 1 40 415 1 40 416 1 40 417 1 40 418 1 40 419 1 40 420 1 40 436 1 40 437 1 40 438 1 40 439 1 40 440 1 40 441 1 40 442 1 40 443 1 40 444 1 40 445 1 40 446 1 40 447 1 40 448 1 40 449 1 40 450 1 40 471 1 40 472 1 40 473 1 40 474 1 40 475 1 40 476 1 40 477 1 40 478 1 40 479 1 40 480 1 40 481 1 40 482 1 40 483 1 40 484 1 40 485 1 40 506 1 40 507 1 40 508 1 40 509 1 40 510 1 40 511 1 40 512 1 40 513 1 40 514 1 40 515 1 40 516 1 40 517 1 40 518 1 40 519 1 40 520 1 40 521 1 40 522 1 40 523 1 40 524 1 40 525 1 40 793 1 40 800 1 40 801 1 40 802 1 40 803 1 40 804 1 40 805 1 40 821 1 40 822 1 40 823 1 40 824 1 40 825 1 40 826 1 40 842 1 40 843 1 40 844 1 40 845 1 40 846 1 40 847 1 40 848 1 40 849 1 40 850 1 40 851 1 40 852 1 40 853 1 40 854 1 40 855 1 40 856 1 40 877 1 40 878 1 40 879 1 40 880 1 40 881 1 40 882 1 40 898 1 40 899 1 40 900 1 40 901 1 40 902 1 40 903 1 40 904 1 40 905 1 40 906 1 40 907 1 40 908 1 40 909 1 40 910 1 40 911 1 40 912 1 40 933 1 40 934 1 40 935 1 40 936 1 40 937 1 40 938 1 40 939 1 40 940 1 40 941 1 40 942 1 40 943 1 40 944 1 40 945 1 40 946 1 40 947 1 40 968 1 40 969 1 40 970 1 40 971 1 40 972 1 40 973 1 40 974 1 40 975 1 40 976 1 40 977 1 40 978 1 40 979 1 40 980 1 40 981 1 40 982 1 40 983 1 40 984 1 40 985 1 40 986 1 40 987 1 40 1255 1 40 1256 1 40 1257 1 40 1258 1 40 1259 1 40 1260 1 40 1276 1 40 1277 1 40 1278 1 40 1279 1 40 1280 1 40 1281 1 40 1282 1 40 1283 1 40 1284 1 40 1285 1 40 1286 1 40 1287 1 40 1288 1 40 1289 1 40 1290 1 40 1311 1 40 1312 1 40 1313 1 40 1314 1 40 1315 1 40 1316 1 40 1317 1 40 1318 1 40 1319 1 40 1320 1 40 1321 1 40 1322 1 40 1323 1 40 1324 1 40 1325 1 40 1346 1 40 1347 1 40 1348 1 40 1349 1 40 1350 1 40 1351 1 40 1352 1 40 1353 1 40 1354 1 40 1355 1 40 1356 1 40 1357 1 40 1358 1 40 1359 1 40 1360 1 40 1361 1 40 1362 1 40 1363 1 40 1364 1 40 1365 1 40 1381 1 40 1382 1 40 1383 1 40 1384 1 40 1385 1 40 1386 1 40 1387 1 40 1388 1 40 1389 1 40 1390 1 40 1391 1 40 1392 1 40 1393 1 40 1394 1 40 1395 1 40 1416 1 40 1417 1 40 1418 1 40 1419 1 40 1420 1 40 1421 1 40 1422 1 40 1423 1 40 1424 1 40 1425 1 40 1426 1 40 1427 1 40 1428 1 40 1429 1 40 1430 1 40 1431 1 40 1432 1 40 1433 1 40 1434 1 40 1435 1 40 1451 1 40 1452 1 40 1453 1 40 1454 1 40 1455 1 40 1456 1 40 1457 1 40 1458 1 40 1459 1 40 1460 1 40 1461 1 40 1462 1 40 1463 1 40 1464 1 40 1465 1 40 1466 1 40 1467 1 40 1468 1 40 1469 1 40 1470 1 40 1486 1 40 1487 1 40 1488 1 40 1489 1 40 1490 1 40 1491 1 40 1492 1 40 1493 1 40 1494 1 40 1495 1 40 1496 1 40 1497 1 40 1498 1 40 1499 1 40 1500 1 40 1717 1 40 1724 1 40 1725 1 40 1726 1 40 1727 1 40 1728 1 40 1729 1 40 1745 1 40 1746 1 40 1747 1 40 1748 1 40 1749 1 40 1750 1 40 1766 1 40 1767 1 40 1768 1 40 1769 1 40 1770 1 40 1771 1 40 1772 1 40 1773 1 40 1774 1 40 1775 1 40 1776 1 40 1777 1 40 1778 1 40 1779 1 40 1780 1 40 1801 1 40 1802 1 40 1803 1 40 1804 1 40 1805 1 40 1806 1 40 1822 1 40 1823 1 40 1824 1 40 1825 1 40 1826 1 40 1827 1 40 1828 1 40 1829 1 40 1830 1 40 1831 1 40 1832 1 40 1833 1 40 1834 1 40 1835 1 40 1836 1 40 1857 1 40 1858 1 40 1859 1 40 1860 1 40 1861 1 40 1862 1 40 1863 1 40 1864 1 40 1865 1 40 1866 1 40 1867 1 40 1868 1 40 1869 1 40 1870 1 40 1871 1 40 1892 1 40 1893 1 40 1894 1 40 1895 1 40 1896 1 40 1897 1 40 1898 1 40 1899 1 40 1900 1 40 1901 1 40 1902 1 40 1903 1 40 1904 1 40 1905 1 40 1906 1 40 1907 1 40 1908 1 40 1909 1 40 1910 1 40 1911 1 40 2179 1 40 2180 1 40 2181 1 40 2182 1 40 2183 1 40 2184 1 40 2200 1 40 2201 1 40 2202 1 40 2203 1 40 2204 1 40 2205 1 40 2206 1 40 2207 1 40 2208 1 40 2209 1 40 2210 1 40 2211 1 40 2212 1 40 2213 1 40 2214 1 40 2235 1 40 2236 1 40 2237 1 40 2238 1 40 2239 1 40 2240 1 40 2241 1 40 2242 1 40 2243 1 40 2244 1 40 2245 1 40 2246 1 40 2247 1 40 2248 1 40 2249 1 40 2270 1 40 2271 1 40 2272 1 40 2273 1 40 2274 1 40 2275 1 40 2276 1 40 2277 1 40 2278 1 40 2279 1 40 2280 1 40 2281 1 40 2282 1 40 2283 1 40 2284 1 40 2285 1 40 2286 1 40 2287 1 40 2288 1 40 2289 1 40 2305 1 40 2306 1 40 2307 1 40 2308 1 40 2309 1 40 2310 1 40 2311 1 40 2312 1 40 2313 1 40 2314 1 40 2315 1 40 2316 1 40 2317 1 40 2318 1 40 2319 1 40 2340 1 40 2341 1 40 2342 1 40 2343 1 40 2344 1 40 2345 1 40 2346 1 40 2347 1 40 2348 1 40 2349 1 40 2350 1 40 2351 1 40 2352 1 40 2353 1 40 2354 1 40 2355 1 40 2356 1 40 2357 1 40 2358 1 40 2359 1 40 2375 1 40 2376 1 40 2377 1 40 2378 1 40 2379 1 40 2380 1 40 2381 1 40 2382 1 40 2383 1 40 2384 1 40 2385 1 40 2386 1 40 2387 1 40 2388 1 40 2389 1 40 2390 1 40 2391 1 40 2392 1 40 2393 1 40 2394 1 40 2410 1 40 2411 1 40 2412 1 40 2413 1 40 2414 1 40 2415 1 40 2416 1 40 2417 1 40 2418 1 40 2419 1 40 2420 1 40 2421 1 40 2422 1 40 2423 1 40 2424 1 40 2641 1 40 2642 1 40 2643 1 40 2644 1 40 2645 1 40 2646 1 40 2662 1 40 2663 1 40 2664 1 40 2665 1 40 2666 1 40 2667 1 40 2668 1 40 2669 1 40 2670 1 40 2671 1 40 2672 1 40 2673 1 40 2674 1 40 2675 1 40 2676 1 40 2697 1 40 2698 1 40 2699 1 40 2700 1 40 2701 1 40 2702 1 40 2703 1 40 2704 1 40 2705 1 40 2706 1 40 2707 1 40 2708 1 40 2709 1 40 2710 1 40 2711 1 40 2732 1 40 2733 1 40 2734 1 40 2735 1 40 2736 1 40 2737 1 40 2738 1 40 2739 1 40 2740 1 40 2741 1 40 2742 1 40 2743 1 40 2744 1 40 2745 1 40 2746 1 40 2747 1 40 2748 1 40 2749 1 40 2750 1 40 2751 1 40 2767 1 40 2768 1 40 2769 1 40 2770 1 40 2771 1 40 2772 1 40 2773 1 40 2774 1 40 2775 1 40 2776 1 40 2777 1 40 2778 1 40 2779 1 40 2780 1 40 2781 1 40 2802 1 40 2803 1 40 2804 1 40 2805 1 40 2806 1 40 2807 1 40 2808 1 40 2809 1 40 2810 1 40 2811 1 40 2812 1 40 2813 1 40 2814 1 40 2815 1 40 2816 1 40 2817 1 40 2818 1 40 2819 1 40 2820 1 40 2821 1 40 2837 1 40 2838 1 40 2839 1 40 2840 1 40 2841 1 40 2842 1 40 2843 1 40 2844 1 40 2845 1 40 2846 1 40 2847 1 40 2848 1 40 2849 1 40 2850 1 40 2851 1 40 2852 1 40 2853 1 40 2854 1 40 2855 1 40 2856 1 40 2872 1 40 2873 1 40 2874 1 40 2875 1 40 2876 1 40 2877 1 40 2878 1 40 2879 1 40 2880 1 40 2881 1 40 2882 1 40 2883 1 40 2884 1 40 2885 1 40 2886 1 40 3103 1 40 3104 1 40 3105 1 40 3106 1 40 3107 1 40 3108 1 40 3109 1 40 3110 1 40 3111 1 40 3112 1 40 3113 1 40 3114 1 40 3115 1 40 3116 1 40 3117 1 40 3138 1 40 3139 1 40 3140 1 40 3141 1 40 3142 1 40 3143 1 40 3144 1 40 3145 1 40 3146 1 40 3147 1 40 3148 1 40 3149 1 40 3150 1 40 3151 1 40 3152 1 40 3153 1 40 3154 1 40 3155 1 40 3156 1 40 3157 1 40 3173 1 40 3174 1 40 3175 1 40 3176 1 40 3177 1 40 3178 1 40 3179 1 40 3180 1 40 3181 1 40 3182 1 40 3183 1 40 3184 1 40 3185 1 40 3186 1 40 3187 1 40 3188 1 40 3189 1 40 3190 1 40 3191 1 40 3192 1 40 3208 1 40 3209 1 40 3210 1 40 3211 1 40 3212 1 40 3213 1 40 3214 1 40 3215 1 40 3216 1 40 3217 1 40 3218 1 40 3219 1 40 3220 1 40 3221 1 40 3222 1 40 3229 1 40 3230 1 40 3231 1 40 3232 1 40 3233 1 40 3234 1 40 3235 1 40 3236 1 40 3237 1 40 3238 1 40 3239 1 40 3240 1 40 3241 1 40 3242 1 40 3243 1 40 3244 1 40 3245 1 40 3246 1 40 3247 1 40 3248 1 40 3264 1 40 3265 1 40 3266 1 40 3267 1 40 3268 1 40 3269 1 40 3270 1 40 3271 1 40 3272 1 40 3273 1 40 3274 1 40 3275 1 40 3276 1 40 3277 1 40 3278 1 40 3285 1 40 3286 1 40 3287 1 40 3288 1 40 3289 1 40 3290 1 40 3291 1 40 3292 1 40 3293 1 40 3294 1 40 3295 1 40 3296 1 40 3297 1 40 3298 1 40 3299 1 40 3306 1 40 3307 1 40 3308 1 40 3309 1 40 3310 1 40 3311 1 41 3 1 41 10 1 41 16 1 41 22 1 41 23 1 41 24 1 41 25 1 41 26 1 41 38 1 41 44 1 41 50 1 41 51 1 41 52 1 41 53 1 41 54 1 41 65 1 41 71 1 41 72 1 41 73 1 41 74 1 41 75 1 41 86 1 41 87 1 41 88 1 41 89 1 41 90 1 41 101 1 41 102 1 41 103 1 41 104 1 41 105 1 41 106 1 41 107 1 41 108 1 41 109 1 41 110 1 41 332 1 41 338 1 41 344 1 41 345 1 41 346 1 41 347 1 41 348 1 41 359 1 41 365 1 41 366 1 41 367 1 41 368 1 41 369 1 41 380 1 41 381 1 41 382 1 41 383 1 41 384 1 41 395 1 41 396 1 41 397 1 41 398 1 41 399 1 41 400 1 41 401 1 41 402 1 41 403 1 41 404 1 41 415 1 41 421 1 41 422 1 41 423 1 41 424 1 41 425 1 41 436 1 41 437 1 41 438 1 41 439 1 41 440 1 41 451 1 41 452 1 41 453 1 41 454 1 41 455 1 41 456 1 41 457 1 41 458 1 41 459 1 41 460 1 41 471 1 41 472 1 41 473 1 41 474 1 41 475 1 41 486 1 41 487 1 41 488 1 41 489 1 41 490 1 41 491 1 41 492 1 41 493 1 41 494 1 41 495 1 41 506 1 41 507 1 41 508 1 41 509 1 41 510 1 41 511 1 41 512 1 41 513 1 41 514 1 41 515 1 41 526 1 41 527 1 41 528 1 41 529 1 41 530 1 41 531 1 41 532 1 41 533 1 41 534 1 41 535 1 41 794 1 41 800 1 41 806 1 41 807 1 41 808 1 41 809 1 41 810 1 41 821 1 41 827 1 41 828 1 41 829 1 41 830 1 41 831 1 41 842 1 41 843 1 41 844 1 41 845 1 41 846 1 41 857 1 41 858 1 41 859 1 41 860 1 41 861 1 41 862 1 41 863 1 41 864 1 41 865 1 41 866 1 41 877 1 41 883 1 41 884 1 41 885 1 41 886 1 41 887 1 41 898 1 41 899 1 41 900 1 41 901 1 41 902 1 41 913 1 41 914 1 41 915 1 41 916 1 41 917 1 41 918 1 41 919 1 41 920 1 41 921 1 41 922 1 41 933 1 41 934 1 41 935 1 41 936 1 41 937 1 41 948 1 41 949 1 41 950 1 41 951 1 41 952 1 41 953 1 41 954 1 41 955 1 41 956 1 41 957 1 41 968 1 41 969 1 41 970 1 41 971 1 41 972 1 41 973 1 41 974 1 41 975 1 41 976 1 41 977 1 41 988 1 41 989 1 41 990 1 41 991 1 41 992 1 41 993 1 41 994 1 41 995 1 41 996 1 41 997 1 41 1255 1 41 1261 1 41 1262 1 41 1263 1 41 1264 1 41 1265 1 41 1276 1 41 1277 1 41 1278 1 41 1279 1 41 1280 1 41 1291 1 41 1292 1 41 1293 1 41 1294 1 41 1295 1 41 1296 1 41 1297 1 41 1298 1 41 1299 1 41 1300 1 41 1311 1 41 1312 1 41 1313 1 41 1314 1 41 1315 1 41 1326 1 41 1327 1 41 1328 1 41 1329 1 41 1330 1 41 1331 1 41 1332 1 41 1333 1 41 1334 1 41 1335 1 41 1346 1 41 1347 1 41 1348 1 41 1349 1 41 1350 1 41 1351 1 41 1352 1 41 1353 1 41 1354 1 41 1355 1 41 1366 1 41 1367 1 41 1368 1 41 1369 1 41 1370 1 41 1371 1 41 1372 1 41 1373 1 41 1374 1 41 1375 1 41 1381 1 41 1382 1 41 1383 1 41 1384 1 41 1385 1 41 1396 1 41 1397 1 41 1398 1 41 1399 1 41 1400 1 41 1401 1 41 1402 1 41 1403 1 41 1404 1 41 1405 1 41 1416 1 41 1417 1 41 1418 1 41 1419 1 41 1420 1 41 1421 1 41 1422 1 41 1423 1 41 1424 1 41 1425 1 41 1436 1 41 1437 1 41 1438 1 41 1439 1 41 1440 1 41 1441 1 41 1442 1 41 1443 1 41 1444 1 41 1445 1 41 1451 1 41 1452 1 41 1453 1 41 1454 1 41 1455 1 41 1456 1 41 1457 1 41 1458 1 41 1459 1 41 1460 1 41 1471 1 41 1472 1 41 1473 1 41 1474 1 41 1475 1 41 1476 1 41 1477 1 41 1478 1 41 1479 1 41 1480 1 41 1486 1 41 1487 1 41 1488 1 41 1489 1 41 1490 1 41 1491 1 41 1492 1 41 1493 1 41 1494 1 41 1495 1 41 1501 1 41 1502 1 41 1503 1 41 1504 1 41 1505 1 41 1718 1 41 1724 1 41 1730 1 41 1731 1 41 1732 1 41 1733 1 41 1734 1 41 1745 1 41 1751 1 41 1752 1 41 1753 1 41 1754 1 41 1755 1 41 1766 1 41 1767 1 41 1768 1 41 1769 1 41 1770 1 41 1781 1 41 1782 1 41 1783 1 41 1784 1 41 1785 1 41 1786 1 41 1787 1 41 1788 1 41 1789 1 41 1790 1 41 1801 1 41 1807 1 41 1808 1 41 1809 1 41 1810 1 41 1811 1 41 1822 1 41 1823 1 41 1824 1 41 1825 1 41 1826 1 41 1837 1 41 1838 1 41 1839 1 41 1840 1 41 1841 1 41 1842 1 41 1843 1 41 1844 1 41 1845 1 41 1846 1 41 1857 1 41 1858 1 41 1859 1 41 1860 1 41 1861 1 41 1872 1 41 1873 1 41 1874 1 41 1875 1 41 1876 1 41 1877 1 41 1878 1 41 1879 1 41 1880 1 41 1881 1 41 1892 1 41 1893 1 41 1894 1 41 1895 1 41 1896 1 41 1897 1 41 1898 1 41 1899 1 41 1900 1 41 1901 1 41 1912 1 41 1913 1 41 1914 1 41 1915 1 41 1916 1 41 1917 1 41 1918 1 41 1919 1 41 1920 1 41 1921 1 41 2179 1 41 2185 1 41 2186 1 41 2187 1 41 2188 1 41 2189 1 41 2200 1 41 2201 1 41 2202 1 41 2203 1 41 2204 1 41 2215 1 41 2216 1 41 2217 1 41 2218 1 41 2219 1 41 2220 1 41 2221 1 41 2222 1 41 2223 1 41 2224 1 41 2235 1 41 2236 1 41 2237 1 41 2238 1 41 2239 1 41 2250 1 41 2251 1 41 2252 1 41 2253 1 41 2254 1 41 2255 1 41 2256 1 41 2257 1 41 2258 1 41 2259 1 41 2270 1 41 2271 1 41 2272 1 41 2273 1 41 2274 1 41 2275 1 41 2276 1 41 2277 1 41 2278 1 41 2279 1 41 2290 1 41 2291 1 41 2292 1 41 2293 1 41 2294 1 41 2295 1 41 2296 1 41 2297 1 41 2298 1 41 2299 1 41 2305 1 41 2306 1 41 2307 1 41 2308 1 41 2309 1 41 2320 1 41 2321 1 41 2322 1 41 2323 1 41 2324 1 41 2325 1 41 2326 1 41 2327 1 41 2328 1 41 2329 1 41 2340 1 41 2341 1 41 2342 1 41 2343 1 41 2344 1 41 2345 1 41 2346 1 41 2347 1 41 2348 1 41 2349 1 41 2360 1 41 2361 1 41 2362 1 41 2363 1 41 2364 1 41 2365 1 41 2366 1 41 2367 1 41 2368 1 41 2369 1 41 2375 1 41 2376 1 41 2377 1 41 2378 1 41 2379 1 41 2380 1 41 2381 1 41 2382 1 41 2383 1 41 2384 1 41 2395 1 41 2396 1 41 2397 1 41 2398 1 41 2399 1 41 2400 1 41 2401 1 41 2402 1 41 2403 1 41 2404 1 41 2410 1 41 2411 1 41 2412 1 41 2413 1 41 2414 1 41 2415 1 41 2416 1 41 2417 1 41 2418 1 41 2419 1 41 2425 1 41 2426 1 41 2427 1 41 2428 1 41 2429 1 41 2641 1 41 2647 1 41 2648 1 41 2649 1 41 2650 1 41 2651 1 41 2662 1 41 2663 1 41 2664 1 41 2665 1 41 2666 1 41 2677 1 41 2678 1 41 2679 1 41 2680 1 41 2681 1 41 2682 1 41 2683 1 41 2684 1 41 2685 1 41 2686 1 41 2697 1 41 2698 1 41 2699 1 41 2700 1 41 2701 1 41 2712 1 41 2713 1 41 2714 1 41 2715 1 41 2716 1 41 2717 1 41 2718 1 41 2719 1 41 2720 1 41 2721 1 41 2732 1 41 2733 1 41 2734 1 41 2735 1 41 2736 1 41 2737 1 41 2738 1 41 2739 1 41 2740 1 41 2741 1 41 2752 1 41 2753 1 41 2754 1 41 2755 1 41 2756 1 41 2757 1 41 2758 1 41 2759 1 41 2760 1 41 2761 1 41 2767 1 41 2768 1 41 2769 1 41 2770 1 41 2771 1 41 2782 1 41 2783 1 41 2784 1 41 2785 1 41 2786 1 41 2787 1 41 2788 1 41 2789 1 41 2790 1 41 2791 1 41 2802 1 41 2803 1 41 2804 1 41 2805 1 41 2806 1 41 2807 1 41 2808 1 41 2809 1 41 2810 1 41 2811 1 41 2822 1 41 2823 1 41 2824 1 41 2825 1 41 2826 1 41 2827 1 41 2828 1 41 2829 1 41 2830 1 41 2831 1 41 2837 1 41 2838 1 41 2839 1 41 2840 1 41 2841 1 41 2842 1 41 2843 1 41 2844 1 41 2845 1 41 2846 1 41 2857 1 41 2858 1 41 2859 1 41 2860 1 41 2861 1 41 2862 1 41 2863 1 41 2864 1 41 2865 1 41 2866 1 41 2872 1 41 2873 1 41 2874 1 41 2875 1 41 2876 1 41 2877 1 41 2878 1 41 2879 1 41 2880 1 41 2881 1 41 2887 1 41 2888 1 41 2889 1 41 2890 1 41 2891 1 41 3103 1 41 3104 1 41 3105 1 41 3106 1 41 3107 1 41 3118 1 41 3119 1 41 3120 1 41 3121 1 41 3122 1 41 3123 1 41 3124 1 41 3125 1 41 3126 1 41 3127 1 41 3138 1 41 3139 1 41 3140 1 41 3141 1 41 3142 1 41 3143 1 41 3144 1 41 3145 1 41 3146 1 41 3147 1 41 3158 1 41 3159 1 41 3160 1 41 3161 1 41 3162 1 41 3163 1 41 3164 1 41 3165 1 41 3166 1 41 3167 1 41 3173 1 41 3174 1 41 3175 1 41 3176 1 41 3177 1 41 3178 1 41 3179 1 41 3180 1 41 3181 1 41 3182 1 41 3193 1 41 3194 1 41 3195 1 41 3196 1 41 3197 1 41 3198 1 41 3199 1 41 3200 1 41 3201 1 41 3202 1 41 3208 1 41 3209 1 41 3210 1 41 3211 1 41 3212 1 41 3213 1 41 3214 1 41 3215 1 41 3216 1 41 3217 1 41 3223 1 41 3224 1 41 3225 1 41 3226 1 41 3227 1 41 3229 1 41 3230 1 41 3231 1 41 3232 1 41 3233 1 41 3234 1 41 3235 1 41 3236 1 41 3237 1 41 3238 1 41 3249 1 41 3250 1 41 3251 1 41 3252 1 41 3253 1 41 3254 1 41 3255 1 41 3256 1 41 3257 1 41 3258 1 41 3264 1 41 3265 1 41 3266 1 41 3267 1 41 3268 1 41 3269 1 41 3270 1 41 3271 1 41 3272 1 41 3273 1 41 3279 1 41 3280 1 41 3281 1 41 3282 1 41 3283 1 41 3285 1 41 3286 1 41 3287 1 41 3288 1 41 3289 1 41 3290 1 41 3291 1 41 3292 1 41 3293 1 41 3294 1 41 3300 1 41 3301 1 41 3302 1 41 3303 1 41 3304 1 41 3306 1 41 3307 1 41 3308 1 41 3309 1 41 3310 1 41 3312 1 42 4 1 42 11 1 42 17 1 42 22 1 42 27 1 42 28 1 42 29 1 42 30 1 42 39 1 42 45 1 42 50 1 42 55 1 42 56 1 42 57 1 42 58 1 42 66 1 42 71 1 42 76 1 42 77 1 42 78 1 42 79 1 42 86 1 42 91 1 42 92 1 42 93 1 42 94 1 42 101 1 42 102 1 42 103 1 42 104 1 42 111 1 42 112 1 42 113 1 42 114 1 42 115 1 42 116 1 42 333 1 42 339 1 42 344 1 42 349 1 42 350 1 42 351 1 42 352 1 42 360 1 42 365 1 42 370 1 42 371 1 42 372 1 42 373 1 42 380 1 42 385 1 42 386 1 42 387 1 42 388 1 42 395 1 42 396 1 42 397 1 42 398 1 42 405 1 42 406 1 42 407 1 42 408 1 42 409 1 42 410 1 42 416 1 42 421 1 42 426 1 42 427 1 42 428 1 42 429 1 42 436 1 42 441 1 42 442 1 42 443 1 42 444 1 42 451 1 42 452 1 42 453 1 42 454 1 42 461 1 42 462 1 42 463 1 42 464 1 42 465 1 42 466 1 42 471 1 42 476 1 42 477 1 42 478 1 42 479 1 42 486 1 42 487 1 42 488 1 42 489 1 42 496 1 42 497 1 42 498 1 42 499 1 42 500 1 42 501 1 42 506 1 42 507 1 42 508 1 42 509 1 42 516 1 42 517 1 42 518 1 42 519 1 42 520 1 42 521 1 42 526 1 42 527 1 42 528 1 42 529 1 42 530 1 42 531 1 42 536 1 42 537 1 42 538 1 42 539 1 42 795 1 42 801 1 42 806 1 42 811 1 42 812 1 42 813 1 42 814 1 42 822 1 42 827 1 42 832 1 42 833 1 42 834 1 42 835 1 42 842 1 42 847 1 42 848 1 42 849 1 42 850 1 42 857 1 42 858 1 42 859 1 42 860 1 42 867 1 42 868 1 42 869 1 42 870 1 42 871 1 42 872 1 42 878 1 42 883 1 42 888 1 42 889 1 42 890 1 42 891 1 42 898 1 42 903 1 42 904 1 42 905 1 42 906 1 42 913 1 42 914 1 42 915 1 42 916 1 42 923 1 42 924 1 42 925 1 42 926 1 42 927 1 42 928 1 42 933 1 42 938 1 42 939 1 42 940 1 42 941 1 42 948 1 42 949 1 42 950 1 42 951 1 42 958 1 42 959 1 42 960 1 42 961 1 42 962 1 42 963 1 42 968 1 42 969 1 42 970 1 42 971 1 42 978 1 42 979 1 42 980 1 42 981 1 42 982 1 42 983 1 42 988 1 42 989 1 42 990 1 42 991 1 42 992 1 42 993 1 42 998 1 42 999 1 42 1000 1 42 1001 1 42 1256 1 42 1261 1 42 1266 1 42 1267 1 42 1268 1 42 1269 1 42 1276 1 42 1281 1 42 1282 1 42 1283 1 42 1284 1 42 1291 1 42 1292 1 42 1293 1 42 1294 1 42 1301 1 42 1302 1 42 1303 1 42 1304 1 42 1305 1 42 1306 1 42 1311 1 42 1316 1 42 1317 1 42 1318 1 42 1319 1 42 1326 1 42 1327 1 42 1328 1 42 1329 1 42 1336 1 42 1337 1 42 1338 1 42 1339 1 42 1340 1 42 1341 1 42 1346 1 42 1347 1 42 1348 1 42 1349 1 42 1356 1 42 1357 1 42 1358 1 42 1359 1 42 1360 1 42 1361 1 42 1366 1 42 1367 1 42 1368 1 42 1369 1 42 1370 1 42 1371 1 42 1376 1 42 1377 1 42 1378 1 42 1379 1 42 1381 1 42 1386 1 42 1387 1 42 1388 1 42 1389 1 42 1396 1 42 1397 1 42 1398 1 42 1399 1 42 1406 1 42 1407 1 42 1408 1 42 1409 1 42 1410 1 42 1411 1 42 1416 1 42 1417 1 42 1418 1 42 1419 1 42 1426 1 42 1427 1 42 1428 1 42 1429 1 42 1430 1 42 1431 1 42 1436 1 42 1437 1 42 1438 1 42 1439 1 42 1440 1 42 1441 1 42 1446 1 42 1447 1 42 1448 1 42 1449 1 42 1451 1 42 1452 1 42 1453 1 42 1454 1 42 1461 1 42 1462 1 42 1463 1 42 1464 1 42 1465 1 42 1466 1 42 1471 1 42 1472 1 42 1473 1 42 1474 1 42 1475 1 42 1476 1 42 1481 1 42 1482 1 42 1483 1 42 1484 1 42 1486 1 42 1487 1 42 1488 1 42 1489 1 42 1490 1 42 1491 1 42 1496 1 42 1497 1 42 1498 1 42 1499 1 42 1501 1 42 1502 1 42 1503 1 42 1504 1 42 1506 1 42 1719 1 42 1725 1 42 1730 1 42 1735 1 42 1736 1 42 1737 1 42 1738 1 42 1746 1 42 1751 1 42 1756 1 42 1757 1 42 1758 1 42 1759 1 42 1766 1 42 1771 1 42 1772 1 42 1773 1 42 1774 1 42 1781 1 42 1782 1 42 1783 1 42 1784 1 42 1791 1 42 1792 1 42 1793 1 42 1794 1 42 1795 1 42 1796 1 42 1802 1 42 1807 1 42 1812 1 42 1813 1 42 1814 1 42 1815 1 42 1822 1 42 1827 1 42 1828 1 42 1829 1 42 1830 1 42 1837 1 42 1838 1 42 1839 1 42 1840 1 42 1847 1 42 1848 1 42 1849 1 42 1850 1 42 1851 1 42 1852 1 42 1857 1 42 1862 1 42 1863 1 42 1864 1 42 1865 1 42 1872 1 42 1873 1 42 1874 1 42 1875 1 42 1882 1 42 1883 1 42 1884 1 42 1885 1 42 1886 1 42 1887 1 42 1892 1 42 1893 1 42 1894 1 42 1895 1 42 1902 1 42 1903 1 42 1904 1 42 1905 1 42 1906 1 42 1907 1 42 1912 1 42 1913 1 42 1914 1 42 1915 1 42 1916 1 42 1917 1 42 1922 1 42 1923 1 42 1924 1 42 1925 1 42 2180 1 42 2185 1 42 2190 1 42 2191 1 42 2192 1 42 2193 1 42 2200 1 42 2205 1 42 2206 1 42 2207 1 42 2208 1 42 2215 1 42 2216 1 42 2217 1 42 2218 1 42 2225 1 42 2226 1 42 2227 1 42 2228 1 42 2229 1 42 2230 1 42 2235 1 42 2240 1 42 2241 1 42 2242 1 42 2243 1 42 2250 1 42 2251 1 42 2252 1 42 2253 1 42 2260 1 42 2261 1 42 2262 1 42 2263 1 42 2264 1 42 2265 1 42 2270 1 42 2271 1 42 2272 1 42 2273 1 42 2280 1 42 2281 1 42 2282 1 42 2283 1 42 2284 1 42 2285 1 42 2290 1 42 2291 1 42 2292 1 42 2293 1 42 2294 1 42 2295 1 42 2300 1 42 2301 1 42 2302 1 42 2303 1 42 2305 1 42 2310 1 42 2311 1 42 2312 1 42 2313 1 42 2320 1 42 2321 1 42 2322 1 42 2323 1 42 2330 1 42 2331 1 42 2332 1 42 2333 1 42 2334 1 42 2335 1 42 2340 1 42 2341 1 42 2342 1 42 2343 1 42 2350 1 42 2351 1 42 2352 1 42 2353 1 42 2354 1 42 2355 1 42 2360 1 42 2361 1 42 2362 1 42 2363 1 42 2364 1 42 2365 1 42 2370 1 42 2371 1 42 2372 1 42 2373 1 42 2375 1 42 2376 1 42 2377 1 42 2378 1 42 2385 1 42 2386 1 42 2387 1 42 2388 1 42 2389 1 42 2390 1 42 2395 1 42 2396 1 42 2397 1 42 2398 1 42 2399 1 42 2400 1 42 2405 1 42 2406 1 42 2407 1 42 2408 1 42 2410 1 42 2411 1 42 2412 1 42 2413 1 42 2414 1 42 2415 1 42 2420 1 42 2421 1 42 2422 1 42 2423 1 42 2425 1 42 2426 1 42 2427 1 42 2428 1 42 2430 1 42 2642 1 42 2647 1 42 2652 1 42 2653 1 42 2654 1 42 2655 1 42 2662 1 42 2667 1 42 2668 1 42 2669 1 42 2670 1 42 2677 1 42 2678 1 42 2679 1 42 2680 1 42 2687 1 42 2688 1 42 2689 1 42 2690 1 42 2691 1 42 2692 1 42 2697 1 42 2702 1 42 2703 1 42 2704 1 42 2705 1 42 2712 1 42 2713 1 42 2714 1 42 2715 1 42 2722 1 42 2723 1 42 2724 1 42 2725 1 42 2726 1 42 2727 1 42 2732 1 42 2733 1 42 2734 1 42 2735 1 42 2742 1 42 2743 1 42 2744 1 42 2745 1 42 2746 1 42 2747 1 42 2752 1 42 2753 1 42 2754 1 42 2755 1 42 2756 1 42 2757 1 42 2762 1 42 2763 1 42 2764 1 42 2765 1 42 2767 1 42 2772 1 42 2773 1 42 2774 1 42 2775 1 42 2782 1 42 2783 1 42 2784 1 42 2785 1 42 2792 1 42 2793 1 42 2794 1 42 2795 1 42 2796 1 42 2797 1 42 2802 1 42 2803 1 42 2804 1 42 2805 1 42 2812 1 42 2813 1 42 2814 1 42 2815 1 42 2816 1 42 2817 1 42 2822 1 42 2823 1 42 2824 1 42 2825 1 42 2826 1 42 2827 1 42 2832 1 42 2833 1 42 2834 1 42 2835 1 42 2837 1 42 2838 1 42 2839 1 42 2840 1 42 2847 1 42 2848 1 42 2849 1 42 2850 1 42 2851 1 42 2852 1 42 2857 1 42 2858 1 42 2859 1 42 2860 1 42 2861 1 42 2862 1 42 2867 1 42 2868 1 42 2869 1 42 2870 1 42 2872 1 42 2873 1 42 2874 1 42 2875 1 42 2876 1 42 2877 1 42 2882 1 42 2883 1 42 2884 1 42 2885 1 42 2887 1 42 2888 1 42 2889 1 42 2890 1 42 2892 1 42 3103 1 42 3108 1 42 3109 1 42 3110 1 42 3111 1 42 3118 1 42 3119 1 42 3120 1 42 3121 1 42 3128 1 42 3129 1 42 3130 1 42 3131 1 42 3132 1 42 3133 1 42 3138 1 42 3139 1 42 3140 1 42 3141 1 42 3148 1 42 3149 1 42 3150 1 42 3151 1 42 3152 1 42 3153 1 42 3158 1 42 3159 1 42 3160 1 42 3161 1 42 3162 1 42 3163 1 42 3168 1 42 3169 1 42 3170 1 42 3171 1 42 3173 1 42 3174 1 42 3175 1 42 3176 1 42 3183 1 42 3184 1 42 3185 1 42 3186 1 42 3187 1 42 3188 1 42 3193 1 42 3194 1 42 3195 1 42 3196 1 42 3197 1 42 3198 1 42 3203 1 42 3204 1 42 3205 1 42 3206 1 42 3208 1 42 3209 1 42 3210 1 42 3211 1 42 3212 1 42 3213 1 42 3218 1 42 3219 1 42 3220 1 42 3221 1 42 3223 1 42 3224 1 42 3225 1 42 3226 1 42 3228 1 42 3229 1 42 3230 1 42 3231 1 42 3232 1 42 3239 1 42 3240 1 42 3241 1 42 3242 1 42 3243 1 42 3244 1 42 3249 1 42 3250 1 42 3251 1 42 3252 1 42 3253 1 42 3254 1 42 3259 1 42 3260 1 42 3261 1 42 3262 1 42 3264 1 42 3265 1 42 3266 1 42 3267 1 42 3268 1 42 3269 1 42 3274 1 42 3275 1 42 3276 1 42 3277 1 42 3279 1 42 3280 1 42 3281 1 42 3282 1 42 3284 1 42 3285 1 42 3286 1 42 3287 1 42 3288 1 42 3289 1 42 3290 1 42 3295 1 42 3296 1 42 3297 1 42 3298 1 42 3300 1 42 3301 1 42 3302 1 42 3303 1 42 3305 1 42 3306 1 42 3307 1 42 3308 1 42 3309 1 42 3311 1 42 3312 1 43 5 1 43 12 1 43 18 1 43 23 1 43 27 1 43 31 1 43 32 1 43 33 1 43 40 1 43 46 1 43 51 1 43 55 1 43 59 1 43 60 1 43 61 1 43 67 1 43 72 1 43 76 1 43 80 1 43 81 1 43 82 1 43 87 1 43 91 1 43 95 1 43 96 1 43 97 1 43 101 1 43 105 1 43 106 1 43 107 1 43 111 1 43 112 1 43 113 1 43 117 1 43 118 1 43 119 1 43 334 1 43 340 1 43 345 1 43 349 1 43 353 1 43 354 1 43 355 1 43 361 1 43 366 1 43 370 1 43 374 1 43 375 1 43 376 1 43 381 1 43 385 1 43 389 1 43 390 1 43 391 1 43 395 1 43 399 1 43 400 1 43 401 1 43 405 1 43 406 1 43 407 1 43 411 1 43 412 1 43 413 1 43 417 1 43 422 1 43 426 1 43 430 1 43 431 1 43 432 1 43 437 1 43 441 1 43 445 1 43 446 1 43 447 1 43 451 1 43 455 1 43 456 1 43 457 1 43 461 1 43 462 1 43 463 1 43 467 1 43 468 1 43 469 1 43 472 1 43 476 1 43 480 1 43 481 1 43 482 1 43 486 1 43 490 1 43 491 1 43 492 1 43 496 1 43 497 1 43 498 1 43 502 1 43 503 1 43 504 1 43 506 1 43 510 1 43 511 1 43 512 1 43 516 1 43 517 1 43 518 1 43 522 1 43 523 1 43 524 1 43 526 1 43 527 1 43 528 1 43 532 1 43 533 1 43 534 1 43 536 1 43 537 1 43 538 1 43 540 1 43 796 1 43 802 1 43 807 1 43 811 1 43 815 1 43 816 1 43 817 1 43 823 1 43 828 1 43 832 1 43 836 1 43 837 1 43 838 1 43 843 1 43 847 1 43 851 1 43 852 1 43 853 1 43 857 1 43 861 1 43 862 1 43 863 1 43 867 1 43 868 1 43 869 1 43 873 1 43 874 1 43 875 1 43 879 1 43 884 1 43 888 1 43 892 1 43 893 1 43 894 1 43 899 1 43 903 1 43 907 1 43 908 1 43 909 1 43 913 1 43 917 1 43 918 1 43 919 1 43 923 1 43 924 1 43 925 1 43 929 1 43 930 1 43 931 1 43 934 1 43 938 1 43 942 1 43 943 1 43 944 1 43 948 1 43 952 1 43 953 1 43 954 1 43 958 1 43 959 1 43 960 1 43 964 1 43 965 1 43 966 1 43 968 1 43 972 1 43 973 1 43 974 1 43 978 1 43 979 1 43 980 1 43 984 1 43 985 1 43 986 1 43 988 1 43 989 1 43 990 1 43 994 1 43 995 1 43 996 1 43 998 1 43 999 1 43 1000 1 43 1002 1 43 1257 1 43 1262 1 43 1266 1 43 1270 1 43 1271 1 43 1272 1 43 1277 1 43 1281 1 43 1285 1 43 1286 1 43 1287 1 43 1291 1 43 1295 1 43 1296 1 43 1297 1 43 1301 1 43 1302 1 43 1303 1 43 1307 1 43 1308 1 43 1309 1 43 1312 1 43 1316 1 43 1320 1 43 1321 1 43 1322 1 43 1326 1 43 1330 1 43 1331 1 43 1332 1 43 1336 1 43 1337 1 43 1338 1 43 1342 1 43 1343 1 43 1344 1 43 1346 1 43 1350 1 43 1351 1 43 1352 1 43 1356 1 43 1357 1 43 1358 1 43 1362 1 43 1363 1 43 1364 1 43 1366 1 43 1367 1 43 1368 1 43 1372 1 43 1373 1 43 1374 1 43 1376 1 43 1377 1 43 1378 1 43 1380 1 43 1382 1 43 1386 1 43 1390 1 43 1391 1 43 1392 1 43 1396 1 43 1400 1 43 1401 1 43 1402 1 43 1406 1 43 1407 1 43 1408 1 43 1412 1 43 1413 1 43 1414 1 43 1416 1 43 1420 1 43 1421 1 43 1422 1 43 1426 1 43 1427 1 43 1428 1 43 1432 1 43 1433 1 43 1434 1 43 1436 1 43 1437 1 43 1438 1 43 1442 1 43 1443 1 43 1444 1 43 1446 1 43 1447 1 43 1448 1 43 1450 1 43 1451 1 43 1455 1 43 1456 1 43 1457 1 43 1461 1 43 1462 1 43 1463 1 43 1467 1 43 1468 1 43 1469 1 43 1471 1 43 1472 1 43 1473 1 43 1477 1 43 1478 1 43 1479 1 43 1481 1 43 1482 1 43 1483 1 43 1485 1 43 1486 1 43 1487 1 43 1488 1 43 1492 1 43 1493 1 43 1494 1 43 1496 1 43 1497 1 43 1498 1 43 1500 1 43 1501 1 43 1502 1 43 1503 1 43 1505 1 43 1506 1 43 1720 1 43 1726 1 43 1731 1 43 1735 1 43 1739 1 43 1740 1 43 1741 1 43 1747 1 43 1752 1 43 1756 1 43 1760 1 43 1761 1 43 1762 1 43 1767 1 43 1771 1 43 1775 1 43 1776 1 43 1777 1 43 1781 1 43 1785 1 43 1786 1 43 1787 1 43 1791 1 43 1792 1 43 1793 1 43 1797 1 43 1798 1 43 1799 1 43 1803 1 43 1808 1 43 1812 1 43 1816 1 43 1817 1 43 1818 1 43 1823 1 43 1827 1 43 1831 1 43 1832 1 43 1833 1 43 1837 1 43 1841 1 43 1842 1 43 1843 1 43 1847 1 43 1848 1 43 1849 1 43 1853 1 43 1854 1 43 1855 1 43 1858 1 43 1862 1 43 1866 1 43 1867 1 43 1868 1 43 1872 1 43 1876 1 43 1877 1 43 1878 1 43 1882 1 43 1883 1 43 1884 1 43 1888 1 43 1889 1 43 1890 1 43 1892 1 43 1896 1 43 1897 1 43 1898 1 43 1902 1 43 1903 1 43 1904 1 43 1908 1 43 1909 1 43 1910 1 43 1912 1 43 1913 1 43 1914 1 43 1918 1 43 1919 1 43 1920 1 43 1922 1 43 1923 1 43 1924 1 43 1926 1 43 2181 1 43 2186 1 43 2190 1 43 2194 1 43 2195 1 43 2196 1 43 2201 1 43 2205 1 43 2209 1 43 2210 1 43 2211 1 43 2215 1 43 2219 1 43 2220 1 43 2221 1 43 2225 1 43 2226 1 43 2227 1 43 2231 1 43 2232 1 43 2233 1 43 2236 1 43 2240 1 43 2244 1 43 2245 1 43 2246 1 43 2250 1 43 2254 1 43 2255 1 43 2256 1 43 2260 1 43 2261 1 43 2262 1 43 2266 1 43 2267 1 43 2268 1 43 2270 1 43 2274 1 43 2275 1 43 2276 1 43 2280 1 43 2281 1 43 2282 1 43 2286 1 43 2287 1 43 2288 1 43 2290 1 43 2291 1 43 2292 1 43 2296 1 43 2297 1 43 2298 1 43 2300 1 43 2301 1 43 2302 1 43 2304 1 43 2306 1 43 2310 1 43 2314 1 43 2315 1 43 2316 1 43 2320 1 43 2324 1 43 2325 1 43 2326 1 43 2330 1 43 2331 1 43 2332 1 43 2336 1 43 2337 1 43 2338 1 43 2340 1 43 2344 1 43 2345 1 43 2346 1 43 2350 1 43 2351 1 43 2352 1 43 2356 1 43 2357 1 43 2358 1 43 2360 1 43 2361 1 43 2362 1 43 2366 1 43 2367 1 43 2368 1 43 2370 1 43 2371 1 43 2372 1 43 2374 1 43 2375 1 43 2379 1 43 2380 1 43 2381 1 43 2385 1 43 2386 1 43 2387 1 43 2391 1 43 2392 1 43 2393 1 43 2395 1 43 2396 1 43 2397 1 43 2401 1 43 2402 1 43 2403 1 43 2405 1 43 2406 1 43 2407 1 43 2409 1 43 2410 1 43 2411 1 43 2412 1 43 2416 1 43 2417 1 43 2418 1 43 2420 1 43 2421 1 43 2422 1 43 2424 1 43 2425 1 43 2426 1 43 2427 1 43 2429 1 43 2430 1 43 2643 1 43 2648 1 43 2652 1 43 2656 1 43 2657 1 43 2658 1 43 2663 1 43 2667 1 43 2671 1 43 2672 1 43 2673 1 43 2677 1 43 2681 1 43 2682 1 43 2683 1 43 2687 1 43 2688 1 43 2689 1 43 2693 1 43 2694 1 43 2695 1 43 2698 1 43 2702 1 43 2706 1 43 2707 1 43 2708 1 43 2712 1 43 2716 1 43 2717 1 43 2718 1 43 2722 1 43 2723 1 43 2724 1 43 2728 1 43 2729 1 43 2730 1 43 2732 1 43 2736 1 43 2737 1 43 2738 1 43 2742 1 43 2743 1 43 2744 1 43 2748 1 43 2749 1 43 2750 1 43 2752 1 43 2753 1 43 2754 1 43 2758 1 43 2759 1 43 2760 1 43 2762 1 43 2763 1 43 2764 1 43 2766 1 43 2768 1 43 2772 1 43 2776 1 43 2777 1 43 2778 1 43 2782 1 43 2786 1 43 2787 1 43 2788 1 43 2792 1 43 2793 1 43 2794 1 43 2798 1 43 2799 1 43 2800 1 43 2802 1 43 2806 1 43 2807 1 43 2808 1 43 2812 1 43 2813 1 43 2814 1 43 2818 1 43 2819 1 43 2820 1 43 2822 1 43 2823 1 43 2824 1 43 2828 1 43 2829 1 43 2830 1 43 2832 1 43 2833 1 43 2834 1 43 2836 1 43 2837 1 43 2841 1 43 2842 1 43 2843 1 43 2847 1 43 2848 1 43 2849 1 43 2853 1 43 2854 1 43 2855 1 43 2857 1 43 2858 1 43 2859 1 43 2863 1 43 2864 1 43 2865 1 43 2867 1 43 2868 1 43 2869 1 43 2871 1 43 2872 1 43 2873 1 43 2874 1 43 2878 1 43 2879 1 43 2880 1 43 2882 1 43 2883 1 43 2884 1 43 2886 1 43 2887 1 43 2888 1 43 2889 1 43 2891 1 43 2892 1 43 3104 1 43 3108 1 43 3112 1 43 3113 1 43 3114 1 43 3118 1 43 3122 1 43 3123 1 43 3124 1 43 3128 1 43 3129 1 43 3130 1 43 3134 1 43 3135 1 43 3136 1 43 3138 1 43 3142 1 43 3143 1 43 3144 1 43 3148 1 43 3149 1 43 3150 1 43 3154 1 43 3155 1 43 3156 1 43 3158 1 43 3159 1 43 3160 1 43 3164 1 43 3165 1 43 3166 1 43 3168 1 43 3169 1 43 3170 1 43 3172 1 43 3173 1 43 3177 1 43 3178 1 43 3179 1 43 3183 1 43 3184 1 43 3185 1 43 3189 1 43 3190 1 43 3191 1 43 3193 1 43 3194 1 43 3195 1 43 3199 1 43 3200 1 43 3201 1 43 3203 1 43 3204 1 43 3205 1 43 3207 1 43 3208 1 43 3209 1 43 3210 1 43 3214 1 43 3215 1 43 3216 1 43 3218 1 43 3219 1 43 3220 1 43 3222 1 43 3223 1 43 3224 1 43 3225 1 43 3227 1 43 3228 1 43 3229 1 43 3233 1 43 3234 1 43 3235 1 43 3239 1 43 3240 1 43 3241 1 43 3245 1 43 3246 1 43 3247 1 43 3249 1 43 3250 1 43 3251 1 43 3255 1 43 3256 1 43 3257 1 43 3259 1 43 3260 1 43 3261 1 43 3263 1 43 3264 1 43 3265 1 43 3266 1 43 3270 1 43 3271 1 43 3272 1 43 3274 1 43 3275 1 43 3276 1 43 3278 1 43 3279 1 43 3280 1 43 3281 1 43 3283 1 43 3284 1 43 3285 1 43 3286 1 43 3287 1 43 3291 1 43 3292 1 43 3293 1 43 3295 1 43 3296 1 43 3297 1 43 3299 1 43 3300 1 43 3301 1 43 3302 1 43 3304 1 43 3305 1 43 3306 1 43 3307 1 43 3308 1 43 3310 1 43 3311 1 43 3312 1 44 6 1 44 13 1 44 19 1 44 24 1 44 28 1 44 31 1 44 34 1 44 35 1 44 41 1 44 47 1 44 52 1 44 56 1 44 59 1 44 62 1 44 63 1 44 68 1 44 73 1 44 77 1 44 80 1 44 83 1 44 84 1 44 88 1 44 92 1 44 95 1 44 98 1 44 99 1 44 102 1 44 105 1 44 108 1 44 109 1 44 111 1 44 114 1 44 115 1 44 117 1 44 118 1 44 120 1 44 335 1 44 341 1 44 346 1 44 350 1 44 353 1 44 356 1 44 357 1 44 362 1 44 367 1 44 371 1 44 374 1 44 377 1 44 378 1 44 382 1 44 386 1 44 389 1 44 392 1 44 393 1 44 396 1 44 399 1 44 402 1 44 403 1 44 405 1 44 408 1 44 409 1 44 411 1 44 412 1 44 414 1 44 418 1 44 423 1 44 427 1 44 430 1 44 433 1 44 434 1 44 438 1 44 442 1 44 445 1 44 448 1 44 449 1 44 452 1 44 455 1 44 458 1 44 459 1 44 461 1 44 464 1 44 465 1 44 467 1 44 468 1 44 470 1 44 473 1 44 477 1 44 480 1 44 483 1 44 484 1 44 487 1 44 490 1 44 493 1 44 494 1 44 496 1 44 499 1 44 500 1 44 502 1 44 503 1 44 505 1 44 507 1 44 510 1 44 513 1 44 514 1 44 516 1 44 519 1 44 520 1 44 522 1 44 523 1 44 525 1 44 526 1 44 529 1 44 530 1 44 532 1 44 533 1 44 535 1 44 536 1 44 537 1 44 539 1 44 540 1 44 797 1 44 803 1 44 808 1 44 812 1 44 815 1 44 818 1 44 819 1 44 824 1 44 829 1 44 833 1 44 836 1 44 839 1 44 840 1 44 844 1 44 848 1 44 851 1 44 854 1 44 855 1 44 858 1 44 861 1 44 864 1 44 865 1 44 867 1 44 870 1 44 871 1 44 873 1 44 874 1 44 876 1 44 880 1 44 885 1 44 889 1 44 892 1 44 895 1 44 896 1 44 900 1 44 904 1 44 907 1 44 910 1 44 911 1 44 914 1 44 917 1 44 920 1 44 921 1 44 923 1 44 926 1 44 927 1 44 929 1 44 930 1 44 932 1 44 935 1 44 939 1 44 942 1 44 945 1 44 946 1 44 949 1 44 952 1 44 955 1 44 956 1 44 958 1 44 961 1 44 962 1 44 964 1 44 965 1 44 967 1 44 969 1 44 972 1 44 975 1 44 976 1 44 978 1 44 981 1 44 982 1 44 984 1 44 985 1 44 987 1 44 988 1 44 991 1 44 992 1 44 994 1 44 995 1 44 997 1 44 998 1 44 999 1 44 1001 1 44 1002 1 44 1258 1 44 1263 1 44 1267 1 44 1270 1 44 1273 1 44 1274 1 44 1278 1 44 1282 1 44 1285 1 44 1288 1 44 1289 1 44 1292 1 44 1295 1 44 1298 1 44 1299 1 44 1301 1 44 1304 1 44 1305 1 44 1307 1 44 1308 1 44 1310 1 44 1313 1 44 1317 1 44 1320 1 44 1323 1 44 1324 1 44 1327 1 44 1330 1 44 1333 1 44 1334 1 44 1336 1 44 1339 1 44 1340 1 44 1342 1 44 1343 1 44 1345 1 44 1347 1 44 1350 1 44 1353 1 44 1354 1 44 1356 1 44 1359 1 44 1360 1 44 1362 1 44 1363 1 44 1365 1 44 1366 1 44 1369 1 44 1370 1 44 1372 1 44 1373 1 44 1375 1 44 1376 1 44 1377 1 44 1379 1 44 1380 1 44 1383 1 44 1387 1 44 1390 1 44 1393 1 44 1394 1 44 1397 1 44 1400 1 44 1403 1 44 1404 1 44 1406 1 44 1409 1 44 1410 1 44 1412 1 44 1413 1 44 1415 1 44 1417 1 44 1420 1 44 1423 1 44 1424 1 44 1426 1 44 1429 1 44 1430 1 44 1432 1 44 1433 1 44 1435 1 44 1436 1 44 1439 1 44 1440 1 44 1442 1 44 1443 1 44 1445 1 44 1446 1 44 1447 1 44 1449 1 44 1450 1 44 1452 1 44 1455 1 44 1458 1 44 1459 1 44 1461 1 44 1464 1 44 1465 1 44 1467 1 44 1468 1 44 1470 1 44 1471 1 44 1474 1 44 1475 1 44 1477 1 44 1478 1 44 1480 1 44 1481 1 44 1482 1 44 1484 1 44 1485 1 44 1486 1 44 1489 1 44 1490 1 44 1492 1 44 1493 1 44 1495 1 44 1496 1 44 1497 1 44 1499 1 44 1500 1 44 1501 1 44 1502 1 44 1504 1 44 1505 1 44 1506 1 44 1721 1 44 1727 1 44 1732 1 44 1736 1 44 1739 1 44 1742 1 44 1743 1 44 1748 1 44 1753 1 44 1757 1 44 1760 1 44 1763 1 44 1764 1 44 1768 1 44 1772 1 44 1775 1 44 1778 1 44 1779 1 44 1782 1 44 1785 1 44 1788 1 44 1789 1 44 1791 1 44 1794 1 44 1795 1 44 1797 1 44 1798 1 44 1800 1 44 1804 1 44 1809 1 44 1813 1 44 1816 1 44 1819 1 44 1820 1 44 1824 1 44 1828 1 44 1831 1 44 1834 1 44 1835 1 44 1838 1 44 1841 1 44 1844 1 44 1845 1 44 1847 1 44 1850 1 44 1851 1 44 1853 1 44 1854 1 44 1856 1 44 1859 1 44 1863 1 44 1866 1 44 1869 1 44 1870 1 44 1873 1 44 1876 1 44 1879 1 44 1880 1 44 1882 1 44 1885 1 44 1886 1 44 1888 1 44 1889 1 44 1891 1 44 1893 1 44 1896 1 44 1899 1 44 1900 1 44 1902 1 44 1905 1 44 1906 1 44 1908 1 44 1909 1 44 1911 1 44 1912 1 44 1915 1 44 1916 1 44 1918 1 44 1919 1 44 1921 1 44 1922 1 44 1923 1 44 1925 1 44 1926 1 44 2182 1 44 2187 1 44 2191 1 44 2194 1 44 2197 1 44 2198 1 44 2202 1 44 2206 1 44 2209 1 44 2212 1 44 2213 1 44 2216 1 44 2219 1 44 2222 1 44 2223 1 44 2225 1 44 2228 1 44 2229 1 44 2231 1 44 2232 1 44 2234 1 44 2237 1 44 2241 1 44 2244 1 44 2247 1 44 2248 1 44 2251 1 44 2254 1 44 2257 1 44 2258 1 44 2260 1 44 2263 1 44 2264 1 44 2266 1 44 2267 1 44 2269 1 44 2271 1 44 2274 1 44 2277 1 44 2278 1 44 2280 1 44 2283 1 44 2284 1 44 2286 1 44 2287 1 44 2289 1 44 2290 1 44 2293 1 44 2294 1 44 2296 1 44 2297 1 44 2299 1 44 2300 1 44 2301 1 44 2303 1 44 2304 1 44 2307 1 44 2311 1 44 2314 1 44 2317 1 44 2318 1 44 2321 1 44 2324 1 44 2327 1 44 2328 1 44 2330 1 44 2333 1 44 2334 1 44 2336 1 44 2337 1 44 2339 1 44 2341 1 44 2344 1 44 2347 1 44 2348 1 44 2350 1 44 2353 1 44 2354 1 44 2356 1 44 2357 1 44 2359 1 44 2360 1 44 2363 1 44 2364 1 44 2366 1 44 2367 1 44 2369 1 44 2370 1 44 2371 1 44 2373 1 44 2374 1 44 2376 1 44 2379 1 44 2382 1 44 2383 1 44 2385 1 44 2388 1 44 2389 1 44 2391 1 44 2392 1 44 2394 1 44 2395 1 44 2398 1 44 2399 1 44 2401 1 44 2402 1 44 2404 1 44 2405 1 44 2406 1 44 2408 1 44 2409 1 44 2410 1 44 2413 1 44 2414 1 44 2416 1 44 2417 1 44 2419 1 44 2420 1 44 2421 1 44 2423 1 44 2424 1 44 2425 1 44 2426 1 44 2428 1 44 2429 1 44 2430 1 44 2644 1 44 2649 1 44 2653 1 44 2656 1 44 2659 1 44 2660 1 44 2664 1 44 2668 1 44 2671 1 44 2674 1 44 2675 1 44 2678 1 44 2681 1 44 2684 1 44 2685 1 44 2687 1 44 2690 1 44 2691 1 44 2693 1 44 2694 1 44 2696 1 44 2699 1 44 2703 1 44 2706 1 44 2709 1 44 2710 1 44 2713 1 44 2716 1 44 2719 1 44 2720 1 44 2722 1 44 2725 1 44 2726 1 44 2728 1 44 2729 1 44 2731 1 44 2733 1 44 2736 1 44 2739 1 44 2740 1 44 2742 1 44 2745 1 44 2746 1 44 2748 1 44 2749 1 44 2751 1 44 2752 1 44 2755 1 44 2756 1 44 2758 1 44 2759 1 44 2761 1 44 2762 1 44 2763 1 44 2765 1 44 2766 1 44 2769 1 44 2773 1 44 2776 1 44 2779 1 44 2780 1 44 2783 1 44 2786 1 44 2789 1 44 2790 1 44 2792 1 44 2795 1 44 2796 1 44 2798 1 44 2799 1 44 2801 1 44 2803 1 44 2806 1 44 2809 1 44 2810 1 44 2812 1 44 2815 1 44 2816 1 44 2818 1 44 2819 1 44 2821 1 44 2822 1 44 2825 1 44 2826 1 44 2828 1 44 2829 1 44 2831 1 44 2832 1 44 2833 1 44 2835 1 44 2836 1 44 2838 1 44 2841 1 44 2844 1 44 2845 1 44 2847 1 44 2850 1 44 2851 1 44 2853 1 44 2854 1 44 2856 1 44 2857 1 44 2860 1 44 2861 1 44 2863 1 44 2864 1 44 2866 1 44 2867 1 44 2868 1 44 2870 1 44 2871 1 44 2872 1 44 2875 1 44 2876 1 44 2878 1 44 2879 1 44 2881 1 44 2882 1 44 2883 1 44 2885 1 44 2886 1 44 2887 1 44 2888 1 44 2890 1 44 2891 1 44 2892 1 44 3105 1 44 3109 1 44 3112 1 44 3115 1 44 3116 1 44 3119 1 44 3122 1 44 3125 1 44 3126 1 44 3128 1 44 3131 1 44 3132 1 44 3134 1 44 3135 1 44 3137 1 44 3139 1 44 3142 1 44 3145 1 44 3146 1 44 3148 1 44 3151 1 44 3152 1 44 3154 1 44 3155 1 44 3157 1 44 3158 1 44 3161 1 44 3162 1 44 3164 1 44 3165 1 44 3167 1 44 3168 1 44 3169 1 44 3171 1 44 3172 1 44 3174 1 44 3177 1 44 3180 1 44 3181 1 44 3183 1 44 3186 1 44 3187 1 44 3189 1 44 3190 1 44 3192 1 44 3193 1 44 3196 1 44 3197 1 44 3199 1 44 3200 1 44 3202 1 44 3203 1 44 3204 1 44 3206 1 44 3207 1 44 3208 1 44 3211 1 44 3212 1 44 3214 1 44 3215 1 44 3217 1 44 3218 1 44 3219 1 44 3221 1 44 3222 1 44 3223 1 44 3224 1 44 3226 1 44 3227 1 44 3228 1 44 3230 1 44 3233 1 44 3236 1 44 3237 1 44 3239 1 44 3242 1 44 3243 1 44 3245 1 44 3246 1 44 3248 1 44 3249 1 44 3252 1 44 3253 1 44 3255 1 44 3256 1 44 3258 1 44 3259 1 44 3260 1 44 3262 1 44 3263 1 44 3264 1 44 3267 1 44 3268 1 44 3270 1 44 3271 1 44 3273 1 44 3274 1 44 3275 1 44 3277 1 44 3278 1 44 3279 1 44 3280 1 44 3282 1 44 3283 1 44 3284 1 44 3285 1 44 3288 1 44 3289 1 44 3291 1 44 3292 1 44 3294 1 44 3295 1 44 3296 1 44 3298 1 44 3299 1 44 3300 1 44 3301 1 44 3303 1 44 3304 1 44 3305 1 44 3306 1 44 3307 1 44 3309 1 44 3310 1 44 3311 1 44 3312 1 45 7 1 45 14 1 45 20 1 45 25 1 45 29 1 45 32 1 45 34 1 45 36 1 45 42 1 45 48 1 45 53 1 45 57 1 45 60 1 45 62 1 45 64 1 45 69 1 45 74 1 45 78 1 45 81 1 45 83 1 45 85 1 45 89 1 45 93 1 45 96 1 45 98 1 45 100 1 45 103 1 45 106 1 45 108 1 45 110 1 45 112 1 45 114 1 45 116 1 45 117 1 45 119 1 45 120 1 45 336 1 45 342 1 45 347 1 45 351 1 45 354 1 45 356 1 45 358 1 45 363 1 45 368 1 45 372 1 45 375 1 45 377 1 45 379 1 45 383 1 45 387 1 45 390 1 45 392 1 45 394 1 45 397 1 45 400 1 45 402 1 45 404 1 45 406 1 45 408 1 45 410 1 45 411 1 45 413 1 45 414 1 45 419 1 45 424 1 45 428 1 45 431 1 45 433 1 45 435 1 45 439 1 45 443 1 45 446 1 45 448 1 45 450 1 45 453 1 45 456 1 45 458 1 45 460 1 45 462 1 45 464 1 45 466 1 45 467 1 45 469 1 45 470 1 45 474 1 45 478 1 45 481 1 45 483 1 45 485 1 45 488 1 45 491 1 45 493 1 45 495 1 45 497 1 45 499 1 45 501 1 45 502 1 45 504 1 45 505 1 45 508 1 45 511 1 45 513 1 45 515 1 45 517 1 45 519 1 45 521 1 45 522 1 45 524 1 45 525 1 45 527 1 45 529 1 45 531 1 45 532 1 45 534 1 45 535 1 45 536 1 45 538 1 45 539 1 45 540 1 45 798 1 45 804 1 45 809 1 45 813 1 45 816 1 45 818 1 45 820 1 45 825 1 45 830 1 45 834 1 45 837 1 45 839 1 45 841 1 45 845 1 45 849 1 45 852 1 45 854 1 45 856 1 45 859 1 45 862 1 45 864 1 45 866 1 45 868 1 45 870 1 45 872 1 45 873 1 45 875 1 45 876 1 45 881 1 45 886 1 45 890 1 45 893 1 45 895 1 45 897 1 45 901 1 45 905 1 45 908 1 45 910 1 45 912 1 45 915 1 45 918 1 45 920 1 45 922 1 45 924 1 45 926 1 45 928 1 45 929 1 45 931 1 45 932 1 45 936 1 45 940 1 45 943 1 45 945 1 45 947 1 45 950 1 45 953 1 45 955 1 45 957 1 45 959 1 45 961 1 45 963 1 45 964 1 45 966 1 45 967 1 45 970 1 45 973 1 45 975 1 45 977 1 45 979 1 45 981 1 45 983 1 45 984 1 45 986 1 45 987 1 45 989 1 45 991 1 45 993 1 45 994 1 45 996 1 45 997 1 45 998 1 45 1000 1 45 1001 1 45 1002 1 45 1259 1 45 1264 1 45 1268 1 45 1271 1 45 1273 1 45 1275 1 45 1279 1 45 1283 1 45 1286 1 45 1288 1 45 1290 1 45 1293 1 45 1296 1 45 1298 1 45 1300 1 45 1302 1 45 1304 1 45 1306 1 45 1307 1 45 1309 1 45 1310 1 45 1314 1 45 1318 1 45 1321 1 45 1323 1 45 1325 1 45 1328 1 45 1331 1 45 1333 1 45 1335 1 45 1337 1 45 1339 1 45 1341 1 45 1342 1 45 1344 1 45 1345 1 45 1348 1 45 1351 1 45 1353 1 45 1355 1 45 1357 1 45 1359 1 45 1361 1 45 1362 1 45 1364 1 45 1365 1 45 1367 1 45 1369 1 45 1371 1 45 1372 1 45 1374 1 45 1375 1 45 1376 1 45 1378 1 45 1379 1 45 1380 1 45 1384 1 45 1388 1 45 1391 1 45 1393 1 45 1395 1 45 1398 1 45 1401 1 45 1403 1 45 1405 1 45 1407 1 45 1409 1 45 1411 1 45 1412 1 45 1414 1 45 1415 1 45 1418 1 45 1421 1 45 1423 1 45 1425 1 45 1427 1 45 1429 1 45 1431 1 45 1432 1 45 1434 1 45 1435 1 45 1437 1 45 1439 1 45 1441 1 45 1442 1 45 1444 1 45 1445 1 45 1446 1 45 1448 1 45 1449 1 45 1450 1 45 1453 1 45 1456 1 45 1458 1 45 1460 1 45 1462 1 45 1464 1 45 1466 1 45 1467 1 45 1469 1 45 1470 1 45 1472 1 45 1474 1 45 1476 1 45 1477 1 45 1479 1 45 1480 1 45 1481 1 45 1483 1 45 1484 1 45 1485 1 45 1487 1 45 1489 1 45 1491 1 45 1492 1 45 1494 1 45 1495 1 45 1496 1 45 1498 1 45 1499 1 45 1500 1 45 1501 1 45 1503 1 45 1504 1 45 1505 1 45 1506 1 45 1722 1 45 1728 1 45 1733 1 45 1737 1 45 1740 1 45 1742 1 45 1744 1 45 1749 1 45 1754 1 45 1758 1 45 1761 1 45 1763 1 45 1765 1 45 1769 1 45 1773 1 45 1776 1 45 1778 1 45 1780 1 45 1783 1 45 1786 1 45 1788 1 45 1790 1 45 1792 1 45 1794 1 45 1796 1 45 1797 1 45 1799 1 45 1800 1 45 1805 1 45 1810 1 45 1814 1 45 1817 1 45 1819 1 45 1821 1 45 1825 1 45 1829 1 45 1832 1 45 1834 1 45 1836 1 45 1839 1 45 1842 1 45 1844 1 45 1846 1 45 1848 1 45 1850 1 45 1852 1 45 1853 1 45 1855 1 45 1856 1 45 1860 1 45 1864 1 45 1867 1 45 1869 1 45 1871 1 45 1874 1 45 1877 1 45 1879 1 45 1881 1 45 1883 1 45 1885 1 45 1887 1 45 1888 1 45 1890 1 45 1891 1 45 1894 1 45 1897 1 45 1899 1 45 1901 1 45 1903 1 45 1905 1 45 1907 1 45 1908 1 45 1910 1 45 1911 1 45 1913 1 45 1915 1 45 1917 1 45 1918 1 45 1920 1 45 1921 1 45 1922 1 45 1924 1 45 1925 1 45 1926 1 45 2183 1 45 2188 1 45 2192 1 45 2195 1 45 2197 1 45 2199 1 45 2203 1 45 2207 1 45 2210 1 45 2212 1 45 2214 1 45 2217 1 45 2220 1 45 2222 1 45 2224 1 45 2226 1 45 2228 1 45 2230 1 45 2231 1 45 2233 1 45 2234 1 45 2238 1 45 2242 1 45 2245 1 45 2247 1 45 2249 1 45 2252 1 45 2255 1 45 2257 1 45 2259 1 45 2261 1 45 2263 1 45 2265 1 45 2266 1 45 2268 1 45 2269 1 45 2272 1 45 2275 1 45 2277 1 45 2279 1 45 2281 1 45 2283 1 45 2285 1 45 2286 1 45 2288 1 45 2289 1 45 2291 1 45 2293 1 45 2295 1 45 2296 1 45 2298 1 45 2299 1 45 2300 1 45 2302 1 45 2303 1 45 2304 1 45 2308 1 45 2312 1 45 2315 1 45 2317 1 45 2319 1 45 2322 1 45 2325 1 45 2327 1 45 2329 1 45 2331 1 45 2333 1 45 2335 1 45 2336 1 45 2338 1 45 2339 1 45 2342 1 45 2345 1 45 2347 1 45 2349 1 45 2351 1 45 2353 1 45 2355 1 45 2356 1 45 2358 1 45 2359 1 45 2361 1 45 2363 1 45 2365 1 45 2366 1 45 2368 1 45 2369 1 45 2370 1 45 2372 1 45 2373 1 45 2374 1 45 2377 1 45 2380 1 45 2382 1 45 2384 1 45 2386 1 45 2388 1 45 2390 1 45 2391 1 45 2393 1 45 2394 1 45 2396 1 45 2398 1 45 2400 1 45 2401 1 45 2403 1 45 2404 1 45 2405 1 45 2407 1 45 2408 1 45 2409 1 45 2411 1 45 2413 1 45 2415 1 45 2416 1 45 2418 1 45 2419 1 45 2420 1 45 2422 1 45 2423 1 45 2424 1 45 2425 1 45 2427 1 45 2428 1 45 2429 1 45 2430 1 45 2645 1 45 2650 1 45 2654 1 45 2657 1 45 2659 1 45 2661 1 45 2665 1 45 2669 1 45 2672 1 45 2674 1 45 2676 1 45 2679 1 45 2682 1 45 2684 1 45 2686 1 45 2688 1 45 2690 1 45 2692 1 45 2693 1 45 2695 1 45 2696 1 45 2700 1 45 2704 1 45 2707 1 45 2709 1 45 2711 1 45 2714 1 45 2717 1 45 2719 1 45 2721 1 45 2723 1 45 2725 1 45 2727 1 45 2728 1 45 2730 1 45 2731 1 45 2734 1 45 2737 1 45 2739 1 45 2741 1 45 2743 1 45 2745 1 45 2747 1 45 2748 1 45 2750 1 45 2751 1 45 2753 1 45 2755 1 45 2757 1 45 2758 1 45 2760 1 45 2761 1 45 2762 1 45 2764 1 45 2765 1 45 2766 1 45 2770 1 45 2774 1 45 2777 1 45 2779 1 45 2781 1 45 2784 1 45 2787 1 45 2789 1 45 2791 1 45 2793 1 45 2795 1 45 2797 1 45 2798 1 45 2800 1 45 2801 1 45 2804 1 45 2807 1 45 2809 1 45 2811 1 45 2813 1 45 2815 1 45 2817 1 45 2818 1 45 2820 1 45 2821 1 45 2823 1 45 2825 1 45 2827 1 45 2828 1 45 2830 1 45 2831 1 45 2832 1 45 2834 1 45 2835 1 45 2836 1 45 2839 1 45 2842 1 45 2844 1 45 2846 1 45 2848 1 45 2850 1 45 2852 1 45 2853 1 45 2855 1 45 2856 1 45 2858 1 45 2860 1 45 2862 1 45 2863 1 45 2865 1 45 2866 1 45 2867 1 45 2869 1 45 2870 1 45 2871 1 45 2873 1 45 2875 1 45 2877 1 45 2878 1 45 2880 1 45 2881 1 45 2882 1 45 2884 1 45 2885 1 45 2886 1 45 2887 1 45 2889 1 45 2890 1 45 2891 1 45 2892 1 45 3106 1 45 3110 1 45 3113 1 45 3115 1 45 3117 1 45 3120 1 45 3123 1 45 3125 1 45 3127 1 45 3129 1 45 3131 1 45 3133 1 45 3134 1 45 3136 1 45 3137 1 45 3140 1 45 3143 1 45 3145 1 45 3147 1 45 3149 1 45 3151 1 45 3153 1 45 3154 1 45 3156 1 45 3157 1 45 3159 1 45 3161 1 45 3163 1 45 3164 1 45 3166 1 45 3167 1 45 3168 1 45 3170 1 45 3171 1 45 3172 1 45 3175 1 45 3178 1 45 3180 1 45 3182 1 45 3184 1 45 3186 1 45 3188 1 45 3189 1 45 3191 1 45 3192 1 45 3194 1 45 3196 1 45 3198 1 45 3199 1 45 3201 1 45 3202 1 45 3203 1 45 3205 1 45 3206 1 45 3207 1 45 3209 1 45 3211 1 45 3213 1 45 3214 1 45 3216 1 45 3217 1 45 3218 1 45 3220 1 45 3221 1 45 3222 1 45 3223 1 45 3225 1 45 3226 1 45 3227 1 45 3228 1 45 3231 1 45 3234 1 45 3236 1 45 3238 1 45 3240 1 45 3242 1 45 3244 1 45 3245 1 45 3247 1 45 3248 1 45 3250 1 45 3252 1 45 3254 1 45 3255 1 45 3257 1 45 3258 1 45 3259 1 45 3261 1 45 3262 1 45 3263 1 45 3265 1 45 3267 1 45 3269 1 45 3270 1 45 3272 1 45 3273 1 45 3274 1 45 3276 1 45 3277 1 45 3278 1 45 3279 1 45 3281 1 45 3282 1 45 3283 1 45 3284 1 45 3286 1 45 3288 1 45 3290 1 45 3291 1 45 3293 1 45 3294 1 45 3295 1 45 3297 1 45 3298 1 45 3299 1 45 3300 1 45 3302 1 45 3303 1 45 3304 1 45 3305 1 45 3306 1 45 3308 1 45 3309 1 45 3310 1 45 3311 1 45 3312 1 46 8 1 46 15 1 46 21 1 46 26 1 46 30 1 46 33 1 46 35 1 46 36 1 46 43 1 46 49 1 46 54 1 46 58 1 46 61 1 46 63 1 46 64 1 46 70 1 46 75 1 46 79 1 46 82 1 46 84 1 46 85 1 46 90 1 46 94 1 46 97 1 46 99 1 46 100 1 46 104 1 46 107 1 46 109 1 46 110 1 46 113 1 46 115 1 46 116 1 46 118 1 46 119 1 46 120 1 46 337 1 46 343 1 46 348 1 46 352 1 46 355 1 46 357 1 46 358 1 46 364 1 46 369 1 46 373 1 46 376 1 46 378 1 46 379 1 46 384 1 46 388 1 46 391 1 46 393 1 46 394 1 46 398 1 46 401 1 46 403 1 46 404 1 46 407 1 46 409 1 46 410 1 46 412 1 46 413 1 46 414 1 46 420 1 46 425 1 46 429 1 46 432 1 46 434 1 46 435 1 46 440 1 46 444 1 46 447 1 46 449 1 46 450 1 46 454 1 46 457 1 46 459 1 46 460 1 46 463 1 46 465 1 46 466 1 46 468 1 46 469 1 46 470 1 46 475 1 46 479 1 46 482 1 46 484 1 46 485 1 46 489 1 46 492 1 46 494 1 46 495 1 46 498 1 46 500 1 46 501 1 46 503 1 46 504 1 46 505 1 46 509 1 46 512 1 46 514 1 46 515 1 46 518 1 46 520 1 46 521 1 46 523 1 46 524 1 46 525 1 46 528 1 46 530 1 46 531 1 46 533 1 46 534 1 46 535 1 46 537 1 46 538 1 46 539 1 46 540 1 46 799 1 46 805 1 46 810 1 46 814 1 46 817 1 46 819 1 46 820 1 46 826 1 46 831 1 46 835 1 46 838 1 46 840 1 46 841 1 46 846 1 46 850 1 46 853 1 46 855 1 46 856 1 46 860 1 46 863 1 46 865 1 46 866 1 46 869 1 46 871 1 46 872 1 46 874 1 46 875 1 46 876 1 46 882 1 46 887 1 46 891 1 46 894 1 46 896 1 46 897 1 46 902 1 46 906 1 46 909 1 46 911 1 46 912 1 46 916 1 46 919 1 46 921 1 46 922 1 46 925 1 46 927 1 46 928 1 46 930 1 46 931 1 46 932 1 46 937 1 46 941 1 46 944 1 46 946 1 46 947 1 46 951 1 46 954 1 46 956 1 46 957 1 46 960 1 46 962 1 46 963 1 46 965 1 46 966 1 46 967 1 46 971 1 46 974 1 46 976 1 46 977 1 46 980 1 46 982 1 46 983 1 46 985 1 46 986 1 46 987 1 46 990 1 46 992 1 46 993 1 46 995 1 46 996 1 46 997 1 46 999 1 46 1000 1 46 1001 1 46 1002 1 46 1260 1 46 1265 1 46 1269 1 46 1272 1 46 1274 1 46 1275 1 46 1280 1 46 1284 1 46 1287 1 46 1289 1 46 1290 1 46 1294 1 46 1297 1 46 1299 1 46 1300 1 46 1303 1 46 1305 1 46 1306 1 46 1308 1 46 1309 1 46 1310 1 46 1315 1 46 1319 1 46 1322 1 46 1324 1 46 1325 1 46 1329 1 46 1332 1 46 1334 1 46 1335 1 46 1338 1 46 1340 1 46 1341 1 46 1343 1 46 1344 1 46 1345 1 46 1349 1 46 1352 1 46 1354 1 46 1355 1 46 1358 1 46 1360 1 46 1361 1 46 1363 1 46 1364 1 46 1365 1 46 1368 1 46 1370 1 46 1371 1 46 1373 1 46 1374 1 46 1375 1 46 1377 1 46 1378 1 46 1379 1 46 1380 1 46 1385 1 46 1389 1 46 1392 1 46 1394 1 46 1395 1 46 1399 1 46 1402 1 46 1404 1 46 1405 1 46 1408 1 46 1410 1 46 1411 1 46 1413 1 46 1414 1 46 1415 1 46 1419 1 46 1422 1 46 1424 1 46 1425 1 46 1428 1 46 1430 1 46 1431 1 46 1433 1 46 1434 1 46 1435 1 46 1438 1 46 1440 1 46 1441 1 46 1443 1 46 1444 1 46 1445 1 46 1447 1 46 1448 1 46 1449 1 46 1450 1 46 1454 1 46 1457 1 46 1459 1 46 1460 1 46 1463 1 46 1465 1 46 1466 1 46 1468 1 46 1469 1 46 1470 1 46 1473 1 46 1475 1 46 1476 1 46 1478 1 46 1479 1 46 1480 1 46 1482 1 46 1483 1 46 1484 1 46 1485 1 46 1488 1 46 1490 1 46 1491 1 46 1493 1 46 1494 1 46 1495 1 46 1497 1 46 1498 1 46 1499 1 46 1500 1 46 1502 1 46 1503 1 46 1504 1 46 1505 1 46 1506 1 46 1723 1 46 1729 1 46 1734 1 46 1738 1 46 1741 1 46 1743 1 46 1744 1 46 1750 1 46 1755 1 46 1759 1 46 1762 1 46 1764 1 46 1765 1 46 1770 1 46 1774 1 46 1777 1 46 1779 1 46 1780 1 46 1784 1 46 1787 1 46 1789 1 46 1790 1 46 1793 1 46 1795 1 46 1796 1 46 1798 1 46 1799 1 46 1800 1 46 1806 1 46 1811 1 46 1815 1 46 1818 1 46 1820 1 46 1821 1 46 1826 1 46 1830 1 46 1833 1 46 1835 1 46 1836 1 46 1840 1 46 1843 1 46 1845 1 46 1846 1 46 1849 1 46 1851 1 46 1852 1 46 1854 1 46 1855 1 46 1856 1 46 1861 1 46 1865 1 46 1868 1 46 1870 1 46 1871 1 46 1875 1 46 1878 1 46 1880 1 46 1881 1 46 1884 1 46 1886 1 46 1887 1 46 1889 1 46 1890 1 46 1891 1 46 1895 1 46 1898 1 46 1900 1 46 1901 1 46 1904 1 46 1906 1 46 1907 1 46 1909 1 46 1910 1 46 1911 1 46 1914 1 46 1916 1 46 1917 1 46 1919 1 46 1920 1 46 1921 1 46 1923 1 46 1924 1 46 1925 1 46 1926 1 46 2184 1 46 2189 1 46 2193 1 46 2196 1 46 2198 1 46 2199 1 46 2204 1 46 2208 1 46 2211 1 46 2213 1 46 2214 1 46 2218 1 46 2221 1 46 2223 1 46 2224 1 46 2227 1 46 2229 1 46 2230 1 46 2232 1 46 2233 1 46 2234 1 46 2239 1 46 2243 1 46 2246 1 46 2248 1 46 2249 1 46 2253 1 46 2256 1 46 2258 1 46 2259 1 46 2262 1 46 2264 1 46 2265 1 46 2267 1 46 2268 1 46 2269 1 46 2273 1 46 2276 1 46 2278 1 46 2279 1 46 2282 1 46 2284 1 46 2285 1 46 2287 1 46 2288 1 46 2289 1 46 2292 1 46 2294 1 46 2295 1 46 2297 1 46 2298 1 46 2299 1 46 2301 1 46 2302 1 46 2303 1 46 2304 1 46 2309 1 46 2313 1 46 2316 1 46 2318 1 46 2319 1 46 2323 1 46 2326 1 46 2328 1 46 2329 1 46 2332 1 46 2334 1 46 2335 1 46 2337 1 46 2338 1 46 2339 1 46 2343 1 46 2346 1 46 2348 1 46 2349 1 46 2352 1 46 2354 1 46 2355 1 46 2357 1 46 2358 1 46 2359 1 46 2362 1 46 2364 1 46 2365 1 46 2367 1 46 2368 1 46 2369 1 46 2371 1 46 2372 1 46 2373 1 46 2374 1 46 2378 1 46 2381 1 46 2383 1 46 2384 1 46 2387 1 46 2389 1 46 2390 1 46 2392 1 46 2393 1 46 2394 1 46 2397 1 46 2399 1 46 2400 1 46 2402 1 46 2403 1 46 2404 1 46 2406 1 46 2407 1 46 2408 1 46 2409 1 46 2412 1 46 2414 1 46 2415 1 46 2417 1 46 2418 1 46 2419 1 46 2421 1 46 2422 1 46 2423 1 46 2424 1 46 2426 1 46 2427 1 46 2428 1 46 2429 1 46 2430 1 46 2646 1 46 2651 1 46 2655 1 46 2658 1 46 2660 1 46 2661 1 46 2666 1 46 2670 1 46 2673 1 46 2675 1 46 2676 1 46 2680 1 46 2683 1 46 2685 1 46 2686 1 46 2689 1 46 2691 1 46 2692 1 46 2694 1 46 2695 1 46 2696 1 46 2701 1 46 2705 1 46 2708 1 46 2710 1 46 2711 1 46 2715 1 46 2718 1 46 2720 1 46 2721 1 46 2724 1 46 2726 1 46 2727 1 46 2729 1 46 2730 1 46 2731 1 46 2735 1 46 2738 1 46 2740 1 46 2741 1 46 2744 1 46 2746 1 46 2747 1 46 2749 1 46 2750 1 46 2751 1 46 2754 1 46 2756 1 46 2757 1 46 2759 1 46 2760 1 46 2761 1 46 2763 1 46 2764 1 46 2765 1 46 2766 1 46 2771 1 46 2775 1 46 2778 1 46 2780 1 46 2781 1 46 2785 1 46 2788 1 46 2790 1 46 2791 1 46 2794 1 46 2796 1 46 2797 1 46 2799 1 46 2800 1 46 2801 1 46 2805 1 46 2808 1 46 2810 1 46 2811 1 46 2814 1 46 2816 1 46 2817 1 46 2819 1 46 2820 1 46 2821 1 46 2824 1 46 2826 1 46 2827 1 46 2829 1 46 2830 1 46 2831 1 46 2833 1 46 2834 1 46 2835 1 46 2836 1 46 2840 1 46 2843 1 46 2845 1 46 2846 1 46 2849 1 46 2851 1 46 2852 1 46 2854 1 46 2855 1 46 2856 1 46 2859 1 46 2861 1 46 2862 1 46 2864 1 46 2865 1 46 2866 1 46 2868 1 46 2869 1 46 2870 1 46 2871 1 46 2874 1 46 2876 1 46 2877 1 46 2879 1 46 2880 1 46 2881 1 46 2883 1 46 2884 1 46 2885 1 46 2886 1 46 2888 1 46 2889 1 46 2890 1 46 2891 1 46 2892 1 46 3107 1 46 3111 1 46 3114 1 46 3116 1 46 3117 1 46 3121 1 46 3124 1 46 3126 1 46 3127 1 46 3130 1 46 3132 1 46 3133 1 46 3135 1 46 3136 1 46 3137 1 46 3141 1 46 3144 1 46 3146 1 46 3147 1 46 3150 1 46 3152 1 46 3153 1 46 3155 1 46 3156 1 46 3157 1 46 3160 1 46 3162 1 46 3163 1 46 3165 1 46 3166 1 46 3167 1 46 3169 1 46 3170 1 46 3171 1 46 3172 1 46 3176 1 46 3179 1 46 3181 1 46 3182 1 46 3185 1 46 3187 1 46 3188 1 46 3190 1 46 3191 1 46 3192 1 46 3195 1 46 3197 1 46 3198 1 46 3200 1 46 3201 1 46 3202 1 46 3204 1 46 3205 1 46 3206 1 46 3207 1 46 3210 1 46 3212 1 46 3213 1 46 3215 1 46 3216 1 46 3217 1 46 3219 1 46 3220 1 46 3221 1 46 3222 1 46 3224 1 46 3225 1 46 3226 1 46 3227 1 46 3228 1 46 3232 1 46 3235 1 46 3237 1 46 3238 1 46 3241 1 46 3243 1 46 3244 1 46 3246 1 46 3247 1 46 3248 1 46 3251 1 46 3253 1 46 3254 1 46 3256 1 46 3257 1 46 3258 1 46 3260 1 46 3261 1 46 3262 1 46 3263 1 46 3266 1 46 3268 1 46 3269 1 46 3271 1 46 3272 1 46 3273 1 46 3275 1 46 3276 1 46 3277 1 46 3278 1 46 3280 1 46 3281 1 46 3282 1 46 3283 1 46 3284 1 46 3287 1 46 3289 1 46 3290 1 46 3292 1 46 3293 1 46 3294 1 46 3296 1 46 3297 1 46 3298 1 46 3299 1 46 3301 1 46 3302 1 46 3303 1 46 3304 1 46 3305 1 46 3307 1 46 3308 1 46 3309 1 46 3310 1 46 3311 1 46 3312 1 47 1 1 47 2 1 47 3 1 47 4 1 47 5 1 47 6 1 47 7 1 47 8 1 47 121 1 47 122 1 47 123 1 47 124 1 47 125 1 47 126 1 47 127 1 47 128 1 47 129 1 47 130 1 47 131 1 47 132 1 47 133 1 47 134 1 47 135 1 47 136 1 47 137 1 47 138 1 47 139 1 47 140 1 47 141 1 47 142 1 47 143 1 47 144 1 47 145 1 47 146 1 47 147 1 47 148 1 47 331 1 47 332 1 47 333 1 47 334 1 47 335 1 47 336 1 47 337 1 47 338 1 47 339 1 47 340 1 47 341 1 47 342 1 47 343 1 47 344 1 47 345 1 47 346 1 47 347 1 47 348 1 47 349 1 47 350 1 47 351 1 47 352 1 47 353 1 47 354 1 47 355 1 47 356 1 47 357 1 47 358 1 47 541 1 47 542 1 47 543 1 47 544 1 47 545 1 47 546 1 47 547 1 47 548 1 47 549 1 47 550 1 47 551 1 47 552 1 47 553 1 47 554 1 47 555 1 47 556 1 47 557 1 47 558 1 47 559 1 47 560 1 47 561 1 47 562 1 47 563 1 47 564 1 47 565 1 47 566 1 47 567 1 47 568 1 47 569 1 47 570 1 47 571 1 47 572 1 47 573 1 47 574 1 47 575 1 47 576 1 47 577 1 47 578 1 47 579 1 47 580 1 47 581 1 47 582 1 47 583 1 47 584 1 47 585 1 47 586 1 47 587 1 47 588 1 47 589 1 47 590 1 47 591 1 47 592 1 47 593 1 47 594 1 47 595 1 47 596 1 47 793 1 47 794 1 47 795 1 47 796 1 47 797 1 47 798 1 47 799 1 47 800 1 47 801 1 47 802 1 47 803 1 47 804 1 47 805 1 47 806 1 47 807 1 47 808 1 47 809 1 47 810 1 47 811 1 47 812 1 47 813 1 47 814 1 47 815 1 47 816 1 47 817 1 47 818 1 47 819 1 47 820 1 47 1003 1 47 1004 1 47 1005 1 47 1006 1 47 1007 1 47 1008 1 47 1009 1 47 1010 1 47 1011 1 47 1012 1 47 1013 1 47 1014 1 47 1015 1 47 1016 1 47 1017 1 47 1018 1 47 1019 1 47 1020 1 47 1021 1 47 1022 1 47 1023 1 47 1024 1 47 1025 1 47 1026 1 47 1027 1 47 1028 1 47 1029 1 47 1030 1 47 1031 1 47 1032 1 47 1033 1 47 1034 1 47 1035 1 47 1036 1 47 1037 1 47 1038 1 47 1039 1 47 1040 1 47 1041 1 47 1042 1 47 1043 1 47 1044 1 47 1045 1 47 1046 1 47 1047 1 47 1048 1 47 1049 1 47 1050 1 47 1051 1 47 1052 1 47 1053 1 47 1054 1 47 1055 1 47 1056 1 47 1057 1 47 1058 1 47 1255 1 47 1256 1 47 1257 1 47 1258 1 47 1259 1 47 1260 1 47 1261 1 47 1262 1 47 1263 1 47 1264 1 47 1265 1 47 1266 1 47 1267 1 47 1268 1 47 1269 1 47 1270 1 47 1271 1 47 1272 1 47 1273 1 47 1274 1 47 1275 1 47 1276 1 47 1277 1 47 1278 1 47 1279 1 47 1280 1 47 1281 1 47 1282 1 47 1283 1 47 1284 1 47 1285 1 47 1286 1 47 1287 1 47 1288 1 47 1289 1 47 1290 1 47 1291 1 47 1292 1 47 1293 1 47 1294 1 47 1295 1 47 1296 1 47 1297 1 47 1298 1 47 1299 1 47 1300 1 47 1301 1 47 1302 1 47 1303 1 47 1304 1 47 1305 1 47 1306 1 47 1307 1 47 1308 1 47 1309 1 47 1310 1 47 1507 1 47 1508 1 47 1509 1 47 1510 1 47 1511 1 47 1512 1 47 1513 1 47 1514 1 47 1515 1 47 1516 1 47 1517 1 47 1518 1 47 1519 1 47 1520 1 47 1521 1 47 1522 1 47 1523 1 47 1524 1 47 1525 1 47 1526 1 47 1527 1 47 1528 1 47 1529 1 47 1530 1 47 1531 1 47 1532 1 47 1533 1 47 1534 1 47 1535 1 47 1536 1 47 1537 1 47 1538 1 47 1539 1 47 1540 1 47 1541 1 47 1542 1 47 1543 1 47 1544 1 47 1545 1 47 1546 1 47 1547 1 47 1548 1 47 1549 1 47 1550 1 47 1551 1 47 1552 1 47 1553 1 47 1554 1 47 1555 1 47 1556 1 47 1557 1 47 1558 1 47 1559 1 47 1560 1 47 1561 1 47 1562 1 47 1563 1 47 1564 1 47 1565 1 47 1566 1 47 1567 1 47 1568 1 47 1569 1 47 1570 1 47 1571 1 47 1572 1 47 1573 1 47 1574 1 47 1575 1 47 1576 1 47 1717 1 47 1718 1 47 1719 1 47 1720 1 47 1721 1 47 1722 1 47 1723 1 47 1724 1 47 1725 1 47 1726 1 47 1727 1 47 1728 1 47 1729 1 47 1730 1 47 1731 1 47 1732 1 47 1733 1 47 1734 1 47 1735 1 47 1736 1 47 1737 1 47 1738 1 47 1739 1 47 1740 1 47 1741 1 47 1742 1 47 1743 1 47 1744 1 47 1927 1 47 1928 1 47 1929 1 47 1930 1 47 1931 1 47 1932 1 47 1933 1 47 1934 1 47 1935 1 47 1936 1 47 1937 1 47 1938 1 47 1939 1 47 1940 1 47 1941 1 47 1942 1 47 1943 1 47 1944 1 47 1945 1 47 1946 1 47 1947 1 47 1948 1 47 1949 1 47 1950 1 47 1951 1 47 1952 1 47 1953 1 47 1954 1 47 1955 1 47 1956 1 47 1957 1 47 1958 1 47 1959 1 47 1960 1 47 1961 1 47 1962 1 47 1963 1 47 1964 1 47 1965 1 47 1966 1 47 1967 1 47 1968 1 47 1969 1 47 1970 1 47 1971 1 47 1972 1 47 1973 1 47 1974 1 47 1975 1 47 1976 1 47 1977 1 47 1978 1 47 1979 1 47 1980 1 47 1981 1 47 1982 1 47 2179 1 47 2180 1 47 2181 1 47 2182 1 47 2183 1 47 2184 1 47 2185 1 47 2186 1 47 2187 1 47 2188 1 47 2189 1 47 2190 1 47 2191 1 47 2192 1 47 2193 1 47 2194 1 47 2195 1 47 2196 1 47 2197 1 47 2198 1 47 2199 1 47 2200 1 47 2201 1 47 2202 1 47 2203 1 47 2204 1 47 2205 1 47 2206 1 47 2207 1 47 2208 1 47 2209 1 47 2210 1 47 2211 1 47 2212 1 47 2213 1 47 2214 1 47 2215 1 47 2216 1 47 2217 1 47 2218 1 47 2219 1 47 2220 1 47 2221 1 47 2222 1 47 2223 1 47 2224 1 47 2225 1 47 2226 1 47 2227 1 47 2228 1 47 2229 1 47 2230 1 47 2231 1 47 2232 1 47 2233 1 47 2234 1 47 2431 1 47 2432 1 47 2433 1 47 2434 1 47 2435 1 47 2436 1 47 2437 1 47 2438 1 47 2439 1 47 2440 1 47 2441 1 47 2442 1 47 2443 1 47 2444 1 47 2445 1 47 2446 1 47 2447 1 47 2448 1 47 2449 1 47 2450 1 47 2451 1 47 2452 1 47 2453 1 47 2454 1 47 2455 1 47 2456 1 47 2457 1 47 2458 1 47 2459 1 47 2460 1 47 2461 1 47 2462 1 47 2463 1 47 2464 1 47 2465 1 47 2466 1 47 2467 1 47 2468 1 47 2469 1 47 2470 1 47 2471 1 47 2472 1 47 2473 1 47 2474 1 47 2475 1 47 2476 1 47 2477 1 47 2478 1 47 2479 1 47 2480 1 47 2481 1 47 2482 1 47 2483 1 47 2484 1 47 2485 1 47 2486 1 47 2487 1 47 2488 1 47 2489 1 47 2490 1 47 2491 1 47 2492 1 47 2493 1 47 2494 1 47 2495 1 47 2496 1 47 2497 1 47 2498 1 47 2499 1 47 2500 1 47 2641 1 47 2642 1 47 2643 1 47 2644 1 47 2645 1 47 2646 1 47 2647 1 47 2648 1 47 2649 1 47 2650 1 47 2651 1 47 2652 1 47 2653 1 47 2654 1 47 2655 1 47 2656 1 47 2657 1 47 2658 1 47 2659 1 47 2660 1 47 2661 1 47 2662 1 47 2663 1 47 2664 1 47 2665 1 47 2666 1 47 2667 1 47 2668 1 47 2669 1 47 2670 1 47 2671 1 47 2672 1 47 2673 1 47 2674 1 47 2675 1 47 2676 1 47 2677 1 47 2678 1 47 2679 1 47 2680 1 47 2681 1 47 2682 1 47 2683 1 47 2684 1 47 2685 1 47 2686 1 47 2687 1 47 2688 1 47 2689 1 47 2690 1 47 2691 1 47 2692 1 47 2693 1 47 2694 1 47 2695 1 47 2696 1 47 2893 1 47 2894 1 47 2895 1 47 2896 1 47 2897 1 47 2898 1 47 2899 1 47 2900 1 47 2901 1 47 2902 1 47 2903 1 47 2904 1 47 2905 1 47 2906 1 47 2907 1 47 2908 1 47 2909 1 47 2910 1 47 2911 1 47 2912 1 47 2913 1 47 2914 1 47 2915 1 47 2916 1 47 2917 1 47 2918 1 47 2919 1 47 2920 1 47 2921 1 47 2922 1 47 2923 1 47 2924 1 47 2925 1 47 2926 1 47 2927 1 47 2928 1 47 2929 1 47 2930 1 47 2931 1 47 2932 1 47 2933 1 47 2934 1 47 2935 1 47 2936 1 47 2937 1 47 2938 1 47 2939 1 47 2940 1 47 2941 1 47 2942 1 47 2943 1 47 2944 1 47 2945 1 47 2946 1 47 2947 1 47 2948 1 47 2949 1 47 2950 1 47 2951 1 47 2952 1 47 2953 1 47 2954 1 47 2955 1 47 2956 1 47 2957 1 47 2958 1 47 2959 1 47 2960 1 47 2961 1 47 2962 1 47 3103 1 47 3104 1 47 3105 1 47 3106 1 47 3107 1 47 3108 1 47 3109 1 47 3110 1 47 3111 1 47 3112 1 47 3113 1 47 3114 1 47 3115 1 47 3116 1 47 3117 1 47 3118 1 47 3119 1 47 3120 1 47 3121 1 47 3122 1 47 3123 1 47 3124 1 47 3125 1 47 3126 1 47 3127 1 47 3128 1 47 3129 1 47 3130 1 47 3131 1 47 3132 1 47 3133 1 47 3134 1 47 3135 1 47 3136 1 47 3137 1 47 3138 1 47 3139 1 47 3140 1 47 3141 1 47 3142 1 47 3143 1 47 3144 1 47 3145 1 47 3146 1 47 3147 1 47 3148 1 47 3149 1 47 3150 1 47 3151 1 47 3152 1 47 3153 1 47 3154 1 47 3155 1 47 3156 1 47 3157 1 47 3158 1 47 3159 1 47 3160 1 47 3161 1 47 3162 1 47 3163 1 47 3164 1 47 3165 1 47 3166 1 47 3167 1 47 3168 1 47 3169 1 47 3170 1 47 3171 1 47 3172 1 47 3313 1 47 3314 1 47 3315 1 47 3316 1 47 3317 1 47 3318 1 47 3319 1 47 3320 1 47 3321 1 47 3322 1 47 3323 1 47 3324 1 47 3325 1 47 3326 1 47 3327 1 47 3328 1 47 3329 1 47 3330 1 47 3331 1 47 3332 1 47 3333 1 47 3334 1 47 3335 1 47 3336 1 47 3337 1 47 3338 1 47 3339 1 47 3340 1 47 3341 1 47 3342 1 47 3343 1 47 3344 1 47 3345 1 47 3346 1 47 3347 1 47 3348 1 47 3349 1 47 3350 1 47 3351 1 47 3352 1 47 3353 1 47 3354 1 47 3355 1 47 3356 1 47 3357 1 47 3358 1 47 3359 1 47 3360 1 47 3361 1 47 3362 1 47 3363 1 47 3364 1 47 3365 1 47 3366 1 47 3367 1 47 3368 1 48 1 1 48 9 1 48 10 1 48 11 1 48 12 1 48 13 1 48 14 1 48 15 1 48 121 1 48 122 1 48 123 1 48 124 1 48 125 1 48 126 1 48 127 1 48 149 1 48 150 1 48 151 1 48 152 1 48 153 1 48 154 1 48 155 1 48 156 1 48 157 1 48 158 1 48 159 1 48 160 1 48 161 1 48 162 1 48 163 1 48 164 1 48 165 1 48 166 1 48 167 1 48 168 1 48 169 1 48 331 1 48 332 1 48 333 1 48 334 1 48 335 1 48 336 1 48 337 1 48 359 1 48 360 1 48 361 1 48 362 1 48 363 1 48 364 1 48 365 1 48 366 1 48 367 1 48 368 1 48 369 1 48 370 1 48 371 1 48 372 1 48 373 1 48 374 1 48 375 1 48 376 1 48 377 1 48 378 1 48 379 1 48 541 1 48 542 1 48 543 1 48 544 1 48 545 1 48 546 1 48 547 1 48 548 1 48 549 1 48 550 1 48 551 1 48 552 1 48 553 1 48 554 1 48 555 1 48 556 1 48 557 1 48 558 1 48 559 1 48 560 1 48 561 1 48 597 1 48 598 1 48 599 1 48 600 1 48 601 1 48 602 1 48 603 1 48 604 1 48 605 1 48 606 1 48 607 1 48 608 1 48 609 1 48 610 1 48 611 1 48 612 1 48 613 1 48 614 1 48 615 1 48 616 1 48 617 1 48 618 1 48 619 1 48 620 1 48 621 1 48 622 1 48 623 1 48 624 1 48 625 1 48 626 1 48 627 1 48 628 1 48 629 1 48 630 1 48 631 1 48 793 1 48 794 1 48 795 1 48 796 1 48 797 1 48 798 1 48 799 1 48 821 1 48 822 1 48 823 1 48 824 1 48 825 1 48 826 1 48 827 1 48 828 1 48 829 1 48 830 1 48 831 1 48 832 1 48 833 1 48 834 1 48 835 1 48 836 1 48 837 1 48 838 1 48 839 1 48 840 1 48 841 1 48 1003 1 48 1004 1 48 1005 1 48 1006 1 48 1007 1 48 1008 1 48 1009 1 48 1010 1 48 1011 1 48 1012 1 48 1013 1 48 1014 1 48 1015 1 48 1016 1 48 1017 1 48 1018 1 48 1019 1 48 1020 1 48 1021 1 48 1022 1 48 1023 1 48 1059 1 48 1060 1 48 1061 1 48 1062 1 48 1063 1 48 1064 1 48 1065 1 48 1066 1 48 1067 1 48 1068 1 48 1069 1 48 1070 1 48 1071 1 48 1072 1 48 1073 1 48 1074 1 48 1075 1 48 1076 1 48 1077 1 48 1078 1 48 1079 1 48 1080 1 48 1081 1 48 1082 1 48 1083 1 48 1084 1 48 1085 1 48 1086 1 48 1087 1 48 1088 1 48 1089 1 48 1090 1 48 1091 1 48 1092 1 48 1093 1 48 1255 1 48 1256 1 48 1257 1 48 1258 1 48 1259 1 48 1260 1 48 1261 1 48 1262 1 48 1263 1 48 1264 1 48 1265 1 48 1266 1 48 1267 1 48 1268 1 48 1269 1 48 1270 1 48 1271 1 48 1272 1 48 1273 1 48 1274 1 48 1275 1 48 1311 1 48 1312 1 48 1313 1 48 1314 1 48 1315 1 48 1316 1 48 1317 1 48 1318 1 48 1319 1 48 1320 1 48 1321 1 48 1322 1 48 1323 1 48 1324 1 48 1325 1 48 1326 1 48 1327 1 48 1328 1 48 1329 1 48 1330 1 48 1331 1 48 1332 1 48 1333 1 48 1334 1 48 1335 1 48 1336 1 48 1337 1 48 1338 1 48 1339 1 48 1340 1 48 1341 1 48 1342 1 48 1343 1 48 1344 1 48 1345 1 48 1507 1 48 1508 1 48 1509 1 48 1510 1 48 1511 1 48 1512 1 48 1513 1 48 1514 1 48 1515 1 48 1516 1 48 1517 1 48 1518 1 48 1519 1 48 1520 1 48 1521 1 48 1522 1 48 1523 1 48 1524 1 48 1525 1 48 1526 1 48 1527 1 48 1528 1 48 1529 1 48 1530 1 48 1531 1 48 1532 1 48 1533 1 48 1534 1 48 1535 1 48 1536 1 48 1537 1 48 1538 1 48 1539 1 48 1540 1 48 1541 1 48 1577 1 48 1578 1 48 1579 1 48 1580 1 48 1581 1 48 1582 1 48 1583 1 48 1584 1 48 1585 1 48 1586 1 48 1587 1 48 1588 1 48 1589 1 48 1590 1 48 1591 1 48 1592 1 48 1593 1 48 1594 1 48 1595 1 48 1596 1 48 1597 1 48 1598 1 48 1599 1 48 1600 1 48 1601 1 48 1602 1 48 1603 1 48 1604 1 48 1605 1 48 1606 1 48 1607 1 48 1608 1 48 1609 1 48 1610 1 48 1611 1 48 1717 1 48 1718 1 48 1719 1 48 1720 1 48 1721 1 48 1722 1 48 1723 1 48 1745 1 48 1746 1 48 1747 1 48 1748 1 48 1749 1 48 1750 1 48 1751 1 48 1752 1 48 1753 1 48 1754 1 48 1755 1 48 1756 1 48 1757 1 48 1758 1 48 1759 1 48 1760 1 48 1761 1 48 1762 1 48 1763 1 48 1764 1 48 1765 1 48 1927 1 48 1928 1 48 1929 1 48 1930 1 48 1931 1 48 1932 1 48 1933 1 48 1934 1 48 1935 1 48 1936 1 48 1937 1 48 1938 1 48 1939 1 48 1940 1 48 1941 1 48 1942 1 48 1943 1 48 1944 1 48 1945 1 48 1946 1 48 1947 1 48 1983 1 48 1984 1 48 1985 1 48 1986 1 48 1987 1 48 1988 1 48 1989 1 48 1990 1 48 1991 1 48 1992 1 48 1993 1 48 1994 1 48 1995 1 48 1996 1 48 1997 1 48 1998 1 48 1999 1 48 2000 1 48 2001 1 48 2002 1 48 2003 1 48 2004 1 48 2005 1 48 2006 1 48 2007 1 48 2008 1 48 2009 1 48 2010 1 48 2011 1 48 2012 1 48 2013 1 48 2014 1 48 2015 1 48 2016 1 48 2017 1 48 2179 1 48 2180 1 48 2181 1 48 2182 1 48 2183 1 48 2184 1 48 2185 1 48 2186 1 48 2187 1 48 2188 1 48 2189 1 48 2190 1 48 2191 1 48 2192 1 48 2193 1 48 2194 1 48 2195 1 48 2196 1 48 2197 1 48 2198 1 48 2199 1 48 2235 1 48 2236 1 48 2237 1 48 2238 1 48 2239 1 48 2240 1 48 2241 1 48 2242 1 48 2243 1 48 2244 1 48 2245 1 48 2246 1 48 2247 1 48 2248 1 48 2249 1 48 2250 1 48 2251 1 48 2252 1 48 2253 1 48 2254 1 48 2255 1 48 2256 1 48 2257 1 48 2258 1 48 2259 1 48 2260 1 48 2261 1 48 2262 1 48 2263 1 48 2264 1 48 2265 1 48 2266 1 48 2267 1 48 2268 1 48 2269 1 48 2431 1 48 2432 1 48 2433 1 48 2434 1 48 2435 1 48 2436 1 48 2437 1 48 2438 1 48 2439 1 48 2440 1 48 2441 1 48 2442 1 48 2443 1 48 2444 1 48 2445 1 48 2446 1 48 2447 1 48 2448 1 48 2449 1 48 2450 1 48 2451 1 48 2452 1 48 2453 1 48 2454 1 48 2455 1 48 2456 1 48 2457 1 48 2458 1 48 2459 1 48 2460 1 48 2461 1 48 2462 1 48 2463 1 48 2464 1 48 2465 1 48 2501 1 48 2502 1 48 2503 1 48 2504 1 48 2505 1 48 2506 1 48 2507 1 48 2508 1 48 2509 1 48 2510 1 48 2511 1 48 2512 1 48 2513 1 48 2514 1 48 2515 1 48 2516 1 48 2517 1 48 2518 1 48 2519 1 48 2520 1 48 2521 1 48 2522 1 48 2523 1 48 2524 1 48 2525 1 48 2526 1 48 2527 1 48 2528 1 48 2529 1 48 2530 1 48 2531 1 48 2532 1 48 2533 1 48 2534 1 48 2535 1 48 2641 1 48 2642 1 48 2643 1 48 2644 1 48 2645 1 48 2646 1 48 2647 1 48 2648 1 48 2649 1 48 2650 1 48 2651 1 48 2652 1 48 2653 1 48 2654 1 48 2655 1 48 2656 1 48 2657 1 48 2658 1 48 2659 1 48 2660 1 48 2661 1 48 2697 1 48 2698 1 48 2699 1 48 2700 1 48 2701 1 48 2702 1 48 2703 1 48 2704 1 48 2705 1 48 2706 1 48 2707 1 48 2708 1 48 2709 1 48 2710 1 48 2711 1 48 2712 1 48 2713 1 48 2714 1 48 2715 1 48 2716 1 48 2717 1 48 2718 1 48 2719 1 48 2720 1 48 2721 1 48 2722 1 48 2723 1 48 2724 1 48 2725 1 48 2726 1 48 2727 1 48 2728 1 48 2729 1 48 2730 1 48 2731 1 48 2893 1 48 2894 1 48 2895 1 48 2896 1 48 2897 1 48 2898 1 48 2899 1 48 2900 1 48 2901 1 48 2902 1 48 2903 1 48 2904 1 48 2905 1 48 2906 1 48 2907 1 48 2908 1 48 2909 1 48 2910 1 48 2911 1 48 2912 1 48 2913 1 48 2914 1 48 2915 1 48 2916 1 48 2917 1 48 2918 1 48 2919 1 48 2920 1 48 2921 1 48 2922 1 48 2923 1 48 2924 1 48 2925 1 48 2926 1 48 2927 1 48 2963 1 48 2964 1 48 2965 1 48 2966 1 48 2967 1 48 2968 1 48 2969 1 48 2970 1 48 2971 1 48 2972 1 48 2973 1 48 2974 1 48 2975 1 48 2976 1 48 2977 1 48 2978 1 48 2979 1 48 2980 1 48 2981 1 48 2982 1 48 2983 1 48 2984 1 48 2985 1 48 2986 1 48 2987 1 48 2988 1 48 2989 1 48 2990 1 48 2991 1 48 2992 1 48 2993 1 48 2994 1 48 2995 1 48 2996 1 48 2997 1 48 3103 1 48 3104 1 48 3105 1 48 3106 1 48 3107 1 48 3108 1 48 3109 1 48 3110 1 48 3111 1 48 3112 1 48 3113 1 48 3114 1 48 3115 1 48 3116 1 48 3117 1 48 3118 1 48 3119 1 48 3120 1 48 3121 1 48 3122 1 48 3123 1 48 3124 1 48 3125 1 48 3126 1 48 3127 1 48 3128 1 48 3129 1 48 3130 1 48 3131 1 48 3132 1 48 3133 1 48 3134 1 48 3135 1 48 3136 1 48 3137 1 48 3173 1 48 3174 1 48 3175 1 48 3176 1 48 3177 1 48 3178 1 48 3179 1 48 3180 1 48 3181 1 48 3182 1 48 3183 1 48 3184 1 48 3185 1 48 3186 1 48 3187 1 48 3188 1 48 3189 1 48 3190 1 48 3191 1 48 3192 1 48 3193 1 48 3194 1 48 3195 1 48 3196 1 48 3197 1 48 3198 1 48 3199 1 48 3200 1 48 3201 1 48 3202 1 48 3203 1 48 3204 1 48 3205 1 48 3206 1 48 3207 1 48 3313 1 48 3314 1 48 3315 1 48 3316 1 48 3317 1 48 3318 1 48 3319 1 48 3320 1 48 3321 1 48 3322 1 48 3323 1 48 3324 1 48 3325 1 48 3326 1 48 3327 1 48 3328 1 48 3329 1 48 3330 1 48 3331 1 48 3332 1 48 3333 1 48 3334 1 48 3335 1 48 3336 1 48 3337 1 48 3338 1 48 3339 1 48 3340 1 48 3341 1 48 3342 1 48 3343 1 48 3344 1 48 3345 1 48 3346 1 48 3347 1 48 3369 1 48 3370 1 48 3371 1 48 3372 1 48 3373 1 48 3374 1 48 3375 1 48 3376 1 48 3377 1 48 3378 1 48 3379 1 48 3380 1 48 3381 1 48 3382 1 48 3383 1 48 3384 1 48 3385 1 48 3386 1 48 3387 1 48 3388 1 48 3389 1 49 2 1 49 9 1 49 16 1 49 17 1 49 18 1 49 19 1 49 20 1 49 21 1 49 121 1 49 128 1 49 129 1 49 130 1 49 131 1 49 132 1 49 133 1 49 149 1 49 150 1 49 151 1 49 152 1 49 153 1 49 154 1 49 170 1 49 171 1 49 172 1 49 173 1 49 174 1 49 175 1 49 176 1 49 177 1 49 178 1 49 179 1 49 180 1 49 181 1 49 182 1 49 183 1 49 184 1 49 331 1 49 338 1 49 339 1 49 340 1 49 341 1 49 342 1 49 343 1 49 359 1 49 360 1 49 361 1 49 362 1 49 363 1 49 364 1 49 380 1 49 381 1 49 382 1 49 383 1 49 384 1 49 385 1 49 386 1 49 387 1 49 388 1 49 389 1 49 390 1 49 391 1 49 392 1 49 393 1 49 394 1 49 541 1 49 542 1 49 543 1 49 544 1 49 545 1 49 546 1 49 562 1 49 563 1 49 564 1 49 565 1 49 566 1 49 567 1 49 568 1 49 569 1 49 570 1 49 571 1 49 572 1 49 573 1 49 574 1 49 575 1 49 576 1 49 597 1 49 598 1 49 599 1 49 600 1 49 601 1 49 602 1 49 603 1 49 604 1 49 605 1 49 606 1 49 607 1 49 608 1 49 609 1 49 610 1 49 611 1 49 632 1 49 633 1 49 634 1 49 635 1 49 636 1 49 637 1 49 638 1 49 639 1 49 640 1 49 641 1 49 642 1 49 643 1 49 644 1 49 645 1 49 646 1 49 647 1 49 648 1 49 649 1 49 650 1 49 651 1 49 793 1 49 800 1 49 801 1 49 802 1 49 803 1 49 804 1 49 805 1 49 821 1 49 822 1 49 823 1 49 824 1 49 825 1 49 826 1 49 842 1 49 843 1 49 844 1 49 845 1 49 846 1 49 847 1 49 848 1 49 849 1 49 850 1 49 851 1 49 852 1 49 853 1 49 854 1 49 855 1 49 856 1 49 1003 1 49 1004 1 49 1005 1 49 1006 1 49 1007 1 49 1008 1 49 1024 1 49 1025 1 49 1026 1 49 1027 1 49 1028 1 49 1029 1 49 1030 1 49 1031 1 49 1032 1 49 1033 1 49 1034 1 49 1035 1 49 1036 1 49 1037 1 49 1038 1 49 1059 1 49 1060 1 49 1061 1 49 1062 1 49 1063 1 49 1064 1 49 1065 1 49 1066 1 49 1067 1 49 1068 1 49 1069 1 49 1070 1 49 1071 1 49 1072 1 49 1073 1 49 1094 1 49 1095 1 49 1096 1 49 1097 1 49 1098 1 49 1099 1 49 1100 1 49 1101 1 49 1102 1 49 1103 1 49 1104 1 49 1105 1 49 1106 1 49 1107 1 49 1108 1 49 1109 1 49 1110 1 49 1111 1 49 1112 1 49 1113 1 49 1255 1 49 1256 1 49 1257 1 49 1258 1 49 1259 1 49 1260 1 49 1276 1 49 1277 1 49 1278 1 49 1279 1 49 1280 1 49 1281 1 49 1282 1 49 1283 1 49 1284 1 49 1285 1 49 1286 1 49 1287 1 49 1288 1 49 1289 1 49 1290 1 49 1311 1 49 1312 1 49 1313 1 49 1314 1 49 1315 1 49 1316 1 49 1317 1 49 1318 1 49 1319 1 49 1320 1 49 1321 1 49 1322 1 49 1323 1 49 1324 1 49 1325 1 49 1346 1 49 1347 1 49 1348 1 49 1349 1 49 1350 1 49 1351 1 49 1352 1 49 1353 1 49 1354 1 49 1355 1 49 1356 1 49 1357 1 49 1358 1 49 1359 1 49 1360 1 49 1361 1 49 1362 1 49 1363 1 49 1364 1 49 1365 1 49 1507 1 49 1508 1 49 1509 1 49 1510 1 49 1511 1 49 1512 1 49 1513 1 49 1514 1 49 1515 1 49 1516 1 49 1517 1 49 1518 1 49 1519 1 49 1520 1 49 1521 1 49 1542 1 49 1543 1 49 1544 1 49 1545 1 49 1546 1 49 1547 1 49 1548 1 49 1549 1 49 1550 1 49 1551 1 49 1552 1 49 1553 1 49 1554 1 49 1555 1 49 1556 1 49 1557 1 49 1558 1 49 1559 1 49 1560 1 49 1561 1 49 1577 1 49 1578 1 49 1579 1 49 1580 1 49 1581 1 49 1582 1 49 1583 1 49 1584 1 49 1585 1 49 1586 1 49 1587 1 49 1588 1 49 1589 1 49 1590 1 49 1591 1 49 1592 1 49 1593 1 49 1594 1 49 1595 1 49 1596 1 49 1612 1 49 1613 1 49 1614 1 49 1615 1 49 1616 1 49 1617 1 49 1618 1 49 1619 1 49 1620 1 49 1621 1 49 1622 1 49 1623 1 49 1624 1 49 1625 1 49 1626 1 49 1717 1 49 1724 1 49 1725 1 49 1726 1 49 1727 1 49 1728 1 49 1729 1 49 1745 1 49 1746 1 49 1747 1 49 1748 1 49 1749 1 49 1750 1 49 1766 1 49 1767 1 49 1768 1 49 1769 1 49 1770 1 49 1771 1 49 1772 1 49 1773 1 49 1774 1 49 1775 1 49 1776 1 49 1777 1 49 1778 1 49 1779 1 49 1780 1 49 1927 1 49 1928 1 49 1929 1 49 1930 1 49 1931 1 49 1932 1 49 1948 1 49 1949 1 49 1950 1 49 1951 1 49 1952 1 49 1953 1 49 1954 1 49 1955 1 49 1956 1 49 1957 1 49 1958 1 49 1959 1 49 1960 1 49 1961 1 49 1962 1 49 1983 1 49 1984 1 49 1985 1 49 1986 1 49 1987 1 49 1988 1 49 1989 1 49 1990 1 49 1991 1 49 1992 1 49 1993 1 49 1994 1 49 1995 1 49 1996 1 49 1997 1 49 2018 1 49 2019 1 49 2020 1 49 2021 1 49 2022 1 49 2023 1 49 2024 1 49 2025 1 49 2026 1 49 2027 1 49 2028 1 49 2029 1 49 2030 1 49 2031 1 49 2032 1 49 2033 1 49 2034 1 49 2035 1 49 2036 1 49 2037 1 49 2179 1 49 2180 1 49 2181 1 49 2182 1 49 2183 1 49 2184 1 49 2200 1 49 2201 1 49 2202 1 49 2203 1 49 2204 1 49 2205 1 49 2206 1 49 2207 1 49 2208 1 49 2209 1 49 2210 1 49 2211 1 49 2212 1 49 2213 1 49 2214 1 49 2235 1 49 2236 1 49 2237 1 49 2238 1 49 2239 1 49 2240 1 49 2241 1 49 2242 1 49 2243 1 49 2244 1 49 2245 1 49 2246 1 49 2247 1 49 2248 1 49 2249 1 49 2270 1 49 2271 1 49 2272 1 49 2273 1 49 2274 1 49 2275 1 49 2276 1 49 2277 1 49 2278 1 49 2279 1 49 2280 1 49 2281 1 49 2282 1 49 2283 1 49 2284 1 49 2285 1 49 2286 1 49 2287 1 49 2288 1 49 2289 1 49 2431 1 49 2432 1 49 2433 1 49 2434 1 49 2435 1 49 2436 1 49 2437 1 49 2438 1 49 2439 1 49 2440 1 49 2441 1 49 2442 1 49 2443 1 49 2444 1 49 2445 1 49 2466 1 49 2467 1 49 2468 1 49 2469 1 49 2470 1 49 2471 1 49 2472 1 49 2473 1 49 2474 1 49 2475 1 49 2476 1 49 2477 1 49 2478 1 49 2479 1 49 2480 1 49 2481 1 49 2482 1 49 2483 1 49 2484 1 49 2485 1 49 2501 1 49 2502 1 49 2503 1 49 2504 1 49 2505 1 49 2506 1 49 2507 1 49 2508 1 49 2509 1 49 2510 1 49 2511 1 49 2512 1 49 2513 1 49 2514 1 49 2515 1 49 2516 1 49 2517 1 49 2518 1 49 2519 1 49 2520 1 49 2536 1 49 2537 1 49 2538 1 49 2539 1 49 2540 1 49 2541 1 49 2542 1 49 2543 1 49 2544 1 49 2545 1 49 2546 1 49 2547 1 49 2548 1 49 2549 1 49 2550 1 49 2641 1 49 2642 1 49 2643 1 49 2644 1 49 2645 1 49 2646 1 49 2662 1 49 2663 1 49 2664 1 49 2665 1 49 2666 1 49 2667 1 49 2668 1 49 2669 1 49 2670 1 49 2671 1 49 2672 1 49 2673 1 49 2674 1 49 2675 1 49 2676 1 49 2697 1 49 2698 1 49 2699 1 49 2700 1 49 2701 1 49 2702 1 49 2703 1 49 2704 1 49 2705 1 49 2706 1 49 2707 1 49 2708 1 49 2709 1 49 2710 1 49 2711 1 49 2732 1 49 2733 1 49 2734 1 49 2735 1 49 2736 1 49 2737 1 49 2738 1 49 2739 1 49 2740 1 49 2741 1 49 2742 1 49 2743 1 49 2744 1 49 2745 1 49 2746 1 49 2747 1 49 2748 1 49 2749 1 49 2750 1 49 2751 1 49 2893 1 49 2894 1 49 2895 1 49 2896 1 49 2897 1 49 2898 1 49 2899 1 49 2900 1 49 2901 1 49 2902 1 49 2903 1 49 2904 1 49 2905 1 49 2906 1 49 2907 1 49 2928 1 49 2929 1 49 2930 1 49 2931 1 49 2932 1 49 2933 1 49 2934 1 49 2935 1 49 2936 1 49 2937 1 49 2938 1 49 2939 1 49 2940 1 49 2941 1 49 2942 1 49 2943 1 49 2944 1 49 2945 1 49 2946 1 49 2947 1 49 2963 1 49 2964 1 49 2965 1 49 2966 1 49 2967 1 49 2968 1 49 2969 1 49 2970 1 49 2971 1 49 2972 1 49 2973 1 49 2974 1 49 2975 1 49 2976 1 49 2977 1 49 2978 1 49 2979 1 49 2980 1 49 2981 1 49 2982 1 49 2998 1 49 2999 1 49 3000 1 49 3001 1 49 3002 1 49 3003 1 49 3004 1 49 3005 1 49 3006 1 49 3007 1 49 3008 1 49 3009 1 49 3010 1 49 3011 1 49 3012 1 49 3103 1 49 3104 1 49 3105 1 49 3106 1 49 3107 1 49 3108 1 49 3109 1 49 3110 1 49 3111 1 49 3112 1 49 3113 1 49 3114 1 49 3115 1 49 3116 1 49 3117 1 49 3138 1 49 3139 1 49 3140 1 49 3141 1 49 3142 1 49 3143 1 49 3144 1 49 3145 1 49 3146 1 49 3147 1 49 3148 1 49 3149 1 49 3150 1 49 3151 1 49 3152 1 49 3153 1 49 3154 1 49 3155 1 49 3156 1 49 3157 1 49 3173 1 49 3174 1 49 3175 1 49 3176 1 49 3177 1 49 3178 1 49 3179 1 49 3180 1 49 3181 1 49 3182 1 49 3183 1 49 3184 1 49 3185 1 49 3186 1 49 3187 1 49 3188 1 49 3189 1 49 3190 1 49 3191 1 49 3192 1 49 3208 1 49 3209 1 49 3210 1 49 3211 1 49 3212 1 49 3213 1 49 3214 1 49 3215 1 49 3216 1 49 3217 1 49 3218 1 49 3219 1 49 3220 1 49 3221 1 49 3222 1 49 3313 1 49 3314 1 49 3315 1 49 3316 1 49 3317 1 49 3318 1 49 3319 1 49 3320 1 49 3321 1 49 3322 1 49 3323 1 49 3324 1 49 3325 1 49 3326 1 49 3327 1 49 3328 1 49 3329 1 49 3330 1 49 3331 1 49 3332 1 49 3348 1 49 3349 1 49 3350 1 49 3351 1 49 3352 1 49 3353 1 49 3354 1 49 3355 1 49 3356 1 49 3357 1 49 3358 1 49 3359 1 49 3360 1 49 3361 1 49 3362 1 49 3369 1 49 3370 1 49 3371 1 49 3372 1 49 3373 1 49 3374 1 49 3375 1 49 3376 1 49 3377 1 49 3378 1 49 3379 1 49 3380 1 49 3381 1 49 3382 1 49 3383 1 49 3390 1 49 3391 1 49 3392 1 49 3393 1 49 3394 1 49 3395 1 50 3 1 50 10 1 50 16 1 50 22 1 50 23 1 50 24 1 50 25 1 50 26 1 50 122 1 50 128 1 50 134 1 50 135 1 50 136 1 50 137 1 50 138 1 50 149 1 50 155 1 50 156 1 50 157 1 50 158 1 50 159 1 50 170 1 50 171 1 50 172 1 50 173 1 50 174 1 50 185 1 50 186 1 50 187 1 50 188 1 50 189 1 50 190 1 50 191 1 50 192 1 50 193 1 50 194 1 50 332 1 50 338 1 50 344 1 50 345 1 50 346 1 50 347 1 50 348 1 50 359 1 50 365 1 50 366 1 50 367 1 50 368 1 50 369 1 50 380 1 50 381 1 50 382 1 50 383 1 50 384 1 50 395 1 50 396 1 50 397 1 50 398 1 50 399 1 50 400 1 50 401 1 50 402 1 50 403 1 50 404 1 50 541 1 50 547 1 50 548 1 50 549 1 50 550 1 50 551 1 50 562 1 50 563 1 50 564 1 50 565 1 50 566 1 50 577 1 50 578 1 50 579 1 50 580 1 50 581 1 50 582 1 50 583 1 50 584 1 50 585 1 50 586 1 50 597 1 50 598 1 50 599 1 50 600 1 50 601 1 50 612 1 50 613 1 50 614 1 50 615 1 50 616 1 50 617 1 50 618 1 50 619 1 50 620 1 50 621 1 50 632 1 50 633 1 50 634 1 50 635 1 50 636 1 50 637 1 50 638 1 50 639 1 50 640 1 50 641 1 50 652 1 50 653 1 50 654 1 50 655 1 50 656 1 50 657 1 50 658 1 50 659 1 50 660 1 50 661 1 50 794 1 50 800 1 50 806 1 50 807 1 50 808 1 50 809 1 50 810 1 50 821 1 50 827 1 50 828 1 50 829 1 50 830 1 50 831 1 50 842 1 50 843 1 50 844 1 50 845 1 50 846 1 50 857 1 50 858 1 50 859 1 50 860 1 50 861 1 50 862 1 50 863 1 50 864 1 50 865 1 50 866 1 50 1003 1 50 1009 1 50 1010 1 50 1011 1 50 1012 1 50 1013 1 50 1024 1 50 1025 1 50 1026 1 50 1027 1 50 1028 1 50 1039 1 50 1040 1 50 1041 1 50 1042 1 50 1043 1 50 1044 1 50 1045 1 50 1046 1 50 1047 1 50 1048 1 50 1059 1 50 1060 1 50 1061 1 50 1062 1 50 1063 1 50 1074 1 50 1075 1 50 1076 1 50 1077 1 50 1078 1 50 1079 1 50 1080 1 50 1081 1 50 1082 1 50 1083 1 50 1094 1 50 1095 1 50 1096 1 50 1097 1 50 1098 1 50 1099 1 50 1100 1 50 1101 1 50 1102 1 50 1103 1 50 1114 1 50 1115 1 50 1116 1 50 1117 1 50 1118 1 50 1119 1 50 1120 1 50 1121 1 50 1122 1 50 1123 1 50 1255 1 50 1261 1 50 1262 1 50 1263 1 50 1264 1 50 1265 1 50 1276 1 50 1277 1 50 1278 1 50 1279 1 50 1280 1 50 1291 1 50 1292 1 50 1293 1 50 1294 1 50 1295 1 50 1296 1 50 1297 1 50 1298 1 50 1299 1 50 1300 1 50 1311 1 50 1312 1 50 1313 1 50 1314 1 50 1315 1 50 1326 1 50 1327 1 50 1328 1 50 1329 1 50 1330 1 50 1331 1 50 1332 1 50 1333 1 50 1334 1 50 1335 1 50 1346 1 50 1347 1 50 1348 1 50 1349 1 50 1350 1 50 1351 1 50 1352 1 50 1353 1 50 1354 1 50 1355 1 50 1366 1 50 1367 1 50 1368 1 50 1369 1 50 1370 1 50 1371 1 50 1372 1 50 1373 1 50 1374 1 50 1375 1 50 1507 1 50 1508 1 50 1509 1 50 1510 1 50 1511 1 50 1522 1 50 1523 1 50 1524 1 50 1525 1 50 1526 1 50 1527 1 50 1528 1 50 1529 1 50 1530 1 50 1531 1 50 1542 1 50 1543 1 50 1544 1 50 1545 1 50 1546 1 50 1547 1 50 1548 1 50 1549 1 50 1550 1 50 1551 1 50 1562 1 50 1563 1 50 1564 1 50 1565 1 50 1566 1 50 1567 1 50 1568 1 50 1569 1 50 1570 1 50 1571 1 50 1577 1 50 1578 1 50 1579 1 50 1580 1 50 1581 1 50 1582 1 50 1583 1 50 1584 1 50 1585 1 50 1586 1 50 1597 1 50 1598 1 50 1599 1 50 1600 1 50 1601 1 50 1602 1 50 1603 1 50 1604 1 50 1605 1 50 1606 1 50 1612 1 50 1613 1 50 1614 1 50 1615 1 50 1616 1 50 1617 1 50 1618 1 50 1619 1 50 1620 1 50 1621 1 50 1627 1 50 1628 1 50 1629 1 50 1630 1 50 1631 1 50 1718 1 50 1724 1 50 1730 1 50 1731 1 50 1732 1 50 1733 1 50 1734 1 50 1745 1 50 1751 1 50 1752 1 50 1753 1 50 1754 1 50 1755 1 50 1766 1 50 1767 1 50 1768 1 50 1769 1 50 1770 1 50 1781 1 50 1782 1 50 1783 1 50 1784 1 50 1785 1 50 1786 1 50 1787 1 50 1788 1 50 1789 1 50 1790 1 50 1927 1 50 1933 1 50 1934 1 50 1935 1 50 1936 1 50 1937 1 50 1948 1 50 1949 1 50 1950 1 50 1951 1 50 1952 1 50 1963 1 50 1964 1 50 1965 1 50 1966 1 50 1967 1 50 1968 1 50 1969 1 50 1970 1 50 1971 1 50 1972 1 50 1983 1 50 1984 1 50 1985 1 50 1986 1 50 1987 1 50 1998 1 50 1999 1 50 2000 1 50 2001 1 50 2002 1 50 2003 1 50 2004 1 50 2005 1 50 2006 1 50 2007 1 50 2018 1 50 2019 1 50 2020 1 50 2021 1 50 2022 1 50 2023 1 50 2024 1 50 2025 1 50 2026 1 50 2027 1 50 2038 1 50 2039 1 50 2040 1 50 2041 1 50 2042 1 50 2043 1 50 2044 1 50 2045 1 50 2046 1 50 2047 1 50 2179 1 50 2185 1 50 2186 1 50 2187 1 50 2188 1 50 2189 1 50 2200 1 50 2201 1 50 2202 1 50 2203 1 50 2204 1 50 2215 1 50 2216 1 50 2217 1 50 2218 1 50 2219 1 50 2220 1 50 2221 1 50 2222 1 50 2223 1 50 2224 1 50 2235 1 50 2236 1 50 2237 1 50 2238 1 50 2239 1 50 2250 1 50 2251 1 50 2252 1 50 2253 1 50 2254 1 50 2255 1 50 2256 1 50 2257 1 50 2258 1 50 2259 1 50 2270 1 50 2271 1 50 2272 1 50 2273 1 50 2274 1 50 2275 1 50 2276 1 50 2277 1 50 2278 1 50 2279 1 50 2290 1 50 2291 1 50 2292 1 50 2293 1 50 2294 1 50 2295 1 50 2296 1 50 2297 1 50 2298 1 50 2299 1 50 2431 1 50 2432 1 50 2433 1 50 2434 1 50 2435 1 50 2446 1 50 2447 1 50 2448 1 50 2449 1 50 2450 1 50 2451 1 50 2452 1 50 2453 1 50 2454 1 50 2455 1 50 2466 1 50 2467 1 50 2468 1 50 2469 1 50 2470 1 50 2471 1 50 2472 1 50 2473 1 50 2474 1 50 2475 1 50 2486 1 50 2487 1 50 2488 1 50 2489 1 50 2490 1 50 2491 1 50 2492 1 50 2493 1 50 2494 1 50 2495 1 50 2501 1 50 2502 1 50 2503 1 50 2504 1 50 2505 1 50 2506 1 50 2507 1 50 2508 1 50 2509 1 50 2510 1 50 2521 1 50 2522 1 50 2523 1 50 2524 1 50 2525 1 50 2526 1 50 2527 1 50 2528 1 50 2529 1 50 2530 1 50 2536 1 50 2537 1 50 2538 1 50 2539 1 50 2540 1 50 2541 1 50 2542 1 50 2543 1 50 2544 1 50 2545 1 50 2551 1 50 2552 1 50 2553 1 50 2554 1 50 2555 1 50 2641 1 50 2647 1 50 2648 1 50 2649 1 50 2650 1 50 2651 1 50 2662 1 50 2663 1 50 2664 1 50 2665 1 50 2666 1 50 2677 1 50 2678 1 50 2679 1 50 2680 1 50 2681 1 50 2682 1 50 2683 1 50 2684 1 50 2685 1 50 2686 1 50 2697 1 50 2698 1 50 2699 1 50 2700 1 50 2701 1 50 2712 1 50 2713 1 50 2714 1 50 2715 1 50 2716 1 50 2717 1 50 2718 1 50 2719 1 50 2720 1 50 2721 1 50 2732 1 50 2733 1 50 2734 1 50 2735 1 50 2736 1 50 2737 1 50 2738 1 50 2739 1 50 2740 1 50 2741 1 50 2752 1 50 2753 1 50 2754 1 50 2755 1 50 2756 1 50 2757 1 50 2758 1 50 2759 1 50 2760 1 50 2761 1 50 2893 1 50 2894 1 50 2895 1 50 2896 1 50 2897 1 50 2908 1 50 2909 1 50 2910 1 50 2911 1 50 2912 1 50 2913 1 50 2914 1 50 2915 1 50 2916 1 50 2917 1 50 2928 1 50 2929 1 50 2930 1 50 2931 1 50 2932 1 50 2933 1 50 2934 1 50 2935 1 50 2936 1 50 2937 1 50 2948 1 50 2949 1 50 2950 1 50 2951 1 50 2952 1 50 2953 1 50 2954 1 50 2955 1 50 2956 1 50 2957 1 50 2963 1 50 2964 1 50 2965 1 50 2966 1 50 2967 1 50 2968 1 50 2969 1 50 2970 1 50 2971 1 50 2972 1 50 2983 1 50 2984 1 50 2985 1 50 2986 1 50 2987 1 50 2988 1 50 2989 1 50 2990 1 50 2991 1 50 2992 1 50 2998 1 50 2999 1 50 3000 1 50 3001 1 50 3002 1 50 3003 1 50 3004 1 50 3005 1 50 3006 1 50 3007 1 50 3013 1 50 3014 1 50 3015 1 50 3016 1 50 3017 1 50 3103 1 50 3104 1 50 3105 1 50 3106 1 50 3107 1 50 3118 1 50 3119 1 50 3120 1 50 3121 1 50 3122 1 50 3123 1 50 3124 1 50 3125 1 50 3126 1 50 3127 1 50 3138 1 50 3139 1 50 3140 1 50 3141 1 50 3142 1 50 3143 1 50 3144 1 50 3145 1 50 3146 1 50 3147 1 50 3158 1 50 3159 1 50 3160 1 50 3161 1 50 3162 1 50 3163 1 50 3164 1 50 3165 1 50 3166 1 50 3167 1 50 3173 1 50 3174 1 50 3175 1 50 3176 1 50 3177 1 50 3178 1 50 3179 1 50 3180 1 50 3181 1 50 3182 1 50 3193 1 50 3194 1 50 3195 1 50 3196 1 50 3197 1 50 3198 1 50 3199 1 50 3200 1 50 3201 1 50 3202 1 50 3208 1 50 3209 1 50 3210 1 50 3211 1 50 3212 1 50 3213 1 50 3214 1 50 3215 1 50 3216 1 50 3217 1 50 3223 1 50 3224 1 50 3225 1 50 3226 1 50 3227 1 50 3313 1 50 3314 1 50 3315 1 50 3316 1 50 3317 1 50 3318 1 50 3319 1 50 3320 1 50 3321 1 50 3322 1 50 3333 1 50 3334 1 50 3335 1 50 3336 1 50 3337 1 50 3338 1 50 3339 1 50 3340 1 50 3341 1 50 3342 1 50 3348 1 50 3349 1 50 3350 1 50 3351 1 50 3352 1 50 3353 1 50 3354 1 50 3355 1 50 3356 1 50 3357 1 50 3363 1 50 3364 1 50 3365 1 50 3366 1 50 3367 1 50 3369 1 50 3370 1 50 3371 1 50 3372 1 50 3373 1 50 3374 1 50 3375 1 50 3376 1 50 3377 1 50 3378 1 50 3384 1 50 3385 1 50 3386 1 50 3387 1 50 3388 1 50 3390 1 50 3391 1 50 3392 1 50 3393 1 50 3394 1 50 3396 1 51 4 1 51 11 1 51 17 1 51 22 1 51 27 1 51 28 1 51 29 1 51 30 1 51 123 1 51 129 1 51 134 1 51 139 1 51 140 1 51 141 1 51 142 1 51 150 1 51 155 1 51 160 1 51 161 1 51 162 1 51 163 1 51 170 1 51 175 1 51 176 1 51 177 1 51 178 1 51 185 1 51 186 1 51 187 1 51 188 1 51 195 1 51 196 1 51 197 1 51 198 1 51 199 1 51 200 1 51 333 1 51 339 1 51 344 1 51 349 1 51 350 1 51 351 1 51 352 1 51 360 1 51 365 1 51 370 1 51 371 1 51 372 1 51 373 1 51 380 1 51 385 1 51 386 1 51 387 1 51 388 1 51 395 1 51 396 1 51 397 1 51 398 1 51 405 1 51 406 1 51 407 1 51 408 1 51 409 1 51 410 1 51 542 1 51 547 1 51 552 1 51 553 1 51 554 1 51 555 1 51 562 1 51 567 1 51 568 1 51 569 1 51 570 1 51 577 1 51 578 1 51 579 1 51 580 1 51 587 1 51 588 1 51 589 1 51 590 1 51 591 1 51 592 1 51 597 1 51 602 1 51 603 1 51 604 1 51 605 1 51 612 1 51 613 1 51 614 1 51 615 1 51 622 1 51 623 1 51 624 1 51 625 1 51 626 1 51 627 1 51 632 1 51 633 1 51 634 1 51 635 1 51 642 1 51 643 1 51 644 1 51 645 1 51 646 1 51 647 1 51 652 1 51 653 1 51 654 1 51 655 1 51 656 1 51 657 1 51 662 1 51 663 1 51 664 1 51 665 1 51 795 1 51 801 1 51 806 1 51 811 1 51 812 1 51 813 1 51 814 1 51 822 1 51 827 1 51 832 1 51 833 1 51 834 1 51 835 1 51 842 1 51 847 1 51 848 1 51 849 1 51 850 1 51 857 1 51 858 1 51 859 1 51 860 1 51 867 1 51 868 1 51 869 1 51 870 1 51 871 1 51 872 1 51 1004 1 51 1009 1 51 1014 1 51 1015 1 51 1016 1 51 1017 1 51 1024 1 51 1029 1 51 1030 1 51 1031 1 51 1032 1 51 1039 1 51 1040 1 51 1041 1 51 1042 1 51 1049 1 51 1050 1 51 1051 1 51 1052 1 51 1053 1 51 1054 1 51 1059 1 51 1064 1 51 1065 1 51 1066 1 51 1067 1 51 1074 1 51 1075 1 51 1076 1 51 1077 1 51 1084 1 51 1085 1 51 1086 1 51 1087 1 51 1088 1 51 1089 1 51 1094 1 51 1095 1 51 1096 1 51 1097 1 51 1104 1 51 1105 1 51 1106 1 51 1107 1 51 1108 1 51 1109 1 51 1114 1 51 1115 1 51 1116 1 51 1117 1 51 1118 1 51 1119 1 51 1124 1 51 1125 1 51 1126 1 51 1127 1 51 1256 1 51 1261 1 51 1266 1 51 1267 1 51 1268 1 51 1269 1 51 1276 1 51 1281 1 51 1282 1 51 1283 1 51 1284 1 51 1291 1 51 1292 1 51 1293 1 51 1294 1 51 1301 1 51 1302 1 51 1303 1 51 1304 1 51 1305 1 51 1306 1 51 1311 1 51 1316 1 51 1317 1 51 1318 1 51 1319 1 51 1326 1 51 1327 1 51 1328 1 51 1329 1 51 1336 1 51 1337 1 51 1338 1 51 1339 1 51 1340 1 51 1341 1 51 1346 1 51 1347 1 51 1348 1 51 1349 1 51 1356 1 51 1357 1 51 1358 1 51 1359 1 51 1360 1 51 1361 1 51 1366 1 51 1367 1 51 1368 1 51 1369 1 51 1370 1 51 1371 1 51 1376 1 51 1377 1 51 1378 1 51 1379 1 51 1507 1 51 1512 1 51 1513 1 51 1514 1 51 1515 1 51 1522 1 51 1523 1 51 1524 1 51 1525 1 51 1532 1 51 1533 1 51 1534 1 51 1535 1 51 1536 1 51 1537 1 51 1542 1 51 1543 1 51 1544 1 51 1545 1 51 1552 1 51 1553 1 51 1554 1 51 1555 1 51 1556 1 51 1557 1 51 1562 1 51 1563 1 51 1564 1 51 1565 1 51 1566 1 51 1567 1 51 1572 1 51 1573 1 51 1574 1 51 1575 1 51 1577 1 51 1578 1 51 1579 1 51 1580 1 51 1587 1 51 1588 1 51 1589 1 51 1590 1 51 1591 1 51 1592 1 51 1597 1 51 1598 1 51 1599 1 51 1600 1 51 1601 1 51 1602 1 51 1607 1 51 1608 1 51 1609 1 51 1610 1 51 1612 1 51 1613 1 51 1614 1 51 1615 1 51 1616 1 51 1617 1 51 1622 1 51 1623 1 51 1624 1 51 1625 1 51 1627 1 51 1628 1 51 1629 1 51 1630 1 51 1632 1 51 1719 1 51 1725 1 51 1730 1 51 1735 1 51 1736 1 51 1737 1 51 1738 1 51 1746 1 51 1751 1 51 1756 1 51 1757 1 51 1758 1 51 1759 1 51 1766 1 51 1771 1 51 1772 1 51 1773 1 51 1774 1 51 1781 1 51 1782 1 51 1783 1 51 1784 1 51 1791 1 51 1792 1 51 1793 1 51 1794 1 51 1795 1 51 1796 1 51 1928 1 51 1933 1 51 1938 1 51 1939 1 51 1940 1 51 1941 1 51 1948 1 51 1953 1 51 1954 1 51 1955 1 51 1956 1 51 1963 1 51 1964 1 51 1965 1 51 1966 1 51 1973 1 51 1974 1 51 1975 1 51 1976 1 51 1977 1 51 1978 1 51 1983 1 51 1988 1 51 1989 1 51 1990 1 51 1991 1 51 1998 1 51 1999 1 51 2000 1 51 2001 1 51 2008 1 51 2009 1 51 2010 1 51 2011 1 51 2012 1 51 2013 1 51 2018 1 51 2019 1 51 2020 1 51 2021 1 51 2028 1 51 2029 1 51 2030 1 51 2031 1 51 2032 1 51 2033 1 51 2038 1 51 2039 1 51 2040 1 51 2041 1 51 2042 1 51 2043 1 51 2048 1 51 2049 1 51 2050 1 51 2051 1 51 2180 1 51 2185 1 51 2190 1 51 2191 1 51 2192 1 51 2193 1 51 2200 1 51 2205 1 51 2206 1 51 2207 1 51 2208 1 51 2215 1 51 2216 1 51 2217 1 51 2218 1 51 2225 1 51 2226 1 51 2227 1 51 2228 1 51 2229 1 51 2230 1 51 2235 1 51 2240 1 51 2241 1 51 2242 1 51 2243 1 51 2250 1 51 2251 1 51 2252 1 51 2253 1 51 2260 1 51 2261 1 51 2262 1 51 2263 1 51 2264 1 51 2265 1 51 2270 1 51 2271 1 51 2272 1 51 2273 1 51 2280 1 51 2281 1 51 2282 1 51 2283 1 51 2284 1 51 2285 1 51 2290 1 51 2291 1 51 2292 1 51 2293 1 51 2294 1 51 2295 1 51 2300 1 51 2301 1 51 2302 1 51 2303 1 51 2431 1 51 2436 1 51 2437 1 51 2438 1 51 2439 1 51 2446 1 51 2447 1 51 2448 1 51 2449 1 51 2456 1 51 2457 1 51 2458 1 51 2459 1 51 2460 1 51 2461 1 51 2466 1 51 2467 1 51 2468 1 51 2469 1 51 2476 1 51 2477 1 51 2478 1 51 2479 1 51 2480 1 51 2481 1 51 2486 1 51 2487 1 51 2488 1 51 2489 1 51 2490 1 51 2491 1 51 2496 1 51 2497 1 51 2498 1 51 2499 1 51 2501 1 51 2502 1 51 2503 1 51 2504 1 51 2511 1 51 2512 1 51 2513 1 51 2514 1 51 2515 1 51 2516 1 51 2521 1 51 2522 1 51 2523 1 51 2524 1 51 2525 1 51 2526 1 51 2531 1 51 2532 1 51 2533 1 51 2534 1 51 2536 1 51 2537 1 51 2538 1 51 2539 1 51 2540 1 51 2541 1 51 2546 1 51 2547 1 51 2548 1 51 2549 1 51 2551 1 51 2552 1 51 2553 1 51 2554 1 51 2556 1 51 2642 1 51 2647 1 51 2652 1 51 2653 1 51 2654 1 51 2655 1 51 2662 1 51 2667 1 51 2668 1 51 2669 1 51 2670 1 51 2677 1 51 2678 1 51 2679 1 51 2680 1 51 2687 1 51 2688 1 51 2689 1 51 2690 1 51 2691 1 51 2692 1 51 2697 1 51 2702 1 51 2703 1 51 2704 1 51 2705 1 51 2712 1 51 2713 1 51 2714 1 51 2715 1 51 2722 1 51 2723 1 51 2724 1 51 2725 1 51 2726 1 51 2727 1 51 2732 1 51 2733 1 51 2734 1 51 2735 1 51 2742 1 51 2743 1 51 2744 1 51 2745 1 51 2746 1 51 2747 1 51 2752 1 51 2753 1 51 2754 1 51 2755 1 51 2756 1 51 2757 1 51 2762 1 51 2763 1 51 2764 1 51 2765 1 51 2893 1 51 2898 1 51 2899 1 51 2900 1 51 2901 1 51 2908 1 51 2909 1 51 2910 1 51 2911 1 51 2918 1 51 2919 1 51 2920 1 51 2921 1 51 2922 1 51 2923 1 51 2928 1 51 2929 1 51 2930 1 51 2931 1 51 2938 1 51 2939 1 51 2940 1 51 2941 1 51 2942 1 51 2943 1 51 2948 1 51 2949 1 51 2950 1 51 2951 1 51 2952 1 51 2953 1 51 2958 1 51 2959 1 51 2960 1 51 2961 1 51 2963 1 51 2964 1 51 2965 1 51 2966 1 51 2973 1 51 2974 1 51 2975 1 51 2976 1 51 2977 1 51 2978 1 51 2983 1 51 2984 1 51 2985 1 51 2986 1 51 2987 1 51 2988 1 51 2993 1 51 2994 1 51 2995 1 51 2996 1 51 2998 1 51 2999 1 51 3000 1 51 3001 1 51 3002 1 51 3003 1 51 3008 1 51 3009 1 51 3010 1 51 3011 1 51 3013 1 51 3014 1 51 3015 1 51 3016 1 51 3018 1 51 3103 1 51 3108 1 51 3109 1 51 3110 1 51 3111 1 51 3118 1 51 3119 1 51 3120 1 51 3121 1 51 3128 1 51 3129 1 51 3130 1 51 3131 1 51 3132 1 51 3133 1 51 3138 1 51 3139 1 51 3140 1 51 3141 1 51 3148 1 51 3149 1 51 3150 1 51 3151 1 51 3152 1 51 3153 1 51 3158 1 51 3159 1 51 3160 1 51 3161 1 51 3162 1 51 3163 1 51 3168 1 51 3169 1 51 3170 1 51 3171 1 51 3173 1 51 3174 1 51 3175 1 51 3176 1 51 3183 1 51 3184 1 51 3185 1 51 3186 1 51 3187 1 51 3188 1 51 3193 1 51 3194 1 51 3195 1 51 3196 1 51 3197 1 51 3198 1 51 3203 1 51 3204 1 51 3205 1 51 3206 1 51 3208 1 51 3209 1 51 3210 1 51 3211 1 51 3212 1 51 3213 1 51 3218 1 51 3219 1 51 3220 1 51 3221 1 51 3223 1 51 3224 1 51 3225 1 51 3226 1 51 3228 1 51 3313 1 51 3314 1 51 3315 1 51 3316 1 51 3323 1 51 3324 1 51 3325 1 51 3326 1 51 3327 1 51 3328 1 51 3333 1 51 3334 1 51 3335 1 51 3336 1 51 3337 1 51 3338 1 51 3343 1 51 3344 1 51 3345 1 51 3346 1 51 3348 1 51 3349 1 51 3350 1 51 3351 1 51 3352 1 51 3353 1 51 3358 1 51 3359 1 51 3360 1 51 3361 1 51 3363 1 51 3364 1 51 3365 1 51 3366 1 51 3368 1 51 3369 1 51 3370 1 51 3371 1 51 3372 1 51 3373 1 51 3374 1 51 3379 1 51 3380 1 51 3381 1 51 3382 1 51 3384 1 51 3385 1 51 3386 1 51 3387 1 51 3389 1 51 3390 1 51 3391 1 51 3392 1 51 3393 1 51 3395 1 51 3396 1 52 5 1 52 12 1 52 18 1 52 23 1 52 27 1 52 31 1 52 32 1 52 33 1 52 124 1 52 130 1 52 135 1 52 139 1 52 143 1 52 144 1 52 145 1 52 151 1 52 156 1 52 160 1 52 164 1 52 165 1 52 166 1 52 171 1 52 175 1 52 179 1 52 180 1 52 181 1 52 185 1 52 189 1 52 190 1 52 191 1 52 195 1 52 196 1 52 197 1 52 201 1 52 202 1 52 203 1 52 334 1 52 340 1 52 345 1 52 349 1 52 353 1 52 354 1 52 355 1 52 361 1 52 366 1 52 370 1 52 374 1 52 375 1 52 376 1 52 381 1 52 385 1 52 389 1 52 390 1 52 391 1 52 395 1 52 399 1 52 400 1 52 401 1 52 405 1 52 406 1 52 407 1 52 411 1 52 412 1 52 413 1 52 543 1 52 548 1 52 552 1 52 556 1 52 557 1 52 558 1 52 563 1 52 567 1 52 571 1 52 572 1 52 573 1 52 577 1 52 581 1 52 582 1 52 583 1 52 587 1 52 588 1 52 589 1 52 593 1 52 594 1 52 595 1 52 598 1 52 602 1 52 606 1 52 607 1 52 608 1 52 612 1 52 616 1 52 617 1 52 618 1 52 622 1 52 623 1 52 624 1 52 628 1 52 629 1 52 630 1 52 632 1 52 636 1 52 637 1 52 638 1 52 642 1 52 643 1 52 644 1 52 648 1 52 649 1 52 650 1 52 652 1 52 653 1 52 654 1 52 658 1 52 659 1 52 660 1 52 662 1 52 663 1 52 664 1 52 666 1 52 796 1 52 802 1 52 807 1 52 811 1 52 815 1 52 816 1 52 817 1 52 823 1 52 828 1 52 832 1 52 836 1 52 837 1 52 838 1 52 843 1 52 847 1 52 851 1 52 852 1 52 853 1 52 857 1 52 861 1 52 862 1 52 863 1 52 867 1 52 868 1 52 869 1 52 873 1 52 874 1 52 875 1 52 1005 1 52 1010 1 52 1014 1 52 1018 1 52 1019 1 52 1020 1 52 1025 1 52 1029 1 52 1033 1 52 1034 1 52 1035 1 52 1039 1 52 1043 1 52 1044 1 52 1045 1 52 1049 1 52 1050 1 52 1051 1 52 1055 1 52 1056 1 52 1057 1 52 1060 1 52 1064 1 52 1068 1 52 1069 1 52 1070 1 52 1074 1 52 1078 1 52 1079 1 52 1080 1 52 1084 1 52 1085 1 52 1086 1 52 1090 1 52 1091 1 52 1092 1 52 1094 1 52 1098 1 52 1099 1 52 1100 1 52 1104 1 52 1105 1 52 1106 1 52 1110 1 52 1111 1 52 1112 1 52 1114 1 52 1115 1 52 1116 1 52 1120 1 52 1121 1 52 1122 1 52 1124 1 52 1125 1 52 1126 1 52 1128 1 52 1257 1 52 1262 1 52 1266 1 52 1270 1 52 1271 1 52 1272 1 52 1277 1 52 1281 1 52 1285 1 52 1286 1 52 1287 1 52 1291 1 52 1295 1 52 1296 1 52 1297 1 52 1301 1 52 1302 1 52 1303 1 52 1307 1 52 1308 1 52 1309 1 52 1312 1 52 1316 1 52 1320 1 52 1321 1 52 1322 1 52 1326 1 52 1330 1 52 1331 1 52 1332 1 52 1336 1 52 1337 1 52 1338 1 52 1342 1 52 1343 1 52 1344 1 52 1346 1 52 1350 1 52 1351 1 52 1352 1 52 1356 1 52 1357 1 52 1358 1 52 1362 1 52 1363 1 52 1364 1 52 1366 1 52 1367 1 52 1368 1 52 1372 1 52 1373 1 52 1374 1 52 1376 1 52 1377 1 52 1378 1 52 1380 1 52 1508 1 52 1512 1 52 1516 1 52 1517 1 52 1518 1 52 1522 1 52 1526 1 52 1527 1 52 1528 1 52 1532 1 52 1533 1 52 1534 1 52 1538 1 52 1539 1 52 1540 1 52 1542 1 52 1546 1 52 1547 1 52 1548 1 52 1552 1 52 1553 1 52 1554 1 52 1558 1 52 1559 1 52 1560 1 52 1562 1 52 1563 1 52 1564 1 52 1568 1 52 1569 1 52 1570 1 52 1572 1 52 1573 1 52 1574 1 52 1576 1 52 1577 1 52 1581 1 52 1582 1 52 1583 1 52 1587 1 52 1588 1 52 1589 1 52 1593 1 52 1594 1 52 1595 1 52 1597 1 52 1598 1 52 1599 1 52 1603 1 52 1604 1 52 1605 1 52 1607 1 52 1608 1 52 1609 1 52 1611 1 52 1612 1 52 1613 1 52 1614 1 52 1618 1 52 1619 1 52 1620 1 52 1622 1 52 1623 1 52 1624 1 52 1626 1 52 1627 1 52 1628 1 52 1629 1 52 1631 1 52 1632 1 52 1720 1 52 1726 1 52 1731 1 52 1735 1 52 1739 1 52 1740 1 52 1741 1 52 1747 1 52 1752 1 52 1756 1 52 1760 1 52 1761 1 52 1762 1 52 1767 1 52 1771 1 52 1775 1 52 1776 1 52 1777 1 52 1781 1 52 1785 1 52 1786 1 52 1787 1 52 1791 1 52 1792 1 52 1793 1 52 1797 1 52 1798 1 52 1799 1 52 1929 1 52 1934 1 52 1938 1 52 1942 1 52 1943 1 52 1944 1 52 1949 1 52 1953 1 52 1957 1 52 1958 1 52 1959 1 52 1963 1 52 1967 1 52 1968 1 52 1969 1 52 1973 1 52 1974 1 52 1975 1 52 1979 1 52 1980 1 52 1981 1 52 1984 1 52 1988 1 52 1992 1 52 1993 1 52 1994 1 52 1998 1 52 2002 1 52 2003 1 52 2004 1 52 2008 1 52 2009 1 52 2010 1 52 2014 1 52 2015 1 52 2016 1 52 2018 1 52 2022 1 52 2023 1 52 2024 1 52 2028 1 52 2029 1 52 2030 1 52 2034 1 52 2035 1 52 2036 1 52 2038 1 52 2039 1 52 2040 1 52 2044 1 52 2045 1 52 2046 1 52 2048 1 52 2049 1 52 2050 1 52 2052 1 52 2181 1 52 2186 1 52 2190 1 52 2194 1 52 2195 1 52 2196 1 52 2201 1 52 2205 1 52 2209 1 52 2210 1 52 2211 1 52 2215 1 52 2219 1 52 2220 1 52 2221 1 52 2225 1 52 2226 1 52 2227 1 52 2231 1 52 2232 1 52 2233 1 52 2236 1 52 2240 1 52 2244 1 52 2245 1 52 2246 1 52 2250 1 52 2254 1 52 2255 1 52 2256 1 52 2260 1 52 2261 1 52 2262 1 52 2266 1 52 2267 1 52 2268 1 52 2270 1 52 2274 1 52 2275 1 52 2276 1 52 2280 1 52 2281 1 52 2282 1 52 2286 1 52 2287 1 52 2288 1 52 2290 1 52 2291 1 52 2292 1 52 2296 1 52 2297 1 52 2298 1 52 2300 1 52 2301 1 52 2302 1 52 2304 1 52 2432 1 52 2436 1 52 2440 1 52 2441 1 52 2442 1 52 2446 1 52 2450 1 52 2451 1 52 2452 1 52 2456 1 52 2457 1 52 2458 1 52 2462 1 52 2463 1 52 2464 1 52 2466 1 52 2470 1 52 2471 1 52 2472 1 52 2476 1 52 2477 1 52 2478 1 52 2482 1 52 2483 1 52 2484 1 52 2486 1 52 2487 1 52 2488 1 52 2492 1 52 2493 1 52 2494 1 52 2496 1 52 2497 1 52 2498 1 52 2500 1 52 2501 1 52 2505 1 52 2506 1 52 2507 1 52 2511 1 52 2512 1 52 2513 1 52 2517 1 52 2518 1 52 2519 1 52 2521 1 52 2522 1 52 2523 1 52 2527 1 52 2528 1 52 2529 1 52 2531 1 52 2532 1 52 2533 1 52 2535 1 52 2536 1 52 2537 1 52 2538 1 52 2542 1 52 2543 1 52 2544 1 52 2546 1 52 2547 1 52 2548 1 52 2550 1 52 2551 1 52 2552 1 52 2553 1 52 2555 1 52 2556 1 52 2643 1 52 2648 1 52 2652 1 52 2656 1 52 2657 1 52 2658 1 52 2663 1 52 2667 1 52 2671 1 52 2672 1 52 2673 1 52 2677 1 52 2681 1 52 2682 1 52 2683 1 52 2687 1 52 2688 1 52 2689 1 52 2693 1 52 2694 1 52 2695 1 52 2698 1 52 2702 1 52 2706 1 52 2707 1 52 2708 1 52 2712 1 52 2716 1 52 2717 1 52 2718 1 52 2722 1 52 2723 1 52 2724 1 52 2728 1 52 2729 1 52 2730 1 52 2732 1 52 2736 1 52 2737 1 52 2738 1 52 2742 1 52 2743 1 52 2744 1 52 2748 1 52 2749 1 52 2750 1 52 2752 1 52 2753 1 52 2754 1 52 2758 1 52 2759 1 52 2760 1 52 2762 1 52 2763 1 52 2764 1 52 2766 1 52 2894 1 52 2898 1 52 2902 1 52 2903 1 52 2904 1 52 2908 1 52 2912 1 52 2913 1 52 2914 1 52 2918 1 52 2919 1 52 2920 1 52 2924 1 52 2925 1 52 2926 1 52 2928 1 52 2932 1 52 2933 1 52 2934 1 52 2938 1 52 2939 1 52 2940 1 52 2944 1 52 2945 1 52 2946 1 52 2948 1 52 2949 1 52 2950 1 52 2954 1 52 2955 1 52 2956 1 52 2958 1 52 2959 1 52 2960 1 52 2962 1 52 2963 1 52 2967 1 52 2968 1 52 2969 1 52 2973 1 52 2974 1 52 2975 1 52 2979 1 52 2980 1 52 2981 1 52 2983 1 52 2984 1 52 2985 1 52 2989 1 52 2990 1 52 2991 1 52 2993 1 52 2994 1 52 2995 1 52 2997 1 52 2998 1 52 2999 1 52 3000 1 52 3004 1 52 3005 1 52 3006 1 52 3008 1 52 3009 1 52 3010 1 52 3012 1 52 3013 1 52 3014 1 52 3015 1 52 3017 1 52 3018 1 52 3104 1 52 3108 1 52 3112 1 52 3113 1 52 3114 1 52 3118 1 52 3122 1 52 3123 1 52 3124 1 52 3128 1 52 3129 1 52 3130 1 52 3134 1 52 3135 1 52 3136 1 52 3138 1 52 3142 1 52 3143 1 52 3144 1 52 3148 1 52 3149 1 52 3150 1 52 3154 1 52 3155 1 52 3156 1 52 3158 1 52 3159 1 52 3160 1 52 3164 1 52 3165 1 52 3166 1 52 3168 1 52 3169 1 52 3170 1 52 3172 1 52 3173 1 52 3177 1 52 3178 1 52 3179 1 52 3183 1 52 3184 1 52 3185 1 52 3189 1 52 3190 1 52 3191 1 52 3193 1 52 3194 1 52 3195 1 52 3199 1 52 3200 1 52 3201 1 52 3203 1 52 3204 1 52 3205 1 52 3207 1 52 3208 1 52 3209 1 52 3210 1 52 3214 1 52 3215 1 52 3216 1 52 3218 1 52 3219 1 52 3220 1 52 3222 1 52 3223 1 52 3224 1 52 3225 1 52 3227 1 52 3228 1 52 3313 1 52 3317 1 52 3318 1 52 3319 1 52 3323 1 52 3324 1 52 3325 1 52 3329 1 52 3330 1 52 3331 1 52 3333 1 52 3334 1 52 3335 1 52 3339 1 52 3340 1 52 3341 1 52 3343 1 52 3344 1 52 3345 1 52 3347 1 52 3348 1 52 3349 1 52 3350 1 52 3354 1 52 3355 1 52 3356 1 52 3358 1 52 3359 1 52 3360 1 52 3362 1 52 3363 1 52 3364 1 52 3365 1 52 3367 1 52 3368 1 52 3369 1 52 3370 1 52 3371 1 52 3375 1 52 3376 1 52 3377 1 52 3379 1 52 3380 1 52 3381 1 52 3383 1 52 3384 1 52 3385 1 52 3386 1 52 3388 1 52 3389 1 52 3390 1 52 3391 1 52 3392 1 52 3394 1 52 3395 1 52 3396 1 53 6 1 53 13 1 53 19 1 53 24 1 53 28 1 53 31 1 53 34 1 53 35 1 53 125 1 53 131 1 53 136 1 53 140 1 53 143 1 53 146 1 53 147 1 53 152 1 53 157 1 53 161 1 53 164 1 53 167 1 53 168 1 53 172 1 53 176 1 53 179 1 53 182 1 53 183 1 53 186 1 53 189 1 53 192 1 53 193 1 53 195 1 53 198 1 53 199 1 53 201 1 53 202 1 53 204 1 53 335 1 53 341 1 53 346 1 53 350 1 53 353 1 53 356 1 53 357 1 53 362 1 53 367 1 53 371 1 53 374 1 53 377 1 53 378 1 53 382 1 53 386 1 53 389 1 53 392 1 53 393 1 53 396 1 53 399 1 53 402 1 53 403 1 53 405 1 53 408 1 53 409 1 53 411 1 53 412 1 53 414 1 53 544 1 53 549 1 53 553 1 53 556 1 53 559 1 53 560 1 53 564 1 53 568 1 53 571 1 53 574 1 53 575 1 53 578 1 53 581 1 53 584 1 53 585 1 53 587 1 53 590 1 53 591 1 53 593 1 53 594 1 53 596 1 53 599 1 53 603 1 53 606 1 53 609 1 53 610 1 53 613 1 53 616 1 53 619 1 53 620 1 53 622 1 53 625 1 53 626 1 53 628 1 53 629 1 53 631 1 53 633 1 53 636 1 53 639 1 53 640 1 53 642 1 53 645 1 53 646 1 53 648 1 53 649 1 53 651 1 53 652 1 53 655 1 53 656 1 53 658 1 53 659 1 53 661 1 53 662 1 53 663 1 53 665 1 53 666 1 53 797 1 53 803 1 53 808 1 53 812 1 53 815 1 53 818 1 53 819 1 53 824 1 53 829 1 53 833 1 53 836 1 53 839 1 53 840 1 53 844 1 53 848 1 53 851 1 53 854 1 53 855 1 53 858 1 53 861 1 53 864 1 53 865 1 53 867 1 53 870 1 53 871 1 53 873 1 53 874 1 53 876 1 53 1006 1 53 1011 1 53 1015 1 53 1018 1 53 1021 1 53 1022 1 53 1026 1 53 1030 1 53 1033 1 53 1036 1 53 1037 1 53 1040 1 53 1043 1 53 1046 1 53 1047 1 53 1049 1 53 1052 1 53 1053 1 53 1055 1 53 1056 1 53 1058 1 53 1061 1 53 1065 1 53 1068 1 53 1071 1 53 1072 1 53 1075 1 53 1078 1 53 1081 1 53 1082 1 53 1084 1 53 1087 1 53 1088 1 53 1090 1 53 1091 1 53 1093 1 53 1095 1 53 1098 1 53 1101 1 53 1102 1 53 1104 1 53 1107 1 53 1108 1 53 1110 1 53 1111 1 53 1113 1 53 1114 1 53 1117 1 53 1118 1 53 1120 1 53 1121 1 53 1123 1 53 1124 1 53 1125 1 53 1127 1 53 1128 1 53 1258 1 53 1263 1 53 1267 1 53 1270 1 53 1273 1 53 1274 1 53 1278 1 53 1282 1 53 1285 1 53 1288 1 53 1289 1 53 1292 1 53 1295 1 53 1298 1 53 1299 1 53 1301 1 53 1304 1 53 1305 1 53 1307 1 53 1308 1 53 1310 1 53 1313 1 53 1317 1 53 1320 1 53 1323 1 53 1324 1 53 1327 1 53 1330 1 53 1333 1 53 1334 1 53 1336 1 53 1339 1 53 1340 1 53 1342 1 53 1343 1 53 1345 1 53 1347 1 53 1350 1 53 1353 1 53 1354 1 53 1356 1 53 1359 1 53 1360 1 53 1362 1 53 1363 1 53 1365 1 53 1366 1 53 1369 1 53 1370 1 53 1372 1 53 1373 1 53 1375 1 53 1376 1 53 1377 1 53 1379 1 53 1380 1 53 1509 1 53 1513 1 53 1516 1 53 1519 1 53 1520 1 53 1523 1 53 1526 1 53 1529 1 53 1530 1 53 1532 1 53 1535 1 53 1536 1 53 1538 1 53 1539 1 53 1541 1 53 1543 1 53 1546 1 53 1549 1 53 1550 1 53 1552 1 53 1555 1 53 1556 1 53 1558 1 53 1559 1 53 1561 1 53 1562 1 53 1565 1 53 1566 1 53 1568 1 53 1569 1 53 1571 1 53 1572 1 53 1573 1 53 1575 1 53 1576 1 53 1578 1 53 1581 1 53 1584 1 53 1585 1 53 1587 1 53 1590 1 53 1591 1 53 1593 1 53 1594 1 53 1596 1 53 1597 1 53 1600 1 53 1601 1 53 1603 1 53 1604 1 53 1606 1 53 1607 1 53 1608 1 53 1610 1 53 1611 1 53 1612 1 53 1615 1 53 1616 1 53 1618 1 53 1619 1 53 1621 1 53 1622 1 53 1623 1 53 1625 1 53 1626 1 53 1627 1 53 1628 1 53 1630 1 53 1631 1 53 1632 1 53 1721 1 53 1727 1 53 1732 1 53 1736 1 53 1739 1 53 1742 1 53 1743 1 53 1748 1 53 1753 1 53 1757 1 53 1760 1 53 1763 1 53 1764 1 53 1768 1 53 1772 1 53 1775 1 53 1778 1 53 1779 1 53 1782 1 53 1785 1 53 1788 1 53 1789 1 53 1791 1 53 1794 1 53 1795 1 53 1797 1 53 1798 1 53 1800 1 53 1930 1 53 1935 1 53 1939 1 53 1942 1 53 1945 1 53 1946 1 53 1950 1 53 1954 1 53 1957 1 53 1960 1 53 1961 1 53 1964 1 53 1967 1 53 1970 1 53 1971 1 53 1973 1 53 1976 1 53 1977 1 53 1979 1 53 1980 1 53 1982 1 53 1985 1 53 1989 1 53 1992 1 53 1995 1 53 1996 1 53 1999 1 53 2002 1 53 2005 1 53 2006 1 53 2008 1 53 2011 1 53 2012 1 53 2014 1 53 2015 1 53 2017 1 53 2019 1 53 2022 1 53 2025 1 53 2026 1 53 2028 1 53 2031 1 53 2032 1 53 2034 1 53 2035 1 53 2037 1 53 2038 1 53 2041 1 53 2042 1 53 2044 1 53 2045 1 53 2047 1 53 2048 1 53 2049 1 53 2051 1 53 2052 1 53 2182 1 53 2187 1 53 2191 1 53 2194 1 53 2197 1 53 2198 1 53 2202 1 53 2206 1 53 2209 1 53 2212 1 53 2213 1 53 2216 1 53 2219 1 53 2222 1 53 2223 1 53 2225 1 53 2228 1 53 2229 1 53 2231 1 53 2232 1 53 2234 1 53 2237 1 53 2241 1 53 2244 1 53 2247 1 53 2248 1 53 2251 1 53 2254 1 53 2257 1 53 2258 1 53 2260 1 53 2263 1 53 2264 1 53 2266 1 53 2267 1 53 2269 1 53 2271 1 53 2274 1 53 2277 1 53 2278 1 53 2280 1 53 2283 1 53 2284 1 53 2286 1 53 2287 1 53 2289 1 53 2290 1 53 2293 1 53 2294 1 53 2296 1 53 2297 1 53 2299 1 53 2300 1 53 2301 1 53 2303 1 53 2304 1 53 2433 1 53 2437 1 53 2440 1 53 2443 1 53 2444 1 53 2447 1 53 2450 1 53 2453 1 53 2454 1 53 2456 1 53 2459 1 53 2460 1 53 2462 1 53 2463 1 53 2465 1 53 2467 1 53 2470 1 53 2473 1 53 2474 1 53 2476 1 53 2479 1 53 2480 1 53 2482 1 53 2483 1 53 2485 1 53 2486 1 53 2489 1 53 2490 1 53 2492 1 53 2493 1 53 2495 1 53 2496 1 53 2497 1 53 2499 1 53 2500 1 53 2502 1 53 2505 1 53 2508 1 53 2509 1 53 2511 1 53 2514 1 53 2515 1 53 2517 1 53 2518 1 53 2520 1 53 2521 1 53 2524 1 53 2525 1 53 2527 1 53 2528 1 53 2530 1 53 2531 1 53 2532 1 53 2534 1 53 2535 1 53 2536 1 53 2539 1 53 2540 1 53 2542 1 53 2543 1 53 2545 1 53 2546 1 53 2547 1 53 2549 1 53 2550 1 53 2551 1 53 2552 1 53 2554 1 53 2555 1 53 2556 1 53 2644 1 53 2649 1 53 2653 1 53 2656 1 53 2659 1 53 2660 1 53 2664 1 53 2668 1 53 2671 1 53 2674 1 53 2675 1 53 2678 1 53 2681 1 53 2684 1 53 2685 1 53 2687 1 53 2690 1 53 2691 1 53 2693 1 53 2694 1 53 2696 1 53 2699 1 53 2703 1 53 2706 1 53 2709 1 53 2710 1 53 2713 1 53 2716 1 53 2719 1 53 2720 1 53 2722 1 53 2725 1 53 2726 1 53 2728 1 53 2729 1 53 2731 1 53 2733 1 53 2736 1 53 2739 1 53 2740 1 53 2742 1 53 2745 1 53 2746 1 53 2748 1 53 2749 1 53 2751 1 53 2752 1 53 2755 1 53 2756 1 53 2758 1 53 2759 1 53 2761 1 53 2762 1 53 2763 1 53 2765 1 53 2766 1 53 2895 1 53 2899 1 53 2902 1 53 2905 1 53 2906 1 53 2909 1 53 2912 1 53 2915 1 53 2916 1 53 2918 1 53 2921 1 53 2922 1 53 2924 1 53 2925 1 53 2927 1 53 2929 1 53 2932 1 53 2935 1 53 2936 1 53 2938 1 53 2941 1 53 2942 1 53 2944 1 53 2945 1 53 2947 1 53 2948 1 53 2951 1 53 2952 1 53 2954 1 53 2955 1 53 2957 1 53 2958 1 53 2959 1 53 2961 1 53 2962 1 53 2964 1 53 2967 1 53 2970 1 53 2971 1 53 2973 1 53 2976 1 53 2977 1 53 2979 1 53 2980 1 53 2982 1 53 2983 1 53 2986 1 53 2987 1 53 2989 1 53 2990 1 53 2992 1 53 2993 1 53 2994 1 53 2996 1 53 2997 1 53 2998 1 53 3001 1 53 3002 1 53 3004 1 53 3005 1 53 3007 1 53 3008 1 53 3009 1 53 3011 1 53 3012 1 53 3013 1 53 3014 1 53 3016 1 53 3017 1 53 3018 1 53 3105 1 53 3109 1 53 3112 1 53 3115 1 53 3116 1 53 3119 1 53 3122 1 53 3125 1 53 3126 1 53 3128 1 53 3131 1 53 3132 1 53 3134 1 53 3135 1 53 3137 1 53 3139 1 53 3142 1 53 3145 1 53 3146 1 53 3148 1 53 3151 1 53 3152 1 53 3154 1 53 3155 1 53 3157 1 53 3158 1 53 3161 1 53 3162 1 53 3164 1 53 3165 1 53 3167 1 53 3168 1 53 3169 1 53 3171 1 53 3172 1 53 3174 1 53 3177 1 53 3180 1 53 3181 1 53 3183 1 53 3186 1 53 3187 1 53 3189 1 53 3190 1 53 3192 1 53 3193 1 53 3196 1 53 3197 1 53 3199 1 53 3200 1 53 3202 1 53 3203 1 53 3204 1 53 3206 1 53 3207 1 53 3208 1 53 3211 1 53 3212 1 53 3214 1 53 3215 1 53 3217 1 53 3218 1 53 3219 1 53 3221 1 53 3222 1 53 3223 1 53 3224 1 53 3226 1 53 3227 1 53 3228 1 53 3314 1 53 3317 1 53 3320 1 53 3321 1 53 3323 1 53 3326 1 53 3327 1 53 3329 1 53 3330 1 53 3332 1 53 3333 1 53 3336 1 53 3337 1 53 3339 1 53 3340 1 53 3342 1 53 3343 1 53 3344 1 53 3346 1 53 3347 1 53 3348 1 53 3351 1 53 3352 1 53 3354 1 53 3355 1 53 3357 1 53 3358 1 53 3359 1 53 3361 1 53 3362 1 53 3363 1 53 3364 1 53 3366 1 53 3367 1 53 3368 1 53 3369 1 53 3372 1 53 3373 1 53 3375 1 53 3376 1 53 3378 1 53 3379 1 53 3380 1 53 3382 1 53 3383 1 53 3384 1 53 3385 1 53 3387 1 53 3388 1 53 3389 1 53 3390 1 53 3391 1 53 3393 1 53 3394 1 53 3395 1 53 3396 1 54 7 1 54 14 1 54 20 1 54 25 1 54 29 1 54 32 1 54 34 1 54 36 1 54 126 1 54 132 1 54 137 1 54 141 1 54 144 1 54 146 1 54 148 1 54 153 1 54 158 1 54 162 1 54 165 1 54 167 1 54 169 1 54 173 1 54 177 1 54 180 1 54 182 1 54 184 1 54 187 1 54 190 1 54 192 1 54 194 1 54 196 1 54 198 1 54 200 1 54 201 1 54 203 1 54 204 1 54 336 1 54 342 1 54 347 1 54 351 1 54 354 1 54 356 1 54 358 1 54 363 1 54 368 1 54 372 1 54 375 1 54 377 1 54 379 1 54 383 1 54 387 1 54 390 1 54 392 1 54 394 1 54 397 1 54 400 1 54 402 1 54 404 1 54 406 1 54 408 1 54 410 1 54 411 1 54 413 1 54 414 1 54 545 1 54 550 1 54 554 1 54 557 1 54 559 1 54 561 1 54 565 1 54 569 1 54 572 1 54 574 1 54 576 1 54 579 1 54 582 1 54 584 1 54 586 1 54 588 1 54 590 1 54 592 1 54 593 1 54 595 1 54 596 1 54 600 1 54 604 1 54 607 1 54 609 1 54 611 1 54 614 1 54 617 1 54 619 1 54 621 1 54 623 1 54 625 1 54 627 1 54 628 1 54 630 1 54 631 1 54 634 1 54 637 1 54 639 1 54 641 1 54 643 1 54 645 1 54 647 1 54 648 1 54 650 1 54 651 1 54 653 1 54 655 1 54 657 1 54 658 1 54 660 1 54 661 1 54 662 1 54 664 1 54 665 1 54 666 1 54 798 1 54 804 1 54 809 1 54 813 1 54 816 1 54 818 1 54 820 1 54 825 1 54 830 1 54 834 1 54 837 1 54 839 1 54 841 1 54 845 1 54 849 1 54 852 1 54 854 1 54 856 1 54 859 1 54 862 1 54 864 1 54 866 1 54 868 1 54 870 1 54 872 1 54 873 1 54 875 1 54 876 1 54 1007 1 54 1012 1 54 1016 1 54 1019 1 54 1021 1 54 1023 1 54 1027 1 54 1031 1 54 1034 1 54 1036 1 54 1038 1 54 1041 1 54 1044 1 54 1046 1 54 1048 1 54 1050 1 54 1052 1 54 1054 1 54 1055 1 54 1057 1 54 1058 1 54 1062 1 54 1066 1 54 1069 1 54 1071 1 54 1073 1 54 1076 1 54 1079 1 54 1081 1 54 1083 1 54 1085 1 54 1087 1 54 1089 1 54 1090 1 54 1092 1 54 1093 1 54 1096 1 54 1099 1 54 1101 1 54 1103 1 54 1105 1 54 1107 1 54 1109 1 54 1110 1 54 1112 1 54 1113 1 54 1115 1 54 1117 1 54 1119 1 54 1120 1 54 1122 1 54 1123 1 54 1124 1 54 1126 1 54 1127 1 54 1128 1 54 1259 1 54 1264 1 54 1268 1 54 1271 1 54 1273 1 54 1275 1 54 1279 1 54 1283 1 54 1286 1 54 1288 1 54 1290 1 54 1293 1 54 1296 1 54 1298 1 54 1300 1 54 1302 1 54 1304 1 54 1306 1 54 1307 1 54 1309 1 54 1310 1 54 1314 1 54 1318 1 54 1321 1 54 1323 1 54 1325 1 54 1328 1 54 1331 1 54 1333 1 54 1335 1 54 1337 1 54 1339 1 54 1341 1 54 1342 1 54 1344 1 54 1345 1 54 1348 1 54 1351 1 54 1353 1 54 1355 1 54 1357 1 54 1359 1 54 1361 1 54 1362 1 54 1364 1 54 1365 1 54 1367 1 54 1369 1 54 1371 1 54 1372 1 54 1374 1 54 1375 1 54 1376 1 54 1378 1 54 1379 1 54 1380 1 54 1510 1 54 1514 1 54 1517 1 54 1519 1 54 1521 1 54 1524 1 54 1527 1 54 1529 1 54 1531 1 54 1533 1 54 1535 1 54 1537 1 54 1538 1 54 1540 1 54 1541 1 54 1544 1 54 1547 1 54 1549 1 54 1551 1 54 1553 1 54 1555 1 54 1557 1 54 1558 1 54 1560 1 54 1561 1 54 1563 1 54 1565 1 54 1567 1 54 1568 1 54 1570 1 54 1571 1 54 1572 1 54 1574 1 54 1575 1 54 1576 1 54 1579 1 54 1582 1 54 1584 1 54 1586 1 54 1588 1 54 1590 1 54 1592 1 54 1593 1 54 1595 1 54 1596 1 54 1598 1 54 1600 1 54 1602 1 54 1603 1 54 1605 1 54 1606 1 54 1607 1 54 1609 1 54 1610 1 54 1611 1 54 1613 1 54 1615 1 54 1617 1 54 1618 1 54 1620 1 54 1621 1 54 1622 1 54 1624 1 54 1625 1 54 1626 1 54 1627 1 54 1629 1 54 1630 1 54 1631 1 54 1632 1 54 1722 1 54 1728 1 54 1733 1 54 1737 1 54 1740 1 54 1742 1 54 1744 1 54 1749 1 54 1754 1 54 1758 1 54 1761 1 54 1763 1 54 1765 1 54 1769 1 54 1773 1 54 1776 1 54 1778 1 54 1780 1 54 1783 1 54 1786 1 54 1788 1 54 1790 1 54 1792 1 54 1794 1 54 1796 1 54 1797 1 54 1799 1 54 1800 1 54 1931 1 54 1936 1 54 1940 1 54 1943 1 54 1945 1 54 1947 1 54 1951 1 54 1955 1 54 1958 1 54 1960 1 54 1962 1 54 1965 1 54 1968 1 54 1970 1 54 1972 1 54 1974 1 54 1976 1 54 1978 1 54 1979 1 54 1981 1 54 1982 1 54 1986 1 54 1990 1 54 1993 1 54 1995 1 54 1997 1 54 2000 1 54 2003 1 54 2005 1 54 2007 1 54 2009 1 54 2011 1 54 2013 1 54 2014 1 54 2016 1 54 2017 1 54 2020 1 54 2023 1 54 2025 1 54 2027 1 54 2029 1 54 2031 1 54 2033 1 54 2034 1 54 2036 1 54 2037 1 54 2039 1 54 2041 1 54 2043 1 54 2044 1 54 2046 1 54 2047 1 54 2048 1 54 2050 1 54 2051 1 54 2052 1 54 2183 1 54 2188 1 54 2192 1 54 2195 1 54 2197 1 54 2199 1 54 2203 1 54 2207 1 54 2210 1 54 2212 1 54 2214 1 54 2217 1 54 2220 1 54 2222 1 54 2224 1 54 2226 1 54 2228 1 54 2230 1 54 2231 1 54 2233 1 54 2234 1 54 2238 1 54 2242 1 54 2245 1 54 2247 1 54 2249 1 54 2252 1 54 2255 1 54 2257 1 54 2259 1 54 2261 1 54 2263 1 54 2265 1 54 2266 1 54 2268 1 54 2269 1 54 2272 1 54 2275 1 54 2277 1 54 2279 1 54 2281 1 54 2283 1 54 2285 1 54 2286 1 54 2288 1 54 2289 1 54 2291 1 54 2293 1 54 2295 1 54 2296 1 54 2298 1 54 2299 1 54 2300 1 54 2302 1 54 2303 1 54 2304 1 54 2434 1 54 2438 1 54 2441 1 54 2443 1 54 2445 1 54 2448 1 54 2451 1 54 2453 1 54 2455 1 54 2457 1 54 2459 1 54 2461 1 54 2462 1 54 2464 1 54 2465 1 54 2468 1 54 2471 1 54 2473 1 54 2475 1 54 2477 1 54 2479 1 54 2481 1 54 2482 1 54 2484 1 54 2485 1 54 2487 1 54 2489 1 54 2491 1 54 2492 1 54 2494 1 54 2495 1 54 2496 1 54 2498 1 54 2499 1 54 2500 1 54 2503 1 54 2506 1 54 2508 1 54 2510 1 54 2512 1 54 2514 1 54 2516 1 54 2517 1 54 2519 1 54 2520 1 54 2522 1 54 2524 1 54 2526 1 54 2527 1 54 2529 1 54 2530 1 54 2531 1 54 2533 1 54 2534 1 54 2535 1 54 2537 1 54 2539 1 54 2541 1 54 2542 1 54 2544 1 54 2545 1 54 2546 1 54 2548 1 54 2549 1 54 2550 1 54 2551 1 54 2553 1 54 2554 1 54 2555 1 54 2556 1 54 2645 1 54 2650 1 54 2654 1 54 2657 1 54 2659 1 54 2661 1 54 2665 1 54 2669 1 54 2672 1 54 2674 1 54 2676 1 54 2679 1 54 2682 1 54 2684 1 54 2686 1 54 2688 1 54 2690 1 54 2692 1 54 2693 1 54 2695 1 54 2696 1 54 2700 1 54 2704 1 54 2707 1 54 2709 1 54 2711 1 54 2714 1 54 2717 1 54 2719 1 54 2721 1 54 2723 1 54 2725 1 54 2727 1 54 2728 1 54 2730 1 54 2731 1 54 2734 1 54 2737 1 54 2739 1 54 2741 1 54 2743 1 54 2745 1 54 2747 1 54 2748 1 54 2750 1 54 2751 1 54 2753 1 54 2755 1 54 2757 1 54 2758 1 54 2760 1 54 2761 1 54 2762 1 54 2764 1 54 2765 1 54 2766 1 54 2896 1 54 2900 1 54 2903 1 54 2905 1 54 2907 1 54 2910 1 54 2913 1 54 2915 1 54 2917 1 54 2919 1 54 2921 1 54 2923 1 54 2924 1 54 2926 1 54 2927 1 54 2930 1 54 2933 1 54 2935 1 54 2937 1 54 2939 1 54 2941 1 54 2943 1 54 2944 1 54 2946 1 54 2947 1 54 2949 1 54 2951 1 54 2953 1 54 2954 1 54 2956 1 54 2957 1 54 2958 1 54 2960 1 54 2961 1 54 2962 1 54 2965 1 54 2968 1 54 2970 1 54 2972 1 54 2974 1 54 2976 1 54 2978 1 54 2979 1 54 2981 1 54 2982 1 54 2984 1 54 2986 1 54 2988 1 54 2989 1 54 2991 1 54 2992 1 54 2993 1 54 2995 1 54 2996 1 54 2997 1 54 2999 1 54 3001 1 54 3003 1 54 3004 1 54 3006 1 54 3007 1 54 3008 1 54 3010 1 54 3011 1 54 3012 1 54 3013 1 54 3015 1 54 3016 1 54 3017 1 54 3018 1 54 3106 1 54 3110 1 54 3113 1 54 3115 1 54 3117 1 54 3120 1 54 3123 1 54 3125 1 54 3127 1 54 3129 1 54 3131 1 54 3133 1 54 3134 1 54 3136 1 54 3137 1 54 3140 1 54 3143 1 54 3145 1 54 3147 1 54 3149 1 54 3151 1 54 3153 1 54 3154 1 54 3156 1 54 3157 1 54 3159 1 54 3161 1 54 3163 1 54 3164 1 54 3166 1 54 3167 1 54 3168 1 54 3170 1 54 3171 1 54 3172 1 54 3175 1 54 3178 1 54 3180 1 54 3182 1 54 3184 1 54 3186 1 54 3188 1 54 3189 1 54 3191 1 54 3192 1 54 3194 1 54 3196 1 54 3198 1 54 3199 1 54 3201 1 54 3202 1 54 3203 1 54 3205 1 54 3206 1 54 3207 1 54 3209 1 54 3211 1 54 3213 1 54 3214 1 54 3216 1 54 3217 1 54 3218 1 54 3220 1 54 3221 1 54 3222 1 54 3223 1 54 3225 1 54 3226 1 54 3227 1 54 3228 1 54 3315 1 54 3318 1 54 3320 1 54 3322 1 54 3324 1 54 3326 1 54 3328 1 54 3329 1 54 3331 1 54 3332 1 54 3334 1 54 3336 1 54 3338 1 54 3339 1 54 3341 1 54 3342 1 54 3343 1 54 3345 1 54 3346 1 54 3347 1 54 3349 1 54 3351 1 54 3353 1 54 3354 1 54 3356 1 54 3357 1 54 3358 1 54 3360 1 54 3361 1 54 3362 1 54 3363 1 54 3365 1 54 3366 1 54 3367 1 54 3368 1 54 3370 1 54 3372 1 54 3374 1 54 3375 1 54 3377 1 54 3378 1 54 3379 1 54 3381 1 54 3382 1 54 3383 1 54 3384 1 54 3386 1 54 3387 1 54 3388 1 54 3389 1 54 3390 1 54 3392 1 54 3393 1 54 3394 1 54 3395 1 54 3396 1 55 8 1 55 15 1 55 21 1 55 26 1 55 30 1 55 33 1 55 35 1 55 36 1 55 127 1 55 133 1 55 138 1 55 142 1 55 145 1 55 147 1 55 148 1 55 154 1 55 159 1 55 163 1 55 166 1 55 168 1 55 169 1 55 174 1 55 178 1 55 181 1 55 183 1 55 184 1 55 188 1 55 191 1 55 193 1 55 194 1 55 197 1 55 199 1 55 200 1 55 202 1 55 203 1 55 204 1 55 337 1 55 343 1 55 348 1 55 352 1 55 355 1 55 357 1 55 358 1 55 364 1 55 369 1 55 373 1 55 376 1 55 378 1 55 379 1 55 384 1 55 388 1 55 391 1 55 393 1 55 394 1 55 398 1 55 401 1 55 403 1 55 404 1 55 407 1 55 409 1 55 410 1 55 412 1 55 413 1 55 414 1 55 546 1 55 551 1 55 555 1 55 558 1 55 560 1 55 561 1 55 566 1 55 570 1 55 573 1 55 575 1 55 576 1 55 580 1 55 583 1 55 585 1 55 586 1 55 589 1 55 591 1 55 592 1 55 594 1 55 595 1 55 596 1 55 601 1 55 605 1 55 608 1 55 610 1 55 611 1 55 615 1 55 618 1 55 620 1 55 621 1 55 624 1 55 626 1 55 627 1 55 629 1 55 630 1 55 631 1 55 635 1 55 638 1 55 640 1 55 641 1 55 644 1 55 646 1 55 647 1 55 649 1 55 650 1 55 651 1 55 654 1 55 656 1 55 657 1 55 659 1 55 660 1 55 661 1 55 663 1 55 664 1 55 665 1 55 666 1 55 799 1 55 805 1 55 810 1 55 814 1 55 817 1 55 819 1 55 820 1 55 826 1 55 831 1 55 835 1 55 838 1 55 840 1 55 841 1 55 846 1 55 850 1 55 853 1 55 855 1 55 856 1 55 860 1 55 863 1 55 865 1 55 866 1 55 869 1 55 871 1 55 872 1 55 874 1 55 875 1 55 876 1 55 1008 1 55 1013 1 55 1017 1 55 1020 1 55 1022 1 55 1023 1 55 1028 1 55 1032 1 55 1035 1 55 1037 1 55 1038 1 55 1042 1 55 1045 1 55 1047 1 55 1048 1 55 1051 1 55 1053 1 55 1054 1 55 1056 1 55 1057 1 55 1058 1 55 1063 1 55 1067 1 55 1070 1 55 1072 1 55 1073 1 55 1077 1 55 1080 1 55 1082 1 55 1083 1 55 1086 1 55 1088 1 55 1089 1 55 1091 1 55 1092 1 55 1093 1 55 1097 1 55 1100 1 55 1102 1 55 1103 1 55 1106 1 55 1108 1 55 1109 1 55 1111 1 55 1112 1 55 1113 1 55 1116 1 55 1118 1 55 1119 1 55 1121 1 55 1122 1 55 1123 1 55 1125 1 55 1126 1 55 1127 1 55 1128 1 55 1260 1 55 1265 1 55 1269 1 55 1272 1 55 1274 1 55 1275 1 55 1280 1 55 1284 1 55 1287 1 55 1289 1 55 1290 1 55 1294 1 55 1297 1 55 1299 1 55 1300 1 55 1303 1 55 1305 1 55 1306 1 55 1308 1 55 1309 1 55 1310 1 55 1315 1 55 1319 1 55 1322 1 55 1324 1 55 1325 1 55 1329 1 55 1332 1 55 1334 1 55 1335 1 55 1338 1 55 1340 1 55 1341 1 55 1343 1 55 1344 1 55 1345 1 55 1349 1 55 1352 1 55 1354 1 55 1355 1 55 1358 1 55 1360 1 55 1361 1 55 1363 1 55 1364 1 55 1365 1 55 1368 1 55 1370 1 55 1371 1 55 1373 1 55 1374 1 55 1375 1 55 1377 1 55 1378 1 55 1379 1 55 1380 1 55 1511 1 55 1515 1 55 1518 1 55 1520 1 55 1521 1 55 1525 1 55 1528 1 55 1530 1 55 1531 1 55 1534 1 55 1536 1 55 1537 1 55 1539 1 55 1540 1 55 1541 1 55 1545 1 55 1548 1 55 1550 1 55 1551 1 55 1554 1 55 1556 1 55 1557 1 55 1559 1 55 1560 1 55 1561 1 55 1564 1 55 1566 1 55 1567 1 55 1569 1 55 1570 1 55 1571 1 55 1573 1 55 1574 1 55 1575 1 55 1576 1 55 1580 1 55 1583 1 55 1585 1 55 1586 1 55 1589 1 55 1591 1 55 1592 1 55 1594 1 55 1595 1 55 1596 1 55 1599 1 55 1601 1 55 1602 1 55 1604 1 55 1605 1 55 1606 1 55 1608 1 55 1609 1 55 1610 1 55 1611 1 55 1614 1 55 1616 1 55 1617 1 55 1619 1 55 1620 1 55 1621 1 55 1623 1 55 1624 1 55 1625 1 55 1626 1 55 1628 1 55 1629 1 55 1630 1 55 1631 1 55 1632 1 55 1723 1 55 1729 1 55 1734 1 55 1738 1 55 1741 1 55 1743 1 55 1744 1 55 1750 1 55 1755 1 55 1759 1 55 1762 1 55 1764 1 55 1765 1 55 1770 1 55 1774 1 55 1777 1 55 1779 1 55 1780 1 55 1784 1 55 1787 1 55 1789 1 55 1790 1 55 1793 1 55 1795 1 55 1796 1 55 1798 1 55 1799 1 55 1800 1 55 1932 1 55 1937 1 55 1941 1 55 1944 1 55 1946 1 55 1947 1 55 1952 1 55 1956 1 55 1959 1 55 1961 1 55 1962 1 55 1966 1 55 1969 1 55 1971 1 55 1972 1 55 1975 1 55 1977 1 55 1978 1 55 1980 1 55 1981 1 55 1982 1 55 1987 1 55 1991 1 55 1994 1 55 1996 1 55 1997 1 55 2001 1 55 2004 1 55 2006 1 55 2007 1 55 2010 1 55 2012 1 55 2013 1 55 2015 1 55 2016 1 55 2017 1 55 2021 1 55 2024 1 55 2026 1 55 2027 1 55 2030 1 55 2032 1 55 2033 1 55 2035 1 55 2036 1 55 2037 1 55 2040 1 55 2042 1 55 2043 1 55 2045 1 55 2046 1 55 2047 1 55 2049 1 55 2050 1 55 2051 1 55 2052 1 55 2184 1 55 2189 1 55 2193 1 55 2196 1 55 2198 1 55 2199 1 55 2204 1 55 2208 1 55 2211 1 55 2213 1 55 2214 1 55 2218 1 55 2221 1 55 2223 1 55 2224 1 55 2227 1 55 2229 1 55 2230 1 55 2232 1 55 2233 1 55 2234 1 55 2239 1 55 2243 1 55 2246 1 55 2248 1 55 2249 1 55 2253 1 55 2256 1 55 2258 1 55 2259 1 55 2262 1 55 2264 1 55 2265 1 55 2267 1 55 2268 1 55 2269 1 55 2273 1 55 2276 1 55 2278 1 55 2279 1 55 2282 1 55 2284 1 55 2285 1 55 2287 1 55 2288 1 55 2289 1 55 2292 1 55 2294 1 55 2295 1 55 2297 1 55 2298 1 55 2299 1 55 2301 1 55 2302 1 55 2303 1 55 2304 1 55 2435 1 55 2439 1 55 2442 1 55 2444 1 55 2445 1 55 2449 1 55 2452 1 55 2454 1 55 2455 1 55 2458 1 55 2460 1 55 2461 1 55 2463 1 55 2464 1 55 2465 1 55 2469 1 55 2472 1 55 2474 1 55 2475 1 55 2478 1 55 2480 1 55 2481 1 55 2483 1 55 2484 1 55 2485 1 55 2488 1 55 2490 1 55 2491 1 55 2493 1 55 2494 1 55 2495 1 55 2497 1 55 2498 1 55 2499 1 55 2500 1 55 2504 1 55 2507 1 55 2509 1 55 2510 1 55 2513 1 55 2515 1 55 2516 1 55 2518 1 55 2519 1 55 2520 1 55 2523 1 55 2525 1 55 2526 1 55 2528 1 55 2529 1 55 2530 1 55 2532 1 55 2533 1 55 2534 1 55 2535 1 55 2538 1 55 2540 1 55 2541 1 55 2543 1 55 2544 1 55 2545 1 55 2547 1 55 2548 1 55 2549 1 55 2550 1 55 2552 1 55 2553 1 55 2554 1 55 2555 1 55 2556 1 55 2646 1 55 2651 1 55 2655 1 55 2658 1 55 2660 1 55 2661 1 55 2666 1 55 2670 1 55 2673 1 55 2675 1 55 2676 1 55 2680 1 55 2683 1 55 2685 1 55 2686 1 55 2689 1 55 2691 1 55 2692 1 55 2694 1 55 2695 1 55 2696 1 55 2701 1 55 2705 1 55 2708 1 55 2710 1 55 2711 1 55 2715 1 55 2718 1 55 2720 1 55 2721 1 55 2724 1 55 2726 1 55 2727 1 55 2729 1 55 2730 1 55 2731 1 55 2735 1 55 2738 1 55 2740 1 55 2741 1 55 2744 1 55 2746 1 55 2747 1 55 2749 1 55 2750 1 55 2751 1 55 2754 1 55 2756 1 55 2757 1 55 2759 1 55 2760 1 55 2761 1 55 2763 1 55 2764 1 55 2765 1 55 2766 1 55 2897 1 55 2901 1 55 2904 1 55 2906 1 55 2907 1 55 2911 1 55 2914 1 55 2916 1 55 2917 1 55 2920 1 55 2922 1 55 2923 1 55 2925 1 55 2926 1 55 2927 1 55 2931 1 55 2934 1 55 2936 1 55 2937 1 55 2940 1 55 2942 1 55 2943 1 55 2945 1 55 2946 1 55 2947 1 55 2950 1 55 2952 1 55 2953 1 55 2955 1 55 2956 1 55 2957 1 55 2959 1 55 2960 1 55 2961 1 55 2962 1 55 2966 1 55 2969 1 55 2971 1 55 2972 1 55 2975 1 55 2977 1 55 2978 1 55 2980 1 55 2981 1 55 2982 1 55 2985 1 55 2987 1 55 2988 1 55 2990 1 55 2991 1 55 2992 1 55 2994 1 55 2995 1 55 2996 1 55 2997 1 55 3000 1 55 3002 1 55 3003 1 55 3005 1 55 3006 1 55 3007 1 55 3009 1 55 3010 1 55 3011 1 55 3012 1 55 3014 1 55 3015 1 55 3016 1 55 3017 1 55 3018 1 55 3107 1 55 3111 1 55 3114 1 55 3116 1 55 3117 1 55 3121 1 55 3124 1 55 3126 1 55 3127 1 55 3130 1 55 3132 1 55 3133 1 55 3135 1 55 3136 1 55 3137 1 55 3141 1 55 3144 1 55 3146 1 55 3147 1 55 3150 1 55 3152 1 55 3153 1 55 3155 1 55 3156 1 55 3157 1 55 3160 1 55 3162 1 55 3163 1 55 3165 1 55 3166 1 55 3167 1 55 3169 1 55 3170 1 55 3171 1 55 3172 1 55 3176 1 55 3179 1 55 3181 1 55 3182 1 55 3185 1 55 3187 1 55 3188 1 55 3190 1 55 3191 1 55 3192 1 55 3195 1 55 3197 1 55 3198 1 55 3200 1 55 3201 1 55 3202 1 55 3204 1 55 3205 1 55 3206 1 55 3207 1 55 3210 1 55 3212 1 55 3213 1 55 3215 1 55 3216 1 55 3217 1 55 3219 1 55 3220 1 55 3221 1 55 3222 1 55 3224 1 55 3225 1 55 3226 1 55 3227 1 55 3228 1 55 3316 1 55 3319 1 55 3321 1 55 3322 1 55 3325 1 55 3327 1 55 3328 1 55 3330 1 55 3331 1 55 3332 1 55 3335 1 55 3337 1 55 3338 1 55 3340 1 55 3341 1 55 3342 1 55 3344 1 55 3345 1 55 3346 1 55 3347 1 55 3350 1 55 3352 1 55 3353 1 55 3355 1 55 3356 1 55 3357 1 55 3359 1 55 3360 1 55 3361 1 55 3362 1 55 3364 1 55 3365 1 55 3366 1 55 3367 1 55 3368 1 55 3371 1 55 3373 1 55 3374 1 55 3376 1 55 3377 1 55 3378 1 55 3380 1 55 3381 1 55 3382 1 55 3383 1 55 3385 1 55 3386 1 55 3387 1 55 3388 1 55 3389 1 55 3391 1 55 3392 1 55 3393 1 55 3394 1 55 3395 1 55 3396 1 56 1 1 56 37 1 56 38 1 56 39 1 56 40 1 56 41 1 56 42 1 56 43 1 56 121 1 56 122 1 56 123 1 56 124 1 56 125 1 56 126 1 56 127 1 56 205 1 56 206 1 56 207 1 56 208 1 56 209 1 56 210 1 56 211 1 56 212 1 56 213 1 56 214 1 56 215 1 56 216 1 56 217 1 56 218 1 56 219 1 56 220 1 56 221 1 56 222 1 56 223 1 56 224 1 56 225 1 56 331 1 56 332 1 56 333 1 56 334 1 56 335 1 56 336 1 56 337 1 56 415 1 56 416 1 56 417 1 56 418 1 56 419 1 56 420 1 56 421 1 56 422 1 56 423 1 56 424 1 56 425 1 56 426 1 56 427 1 56 428 1 56 429 1 56 430 1 56 431 1 56 432 1 56 433 1 56 434 1 56 435 1 56 541 1 56 542 1 56 543 1 56 544 1 56 545 1 56 546 1 56 547 1 56 548 1 56 549 1 56 550 1 56 551 1 56 552 1 56 553 1 56 554 1 56 555 1 56 556 1 56 557 1 56 558 1 56 559 1 56 560 1 56 561 1 56 667 1 56 668 1 56 669 1 56 670 1 56 671 1 56 672 1 56 673 1 56 674 1 56 675 1 56 676 1 56 677 1 56 678 1 56 679 1 56 680 1 56 681 1 56 682 1 56 683 1 56 684 1 56 685 1 56 686 1 56 687 1 56 688 1 56 689 1 56 690 1 56 691 1 56 692 1 56 693 1 56 694 1 56 695 1 56 696 1 56 697 1 56 698 1 56 699 1 56 700 1 56 701 1 56 793 1 56 794 1 56 795 1 56 796 1 56 797 1 56 798 1 56 799 1 56 877 1 56 878 1 56 879 1 56 880 1 56 881 1 56 882 1 56 883 1 56 884 1 56 885 1 56 886 1 56 887 1 56 888 1 56 889 1 56 890 1 56 891 1 56 892 1 56 893 1 56 894 1 56 895 1 56 896 1 56 897 1 56 1003 1 56 1004 1 56 1005 1 56 1006 1 56 1007 1 56 1008 1 56 1009 1 56 1010 1 56 1011 1 56 1012 1 56 1013 1 56 1014 1 56 1015 1 56 1016 1 56 1017 1 56 1018 1 56 1019 1 56 1020 1 56 1021 1 56 1022 1 56 1023 1 56 1129 1 56 1130 1 56 1131 1 56 1132 1 56 1133 1 56 1134 1 56 1135 1 56 1136 1 56 1137 1 56 1138 1 56 1139 1 56 1140 1 56 1141 1 56 1142 1 56 1143 1 56 1144 1 56 1145 1 56 1146 1 56 1147 1 56 1148 1 56 1149 1 56 1150 1 56 1151 1 56 1152 1 56 1153 1 56 1154 1 56 1155 1 56 1156 1 56 1157 1 56 1158 1 56 1159 1 56 1160 1 56 1161 1 56 1162 1 56 1163 1 56 1255 1 56 1256 1 56 1257 1 56 1258 1 56 1259 1 56 1260 1 56 1261 1 56 1262 1 56 1263 1 56 1264 1 56 1265 1 56 1266 1 56 1267 1 56 1268 1 56 1269 1 56 1270 1 56 1271 1 56 1272 1 56 1273 1 56 1274 1 56 1275 1 56 1381 1 56 1382 1 56 1383 1 56 1384 1 56 1385 1 56 1386 1 56 1387 1 56 1388 1 56 1389 1 56 1390 1 56 1391 1 56 1392 1 56 1393 1 56 1394 1 56 1395 1 56 1396 1 56 1397 1 56 1398 1 56 1399 1 56 1400 1 56 1401 1 56 1402 1 56 1403 1 56 1404 1 56 1405 1 56 1406 1 56 1407 1 56 1408 1 56 1409 1 56 1410 1 56 1411 1 56 1412 1 56 1413 1 56 1414 1 56 1415 1 56 1507 1 56 1508 1 56 1509 1 56 1510 1 56 1511 1 56 1512 1 56 1513 1 56 1514 1 56 1515 1 56 1516 1 56 1517 1 56 1518 1 56 1519 1 56 1520 1 56 1521 1 56 1522 1 56 1523 1 56 1524 1 56 1525 1 56 1526 1 56 1527 1 56 1528 1 56 1529 1 56 1530 1 56 1531 1 56 1532 1 56 1533 1 56 1534 1 56 1535 1 56 1536 1 56 1537 1 56 1538 1 56 1539 1 56 1540 1 56 1541 1 56 1633 1 56 1634 1 56 1635 1 56 1636 1 56 1637 1 56 1638 1 56 1639 1 56 1640 1 56 1641 1 56 1642 1 56 1643 1 56 1644 1 56 1645 1 56 1646 1 56 1647 1 56 1648 1 56 1649 1 56 1650 1 56 1651 1 56 1652 1 56 1653 1 56 1654 1 56 1655 1 56 1656 1 56 1657 1 56 1658 1 56 1659 1 56 1660 1 56 1661 1 56 1662 1 56 1663 1 56 1664 1 56 1665 1 56 1666 1 56 1667 1 56 1717 1 56 1718 1 56 1719 1 56 1720 1 56 1721 1 56 1722 1 56 1723 1 56 1801 1 56 1802 1 56 1803 1 56 1804 1 56 1805 1 56 1806 1 56 1807 1 56 1808 1 56 1809 1 56 1810 1 56 1811 1 56 1812 1 56 1813 1 56 1814 1 56 1815 1 56 1816 1 56 1817 1 56 1818 1 56 1819 1 56 1820 1 56 1821 1 56 1927 1 56 1928 1 56 1929 1 56 1930 1 56 1931 1 56 1932 1 56 1933 1 56 1934 1 56 1935 1 56 1936 1 56 1937 1 56 1938 1 56 1939 1 56 1940 1 56 1941 1 56 1942 1 56 1943 1 56 1944 1 56 1945 1 56 1946 1 56 1947 1 56 2053 1 56 2054 1 56 2055 1 56 2056 1 56 2057 1 56 2058 1 56 2059 1 56 2060 1 56 2061 1 56 2062 1 56 2063 1 56 2064 1 56 2065 1 56 2066 1 56 2067 1 56 2068 1 56 2069 1 56 2070 1 56 2071 1 56 2072 1 56 2073 1 56 2074 1 56 2075 1 56 2076 1 56 2077 1 56 2078 1 56 2079 1 56 2080 1 56 2081 1 56 2082 1 56 2083 1 56 2084 1 56 2085 1 56 2086 1 56 2087 1 56 2179 1 56 2180 1 56 2181 1 56 2182 1 56 2183 1 56 2184 1 56 2185 1 56 2186 1 56 2187 1 56 2188 1 56 2189 1 56 2190 1 56 2191 1 56 2192 1 56 2193 1 56 2194 1 56 2195 1 56 2196 1 56 2197 1 56 2198 1 56 2199 1 56 2305 1 56 2306 1 56 2307 1 56 2308 1 56 2309 1 56 2310 1 56 2311 1 56 2312 1 56 2313 1 56 2314 1 56 2315 1 56 2316 1 56 2317 1 56 2318 1 56 2319 1 56 2320 1 56 2321 1 56 2322 1 56 2323 1 56 2324 1 56 2325 1 56 2326 1 56 2327 1 56 2328 1 56 2329 1 56 2330 1 56 2331 1 56 2332 1 56 2333 1 56 2334 1 56 2335 1 56 2336 1 56 2337 1 56 2338 1 56 2339 1 56 2431 1 56 2432 1 56 2433 1 56 2434 1 56 2435 1 56 2436 1 56 2437 1 56 2438 1 56 2439 1 56 2440 1 56 2441 1 56 2442 1 56 2443 1 56 2444 1 56 2445 1 56 2446 1 56 2447 1 56 2448 1 56 2449 1 56 2450 1 56 2451 1 56 2452 1 56 2453 1 56 2454 1 56 2455 1 56 2456 1 56 2457 1 56 2458 1 56 2459 1 56 2460 1 56 2461 1 56 2462 1 56 2463 1 56 2464 1 56 2465 1 56 2557 1 56 2558 1 56 2559 1 56 2560 1 56 2561 1 56 2562 1 56 2563 1 56 2564 1 56 2565 1 56 2566 1 56 2567 1 56 2568 1 56 2569 1 56 2570 1 56 2571 1 56 2572 1 56 2573 1 56 2574 1 56 2575 1 56 2576 1 56 2577 1 56 2578 1 56 2579 1 56 2580 1 56 2581 1 56 2582 1 56 2583 1 56 2584 1 56 2585 1 56 2586 1 56 2587 1 56 2588 1 56 2589 1 56 2590 1 56 2591 1 56 2641 1 56 2642 1 56 2643 1 56 2644 1 56 2645 1 56 2646 1 56 2647 1 56 2648 1 56 2649 1 56 2650 1 56 2651 1 56 2652 1 56 2653 1 56 2654 1 56 2655 1 56 2656 1 56 2657 1 56 2658 1 56 2659 1 56 2660 1 56 2661 1 56 2767 1 56 2768 1 56 2769 1 56 2770 1 56 2771 1 56 2772 1 56 2773 1 56 2774 1 56 2775 1 56 2776 1 56 2777 1 56 2778 1 56 2779 1 56 2780 1 56 2781 1 56 2782 1 56 2783 1 56 2784 1 56 2785 1 56 2786 1 56 2787 1 56 2788 1 56 2789 1 56 2790 1 56 2791 1 56 2792 1 56 2793 1 56 2794 1 56 2795 1 56 2796 1 56 2797 1 56 2798 1 56 2799 1 56 2800 1 56 2801 1 56 2893 1 56 2894 1 56 2895 1 56 2896 1 56 2897 1 56 2898 1 56 2899 1 56 2900 1 56 2901 1 56 2902 1 56 2903 1 56 2904 1 56 2905 1 56 2906 1 56 2907 1 56 2908 1 56 2909 1 56 2910 1 56 2911 1 56 2912 1 56 2913 1 56 2914 1 56 2915 1 56 2916 1 56 2917 1 56 2918 1 56 2919 1 56 2920 1 56 2921 1 56 2922 1 56 2923 1 56 2924 1 56 2925 1 56 2926 1 56 2927 1 56 3019 1 56 3020 1 56 3021 1 56 3022 1 56 3023 1 56 3024 1 56 3025 1 56 3026 1 56 3027 1 56 3028 1 56 3029 1 56 3030 1 56 3031 1 56 3032 1 56 3033 1 56 3034 1 56 3035 1 56 3036 1 56 3037 1 56 3038 1 56 3039 1 56 3040 1 56 3041 1 56 3042 1 56 3043 1 56 3044 1 56 3045 1 56 3046 1 56 3047 1 56 3048 1 56 3049 1 56 3050 1 56 3051 1 56 3052 1 56 3053 1 56 3103 1 56 3104 1 56 3105 1 56 3106 1 56 3107 1 56 3108 1 56 3109 1 56 3110 1 56 3111 1 56 3112 1 56 3113 1 56 3114 1 56 3115 1 56 3116 1 56 3117 1 56 3118 1 56 3119 1 56 3120 1 56 3121 1 56 3122 1 56 3123 1 56 3124 1 56 3125 1 56 3126 1 56 3127 1 56 3128 1 56 3129 1 56 3130 1 56 3131 1 56 3132 1 56 3133 1 56 3134 1 56 3135 1 56 3136 1 56 3137 1 56 3229 1 56 3230 1 56 3231 1 56 3232 1 56 3233 1 56 3234 1 56 3235 1 56 3236 1 56 3237 1 56 3238 1 56 3239 1 56 3240 1 56 3241 1 56 3242 1 56 3243 1 56 3244 1 56 3245 1 56 3246 1 56 3247 1 56 3248 1 56 3249 1 56 3250 1 56 3251 1 56 3252 1 56 3253 1 56 3254 1 56 3255 1 56 3256 1 56 3257 1 56 3258 1 56 3259 1 56 3260 1 56 3261 1 56 3262 1 56 3263 1 56 3313 1 56 3314 1 56 3315 1 56 3316 1 56 3317 1 56 3318 1 56 3319 1 56 3320 1 56 3321 1 56 3322 1 56 3323 1 56 3324 1 56 3325 1 56 3326 1 56 3327 1 56 3328 1 56 3329 1 56 3330 1 56 3331 1 56 3332 1 56 3333 1 56 3334 1 56 3335 1 56 3336 1 56 3337 1 56 3338 1 56 3339 1 56 3340 1 56 3341 1 56 3342 1 56 3343 1 56 3344 1 56 3345 1 56 3346 1 56 3347 1 56 3397 1 56 3398 1 56 3399 1 56 3400 1 56 3401 1 56 3402 1 56 3403 1 56 3404 1 56 3405 1 56 3406 1 56 3407 1 56 3408 1 56 3409 1 56 3410 1 56 3411 1 56 3412 1 56 3413 1 56 3414 1 56 3415 1 56 3416 1 56 3417 1 57 2 1 57 37 1 57 44 1 57 45 1 57 46 1 57 47 1 57 48 1 57 49 1 57 121 1 57 128 1 57 129 1 57 130 1 57 131 1 57 132 1 57 133 1 57 205 1 57 206 1 57 207 1 57 208 1 57 209 1 57 210 1 57 226 1 57 227 1 57 228 1 57 229 1 57 230 1 57 231 1 57 232 1 57 233 1 57 234 1 57 235 1 57 236 1 57 237 1 57 238 1 57 239 1 57 240 1 57 331 1 57 338 1 57 339 1 57 340 1 57 341 1 57 342 1 57 343 1 57 415 1 57 416 1 57 417 1 57 418 1 57 419 1 57 420 1 57 436 1 57 437 1 57 438 1 57 439 1 57 440 1 57 441 1 57 442 1 57 443 1 57 444 1 57 445 1 57 446 1 57 447 1 57 448 1 57 449 1 57 450 1 57 541 1 57 542 1 57 543 1 57 544 1 57 545 1 57 546 1 57 562 1 57 563 1 57 564 1 57 565 1 57 566 1 57 567 1 57 568 1 57 569 1 57 570 1 57 571 1 57 572 1 57 573 1 57 574 1 57 575 1 57 576 1 57 667 1 57 668 1 57 669 1 57 670 1 57 671 1 57 672 1 57 673 1 57 674 1 57 675 1 57 676 1 57 677 1 57 678 1 57 679 1 57 680 1 57 681 1 57 702 1 57 703 1 57 704 1 57 705 1 57 706 1 57 707 1 57 708 1 57 709 1 57 710 1 57 711 1 57 712 1 57 713 1 57 714 1 57 715 1 57 716 1 57 717 1 57 718 1 57 719 1 57 720 1 57 721 1 57 793 1 57 800 1 57 801 1 57 802 1 57 803 1 57 804 1 57 805 1 57 877 1 57 878 1 57 879 1 57 880 1 57 881 1 57 882 1 57 898 1 57 899 1 57 900 1 57 901 1 57 902 1 57 903 1 57 904 1 57 905 1 57 906 1 57 907 1 57 908 1 57 909 1 57 910 1 57 911 1 57 912 1 57 1003 1 57 1004 1 57 1005 1 57 1006 1 57 1007 1 57 1008 1 57 1024 1 57 1025 1 57 1026 1 57 1027 1 57 1028 1 57 1029 1 57 1030 1 57 1031 1 57 1032 1 57 1033 1 57 1034 1 57 1035 1 57 1036 1 57 1037 1 57 1038 1 57 1129 1 57 1130 1 57 1131 1 57 1132 1 57 1133 1 57 1134 1 57 1135 1 57 1136 1 57 1137 1 57 1138 1 57 1139 1 57 1140 1 57 1141 1 57 1142 1 57 1143 1 57 1164 1 57 1165 1 57 1166 1 57 1167 1 57 1168 1 57 1169 1 57 1170 1 57 1171 1 57 1172 1 57 1173 1 57 1174 1 57 1175 1 57 1176 1 57 1177 1 57 1178 1 57 1179 1 57 1180 1 57 1181 1 57 1182 1 57 1183 1 57 1255 1 57 1256 1 57 1257 1 57 1258 1 57 1259 1 57 1260 1 57 1276 1 57 1277 1 57 1278 1 57 1279 1 57 1280 1 57 1281 1 57 1282 1 57 1283 1 57 1284 1 57 1285 1 57 1286 1 57 1287 1 57 1288 1 57 1289 1 57 1290 1 57 1381 1 57 1382 1 57 1383 1 57 1384 1 57 1385 1 57 1386 1 57 1387 1 57 1388 1 57 1389 1 57 1390 1 57 1391 1 57 1392 1 57 1393 1 57 1394 1 57 1395 1 57 1416 1 57 1417 1 57 1418 1 57 1419 1 57 1420 1 57 1421 1 57 1422 1 57 1423 1 57 1424 1 57 1425 1 57 1426 1 57 1427 1 57 1428 1 57 1429 1 57 1430 1 57 1431 1 57 1432 1 57 1433 1 57 1434 1 57 1435 1 57 1507 1 57 1508 1 57 1509 1 57 1510 1 57 1511 1 57 1512 1 57 1513 1 57 1514 1 57 1515 1 57 1516 1 57 1517 1 57 1518 1 57 1519 1 57 1520 1 57 1521 1 57 1542 1 57 1543 1 57 1544 1 57 1545 1 57 1546 1 57 1547 1 57 1548 1 57 1549 1 57 1550 1 57 1551 1 57 1552 1 57 1553 1 57 1554 1 57 1555 1 57 1556 1 57 1557 1 57 1558 1 57 1559 1 57 1560 1 57 1561 1 57 1633 1 57 1634 1 57 1635 1 57 1636 1 57 1637 1 57 1638 1 57 1639 1 57 1640 1 57 1641 1 57 1642 1 57 1643 1 57 1644 1 57 1645 1 57 1646 1 57 1647 1 57 1648 1 57 1649 1 57 1650 1 57 1651 1 57 1652 1 57 1668 1 57 1669 1 57 1670 1 57 1671 1 57 1672 1 57 1673 1 57 1674 1 57 1675 1 57 1676 1 57 1677 1 57 1678 1 57 1679 1 57 1680 1 57 1681 1 57 1682 1 57 1717 1 57 1724 1 57 1725 1 57 1726 1 57 1727 1 57 1728 1 57 1729 1 57 1801 1 57 1802 1 57 1803 1 57 1804 1 57 1805 1 57 1806 1 57 1822 1 57 1823 1 57 1824 1 57 1825 1 57 1826 1 57 1827 1 57 1828 1 57 1829 1 57 1830 1 57 1831 1 57 1832 1 57 1833 1 57 1834 1 57 1835 1 57 1836 1 57 1927 1 57 1928 1 57 1929 1 57 1930 1 57 1931 1 57 1932 1 57 1948 1 57 1949 1 57 1950 1 57 1951 1 57 1952 1 57 1953 1 57 1954 1 57 1955 1 57 1956 1 57 1957 1 57 1958 1 57 1959 1 57 1960 1 57 1961 1 57 1962 1 57 2053 1 57 2054 1 57 2055 1 57 2056 1 57 2057 1 57 2058 1 57 2059 1 57 2060 1 57 2061 1 57 2062 1 57 2063 1 57 2064 1 57 2065 1 57 2066 1 57 2067 1 57 2088 1 57 2089 1 57 2090 1 57 2091 1 57 2092 1 57 2093 1 57 2094 1 57 2095 1 57 2096 1 57 2097 1 57 2098 1 57 2099 1 57 2100 1 57 2101 1 57 2102 1 57 2103 1 57 2104 1 57 2105 1 57 2106 1 57 2107 1 57 2179 1 57 2180 1 57 2181 1 57 2182 1 57 2183 1 57 2184 1 57 2200 1 57 2201 1 57 2202 1 57 2203 1 57 2204 1 57 2205 1 57 2206 1 57 2207 1 57 2208 1 57 2209 1 57 2210 1 57 2211 1 57 2212 1 57 2213 1 57 2214 1 57 2305 1 57 2306 1 57 2307 1 57 2308 1 57 2309 1 57 2310 1 57 2311 1 57 2312 1 57 2313 1 57 2314 1 57 2315 1 57 2316 1 57 2317 1 57 2318 1 57 2319 1 57 2340 1 57 2341 1 57 2342 1 57 2343 1 57 2344 1 57 2345 1 57 2346 1 57 2347 1 57 2348 1 57 2349 1 57 2350 1 57 2351 1 57 2352 1 57 2353 1 57 2354 1 57 2355 1 57 2356 1 57 2357 1 57 2358 1 57 2359 1 57 2431 1 57 2432 1 57 2433 1 57 2434 1 57 2435 1 57 2436 1 57 2437 1 57 2438 1 57 2439 1 57 2440 1 57 2441 1 57 2442 1 57 2443 1 57 2444 1 57 2445 1 57 2466 1 57 2467 1 57 2468 1 57 2469 1 57 2470 1 57 2471 1 57 2472 1 57 2473 1 57 2474 1 57 2475 1 57 2476 1 57 2477 1 57 2478 1 57 2479 1 57 2480 1 57 2481 1 57 2482 1 57 2483 1 57 2484 1 57 2485 1 57 2557 1 57 2558 1 57 2559 1 57 2560 1 57 2561 1 57 2562 1 57 2563 1 57 2564 1 57 2565 1 57 2566 1 57 2567 1 57 2568 1 57 2569 1 57 2570 1 57 2571 1 57 2572 1 57 2573 1 57 2574 1 57 2575 1 57 2576 1 57 2592 1 57 2593 1 57 2594 1 57 2595 1 57 2596 1 57 2597 1 57 2598 1 57 2599 1 57 2600 1 57 2601 1 57 2602 1 57 2603 1 57 2604 1 57 2605 1 57 2606 1 57 2641 1 57 2642 1 57 2643 1 57 2644 1 57 2645 1 57 2646 1 57 2662 1 57 2663 1 57 2664 1 57 2665 1 57 2666 1 57 2667 1 57 2668 1 57 2669 1 57 2670 1 57 2671 1 57 2672 1 57 2673 1 57 2674 1 57 2675 1 57 2676 1 57 2767 1 57 2768 1 57 2769 1 57 2770 1 57 2771 1 57 2772 1 57 2773 1 57 2774 1 57 2775 1 57 2776 1 57 2777 1 57 2778 1 57 2779 1 57 2780 1 57 2781 1 57 2802 1 57 2803 1 57 2804 1 57 2805 1 57 2806 1 57 2807 1 57 2808 1 57 2809 1 57 2810 1 57 2811 1 57 2812 1 57 2813 1 57 2814 1 57 2815 1 57 2816 1 57 2817 1 57 2818 1 57 2819 1 57 2820 1 57 2821 1 57 2893 1 57 2894 1 57 2895 1 57 2896 1 57 2897 1 57 2898 1 57 2899 1 57 2900 1 57 2901 1 57 2902 1 57 2903 1 57 2904 1 57 2905 1 57 2906 1 57 2907 1 57 2928 1 57 2929 1 57 2930 1 57 2931 1 57 2932 1 57 2933 1 57 2934 1 57 2935 1 57 2936 1 57 2937 1 57 2938 1 57 2939 1 57 2940 1 57 2941 1 57 2942 1 57 2943 1 57 2944 1 57 2945 1 57 2946 1 57 2947 1 57 3019 1 57 3020 1 57 3021 1 57 3022 1 57 3023 1 57 3024 1 57 3025 1 57 3026 1 57 3027 1 57 3028 1 57 3029 1 57 3030 1 57 3031 1 57 3032 1 57 3033 1 57 3034 1 57 3035 1 57 3036 1 57 3037 1 57 3038 1 57 3054 1 57 3055 1 57 3056 1 57 3057 1 57 3058 1 57 3059 1 57 3060 1 57 3061 1 57 3062 1 57 3063 1 57 3064 1 57 3065 1 57 3066 1 57 3067 1 57 3068 1 57 3103 1 57 3104 1 57 3105 1 57 3106 1 57 3107 1 57 3108 1 57 3109 1 57 3110 1 57 3111 1 57 3112 1 57 3113 1 57 3114 1 57 3115 1 57 3116 1 57 3117 1 57 3138 1 57 3139 1 57 3140 1 57 3141 1 57 3142 1 57 3143 1 57 3144 1 57 3145 1 57 3146 1 57 3147 1 57 3148 1 57 3149 1 57 3150 1 57 3151 1 57 3152 1 57 3153 1 57 3154 1 57 3155 1 57 3156 1 57 3157 1 57 3229 1 57 3230 1 57 3231 1 57 3232 1 57 3233 1 57 3234 1 57 3235 1 57 3236 1 57 3237 1 57 3238 1 57 3239 1 57 3240 1 57 3241 1 57 3242 1 57 3243 1 57 3244 1 57 3245 1 57 3246 1 57 3247 1 57 3248 1 57 3264 1 57 3265 1 57 3266 1 57 3267 1 57 3268 1 57 3269 1 57 3270 1 57 3271 1 57 3272 1 57 3273 1 57 3274 1 57 3275 1 57 3276 1 57 3277 1 57 3278 1 57 3313 1 57 3314 1 57 3315 1 57 3316 1 57 3317 1 57 3318 1 57 3319 1 57 3320 1 57 3321 1 57 3322 1 57 3323 1 57 3324 1 57 3325 1 57 3326 1 57 3327 1 57 3328 1 57 3329 1 57 3330 1 57 3331 1 57 3332 1 57 3348 1 57 3349 1 57 3350 1 57 3351 1 57 3352 1 57 3353 1 57 3354 1 57 3355 1 57 3356 1 57 3357 1 57 3358 1 57 3359 1 57 3360 1 57 3361 1 57 3362 1 57 3397 1 57 3398 1 57 3399 1 57 3400 1 57 3401 1 57 3402 1 57 3403 1 57 3404 1 57 3405 1 57 3406 1 57 3407 1 57 3408 1 57 3409 1 57 3410 1 57 3411 1 57 3418 1 57 3419 1 57 3420 1 57 3421 1 57 3422 1 57 3423 1 58 3 1 58 38 1 58 44 1 58 50 1 58 51 1 58 52 1 58 53 1 58 54 1 58 122 1 58 128 1 58 134 1 58 135 1 58 136 1 58 137 1 58 138 1 58 205 1 58 211 1 58 212 1 58 213 1 58 214 1 58 215 1 58 226 1 58 227 1 58 228 1 58 229 1 58 230 1 58 241 1 58 242 1 58 243 1 58 244 1 58 245 1 58 246 1 58 247 1 58 248 1 58 249 1 58 250 1 58 332 1 58 338 1 58 344 1 58 345 1 58 346 1 58 347 1 58 348 1 58 415 1 58 421 1 58 422 1 58 423 1 58 424 1 58 425 1 58 436 1 58 437 1 58 438 1 58 439 1 58 440 1 58 451 1 58 452 1 58 453 1 58 454 1 58 455 1 58 456 1 58 457 1 58 458 1 58 459 1 58 460 1 58 541 1 58 547 1 58 548 1 58 549 1 58 550 1 58 551 1 58 562 1 58 563 1 58 564 1 58 565 1 58 566 1 58 577 1 58 578 1 58 579 1 58 580 1 58 581 1 58 582 1 58 583 1 58 584 1 58 585 1 58 586 1 58 667 1 58 668 1 58 669 1 58 670 1 58 671 1 58 682 1 58 683 1 58 684 1 58 685 1 58 686 1 58 687 1 58 688 1 58 689 1 58 690 1 58 691 1 58 702 1 58 703 1 58 704 1 58 705 1 58 706 1 58 707 1 58 708 1 58 709 1 58 710 1 58 711 1 58 722 1 58 723 1 58 724 1 58 725 1 58 726 1 58 727 1 58 728 1 58 729 1 58 730 1 58 731 1 58 794 1 58 800 1 58 806 1 58 807 1 58 808 1 58 809 1 58 810 1 58 877 1 58 883 1 58 884 1 58 885 1 58 886 1 58 887 1 58 898 1 58 899 1 58 900 1 58 901 1 58 902 1 58 913 1 58 914 1 58 915 1 58 916 1 58 917 1 58 918 1 58 919 1 58 920 1 58 921 1 58 922 1 58 1003 1 58 1009 1 58 1010 1 58 1011 1 58 1012 1 58 1013 1 58 1024 1 58 1025 1 58 1026 1 58 1027 1 58 1028 1 58 1039 1 58 1040 1 58 1041 1 58 1042 1 58 1043 1 58 1044 1 58 1045 1 58 1046 1 58 1047 1 58 1048 1 58 1129 1 58 1130 1 58 1131 1 58 1132 1 58 1133 1 58 1144 1 58 1145 1 58 1146 1 58 1147 1 58 1148 1 58 1149 1 58 1150 1 58 1151 1 58 1152 1 58 1153 1 58 1164 1 58 1165 1 58 1166 1 58 1167 1 58 1168 1 58 1169 1 58 1170 1 58 1171 1 58 1172 1 58 1173 1 58 1184 1 58 1185 1 58 1186 1 58 1187 1 58 1188 1 58 1189 1 58 1190 1 58 1191 1 58 1192 1 58 1193 1 58 1255 1 58 1261 1 58 1262 1 58 1263 1 58 1264 1 58 1265 1 58 1276 1 58 1277 1 58 1278 1 58 1279 1 58 1280 1 58 1291 1 58 1292 1 58 1293 1 58 1294 1 58 1295 1 58 1296 1 58 1297 1 58 1298 1 58 1299 1 58 1300 1 58 1381 1 58 1382 1 58 1383 1 58 1384 1 58 1385 1 58 1396 1 58 1397 1 58 1398 1 58 1399 1 58 1400 1 58 1401 1 58 1402 1 58 1403 1 58 1404 1 58 1405 1 58 1416 1 58 1417 1 58 1418 1 58 1419 1 58 1420 1 58 1421 1 58 1422 1 58 1423 1 58 1424 1 58 1425 1 58 1436 1 58 1437 1 58 1438 1 58 1439 1 58 1440 1 58 1441 1 58 1442 1 58 1443 1 58 1444 1 58 1445 1 58 1507 1 58 1508 1 58 1509 1 58 1510 1 58 1511 1 58 1522 1 58 1523 1 58 1524 1 58 1525 1 58 1526 1 58 1527 1 58 1528 1 58 1529 1 58 1530 1 58 1531 1 58 1542 1 58 1543 1 58 1544 1 58 1545 1 58 1546 1 58 1547 1 58 1548 1 58 1549 1 58 1550 1 58 1551 1 58 1562 1 58 1563 1 58 1564 1 58 1565 1 58 1566 1 58 1567 1 58 1568 1 58 1569 1 58 1570 1 58 1571 1 58 1633 1 58 1634 1 58 1635 1 58 1636 1 58 1637 1 58 1638 1 58 1639 1 58 1640 1 58 1641 1 58 1642 1 58 1653 1 58 1654 1 58 1655 1 58 1656 1 58 1657 1 58 1658 1 58 1659 1 58 1660 1 58 1661 1 58 1662 1 58 1668 1 58 1669 1 58 1670 1 58 1671 1 58 1672 1 58 1673 1 58 1674 1 58 1675 1 58 1676 1 58 1677 1 58 1683 1 58 1684 1 58 1685 1 58 1686 1 58 1687 1 58 1718 1 58 1724 1 58 1730 1 58 1731 1 58 1732 1 58 1733 1 58 1734 1 58 1801 1 58 1807 1 58 1808 1 58 1809 1 58 1810 1 58 1811 1 58 1822 1 58 1823 1 58 1824 1 58 1825 1 58 1826 1 58 1837 1 58 1838 1 58 1839 1 58 1840 1 58 1841 1 58 1842 1 58 1843 1 58 1844 1 58 1845 1 58 1846 1 58 1927 1 58 1933 1 58 1934 1 58 1935 1 58 1936 1 58 1937 1 58 1948 1 58 1949 1 58 1950 1 58 1951 1 58 1952 1 58 1963 1 58 1964 1 58 1965 1 58 1966 1 58 1967 1 58 1968 1 58 1969 1 58 1970 1 58 1971 1 58 1972 1 58 2053 1 58 2054 1 58 2055 1 58 2056 1 58 2057 1 58 2068 1 58 2069 1 58 2070 1 58 2071 1 58 2072 1 58 2073 1 58 2074 1 58 2075 1 58 2076 1 58 2077 1 58 2088 1 58 2089 1 58 2090 1 58 2091 1 58 2092 1 58 2093 1 58 2094 1 58 2095 1 58 2096 1 58 2097 1 58 2108 1 58 2109 1 58 2110 1 58 2111 1 58 2112 1 58 2113 1 58 2114 1 58 2115 1 58 2116 1 58 2117 1 58 2179 1 58 2185 1 58 2186 1 58 2187 1 58 2188 1 58 2189 1 58 2200 1 58 2201 1 58 2202 1 58 2203 1 58 2204 1 58 2215 1 58 2216 1 58 2217 1 58 2218 1 58 2219 1 58 2220 1 58 2221 1 58 2222 1 58 2223 1 58 2224 1 58 2305 1 58 2306 1 58 2307 1 58 2308 1 58 2309 1 58 2320 1 58 2321 1 58 2322 1 58 2323 1 58 2324 1 58 2325 1 58 2326 1 58 2327 1 58 2328 1 58 2329 1 58 2340 1 58 2341 1 58 2342 1 58 2343 1 58 2344 1 58 2345 1 58 2346 1 58 2347 1 58 2348 1 58 2349 1 58 2360 1 58 2361 1 58 2362 1 58 2363 1 58 2364 1 58 2365 1 58 2366 1 58 2367 1 58 2368 1 58 2369 1 58 2431 1 58 2432 1 58 2433 1 58 2434 1 58 2435 1 58 2446 1 58 2447 1 58 2448 1 58 2449 1 58 2450 1 58 2451 1 58 2452 1 58 2453 1 58 2454 1 58 2455 1 58 2466 1 58 2467 1 58 2468 1 58 2469 1 58 2470 1 58 2471 1 58 2472 1 58 2473 1 58 2474 1 58 2475 1 58 2486 1 58 2487 1 58 2488 1 58 2489 1 58 2490 1 58 2491 1 58 2492 1 58 2493 1 58 2494 1 58 2495 1 58 2557 1 58 2558 1 58 2559 1 58 2560 1 58 2561 1 58 2562 1 58 2563 1 58 2564 1 58 2565 1 58 2566 1 58 2577 1 58 2578 1 58 2579 1 58 2580 1 58 2581 1 58 2582 1 58 2583 1 58 2584 1 58 2585 1 58 2586 1 58 2592 1 58 2593 1 58 2594 1 58 2595 1 58 2596 1 58 2597 1 58 2598 1 58 2599 1 58 2600 1 58 2601 1 58 2607 1 58 2608 1 58 2609 1 58 2610 1 58 2611 1 58 2641 1 58 2647 1 58 2648 1 58 2649 1 58 2650 1 58 2651 1 58 2662 1 58 2663 1 58 2664 1 58 2665 1 58 2666 1 58 2677 1 58 2678 1 58 2679 1 58 2680 1 58 2681 1 58 2682 1 58 2683 1 58 2684 1 58 2685 1 58 2686 1 58 2767 1 58 2768 1 58 2769 1 58 2770 1 58 2771 1 58 2782 1 58 2783 1 58 2784 1 58 2785 1 58 2786 1 58 2787 1 58 2788 1 58 2789 1 58 2790 1 58 2791 1 58 2802 1 58 2803 1 58 2804 1 58 2805 1 58 2806 1 58 2807 1 58 2808 1 58 2809 1 58 2810 1 58 2811 1 58 2822 1 58 2823 1 58 2824 1 58 2825 1 58 2826 1 58 2827 1 58 2828 1 58 2829 1 58 2830 1 58 2831 1 58 2893 1 58 2894 1 58 2895 1 58 2896 1 58 2897 1 58 2908 1 58 2909 1 58 2910 1 58 2911 1 58 2912 1 58 2913 1 58 2914 1 58 2915 1 58 2916 1 58 2917 1 58 2928 1 58 2929 1 58 2930 1 58 2931 1 58 2932 1 58 2933 1 58 2934 1 58 2935 1 58 2936 1 58 2937 1 58 2948 1 58 2949 1 58 2950 1 58 2951 1 58 2952 1 58 2953 1 58 2954 1 58 2955 1 58 2956 1 58 2957 1 58 3019 1 58 3020 1 58 3021 1 58 3022 1 58 3023 1 58 3024 1 58 3025 1 58 3026 1 58 3027 1 58 3028 1 58 3039 1 58 3040 1 58 3041 1 58 3042 1 58 3043 1 58 3044 1 58 3045 1 58 3046 1 58 3047 1 58 3048 1 58 3054 1 58 3055 1 58 3056 1 58 3057 1 58 3058 1 58 3059 1 58 3060 1 58 3061 1 58 3062 1 58 3063 1 58 3069 1 58 3070 1 58 3071 1 58 3072 1 58 3073 1 58 3103 1 58 3104 1 58 3105 1 58 3106 1 58 3107 1 58 3118 1 58 3119 1 58 3120 1 58 3121 1 58 3122 1 58 3123 1 58 3124 1 58 3125 1 58 3126 1 58 3127 1 58 3138 1 58 3139 1 58 3140 1 58 3141 1 58 3142 1 58 3143 1 58 3144 1 58 3145 1 58 3146 1 58 3147 1 58 3158 1 58 3159 1 58 3160 1 58 3161 1 58 3162 1 58 3163 1 58 3164 1 58 3165 1 58 3166 1 58 3167 1 58 3229 1 58 3230 1 58 3231 1 58 3232 1 58 3233 1 58 3234 1 58 3235 1 58 3236 1 58 3237 1 58 3238 1 58 3249 1 58 3250 1 58 3251 1 58 3252 1 58 3253 1 58 3254 1 58 3255 1 58 3256 1 58 3257 1 58 3258 1 58 3264 1 58 3265 1 58 3266 1 58 3267 1 58 3268 1 58 3269 1 58 3270 1 58 3271 1 58 3272 1 58 3273 1 58 3279 1 58 3280 1 58 3281 1 58 3282 1 58 3283 1 58 3313 1 58 3314 1 58 3315 1 58 3316 1 58 3317 1 58 3318 1 58 3319 1 58 3320 1 58 3321 1 58 3322 1 58 3333 1 58 3334 1 58 3335 1 58 3336 1 58 3337 1 58 3338 1 58 3339 1 58 3340 1 58 3341 1 58 3342 1 58 3348 1 58 3349 1 58 3350 1 58 3351 1 58 3352 1 58 3353 1 58 3354 1 58 3355 1 58 3356 1 58 3357 1 58 3363 1 58 3364 1 58 3365 1 58 3366 1 58 3367 1 58 3397 1 58 3398 1 58 3399 1 58 3400 1 58 3401 1 58 3402 1 58 3403 1 58 3404 1 58 3405 1 58 3406 1 58 3412 1 58 3413 1 58 3414 1 58 3415 1 58 3416 1 58 3418 1 58 3419 1 58 3420 1 58 3421 1 58 3422 1 58 3424 1 59 4 1 59 39 1 59 45 1 59 50 1 59 55 1 59 56 1 59 57 1 59 58 1 59 123 1 59 129 1 59 134 1 59 139 1 59 140 1 59 141 1 59 142 1 59 206 1 59 211 1 59 216 1 59 217 1 59 218 1 59 219 1 59 226 1 59 231 1 59 232 1 59 233 1 59 234 1 59 241 1 59 242 1 59 243 1 59 244 1 59 251 1 59 252 1 59 253 1 59 254 1 59 255 1 59 256 1 59 333 1 59 339 1 59 344 1 59 349 1 59 350 1 59 351 1 59 352 1 59 416 1 59 421 1 59 426 1 59 427 1 59 428 1 59 429 1 59 436 1 59 441 1 59 442 1 59 443 1 59 444 1 59 451 1 59 452 1 59 453 1 59 454 1 59 461 1 59 462 1 59 463 1 59 464 1 59 465 1 59 466 1 59 542 1 59 547 1 59 552 1 59 553 1 59 554 1 59 555 1 59 562 1 59 567 1 59 568 1 59 569 1 59 570 1 59 577 1 59 578 1 59 579 1 59 580 1 59 587 1 59 588 1 59 589 1 59 590 1 59 591 1 59 592 1 59 667 1 59 672 1 59 673 1 59 674 1 59 675 1 59 682 1 59 683 1 59 684 1 59 685 1 59 692 1 59 693 1 59 694 1 59 695 1 59 696 1 59 697 1 59 702 1 59 703 1 59 704 1 59 705 1 59 712 1 59 713 1 59 714 1 59 715 1 59 716 1 59 717 1 59 722 1 59 723 1 59 724 1 59 725 1 59 726 1 59 727 1 59 732 1 59 733 1 59 734 1 59 735 1 59 795 1 59 801 1 59 806 1 59 811 1 59 812 1 59 813 1 59 814 1 59 878 1 59 883 1 59 888 1 59 889 1 59 890 1 59 891 1 59 898 1 59 903 1 59 904 1 59 905 1 59 906 1 59 913 1 59 914 1 59 915 1 59 916 1 59 923 1 59 924 1 59 925 1 59 926 1 59 927 1 59 928 1 59 1004 1 59 1009 1 59 1014 1 59 1015 1 59 1016 1 59 1017 1 59 1024 1 59 1029 1 59 1030 1 59 1031 1 59 1032 1 59 1039 1 59 1040 1 59 1041 1 59 1042 1 59 1049 1 59 1050 1 59 1051 1 59 1052 1 59 1053 1 59 1054 1 59 1129 1 59 1134 1 59 1135 1 59 1136 1 59 1137 1 59 1144 1 59 1145 1 59 1146 1 59 1147 1 59 1154 1 59 1155 1 59 1156 1 59 1157 1 59 1158 1 59 1159 1 59 1164 1 59 1165 1 59 1166 1 59 1167 1 59 1174 1 59 1175 1 59 1176 1 59 1177 1 59 1178 1 59 1179 1 59 1184 1 59 1185 1 59 1186 1 59 1187 1 59 1188 1 59 1189 1 59 1194 1 59 1195 1 59 1196 1 59 1197 1 59 1256 1 59 1261 1 59 1266 1 59 1267 1 59 1268 1 59 1269 1 59 1276 1 59 1281 1 59 1282 1 59 1283 1 59 1284 1 59 1291 1 59 1292 1 59 1293 1 59 1294 1 59 1301 1 59 1302 1 59 1303 1 59 1304 1 59 1305 1 59 1306 1 59 1381 1 59 1386 1 59 1387 1 59 1388 1 59 1389 1 59 1396 1 59 1397 1 59 1398 1 59 1399 1 59 1406 1 59 1407 1 59 1408 1 59 1409 1 59 1410 1 59 1411 1 59 1416 1 59 1417 1 59 1418 1 59 1419 1 59 1426 1 59 1427 1 59 1428 1 59 1429 1 59 1430 1 59 1431 1 59 1436 1 59 1437 1 59 1438 1 59 1439 1 59 1440 1 59 1441 1 59 1446 1 59 1447 1 59 1448 1 59 1449 1 59 1507 1 59 1512 1 59 1513 1 59 1514 1 59 1515 1 59 1522 1 59 1523 1 59 1524 1 59 1525 1 59 1532 1 59 1533 1 59 1534 1 59 1535 1 59 1536 1 59 1537 1 59 1542 1 59 1543 1 59 1544 1 59 1545 1 59 1552 1 59 1553 1 59 1554 1 59 1555 1 59 1556 1 59 1557 1 59 1562 1 59 1563 1 59 1564 1 59 1565 1 59 1566 1 59 1567 1 59 1572 1 59 1573 1 59 1574 1 59 1575 1 59 1633 1 59 1634 1 59 1635 1 59 1636 1 59 1643 1 59 1644 1 59 1645 1 59 1646 1 59 1647 1 59 1648 1 59 1653 1 59 1654 1 59 1655 1 59 1656 1 59 1657 1 59 1658 1 59 1663 1 59 1664 1 59 1665 1 59 1666 1 59 1668 1 59 1669 1 59 1670 1 59 1671 1 59 1672 1 59 1673 1 59 1678 1 59 1679 1 59 1680 1 59 1681 1 59 1683 1 59 1684 1 59 1685 1 59 1686 1 59 1688 1 59 1719 1 59 1725 1 59 1730 1 59 1735 1 59 1736 1 59 1737 1 59 1738 1 59 1802 1 59 1807 1 59 1812 1 59 1813 1 59 1814 1 59 1815 1 59 1822 1 59 1827 1 59 1828 1 59 1829 1 59 1830 1 59 1837 1 59 1838 1 59 1839 1 59 1840 1 59 1847 1 59 1848 1 59 1849 1 59 1850 1 59 1851 1 59 1852 1 59 1928 1 59 1933 1 59 1938 1 59 1939 1 59 1940 1 59 1941 1 59 1948 1 59 1953 1 59 1954 1 59 1955 1 59 1956 1 59 1963 1 59 1964 1 59 1965 1 59 1966 1 59 1973 1 59 1974 1 59 1975 1 59 1976 1 59 1977 1 59 1978 1 59 2053 1 59 2058 1 59 2059 1 59 2060 1 59 2061 1 59 2068 1 59 2069 1 59 2070 1 59 2071 1 59 2078 1 59 2079 1 59 2080 1 59 2081 1 59 2082 1 59 2083 1 59 2088 1 59 2089 1 59 2090 1 59 2091 1 59 2098 1 59 2099 1 59 2100 1 59 2101 1 59 2102 1 59 2103 1 59 2108 1 59 2109 1 59 2110 1 59 2111 1 59 2112 1 59 2113 1 59 2118 1 59 2119 1 59 2120 1 59 2121 1 59 2180 1 59 2185 1 59 2190 1 59 2191 1 59 2192 1 59 2193 1 59 2200 1 59 2205 1 59 2206 1 59 2207 1 59 2208 1 59 2215 1 59 2216 1 59 2217 1 59 2218 1 59 2225 1 59 2226 1 59 2227 1 59 2228 1 59 2229 1 59 2230 1 59 2305 1 59 2310 1 59 2311 1 59 2312 1 59 2313 1 59 2320 1 59 2321 1 59 2322 1 59 2323 1 59 2330 1 59 2331 1 59 2332 1 59 2333 1 59 2334 1 59 2335 1 59 2340 1 59 2341 1 59 2342 1 59 2343 1 59 2350 1 59 2351 1 59 2352 1 59 2353 1 59 2354 1 59 2355 1 59 2360 1 59 2361 1 59 2362 1 59 2363 1 59 2364 1 59 2365 1 59 2370 1 59 2371 1 59 2372 1 59 2373 1 59 2431 1 59 2436 1 59 2437 1 59 2438 1 59 2439 1 59 2446 1 59 2447 1 59 2448 1 59 2449 1 59 2456 1 59 2457 1 59 2458 1 59 2459 1 59 2460 1 59 2461 1 59 2466 1 59 2467 1 59 2468 1 59 2469 1 59 2476 1 59 2477 1 59 2478 1 59 2479 1 59 2480 1 59 2481 1 59 2486 1 59 2487 1 59 2488 1 59 2489 1 59 2490 1 59 2491 1 59 2496 1 59 2497 1 59 2498 1 59 2499 1 59 2557 1 59 2558 1 59 2559 1 59 2560 1 59 2567 1 59 2568 1 59 2569 1 59 2570 1 59 2571 1 59 2572 1 59 2577 1 59 2578 1 59 2579 1 59 2580 1 59 2581 1 59 2582 1 59 2587 1 59 2588 1 59 2589 1 59 2590 1 59 2592 1 59 2593 1 59 2594 1 59 2595 1 59 2596 1 59 2597 1 59 2602 1 59 2603 1 59 2604 1 59 2605 1 59 2607 1 59 2608 1 59 2609 1 59 2610 1 59 2612 1 59 2642 1 59 2647 1 59 2652 1 59 2653 1 59 2654 1 59 2655 1 59 2662 1 59 2667 1 59 2668 1 59 2669 1 59 2670 1 59 2677 1 59 2678 1 59 2679 1 59 2680 1 59 2687 1 59 2688 1 59 2689 1 59 2690 1 59 2691 1 59 2692 1 59 2767 1 59 2772 1 59 2773 1 59 2774 1 59 2775 1 59 2782 1 59 2783 1 59 2784 1 59 2785 1 59 2792 1 59 2793 1 59 2794 1 59 2795 1 59 2796 1 59 2797 1 59 2802 1 59 2803 1 59 2804 1 59 2805 1 59 2812 1 59 2813 1 59 2814 1 59 2815 1 59 2816 1 59 2817 1 59 2822 1 59 2823 1 59 2824 1 59 2825 1 59 2826 1 59 2827 1 59 2832 1 59 2833 1 59 2834 1 59 2835 1 59 2893 1 59 2898 1 59 2899 1 59 2900 1 59 2901 1 59 2908 1 59 2909 1 59 2910 1 59 2911 1 59 2918 1 59 2919 1 59 2920 1 59 2921 1 59 2922 1 59 2923 1 59 2928 1 59 2929 1 59 2930 1 59 2931 1 59 2938 1 59 2939 1 59 2940 1 59 2941 1 59 2942 1 59 2943 1 59 2948 1 59 2949 1 59 2950 1 59 2951 1 59 2952 1 59 2953 1 59 2958 1 59 2959 1 59 2960 1 59 2961 1 59 3019 1 59 3020 1 59 3021 1 59 3022 1 59 3029 1 59 3030 1 59 3031 1 59 3032 1 59 3033 1 59 3034 1 59 3039 1 59 3040 1 59 3041 1 59 3042 1 59 3043 1 59 3044 1 59 3049 1 59 3050 1 59 3051 1 59 3052 1 59 3054 1 59 3055 1 59 3056 1 59 3057 1 59 3058 1 59 3059 1 59 3064 1 59 3065 1 59 3066 1 59 3067 1 59 3069 1 59 3070 1 59 3071 1 59 3072 1 59 3074 1 59 3103 1 59 3108 1 59 3109 1 59 3110 1 59 3111 1 59 3118 1 59 3119 1 59 3120 1 59 3121 1 59 3128 1 59 3129 1 59 3130 1 59 3131 1 59 3132 1 59 3133 1 59 3138 1 59 3139 1 59 3140 1 59 3141 1 59 3148 1 59 3149 1 59 3150 1 59 3151 1 59 3152 1 59 3153 1 59 3158 1 59 3159 1 59 3160 1 59 3161 1 59 3162 1 59 3163 1 59 3168 1 59 3169 1 59 3170 1 59 3171 1 59 3229 1 59 3230 1 59 3231 1 59 3232 1 59 3239 1 59 3240 1 59 3241 1 59 3242 1 59 3243 1 59 3244 1 59 3249 1 59 3250 1 59 3251 1 59 3252 1 59 3253 1 59 3254 1 59 3259 1 59 3260 1 59 3261 1 59 3262 1 59 3264 1 59 3265 1 59 3266 1 59 3267 1 59 3268 1 59 3269 1 59 3274 1 59 3275 1 59 3276 1 59 3277 1 59 3279 1 59 3280 1 59 3281 1 59 3282 1 59 3284 1 59 3313 1 59 3314 1 59 3315 1 59 3316 1 59 3323 1 59 3324 1 59 3325 1 59 3326 1 59 3327 1 59 3328 1 59 3333 1 59 3334 1 59 3335 1 59 3336 1 59 3337 1 59 3338 1 59 3343 1 59 3344 1 59 3345 1 59 3346 1 59 3348 1 59 3349 1 59 3350 1 59 3351 1 59 3352 1 59 3353 1 59 3358 1 59 3359 1 59 3360 1 59 3361 1 59 3363 1 59 3364 1 59 3365 1 59 3366 1 59 3368 1 59 3397 1 59 3398 1 59 3399 1 59 3400 1 59 3401 1 59 3402 1 59 3407 1 59 3408 1 59 3409 1 59 3410 1 59 3412 1 59 3413 1 59 3414 1 59 3415 1 59 3417 1 59 3418 1 59 3419 1 59 3420 1 59 3421 1 59 3423 1 59 3424 1 60 5 1 60 40 1 60 46 1 60 51 1 60 55 1 60 59 1 60 60 1 60 61 1 60 124 1 60 130 1 60 135 1 60 139 1 60 143 1 60 144 1 60 145 1 60 207 1 60 212 1 60 216 1 60 220 1 60 221 1 60 222 1 60 227 1 60 231 1 60 235 1 60 236 1 60 237 1 60 241 1 60 245 1 60 246 1 60 247 1 60 251 1 60 252 1 60 253 1 60 257 1 60 258 1 60 259 1 60 334 1 60 340 1 60 345 1 60 349 1 60 353 1 60 354 1 60 355 1 60 417 1 60 422 1 60 426 1 60 430 1 60 431 1 60 432 1 60 437 1 60 441 1 60 445 1 60 446 1 60 447 1 60 451 1 60 455 1 60 456 1 60 457 1 60 461 1 60 462 1 60 463 1 60 467 1 60 468 1 60 469 1 60 543 1 60 548 1 60 552 1 60 556 1 60 557 1 60 558 1 60 563 1 60 567 1 60 571 1 60 572 1 60 573 1 60 577 1 60 581 1 60 582 1 60 583 1 60 587 1 60 588 1 60 589 1 60 593 1 60 594 1 60 595 1 60 668 1 60 672 1 60 676 1 60 677 1 60 678 1 60 682 1 60 686 1 60 687 1 60 688 1 60 692 1 60 693 1 60 694 1 60 698 1 60 699 1 60 700 1 60 702 1 60 706 1 60 707 1 60 708 1 60 712 1 60 713 1 60 714 1 60 718 1 60 719 1 60 720 1 60 722 1 60 723 1 60 724 1 60 728 1 60 729 1 60 730 1 60 732 1 60 733 1 60 734 1 60 736 1 60 796 1 60 802 1 60 807 1 60 811 1 60 815 1 60 816 1 60 817 1 60 879 1 60 884 1 60 888 1 60 892 1 60 893 1 60 894 1 60 899 1 60 903 1 60 907 1 60 908 1 60 909 1 60 913 1 60 917 1 60 918 1 60 919 1 60 923 1 60 924 1 60 925 1 60 929 1 60 930 1 60 931 1 60 1005 1 60 1010 1 60 1014 1 60 1018 1 60 1019 1 60 1020 1 60 1025 1 60 1029 1 60 1033 1 60 1034 1 60 1035 1 60 1039 1 60 1043 1 60 1044 1 60 1045 1 60 1049 1 60 1050 1 60 1051 1 60 1055 1 60 1056 1 60 1057 1 60 1130 1 60 1134 1 60 1138 1 60 1139 1 60 1140 1 60 1144 1 60 1148 1 60 1149 1 60 1150 1 60 1154 1 60 1155 1 60 1156 1 60 1160 1 60 1161 1 60 1162 1 60 1164 1 60 1168 1 60 1169 1 60 1170 1 60 1174 1 60 1175 1 60 1176 1 60 1180 1 60 1181 1 60 1182 1 60 1184 1 60 1185 1 60 1186 1 60 1190 1 60 1191 1 60 1192 1 60 1194 1 60 1195 1 60 1196 1 60 1198 1 60 1257 1 60 1262 1 60 1266 1 60 1270 1 60 1271 1 60 1272 1 60 1277 1 60 1281 1 60 1285 1 60 1286 1 60 1287 1 60 1291 1 60 1295 1 60 1296 1 60 1297 1 60 1301 1 60 1302 1 60 1303 1 60 1307 1 60 1308 1 60 1309 1 60 1382 1 60 1386 1 60 1390 1 60 1391 1 60 1392 1 60 1396 1 60 1400 1 60 1401 1 60 1402 1 60 1406 1 60 1407 1 60 1408 1 60 1412 1 60 1413 1 60 1414 1 60 1416 1 60 1420 1 60 1421 1 60 1422 1 60 1426 1 60 1427 1 60 1428 1 60 1432 1 60 1433 1 60 1434 1 60 1436 1 60 1437 1 60 1438 1 60 1442 1 60 1443 1 60 1444 1 60 1446 1 60 1447 1 60 1448 1 60 1450 1 60 1508 1 60 1512 1 60 1516 1 60 1517 1 60 1518 1 60 1522 1 60 1526 1 60 1527 1 60 1528 1 60 1532 1 60 1533 1 60 1534 1 60 1538 1 60 1539 1 60 1540 1 60 1542 1 60 1546 1 60 1547 1 60 1548 1 60 1552 1 60 1553 1 60 1554 1 60 1558 1 60 1559 1 60 1560 1 60 1562 1 60 1563 1 60 1564 1 60 1568 1 60 1569 1 60 1570 1 60 1572 1 60 1573 1 60 1574 1 60 1576 1 60 1633 1 60 1637 1 60 1638 1 60 1639 1 60 1643 1 60 1644 1 60 1645 1 60 1649 1 60 1650 1 60 1651 1 60 1653 1 60 1654 1 60 1655 1 60 1659 1 60 1660 1 60 1661 1 60 1663 1 60 1664 1 60 1665 1 60 1667 1 60 1668 1 60 1669 1 60 1670 1 60 1674 1 60 1675 1 60 1676 1 60 1678 1 60 1679 1 60 1680 1 60 1682 1 60 1683 1 60 1684 1 60 1685 1 60 1687 1 60 1688 1 60 1720 1 60 1726 1 60 1731 1 60 1735 1 60 1739 1 60 1740 1 60 1741 1 60 1803 1 60 1808 1 60 1812 1 60 1816 1 60 1817 1 60 1818 1 60 1823 1 60 1827 1 60 1831 1 60 1832 1 60 1833 1 60 1837 1 60 1841 1 60 1842 1 60 1843 1 60 1847 1 60 1848 1 60 1849 1 60 1853 1 60 1854 1 60 1855 1 60 1929 1 60 1934 1 60 1938 1 60 1942 1 60 1943 1 60 1944 1 60 1949 1 60 1953 1 60 1957 1 60 1958 1 60 1959 1 60 1963 1 60 1967 1 60 1968 1 60 1969 1 60 1973 1 60 1974 1 60 1975 1 60 1979 1 60 1980 1 60 1981 1 60 2054 1 60 2058 1 60 2062 1 60 2063 1 60 2064 1 60 2068 1 60 2072 1 60 2073 1 60 2074 1 60 2078 1 60 2079 1 60 2080 1 60 2084 1 60 2085 1 60 2086 1 60 2088 1 60 2092 1 60 2093 1 60 2094 1 60 2098 1 60 2099 1 60 2100 1 60 2104 1 60 2105 1 60 2106 1 60 2108 1 60 2109 1 60 2110 1 60 2114 1 60 2115 1 60 2116 1 60 2118 1 60 2119 1 60 2120 1 60 2122 1 60 2181 1 60 2186 1 60 2190 1 60 2194 1 60 2195 1 60 2196 1 60 2201 1 60 2205 1 60 2209 1 60 2210 1 60 2211 1 60 2215 1 60 2219 1 60 2220 1 60 2221 1 60 2225 1 60 2226 1 60 2227 1 60 2231 1 60 2232 1 60 2233 1 60 2306 1 60 2310 1 60 2314 1 60 2315 1 60 2316 1 60 2320 1 60 2324 1 60 2325 1 60 2326 1 60 2330 1 60 2331 1 60 2332 1 60 2336 1 60 2337 1 60 2338 1 60 2340 1 60 2344 1 60 2345 1 60 2346 1 60 2350 1 60 2351 1 60 2352 1 60 2356 1 60 2357 1 60 2358 1 60 2360 1 60 2361 1 60 2362 1 60 2366 1 60 2367 1 60 2368 1 60 2370 1 60 2371 1 60 2372 1 60 2374 1 60 2432 1 60 2436 1 60 2440 1 60 2441 1 60 2442 1 60 2446 1 60 2450 1 60 2451 1 60 2452 1 60 2456 1 60 2457 1 60 2458 1 60 2462 1 60 2463 1 60 2464 1 60 2466 1 60 2470 1 60 2471 1 60 2472 1 60 2476 1 60 2477 1 60 2478 1 60 2482 1 60 2483 1 60 2484 1 60 2486 1 60 2487 1 60 2488 1 60 2492 1 60 2493 1 60 2494 1 60 2496 1 60 2497 1 60 2498 1 60 2500 1 60 2557 1 60 2561 1 60 2562 1 60 2563 1 60 2567 1 60 2568 1 60 2569 1 60 2573 1 60 2574 1 60 2575 1 60 2577 1 60 2578 1 60 2579 1 60 2583 1 60 2584 1 60 2585 1 60 2587 1 60 2588 1 60 2589 1 60 2591 1 60 2592 1 60 2593 1 60 2594 1 60 2598 1 60 2599 1 60 2600 1 60 2602 1 60 2603 1 60 2604 1 60 2606 1 60 2607 1 60 2608 1 60 2609 1 60 2611 1 60 2612 1 60 2643 1 60 2648 1 60 2652 1 60 2656 1 60 2657 1 60 2658 1 60 2663 1 60 2667 1 60 2671 1 60 2672 1 60 2673 1 60 2677 1 60 2681 1 60 2682 1 60 2683 1 60 2687 1 60 2688 1 60 2689 1 60 2693 1 60 2694 1 60 2695 1 60 2768 1 60 2772 1 60 2776 1 60 2777 1 60 2778 1 60 2782 1 60 2786 1 60 2787 1 60 2788 1 60 2792 1 60 2793 1 60 2794 1 60 2798 1 60 2799 1 60 2800 1 60 2802 1 60 2806 1 60 2807 1 60 2808 1 60 2812 1 60 2813 1 60 2814 1 60 2818 1 60 2819 1 60 2820 1 60 2822 1 60 2823 1 60 2824 1 60 2828 1 60 2829 1 60 2830 1 60 2832 1 60 2833 1 60 2834 1 60 2836 1 60 2894 1 60 2898 1 60 2902 1 60 2903 1 60 2904 1 60 2908 1 60 2912 1 60 2913 1 60 2914 1 60 2918 1 60 2919 1 60 2920 1 60 2924 1 60 2925 1 60 2926 1 60 2928 1 60 2932 1 60 2933 1 60 2934 1 60 2938 1 60 2939 1 60 2940 1 60 2944 1 60 2945 1 60 2946 1 60 2948 1 60 2949 1 60 2950 1 60 2954 1 60 2955 1 60 2956 1 60 2958 1 60 2959 1 60 2960 1 60 2962 1 60 3019 1 60 3023 1 60 3024 1 60 3025 1 60 3029 1 60 3030 1 60 3031 1 60 3035 1 60 3036 1 60 3037 1 60 3039 1 60 3040 1 60 3041 1 60 3045 1 60 3046 1 60 3047 1 60 3049 1 60 3050 1 60 3051 1 60 3053 1 60 3054 1 60 3055 1 60 3056 1 60 3060 1 60 3061 1 60 3062 1 60 3064 1 60 3065 1 60 3066 1 60 3068 1 60 3069 1 60 3070 1 60 3071 1 60 3073 1 60 3074 1 60 3104 1 60 3108 1 60 3112 1 60 3113 1 60 3114 1 60 3118 1 60 3122 1 60 3123 1 60 3124 1 60 3128 1 60 3129 1 60 3130 1 60 3134 1 60 3135 1 60 3136 1 60 3138 1 60 3142 1 60 3143 1 60 3144 1 60 3148 1 60 3149 1 60 3150 1 60 3154 1 60 3155 1 60 3156 1 60 3158 1 60 3159 1 60 3160 1 60 3164 1 60 3165 1 60 3166 1 60 3168 1 60 3169 1 60 3170 1 60 3172 1 60 3229 1 60 3233 1 60 3234 1 60 3235 1 60 3239 1 60 3240 1 60 3241 1 60 3245 1 60 3246 1 60 3247 1 60 3249 1 60 3250 1 60 3251 1 60 3255 1 60 3256 1 60 3257 1 60 3259 1 60 3260 1 60 3261 1 60 3263 1 60 3264 1 60 3265 1 60 3266 1 60 3270 1 60 3271 1 60 3272 1 60 3274 1 60 3275 1 60 3276 1 60 3278 1 60 3279 1 60 3280 1 60 3281 1 60 3283 1 60 3284 1 60 3313 1 60 3317 1 60 3318 1 60 3319 1 60 3323 1 60 3324 1 60 3325 1 60 3329 1 60 3330 1 60 3331 1 60 3333 1 60 3334 1 60 3335 1 60 3339 1 60 3340 1 60 3341 1 60 3343 1 60 3344 1 60 3345 1 60 3347 1 60 3348 1 60 3349 1 60 3350 1 60 3354 1 60 3355 1 60 3356 1 60 3358 1 60 3359 1 60 3360 1 60 3362 1 60 3363 1 60 3364 1 60 3365 1 60 3367 1 60 3368 1 60 3397 1 60 3398 1 60 3399 1 60 3403 1 60 3404 1 60 3405 1 60 3407 1 60 3408 1 60 3409 1 60 3411 1 60 3412 1 60 3413 1 60 3414 1 60 3416 1 60 3417 1 60 3418 1 60 3419 1 60 3420 1 60 3422 1 60 3423 1 60 3424 1 61 6 1 61 41 1 61 47 1 61 52 1 61 56 1 61 59 1 61 62 1 61 63 1 61 125 1 61 131 1 61 136 1 61 140 1 61 143 1 61 146 1 61 147 1 61 208 1 61 213 1 61 217 1 61 220 1 61 223 1 61 224 1 61 228 1 61 232 1 61 235 1 61 238 1 61 239 1 61 242 1 61 245 1 61 248 1 61 249 1 61 251 1 61 254 1 61 255 1 61 257 1 61 258 1 61 260 1 61 335 1 61 341 1 61 346 1 61 350 1 61 353 1 61 356 1 61 357 1 61 418 1 61 423 1 61 427 1 61 430 1 61 433 1 61 434 1 61 438 1 61 442 1 61 445 1 61 448 1 61 449 1 61 452 1 61 455 1 61 458 1 61 459 1 61 461 1 61 464 1 61 465 1 61 467 1 61 468 1 61 470 1 61 544 1 61 549 1 61 553 1 61 556 1 61 559 1 61 560 1 61 564 1 61 568 1 61 571 1 61 574 1 61 575 1 61 578 1 61 581 1 61 584 1 61 585 1 61 587 1 61 590 1 61 591 1 61 593 1 61 594 1 61 596 1 61 669 1 61 673 1 61 676 1 61 679 1 61 680 1 61 683 1 61 686 1 61 689 1 61 690 1 61 692 1 61 695 1 61 696 1 61 698 1 61 699 1 61 701 1 61 703 1 61 706 1 61 709 1 61 710 1 61 712 1 61 715 1 61 716 1 61 718 1 61 719 1 61 721 1 61 722 1 61 725 1 61 726 1 61 728 1 61 729 1 61 731 1 61 732 1 61 733 1 61 735 1 61 736 1 61 797 1 61 803 1 61 808 1 61 812 1 61 815 1 61 818 1 61 819 1 61 880 1 61 885 1 61 889 1 61 892 1 61 895 1 61 896 1 61 900 1 61 904 1 61 907 1 61 910 1 61 911 1 61 914 1 61 917 1 61 920 1 61 921 1 61 923 1 61 926 1 61 927 1 61 929 1 61 930 1 61 932 1 61 1006 1 61 1011 1 61 1015 1 61 1018 1 61 1021 1 61 1022 1 61 1026 1 61 1030 1 61 1033 1 61 1036 1 61 1037 1 61 1040 1 61 1043 1 61 1046 1 61 1047 1 61 1049 1 61 1052 1 61 1053 1 61 1055 1 61 1056 1 61 1058 1 61 1131 1 61 1135 1 61 1138 1 61 1141 1 61 1142 1 61 1145 1 61 1148 1 61 1151 1 61 1152 1 61 1154 1 61 1157 1 61 1158 1 61 1160 1 61 1161 1 61 1163 1 61 1165 1 61 1168 1 61 1171 1 61 1172 1 61 1174 1 61 1177 1 61 1178 1 61 1180 1 61 1181 1 61 1183 1 61 1184 1 61 1187 1 61 1188 1 61 1190 1 61 1191 1 61 1193 1 61 1194 1 61 1195 1 61 1197 1 61 1198 1 61 1258 1 61 1263 1 61 1267 1 61 1270 1 61 1273 1 61 1274 1 61 1278 1 61 1282 1 61 1285 1 61 1288 1 61 1289 1 61 1292 1 61 1295 1 61 1298 1 61 1299 1 61 1301 1 61 1304 1 61 1305 1 61 1307 1 61 1308 1 61 1310 1 61 1383 1 61 1387 1 61 1390 1 61 1393 1 61 1394 1 61 1397 1 61 1400 1 61 1403 1 61 1404 1 61 1406 1 61 1409 1 61 1410 1 61 1412 1 61 1413 1 61 1415 1 61 1417 1 61 1420 1 61 1423 1 61 1424 1 61 1426 1 61 1429 1 61 1430 1 61 1432 1 61 1433 1 61 1435 1 61 1436 1 61 1439 1 61 1440 1 61 1442 1 61 1443 1 61 1445 1 61 1446 1 61 1447 1 61 1449 1 61 1450 1 61 1509 1 61 1513 1 61 1516 1 61 1519 1 61 1520 1 61 1523 1 61 1526 1 61 1529 1 61 1530 1 61 1532 1 61 1535 1 61 1536 1 61 1538 1 61 1539 1 61 1541 1 61 1543 1 61 1546 1 61 1549 1 61 1550 1 61 1552 1 61 1555 1 61 1556 1 61 1558 1 61 1559 1 61 1561 1 61 1562 1 61 1565 1 61 1566 1 61 1568 1 61 1569 1 61 1571 1 61 1572 1 61 1573 1 61 1575 1 61 1576 1 61 1634 1 61 1637 1 61 1640 1 61 1641 1 61 1643 1 61 1646 1 61 1647 1 61 1649 1 61 1650 1 61 1652 1 61 1653 1 61 1656 1 61 1657 1 61 1659 1 61 1660 1 61 1662 1 61 1663 1 61 1664 1 61 1666 1 61 1667 1 61 1668 1 61 1671 1 61 1672 1 61 1674 1 61 1675 1 61 1677 1 61 1678 1 61 1679 1 61 1681 1 61 1682 1 61 1683 1 61 1684 1 61 1686 1 61 1687 1 61 1688 1 61 1721 1 61 1727 1 61 1732 1 61 1736 1 61 1739 1 61 1742 1 61 1743 1 61 1804 1 61 1809 1 61 1813 1 61 1816 1 61 1819 1 61 1820 1 61 1824 1 61 1828 1 61 1831 1 61 1834 1 61 1835 1 61 1838 1 61 1841 1 61 1844 1 61 1845 1 61 1847 1 61 1850 1 61 1851 1 61 1853 1 61 1854 1 61 1856 1 61 1930 1 61 1935 1 61 1939 1 61 1942 1 61 1945 1 61 1946 1 61 1950 1 61 1954 1 61 1957 1 61 1960 1 61 1961 1 61 1964 1 61 1967 1 61 1970 1 61 1971 1 61 1973 1 61 1976 1 61 1977 1 61 1979 1 61 1980 1 61 1982 1 61 2055 1 61 2059 1 61 2062 1 61 2065 1 61 2066 1 61 2069 1 61 2072 1 61 2075 1 61 2076 1 61 2078 1 61 2081 1 61 2082 1 61 2084 1 61 2085 1 61 2087 1 61 2089 1 61 2092 1 61 2095 1 61 2096 1 61 2098 1 61 2101 1 61 2102 1 61 2104 1 61 2105 1 61 2107 1 61 2108 1 61 2111 1 61 2112 1 61 2114 1 61 2115 1 61 2117 1 61 2118 1 61 2119 1 61 2121 1 61 2122 1 61 2182 1 61 2187 1 61 2191 1 61 2194 1 61 2197 1 61 2198 1 61 2202 1 61 2206 1 61 2209 1 61 2212 1 61 2213 1 61 2216 1 61 2219 1 61 2222 1 61 2223 1 61 2225 1 61 2228 1 61 2229 1 61 2231 1 61 2232 1 61 2234 1 61 2307 1 61 2311 1 61 2314 1 61 2317 1 61 2318 1 61 2321 1 61 2324 1 61 2327 1 61 2328 1 61 2330 1 61 2333 1 61 2334 1 61 2336 1 61 2337 1 61 2339 1 61 2341 1 61 2344 1 61 2347 1 61 2348 1 61 2350 1 61 2353 1 61 2354 1 61 2356 1 61 2357 1 61 2359 1 61 2360 1 61 2363 1 61 2364 1 61 2366 1 61 2367 1 61 2369 1 61 2370 1 61 2371 1 61 2373 1 61 2374 1 61 2433 1 61 2437 1 61 2440 1 61 2443 1 61 2444 1 61 2447 1 61 2450 1 61 2453 1 61 2454 1 61 2456 1 61 2459 1 61 2460 1 61 2462 1 61 2463 1 61 2465 1 61 2467 1 61 2470 1 61 2473 1 61 2474 1 61 2476 1 61 2479 1 61 2480 1 61 2482 1 61 2483 1 61 2485 1 61 2486 1 61 2489 1 61 2490 1 61 2492 1 61 2493 1 61 2495 1 61 2496 1 61 2497 1 61 2499 1 61 2500 1 61 2558 1 61 2561 1 61 2564 1 61 2565 1 61 2567 1 61 2570 1 61 2571 1 61 2573 1 61 2574 1 61 2576 1 61 2577 1 61 2580 1 61 2581 1 61 2583 1 61 2584 1 61 2586 1 61 2587 1 61 2588 1 61 2590 1 61 2591 1 61 2592 1 61 2595 1 61 2596 1 61 2598 1 61 2599 1 61 2601 1 61 2602 1 61 2603 1 61 2605 1 61 2606 1 61 2607 1 61 2608 1 61 2610 1 61 2611 1 61 2612 1 61 2644 1 61 2649 1 61 2653 1 61 2656 1 61 2659 1 61 2660 1 61 2664 1 61 2668 1 61 2671 1 61 2674 1 61 2675 1 61 2678 1 61 2681 1 61 2684 1 61 2685 1 61 2687 1 61 2690 1 61 2691 1 61 2693 1 61 2694 1 61 2696 1 61 2769 1 61 2773 1 61 2776 1 61 2779 1 61 2780 1 61 2783 1 61 2786 1 61 2789 1 61 2790 1 61 2792 1 61 2795 1 61 2796 1 61 2798 1 61 2799 1 61 2801 1 61 2803 1 61 2806 1 61 2809 1 61 2810 1 61 2812 1 61 2815 1 61 2816 1 61 2818 1 61 2819 1 61 2821 1 61 2822 1 61 2825 1 61 2826 1 61 2828 1 61 2829 1 61 2831 1 61 2832 1 61 2833 1 61 2835 1 61 2836 1 61 2895 1 61 2899 1 61 2902 1 61 2905 1 61 2906 1 61 2909 1 61 2912 1 61 2915 1 61 2916 1 61 2918 1 61 2921 1 61 2922 1 61 2924 1 61 2925 1 61 2927 1 61 2929 1 61 2932 1 61 2935 1 61 2936 1 61 2938 1 61 2941 1 61 2942 1 61 2944 1 61 2945 1 61 2947 1 61 2948 1 61 2951 1 61 2952 1 61 2954 1 61 2955 1 61 2957 1 61 2958 1 61 2959 1 61 2961 1 61 2962 1 61 3020 1 61 3023 1 61 3026 1 61 3027 1 61 3029 1 61 3032 1 61 3033 1 61 3035 1 61 3036 1 61 3038 1 61 3039 1 61 3042 1 61 3043 1 61 3045 1 61 3046 1 61 3048 1 61 3049 1 61 3050 1 61 3052 1 61 3053 1 61 3054 1 61 3057 1 61 3058 1 61 3060 1 61 3061 1 61 3063 1 61 3064 1 61 3065 1 61 3067 1 61 3068 1 61 3069 1 61 3070 1 61 3072 1 61 3073 1 61 3074 1 61 3105 1 61 3109 1 61 3112 1 61 3115 1 61 3116 1 61 3119 1 61 3122 1 61 3125 1 61 3126 1 61 3128 1 61 3131 1 61 3132 1 61 3134 1 61 3135 1 61 3137 1 61 3139 1 61 3142 1 61 3145 1 61 3146 1 61 3148 1 61 3151 1 61 3152 1 61 3154 1 61 3155 1 61 3157 1 61 3158 1 61 3161 1 61 3162 1 61 3164 1 61 3165 1 61 3167 1 61 3168 1 61 3169 1 61 3171 1 61 3172 1 61 3230 1 61 3233 1 61 3236 1 61 3237 1 61 3239 1 61 3242 1 61 3243 1 61 3245 1 61 3246 1 61 3248 1 61 3249 1 61 3252 1 61 3253 1 61 3255 1 61 3256 1 61 3258 1 61 3259 1 61 3260 1 61 3262 1 61 3263 1 61 3264 1 61 3267 1 61 3268 1 61 3270 1 61 3271 1 61 3273 1 61 3274 1 61 3275 1 61 3277 1 61 3278 1 61 3279 1 61 3280 1 61 3282 1 61 3283 1 61 3284 1 61 3314 1 61 3317 1 61 3320 1 61 3321 1 61 3323 1 61 3326 1 61 3327 1 61 3329 1 61 3330 1 61 3332 1 61 3333 1 61 3336 1 61 3337 1 61 3339 1 61 3340 1 61 3342 1 61 3343 1 61 3344 1 61 3346 1 61 3347 1 61 3348 1 61 3351 1 61 3352 1 61 3354 1 61 3355 1 61 3357 1 61 3358 1 61 3359 1 61 3361 1 61 3362 1 61 3363 1 61 3364 1 61 3366 1 61 3367 1 61 3368 1 61 3397 1 61 3400 1 61 3401 1 61 3403 1 61 3404 1 61 3406 1 61 3407 1 61 3408 1 61 3410 1 61 3411 1 61 3412 1 61 3413 1 61 3415 1 61 3416 1 61 3417 1 61 3418 1 61 3419 1 61 3421 1 61 3422 1 61 3423 1 61 3424 1 62 7 1 62 42 1 62 48 1 62 53 1 62 57 1 62 60 1 62 62 1 62 64 1 62 126 1 62 132 1 62 137 1 62 141 1 62 144 1 62 146 1 62 148 1 62 209 1 62 214 1 62 218 1 62 221 1 62 223 1 62 225 1 62 229 1 62 233 1 62 236 1 62 238 1 62 240 1 62 243 1 62 246 1 62 248 1 62 250 1 62 252 1 62 254 1 62 256 1 62 257 1 62 259 1 62 260 1 62 336 1 62 342 1 62 347 1 62 351 1 62 354 1 62 356 1 62 358 1 62 419 1 62 424 1 62 428 1 62 431 1 62 433 1 62 435 1 62 439 1 62 443 1 62 446 1 62 448 1 62 450 1 62 453 1 62 456 1 62 458 1 62 460 1 62 462 1 62 464 1 62 466 1 62 467 1 62 469 1 62 470 1 62 545 1 62 550 1 62 554 1 62 557 1 62 559 1 62 561 1 62 565 1 62 569 1 62 572 1 62 574 1 62 576 1 62 579 1 62 582 1 62 584 1 62 586 1 62 588 1 62 590 1 62 592 1 62 593 1 62 595 1 62 596 1 62 670 1 62 674 1 62 677 1 62 679 1 62 681 1 62 684 1 62 687 1 62 689 1 62 691 1 62 693 1 62 695 1 62 697 1 62 698 1 62 700 1 62 701 1 62 704 1 62 707 1 62 709 1 62 711 1 62 713 1 62 715 1 62 717 1 62 718 1 62 720 1 62 721 1 62 723 1 62 725 1 62 727 1 62 728 1 62 730 1 62 731 1 62 732 1 62 734 1 62 735 1 62 736 1 62 798 1 62 804 1 62 809 1 62 813 1 62 816 1 62 818 1 62 820 1 62 881 1 62 886 1 62 890 1 62 893 1 62 895 1 62 897 1 62 901 1 62 905 1 62 908 1 62 910 1 62 912 1 62 915 1 62 918 1 62 920 1 62 922 1 62 924 1 62 926 1 62 928 1 62 929 1 62 931 1 62 932 1 62 1007 1 62 1012 1 62 1016 1 62 1019 1 62 1021 1 62 1023 1 62 1027 1 62 1031 1 62 1034 1 62 1036 1 62 1038 1 62 1041 1 62 1044 1 62 1046 1 62 1048 1 62 1050 1 62 1052 1 62 1054 1 62 1055 1 62 1057 1 62 1058 1 62 1132 1 62 1136 1 62 1139 1 62 1141 1 62 1143 1 62 1146 1 62 1149 1 62 1151 1 62 1153 1 62 1155 1 62 1157 1 62 1159 1 62 1160 1 62 1162 1 62 1163 1 62 1166 1 62 1169 1 62 1171 1 62 1173 1 62 1175 1 62 1177 1 62 1179 1 62 1180 1 62 1182 1 62 1183 1 62 1185 1 62 1187 1 62 1189 1 62 1190 1 62 1192 1 62 1193 1 62 1194 1 62 1196 1 62 1197 1 62 1198 1 62 1259 1 62 1264 1 62 1268 1 62 1271 1 62 1273 1 62 1275 1 62 1279 1 62 1283 1 62 1286 1 62 1288 1 62 1290 1 62 1293 1 62 1296 1 62 1298 1 62 1300 1 62 1302 1 62 1304 1 62 1306 1 62 1307 1 62 1309 1 62 1310 1 62 1384 1 62 1388 1 62 1391 1 62 1393 1 62 1395 1 62 1398 1 62 1401 1 62 1403 1 62 1405 1 62 1407 1 62 1409 1 62 1411 1 62 1412 1 62 1414 1 62 1415 1 62 1418 1 62 1421 1 62 1423 1 62 1425 1 62 1427 1 62 1429 1 62 1431 1 62 1432 1 62 1434 1 62 1435 1 62 1437 1 62 1439 1 62 1441 1 62 1442 1 62 1444 1 62 1445 1 62 1446 1 62 1448 1 62 1449 1 62 1450 1 62 1510 1 62 1514 1 62 1517 1 62 1519 1 62 1521 1 62 1524 1 62 1527 1 62 1529 1 62 1531 1 62 1533 1 62 1535 1 62 1537 1 62 1538 1 62 1540 1 62 1541 1 62 1544 1 62 1547 1 62 1549 1 62 1551 1 62 1553 1 62 1555 1 62 1557 1 62 1558 1 62 1560 1 62 1561 1 62 1563 1 62 1565 1 62 1567 1 62 1568 1 62 1570 1 62 1571 1 62 1572 1 62 1574 1 62 1575 1 62 1576 1 62 1635 1 62 1638 1 62 1640 1 62 1642 1 62 1644 1 62 1646 1 62 1648 1 62 1649 1 62 1651 1 62 1652 1 62 1654 1 62 1656 1 62 1658 1 62 1659 1 62 1661 1 62 1662 1 62 1663 1 62 1665 1 62 1666 1 62 1667 1 62 1669 1 62 1671 1 62 1673 1 62 1674 1 62 1676 1 62 1677 1 62 1678 1 62 1680 1 62 1681 1 62 1682 1 62 1683 1 62 1685 1 62 1686 1 62 1687 1 62 1688 1 62 1722 1 62 1728 1 62 1733 1 62 1737 1 62 1740 1 62 1742 1 62 1744 1 62 1805 1 62 1810 1 62 1814 1 62 1817 1 62 1819 1 62 1821 1 62 1825 1 62 1829 1 62 1832 1 62 1834 1 62 1836 1 62 1839 1 62 1842 1 62 1844 1 62 1846 1 62 1848 1 62 1850 1 62 1852 1 62 1853 1 62 1855 1 62 1856 1 62 1931 1 62 1936 1 62 1940 1 62 1943 1 62 1945 1 62 1947 1 62 1951 1 62 1955 1 62 1958 1 62 1960 1 62 1962 1 62 1965 1 62 1968 1 62 1970 1 62 1972 1 62 1974 1 62 1976 1 62 1978 1 62 1979 1 62 1981 1 62 1982 1 62 2056 1 62 2060 1 62 2063 1 62 2065 1 62 2067 1 62 2070 1 62 2073 1 62 2075 1 62 2077 1 62 2079 1 62 2081 1 62 2083 1 62 2084 1 62 2086 1 62 2087 1 62 2090 1 62 2093 1 62 2095 1 62 2097 1 62 2099 1 62 2101 1 62 2103 1 62 2104 1 62 2106 1 62 2107 1 62 2109 1 62 2111 1 62 2113 1 62 2114 1 62 2116 1 62 2117 1 62 2118 1 62 2120 1 62 2121 1 62 2122 1 62 2183 1 62 2188 1 62 2192 1 62 2195 1 62 2197 1 62 2199 1 62 2203 1 62 2207 1 62 2210 1 62 2212 1 62 2214 1 62 2217 1 62 2220 1 62 2222 1 62 2224 1 62 2226 1 62 2228 1 62 2230 1 62 2231 1 62 2233 1 62 2234 1 62 2308 1 62 2312 1 62 2315 1 62 2317 1 62 2319 1 62 2322 1 62 2325 1 62 2327 1 62 2329 1 62 2331 1 62 2333 1 62 2335 1 62 2336 1 62 2338 1 62 2339 1 62 2342 1 62 2345 1 62 2347 1 62 2349 1 62 2351 1 62 2353 1 62 2355 1 62 2356 1 62 2358 1 62 2359 1 62 2361 1 62 2363 1 62 2365 1 62 2366 1 62 2368 1 62 2369 1 62 2370 1 62 2372 1 62 2373 1 62 2374 1 62 2434 1 62 2438 1 62 2441 1 62 2443 1 62 2445 1 62 2448 1 62 2451 1 62 2453 1 62 2455 1 62 2457 1 62 2459 1 62 2461 1 62 2462 1 62 2464 1 62 2465 1 62 2468 1 62 2471 1 62 2473 1 62 2475 1 62 2477 1 62 2479 1 62 2481 1 62 2482 1 62 2484 1 62 2485 1 62 2487 1 62 2489 1 62 2491 1 62 2492 1 62 2494 1 62 2495 1 62 2496 1 62 2498 1 62 2499 1 62 2500 1 62 2559 1 62 2562 1 62 2564 1 62 2566 1 62 2568 1 62 2570 1 62 2572 1 62 2573 1 62 2575 1 62 2576 1 62 2578 1 62 2580 1 62 2582 1 62 2583 1 62 2585 1 62 2586 1 62 2587 1 62 2589 1 62 2590 1 62 2591 1 62 2593 1 62 2595 1 62 2597 1 62 2598 1 62 2600 1 62 2601 1 62 2602 1 62 2604 1 62 2605 1 62 2606 1 62 2607 1 62 2609 1 62 2610 1 62 2611 1 62 2612 1 62 2645 1 62 2650 1 62 2654 1 62 2657 1 62 2659 1 62 2661 1 62 2665 1 62 2669 1 62 2672 1 62 2674 1 62 2676 1 62 2679 1 62 2682 1 62 2684 1 62 2686 1 62 2688 1 62 2690 1 62 2692 1 62 2693 1 62 2695 1 62 2696 1 62 2770 1 62 2774 1 62 2777 1 62 2779 1 62 2781 1 62 2784 1 62 2787 1 62 2789 1 62 2791 1 62 2793 1 62 2795 1 62 2797 1 62 2798 1 62 2800 1 62 2801 1 62 2804 1 62 2807 1 62 2809 1 62 2811 1 62 2813 1 62 2815 1 62 2817 1 62 2818 1 62 2820 1 62 2821 1 62 2823 1 62 2825 1 62 2827 1 62 2828 1 62 2830 1 62 2831 1 62 2832 1 62 2834 1 62 2835 1 62 2836 1 62 2896 1 62 2900 1 62 2903 1 62 2905 1 62 2907 1 62 2910 1 62 2913 1 62 2915 1 62 2917 1 62 2919 1 62 2921 1 62 2923 1 62 2924 1 62 2926 1 62 2927 1 62 2930 1 62 2933 1 62 2935 1 62 2937 1 62 2939 1 62 2941 1 62 2943 1 62 2944 1 62 2946 1 62 2947 1 62 2949 1 62 2951 1 62 2953 1 62 2954 1 62 2956 1 62 2957 1 62 2958 1 62 2960 1 62 2961 1 62 2962 1 62 3021 1 62 3024 1 62 3026 1 62 3028 1 62 3030 1 62 3032 1 62 3034 1 62 3035 1 62 3037 1 62 3038 1 62 3040 1 62 3042 1 62 3044 1 62 3045 1 62 3047 1 62 3048 1 62 3049 1 62 3051 1 62 3052 1 62 3053 1 62 3055 1 62 3057 1 62 3059 1 62 3060 1 62 3062 1 62 3063 1 62 3064 1 62 3066 1 62 3067 1 62 3068 1 62 3069 1 62 3071 1 62 3072 1 62 3073 1 62 3074 1 62 3106 1 62 3110 1 62 3113 1 62 3115 1 62 3117 1 62 3120 1 62 3123 1 62 3125 1 62 3127 1 62 3129 1 62 3131 1 62 3133 1 62 3134 1 62 3136 1 62 3137 1 62 3140 1 62 3143 1 62 3145 1 62 3147 1 62 3149 1 62 3151 1 62 3153 1 62 3154 1 62 3156 1 62 3157 1 62 3159 1 62 3161 1 62 3163 1 62 3164 1 62 3166 1 62 3167 1 62 3168 1 62 3170 1 62 3171 1 62 3172 1 62 3231 1 62 3234 1 62 3236 1 62 3238 1 62 3240 1 62 3242 1 62 3244 1 62 3245 1 62 3247 1 62 3248 1 62 3250 1 62 3252 1 62 3254 1 62 3255 1 62 3257 1 62 3258 1 62 3259 1 62 3261 1 62 3262 1 62 3263 1 62 3265 1 62 3267 1 62 3269 1 62 3270 1 62 3272 1 62 3273 1 62 3274 1 62 3276 1 62 3277 1 62 3278 1 62 3279 1 62 3281 1 62 3282 1 62 3283 1 62 3284 1 62 3315 1 62 3318 1 62 3320 1 62 3322 1 62 3324 1 62 3326 1 62 3328 1 62 3329 1 62 3331 1 62 3332 1 62 3334 1 62 3336 1 62 3338 1 62 3339 1 62 3341 1 62 3342 1 62 3343 1 62 3345 1 62 3346 1 62 3347 1 62 3349 1 62 3351 1 62 3353 1 62 3354 1 62 3356 1 62 3357 1 62 3358 1 62 3360 1 62 3361 1 62 3362 1 62 3363 1 62 3365 1 62 3366 1 62 3367 1 62 3368 1 62 3398 1 62 3400 1 62 3402 1 62 3403 1 62 3405 1 62 3406 1 62 3407 1 62 3409 1 62 3410 1 62 3411 1 62 3412 1 62 3414 1 62 3415 1 62 3416 1 62 3417 1 62 3418 1 62 3420 1 62 3421 1 62 3422 1 62 3423 1 62 3424 1 63 8 1 63 43 1 63 49 1 63 54 1 63 58 1 63 61 1 63 63 1 63 64 1 63 127 1 63 133 1 63 138 1 63 142 1 63 145 1 63 147 1 63 148 1 63 210 1 63 215 1 63 219 1 63 222 1 63 224 1 63 225 1 63 230 1 63 234 1 63 237 1 63 239 1 63 240 1 63 244 1 63 247 1 63 249 1 63 250 1 63 253 1 63 255 1 63 256 1 63 258 1 63 259 1 63 260 1 63 337 1 63 343 1 63 348 1 63 352 1 63 355 1 63 357 1 63 358 1 63 420 1 63 425 1 63 429 1 63 432 1 63 434 1 63 435 1 63 440 1 63 444 1 63 447 1 63 449 1 63 450 1 63 454 1 63 457 1 63 459 1 63 460 1 63 463 1 63 465 1 63 466 1 63 468 1 63 469 1 63 470 1 63 546 1 63 551 1 63 555 1 63 558 1 63 560 1 63 561 1 63 566 1 63 570 1 63 573 1 63 575 1 63 576 1 63 580 1 63 583 1 63 585 1 63 586 1 63 589 1 63 591 1 63 592 1 63 594 1 63 595 1 63 596 1 63 671 1 63 675 1 63 678 1 63 680 1 63 681 1 63 685 1 63 688 1 63 690 1 63 691 1 63 694 1 63 696 1 63 697 1 63 699 1 63 700 1 63 701 1 63 705 1 63 708 1 63 710 1 63 711 1 63 714 1 63 716 1 63 717 1 63 719 1 63 720 1 63 721 1 63 724 1 63 726 1 63 727 1 63 729 1 63 730 1 63 731 1 63 733 1 63 734 1 63 735 1 63 736 1 63 799 1 63 805 1 63 810 1 63 814 1 63 817 1 63 819 1 63 820 1 63 882 1 63 887 1 63 891 1 63 894 1 63 896 1 63 897 1 63 902 1 63 906 1 63 909 1 63 911 1 63 912 1 63 916 1 63 919 1 63 921 1 63 922 1 63 925 1 63 927 1 63 928 1 63 930 1 63 931 1 63 932 1 63 1008 1 63 1013 1 63 1017 1 63 1020 1 63 1022 1 63 1023 1 63 1028 1 63 1032 1 63 1035 1 63 1037 1 63 1038 1 63 1042 1 63 1045 1 63 1047 1 63 1048 1 63 1051 1 63 1053 1 63 1054 1 63 1056 1 63 1057 1 63 1058 1 63 1133 1 63 1137 1 63 1140 1 63 1142 1 63 1143 1 63 1147 1 63 1150 1 63 1152 1 63 1153 1 63 1156 1 63 1158 1 63 1159 1 63 1161 1 63 1162 1 63 1163 1 63 1167 1 63 1170 1 63 1172 1 63 1173 1 63 1176 1 63 1178 1 63 1179 1 63 1181 1 63 1182 1 63 1183 1 63 1186 1 63 1188 1 63 1189 1 63 1191 1 63 1192 1 63 1193 1 63 1195 1 63 1196 1 63 1197 1 63 1198 1 63 1260 1 63 1265 1 63 1269 1 63 1272 1 63 1274 1 63 1275 1 63 1280 1 63 1284 1 63 1287 1 63 1289 1 63 1290 1 63 1294 1 63 1297 1 63 1299 1 63 1300 1 63 1303 1 63 1305 1 63 1306 1 63 1308 1 63 1309 1 63 1310 1 63 1385 1 63 1389 1 63 1392 1 63 1394 1 63 1395 1 63 1399 1 63 1402 1 63 1404 1 63 1405 1 63 1408 1 63 1410 1 63 1411 1 63 1413 1 63 1414 1 63 1415 1 63 1419 1 63 1422 1 63 1424 1 63 1425 1 63 1428 1 63 1430 1 63 1431 1 63 1433 1 63 1434 1 63 1435 1 63 1438 1 63 1440 1 63 1441 1 63 1443 1 63 1444 1 63 1445 1 63 1447 1 63 1448 1 63 1449 1 63 1450 1 63 1511 1 63 1515 1 63 1518 1 63 1520 1 63 1521 1 63 1525 1 63 1528 1 63 1530 1 63 1531 1 63 1534 1 63 1536 1 63 1537 1 63 1539 1 63 1540 1 63 1541 1 63 1545 1 63 1548 1 63 1550 1 63 1551 1 63 1554 1 63 1556 1 63 1557 1 63 1559 1 63 1560 1 63 1561 1 63 1564 1 63 1566 1 63 1567 1 63 1569 1 63 1570 1 63 1571 1 63 1573 1 63 1574 1 63 1575 1 63 1576 1 63 1636 1 63 1639 1 63 1641 1 63 1642 1 63 1645 1 63 1647 1 63 1648 1 63 1650 1 63 1651 1 63 1652 1 63 1655 1 63 1657 1 63 1658 1 63 1660 1 63 1661 1 63 1662 1 63 1664 1 63 1665 1 63 1666 1 63 1667 1 63 1670 1 63 1672 1 63 1673 1 63 1675 1 63 1676 1 63 1677 1 63 1679 1 63 1680 1 63 1681 1 63 1682 1 63 1684 1 63 1685 1 63 1686 1 63 1687 1 63 1688 1 63 1723 1 63 1729 1 63 1734 1 63 1738 1 63 1741 1 63 1743 1 63 1744 1 63 1806 1 63 1811 1 63 1815 1 63 1818 1 63 1820 1 63 1821 1 63 1826 1 63 1830 1 63 1833 1 63 1835 1 63 1836 1 63 1840 1 63 1843 1 63 1845 1 63 1846 1 63 1849 1 63 1851 1 63 1852 1 63 1854 1 63 1855 1 63 1856 1 63 1932 1 63 1937 1 63 1941 1 63 1944 1 63 1946 1 63 1947 1 63 1952 1 63 1956 1 63 1959 1 63 1961 1 63 1962 1 63 1966 1 63 1969 1 63 1971 1 63 1972 1 63 1975 1 63 1977 1 63 1978 1 63 1980 1 63 1981 1 63 1982 1 63 2057 1 63 2061 1 63 2064 1 63 2066 1 63 2067 1 63 2071 1 63 2074 1 63 2076 1 63 2077 1 63 2080 1 63 2082 1 63 2083 1 63 2085 1 63 2086 1 63 2087 1 63 2091 1 63 2094 1 63 2096 1 63 2097 1 63 2100 1 63 2102 1 63 2103 1 63 2105 1 63 2106 1 63 2107 1 63 2110 1 63 2112 1 63 2113 1 63 2115 1 63 2116 1 63 2117 1 63 2119 1 63 2120 1 63 2121 1 63 2122 1 63 2184 1 63 2189 1 63 2193 1 63 2196 1 63 2198 1 63 2199 1 63 2204 1 63 2208 1 63 2211 1 63 2213 1 63 2214 1 63 2218 1 63 2221 1 63 2223 1 63 2224 1 63 2227 1 63 2229 1 63 2230 1 63 2232 1 63 2233 1 63 2234 1 63 2309 1 63 2313 1 63 2316 1 63 2318 1 63 2319 1 63 2323 1 63 2326 1 63 2328 1 63 2329 1 63 2332 1 63 2334 1 63 2335 1 63 2337 1 63 2338 1 63 2339 1 63 2343 1 63 2346 1 63 2348 1 63 2349 1 63 2352 1 63 2354 1 63 2355 1 63 2357 1 63 2358 1 63 2359 1 63 2362 1 63 2364 1 63 2365 1 63 2367 1 63 2368 1 63 2369 1 63 2371 1 63 2372 1 63 2373 1 63 2374 1 63 2435 1 63 2439 1 63 2442 1 63 2444 1 63 2445 1 63 2449 1 63 2452 1 63 2454 1 63 2455 1 63 2458 1 63 2460 1 63 2461 1 63 2463 1 63 2464 1 63 2465 1 63 2469 1 63 2472 1 63 2474 1 63 2475 1 63 2478 1 63 2480 1 63 2481 1 63 2483 1 63 2484 1 63 2485 1 63 2488 1 63 2490 1 63 2491 1 63 2493 1 63 2494 1 63 2495 1 63 2497 1 63 2498 1 63 2499 1 63 2500 1 63 2560 1 63 2563 1 63 2565 1 63 2566 1 63 2569 1 63 2571 1 63 2572 1 63 2574 1 63 2575 1 63 2576 1 63 2579 1 63 2581 1 63 2582 1 63 2584 1 63 2585 1 63 2586 1 63 2588 1 63 2589 1 63 2590 1 63 2591 1 63 2594 1 63 2596 1 63 2597 1 63 2599 1 63 2600 1 63 2601 1 63 2603 1 63 2604 1 63 2605 1 63 2606 1 63 2608 1 63 2609 1 63 2610 1 63 2611 1 63 2612 1 63 2646 1 63 2651 1 63 2655 1 63 2658 1 63 2660 1 63 2661 1 63 2666 1 63 2670 1 63 2673 1 63 2675 1 63 2676 1 63 2680 1 63 2683 1 63 2685 1 63 2686 1 63 2689 1 63 2691 1 63 2692 1 63 2694 1 63 2695 1 63 2696 1 63 2771 1 63 2775 1 63 2778 1 63 2780 1 63 2781 1 63 2785 1 63 2788 1 63 2790 1 63 2791 1 63 2794 1 63 2796 1 63 2797 1 63 2799 1 63 2800 1 63 2801 1 63 2805 1 63 2808 1 63 2810 1 63 2811 1 63 2814 1 63 2816 1 63 2817 1 63 2819 1 63 2820 1 63 2821 1 63 2824 1 63 2826 1 63 2827 1 63 2829 1 63 2830 1 63 2831 1 63 2833 1 63 2834 1 63 2835 1 63 2836 1 63 2897 1 63 2901 1 63 2904 1 63 2906 1 63 2907 1 63 2911 1 63 2914 1 63 2916 1 63 2917 1 63 2920 1 63 2922 1 63 2923 1 63 2925 1 63 2926 1 63 2927 1 63 2931 1 63 2934 1 63 2936 1 63 2937 1 63 2940 1 63 2942 1 63 2943 1 63 2945 1 63 2946 1 63 2947 1 63 2950 1 63 2952 1 63 2953 1 63 2955 1 63 2956 1 63 2957 1 63 2959 1 63 2960 1 63 2961 1 63 2962 1 63 3022 1 63 3025 1 63 3027 1 63 3028 1 63 3031 1 63 3033 1 63 3034 1 63 3036 1 63 3037 1 63 3038 1 63 3041 1 63 3043 1 63 3044 1 63 3046 1 63 3047 1 63 3048 1 63 3050 1 63 3051 1 63 3052 1 63 3053 1 63 3056 1 63 3058 1 63 3059 1 63 3061 1 63 3062 1 63 3063 1 63 3065 1 63 3066 1 63 3067 1 63 3068 1 63 3070 1 63 3071 1 63 3072 1 63 3073 1 63 3074 1 63 3107 1 63 3111 1 63 3114 1 63 3116 1 63 3117 1 63 3121 1 63 3124 1 63 3126 1 63 3127 1 63 3130 1 63 3132 1 63 3133 1 63 3135 1 63 3136 1 63 3137 1 63 3141 1 63 3144 1 63 3146 1 63 3147 1 63 3150 1 63 3152 1 63 3153 1 63 3155 1 63 3156 1 63 3157 1 63 3160 1 63 3162 1 63 3163 1 63 3165 1 63 3166 1 63 3167 1 63 3169 1 63 3170 1 63 3171 1 63 3172 1 63 3232 1 63 3235 1 63 3237 1 63 3238 1 63 3241 1 63 3243 1 63 3244 1 63 3246 1 63 3247 1 63 3248 1 63 3251 1 63 3253 1 63 3254 1 63 3256 1 63 3257 1 63 3258 1 63 3260 1 63 3261 1 63 3262 1 63 3263 1 63 3266 1 63 3268 1 63 3269 1 63 3271 1 63 3272 1 63 3273 1 63 3275 1 63 3276 1 63 3277 1 63 3278 1 63 3280 1 63 3281 1 63 3282 1 63 3283 1 63 3284 1 63 3316 1 63 3319 1 63 3321 1 63 3322 1 63 3325 1 63 3327 1 63 3328 1 63 3330 1 63 3331 1 63 3332 1 63 3335 1 63 3337 1 63 3338 1 63 3340 1 63 3341 1 63 3342 1 63 3344 1 63 3345 1 63 3346 1 63 3347 1 63 3350 1 63 3352 1 63 3353 1 63 3355 1 63 3356 1 63 3357 1 63 3359 1 63 3360 1 63 3361 1 63 3362 1 63 3364 1 63 3365 1 63 3366 1 63 3367 1 63 3368 1 63 3399 1 63 3401 1 63 3402 1 63 3404 1 63 3405 1 63 3406 1 63 3408 1 63 3409 1 63 3410 1 63 3411 1 63 3413 1 63 3414 1 63 3415 1 63 3416 1 63 3417 1 63 3419 1 63 3420 1 63 3421 1 63 3422 1 63 3423 1 63 3424 1 64 9 1 64 37 1 64 65 1 64 66 1 64 67 1 64 68 1 64 69 1 64 70 1 64 121 1 64 149 1 64 150 1 64 151 1 64 152 1 64 153 1 64 154 1 64 205 1 64 206 1 64 207 1 64 208 1 64 209 1 64 210 1 64 261 1 64 262 1 64 263 1 64 264 1 64 265 1 64 266 1 64 267 1 64 268 1 64 269 1 64 270 1 64 271 1 64 272 1 64 273 1 64 274 1 64 275 1 64 331 1 64 359 1 64 360 1 64 361 1 64 362 1 64 363 1 64 364 1 64 415 1 64 416 1 64 417 1 64 418 1 64 419 1 64 420 1 64 471 1 64 472 1 64 473 1 64 474 1 64 475 1 64 476 1 64 477 1 64 478 1 64 479 1 64 480 1 64 481 1 64 482 1 64 483 1 64 484 1 64 485 1 64 541 1 64 542 1 64 543 1 64 544 1 64 545 1 64 546 1 64 597 1 64 598 1 64 599 1 64 600 1 64 601 1 64 602 1 64 603 1 64 604 1 64 605 1 64 606 1 64 607 1 64 608 1 64 609 1 64 610 1 64 611 1 64 667 1 64 668 1 64 669 1 64 670 1 64 671 1 64 672 1 64 673 1 64 674 1 64 675 1 64 676 1 64 677 1 64 678 1 64 679 1 64 680 1 64 681 1 64 737 1 64 738 1 64 739 1 64 740 1 64 741 1 64 742 1 64 743 1 64 744 1 64 745 1 64 746 1 64 747 1 64 748 1 64 749 1 64 750 1 64 751 1 64 752 1 64 753 1 64 754 1 64 755 1 64 756 1 64 793 1 64 821 1 64 822 1 64 823 1 64 824 1 64 825 1 64 826 1 64 877 1 64 878 1 64 879 1 64 880 1 64 881 1 64 882 1 64 933 1 64 934 1 64 935 1 64 936 1 64 937 1 64 938 1 64 939 1 64 940 1 64 941 1 64 942 1 64 943 1 64 944 1 64 945 1 64 946 1 64 947 1 64 1003 1 64 1004 1 64 1005 1 64 1006 1 64 1007 1 64 1008 1 64 1059 1 64 1060 1 64 1061 1 64 1062 1 64 1063 1 64 1064 1 64 1065 1 64 1066 1 64 1067 1 64 1068 1 64 1069 1 64 1070 1 64 1071 1 64 1072 1 64 1073 1 64 1129 1 64 1130 1 64 1131 1 64 1132 1 64 1133 1 64 1134 1 64 1135 1 64 1136 1 64 1137 1 64 1138 1 64 1139 1 64 1140 1 64 1141 1 64 1142 1 64 1143 1 64 1199 1 64 1200 1 64 1201 1 64 1202 1 64 1203 1 64 1204 1 64 1205 1 64 1206 1 64 1207 1 64 1208 1 64 1209 1 64 1210 1 64 1211 1 64 1212 1 64 1213 1 64 1214 1 64 1215 1 64 1216 1 64 1217 1 64 1218 1 64 1255 1 64 1256 1 64 1257 1 64 1258 1 64 1259 1 64 1260 1 64 1311 1 64 1312 1 64 1313 1 64 1314 1 64 1315 1 64 1316 1 64 1317 1 64 1318 1 64 1319 1 64 1320 1 64 1321 1 64 1322 1 64 1323 1 64 1324 1 64 1325 1 64 1381 1 64 1382 1 64 1383 1 64 1384 1 64 1385 1 64 1386 1 64 1387 1 64 1388 1 64 1389 1 64 1390 1 64 1391 1 64 1392 1 64 1393 1 64 1394 1 64 1395 1 64 1451 1 64 1452 1 64 1453 1 64 1454 1 64 1455 1 64 1456 1 64 1457 1 64 1458 1 64 1459 1 64 1460 1 64 1461 1 64 1462 1 64 1463 1 64 1464 1 64 1465 1 64 1466 1 64 1467 1 64 1468 1 64 1469 1 64 1470 1 64 1507 1 64 1508 1 64 1509 1 64 1510 1 64 1511 1 64 1512 1 64 1513 1 64 1514 1 64 1515 1 64 1516 1 64 1517 1 64 1518 1 64 1519 1 64 1520 1 64 1521 1 64 1577 1 64 1578 1 64 1579 1 64 1580 1 64 1581 1 64 1582 1 64 1583 1 64 1584 1 64 1585 1 64 1586 1 64 1587 1 64 1588 1 64 1589 1 64 1590 1 64 1591 1 64 1592 1 64 1593 1 64 1594 1 64 1595 1 64 1596 1 64 1633 1 64 1634 1 64 1635 1 64 1636 1 64 1637 1 64 1638 1 64 1639 1 64 1640 1 64 1641 1 64 1642 1 64 1643 1 64 1644 1 64 1645 1 64 1646 1 64 1647 1 64 1648 1 64 1649 1 64 1650 1 64 1651 1 64 1652 1 64 1689 1 64 1690 1 64 1691 1 64 1692 1 64 1693 1 64 1694 1 64 1695 1 64 1696 1 64 1697 1 64 1698 1 64 1699 1 64 1700 1 64 1701 1 64 1702 1 64 1703 1 64 1717 1 64 1745 1 64 1746 1 64 1747 1 64 1748 1 64 1749 1 64 1750 1 64 1801 1 64 1802 1 64 1803 1 64 1804 1 64 1805 1 64 1806 1 64 1857 1 64 1858 1 64 1859 1 64 1860 1 64 1861 1 64 1862 1 64 1863 1 64 1864 1 64 1865 1 64 1866 1 64 1867 1 64 1868 1 64 1869 1 64 1870 1 64 1871 1 64 1927 1 64 1928 1 64 1929 1 64 1930 1 64 1931 1 64 1932 1 64 1983 1 64 1984 1 64 1985 1 64 1986 1 64 1987 1 64 1988 1 64 1989 1 64 1990 1 64 1991 1 64 1992 1 64 1993 1 64 1994 1 64 1995 1 64 1996 1 64 1997 1 64 2053 1 64 2054 1 64 2055 1 64 2056 1 64 2057 1 64 2058 1 64 2059 1 64 2060 1 64 2061 1 64 2062 1 64 2063 1 64 2064 1 64 2065 1 64 2066 1 64 2067 1 64 2123 1 64 2124 1 64 2125 1 64 2126 1 64 2127 1 64 2128 1 64 2129 1 64 2130 1 64 2131 1 64 2132 1 64 2133 1 64 2134 1 64 2135 1 64 2136 1 64 2137 1 64 2138 1 64 2139 1 64 2140 1 64 2141 1 64 2142 1 64 2179 1 64 2180 1 64 2181 1 64 2182 1 64 2183 1 64 2184 1 64 2235 1 64 2236 1 64 2237 1 64 2238 1 64 2239 1 64 2240 1 64 2241 1 64 2242 1 64 2243 1 64 2244 1 64 2245 1 64 2246 1 64 2247 1 64 2248 1 64 2249 1 64 2305 1 64 2306 1 64 2307 1 64 2308 1 64 2309 1 64 2310 1 64 2311 1 64 2312 1 64 2313 1 64 2314 1 64 2315 1 64 2316 1 64 2317 1 64 2318 1 64 2319 1 64 2375 1 64 2376 1 64 2377 1 64 2378 1 64 2379 1 64 2380 1 64 2381 1 64 2382 1 64 2383 1 64 2384 1 64 2385 1 64 2386 1 64 2387 1 64 2388 1 64 2389 1 64 2390 1 64 2391 1 64 2392 1 64 2393 1 64 2394 1 64 2431 1 64 2432 1 64 2433 1 64 2434 1 64 2435 1 64 2436 1 64 2437 1 64 2438 1 64 2439 1 64 2440 1 64 2441 1 64 2442 1 64 2443 1 64 2444 1 64 2445 1 64 2501 1 64 2502 1 64 2503 1 64 2504 1 64 2505 1 64 2506 1 64 2507 1 64 2508 1 64 2509 1 64 2510 1 64 2511 1 64 2512 1 64 2513 1 64 2514 1 64 2515 1 64 2516 1 64 2517 1 64 2518 1 64 2519 1 64 2520 1 64 2557 1 64 2558 1 64 2559 1 64 2560 1 64 2561 1 64 2562 1 64 2563 1 64 2564 1 64 2565 1 64 2566 1 64 2567 1 64 2568 1 64 2569 1 64 2570 1 64 2571 1 64 2572 1 64 2573 1 64 2574 1 64 2575 1 64 2576 1 64 2613 1 64 2614 1 64 2615 1 64 2616 1 64 2617 1 64 2618 1 64 2619 1 64 2620 1 64 2621 1 64 2622 1 64 2623 1 64 2624 1 64 2625 1 64 2626 1 64 2627 1 64 2641 1 64 2642 1 64 2643 1 64 2644 1 64 2645 1 64 2646 1 64 2697 1 64 2698 1 64 2699 1 64 2700 1 64 2701 1 64 2702 1 64 2703 1 64 2704 1 64 2705 1 64 2706 1 64 2707 1 64 2708 1 64 2709 1 64 2710 1 64 2711 1 64 2767 1 64 2768 1 64 2769 1 64 2770 1 64 2771 1 64 2772 1 64 2773 1 64 2774 1 64 2775 1 64 2776 1 64 2777 1 64 2778 1 64 2779 1 64 2780 1 64 2781 1 64 2837 1 64 2838 1 64 2839 1 64 2840 1 64 2841 1 64 2842 1 64 2843 1 64 2844 1 64 2845 1 64 2846 1 64 2847 1 64 2848 1 64 2849 1 64 2850 1 64 2851 1 64 2852 1 64 2853 1 64 2854 1 64 2855 1 64 2856 1 64 2893 1 64 2894 1 64 2895 1 64 2896 1 64 2897 1 64 2898 1 64 2899 1 64 2900 1 64 2901 1 64 2902 1 64 2903 1 64 2904 1 64 2905 1 64 2906 1 64 2907 1 64 2963 1 64 2964 1 64 2965 1 64 2966 1 64 2967 1 64 2968 1 64 2969 1 64 2970 1 64 2971 1 64 2972 1 64 2973 1 64 2974 1 64 2975 1 64 2976 1 64 2977 1 64 2978 1 64 2979 1 64 2980 1 64 2981 1 64 2982 1 64 3019 1 64 3020 1 64 3021 1 64 3022 1 64 3023 1 64 3024 1 64 3025 1 64 3026 1 64 3027 1 64 3028 1 64 3029 1 64 3030 1 64 3031 1 64 3032 1 64 3033 1 64 3034 1 64 3035 1 64 3036 1 64 3037 1 64 3038 1 64 3075 1 64 3076 1 64 3077 1 64 3078 1 64 3079 1 64 3080 1 64 3081 1 64 3082 1 64 3083 1 64 3084 1 64 3085 1 64 3086 1 64 3087 1 64 3088 1 64 3089 1 64 3103 1 64 3104 1 64 3105 1 64 3106 1 64 3107 1 64 3108 1 64 3109 1 64 3110 1 64 3111 1 64 3112 1 64 3113 1 64 3114 1 64 3115 1 64 3116 1 64 3117 1 64 3173 1 64 3174 1 64 3175 1 64 3176 1 64 3177 1 64 3178 1 64 3179 1 64 3180 1 64 3181 1 64 3182 1 64 3183 1 64 3184 1 64 3185 1 64 3186 1 64 3187 1 64 3188 1 64 3189 1 64 3190 1 64 3191 1 64 3192 1 64 3229 1 64 3230 1 64 3231 1 64 3232 1 64 3233 1 64 3234 1 64 3235 1 64 3236 1 64 3237 1 64 3238 1 64 3239 1 64 3240 1 64 3241 1 64 3242 1 64 3243 1 64 3244 1 64 3245 1 64 3246 1 64 3247 1 64 3248 1 64 3285 1 64 3286 1 64 3287 1 64 3288 1 64 3289 1 64 3290 1 64 3291 1 64 3292 1 64 3293 1 64 3294 1 64 3295 1 64 3296 1 64 3297 1 64 3298 1 64 3299 1 64 3313 1 64 3314 1 64 3315 1 64 3316 1 64 3317 1 64 3318 1 64 3319 1 64 3320 1 64 3321 1 64 3322 1 64 3323 1 64 3324 1 64 3325 1 64 3326 1 64 3327 1 64 3328 1 64 3329 1 64 3330 1 64 3331 1 64 3332 1 64 3369 1 64 3370 1 64 3371 1 64 3372 1 64 3373 1 64 3374 1 64 3375 1 64 3376 1 64 3377 1 64 3378 1 64 3379 1 64 3380 1 64 3381 1 64 3382 1 64 3383 1 64 3397 1 64 3398 1 64 3399 1 64 3400 1 64 3401 1 64 3402 1 64 3403 1 64 3404 1 64 3405 1 64 3406 1 64 3407 1 64 3408 1 64 3409 1 64 3410 1 64 3411 1 64 3425 1 64 3426 1 64 3427 1 64 3428 1 64 3429 1 64 3430 1 65 10 1 65 38 1 65 65 1 65 71 1 65 72 1 65 73 1 65 74 1 65 75 1 65 122 1 65 149 1 65 155 1 65 156 1 65 157 1 65 158 1 65 159 1 65 205 1 65 211 1 65 212 1 65 213 1 65 214 1 65 215 1 65 261 1 65 262 1 65 263 1 65 264 1 65 265 1 65 276 1 65 277 1 65 278 1 65 279 1 65 280 1 65 281 1 65 282 1 65 283 1 65 284 1 65 285 1 65 332 1 65 359 1 65 365 1 65 366 1 65 367 1 65 368 1 65 369 1 65 415 1 65 421 1 65 422 1 65 423 1 65 424 1 65 425 1 65 471 1 65 472 1 65 473 1 65 474 1 65 475 1 65 486 1 65 487 1 65 488 1 65 489 1 65 490 1 65 491 1 65 492 1 65 493 1 65 494 1 65 495 1 65 541 1 65 547 1 65 548 1 65 549 1 65 550 1 65 551 1 65 597 1 65 598 1 65 599 1 65 600 1 65 601 1 65 612 1 65 613 1 65 614 1 65 615 1 65 616 1 65 617 1 65 618 1 65 619 1 65 620 1 65 621 1 65 667 1 65 668 1 65 669 1 65 670 1 65 671 1 65 682 1 65 683 1 65 684 1 65 685 1 65 686 1 65 687 1 65 688 1 65 689 1 65 690 1 65 691 1 65 737 1 65 738 1 65 739 1 65 740 1 65 741 1 65 742 1 65 743 1 65 744 1 65 745 1 65 746 1 65 757 1 65 758 1 65 759 1 65 760 1 65 761 1 65 762 1 65 763 1 65 764 1 65 765 1 65 766 1 65 794 1 65 821 1 65 827 1 65 828 1 65 829 1 65 830 1 65 831 1 65 877 1 65 883 1 65 884 1 65 885 1 65 886 1 65 887 1 65 933 1 65 934 1 65 935 1 65 936 1 65 937 1 65 948 1 65 949 1 65 950 1 65 951 1 65 952 1 65 953 1 65 954 1 65 955 1 65 956 1 65 957 1 65 1003 1 65 1009 1 65 1010 1 65 1011 1 65 1012 1 65 1013 1 65 1059 1 65 1060 1 65 1061 1 65 1062 1 65 1063 1 65 1074 1 65 1075 1 65 1076 1 65 1077 1 65 1078 1 65 1079 1 65 1080 1 65 1081 1 65 1082 1 65 1083 1 65 1129 1 65 1130 1 65 1131 1 65 1132 1 65 1133 1 65 1144 1 65 1145 1 65 1146 1 65 1147 1 65 1148 1 65 1149 1 65 1150 1 65 1151 1 65 1152 1 65 1153 1 65 1199 1 65 1200 1 65 1201 1 65 1202 1 65 1203 1 65 1204 1 65 1205 1 65 1206 1 65 1207 1 65 1208 1 65 1219 1 65 1220 1 65 1221 1 65 1222 1 65 1223 1 65 1224 1 65 1225 1 65 1226 1 65 1227 1 65 1228 1 65 1255 1 65 1261 1 65 1262 1 65 1263 1 65 1264 1 65 1265 1 65 1311 1 65 1312 1 65 1313 1 65 1314 1 65 1315 1 65 1326 1 65 1327 1 65 1328 1 65 1329 1 65 1330 1 65 1331 1 65 1332 1 65 1333 1 65 1334 1 65 1335 1 65 1381 1 65 1382 1 65 1383 1 65 1384 1 65 1385 1 65 1396 1 65 1397 1 65 1398 1 65 1399 1 65 1400 1 65 1401 1 65 1402 1 65 1403 1 65 1404 1 65 1405 1 65 1451 1 65 1452 1 65 1453 1 65 1454 1 65 1455 1 65 1456 1 65 1457 1 65 1458 1 65 1459 1 65 1460 1 65 1471 1 65 1472 1 65 1473 1 65 1474 1 65 1475 1 65 1476 1 65 1477 1 65 1478 1 65 1479 1 65 1480 1 65 1507 1 65 1508 1 65 1509 1 65 1510 1 65 1511 1 65 1522 1 65 1523 1 65 1524 1 65 1525 1 65 1526 1 65 1527 1 65 1528 1 65 1529 1 65 1530 1 65 1531 1 65 1577 1 65 1578 1 65 1579 1 65 1580 1 65 1581 1 65 1582 1 65 1583 1 65 1584 1 65 1585 1 65 1586 1 65 1597 1 65 1598 1 65 1599 1 65 1600 1 65 1601 1 65 1602 1 65 1603 1 65 1604 1 65 1605 1 65 1606 1 65 1633 1 65 1634 1 65 1635 1 65 1636 1 65 1637 1 65 1638 1 65 1639 1 65 1640 1 65 1641 1 65 1642 1 65 1653 1 65 1654 1 65 1655 1 65 1656 1 65 1657 1 65 1658 1 65 1659 1 65 1660 1 65 1661 1 65 1662 1 65 1689 1 65 1690 1 65 1691 1 65 1692 1 65 1693 1 65 1694 1 65 1695 1 65 1696 1 65 1697 1 65 1698 1 65 1704 1 65 1705 1 65 1706 1 65 1707 1 65 1708 1 65 1718 1 65 1745 1 65 1751 1 65 1752 1 65 1753 1 65 1754 1 65 1755 1 65 1801 1 65 1807 1 65 1808 1 65 1809 1 65 1810 1 65 1811 1 65 1857 1 65 1858 1 65 1859 1 65 1860 1 65 1861 1 65 1872 1 65 1873 1 65 1874 1 65 1875 1 65 1876 1 65 1877 1 65 1878 1 65 1879 1 65 1880 1 65 1881 1 65 1927 1 65 1933 1 65 1934 1 65 1935 1 65 1936 1 65 1937 1 65 1983 1 65 1984 1 65 1985 1 65 1986 1 65 1987 1 65 1998 1 65 1999 1 65 2000 1 65 2001 1 65 2002 1 65 2003 1 65 2004 1 65 2005 1 65 2006 1 65 2007 1 65 2053 1 65 2054 1 65 2055 1 65 2056 1 65 2057 1 65 2068 1 65 2069 1 65 2070 1 65 2071 1 65 2072 1 65 2073 1 65 2074 1 65 2075 1 65 2076 1 65 2077 1 65 2123 1 65 2124 1 65 2125 1 65 2126 1 65 2127 1 65 2128 1 65 2129 1 65 2130 1 65 2131 1 65 2132 1 65 2143 1 65 2144 1 65 2145 1 65 2146 1 65 2147 1 65 2148 1 65 2149 1 65 2150 1 65 2151 1 65 2152 1 65 2179 1 65 2185 1 65 2186 1 65 2187 1 65 2188 1 65 2189 1 65 2235 1 65 2236 1 65 2237 1 65 2238 1 65 2239 1 65 2250 1 65 2251 1 65 2252 1 65 2253 1 65 2254 1 65 2255 1 65 2256 1 65 2257 1 65 2258 1 65 2259 1 65 2305 1 65 2306 1 65 2307 1 65 2308 1 65 2309 1 65 2320 1 65 2321 1 65 2322 1 65 2323 1 65 2324 1 65 2325 1 65 2326 1 65 2327 1 65 2328 1 65 2329 1 65 2375 1 65 2376 1 65 2377 1 65 2378 1 65 2379 1 65 2380 1 65 2381 1 65 2382 1 65 2383 1 65 2384 1 65 2395 1 65 2396 1 65 2397 1 65 2398 1 65 2399 1 65 2400 1 65 2401 1 65 2402 1 65 2403 1 65 2404 1 65 2431 1 65 2432 1 65 2433 1 65 2434 1 65 2435 1 65 2446 1 65 2447 1 65 2448 1 65 2449 1 65 2450 1 65 2451 1 65 2452 1 65 2453 1 65 2454 1 65 2455 1 65 2501 1 65 2502 1 65 2503 1 65 2504 1 65 2505 1 65 2506 1 65 2507 1 65 2508 1 65 2509 1 65 2510 1 65 2521 1 65 2522 1 65 2523 1 65 2524 1 65 2525 1 65 2526 1 65 2527 1 65 2528 1 65 2529 1 65 2530 1 65 2557 1 65 2558 1 65 2559 1 65 2560 1 65 2561 1 65 2562 1 65 2563 1 65 2564 1 65 2565 1 65 2566 1 65 2577 1 65 2578 1 65 2579 1 65 2580 1 65 2581 1 65 2582 1 65 2583 1 65 2584 1 65 2585 1 65 2586 1 65 2613 1 65 2614 1 65 2615 1 65 2616 1 65 2617 1 65 2618 1 65 2619 1 65 2620 1 65 2621 1 65 2622 1 65 2628 1 65 2629 1 65 2630 1 65 2631 1 65 2632 1 65 2641 1 65 2647 1 65 2648 1 65 2649 1 65 2650 1 65 2651 1 65 2697 1 65 2698 1 65 2699 1 65 2700 1 65 2701 1 65 2712 1 65 2713 1 65 2714 1 65 2715 1 65 2716 1 65 2717 1 65 2718 1 65 2719 1 65 2720 1 65 2721 1 65 2767 1 65 2768 1 65 2769 1 65 2770 1 65 2771 1 65 2782 1 65 2783 1 65 2784 1 65 2785 1 65 2786 1 65 2787 1 65 2788 1 65 2789 1 65 2790 1 65 2791 1 65 2837 1 65 2838 1 65 2839 1 65 2840 1 65 2841 1 65 2842 1 65 2843 1 65 2844 1 65 2845 1 65 2846 1 65 2857 1 65 2858 1 65 2859 1 65 2860 1 65 2861 1 65 2862 1 65 2863 1 65 2864 1 65 2865 1 65 2866 1 65 2893 1 65 2894 1 65 2895 1 65 2896 1 65 2897 1 65 2908 1 65 2909 1 65 2910 1 65 2911 1 65 2912 1 65 2913 1 65 2914 1 65 2915 1 65 2916 1 65 2917 1 65 2963 1 65 2964 1 65 2965 1 65 2966 1 65 2967 1 65 2968 1 65 2969 1 65 2970 1 65 2971 1 65 2972 1 65 2983 1 65 2984 1 65 2985 1 65 2986 1 65 2987 1 65 2988 1 65 2989 1 65 2990 1 65 2991 1 65 2992 1 65 3019 1 65 3020 1 65 3021 1 65 3022 1 65 3023 1 65 3024 1 65 3025 1 65 3026 1 65 3027 1 65 3028 1 65 3039 1 65 3040 1 65 3041 1 65 3042 1 65 3043 1 65 3044 1 65 3045 1 65 3046 1 65 3047 1 65 3048 1 65 3075 1 65 3076 1 65 3077 1 65 3078 1 65 3079 1 65 3080 1 65 3081 1 65 3082 1 65 3083 1 65 3084 1 65 3090 1 65 3091 1 65 3092 1 65 3093 1 65 3094 1 65 3103 1 65 3104 1 65 3105 1 65 3106 1 65 3107 1 65 3118 1 65 3119 1 65 3120 1 65 3121 1 65 3122 1 65 3123 1 65 3124 1 65 3125 1 65 3126 1 65 3127 1 65 3173 1 65 3174 1 65 3175 1 65 3176 1 65 3177 1 65 3178 1 65 3179 1 65 3180 1 65 3181 1 65 3182 1 65 3193 1 65 3194 1 65 3195 1 65 3196 1 65 3197 1 65 3198 1 65 3199 1 65 3200 1 65 3201 1 65 3202 1 65 3229 1 65 3230 1 65 3231 1 65 3232 1 65 3233 1 65 3234 1 65 3235 1 65 3236 1 65 3237 1 65 3238 1 65 3249 1 65 3250 1 65 3251 1 65 3252 1 65 3253 1 65 3254 1 65 3255 1 65 3256 1 65 3257 1 65 3258 1 65 3285 1 65 3286 1 65 3287 1 65 3288 1 65 3289 1 65 3290 1 65 3291 1 65 3292 1 65 3293 1 65 3294 1 65 3300 1 65 3301 1 65 3302 1 65 3303 1 65 3304 1 65 3313 1 65 3314 1 65 3315 1 65 3316 1 65 3317 1 65 3318 1 65 3319 1 65 3320 1 65 3321 1 65 3322 1 65 3333 1 65 3334 1 65 3335 1 65 3336 1 65 3337 1 65 3338 1 65 3339 1 65 3340 1 65 3341 1 65 3342 1 65 3369 1 65 3370 1 65 3371 1 65 3372 1 65 3373 1 65 3374 1 65 3375 1 65 3376 1 65 3377 1 65 3378 1 65 3384 1 65 3385 1 65 3386 1 65 3387 1 65 3388 1 65 3397 1 65 3398 1 65 3399 1 65 3400 1 65 3401 1 65 3402 1 65 3403 1 65 3404 1 65 3405 1 65 3406 1 65 3412 1 65 3413 1 65 3414 1 65 3415 1 65 3416 1 65 3425 1 65 3426 1 65 3427 1 65 3428 1 65 3429 1 65 3431 1 66 11 1 66 39 1 66 66 1 66 71 1 66 76 1 66 77 1 66 78 1 66 79 1 66 123 1 66 150 1 66 155 1 66 160 1 66 161 1 66 162 1 66 163 1 66 206 1 66 211 1 66 216 1 66 217 1 66 218 1 66 219 1 66 261 1 66 266 1 66 267 1 66 268 1 66 269 1 66 276 1 66 277 1 66 278 1 66 279 1 66 286 1 66 287 1 66 288 1 66 289 1 66 290 1 66 291 1 66 333 1 66 360 1 66 365 1 66 370 1 66 371 1 66 372 1 66 373 1 66 416 1 66 421 1 66 426 1 66 427 1 66 428 1 66 429 1 66 471 1 66 476 1 66 477 1 66 478 1 66 479 1 66 486 1 66 487 1 66 488 1 66 489 1 66 496 1 66 497 1 66 498 1 66 499 1 66 500 1 66 501 1 66 542 1 66 547 1 66 552 1 66 553 1 66 554 1 66 555 1 66 597 1 66 602 1 66 603 1 66 604 1 66 605 1 66 612 1 66 613 1 66 614 1 66 615 1 66 622 1 66 623 1 66 624 1 66 625 1 66 626 1 66 627 1 66 667 1 66 672 1 66 673 1 66 674 1 66 675 1 66 682 1 66 683 1 66 684 1 66 685 1 66 692 1 66 693 1 66 694 1 66 695 1 66 696 1 66 697 1 66 737 1 66 738 1 66 739 1 66 740 1 66 747 1 66 748 1 66 749 1 66 750 1 66 751 1 66 752 1 66 757 1 66 758 1 66 759 1 66 760 1 66 761 1 66 762 1 66 767 1 66 768 1 66 769 1 66 770 1 66 795 1 66 822 1 66 827 1 66 832 1 66 833 1 66 834 1 66 835 1 66 878 1 66 883 1 66 888 1 66 889 1 66 890 1 66 891 1 66 933 1 66 938 1 66 939 1 66 940 1 66 941 1 66 948 1 66 949 1 66 950 1 66 951 1 66 958 1 66 959 1 66 960 1 66 961 1 66 962 1 66 963 1 66 1004 1 66 1009 1 66 1014 1 66 1015 1 66 1016 1 66 1017 1 66 1059 1 66 1064 1 66 1065 1 66 1066 1 66 1067 1 66 1074 1 66 1075 1 66 1076 1 66 1077 1 66 1084 1 66 1085 1 66 1086 1 66 1087 1 66 1088 1 66 1089 1 66 1129 1 66 1134 1 66 1135 1 66 1136 1 66 1137 1 66 1144 1 66 1145 1 66 1146 1 66 1147 1 66 1154 1 66 1155 1 66 1156 1 66 1157 1 66 1158 1 66 1159 1 66 1199 1 66 1200 1 66 1201 1 66 1202 1 66 1209 1 66 1210 1 66 1211 1 66 1212 1 66 1213 1 66 1214 1 66 1219 1 66 1220 1 66 1221 1 66 1222 1 66 1223 1 66 1224 1 66 1229 1 66 1230 1 66 1231 1 66 1232 1 66 1256 1 66 1261 1 66 1266 1 66 1267 1 66 1268 1 66 1269 1 66 1311 1 66 1316 1 66 1317 1 66 1318 1 66 1319 1 66 1326 1 66 1327 1 66 1328 1 66 1329 1 66 1336 1 66 1337 1 66 1338 1 66 1339 1 66 1340 1 66 1341 1 66 1381 1 66 1386 1 66 1387 1 66 1388 1 66 1389 1 66 1396 1 66 1397 1 66 1398 1 66 1399 1 66 1406 1 66 1407 1 66 1408 1 66 1409 1 66 1410 1 66 1411 1 66 1451 1 66 1452 1 66 1453 1 66 1454 1 66 1461 1 66 1462 1 66 1463 1 66 1464 1 66 1465 1 66 1466 1 66 1471 1 66 1472 1 66 1473 1 66 1474 1 66 1475 1 66 1476 1 66 1481 1 66 1482 1 66 1483 1 66 1484 1 66 1507 1 66 1512 1 66 1513 1 66 1514 1 66 1515 1 66 1522 1 66 1523 1 66 1524 1 66 1525 1 66 1532 1 66 1533 1 66 1534 1 66 1535 1 66 1536 1 66 1537 1 66 1577 1 66 1578 1 66 1579 1 66 1580 1 66 1587 1 66 1588 1 66 1589 1 66 1590 1 66 1591 1 66 1592 1 66 1597 1 66 1598 1 66 1599 1 66 1600 1 66 1601 1 66 1602 1 66 1607 1 66 1608 1 66 1609 1 66 1610 1 66 1633 1 66 1634 1 66 1635 1 66 1636 1 66 1643 1 66 1644 1 66 1645 1 66 1646 1 66 1647 1 66 1648 1 66 1653 1 66 1654 1 66 1655 1 66 1656 1 66 1657 1 66 1658 1 66 1663 1 66 1664 1 66 1665 1 66 1666 1 66 1689 1 66 1690 1 66 1691 1 66 1692 1 66 1693 1 66 1694 1 66 1699 1 66 1700 1 66 1701 1 66 1702 1 66 1704 1 66 1705 1 66 1706 1 66 1707 1 66 1709 1 66 1719 1 66 1746 1 66 1751 1 66 1756 1 66 1757 1 66 1758 1 66 1759 1 66 1802 1 66 1807 1 66 1812 1 66 1813 1 66 1814 1 66 1815 1 66 1857 1 66 1862 1 66 1863 1 66 1864 1 66 1865 1 66 1872 1 66 1873 1 66 1874 1 66 1875 1 66 1882 1 66 1883 1 66 1884 1 66 1885 1 66 1886 1 66 1887 1 66 1928 1 66 1933 1 66 1938 1 66 1939 1 66 1940 1 66 1941 1 66 1983 1 66 1988 1 66 1989 1 66 1990 1 66 1991 1 66 1998 1 66 1999 1 66 2000 1 66 2001 1 66 2008 1 66 2009 1 66 2010 1 66 2011 1 66 2012 1 66 2013 1 66 2053 1 66 2058 1 66 2059 1 66 2060 1 66 2061 1 66 2068 1 66 2069 1 66 2070 1 66 2071 1 66 2078 1 66 2079 1 66 2080 1 66 2081 1 66 2082 1 66 2083 1 66 2123 1 66 2124 1 66 2125 1 66 2126 1 66 2133 1 66 2134 1 66 2135 1 66 2136 1 66 2137 1 66 2138 1 66 2143 1 66 2144 1 66 2145 1 66 2146 1 66 2147 1 66 2148 1 66 2153 1 66 2154 1 66 2155 1 66 2156 1 66 2180 1 66 2185 1 66 2190 1 66 2191 1 66 2192 1 66 2193 1 66 2235 1 66 2240 1 66 2241 1 66 2242 1 66 2243 1 66 2250 1 66 2251 1 66 2252 1 66 2253 1 66 2260 1 66 2261 1 66 2262 1 66 2263 1 66 2264 1 66 2265 1 66 2305 1 66 2310 1 66 2311 1 66 2312 1 66 2313 1 66 2320 1 66 2321 1 66 2322 1 66 2323 1 66 2330 1 66 2331 1 66 2332 1 66 2333 1 66 2334 1 66 2335 1 66 2375 1 66 2376 1 66 2377 1 66 2378 1 66 2385 1 66 2386 1 66 2387 1 66 2388 1 66 2389 1 66 2390 1 66 2395 1 66 2396 1 66 2397 1 66 2398 1 66 2399 1 66 2400 1 66 2405 1 66 2406 1 66 2407 1 66 2408 1 66 2431 1 66 2436 1 66 2437 1 66 2438 1 66 2439 1 66 2446 1 66 2447 1 66 2448 1 66 2449 1 66 2456 1 66 2457 1 66 2458 1 66 2459 1 66 2460 1 66 2461 1 66 2501 1 66 2502 1 66 2503 1 66 2504 1 66 2511 1 66 2512 1 66 2513 1 66 2514 1 66 2515 1 66 2516 1 66 2521 1 66 2522 1 66 2523 1 66 2524 1 66 2525 1 66 2526 1 66 2531 1 66 2532 1 66 2533 1 66 2534 1 66 2557 1 66 2558 1 66 2559 1 66 2560 1 66 2567 1 66 2568 1 66 2569 1 66 2570 1 66 2571 1 66 2572 1 66 2577 1 66 2578 1 66 2579 1 66 2580 1 66 2581 1 66 2582 1 66 2587 1 66 2588 1 66 2589 1 66 2590 1 66 2613 1 66 2614 1 66 2615 1 66 2616 1 66 2617 1 66 2618 1 66 2623 1 66 2624 1 66 2625 1 66 2626 1 66 2628 1 66 2629 1 66 2630 1 66 2631 1 66 2633 1 66 2642 1 66 2647 1 66 2652 1 66 2653 1 66 2654 1 66 2655 1 66 2697 1 66 2702 1 66 2703 1 66 2704 1 66 2705 1 66 2712 1 66 2713 1 66 2714 1 66 2715 1 66 2722 1 66 2723 1 66 2724 1 66 2725 1 66 2726 1 66 2727 1 66 2767 1 66 2772 1 66 2773 1 66 2774 1 66 2775 1 66 2782 1 66 2783 1 66 2784 1 66 2785 1 66 2792 1 66 2793 1 66 2794 1 66 2795 1 66 2796 1 66 2797 1 66 2837 1 66 2838 1 66 2839 1 66 2840 1 66 2847 1 66 2848 1 66 2849 1 66 2850 1 66 2851 1 66 2852 1 66 2857 1 66 2858 1 66 2859 1 66 2860 1 66 2861 1 66 2862 1 66 2867 1 66 2868 1 66 2869 1 66 2870 1 66 2893 1 66 2898 1 66 2899 1 66 2900 1 66 2901 1 66 2908 1 66 2909 1 66 2910 1 66 2911 1 66 2918 1 66 2919 1 66 2920 1 66 2921 1 66 2922 1 66 2923 1 66 2963 1 66 2964 1 66 2965 1 66 2966 1 66 2973 1 66 2974 1 66 2975 1 66 2976 1 66 2977 1 66 2978 1 66 2983 1 66 2984 1 66 2985 1 66 2986 1 66 2987 1 66 2988 1 66 2993 1 66 2994 1 66 2995 1 66 2996 1 66 3019 1 66 3020 1 66 3021 1 66 3022 1 66 3029 1 66 3030 1 66 3031 1 66 3032 1 66 3033 1 66 3034 1 66 3039 1 66 3040 1 66 3041 1 66 3042 1 66 3043 1 66 3044 1 66 3049 1 66 3050 1 66 3051 1 66 3052 1 66 3075 1 66 3076 1 66 3077 1 66 3078 1 66 3079 1 66 3080 1 66 3085 1 66 3086 1 66 3087 1 66 3088 1 66 3090 1 66 3091 1 66 3092 1 66 3093 1 66 3095 1 66 3103 1 66 3108 1 66 3109 1 66 3110 1 66 3111 1 66 3118 1 66 3119 1 66 3120 1 66 3121 1 66 3128 1 66 3129 1 66 3130 1 66 3131 1 66 3132 1 66 3133 1 66 3173 1 66 3174 1 66 3175 1 66 3176 1 66 3183 1 66 3184 1 66 3185 1 66 3186 1 66 3187 1 66 3188 1 66 3193 1 66 3194 1 66 3195 1 66 3196 1 66 3197 1 66 3198 1 66 3203 1 66 3204 1 66 3205 1 66 3206 1 66 3229 1 66 3230 1 66 3231 1 66 3232 1 66 3239 1 66 3240 1 66 3241 1 66 3242 1 66 3243 1 66 3244 1 66 3249 1 66 3250 1 66 3251 1 66 3252 1 66 3253 1 66 3254 1 66 3259 1 66 3260 1 66 3261 1 66 3262 1 66 3285 1 66 3286 1 66 3287 1 66 3288 1 66 3289 1 66 3290 1 66 3295 1 66 3296 1 66 3297 1 66 3298 1 66 3300 1 66 3301 1 66 3302 1 66 3303 1 66 3305 1 66 3313 1 66 3314 1 66 3315 1 66 3316 1 66 3323 1 66 3324 1 66 3325 1 66 3326 1 66 3327 1 66 3328 1 66 3333 1 66 3334 1 66 3335 1 66 3336 1 66 3337 1 66 3338 1 66 3343 1 66 3344 1 66 3345 1 66 3346 1 66 3369 1 66 3370 1 66 3371 1 66 3372 1 66 3373 1 66 3374 1 66 3379 1 66 3380 1 66 3381 1 66 3382 1 66 3384 1 66 3385 1 66 3386 1 66 3387 1 66 3389 1 66 3397 1 66 3398 1 66 3399 1 66 3400 1 66 3401 1 66 3402 1 66 3407 1 66 3408 1 66 3409 1 66 3410 1 66 3412 1 66 3413 1 66 3414 1 66 3415 1 66 3417 1 66 3425 1 66 3426 1 66 3427 1 66 3428 1 66 3430 1 66 3431 1 67 12 1 67 40 1 67 67 1 67 72 1 67 76 1 67 80 1 67 81 1 67 82 1 67 124 1 67 151 1 67 156 1 67 160 1 67 164 1 67 165 1 67 166 1 67 207 1 67 212 1 67 216 1 67 220 1 67 221 1 67 222 1 67 262 1 67 266 1 67 270 1 67 271 1 67 272 1 67 276 1 67 280 1 67 281 1 67 282 1 67 286 1 67 287 1 67 288 1 67 292 1 67 293 1 67 294 1 67 334 1 67 361 1 67 366 1 67 370 1 67 374 1 67 375 1 67 376 1 67 417 1 67 422 1 67 426 1 67 430 1 67 431 1 67 432 1 67 472 1 67 476 1 67 480 1 67 481 1 67 482 1 67 486 1 67 490 1 67 491 1 67 492 1 67 496 1 67 497 1 67 498 1 67 502 1 67 503 1 67 504 1 67 543 1 67 548 1 67 552 1 67 556 1 67 557 1 67 558 1 67 598 1 67 602 1 67 606 1 67 607 1 67 608 1 67 612 1 67 616 1 67 617 1 67 618 1 67 622 1 67 623 1 67 624 1 67 628 1 67 629 1 67 630 1 67 668 1 67 672 1 67 676 1 67 677 1 67 678 1 67 682 1 67 686 1 67 687 1 67 688 1 67 692 1 67 693 1 67 694 1 67 698 1 67 699 1 67 700 1 67 737 1 67 741 1 67 742 1 67 743 1 67 747 1 67 748 1 67 749 1 67 753 1 67 754 1 67 755 1 67 757 1 67 758 1 67 759 1 67 763 1 67 764 1 67 765 1 67 767 1 67 768 1 67 769 1 67 771 1 67 796 1 67 823 1 67 828 1 67 832 1 67 836 1 67 837 1 67 838 1 67 879 1 67 884 1 67 888 1 67 892 1 67 893 1 67 894 1 67 934 1 67 938 1 67 942 1 67 943 1 67 944 1 67 948 1 67 952 1 67 953 1 67 954 1 67 958 1 67 959 1 67 960 1 67 964 1 67 965 1 67 966 1 67 1005 1 67 1010 1 67 1014 1 67 1018 1 67 1019 1 67 1020 1 67 1060 1 67 1064 1 67 1068 1 67 1069 1 67 1070 1 67 1074 1 67 1078 1 67 1079 1 67 1080 1 67 1084 1 67 1085 1 67 1086 1 67 1090 1 67 1091 1 67 1092 1 67 1130 1 67 1134 1 67 1138 1 67 1139 1 67 1140 1 67 1144 1 67 1148 1 67 1149 1 67 1150 1 67 1154 1 67 1155 1 67 1156 1 67 1160 1 67 1161 1 67 1162 1 67 1199 1 67 1203 1 67 1204 1 67 1205 1 67 1209 1 67 1210 1 67 1211 1 67 1215 1 67 1216 1 67 1217 1 67 1219 1 67 1220 1 67 1221 1 67 1225 1 67 1226 1 67 1227 1 67 1229 1 67 1230 1 67 1231 1 67 1233 1 67 1257 1 67 1262 1 67 1266 1 67 1270 1 67 1271 1 67 1272 1 67 1312 1 67 1316 1 67 1320 1 67 1321 1 67 1322 1 67 1326 1 67 1330 1 67 1331 1 67 1332 1 67 1336 1 67 1337 1 67 1338 1 67 1342 1 67 1343 1 67 1344 1 67 1382 1 67 1386 1 67 1390 1 67 1391 1 67 1392 1 67 1396 1 67 1400 1 67 1401 1 67 1402 1 67 1406 1 67 1407 1 67 1408 1 67 1412 1 67 1413 1 67 1414 1 67 1451 1 67 1455 1 67 1456 1 67 1457 1 67 1461 1 67 1462 1 67 1463 1 67 1467 1 67 1468 1 67 1469 1 67 1471 1 67 1472 1 67 1473 1 67 1477 1 67 1478 1 67 1479 1 67 1481 1 67 1482 1 67 1483 1 67 1485 1 67 1508 1 67 1512 1 67 1516 1 67 1517 1 67 1518 1 67 1522 1 67 1526 1 67 1527 1 67 1528 1 67 1532 1 67 1533 1 67 1534 1 67 1538 1 67 1539 1 67 1540 1 67 1577 1 67 1581 1 67 1582 1 67 1583 1 67 1587 1 67 1588 1 67 1589 1 67 1593 1 67 1594 1 67 1595 1 67 1597 1 67 1598 1 67 1599 1 67 1603 1 67 1604 1 67 1605 1 67 1607 1 67 1608 1 67 1609 1 67 1611 1 67 1633 1 67 1637 1 67 1638 1 67 1639 1 67 1643 1 67 1644 1 67 1645 1 67 1649 1 67 1650 1 67 1651 1 67 1653 1 67 1654 1 67 1655 1 67 1659 1 67 1660 1 67 1661 1 67 1663 1 67 1664 1 67 1665 1 67 1667 1 67 1689 1 67 1690 1 67 1691 1 67 1695 1 67 1696 1 67 1697 1 67 1699 1 67 1700 1 67 1701 1 67 1703 1 67 1704 1 67 1705 1 67 1706 1 67 1708 1 67 1709 1 67 1720 1 67 1747 1 67 1752 1 67 1756 1 67 1760 1 67 1761 1 67 1762 1 67 1803 1 67 1808 1 67 1812 1 67 1816 1 67 1817 1 67 1818 1 67 1858 1 67 1862 1 67 1866 1 67 1867 1 67 1868 1 67 1872 1 67 1876 1 67 1877 1 67 1878 1 67 1882 1 67 1883 1 67 1884 1 67 1888 1 67 1889 1 67 1890 1 67 1929 1 67 1934 1 67 1938 1 67 1942 1 67 1943 1 67 1944 1 67 1984 1 67 1988 1 67 1992 1 67 1993 1 67 1994 1 67 1998 1 67 2002 1 67 2003 1 67 2004 1 67 2008 1 67 2009 1 67 2010 1 67 2014 1 67 2015 1 67 2016 1 67 2054 1 67 2058 1 67 2062 1 67 2063 1 67 2064 1 67 2068 1 67 2072 1 67 2073 1 67 2074 1 67 2078 1 67 2079 1 67 2080 1 67 2084 1 67 2085 1 67 2086 1 67 2123 1 67 2127 1 67 2128 1 67 2129 1 67 2133 1 67 2134 1 67 2135 1 67 2139 1 67 2140 1 67 2141 1 67 2143 1 67 2144 1 67 2145 1 67 2149 1 67 2150 1 67 2151 1 67 2153 1 67 2154 1 67 2155 1 67 2157 1 67 2181 1 67 2186 1 67 2190 1 67 2194 1 67 2195 1 67 2196 1 67 2236 1 67 2240 1 67 2244 1 67 2245 1 67 2246 1 67 2250 1 67 2254 1 67 2255 1 67 2256 1 67 2260 1 67 2261 1 67 2262 1 67 2266 1 67 2267 1 67 2268 1 67 2306 1 67 2310 1 67 2314 1 67 2315 1 67 2316 1 67 2320 1 67 2324 1 67 2325 1 67 2326 1 67 2330 1 67 2331 1 67 2332 1 67 2336 1 67 2337 1 67 2338 1 67 2375 1 67 2379 1 67 2380 1 67 2381 1 67 2385 1 67 2386 1 67 2387 1 67 2391 1 67 2392 1 67 2393 1 67 2395 1 67 2396 1 67 2397 1 67 2401 1 67 2402 1 67 2403 1 67 2405 1 67 2406 1 67 2407 1 67 2409 1 67 2432 1 67 2436 1 67 2440 1 67 2441 1 67 2442 1 67 2446 1 67 2450 1 67 2451 1 67 2452 1 67 2456 1 67 2457 1 67 2458 1 67 2462 1 67 2463 1 67 2464 1 67 2501 1 67 2505 1 67 2506 1 67 2507 1 67 2511 1 67 2512 1 67 2513 1 67 2517 1 67 2518 1 67 2519 1 67 2521 1 67 2522 1 67 2523 1 67 2527 1 67 2528 1 67 2529 1 67 2531 1 67 2532 1 67 2533 1 67 2535 1 67 2557 1 67 2561 1 67 2562 1 67 2563 1 67 2567 1 67 2568 1 67 2569 1 67 2573 1 67 2574 1 67 2575 1 67 2577 1 67 2578 1 67 2579 1 67 2583 1 67 2584 1 67 2585 1 67 2587 1 67 2588 1 67 2589 1 67 2591 1 67 2613 1 67 2614 1 67 2615 1 67 2619 1 67 2620 1 67 2621 1 67 2623 1 67 2624 1 67 2625 1 67 2627 1 67 2628 1 67 2629 1 67 2630 1 67 2632 1 67 2633 1 67 2643 1 67 2648 1 67 2652 1 67 2656 1 67 2657 1 67 2658 1 67 2698 1 67 2702 1 67 2706 1 67 2707 1 67 2708 1 67 2712 1 67 2716 1 67 2717 1 67 2718 1 67 2722 1 67 2723 1 67 2724 1 67 2728 1 67 2729 1 67 2730 1 67 2768 1 67 2772 1 67 2776 1 67 2777 1 67 2778 1 67 2782 1 67 2786 1 67 2787 1 67 2788 1 67 2792 1 67 2793 1 67 2794 1 67 2798 1 67 2799 1 67 2800 1 67 2837 1 67 2841 1 67 2842 1 67 2843 1 67 2847 1 67 2848 1 67 2849 1 67 2853 1 67 2854 1 67 2855 1 67 2857 1 67 2858 1 67 2859 1 67 2863 1 67 2864 1 67 2865 1 67 2867 1 67 2868 1 67 2869 1 67 2871 1 67 2894 1 67 2898 1 67 2902 1 67 2903 1 67 2904 1 67 2908 1 67 2912 1 67 2913 1 67 2914 1 67 2918 1 67 2919 1 67 2920 1 67 2924 1 67 2925 1 67 2926 1 67 2963 1 67 2967 1 67 2968 1 67 2969 1 67 2973 1 67 2974 1 67 2975 1 67 2979 1 67 2980 1 67 2981 1 67 2983 1 67 2984 1 67 2985 1 67 2989 1 67 2990 1 67 2991 1 67 2993 1 67 2994 1 67 2995 1 67 2997 1 67 3019 1 67 3023 1 67 3024 1 67 3025 1 67 3029 1 67 3030 1 67 3031 1 67 3035 1 67 3036 1 67 3037 1 67 3039 1 67 3040 1 67 3041 1 67 3045 1 67 3046 1 67 3047 1 67 3049 1 67 3050 1 67 3051 1 67 3053 1 67 3075 1 67 3076 1 67 3077 1 67 3081 1 67 3082 1 67 3083 1 67 3085 1 67 3086 1 67 3087 1 67 3089 1 67 3090 1 67 3091 1 67 3092 1 67 3094 1 67 3095 1 67 3104 1 67 3108 1 67 3112 1 67 3113 1 67 3114 1 67 3118 1 67 3122 1 67 3123 1 67 3124 1 67 3128 1 67 3129 1 67 3130 1 67 3134 1 67 3135 1 67 3136 1 67 3173 1 67 3177 1 67 3178 1 67 3179 1 67 3183 1 67 3184 1 67 3185 1 67 3189 1 67 3190 1 67 3191 1 67 3193 1 67 3194 1 67 3195 1 67 3199 1 67 3200 1 67 3201 1 67 3203 1 67 3204 1 67 3205 1 67 3207 1 67 3229 1 67 3233 1 67 3234 1 67 3235 1 67 3239 1 67 3240 1 67 3241 1 67 3245 1 67 3246 1 67 3247 1 67 3249 1 67 3250 1 67 3251 1 67 3255 1 67 3256 1 67 3257 1 67 3259 1 67 3260 1 67 3261 1 67 3263 1 67 3285 1 67 3286 1 67 3287 1 67 3291 1 67 3292 1 67 3293 1 67 3295 1 67 3296 1 67 3297 1 67 3299 1 67 3300 1 67 3301 1 67 3302 1 67 3304 1 67 3305 1 67 3313 1 67 3317 1 67 3318 1 67 3319 1 67 3323 1 67 3324 1 67 3325 1 67 3329 1 67 3330 1 67 3331 1 67 3333 1 67 3334 1 67 3335 1 67 3339 1 67 3340 1 67 3341 1 67 3343 1 67 3344 1 67 3345 1 67 3347 1 67 3369 1 67 3370 1 67 3371 1 67 3375 1 67 3376 1 67 3377 1 67 3379 1 67 3380 1 67 3381 1 67 3383 1 67 3384 1 67 3385 1 67 3386 1 67 3388 1 67 3389 1 67 3397 1 67 3398 1 67 3399 1 67 3403 1 67 3404 1 67 3405 1 67 3407 1 67 3408 1 67 3409 1 67 3411 1 67 3412 1 67 3413 1 67 3414 1 67 3416 1 67 3417 1 67 3425 1 67 3426 1 67 3427 1 67 3429 1 67 3430 1 67 3431 1 68 13 1 68 41 1 68 68 1 68 73 1 68 77 1 68 80 1 68 83 1 68 84 1 68 125 1 68 152 1 68 157 1 68 161 1 68 164 1 68 167 1 68 168 1 68 208 1 68 213 1 68 217 1 68 220 1 68 223 1 68 224 1 68 263 1 68 267 1 68 270 1 68 273 1 68 274 1 68 277 1 68 280 1 68 283 1 68 284 1 68 286 1 68 289 1 68 290 1 68 292 1 68 293 1 68 295 1 68 335 1 68 362 1 68 367 1 68 371 1 68 374 1 68 377 1 68 378 1 68 418 1 68 423 1 68 427 1 68 430 1 68 433 1 68 434 1 68 473 1 68 477 1 68 480 1 68 483 1 68 484 1 68 487 1 68 490 1 68 493 1 68 494 1 68 496 1 68 499 1 68 500 1 68 502 1 68 503 1 68 505 1 68 544 1 68 549 1 68 553 1 68 556 1 68 559 1 68 560 1 68 599 1 68 603 1 68 606 1 68 609 1 68 610 1 68 613 1 68 616 1 68 619 1 68 620 1 68 622 1 68 625 1 68 626 1 68 628 1 68 629 1 68 631 1 68 669 1 68 673 1 68 676 1 68 679 1 68 680 1 68 683 1 68 686 1 68 689 1 68 690 1 68 692 1 68 695 1 68 696 1 68 698 1 68 699 1 68 701 1 68 738 1 68 741 1 68 744 1 68 745 1 68 747 1 68 750 1 68 751 1 68 753 1 68 754 1 68 756 1 68 757 1 68 760 1 68 761 1 68 763 1 68 764 1 68 766 1 68 767 1 68 768 1 68 770 1 68 771 1 68 797 1 68 824 1 68 829 1 68 833 1 68 836 1 68 839 1 68 840 1 68 880 1 68 885 1 68 889 1 68 892 1 68 895 1 68 896 1 68 935 1 68 939 1 68 942 1 68 945 1 68 946 1 68 949 1 68 952 1 68 955 1 68 956 1 68 958 1 68 961 1 68 962 1 68 964 1 68 965 1 68 967 1 68 1006 1 68 1011 1 68 1015 1 68 1018 1 68 1021 1 68 1022 1 68 1061 1 68 1065 1 68 1068 1 68 1071 1 68 1072 1 68 1075 1 68 1078 1 68 1081 1 68 1082 1 68 1084 1 68 1087 1 68 1088 1 68 1090 1 68 1091 1 68 1093 1 68 1131 1 68 1135 1 68 1138 1 68 1141 1 68 1142 1 68 1145 1 68 1148 1 68 1151 1 68 1152 1 68 1154 1 68 1157 1 68 1158 1 68 1160 1 68 1161 1 68 1163 1 68 1200 1 68 1203 1 68 1206 1 68 1207 1 68 1209 1 68 1212 1 68 1213 1 68 1215 1 68 1216 1 68 1218 1 68 1219 1 68 1222 1 68 1223 1 68 1225 1 68 1226 1 68 1228 1 68 1229 1 68 1230 1 68 1232 1 68 1233 1 68 1258 1 68 1263 1 68 1267 1 68 1270 1 68 1273 1 68 1274 1 68 1313 1 68 1317 1 68 1320 1 68 1323 1 68 1324 1 68 1327 1 68 1330 1 68 1333 1 68 1334 1 68 1336 1 68 1339 1 68 1340 1 68 1342 1 68 1343 1 68 1345 1 68 1383 1 68 1387 1 68 1390 1 68 1393 1 68 1394 1 68 1397 1 68 1400 1 68 1403 1 68 1404 1 68 1406 1 68 1409 1 68 1410 1 68 1412 1 68 1413 1 68 1415 1 68 1452 1 68 1455 1 68 1458 1 68 1459 1 68 1461 1 68 1464 1 68 1465 1 68 1467 1 68 1468 1 68 1470 1 68 1471 1 68 1474 1 68 1475 1 68 1477 1 68 1478 1 68 1480 1 68 1481 1 68 1482 1 68 1484 1 68 1485 1 68 1509 1 68 1513 1 68 1516 1 68 1519 1 68 1520 1 68 1523 1 68 1526 1 68 1529 1 68 1530 1 68 1532 1 68 1535 1 68 1536 1 68 1538 1 68 1539 1 68 1541 1 68 1578 1 68 1581 1 68 1584 1 68 1585 1 68 1587 1 68 1590 1 68 1591 1 68 1593 1 68 1594 1 68 1596 1 68 1597 1 68 1600 1 68 1601 1 68 1603 1 68 1604 1 68 1606 1 68 1607 1 68 1608 1 68 1610 1 68 1611 1 68 1634 1 68 1637 1 68 1640 1 68 1641 1 68 1643 1 68 1646 1 68 1647 1 68 1649 1 68 1650 1 68 1652 1 68 1653 1 68 1656 1 68 1657 1 68 1659 1 68 1660 1 68 1662 1 68 1663 1 68 1664 1 68 1666 1 68 1667 1 68 1689 1 68 1692 1 68 1693 1 68 1695 1 68 1696 1 68 1698 1 68 1699 1 68 1700 1 68 1702 1 68 1703 1 68 1704 1 68 1705 1 68 1707 1 68 1708 1 68 1709 1 68 1721 1 68 1748 1 68 1753 1 68 1757 1 68 1760 1 68 1763 1 68 1764 1 68 1804 1 68 1809 1 68 1813 1 68 1816 1 68 1819 1 68 1820 1 68 1859 1 68 1863 1 68 1866 1 68 1869 1 68 1870 1 68 1873 1 68 1876 1 68 1879 1 68 1880 1 68 1882 1 68 1885 1 68 1886 1 68 1888 1 68 1889 1 68 1891 1 68 1930 1 68 1935 1 68 1939 1 68 1942 1 68 1945 1 68 1946 1 68 1985 1 68 1989 1 68 1992 1 68 1995 1 68 1996 1 68 1999 1 68 2002 1 68 2005 1 68 2006 1 68 2008 1 68 2011 1 68 2012 1 68 2014 1 68 2015 1 68 2017 1 68 2055 1 68 2059 1 68 2062 1 68 2065 1 68 2066 1 68 2069 1 68 2072 1 68 2075 1 68 2076 1 68 2078 1 68 2081 1 68 2082 1 68 2084 1 68 2085 1 68 2087 1 68 2124 1 68 2127 1 68 2130 1 68 2131 1 68 2133 1 68 2136 1 68 2137 1 68 2139 1 68 2140 1 68 2142 1 68 2143 1 68 2146 1 68 2147 1 68 2149 1 68 2150 1 68 2152 1 68 2153 1 68 2154 1 68 2156 1 68 2157 1 68 2182 1 68 2187 1 68 2191 1 68 2194 1 68 2197 1 68 2198 1 68 2237 1 68 2241 1 68 2244 1 68 2247 1 68 2248 1 68 2251 1 68 2254 1 68 2257 1 68 2258 1 68 2260 1 68 2263 1 68 2264 1 68 2266 1 68 2267 1 68 2269 1 68 2307 1 68 2311 1 68 2314 1 68 2317 1 68 2318 1 68 2321 1 68 2324 1 68 2327 1 68 2328 1 68 2330 1 68 2333 1 68 2334 1 68 2336 1 68 2337 1 68 2339 1 68 2376 1 68 2379 1 68 2382 1 68 2383 1 68 2385 1 68 2388 1 68 2389 1 68 2391 1 68 2392 1 68 2394 1 68 2395 1 68 2398 1 68 2399 1 68 2401 1 68 2402 1 68 2404 1 68 2405 1 68 2406 1 68 2408 1 68 2409 1 68 2433 1 68 2437 1 68 2440 1 68 2443 1 68 2444 1 68 2447 1 68 2450 1 68 2453 1 68 2454 1 68 2456 1 68 2459 1 68 2460 1 68 2462 1 68 2463 1 68 2465 1 68 2502 1 68 2505 1 68 2508 1 68 2509 1 68 2511 1 68 2514 1 68 2515 1 68 2517 1 68 2518 1 68 2520 1 68 2521 1 68 2524 1 68 2525 1 68 2527 1 68 2528 1 68 2530 1 68 2531 1 68 2532 1 68 2534 1 68 2535 1 68 2558 1 68 2561 1 68 2564 1 68 2565 1 68 2567 1 68 2570 1 68 2571 1 68 2573 1 68 2574 1 68 2576 1 68 2577 1 68 2580 1 68 2581 1 68 2583 1 68 2584 1 68 2586 1 68 2587 1 68 2588 1 68 2590 1 68 2591 1 68 2613 1 68 2616 1 68 2617 1 68 2619 1 68 2620 1 68 2622 1 68 2623 1 68 2624 1 68 2626 1 68 2627 1 68 2628 1 68 2629 1 68 2631 1 68 2632 1 68 2633 1 68 2644 1 68 2649 1 68 2653 1 68 2656 1 68 2659 1 68 2660 1 68 2699 1 68 2703 1 68 2706 1 68 2709 1 68 2710 1 68 2713 1 68 2716 1 68 2719 1 68 2720 1 68 2722 1 68 2725 1 68 2726 1 68 2728 1 68 2729 1 68 2731 1 68 2769 1 68 2773 1 68 2776 1 68 2779 1 68 2780 1 68 2783 1 68 2786 1 68 2789 1 68 2790 1 68 2792 1 68 2795 1 68 2796 1 68 2798 1 68 2799 1 68 2801 1 68 2838 1 68 2841 1 68 2844 1 68 2845 1 68 2847 1 68 2850 1 68 2851 1 68 2853 1 68 2854 1 68 2856 1 68 2857 1 68 2860 1 68 2861 1 68 2863 1 68 2864 1 68 2866 1 68 2867 1 68 2868 1 68 2870 1 68 2871 1 68 2895 1 68 2899 1 68 2902 1 68 2905 1 68 2906 1 68 2909 1 68 2912 1 68 2915 1 68 2916 1 68 2918 1 68 2921 1 68 2922 1 68 2924 1 68 2925 1 68 2927 1 68 2964 1 68 2967 1 68 2970 1 68 2971 1 68 2973 1 68 2976 1 68 2977 1 68 2979 1 68 2980 1 68 2982 1 68 2983 1 68 2986 1 68 2987 1 68 2989 1 68 2990 1 68 2992 1 68 2993 1 68 2994 1 68 2996 1 68 2997 1 68 3020 1 68 3023 1 68 3026 1 68 3027 1 68 3029 1 68 3032 1 68 3033 1 68 3035 1 68 3036 1 68 3038 1 68 3039 1 68 3042 1 68 3043 1 68 3045 1 68 3046 1 68 3048 1 68 3049 1 68 3050 1 68 3052 1 68 3053 1 68 3075 1 68 3078 1 68 3079 1 68 3081 1 68 3082 1 68 3084 1 68 3085 1 68 3086 1 68 3088 1 68 3089 1 68 3090 1 68 3091 1 68 3093 1 68 3094 1 68 3095 1 68 3105 1 68 3109 1 68 3112 1 68 3115 1 68 3116 1 68 3119 1 68 3122 1 68 3125 1 68 3126 1 68 3128 1 68 3131 1 68 3132 1 68 3134 1 68 3135 1 68 3137 1 68 3174 1 68 3177 1 68 3180 1 68 3181 1 68 3183 1 68 3186 1 68 3187 1 68 3189 1 68 3190 1 68 3192 1 68 3193 1 68 3196 1 68 3197 1 68 3199 1 68 3200 1 68 3202 1 68 3203 1 68 3204 1 68 3206 1 68 3207 1 68 3230 1 68 3233 1 68 3236 1 68 3237 1 68 3239 1 68 3242 1 68 3243 1 68 3245 1 68 3246 1 68 3248 1 68 3249 1 68 3252 1 68 3253 1 68 3255 1 68 3256 1 68 3258 1 68 3259 1 68 3260 1 68 3262 1 68 3263 1 68 3285 1 68 3288 1 68 3289 1 68 3291 1 68 3292 1 68 3294 1 68 3295 1 68 3296 1 68 3298 1 68 3299 1 68 3300 1 68 3301 1 68 3303 1 68 3304 1 68 3305 1 68 3314 1 68 3317 1 68 3320 1 68 3321 1 68 3323 1 68 3326 1 68 3327 1 68 3329 1 68 3330 1 68 3332 1 68 3333 1 68 3336 1 68 3337 1 68 3339 1 68 3340 1 68 3342 1 68 3343 1 68 3344 1 68 3346 1 68 3347 1 68 3369 1 68 3372 1 68 3373 1 68 3375 1 68 3376 1 68 3378 1 68 3379 1 68 3380 1 68 3382 1 68 3383 1 68 3384 1 68 3385 1 68 3387 1 68 3388 1 68 3389 1 68 3397 1 68 3400 1 68 3401 1 68 3403 1 68 3404 1 68 3406 1 68 3407 1 68 3408 1 68 3410 1 68 3411 1 68 3412 1 68 3413 1 68 3415 1 68 3416 1 68 3417 1 68 3425 1 68 3426 1 68 3428 1 68 3429 1 68 3430 1 68 3431 1 69 14 1 69 42 1 69 69 1 69 74 1 69 78 1 69 81 1 69 83 1 69 85 1 69 126 1 69 153 1 69 158 1 69 162 1 69 165 1 69 167 1 69 169 1 69 209 1 69 214 1 69 218 1 69 221 1 69 223 1 69 225 1 69 264 1 69 268 1 69 271 1 69 273 1 69 275 1 69 278 1 69 281 1 69 283 1 69 285 1 69 287 1 69 289 1 69 291 1 69 292 1 69 294 1 69 295 1 69 336 1 69 363 1 69 368 1 69 372 1 69 375 1 69 377 1 69 379 1 69 419 1 69 424 1 69 428 1 69 431 1 69 433 1 69 435 1 69 474 1 69 478 1 69 481 1 69 483 1 69 485 1 69 488 1 69 491 1 69 493 1 69 495 1 69 497 1 69 499 1 69 501 1 69 502 1 69 504 1 69 505 1 69 545 1 69 550 1 69 554 1 69 557 1 69 559 1 69 561 1 69 600 1 69 604 1 69 607 1 69 609 1 69 611 1 69 614 1 69 617 1 69 619 1 69 621 1 69 623 1 69 625 1 69 627 1 69 628 1 69 630 1 69 631 1 69 670 1 69 674 1 69 677 1 69 679 1 69 681 1 69 684 1 69 687 1 69 689 1 69 691 1 69 693 1 69 695 1 69 697 1 69 698 1 69 700 1 69 701 1 69 739 1 69 742 1 69 744 1 69 746 1 69 748 1 69 750 1 69 752 1 69 753 1 69 755 1 69 756 1 69 758 1 69 760 1 69 762 1 69 763 1 69 765 1 69 766 1 69 767 1 69 769 1 69 770 1 69 771 1 69 798 1 69 825 1 69 830 1 69 834 1 69 837 1 69 839 1 69 841 1 69 881 1 69 886 1 69 890 1 69 893 1 69 895 1 69 897 1 69 936 1 69 940 1 69 943 1 69 945 1 69 947 1 69 950 1 69 953 1 69 955 1 69 957 1 69 959 1 69 961 1 69 963 1 69 964 1 69 966 1 69 967 1 69 1007 1 69 1012 1 69 1016 1 69 1019 1 69 1021 1 69 1023 1 69 1062 1 69 1066 1 69 1069 1 69 1071 1 69 1073 1 69 1076 1 69 1079 1 69 1081 1 69 1083 1 69 1085 1 69 1087 1 69 1089 1 69 1090 1 69 1092 1 69 1093 1 69 1132 1 69 1136 1 69 1139 1 69 1141 1 69 1143 1 69 1146 1 69 1149 1 69 1151 1 69 1153 1 69 1155 1 69 1157 1 69 1159 1 69 1160 1 69 1162 1 69 1163 1 69 1201 1 69 1204 1 69 1206 1 69 1208 1 69 1210 1 69 1212 1 69 1214 1 69 1215 1 69 1217 1 69 1218 1 69 1220 1 69 1222 1 69 1224 1 69 1225 1 69 1227 1 69 1228 1 69 1229 1 69 1231 1 69 1232 1 69 1233 1 69 1259 1 69 1264 1 69 1268 1 69 1271 1 69 1273 1 69 1275 1 69 1314 1 69 1318 1 69 1321 1 69 1323 1 69 1325 1 69 1328 1 69 1331 1 69 1333 1 69 1335 1 69 1337 1 69 1339 1 69 1341 1 69 1342 1 69 1344 1 69 1345 1 69 1384 1 69 1388 1 69 1391 1 69 1393 1 69 1395 1 69 1398 1 69 1401 1 69 1403 1 69 1405 1 69 1407 1 69 1409 1 69 1411 1 69 1412 1 69 1414 1 69 1415 1 69 1453 1 69 1456 1 69 1458 1 69 1460 1 69 1462 1 69 1464 1 69 1466 1 69 1467 1 69 1469 1 69 1470 1 69 1472 1 69 1474 1 69 1476 1 69 1477 1 69 1479 1 69 1480 1 69 1481 1 69 1483 1 69 1484 1 69 1485 1 69 1510 1 69 1514 1 69 1517 1 69 1519 1 69 1521 1 69 1524 1 69 1527 1 69 1529 1 69 1531 1 69 1533 1 69 1535 1 69 1537 1 69 1538 1 69 1540 1 69 1541 1 69 1579 1 69 1582 1 69 1584 1 69 1586 1 69 1588 1 69 1590 1 69 1592 1 69 1593 1 69 1595 1 69 1596 1 69 1598 1 69 1600 1 69 1602 1 69 1603 1 69 1605 1 69 1606 1 69 1607 1 69 1609 1 69 1610 1 69 1611 1 69 1635 1 69 1638 1 69 1640 1 69 1642 1 69 1644 1 69 1646 1 69 1648 1 69 1649 1 69 1651 1 69 1652 1 69 1654 1 69 1656 1 69 1658 1 69 1659 1 69 1661 1 69 1662 1 69 1663 1 69 1665 1 69 1666 1 69 1667 1 69 1690 1 69 1692 1 69 1694 1 69 1695 1 69 1697 1 69 1698 1 69 1699 1 69 1701 1 69 1702 1 69 1703 1 69 1704 1 69 1706 1 69 1707 1 69 1708 1 69 1709 1 69 1722 1 69 1749 1 69 1754 1 69 1758 1 69 1761 1 69 1763 1 69 1765 1 69 1805 1 69 1810 1 69 1814 1 69 1817 1 69 1819 1 69 1821 1 69 1860 1 69 1864 1 69 1867 1 69 1869 1 69 1871 1 69 1874 1 69 1877 1 69 1879 1 69 1881 1 69 1883 1 69 1885 1 69 1887 1 69 1888 1 69 1890 1 69 1891 1 69 1931 1 69 1936 1 69 1940 1 69 1943 1 69 1945 1 69 1947 1 69 1986 1 69 1990 1 69 1993 1 69 1995 1 69 1997 1 69 2000 1 69 2003 1 69 2005 1 69 2007 1 69 2009 1 69 2011 1 69 2013 1 69 2014 1 69 2016 1 69 2017 1 69 2056 1 69 2060 1 69 2063 1 69 2065 1 69 2067 1 69 2070 1 69 2073 1 69 2075 1 69 2077 1 69 2079 1 69 2081 1 69 2083 1 69 2084 1 69 2086 1 69 2087 1 69 2125 1 69 2128 1 69 2130 1 69 2132 1 69 2134 1 69 2136 1 69 2138 1 69 2139 1 69 2141 1 69 2142 1 69 2144 1 69 2146 1 69 2148 1 69 2149 1 69 2151 1 69 2152 1 69 2153 1 69 2155 1 69 2156 1 69 2157 1 69 2183 1 69 2188 1 69 2192 1 69 2195 1 69 2197 1 69 2199 1 69 2238 1 69 2242 1 69 2245 1 69 2247 1 69 2249 1 69 2252 1 69 2255 1 69 2257 1 69 2259 1 69 2261 1 69 2263 1 69 2265 1 69 2266 1 69 2268 1 69 2269 1 69 2308 1 69 2312 1 69 2315 1 69 2317 1 69 2319 1 69 2322 1 69 2325 1 69 2327 1 69 2329 1 69 2331 1 69 2333 1 69 2335 1 69 2336 1 69 2338 1 69 2339 1 69 2377 1 69 2380 1 69 2382 1 69 2384 1 69 2386 1 69 2388 1 69 2390 1 69 2391 1 69 2393 1 69 2394 1 69 2396 1 69 2398 1 69 2400 1 69 2401 1 69 2403 1 69 2404 1 69 2405 1 69 2407 1 69 2408 1 69 2409 1 69 2434 1 69 2438 1 69 2441 1 69 2443 1 69 2445 1 69 2448 1 69 2451 1 69 2453 1 69 2455 1 69 2457 1 69 2459 1 69 2461 1 69 2462 1 69 2464 1 69 2465 1 69 2503 1 69 2506 1 69 2508 1 69 2510 1 69 2512 1 69 2514 1 69 2516 1 69 2517 1 69 2519 1 69 2520 1 69 2522 1 69 2524 1 69 2526 1 69 2527 1 69 2529 1 69 2530 1 69 2531 1 69 2533 1 69 2534 1 69 2535 1 69 2559 1 69 2562 1 69 2564 1 69 2566 1 69 2568 1 69 2570 1 69 2572 1 69 2573 1 69 2575 1 69 2576 1 69 2578 1 69 2580 1 69 2582 1 69 2583 1 69 2585 1 69 2586 1 69 2587 1 69 2589 1 69 2590 1 69 2591 1 69 2614 1 69 2616 1 69 2618 1 69 2619 1 69 2621 1 69 2622 1 69 2623 1 69 2625 1 69 2626 1 69 2627 1 69 2628 1 69 2630 1 69 2631 1 69 2632 1 69 2633 1 69 2645 1 69 2650 1 69 2654 1 69 2657 1 69 2659 1 69 2661 1 69 2700 1 69 2704 1 69 2707 1 69 2709 1 69 2711 1 69 2714 1 69 2717 1 69 2719 1 69 2721 1 69 2723 1 69 2725 1 69 2727 1 69 2728 1 69 2730 1 69 2731 1 69 2770 1 69 2774 1 69 2777 1 69 2779 1 69 2781 1 69 2784 1 69 2787 1 69 2789 1 69 2791 1 69 2793 1 69 2795 1 69 2797 1 69 2798 1 69 2800 1 69 2801 1 69 2839 1 69 2842 1 69 2844 1 69 2846 1 69 2848 1 69 2850 1 69 2852 1 69 2853 1 69 2855 1 69 2856 1 69 2858 1 69 2860 1 69 2862 1 69 2863 1 69 2865 1 69 2866 1 69 2867 1 69 2869 1 69 2870 1 69 2871 1 69 2896 1 69 2900 1 69 2903 1 69 2905 1 69 2907 1 69 2910 1 69 2913 1 69 2915 1 69 2917 1 69 2919 1 69 2921 1 69 2923 1 69 2924 1 69 2926 1 69 2927 1 69 2965 1 69 2968 1 69 2970 1 69 2972 1 69 2974 1 69 2976 1 69 2978 1 69 2979 1 69 2981 1 69 2982 1 69 2984 1 69 2986 1 69 2988 1 69 2989 1 69 2991 1 69 2992 1 69 2993 1 69 2995 1 69 2996 1 69 2997 1 69 3021 1 69 3024 1 69 3026 1 69 3028 1 69 3030 1 69 3032 1 69 3034 1 69 3035 1 69 3037 1 69 3038 1 69 3040 1 69 3042 1 69 3044 1 69 3045 1 69 3047 1 69 3048 1 69 3049 1 69 3051 1 69 3052 1 69 3053 1 69 3076 1 69 3078 1 69 3080 1 69 3081 1 69 3083 1 69 3084 1 69 3085 1 69 3087 1 69 3088 1 69 3089 1 69 3090 1 69 3092 1 69 3093 1 69 3094 1 69 3095 1 69 3106 1 69 3110 1 69 3113 1 69 3115 1 69 3117 1 69 3120 1 69 3123 1 69 3125 1 69 3127 1 69 3129 1 69 3131 1 69 3133 1 69 3134 1 69 3136 1 69 3137 1 69 3175 1 69 3178 1 69 3180 1 69 3182 1 69 3184 1 69 3186 1 69 3188 1 69 3189 1 69 3191 1 69 3192 1 69 3194 1 69 3196 1 69 3198 1 69 3199 1 69 3201 1 69 3202 1 69 3203 1 69 3205 1 69 3206 1 69 3207 1 69 3231 1 69 3234 1 69 3236 1 69 3238 1 69 3240 1 69 3242 1 69 3244 1 69 3245 1 69 3247 1 69 3248 1 69 3250 1 69 3252 1 69 3254 1 69 3255 1 69 3257 1 69 3258 1 69 3259 1 69 3261 1 69 3262 1 69 3263 1 69 3286 1 69 3288 1 69 3290 1 69 3291 1 69 3293 1 69 3294 1 69 3295 1 69 3297 1 69 3298 1 69 3299 1 69 3300 1 69 3302 1 69 3303 1 69 3304 1 69 3305 1 69 3315 1 69 3318 1 69 3320 1 69 3322 1 69 3324 1 69 3326 1 69 3328 1 69 3329 1 69 3331 1 69 3332 1 69 3334 1 69 3336 1 69 3338 1 69 3339 1 69 3341 1 69 3342 1 69 3343 1 69 3345 1 69 3346 1 69 3347 1 69 3370 1 69 3372 1 69 3374 1 69 3375 1 69 3377 1 69 3378 1 69 3379 1 69 3381 1 69 3382 1 69 3383 1 69 3384 1 69 3386 1 69 3387 1 69 3388 1 69 3389 1 69 3398 1 69 3400 1 69 3402 1 69 3403 1 69 3405 1 69 3406 1 69 3407 1 69 3409 1 69 3410 1 69 3411 1 69 3412 1 69 3414 1 69 3415 1 69 3416 1 69 3417 1 69 3425 1 69 3427 1 69 3428 1 69 3429 1 69 3430 1 69 3431 1 70 15 1 70 43 1 70 70 1 70 75 1 70 79 1 70 82 1 70 84 1 70 85 1 70 127 1 70 154 1 70 159 1 70 163 1 70 166 1 70 168 1 70 169 1 70 210 1 70 215 1 70 219 1 70 222 1 70 224 1 70 225 1 70 265 1 70 269 1 70 272 1 70 274 1 70 275 1 70 279 1 70 282 1 70 284 1 70 285 1 70 288 1 70 290 1 70 291 1 70 293 1 70 294 1 70 295 1 70 337 1 70 364 1 70 369 1 70 373 1 70 376 1 70 378 1 70 379 1 70 420 1 70 425 1 70 429 1 70 432 1 70 434 1 70 435 1 70 475 1 70 479 1 70 482 1 70 484 1 70 485 1 70 489 1 70 492 1 70 494 1 70 495 1 70 498 1 70 500 1 70 501 1 70 503 1 70 504 1 70 505 1 70 546 1 70 551 1 70 555 1 70 558 1 70 560 1 70 561 1 70 601 1 70 605 1 70 608 1 70 610 1 70 611 1 70 615 1 70 618 1 70 620 1 70 621 1 70 624 1 70 626 1 70 627 1 70 629 1 70 630 1 70 631 1 70 671 1 70 675 1 70 678 1 70 680 1 70 681 1 70 685 1 70 688 1 70 690 1 70 691 1 70 694 1 70 696 1 70 697 1 70 699 1 70 700 1 70 701 1 70 740 1 70 743 1 70 745 1 70 746 1 70 749 1 70 751 1 70 752 1 70 754 1 70 755 1 70 756 1 70 759 1 70 761 1 70 762 1 70 764 1 70 765 1 70 766 1 70 768 1 70 769 1 70 770 1 70 771 1 70 799 1 70 826 1 70 831 1 70 835 1 70 838 1 70 840 1 70 841 1 70 882 1 70 887 1 70 891 1 70 894 1 70 896 1 70 897 1 70 937 1 70 941 1 70 944 1 70 946 1 70 947 1 70 951 1 70 954 1 70 956 1 70 957 1 70 960 1 70 962 1 70 963 1 70 965 1 70 966 1 70 967 1 70 1008 1 70 1013 1 70 1017 1 70 1020 1 70 1022 1 70 1023 1 70 1063 1 70 1067 1 70 1070 1 70 1072 1 70 1073 1 70 1077 1 70 1080 1 70 1082 1 70 1083 1 70 1086 1 70 1088 1 70 1089 1 70 1091 1 70 1092 1 70 1093 1 70 1133 1 70 1137 1 70 1140 1 70 1142 1 70 1143 1 70 1147 1 70 1150 1 70 1152 1 70 1153 1 70 1156 1 70 1158 1 70 1159 1 70 1161 1 70 1162 1 70 1163 1 70 1202 1 70 1205 1 70 1207 1 70 1208 1 70 1211 1 70 1213 1 70 1214 1 70 1216 1 70 1217 1 70 1218 1 70 1221 1 70 1223 1 70 1224 1 70 1226 1 70 1227 1 70 1228 1 70 1230 1 70 1231 1 70 1232 1 70 1233 1 70 1260 1 70 1265 1 70 1269 1 70 1272 1 70 1274 1 70 1275 1 70 1315 1 70 1319 1 70 1322 1 70 1324 1 70 1325 1 70 1329 1 70 1332 1 70 1334 1 70 1335 1 70 1338 1 70 1340 1 70 1341 1 70 1343 1 70 1344 1 70 1345 1 70 1385 1 70 1389 1 70 1392 1 70 1394 1 70 1395 1 70 1399 1 70 1402 1 70 1404 1 70 1405 1 70 1408 1 70 1410 1 70 1411 1 70 1413 1 70 1414 1 70 1415 1 70 1454 1 70 1457 1 70 1459 1 70 1460 1 70 1463 1 70 1465 1 70 1466 1 70 1468 1 70 1469 1 70 1470 1 70 1473 1 70 1475 1 70 1476 1 70 1478 1 70 1479 1 70 1480 1 70 1482 1 70 1483 1 70 1484 1 70 1485 1 70 1511 1 70 1515 1 70 1518 1 70 1520 1 70 1521 1 70 1525 1 70 1528 1 70 1530 1 70 1531 1 70 1534 1 70 1536 1 70 1537 1 70 1539 1 70 1540 1 70 1541 1 70 1580 1 70 1583 1 70 1585 1 70 1586 1 70 1589 1 70 1591 1 70 1592 1 70 1594 1 70 1595 1 70 1596 1 70 1599 1 70 1601 1 70 1602 1 70 1604 1 70 1605 1 70 1606 1 70 1608 1 70 1609 1 70 1610 1 70 1611 1 70 1636 1 70 1639 1 70 1641 1 70 1642 1 70 1645 1 70 1647 1 70 1648 1 70 1650 1 70 1651 1 70 1652 1 70 1655 1 70 1657 1 70 1658 1 70 1660 1 70 1661 1 70 1662 1 70 1664 1 70 1665 1 70 1666 1 70 1667 1 70 1691 1 70 1693 1 70 1694 1 70 1696 1 70 1697 1 70 1698 1 70 1700 1 70 1701 1 70 1702 1 70 1703 1 70 1705 1 70 1706 1 70 1707 1 70 1708 1 70 1709 1 70 1723 1 70 1750 1 70 1755 1 70 1759 1 70 1762 1 70 1764 1 70 1765 1 70 1806 1 70 1811 1 70 1815 1 70 1818 1 70 1820 1 70 1821 1 70 1861 1 70 1865 1 70 1868 1 70 1870 1 70 1871 1 70 1875 1 70 1878 1 70 1880 1 70 1881 1 70 1884 1 70 1886 1 70 1887 1 70 1889 1 70 1890 1 70 1891 1 70 1932 1 70 1937 1 70 1941 1 70 1944 1 70 1946 1 70 1947 1 70 1987 1 70 1991 1 70 1994 1 70 1996 1 70 1997 1 70 2001 1 70 2004 1 70 2006 1 70 2007 1 70 2010 1 70 2012 1 70 2013 1 70 2015 1 70 2016 1 70 2017 1 70 2057 1 70 2061 1 70 2064 1 70 2066 1 70 2067 1 70 2071 1 70 2074 1 70 2076 1 70 2077 1 70 2080 1 70 2082 1 70 2083 1 70 2085 1 70 2086 1 70 2087 1 70 2126 1 70 2129 1 70 2131 1 70 2132 1 70 2135 1 70 2137 1 70 2138 1 70 2140 1 70 2141 1 70 2142 1 70 2145 1 70 2147 1 70 2148 1 70 2150 1 70 2151 1 70 2152 1 70 2154 1 70 2155 1 70 2156 1 70 2157 1 70 2184 1 70 2189 1 70 2193 1 70 2196 1 70 2198 1 70 2199 1 70 2239 1 70 2243 1 70 2246 1 70 2248 1 70 2249 1 70 2253 1 70 2256 1 70 2258 1 70 2259 1 70 2262 1 70 2264 1 70 2265 1 70 2267 1 70 2268 1 70 2269 1 70 2309 1 70 2313 1 70 2316 1 70 2318 1 70 2319 1 70 2323 1 70 2326 1 70 2328 1 70 2329 1 70 2332 1 70 2334 1 70 2335 1 70 2337 1 70 2338 1 70 2339 1 70 2378 1 70 2381 1 70 2383 1 70 2384 1 70 2387 1 70 2389 1 70 2390 1 70 2392 1 70 2393 1 70 2394 1 70 2397 1 70 2399 1 70 2400 1 70 2402 1 70 2403 1 70 2404 1 70 2406 1 70 2407 1 70 2408 1 70 2409 1 70 2435 1 70 2439 1 70 2442 1 70 2444 1 70 2445 1 70 2449 1 70 2452 1 70 2454 1 70 2455 1 70 2458 1 70 2460 1 70 2461 1 70 2463 1 70 2464 1 70 2465 1 70 2504 1 70 2507 1 70 2509 1 70 2510 1 70 2513 1 70 2515 1 70 2516 1 70 2518 1 70 2519 1 70 2520 1 70 2523 1 70 2525 1 70 2526 1 70 2528 1 70 2529 1 70 2530 1 70 2532 1 70 2533 1 70 2534 1 70 2535 1 70 2560 1 70 2563 1 70 2565 1 70 2566 1 70 2569 1 70 2571 1 70 2572 1 70 2574 1 70 2575 1 70 2576 1 70 2579 1 70 2581 1 70 2582 1 70 2584 1 70 2585 1 70 2586 1 70 2588 1 70 2589 1 70 2590 1 70 2591 1 70 2615 1 70 2617 1 70 2618 1 70 2620 1 70 2621 1 70 2622 1 70 2624 1 70 2625 1 70 2626 1 70 2627 1 70 2629 1 70 2630 1 70 2631 1 70 2632 1 70 2633 1 70 2646 1 70 2651 1 70 2655 1 70 2658 1 70 2660 1 70 2661 1 70 2701 1 70 2705 1 70 2708 1 70 2710 1 70 2711 1 70 2715 1 70 2718 1 70 2720 1 70 2721 1 70 2724 1 70 2726 1 70 2727 1 70 2729 1 70 2730 1 70 2731 1 70 2771 1 70 2775 1 70 2778 1 70 2780 1 70 2781 1 70 2785 1 70 2788 1 70 2790 1 70 2791 1 70 2794 1 70 2796 1 70 2797 1 70 2799 1 70 2800 1 70 2801 1 70 2840 1 70 2843 1 70 2845 1 70 2846 1 70 2849 1 70 2851 1 70 2852 1 70 2854 1 70 2855 1 70 2856 1 70 2859 1 70 2861 1 70 2862 1 70 2864 1 70 2865 1 70 2866 1 70 2868 1 70 2869 1 70 2870 1 70 2871 1 70 2897 1 70 2901 1 70 2904 1 70 2906 1 70 2907 1 70 2911 1 70 2914 1 70 2916 1 70 2917 1 70 2920 1 70 2922 1 70 2923 1 70 2925 1 70 2926 1 70 2927 1 70 2966 1 70 2969 1 70 2971 1 70 2972 1 70 2975 1 70 2977 1 70 2978 1 70 2980 1 70 2981 1 70 2982 1 70 2985 1 70 2987 1 70 2988 1 70 2990 1 70 2991 1 70 2992 1 70 2994 1 70 2995 1 70 2996 1 70 2997 1 70 3022 1 70 3025 1 70 3027 1 70 3028 1 70 3031 1 70 3033 1 70 3034 1 70 3036 1 70 3037 1 70 3038 1 70 3041 1 70 3043 1 70 3044 1 70 3046 1 70 3047 1 70 3048 1 70 3050 1 70 3051 1 70 3052 1 70 3053 1 70 3077 1 70 3079 1 70 3080 1 70 3082 1 70 3083 1 70 3084 1 70 3086 1 70 3087 1 70 3088 1 70 3089 1 70 3091 1 70 3092 1 70 3093 1 70 3094 1 70 3095 1 70 3107 1 70 3111 1 70 3114 1 70 3116 1 70 3117 1 70 3121 1 70 3124 1 70 3126 1 70 3127 1 70 3130 1 70 3132 1 70 3133 1 70 3135 1 70 3136 1 70 3137 1 70 3176 1 70 3179 1 70 3181 1 70 3182 1 70 3185 1 70 3187 1 70 3188 1 70 3190 1 70 3191 1 70 3192 1 70 3195 1 70 3197 1 70 3198 1 70 3200 1 70 3201 1 70 3202 1 70 3204 1 70 3205 1 70 3206 1 70 3207 1 70 3232 1 70 3235 1 70 3237 1 70 3238 1 70 3241 1 70 3243 1 70 3244 1 70 3246 1 70 3247 1 70 3248 1 70 3251 1 70 3253 1 70 3254 1 70 3256 1 70 3257 1 70 3258 1 70 3260 1 70 3261 1 70 3262 1 70 3263 1 70 3287 1 70 3289 1 70 3290 1 70 3292 1 70 3293 1 70 3294 1 70 3296 1 70 3297 1 70 3298 1 70 3299 1 70 3301 1 70 3302 1 70 3303 1 70 3304 1 70 3305 1 70 3316 1 70 3319 1 70 3321 1 70 3322 1 70 3325 1 70 3327 1 70 3328 1 70 3330 1 70 3331 1 70 3332 1 70 3335 1 70 3337 1 70 3338 1 70 3340 1 70 3341 1 70 3342 1 70 3344 1 70 3345 1 70 3346 1 70 3347 1 70 3371 1 70 3373 1 70 3374 1 70 3376 1 70 3377 1 70 3378 1 70 3380 1 70 3381 1 70 3382 1 70 3383 1 70 3385 1 70 3386 1 70 3387 1 70 3388 1 70 3389 1 70 3399 1 70 3401 1 70 3402 1 70 3404 1 70 3405 1 70 3406 1 70 3408 1 70 3409 1 70 3410 1 70 3411 1 70 3413 1 70 3414 1 70 3415 1 70 3416 1 70 3417 1 70 3426 1 70 3427 1 70 3428 1 70 3429 1 70 3430 1 70 3431 1 71 16 1 71 44 1 71 65 1 71 86 1 71 87 1 71 88 1 71 89 1 71 90 1 71 128 1 71 149 1 71 170 1 71 171 1 71 172 1 71 173 1 71 174 1 71 205 1 71 226 1 71 227 1 71 228 1 71 229 1 71 230 1 71 261 1 71 262 1 71 263 1 71 264 1 71 265 1 71 296 1 71 297 1 71 298 1 71 299 1 71 300 1 71 301 1 71 302 1 71 303 1 71 304 1 71 305 1 71 338 1 71 359 1 71 380 1 71 381 1 71 382 1 71 383 1 71 384 1 71 415 1 71 436 1 71 437 1 71 438 1 71 439 1 71 440 1 71 471 1 71 472 1 71 473 1 71 474 1 71 475 1 71 506 1 71 507 1 71 508 1 71 509 1 71 510 1 71 511 1 71 512 1 71 513 1 71 514 1 71 515 1 71 541 1 71 562 1 71 563 1 71 564 1 71 565 1 71 566 1 71 597 1 71 598 1 71 599 1 71 600 1 71 601 1 71 632 1 71 633 1 71 634 1 71 635 1 71 636 1 71 637 1 71 638 1 71 639 1 71 640 1 71 641 1 71 667 1 71 668 1 71 669 1 71 670 1 71 671 1 71 702 1 71 703 1 71 704 1 71 705 1 71 706 1 71 707 1 71 708 1 71 709 1 71 710 1 71 711 1 71 737 1 71 738 1 71 739 1 71 740 1 71 741 1 71 742 1 71 743 1 71 744 1 71 745 1 71 746 1 71 772 1 71 773 1 71 774 1 71 775 1 71 776 1 71 777 1 71 778 1 71 779 1 71 780 1 71 781 1 71 800 1 71 821 1 71 842 1 71 843 1 71 844 1 71 845 1 71 846 1 71 877 1 71 898 1 71 899 1 71 900 1 71 901 1 71 902 1 71 933 1 71 934 1 71 935 1 71 936 1 71 937 1 71 968 1 71 969 1 71 970 1 71 971 1 71 972 1 71 973 1 71 974 1 71 975 1 71 976 1 71 977 1 71 1003 1 71 1024 1 71 1025 1 71 1026 1 71 1027 1 71 1028 1 71 1059 1 71 1060 1 71 1061 1 71 1062 1 71 1063 1 71 1094 1 71 1095 1 71 1096 1 71 1097 1 71 1098 1 71 1099 1 71 1100 1 71 1101 1 71 1102 1 71 1103 1 71 1129 1 71 1130 1 71 1131 1 71 1132 1 71 1133 1 71 1164 1 71 1165 1 71 1166 1 71 1167 1 71 1168 1 71 1169 1 71 1170 1 71 1171 1 71 1172 1 71 1173 1 71 1199 1 71 1200 1 71 1201 1 71 1202 1 71 1203 1 71 1204 1 71 1205 1 71 1206 1 71 1207 1 71 1208 1 71 1234 1 71 1235 1 71 1236 1 71 1237 1 71 1238 1 71 1239 1 71 1240 1 71 1241 1 71 1242 1 71 1243 1 71 1255 1 71 1276 1 71 1277 1 71 1278 1 71 1279 1 71 1280 1 71 1311 1 71 1312 1 71 1313 1 71 1314 1 71 1315 1 71 1346 1 71 1347 1 71 1348 1 71 1349 1 71 1350 1 71 1351 1 71 1352 1 71 1353 1 71 1354 1 71 1355 1 71 1381 1 71 1382 1 71 1383 1 71 1384 1 71 1385 1 71 1416 1 71 1417 1 71 1418 1 71 1419 1 71 1420 1 71 1421 1 71 1422 1 71 1423 1 71 1424 1 71 1425 1 71 1451 1 71 1452 1 71 1453 1 71 1454 1 71 1455 1 71 1456 1 71 1457 1 71 1458 1 71 1459 1 71 1460 1 71 1486 1 71 1487 1 71 1488 1 71 1489 1 71 1490 1 71 1491 1 71 1492 1 71 1493 1 71 1494 1 71 1495 1 71 1507 1 71 1508 1 71 1509 1 71 1510 1 71 1511 1 71 1542 1 71 1543 1 71 1544 1 71 1545 1 71 1546 1 71 1547 1 71 1548 1 71 1549 1 71 1550 1 71 1551 1 71 1577 1 71 1578 1 71 1579 1 71 1580 1 71 1581 1 71 1582 1 71 1583 1 71 1584 1 71 1585 1 71 1586 1 71 1612 1 71 1613 1 71 1614 1 71 1615 1 71 1616 1 71 1617 1 71 1618 1 71 1619 1 71 1620 1 71 1621 1 71 1633 1 71 1634 1 71 1635 1 71 1636 1 71 1637 1 71 1638 1 71 1639 1 71 1640 1 71 1641 1 71 1642 1 71 1668 1 71 1669 1 71 1670 1 71 1671 1 71 1672 1 71 1673 1 71 1674 1 71 1675 1 71 1676 1 71 1677 1 71 1689 1 71 1690 1 71 1691 1 71 1692 1 71 1693 1 71 1694 1 71 1695 1 71 1696 1 71 1697 1 71 1698 1 71 1710 1 71 1711 1 71 1712 1 71 1713 1 71 1714 1 71 1724 1 71 1745 1 71 1766 1 71 1767 1 71 1768 1 71 1769 1 71 1770 1 71 1801 1 71 1822 1 71 1823 1 71 1824 1 71 1825 1 71 1826 1 71 1857 1 71 1858 1 71 1859 1 71 1860 1 71 1861 1 71 1892 1 71 1893 1 71 1894 1 71 1895 1 71 1896 1 71 1897 1 71 1898 1 71 1899 1 71 1900 1 71 1901 1 71 1927 1 71 1948 1 71 1949 1 71 1950 1 71 1951 1 71 1952 1 71 1983 1 71 1984 1 71 1985 1 71 1986 1 71 1987 1 71 2018 1 71 2019 1 71 2020 1 71 2021 1 71 2022 1 71 2023 1 71 2024 1 71 2025 1 71 2026 1 71 2027 1 71 2053 1 71 2054 1 71 2055 1 71 2056 1 71 2057 1 71 2088 1 71 2089 1 71 2090 1 71 2091 1 71 2092 1 71 2093 1 71 2094 1 71 2095 1 71 2096 1 71 2097 1 71 2123 1 71 2124 1 71 2125 1 71 2126 1 71 2127 1 71 2128 1 71 2129 1 71 2130 1 71 2131 1 71 2132 1 71 2158 1 71 2159 1 71 2160 1 71 2161 1 71 2162 1 71 2163 1 71 2164 1 71 2165 1 71 2166 1 71 2167 1 71 2179 1 71 2200 1 71 2201 1 71 2202 1 71 2203 1 71 2204 1 71 2235 1 71 2236 1 71 2237 1 71 2238 1 71 2239 1 71 2270 1 71 2271 1 71 2272 1 71 2273 1 71 2274 1 71 2275 1 71 2276 1 71 2277 1 71 2278 1 71 2279 1 71 2305 1 71 2306 1 71 2307 1 71 2308 1 71 2309 1 71 2340 1 71 2341 1 71 2342 1 71 2343 1 71 2344 1 71 2345 1 71 2346 1 71 2347 1 71 2348 1 71 2349 1 71 2375 1 71 2376 1 71 2377 1 71 2378 1 71 2379 1 71 2380 1 71 2381 1 71 2382 1 71 2383 1 71 2384 1 71 2410 1 71 2411 1 71 2412 1 71 2413 1 71 2414 1 71 2415 1 71 2416 1 71 2417 1 71 2418 1 71 2419 1 71 2431 1 71 2432 1 71 2433 1 71 2434 1 71 2435 1 71 2466 1 71 2467 1 71 2468 1 71 2469 1 71 2470 1 71 2471 1 71 2472 1 71 2473 1 71 2474 1 71 2475 1 71 2501 1 71 2502 1 71 2503 1 71 2504 1 71 2505 1 71 2506 1 71 2507 1 71 2508 1 71 2509 1 71 2510 1 71 2536 1 71 2537 1 71 2538 1 71 2539 1 71 2540 1 71 2541 1 71 2542 1 71 2543 1 71 2544 1 71 2545 1 71 2557 1 71 2558 1 71 2559 1 71 2560 1 71 2561 1 71 2562 1 71 2563 1 71 2564 1 71 2565 1 71 2566 1 71 2592 1 71 2593 1 71 2594 1 71 2595 1 71 2596 1 71 2597 1 71 2598 1 71 2599 1 71 2600 1 71 2601 1 71 2613 1 71 2614 1 71 2615 1 71 2616 1 71 2617 1 71 2618 1 71 2619 1 71 2620 1 71 2621 1 71 2622 1 71 2634 1 71 2635 1 71 2636 1 71 2637 1 71 2638 1 71 2641 1 71 2662 1 71 2663 1 71 2664 1 71 2665 1 71 2666 1 71 2697 1 71 2698 1 71 2699 1 71 2700 1 71 2701 1 71 2732 1 71 2733 1 71 2734 1 71 2735 1 71 2736 1 71 2737 1 71 2738 1 71 2739 1 71 2740 1 71 2741 1 71 2767 1 71 2768 1 71 2769 1 71 2770 1 71 2771 1 71 2802 1 71 2803 1 71 2804 1 71 2805 1 71 2806 1 71 2807 1 71 2808 1 71 2809 1 71 2810 1 71 2811 1 71 2837 1 71 2838 1 71 2839 1 71 2840 1 71 2841 1 71 2842 1 71 2843 1 71 2844 1 71 2845 1 71 2846 1 71 2872 1 71 2873 1 71 2874 1 71 2875 1 71 2876 1 71 2877 1 71 2878 1 71 2879 1 71 2880 1 71 2881 1 71 2893 1 71 2894 1 71 2895 1 71 2896 1 71 2897 1 71 2928 1 71 2929 1 71 2930 1 71 2931 1 71 2932 1 71 2933 1 71 2934 1 71 2935 1 71 2936 1 71 2937 1 71 2963 1 71 2964 1 71 2965 1 71 2966 1 71 2967 1 71 2968 1 71 2969 1 71 2970 1 71 2971 1 71 2972 1 71 2998 1 71 2999 1 71 3000 1 71 3001 1 71 3002 1 71 3003 1 71 3004 1 71 3005 1 71 3006 1 71 3007 1 71 3019 1 71 3020 1 71 3021 1 71 3022 1 71 3023 1 71 3024 1 71 3025 1 71 3026 1 71 3027 1 71 3028 1 71 3054 1 71 3055 1 71 3056 1 71 3057 1 71 3058 1 71 3059 1 71 3060 1 71 3061 1 71 3062 1 71 3063 1 71 3075 1 71 3076 1 71 3077 1 71 3078 1 71 3079 1 71 3080 1 71 3081 1 71 3082 1 71 3083 1 71 3084 1 71 3096 1 71 3097 1 71 3098 1 71 3099 1 71 3100 1 71 3103 1 71 3104 1 71 3105 1 71 3106 1 71 3107 1 71 3138 1 71 3139 1 71 3140 1 71 3141 1 71 3142 1 71 3143 1 71 3144 1 71 3145 1 71 3146 1 71 3147 1 71 3173 1 71 3174 1 71 3175 1 71 3176 1 71 3177 1 71 3178 1 71 3179 1 71 3180 1 71 3181 1 71 3182 1 71 3208 1 71 3209 1 71 3210 1 71 3211 1 71 3212 1 71 3213 1 71 3214 1 71 3215 1 71 3216 1 71 3217 1 71 3229 1 71 3230 1 71 3231 1 71 3232 1 71 3233 1 71 3234 1 71 3235 1 71 3236 1 71 3237 1 71 3238 1 71 3264 1 71 3265 1 71 3266 1 71 3267 1 71 3268 1 71 3269 1 71 3270 1 71 3271 1 71 3272 1 71 3273 1 71 3285 1 71 3286 1 71 3287 1 71 3288 1 71 3289 1 71 3290 1 71 3291 1 71 3292 1 71 3293 1 71 3294 1 71 3306 1 71 3307 1 71 3308 1 71 3309 1 71 3310 1 71 3313 1 71 3314 1 71 3315 1 71 3316 1 71 3317 1 71 3318 1 71 3319 1 71 3320 1 71 3321 1 71 3322 1 71 3348 1 71 3349 1 71 3350 1 71 3351 1 71 3352 1 71 3353 1 71 3354 1 71 3355 1 71 3356 1 71 3357 1 71 3369 1 71 3370 1 71 3371 1 71 3372 1 71 3373 1 71 3374 1 71 3375 1 71 3376 1 71 3377 1 71 3378 1 71 3390 1 71 3391 1 71 3392 1 71 3393 1 71 3394 1 71 3397 1 71 3398 1 71 3399 1 71 3400 1 71 3401 1 71 3402 1 71 3403 1 71 3404 1 71 3405 1 71 3406 1 71 3418 1 71 3419 1 71 3420 1 71 3421 1 71 3422 1 71 3425 1 71 3426 1 71 3427 1 71 3428 1 71 3429 1 71 3432 1 72 17 1 72 45 1 72 66 1 72 86 1 72 91 1 72 92 1 72 93 1 72 94 1 72 129 1 72 150 1 72 170 1 72 175 1 72 176 1 72 177 1 72 178 1 72 206 1 72 226 1 72 231 1 72 232 1 72 233 1 72 234 1 72 261 1 72 266 1 72 267 1 72 268 1 72 269 1 72 296 1 72 297 1 72 298 1 72 299 1 72 306 1 72 307 1 72 308 1 72 309 1 72 310 1 72 311 1 72 339 1 72 360 1 72 380 1 72 385 1 72 386 1 72 387 1 72 388 1 72 416 1 72 436 1 72 441 1 72 442 1 72 443 1 72 444 1 72 471 1 72 476 1 72 477 1 72 478 1 72 479 1 72 506 1 72 507 1 72 508 1 72 509 1 72 516 1 72 517 1 72 518 1 72 519 1 72 520 1 72 521 1 72 542 1 72 562 1 72 567 1 72 568 1 72 569 1 72 570 1 72 597 1 72 602 1 72 603 1 72 604 1 72 605 1 72 632 1 72 633 1 72 634 1 72 635 1 72 642 1 72 643 1 72 644 1 72 645 1 72 646 1 72 647 1 72 667 1 72 672 1 72 673 1 72 674 1 72 675 1 72 702 1 72 703 1 72 704 1 72 705 1 72 712 1 72 713 1 72 714 1 72 715 1 72 716 1 72 717 1 72 737 1 72 738 1 72 739 1 72 740 1 72 747 1 72 748 1 72 749 1 72 750 1 72 751 1 72 752 1 72 772 1 72 773 1 72 774 1 72 775 1 72 776 1 72 777 1 72 782 1 72 783 1 72 784 1 72 785 1 72 801 1 72 822 1 72 842 1 72 847 1 72 848 1 72 849 1 72 850 1 72 878 1 72 898 1 72 903 1 72 904 1 72 905 1 72 906 1 72 933 1 72 938 1 72 939 1 72 940 1 72 941 1 72 968 1 72 969 1 72 970 1 72 971 1 72 978 1 72 979 1 72 980 1 72 981 1 72 982 1 72 983 1 72 1004 1 72 1024 1 72 1029 1 72 1030 1 72 1031 1 72 1032 1 72 1059 1 72 1064 1 72 1065 1 72 1066 1 72 1067 1 72 1094 1 72 1095 1 72 1096 1 72 1097 1 72 1104 1 72 1105 1 72 1106 1 72 1107 1 72 1108 1 72 1109 1 72 1129 1 72 1134 1 72 1135 1 72 1136 1 72 1137 1 72 1164 1 72 1165 1 72 1166 1 72 1167 1 72 1174 1 72 1175 1 72 1176 1 72 1177 1 72 1178 1 72 1179 1 72 1199 1 72 1200 1 72 1201 1 72 1202 1 72 1209 1 72 1210 1 72 1211 1 72 1212 1 72 1213 1 72 1214 1 72 1234 1 72 1235 1 72 1236 1 72 1237 1 72 1238 1 72 1239 1 72 1244 1 72 1245 1 72 1246 1 72 1247 1 72 1256 1 72 1276 1 72 1281 1 72 1282 1 72 1283 1 72 1284 1 72 1311 1 72 1316 1 72 1317 1 72 1318 1 72 1319 1 72 1346 1 72 1347 1 72 1348 1 72 1349 1 72 1356 1 72 1357 1 72 1358 1 72 1359 1 72 1360 1 72 1361 1 72 1381 1 72 1386 1 72 1387 1 72 1388 1 72 1389 1 72 1416 1 72 1417 1 72 1418 1 72 1419 1 72 1426 1 72 1427 1 72 1428 1 72 1429 1 72 1430 1 72 1431 1 72 1451 1 72 1452 1 72 1453 1 72 1454 1 72 1461 1 72 1462 1 72 1463 1 72 1464 1 72 1465 1 72 1466 1 72 1486 1 72 1487 1 72 1488 1 72 1489 1 72 1490 1 72 1491 1 72 1496 1 72 1497 1 72 1498 1 72 1499 1 72 1507 1 72 1512 1 72 1513 1 72 1514 1 72 1515 1 72 1542 1 72 1543 1 72 1544 1 72 1545 1 72 1552 1 72 1553 1 72 1554 1 72 1555 1 72 1556 1 72 1557 1 72 1577 1 72 1578 1 72 1579 1 72 1580 1 72 1587 1 72 1588 1 72 1589 1 72 1590 1 72 1591 1 72 1592 1 72 1612 1 72 1613 1 72 1614 1 72 1615 1 72 1616 1 72 1617 1 72 1622 1 72 1623 1 72 1624 1 72 1625 1 72 1633 1 72 1634 1 72 1635 1 72 1636 1 72 1643 1 72 1644 1 72 1645 1 72 1646 1 72 1647 1 72 1648 1 72 1668 1 72 1669 1 72 1670 1 72 1671 1 72 1672 1 72 1673 1 72 1678 1 72 1679 1 72 1680 1 72 1681 1 72 1689 1 72 1690 1 72 1691 1 72 1692 1 72 1693 1 72 1694 1 72 1699 1 72 1700 1 72 1701 1 72 1702 1 72 1710 1 72 1711 1 72 1712 1 72 1713 1 72 1715 1 72 1725 1 72 1746 1 72 1766 1 72 1771 1 72 1772 1 72 1773 1 72 1774 1 72 1802 1 72 1822 1 72 1827 1 72 1828 1 72 1829 1 72 1830 1 72 1857 1 72 1862 1 72 1863 1 72 1864 1 72 1865 1 72 1892 1 72 1893 1 72 1894 1 72 1895 1 72 1902 1 72 1903 1 72 1904 1 72 1905 1 72 1906 1 72 1907 1 72 1928 1 72 1948 1 72 1953 1 72 1954 1 72 1955 1 72 1956 1 72 1983 1 72 1988 1 72 1989 1 72 1990 1 72 1991 1 72 2018 1 72 2019 1 72 2020 1 72 2021 1 72 2028 1 72 2029 1 72 2030 1 72 2031 1 72 2032 1 72 2033 1 72 2053 1 72 2058 1 72 2059 1 72 2060 1 72 2061 1 72 2088 1 72 2089 1 72 2090 1 72 2091 1 72 2098 1 72 2099 1 72 2100 1 72 2101 1 72 2102 1 72 2103 1 72 2123 1 72 2124 1 72 2125 1 72 2126 1 72 2133 1 72 2134 1 72 2135 1 72 2136 1 72 2137 1 72 2138 1 72 2158 1 72 2159 1 72 2160 1 72 2161 1 72 2162 1 72 2163 1 72 2168 1 72 2169 1 72 2170 1 72 2171 1 72 2180 1 72 2200 1 72 2205 1 72 2206 1 72 2207 1 72 2208 1 72 2235 1 72 2240 1 72 2241 1 72 2242 1 72 2243 1 72 2270 1 72 2271 1 72 2272 1 72 2273 1 72 2280 1 72 2281 1 72 2282 1 72 2283 1 72 2284 1 72 2285 1 72 2305 1 72 2310 1 72 2311 1 72 2312 1 72 2313 1 72 2340 1 72 2341 1 72 2342 1 72 2343 1 72 2350 1 72 2351 1 72 2352 1 72 2353 1 72 2354 1 72 2355 1 72 2375 1 72 2376 1 72 2377 1 72 2378 1 72 2385 1 72 2386 1 72 2387 1 72 2388 1 72 2389 1 72 2390 1 72 2410 1 72 2411 1 72 2412 1 72 2413 1 72 2414 1 72 2415 1 72 2420 1 72 2421 1 72 2422 1 72 2423 1 72 2431 1 72 2436 1 72 2437 1 72 2438 1 72 2439 1 72 2466 1 72 2467 1 72 2468 1 72 2469 1 72 2476 1 72 2477 1 72 2478 1 72 2479 1 72 2480 1 72 2481 1 72 2501 1 72 2502 1 72 2503 1 72 2504 1 72 2511 1 72 2512 1 72 2513 1 72 2514 1 72 2515 1 72 2516 1 72 2536 1 72 2537 1 72 2538 1 72 2539 1 72 2540 1 72 2541 1 72 2546 1 72 2547 1 72 2548 1 72 2549 1 72 2557 1 72 2558 1 72 2559 1 72 2560 1 72 2567 1 72 2568 1 72 2569 1 72 2570 1 72 2571 1 72 2572 1 72 2592 1 72 2593 1 72 2594 1 72 2595 1 72 2596 1 72 2597 1 72 2602 1 72 2603 1 72 2604 1 72 2605 1 72 2613 1 72 2614 1 72 2615 1 72 2616 1 72 2617 1 72 2618 1 72 2623 1 72 2624 1 72 2625 1 72 2626 1 72 2634 1 72 2635 1 72 2636 1 72 2637 1 72 2639 1 72 2642 1 72 2662 1 72 2667 1 72 2668 1 72 2669 1 72 2670 1 72 2697 1 72 2702 1 72 2703 1 72 2704 1 72 2705 1 72 2732 1 72 2733 1 72 2734 1 72 2735 1 72 2742 1 72 2743 1 72 2744 1 72 2745 1 72 2746 1 72 2747 1 72 2767 1 72 2772 1 72 2773 1 72 2774 1 72 2775 1 72 2802 1 72 2803 1 72 2804 1 72 2805 1 72 2812 1 72 2813 1 72 2814 1 72 2815 1 72 2816 1 72 2817 1 72 2837 1 72 2838 1 72 2839 1 72 2840 1 72 2847 1 72 2848 1 72 2849 1 72 2850 1 72 2851 1 72 2852 1 72 2872 1 72 2873 1 72 2874 1 72 2875 1 72 2876 1 72 2877 1 72 2882 1 72 2883 1 72 2884 1 72 2885 1 72 2893 1 72 2898 1 72 2899 1 72 2900 1 72 2901 1 72 2928 1 72 2929 1 72 2930 1 72 2931 1 72 2938 1 72 2939 1 72 2940 1 72 2941 1 72 2942 1 72 2943 1 72 2963 1 72 2964 1 72 2965 1 72 2966 1 72 2973 1 72 2974 1 72 2975 1 72 2976 1 72 2977 1 72 2978 1 72 2998 1 72 2999 1 72 3000 1 72 3001 1 72 3002 1 72 3003 1 72 3008 1 72 3009 1 72 3010 1 72 3011 1 72 3019 1 72 3020 1 72 3021 1 72 3022 1 72 3029 1 72 3030 1 72 3031 1 72 3032 1 72 3033 1 72 3034 1 72 3054 1 72 3055 1 72 3056 1 72 3057 1 72 3058 1 72 3059 1 72 3064 1 72 3065 1 72 3066 1 72 3067 1 72 3075 1 72 3076 1 72 3077 1 72 3078 1 72 3079 1 72 3080 1 72 3085 1 72 3086 1 72 3087 1 72 3088 1 72 3096 1 72 3097 1 72 3098 1 72 3099 1 72 3101 1 72 3103 1 72 3108 1 72 3109 1 72 3110 1 72 3111 1 72 3138 1 72 3139 1 72 3140 1 72 3141 1 72 3148 1 72 3149 1 72 3150 1 72 3151 1 72 3152 1 72 3153 1 72 3173 1 72 3174 1 72 3175 1 72 3176 1 72 3183 1 72 3184 1 72 3185 1 72 3186 1 72 3187 1 72 3188 1 72 3208 1 72 3209 1 72 3210 1 72 3211 1 72 3212 1 72 3213 1 72 3218 1 72 3219 1 72 3220 1 72 3221 1 72 3229 1 72 3230 1 72 3231 1 72 3232 1 72 3239 1 72 3240 1 72 3241 1 72 3242 1 72 3243 1 72 3244 1 72 3264 1 72 3265 1 72 3266 1 72 3267 1 72 3268 1 72 3269 1 72 3274 1 72 3275 1 72 3276 1 72 3277 1 72 3285 1 72 3286 1 72 3287 1 72 3288 1 72 3289 1 72 3290 1 72 3295 1 72 3296 1 72 3297 1 72 3298 1 72 3306 1 72 3307 1 72 3308 1 72 3309 1 72 3311 1 72 3313 1 72 3314 1 72 3315 1 72 3316 1 72 3323 1 72 3324 1 72 3325 1 72 3326 1 72 3327 1 72 3328 1 72 3348 1 72 3349 1 72 3350 1 72 3351 1 72 3352 1 72 3353 1 72 3358 1 72 3359 1 72 3360 1 72 3361 1 72 3369 1 72 3370 1 72 3371 1 72 3372 1 72 3373 1 72 3374 1 72 3379 1 72 3380 1 72 3381 1 72 3382 1 72 3390 1 72 3391 1 72 3392 1 72 3393 1 72 3395 1 72 3397 1 72 3398 1 72 3399 1 72 3400 1 72 3401 1 72 3402 1 72 3407 1 72 3408 1 72 3409 1 72 3410 1 72 3418 1 72 3419 1 72 3420 1 72 3421 1 72 3423 1 72 3425 1 72 3426 1 72 3427 1 72 3428 1 72 3430 1 72 3432 1 73 18 1 73 46 1 73 67 1 73 87 1 73 91 1 73 95 1 73 96 1 73 97 1 73 130 1 73 151 1 73 171 1 73 175 1 73 179 1 73 180 1 73 181 1 73 207 1 73 227 1 73 231 1 73 235 1 73 236 1 73 237 1 73 262 1 73 266 1 73 270 1 73 271 1 73 272 1 73 296 1 73 300 1 73 301 1 73 302 1 73 306 1 73 307 1 73 308 1 73 312 1 73 313 1 73 314 1 73 340 1 73 361 1 73 381 1 73 385 1 73 389 1 73 390 1 73 391 1 73 417 1 73 437 1 73 441 1 73 445 1 73 446 1 73 447 1 73 472 1 73 476 1 73 480 1 73 481 1 73 482 1 73 506 1 73 510 1 73 511 1 73 512 1 73 516 1 73 517 1 73 518 1 73 522 1 73 523 1 73 524 1 73 543 1 73 563 1 73 567 1 73 571 1 73 572 1 73 573 1 73 598 1 73 602 1 73 606 1 73 607 1 73 608 1 73 632 1 73 636 1 73 637 1 73 638 1 73 642 1 73 643 1 73 644 1 73 648 1 73 649 1 73 650 1 73 668 1 73 672 1 73 676 1 73 677 1 73 678 1 73 702 1 73 706 1 73 707 1 73 708 1 73 712 1 73 713 1 73 714 1 73 718 1 73 719 1 73 720 1 73 737 1 73 741 1 73 742 1 73 743 1 73 747 1 73 748 1 73 749 1 73 753 1 73 754 1 73 755 1 73 772 1 73 773 1 73 774 1 73 778 1 73 779 1 73 780 1 73 782 1 73 783 1 73 784 1 73 786 1 73 802 1 73 823 1 73 843 1 73 847 1 73 851 1 73 852 1 73 853 1 73 879 1 73 899 1 73 903 1 73 907 1 73 908 1 73 909 1 73 934 1 73 938 1 73 942 1 73 943 1 73 944 1 73 968 1 73 972 1 73 973 1 73 974 1 73 978 1 73 979 1 73 980 1 73 984 1 73 985 1 73 986 1 73 1005 1 73 1025 1 73 1029 1 73 1033 1 73 1034 1 73 1035 1 73 1060 1 73 1064 1 73 1068 1 73 1069 1 73 1070 1 73 1094 1 73 1098 1 73 1099 1 73 1100 1 73 1104 1 73 1105 1 73 1106 1 73 1110 1 73 1111 1 73 1112 1 73 1130 1 73 1134 1 73 1138 1 73 1139 1 73 1140 1 73 1164 1 73 1168 1 73 1169 1 73 1170 1 73 1174 1 73 1175 1 73 1176 1 73 1180 1 73 1181 1 73 1182 1 73 1199 1 73 1203 1 73 1204 1 73 1205 1 73 1209 1 73 1210 1 73 1211 1 73 1215 1 73 1216 1 73 1217 1 73 1234 1 73 1235 1 73 1236 1 73 1240 1 73 1241 1 73 1242 1 73 1244 1 73 1245 1 73 1246 1 73 1248 1 73 1257 1 73 1277 1 73 1281 1 73 1285 1 73 1286 1 73 1287 1 73 1312 1 73 1316 1 73 1320 1 73 1321 1 73 1322 1 73 1346 1 73 1350 1 73 1351 1 73 1352 1 73 1356 1 73 1357 1 73 1358 1 73 1362 1 73 1363 1 73 1364 1 73 1382 1 73 1386 1 73 1390 1 73 1391 1 73 1392 1 73 1416 1 73 1420 1 73 1421 1 73 1422 1 73 1426 1 73 1427 1 73 1428 1 73 1432 1 73 1433 1 73 1434 1 73 1451 1 73 1455 1 73 1456 1 73 1457 1 73 1461 1 73 1462 1 73 1463 1 73 1467 1 73 1468 1 73 1469 1 73 1486 1 73 1487 1 73 1488 1 73 1492 1 73 1493 1 73 1494 1 73 1496 1 73 1497 1 73 1498 1 73 1500 1 73 1508 1 73 1512 1 73 1516 1 73 1517 1 73 1518 1 73 1542 1 73 1546 1 73 1547 1 73 1548 1 73 1552 1 73 1553 1 73 1554 1 73 1558 1 73 1559 1 73 1560 1 73 1577 1 73 1581 1 73 1582 1 73 1583 1 73 1587 1 73 1588 1 73 1589 1 73 1593 1 73 1594 1 73 1595 1 73 1612 1 73 1613 1 73 1614 1 73 1618 1 73 1619 1 73 1620 1 73 1622 1 73 1623 1 73 1624 1 73 1626 1 73 1633 1 73 1637 1 73 1638 1 73 1639 1 73 1643 1 73 1644 1 73 1645 1 73 1649 1 73 1650 1 73 1651 1 73 1668 1 73 1669 1 73 1670 1 73 1674 1 73 1675 1 73 1676 1 73 1678 1 73 1679 1 73 1680 1 73 1682 1 73 1689 1 73 1690 1 73 1691 1 73 1695 1 73 1696 1 73 1697 1 73 1699 1 73 1700 1 73 1701 1 73 1703 1 73 1710 1 73 1711 1 73 1712 1 73 1714 1 73 1715 1 73 1726 1 73 1747 1 73 1767 1 73 1771 1 73 1775 1 73 1776 1 73 1777 1 73 1803 1 73 1823 1 73 1827 1 73 1831 1 73 1832 1 73 1833 1 73 1858 1 73 1862 1 73 1866 1 73 1867 1 73 1868 1 73 1892 1 73 1896 1 73 1897 1 73 1898 1 73 1902 1 73 1903 1 73 1904 1 73 1908 1 73 1909 1 73 1910 1 73 1929 1 73 1949 1 73 1953 1 73 1957 1 73 1958 1 73 1959 1 73 1984 1 73 1988 1 73 1992 1 73 1993 1 73 1994 1 73 2018 1 73 2022 1 73 2023 1 73 2024 1 73 2028 1 73 2029 1 73 2030 1 73 2034 1 73 2035 1 73 2036 1 73 2054 1 73 2058 1 73 2062 1 73 2063 1 73 2064 1 73 2088 1 73 2092 1 73 2093 1 73 2094 1 73 2098 1 73 2099 1 73 2100 1 73 2104 1 73 2105 1 73 2106 1 73 2123 1 73 2127 1 73 2128 1 73 2129 1 73 2133 1 73 2134 1 73 2135 1 73 2139 1 73 2140 1 73 2141 1 73 2158 1 73 2159 1 73 2160 1 73 2164 1 73 2165 1 73 2166 1 73 2168 1 73 2169 1 73 2170 1 73 2172 1 73 2181 1 73 2201 1 73 2205 1 73 2209 1 73 2210 1 73 2211 1 73 2236 1 73 2240 1 73 2244 1 73 2245 1 73 2246 1 73 2270 1 73 2274 1 73 2275 1 73 2276 1 73 2280 1 73 2281 1 73 2282 1 73 2286 1 73 2287 1 73 2288 1 73 2306 1 73 2310 1 73 2314 1 73 2315 1 73 2316 1 73 2340 1 73 2344 1 73 2345 1 73 2346 1 73 2350 1 73 2351 1 73 2352 1 73 2356 1 73 2357 1 73 2358 1 73 2375 1 73 2379 1 73 2380 1 73 2381 1 73 2385 1 73 2386 1 73 2387 1 73 2391 1 73 2392 1 73 2393 1 73 2410 1 73 2411 1 73 2412 1 73 2416 1 73 2417 1 73 2418 1 73 2420 1 73 2421 1 73 2422 1 73 2424 1 73 2432 1 73 2436 1 73 2440 1 73 2441 1 73 2442 1 73 2466 1 73 2470 1 73 2471 1 73 2472 1 73 2476 1 73 2477 1 73 2478 1 73 2482 1 73 2483 1 73 2484 1 73 2501 1 73 2505 1 73 2506 1 73 2507 1 73 2511 1 73 2512 1 73 2513 1 73 2517 1 73 2518 1 73 2519 1 73 2536 1 73 2537 1 73 2538 1 73 2542 1 73 2543 1 73 2544 1 73 2546 1 73 2547 1 73 2548 1 73 2550 1 73 2557 1 73 2561 1 73 2562 1 73 2563 1 73 2567 1 73 2568 1 73 2569 1 73 2573 1 73 2574 1 73 2575 1 73 2592 1 73 2593 1 73 2594 1 73 2598 1 73 2599 1 73 2600 1 73 2602 1 73 2603 1 73 2604 1 73 2606 1 73 2613 1 73 2614 1 73 2615 1 73 2619 1 73 2620 1 73 2621 1 73 2623 1 73 2624 1 73 2625 1 73 2627 1 73 2634 1 73 2635 1 73 2636 1 73 2638 1 73 2639 1 73 2643 1 73 2663 1 73 2667 1 73 2671 1 73 2672 1 73 2673 1 73 2698 1 73 2702 1 73 2706 1 73 2707 1 73 2708 1 73 2732 1 73 2736 1 73 2737 1 73 2738 1 73 2742 1 73 2743 1 73 2744 1 73 2748 1 73 2749 1 73 2750 1 73 2768 1 73 2772 1 73 2776 1 73 2777 1 73 2778 1 73 2802 1 73 2806 1 73 2807 1 73 2808 1 73 2812 1 73 2813 1 73 2814 1 73 2818 1 73 2819 1 73 2820 1 73 2837 1 73 2841 1 73 2842 1 73 2843 1 73 2847 1 73 2848 1 73 2849 1 73 2853 1 73 2854 1 73 2855 1 73 2872 1 73 2873 1 73 2874 1 73 2878 1 73 2879 1 73 2880 1 73 2882 1 73 2883 1 73 2884 1 73 2886 1 73 2894 1 73 2898 1 73 2902 1 73 2903 1 73 2904 1 73 2928 1 73 2932 1 73 2933 1 73 2934 1 73 2938 1 73 2939 1 73 2940 1 73 2944 1 73 2945 1 73 2946 1 73 2963 1 73 2967 1 73 2968 1 73 2969 1 73 2973 1 73 2974 1 73 2975 1 73 2979 1 73 2980 1 73 2981 1 73 2998 1 73 2999 1 73 3000 1 73 3004 1 73 3005 1 73 3006 1 73 3008 1 73 3009 1 73 3010 1 73 3012 1 73 3019 1 73 3023 1 73 3024 1 73 3025 1 73 3029 1 73 3030 1 73 3031 1 73 3035 1 73 3036 1 73 3037 1 73 3054 1 73 3055 1 73 3056 1 73 3060 1 73 3061 1 73 3062 1 73 3064 1 73 3065 1 73 3066 1 73 3068 1 73 3075 1 73 3076 1 73 3077 1 73 3081 1 73 3082 1 73 3083 1 73 3085 1 73 3086 1 73 3087 1 73 3089 1 73 3096 1 73 3097 1 73 3098 1 73 3100 1 73 3101 1 73 3104 1 73 3108 1 73 3112 1 73 3113 1 73 3114 1 73 3138 1 73 3142 1 73 3143 1 73 3144 1 73 3148 1 73 3149 1 73 3150 1 73 3154 1 73 3155 1 73 3156 1 73 3173 1 73 3177 1 73 3178 1 73 3179 1 73 3183 1 73 3184 1 73 3185 1 73 3189 1 73 3190 1 73 3191 1 73 3208 1 73 3209 1 73 3210 1 73 3214 1 73 3215 1 73 3216 1 73 3218 1 73 3219 1 73 3220 1 73 3222 1 73 3229 1 73 3233 1 73 3234 1 73 3235 1 73 3239 1 73 3240 1 73 3241 1 73 3245 1 73 3246 1 73 3247 1 73 3264 1 73 3265 1 73 3266 1 73 3270 1 73 3271 1 73 3272 1 73 3274 1 73 3275 1 73 3276 1 73 3278 1 73 3285 1 73 3286 1 73 3287 1 73 3291 1 73 3292 1 73 3293 1 73 3295 1 73 3296 1 73 3297 1 73 3299 1 73 3306 1 73 3307 1 73 3308 1 73 3310 1 73 3311 1 73 3313 1 73 3317 1 73 3318 1 73 3319 1 73 3323 1 73 3324 1 73 3325 1 73 3329 1 73 3330 1 73 3331 1 73 3348 1 73 3349 1 73 3350 1 73 3354 1 73 3355 1 73 3356 1 73 3358 1 73 3359 1 73 3360 1 73 3362 1 73 3369 1 73 3370 1 73 3371 1 73 3375 1 73 3376 1 73 3377 1 73 3379 1 73 3380 1 73 3381 1 73 3383 1 73 3390 1 73 3391 1 73 3392 1 73 3394 1 73 3395 1 73 3397 1 73 3398 1 73 3399 1 73 3403 1 73 3404 1 73 3405 1 73 3407 1 73 3408 1 73 3409 1 73 3411 1 73 3418 1 73 3419 1 73 3420 1 73 3422 1 73 3423 1 73 3425 1 73 3426 1 73 3427 1 73 3429 1 73 3430 1 73 3432 1 74 19 1 74 47 1 74 68 1 74 88 1 74 92 1 74 95 1 74 98 1 74 99 1 74 131 1 74 152 1 74 172 1 74 176 1 74 179 1 74 182 1 74 183 1 74 208 1 74 228 1 74 232 1 74 235 1 74 238 1 74 239 1 74 263 1 74 267 1 74 270 1 74 273 1 74 274 1 74 297 1 74 300 1 74 303 1 74 304 1 74 306 1 74 309 1 74 310 1 74 312 1 74 313 1 74 315 1 74 341 1 74 362 1 74 382 1 74 386 1 74 389 1 74 392 1 74 393 1 74 418 1 74 438 1 74 442 1 74 445 1 74 448 1 74 449 1 74 473 1 74 477 1 74 480 1 74 483 1 74 484 1 74 507 1 74 510 1 74 513 1 74 514 1 74 516 1 74 519 1 74 520 1 74 522 1 74 523 1 74 525 1 74 544 1 74 564 1 74 568 1 74 571 1 74 574 1 74 575 1 74 599 1 74 603 1 74 606 1 74 609 1 74 610 1 74 633 1 74 636 1 74 639 1 74 640 1 74 642 1 74 645 1 74 646 1 74 648 1 74 649 1 74 651 1 74 669 1 74 673 1 74 676 1 74 679 1 74 680 1 74 703 1 74 706 1 74 709 1 74 710 1 74 712 1 74 715 1 74 716 1 74 718 1 74 719 1 74 721 1 74 738 1 74 741 1 74 744 1 74 745 1 74 747 1 74 750 1 74 751 1 74 753 1 74 754 1 74 756 1 74 772 1 74 775 1 74 776 1 74 778 1 74 779 1 74 781 1 74 782 1 74 783 1 74 785 1 74 786 1 74 803 1 74 824 1 74 844 1 74 848 1 74 851 1 74 854 1 74 855 1 74 880 1 74 900 1 74 904 1 74 907 1 74 910 1 74 911 1 74 935 1 74 939 1 74 942 1 74 945 1 74 946 1 74 969 1 74 972 1 74 975 1 74 976 1 74 978 1 74 981 1 74 982 1 74 984 1 74 985 1 74 987 1 74 1006 1 74 1026 1 74 1030 1 74 1033 1 74 1036 1 74 1037 1 74 1061 1 74 1065 1 74 1068 1 74 1071 1 74 1072 1 74 1095 1 74 1098 1 74 1101 1 74 1102 1 74 1104 1 74 1107 1 74 1108 1 74 1110 1 74 1111 1 74 1113 1 74 1131 1 74 1135 1 74 1138 1 74 1141 1 74 1142 1 74 1165 1 74 1168 1 74 1171 1 74 1172 1 74 1174 1 74 1177 1 74 1178 1 74 1180 1 74 1181 1 74 1183 1 74 1200 1 74 1203 1 74 1206 1 74 1207 1 74 1209 1 74 1212 1 74 1213 1 74 1215 1 74 1216 1 74 1218 1 74 1234 1 74 1237 1 74 1238 1 74 1240 1 74 1241 1 74 1243 1 74 1244 1 74 1245 1 74 1247 1 74 1248 1 74 1258 1 74 1278 1 74 1282 1 74 1285 1 74 1288 1 74 1289 1 74 1313 1 74 1317 1 74 1320 1 74 1323 1 74 1324 1 74 1347 1 74 1350 1 74 1353 1 74 1354 1 74 1356 1 74 1359 1 74 1360 1 74 1362 1 74 1363 1 74 1365 1 74 1383 1 74 1387 1 74 1390 1 74 1393 1 74 1394 1 74 1417 1 74 1420 1 74 1423 1 74 1424 1 74 1426 1 74 1429 1 74 1430 1 74 1432 1 74 1433 1 74 1435 1 74 1452 1 74 1455 1 74 1458 1 74 1459 1 74 1461 1 74 1464 1 74 1465 1 74 1467 1 74 1468 1 74 1470 1 74 1486 1 74 1489 1 74 1490 1 74 1492 1 74 1493 1 74 1495 1 74 1496 1 74 1497 1 74 1499 1 74 1500 1 74 1509 1 74 1513 1 74 1516 1 74 1519 1 74 1520 1 74 1543 1 74 1546 1 74 1549 1 74 1550 1 74 1552 1 74 1555 1 74 1556 1 74 1558 1 74 1559 1 74 1561 1 74 1578 1 74 1581 1 74 1584 1 74 1585 1 74 1587 1 74 1590 1 74 1591 1 74 1593 1 74 1594 1 74 1596 1 74 1612 1 74 1615 1 74 1616 1 74 1618 1 74 1619 1 74 1621 1 74 1622 1 74 1623 1 74 1625 1 74 1626 1 74 1634 1 74 1637 1 74 1640 1 74 1641 1 74 1643 1 74 1646 1 74 1647 1 74 1649 1 74 1650 1 74 1652 1 74 1668 1 74 1671 1 74 1672 1 74 1674 1 74 1675 1 74 1677 1 74 1678 1 74 1679 1 74 1681 1 74 1682 1 74 1689 1 74 1692 1 74 1693 1 74 1695 1 74 1696 1 74 1698 1 74 1699 1 74 1700 1 74 1702 1 74 1703 1 74 1710 1 74 1711 1 74 1713 1 74 1714 1 74 1715 1 74 1727 1 74 1748 1 74 1768 1 74 1772 1 74 1775 1 74 1778 1 74 1779 1 74 1804 1 74 1824 1 74 1828 1 74 1831 1 74 1834 1 74 1835 1 74 1859 1 74 1863 1 74 1866 1 74 1869 1 74 1870 1 74 1893 1 74 1896 1 74 1899 1 74 1900 1 74 1902 1 74 1905 1 74 1906 1 74 1908 1 74 1909 1 74 1911 1 74 1930 1 74 1950 1 74 1954 1 74 1957 1 74 1960 1 74 1961 1 74 1985 1 74 1989 1 74 1992 1 74 1995 1 74 1996 1 74 2019 1 74 2022 1 74 2025 1 74 2026 1 74 2028 1 74 2031 1 74 2032 1 74 2034 1 74 2035 1 74 2037 1 74 2055 1 74 2059 1 74 2062 1 74 2065 1 74 2066 1 74 2089 1 74 2092 1 74 2095 1 74 2096 1 74 2098 1 74 2101 1 74 2102 1 74 2104 1 74 2105 1 74 2107 1 74 2124 1 74 2127 1 74 2130 1 74 2131 1 74 2133 1 74 2136 1 74 2137 1 74 2139 1 74 2140 1 74 2142 1 74 2158 1 74 2161 1 74 2162 1 74 2164 1 74 2165 1 74 2167 1 74 2168 1 74 2169 1 74 2171 1 74 2172 1 74 2182 1 74 2202 1 74 2206 1 74 2209 1 74 2212 1 74 2213 1 74 2237 1 74 2241 1 74 2244 1 74 2247 1 74 2248 1 74 2271 1 74 2274 1 74 2277 1 74 2278 1 74 2280 1 74 2283 1 74 2284 1 74 2286 1 74 2287 1 74 2289 1 74 2307 1 74 2311 1 74 2314 1 74 2317 1 74 2318 1 74 2341 1 74 2344 1 74 2347 1 74 2348 1 74 2350 1 74 2353 1 74 2354 1 74 2356 1 74 2357 1 74 2359 1 74 2376 1 74 2379 1 74 2382 1 74 2383 1 74 2385 1 74 2388 1 74 2389 1 74 2391 1 74 2392 1 74 2394 1 74 2410 1 74 2413 1 74 2414 1 74 2416 1 74 2417 1 74 2419 1 74 2420 1 74 2421 1 74 2423 1 74 2424 1 74 2433 1 74 2437 1 74 2440 1 74 2443 1 74 2444 1 74 2467 1 74 2470 1 74 2473 1 74 2474 1 74 2476 1 74 2479 1 74 2480 1 74 2482 1 74 2483 1 74 2485 1 74 2502 1 74 2505 1 74 2508 1 74 2509 1 74 2511 1 74 2514 1 74 2515 1 74 2517 1 74 2518 1 74 2520 1 74 2536 1 74 2539 1 74 2540 1 74 2542 1 74 2543 1 74 2545 1 74 2546 1 74 2547 1 74 2549 1 74 2550 1 74 2558 1 74 2561 1 74 2564 1 74 2565 1 74 2567 1 74 2570 1 74 2571 1 74 2573 1 74 2574 1 74 2576 1 74 2592 1 74 2595 1 74 2596 1 74 2598 1 74 2599 1 74 2601 1 74 2602 1 74 2603 1 74 2605 1 74 2606 1 74 2613 1 74 2616 1 74 2617 1 74 2619 1 74 2620 1 74 2622 1 74 2623 1 74 2624 1 74 2626 1 74 2627 1 74 2634 1 74 2635 1 74 2637 1 74 2638 1 74 2639 1 74 2644 1 74 2664 1 74 2668 1 74 2671 1 74 2674 1 74 2675 1 74 2699 1 74 2703 1 74 2706 1 74 2709 1 74 2710 1 74 2733 1 74 2736 1 74 2739 1 74 2740 1 74 2742 1 74 2745 1 74 2746 1 74 2748 1 74 2749 1 74 2751 1 74 2769 1 74 2773 1 74 2776 1 74 2779 1 74 2780 1 74 2803 1 74 2806 1 74 2809 1 74 2810 1 74 2812 1 74 2815 1 74 2816 1 74 2818 1 74 2819 1 74 2821 1 74 2838 1 74 2841 1 74 2844 1 74 2845 1 74 2847 1 74 2850 1 74 2851 1 74 2853 1 74 2854 1 74 2856 1 74 2872 1 74 2875 1 74 2876 1 74 2878 1 74 2879 1 74 2881 1 74 2882 1 74 2883 1 74 2885 1 74 2886 1 74 2895 1 74 2899 1 74 2902 1 74 2905 1 74 2906 1 74 2929 1 74 2932 1 74 2935 1 74 2936 1 74 2938 1 74 2941 1 74 2942 1 74 2944 1 74 2945 1 74 2947 1 74 2964 1 74 2967 1 74 2970 1 74 2971 1 74 2973 1 74 2976 1 74 2977 1 74 2979 1 74 2980 1 74 2982 1 74 2998 1 74 3001 1 74 3002 1 74 3004 1 74 3005 1 74 3007 1 74 3008 1 74 3009 1 74 3011 1 74 3012 1 74 3020 1 74 3023 1 74 3026 1 74 3027 1 74 3029 1 74 3032 1 74 3033 1 74 3035 1 74 3036 1 74 3038 1 74 3054 1 74 3057 1 74 3058 1 74 3060 1 74 3061 1 74 3063 1 74 3064 1 74 3065 1 74 3067 1 74 3068 1 74 3075 1 74 3078 1 74 3079 1 74 3081 1 74 3082 1 74 3084 1 74 3085 1 74 3086 1 74 3088 1 74 3089 1 74 3096 1 74 3097 1 74 3099 1 74 3100 1 74 3101 1 74 3105 1 74 3109 1 74 3112 1 74 3115 1 74 3116 1 74 3139 1 74 3142 1 74 3145 1 74 3146 1 74 3148 1 74 3151 1 74 3152 1 74 3154 1 74 3155 1 74 3157 1 74 3174 1 74 3177 1 74 3180 1 74 3181 1 74 3183 1 74 3186 1 74 3187 1 74 3189 1 74 3190 1 74 3192 1 74 3208 1 74 3211 1 74 3212 1 74 3214 1 74 3215 1 74 3217 1 74 3218 1 74 3219 1 74 3221 1 74 3222 1 74 3230 1 74 3233 1 74 3236 1 74 3237 1 74 3239 1 74 3242 1 74 3243 1 74 3245 1 74 3246 1 74 3248 1 74 3264 1 74 3267 1 74 3268 1 74 3270 1 74 3271 1 74 3273 1 74 3274 1 74 3275 1 74 3277 1 74 3278 1 74 3285 1 74 3288 1 74 3289 1 74 3291 1 74 3292 1 74 3294 1 74 3295 1 74 3296 1 74 3298 1 74 3299 1 74 3306 1 74 3307 1 74 3309 1 74 3310 1 74 3311 1 74 3314 1 74 3317 1 74 3320 1 74 3321 1 74 3323 1 74 3326 1 74 3327 1 74 3329 1 74 3330 1 74 3332 1 74 3348 1 74 3351 1 74 3352 1 74 3354 1 74 3355 1 74 3357 1 74 3358 1 74 3359 1 74 3361 1 74 3362 1 74 3369 1 74 3372 1 74 3373 1 74 3375 1 74 3376 1 74 3378 1 74 3379 1 74 3380 1 74 3382 1 74 3383 1 74 3390 1 74 3391 1 74 3393 1 74 3394 1 74 3395 1 74 3397 1 74 3400 1 74 3401 1 74 3403 1 74 3404 1 74 3406 1 74 3407 1 74 3408 1 74 3410 1 74 3411 1 74 3418 1 74 3419 1 74 3421 1 74 3422 1 74 3423 1 74 3425 1 74 3426 1 74 3428 1 74 3429 1 74 3430 1 74 3432 1 75 20 1 75 48 1 75 69 1 75 89 1 75 93 1 75 96 1 75 98 1 75 100 1 75 132 1 75 153 1 75 173 1 75 177 1 75 180 1 75 182 1 75 184 1 75 209 1 75 229 1 75 233 1 75 236 1 75 238 1 75 240 1 75 264 1 75 268 1 75 271 1 75 273 1 75 275 1 75 298 1 75 301 1 75 303 1 75 305 1 75 307 1 75 309 1 75 311 1 75 312 1 75 314 1 75 315 1 75 342 1 75 363 1 75 383 1 75 387 1 75 390 1 75 392 1 75 394 1 75 419 1 75 439 1 75 443 1 75 446 1 75 448 1 75 450 1 75 474 1 75 478 1 75 481 1 75 483 1 75 485 1 75 508 1 75 511 1 75 513 1 75 515 1 75 517 1 75 519 1 75 521 1 75 522 1 75 524 1 75 525 1 75 545 1 75 565 1 75 569 1 75 572 1 75 574 1 75 576 1 75 600 1 75 604 1 75 607 1 75 609 1 75 611 1 75 634 1 75 637 1 75 639 1 75 641 1 75 643 1 75 645 1 75 647 1 75 648 1 75 650 1 75 651 1 75 670 1 75 674 1 75 677 1 75 679 1 75 681 1 75 704 1 75 707 1 75 709 1 75 711 1 75 713 1 75 715 1 75 717 1 75 718 1 75 720 1 75 721 1 75 739 1 75 742 1 75 744 1 75 746 1 75 748 1 75 750 1 75 752 1 75 753 1 75 755 1 75 756 1 75 773 1 75 775 1 75 777 1 75 778 1 75 780 1 75 781 1 75 782 1 75 784 1 75 785 1 75 786 1 75 804 1 75 825 1 75 845 1 75 849 1 75 852 1 75 854 1 75 856 1 75 881 1 75 901 1 75 905 1 75 908 1 75 910 1 75 912 1 75 936 1 75 940 1 75 943 1 75 945 1 75 947 1 75 970 1 75 973 1 75 975 1 75 977 1 75 979 1 75 981 1 75 983 1 75 984 1 75 986 1 75 987 1 75 1007 1 75 1027 1 75 1031 1 75 1034 1 75 1036 1 75 1038 1 75 1062 1 75 1066 1 75 1069 1 75 1071 1 75 1073 1 75 1096 1 75 1099 1 75 1101 1 75 1103 1 75 1105 1 75 1107 1 75 1109 1 75 1110 1 75 1112 1 75 1113 1 75 1132 1 75 1136 1 75 1139 1 75 1141 1 75 1143 1 75 1166 1 75 1169 1 75 1171 1 75 1173 1 75 1175 1 75 1177 1 75 1179 1 75 1180 1 75 1182 1 75 1183 1 75 1201 1 75 1204 1 75 1206 1 75 1208 1 75 1210 1 75 1212 1 75 1214 1 75 1215 1 75 1217 1 75 1218 1 75 1235 1 75 1237 1 75 1239 1 75 1240 1 75 1242 1 75 1243 1 75 1244 1 75 1246 1 75 1247 1 75 1248 1 75 1259 1 75 1279 1 75 1283 1 75 1286 1 75 1288 1 75 1290 1 75 1314 1 75 1318 1 75 1321 1 75 1323 1 75 1325 1 75 1348 1 75 1351 1 75 1353 1 75 1355 1 75 1357 1 75 1359 1 75 1361 1 75 1362 1 75 1364 1 75 1365 1 75 1384 1 75 1388 1 75 1391 1 75 1393 1 75 1395 1 75 1418 1 75 1421 1 75 1423 1 75 1425 1 75 1427 1 75 1429 1 75 1431 1 75 1432 1 75 1434 1 75 1435 1 75 1453 1 75 1456 1 75 1458 1 75 1460 1 75 1462 1 75 1464 1 75 1466 1 75 1467 1 75 1469 1 75 1470 1 75 1487 1 75 1489 1 75 1491 1 75 1492 1 75 1494 1 75 1495 1 75 1496 1 75 1498 1 75 1499 1 75 1500 1 75 1510 1 75 1514 1 75 1517 1 75 1519 1 75 1521 1 75 1544 1 75 1547 1 75 1549 1 75 1551 1 75 1553 1 75 1555 1 75 1557 1 75 1558 1 75 1560 1 75 1561 1 75 1579 1 75 1582 1 75 1584 1 75 1586 1 75 1588 1 75 1590 1 75 1592 1 75 1593 1 75 1595 1 75 1596 1 75 1613 1 75 1615 1 75 1617 1 75 1618 1 75 1620 1 75 1621 1 75 1622 1 75 1624 1 75 1625 1 75 1626 1 75 1635 1 75 1638 1 75 1640 1 75 1642 1 75 1644 1 75 1646 1 75 1648 1 75 1649 1 75 1651 1 75 1652 1 75 1669 1 75 1671 1 75 1673 1 75 1674 1 75 1676 1 75 1677 1 75 1678 1 75 1680 1 75 1681 1 75 1682 1 75 1690 1 75 1692 1 75 1694 1 75 1695 1 75 1697 1 75 1698 1 75 1699 1 75 1701 1 75 1702 1 75 1703 1 75 1710 1 75 1712 1 75 1713 1 75 1714 1 75 1715 1 75 1728 1 75 1749 1 75 1769 1 75 1773 1 75 1776 1 75 1778 1 75 1780 1 75 1805 1 75 1825 1 75 1829 1 75 1832 1 75 1834 1 75 1836 1 75 1860 1 75 1864 1 75 1867 1 75 1869 1 75 1871 1 75 1894 1 75 1897 1 75 1899 1 75 1901 1 75 1903 1 75 1905 1 75 1907 1 75 1908 1 75 1910 1 75 1911 1 75 1931 1 75 1951 1 75 1955 1 75 1958 1 75 1960 1 75 1962 1 75 1986 1 75 1990 1 75 1993 1 75 1995 1 75 1997 1 75 2020 1 75 2023 1 75 2025 1 75 2027 1 75 2029 1 75 2031 1 75 2033 1 75 2034 1 75 2036 1 75 2037 1 75 2056 1 75 2060 1 75 2063 1 75 2065 1 75 2067 1 75 2090 1 75 2093 1 75 2095 1 75 2097 1 75 2099 1 75 2101 1 75 2103 1 75 2104 1 75 2106 1 75 2107 1 75 2125 1 75 2128 1 75 2130 1 75 2132 1 75 2134 1 75 2136 1 75 2138 1 75 2139 1 75 2141 1 75 2142 1 75 2159 1 75 2161 1 75 2163 1 75 2164 1 75 2166 1 75 2167 1 75 2168 1 75 2170 1 75 2171 1 75 2172 1 75 2183 1 75 2203 1 75 2207 1 75 2210 1 75 2212 1 75 2214 1 75 2238 1 75 2242 1 75 2245 1 75 2247 1 75 2249 1 75 2272 1 75 2275 1 75 2277 1 75 2279 1 75 2281 1 75 2283 1 75 2285 1 75 2286 1 75 2288 1 75 2289 1 75 2308 1 75 2312 1 75 2315 1 75 2317 1 75 2319 1 75 2342 1 75 2345 1 75 2347 1 75 2349 1 75 2351 1 75 2353 1 75 2355 1 75 2356 1 75 2358 1 75 2359 1 75 2377 1 75 2380 1 75 2382 1 75 2384 1 75 2386 1 75 2388 1 75 2390 1 75 2391 1 75 2393 1 75 2394 1 75 2411 1 75 2413 1 75 2415 1 75 2416 1 75 2418 1 75 2419 1 75 2420 1 75 2422 1 75 2423 1 75 2424 1 75 2434 1 75 2438 1 75 2441 1 75 2443 1 75 2445 1 75 2468 1 75 2471 1 75 2473 1 75 2475 1 75 2477 1 75 2479 1 75 2481 1 75 2482 1 75 2484 1 75 2485 1 75 2503 1 75 2506 1 75 2508 1 75 2510 1 75 2512 1 75 2514 1 75 2516 1 75 2517 1 75 2519 1 75 2520 1 75 2537 1 75 2539 1 75 2541 1 75 2542 1 75 2544 1 75 2545 1 75 2546 1 75 2548 1 75 2549 1 75 2550 1 75 2559 1 75 2562 1 75 2564 1 75 2566 1 75 2568 1 75 2570 1 75 2572 1 75 2573 1 75 2575 1 75 2576 1 75 2593 1 75 2595 1 75 2597 1 75 2598 1 75 2600 1 75 2601 1 75 2602 1 75 2604 1 75 2605 1 75 2606 1 75 2614 1 75 2616 1 75 2618 1 75 2619 1 75 2621 1 75 2622 1 75 2623 1 75 2625 1 75 2626 1 75 2627 1 75 2634 1 75 2636 1 75 2637 1 75 2638 1 75 2639 1 75 2645 1 75 2665 1 75 2669 1 75 2672 1 75 2674 1 75 2676 1 75 2700 1 75 2704 1 75 2707 1 75 2709 1 75 2711 1 75 2734 1 75 2737 1 75 2739 1 75 2741 1 75 2743 1 75 2745 1 75 2747 1 75 2748 1 75 2750 1 75 2751 1 75 2770 1 75 2774 1 75 2777 1 75 2779 1 75 2781 1 75 2804 1 75 2807 1 75 2809 1 75 2811 1 75 2813 1 75 2815 1 75 2817 1 75 2818 1 75 2820 1 75 2821 1 75 2839 1 75 2842 1 75 2844 1 75 2846 1 75 2848 1 75 2850 1 75 2852 1 75 2853 1 75 2855 1 75 2856 1 75 2873 1 75 2875 1 75 2877 1 75 2878 1 75 2880 1 75 2881 1 75 2882 1 75 2884 1 75 2885 1 75 2886 1 75 2896 1 75 2900 1 75 2903 1 75 2905 1 75 2907 1 75 2930 1 75 2933 1 75 2935 1 75 2937 1 75 2939 1 75 2941 1 75 2943 1 75 2944 1 75 2946 1 75 2947 1 75 2965 1 75 2968 1 75 2970 1 75 2972 1 75 2974 1 75 2976 1 75 2978 1 75 2979 1 75 2981 1 75 2982 1 75 2999 1 75 3001 1 75 3003 1 75 3004 1 75 3006 1 75 3007 1 75 3008 1 75 3010 1 75 3011 1 75 3012 1 75 3021 1 75 3024 1 75 3026 1 75 3028 1 75 3030 1 75 3032 1 75 3034 1 75 3035 1 75 3037 1 75 3038 1 75 3055 1 75 3057 1 75 3059 1 75 3060 1 75 3062 1 75 3063 1 75 3064 1 75 3066 1 75 3067 1 75 3068 1 75 3076 1 75 3078 1 75 3080 1 75 3081 1 75 3083 1 75 3084 1 75 3085 1 75 3087 1 75 3088 1 75 3089 1 75 3096 1 75 3098 1 75 3099 1 75 3100 1 75 3101 1 75 3106 1 75 3110 1 75 3113 1 75 3115 1 75 3117 1 75 3140 1 75 3143 1 75 3145 1 75 3147 1 75 3149 1 75 3151 1 75 3153 1 75 3154 1 75 3156 1 75 3157 1 75 3175 1 75 3178 1 75 3180 1 75 3182 1 75 3184 1 75 3186 1 75 3188 1 75 3189 1 75 3191 1 75 3192 1 75 3209 1 75 3211 1 75 3213 1 75 3214 1 75 3216 1 75 3217 1 75 3218 1 75 3220 1 75 3221 1 75 3222 1 75 3231 1 75 3234 1 75 3236 1 75 3238 1 75 3240 1 75 3242 1 75 3244 1 75 3245 1 75 3247 1 75 3248 1 75 3265 1 75 3267 1 75 3269 1 75 3270 1 75 3272 1 75 3273 1 75 3274 1 75 3276 1 75 3277 1 75 3278 1 75 3286 1 75 3288 1 75 3290 1 75 3291 1 75 3293 1 75 3294 1 75 3295 1 75 3297 1 75 3298 1 75 3299 1 75 3306 1 75 3308 1 75 3309 1 75 3310 1 75 3311 1 75 3315 1 75 3318 1 75 3320 1 75 3322 1 75 3324 1 75 3326 1 75 3328 1 75 3329 1 75 3331 1 75 3332 1 75 3349 1 75 3351 1 75 3353 1 75 3354 1 75 3356 1 75 3357 1 75 3358 1 75 3360 1 75 3361 1 75 3362 1 75 3370 1 75 3372 1 75 3374 1 75 3375 1 75 3377 1 75 3378 1 75 3379 1 75 3381 1 75 3382 1 75 3383 1 75 3390 1 75 3392 1 75 3393 1 75 3394 1 75 3395 1 75 3398 1 75 3400 1 75 3402 1 75 3403 1 75 3405 1 75 3406 1 75 3407 1 75 3409 1 75 3410 1 75 3411 1 75 3418 1 75 3420 1 75 3421 1 75 3422 1 75 3423 1 75 3425 1 75 3427 1 75 3428 1 75 3429 1 75 3430 1 75 3432 1 76 21 1 76 49 1 76 70 1 76 90 1 76 94 1 76 97 1 76 99 1 76 100 1 76 133 1 76 154 1 76 174 1 76 178 1 76 181 1 76 183 1 76 184 1 76 210 1 76 230 1 76 234 1 76 237 1 76 239 1 76 240 1 76 265 1 76 269 1 76 272 1 76 274 1 76 275 1 76 299 1 76 302 1 76 304 1 76 305 1 76 308 1 76 310 1 76 311 1 76 313 1 76 314 1 76 315 1 76 343 1 76 364 1 76 384 1 76 388 1 76 391 1 76 393 1 76 394 1 76 420 1 76 440 1 76 444 1 76 447 1 76 449 1 76 450 1 76 475 1 76 479 1 76 482 1 76 484 1 76 485 1 76 509 1 76 512 1 76 514 1 76 515 1 76 518 1 76 520 1 76 521 1 76 523 1 76 524 1 76 525 1 76 546 1 76 566 1 76 570 1 76 573 1 76 575 1 76 576 1 76 601 1 76 605 1 76 608 1 76 610 1 76 611 1 76 635 1 76 638 1 76 640 1 76 641 1 76 644 1 76 646 1 76 647 1 76 649 1 76 650 1 76 651 1 76 671 1 76 675 1 76 678 1 76 680 1 76 681 1 76 705 1 76 708 1 76 710 1 76 711 1 76 714 1 76 716 1 76 717 1 76 719 1 76 720 1 76 721 1 76 740 1 76 743 1 76 745 1 76 746 1 76 749 1 76 751 1 76 752 1 76 754 1 76 755 1 76 756 1 76 774 1 76 776 1 76 777 1 76 779 1 76 780 1 76 781 1 76 783 1 76 784 1 76 785 1 76 786 1 76 805 1 76 826 1 76 846 1 76 850 1 76 853 1 76 855 1 76 856 1 76 882 1 76 902 1 76 906 1 76 909 1 76 911 1 76 912 1 76 937 1 76 941 1 76 944 1 76 946 1 76 947 1 76 971 1 76 974 1 76 976 1 76 977 1 76 980 1 76 982 1 76 983 1 76 985 1 76 986 1 76 987 1 76 1008 1 76 1028 1 76 1032 1 76 1035 1 76 1037 1 76 1038 1 76 1063 1 76 1067 1 76 1070 1 76 1072 1 76 1073 1 76 1097 1 76 1100 1 76 1102 1 76 1103 1 76 1106 1 76 1108 1 76 1109 1 76 1111 1 76 1112 1 76 1113 1 76 1133 1 76 1137 1 76 1140 1 76 1142 1 76 1143 1 76 1167 1 76 1170 1 76 1172 1 76 1173 1 76 1176 1 76 1178 1 76 1179 1 76 1181 1 76 1182 1 76 1183 1 76 1202 1 76 1205 1 76 1207 1 76 1208 1 76 1211 1 76 1213 1 76 1214 1 76 1216 1 76 1217 1 76 1218 1 76 1236 1 76 1238 1 76 1239 1 76 1241 1 76 1242 1 76 1243 1 76 1245 1 76 1246 1 76 1247 1 76 1248 1 76 1260 1 76 1280 1 76 1284 1 76 1287 1 76 1289 1 76 1290 1 76 1315 1 76 1319 1 76 1322 1 76 1324 1 76 1325 1 76 1349 1 76 1352 1 76 1354 1 76 1355 1 76 1358 1 76 1360 1 76 1361 1 76 1363 1 76 1364 1 76 1365 1 76 1385 1 76 1389 1 76 1392 1 76 1394 1 76 1395 1 76 1419 1 76 1422 1 76 1424 1 76 1425 1 76 1428 1 76 1430 1 76 1431 1 76 1433 1 76 1434 1 76 1435 1 76 1454 1 76 1457 1 76 1459 1 76 1460 1 76 1463 1 76 1465 1 76 1466 1 76 1468 1 76 1469 1 76 1470 1 76 1488 1 76 1490 1 76 1491 1 76 1493 1 76 1494 1 76 1495 1 76 1497 1 76 1498 1 76 1499 1 76 1500 1 76 1511 1 76 1515 1 76 1518 1 76 1520 1 76 1521 1 76 1545 1 76 1548 1 76 1550 1 76 1551 1 76 1554 1 76 1556 1 76 1557 1 76 1559 1 76 1560 1 76 1561 1 76 1580 1 76 1583 1 76 1585 1 76 1586 1 76 1589 1 76 1591 1 76 1592 1 76 1594 1 76 1595 1 76 1596 1 76 1614 1 76 1616 1 76 1617 1 76 1619 1 76 1620 1 76 1621 1 76 1623 1 76 1624 1 76 1625 1 76 1626 1 76 1636 1 76 1639 1 76 1641 1 76 1642 1 76 1645 1 76 1647 1 76 1648 1 76 1650 1 76 1651 1 76 1652 1 76 1670 1 76 1672 1 76 1673 1 76 1675 1 76 1676 1 76 1677 1 76 1679 1 76 1680 1 76 1681 1 76 1682 1 76 1691 1 76 1693 1 76 1694 1 76 1696 1 76 1697 1 76 1698 1 76 1700 1 76 1701 1 76 1702 1 76 1703 1 76 1711 1 76 1712 1 76 1713 1 76 1714 1 76 1715 1 76 1729 1 76 1750 1 76 1770 1 76 1774 1 76 1777 1 76 1779 1 76 1780 1 76 1806 1 76 1826 1 76 1830 1 76 1833 1 76 1835 1 76 1836 1 76 1861 1 76 1865 1 76 1868 1 76 1870 1 76 1871 1 76 1895 1 76 1898 1 76 1900 1 76 1901 1 76 1904 1 76 1906 1 76 1907 1 76 1909 1 76 1910 1 76 1911 1 76 1932 1 76 1952 1 76 1956 1 76 1959 1 76 1961 1 76 1962 1 76 1987 1 76 1991 1 76 1994 1 76 1996 1 76 1997 1 76 2021 1 76 2024 1 76 2026 1 76 2027 1 76 2030 1 76 2032 1 76 2033 1 76 2035 1 76 2036 1 76 2037 1 76 2057 1 76 2061 1 76 2064 1 76 2066 1 76 2067 1 76 2091 1 76 2094 1 76 2096 1 76 2097 1 76 2100 1 76 2102 1 76 2103 1 76 2105 1 76 2106 1 76 2107 1 76 2126 1 76 2129 1 76 2131 1 76 2132 1 76 2135 1 76 2137 1 76 2138 1 76 2140 1 76 2141 1 76 2142 1 76 2160 1 76 2162 1 76 2163 1 76 2165 1 76 2166 1 76 2167 1 76 2169 1 76 2170 1 76 2171 1 76 2172 1 76 2184 1 76 2204 1 76 2208 1 76 2211 1 76 2213 1 76 2214 1 76 2239 1 76 2243 1 76 2246 1 76 2248 1 76 2249 1 76 2273 1 76 2276 1 76 2278 1 76 2279 1 76 2282 1 76 2284 1 76 2285 1 76 2287 1 76 2288 1 76 2289 1 76 2309 1 76 2313 1 76 2316 1 76 2318 1 76 2319 1 76 2343 1 76 2346 1 76 2348 1 76 2349 1 76 2352 1 76 2354 1 76 2355 1 76 2357 1 76 2358 1 76 2359 1 76 2378 1 76 2381 1 76 2383 1 76 2384 1 76 2387 1 76 2389 1 76 2390 1 76 2392 1 76 2393 1 76 2394 1 76 2412 1 76 2414 1 76 2415 1 76 2417 1 76 2418 1 76 2419 1 76 2421 1 76 2422 1 76 2423 1 76 2424 1 76 2435 1 76 2439 1 76 2442 1 76 2444 1 76 2445 1 76 2469 1 76 2472 1 76 2474 1 76 2475 1 76 2478 1 76 2480 1 76 2481 1 76 2483 1 76 2484 1 76 2485 1 76 2504 1 76 2507 1 76 2509 1 76 2510 1 76 2513 1 76 2515 1 76 2516 1 76 2518 1 76 2519 1 76 2520 1 76 2538 1 76 2540 1 76 2541 1 76 2543 1 76 2544 1 76 2545 1 76 2547 1 76 2548 1 76 2549 1 76 2550 1 76 2560 1 76 2563 1 76 2565 1 76 2566 1 76 2569 1 76 2571 1 76 2572 1 76 2574 1 76 2575 1 76 2576 1 76 2594 1 76 2596 1 76 2597 1 76 2599 1 76 2600 1 76 2601 1 76 2603 1 76 2604 1 76 2605 1 76 2606 1 76 2615 1 76 2617 1 76 2618 1 76 2620 1 76 2621 1 76 2622 1 76 2624 1 76 2625 1 76 2626 1 76 2627 1 76 2635 1 76 2636 1 76 2637 1 76 2638 1 76 2639 1 76 2646 1 76 2666 1 76 2670 1 76 2673 1 76 2675 1 76 2676 1 76 2701 1 76 2705 1 76 2708 1 76 2710 1 76 2711 1 76 2735 1 76 2738 1 76 2740 1 76 2741 1 76 2744 1 76 2746 1 76 2747 1 76 2749 1 76 2750 1 76 2751 1 76 2771 1 76 2775 1 76 2778 1 76 2780 1 76 2781 1 76 2805 1 76 2808 1 76 2810 1 76 2811 1 76 2814 1 76 2816 1 76 2817 1 76 2819 1 76 2820 1 76 2821 1 76 2840 1 76 2843 1 76 2845 1 76 2846 1 76 2849 1 76 2851 1 76 2852 1 76 2854 1 76 2855 1 76 2856 1 76 2874 1 76 2876 1 76 2877 1 76 2879 1 76 2880 1 76 2881 1 76 2883 1 76 2884 1 76 2885 1 76 2886 1 76 2897 1 76 2901 1 76 2904 1 76 2906 1 76 2907 1 76 2931 1 76 2934 1 76 2936 1 76 2937 1 76 2940 1 76 2942 1 76 2943 1 76 2945 1 76 2946 1 76 2947 1 76 2966 1 76 2969 1 76 2971 1 76 2972 1 76 2975 1 76 2977 1 76 2978 1 76 2980 1 76 2981 1 76 2982 1 76 3000 1 76 3002 1 76 3003 1 76 3005 1 76 3006 1 76 3007 1 76 3009 1 76 3010 1 76 3011 1 76 3012 1 76 3022 1 76 3025 1 76 3027 1 76 3028 1 76 3031 1 76 3033 1 76 3034 1 76 3036 1 76 3037 1 76 3038 1 76 3056 1 76 3058 1 76 3059 1 76 3061 1 76 3062 1 76 3063 1 76 3065 1 76 3066 1 76 3067 1 76 3068 1 76 3077 1 76 3079 1 76 3080 1 76 3082 1 76 3083 1 76 3084 1 76 3086 1 76 3087 1 76 3088 1 76 3089 1 76 3097 1 76 3098 1 76 3099 1 76 3100 1 76 3101 1 76 3107 1 76 3111 1 76 3114 1 76 3116 1 76 3117 1 76 3141 1 76 3144 1 76 3146 1 76 3147 1 76 3150 1 76 3152 1 76 3153 1 76 3155 1 76 3156 1 76 3157 1 76 3176 1 76 3179 1 76 3181 1 76 3182 1 76 3185 1 76 3187 1 76 3188 1 76 3190 1 76 3191 1 76 3192 1 76 3210 1 76 3212 1 76 3213 1 76 3215 1 76 3216 1 76 3217 1 76 3219 1 76 3220 1 76 3221 1 76 3222 1 76 3232 1 76 3235 1 76 3237 1 76 3238 1 76 3241 1 76 3243 1 76 3244 1 76 3246 1 76 3247 1 76 3248 1 76 3266 1 76 3268 1 76 3269 1 76 3271 1 76 3272 1 76 3273 1 76 3275 1 76 3276 1 76 3277 1 76 3278 1 76 3287 1 76 3289 1 76 3290 1 76 3292 1 76 3293 1 76 3294 1 76 3296 1 76 3297 1 76 3298 1 76 3299 1 76 3307 1 76 3308 1 76 3309 1 76 3310 1 76 3311 1 76 3316 1 76 3319 1 76 3321 1 76 3322 1 76 3325 1 76 3327 1 76 3328 1 76 3330 1 76 3331 1 76 3332 1 76 3350 1 76 3352 1 76 3353 1 76 3355 1 76 3356 1 76 3357 1 76 3359 1 76 3360 1 76 3361 1 76 3362 1 76 3371 1 76 3373 1 76 3374 1 76 3376 1 76 3377 1 76 3378 1 76 3380 1 76 3381 1 76 3382 1 76 3383 1 76 3391 1 76 3392 1 76 3393 1 76 3394 1 76 3395 1 76 3399 1 76 3401 1 76 3402 1 76 3404 1 76 3405 1 76 3406 1 76 3408 1 76 3409 1 76 3410 1 76 3411 1 76 3419 1 76 3420 1 76 3421 1 76 3422 1 76 3423 1 76 3426 1 76 3427 1 76 3428 1 76 3429 1 76 3430 1 76 3432 1 77 22 1 77 50 1 77 71 1 77 86 1 77 101 1 77 102 1 77 103 1 77 104 1 77 134 1 77 155 1 77 170 1 77 185 1 77 186 1 77 187 1 77 188 1 77 211 1 77 226 1 77 241 1 77 242 1 77 243 1 77 244 1 77 261 1 77 276 1 77 277 1 77 278 1 77 279 1 77 296 1 77 297 1 77 298 1 77 299 1 77 316 1 77 317 1 77 318 1 77 319 1 77 320 1 77 321 1 77 344 1 77 365 1 77 380 1 77 395 1 77 396 1 77 397 1 77 398 1 77 421 1 77 436 1 77 451 1 77 452 1 77 453 1 77 454 1 77 471 1 77 486 1 77 487 1 77 488 1 77 489 1 77 506 1 77 507 1 77 508 1 77 509 1 77 526 1 77 527 1 77 528 1 77 529 1 77 530 1 77 531 1 77 547 1 77 562 1 77 577 1 77 578 1 77 579 1 77 580 1 77 597 1 77 612 1 77 613 1 77 614 1 77 615 1 77 632 1 77 633 1 77 634 1 77 635 1 77 652 1 77 653 1 77 654 1 77 655 1 77 656 1 77 657 1 77 667 1 77 682 1 77 683 1 77 684 1 77 685 1 77 702 1 77 703 1 77 704 1 77 705 1 77 722 1 77 723 1 77 724 1 77 725 1 77 726 1 77 727 1 77 737 1 77 738 1 77 739 1 77 740 1 77 757 1 77 758 1 77 759 1 77 760 1 77 761 1 77 762 1 77 772 1 77 773 1 77 774 1 77 775 1 77 776 1 77 777 1 77 787 1 77 788 1 77 789 1 77 790 1 77 806 1 77 827 1 77 842 1 77 857 1 77 858 1 77 859 1 77 860 1 77 883 1 77 898 1 77 913 1 77 914 1 77 915 1 77 916 1 77 933 1 77 948 1 77 949 1 77 950 1 77 951 1 77 968 1 77 969 1 77 970 1 77 971 1 77 988 1 77 989 1 77 990 1 77 991 1 77 992 1 77 993 1 77 1009 1 77 1024 1 77 1039 1 77 1040 1 77 1041 1 77 1042 1 77 1059 1 77 1074 1 77 1075 1 77 1076 1 77 1077 1 77 1094 1 77 1095 1 77 1096 1 77 1097 1 77 1114 1 77 1115 1 77 1116 1 77 1117 1 77 1118 1 77 1119 1 77 1129 1 77 1144 1 77 1145 1 77 1146 1 77 1147 1 77 1164 1 77 1165 1 77 1166 1 77 1167 1 77 1184 1 77 1185 1 77 1186 1 77 1187 1 77 1188 1 77 1189 1 77 1199 1 77 1200 1 77 1201 1 77 1202 1 77 1219 1 77 1220 1 77 1221 1 77 1222 1 77 1223 1 77 1224 1 77 1234 1 77 1235 1 77 1236 1 77 1237 1 77 1238 1 77 1239 1 77 1249 1 77 1250 1 77 1251 1 77 1252 1 77 1261 1 77 1276 1 77 1291 1 77 1292 1 77 1293 1 77 1294 1 77 1311 1 77 1326 1 77 1327 1 77 1328 1 77 1329 1 77 1346 1 77 1347 1 77 1348 1 77 1349 1 77 1366 1 77 1367 1 77 1368 1 77 1369 1 77 1370 1 77 1371 1 77 1381 1 77 1396 1 77 1397 1 77 1398 1 77 1399 1 77 1416 1 77 1417 1 77 1418 1 77 1419 1 77 1436 1 77 1437 1 77 1438 1 77 1439 1 77 1440 1 77 1441 1 77 1451 1 77 1452 1 77 1453 1 77 1454 1 77 1471 1 77 1472 1 77 1473 1 77 1474 1 77 1475 1 77 1476 1 77 1486 1 77 1487 1 77 1488 1 77 1489 1 77 1490 1 77 1491 1 77 1501 1 77 1502 1 77 1503 1 77 1504 1 77 1507 1 77 1522 1 77 1523 1 77 1524 1 77 1525 1 77 1542 1 77 1543 1 77 1544 1 77 1545 1 77 1562 1 77 1563 1 77 1564 1 77 1565 1 77 1566 1 77 1567 1 77 1577 1 77 1578 1 77 1579 1 77 1580 1 77 1597 1 77 1598 1 77 1599 1 77 1600 1 77 1601 1 77 1602 1 77 1612 1 77 1613 1 77 1614 1 77 1615 1 77 1616 1 77 1617 1 77 1627 1 77 1628 1 77 1629 1 77 1630 1 77 1633 1 77 1634 1 77 1635 1 77 1636 1 77 1653 1 77 1654 1 77 1655 1 77 1656 1 77 1657 1 77 1658 1 77 1668 1 77 1669 1 77 1670 1 77 1671 1 77 1672 1 77 1673 1 77 1683 1 77 1684 1 77 1685 1 77 1686 1 77 1689 1 77 1690 1 77 1691 1 77 1692 1 77 1693 1 77 1694 1 77 1704 1 77 1705 1 77 1706 1 77 1707 1 77 1710 1 77 1711 1 77 1712 1 77 1713 1 77 1716 1 77 1730 1 77 1751 1 77 1766 1 77 1781 1 77 1782 1 77 1783 1 77 1784 1 77 1807 1 77 1822 1 77 1837 1 77 1838 1 77 1839 1 77 1840 1 77 1857 1 77 1872 1 77 1873 1 77 1874 1 77 1875 1 77 1892 1 77 1893 1 77 1894 1 77 1895 1 77 1912 1 77 1913 1 77 1914 1 77 1915 1 77 1916 1 77 1917 1 77 1933 1 77 1948 1 77 1963 1 77 1964 1 77 1965 1 77 1966 1 77 1983 1 77 1998 1 77 1999 1 77 2000 1 77 2001 1 77 2018 1 77 2019 1 77 2020 1 77 2021 1 77 2038 1 77 2039 1 77 2040 1 77 2041 1 77 2042 1 77 2043 1 77 2053 1 77 2068 1 77 2069 1 77 2070 1 77 2071 1 77 2088 1 77 2089 1 77 2090 1 77 2091 1 77 2108 1 77 2109 1 77 2110 1 77 2111 1 77 2112 1 77 2113 1 77 2123 1 77 2124 1 77 2125 1 77 2126 1 77 2143 1 77 2144 1 77 2145 1 77 2146 1 77 2147 1 77 2148 1 77 2158 1 77 2159 1 77 2160 1 77 2161 1 77 2162 1 77 2163 1 77 2173 1 77 2174 1 77 2175 1 77 2176 1 77 2185 1 77 2200 1 77 2215 1 77 2216 1 77 2217 1 77 2218 1 77 2235 1 77 2250 1 77 2251 1 77 2252 1 77 2253 1 77 2270 1 77 2271 1 77 2272 1 77 2273 1 77 2290 1 77 2291 1 77 2292 1 77 2293 1 77 2294 1 77 2295 1 77 2305 1 77 2320 1 77 2321 1 77 2322 1 77 2323 1 77 2340 1 77 2341 1 77 2342 1 77 2343 1 77 2360 1 77 2361 1 77 2362 1 77 2363 1 77 2364 1 77 2365 1 77 2375 1 77 2376 1 77 2377 1 77 2378 1 77 2395 1 77 2396 1 77 2397 1 77 2398 1 77 2399 1 77 2400 1 77 2410 1 77 2411 1 77 2412 1 77 2413 1 77 2414 1 77 2415 1 77 2425 1 77 2426 1 77 2427 1 77 2428 1 77 2431 1 77 2446 1 77 2447 1 77 2448 1 77 2449 1 77 2466 1 77 2467 1 77 2468 1 77 2469 1 77 2486 1 77 2487 1 77 2488 1 77 2489 1 77 2490 1 77 2491 1 77 2501 1 77 2502 1 77 2503 1 77 2504 1 77 2521 1 77 2522 1 77 2523 1 77 2524 1 77 2525 1 77 2526 1 77 2536 1 77 2537 1 77 2538 1 77 2539 1 77 2540 1 77 2541 1 77 2551 1 77 2552 1 77 2553 1 77 2554 1 77 2557 1 77 2558 1 77 2559 1 77 2560 1 77 2577 1 77 2578 1 77 2579 1 77 2580 1 77 2581 1 77 2582 1 77 2592 1 77 2593 1 77 2594 1 77 2595 1 77 2596 1 77 2597 1 77 2607 1 77 2608 1 77 2609 1 77 2610 1 77 2613 1 77 2614 1 77 2615 1 77 2616 1 77 2617 1 77 2618 1 77 2628 1 77 2629 1 77 2630 1 77 2631 1 77 2634 1 77 2635 1 77 2636 1 77 2637 1 77 2640 1 77 2647 1 77 2662 1 77 2677 1 77 2678 1 77 2679 1 77 2680 1 77 2697 1 77 2712 1 77 2713 1 77 2714 1 77 2715 1 77 2732 1 77 2733 1 77 2734 1 77 2735 1 77 2752 1 77 2753 1 77 2754 1 77 2755 1 77 2756 1 77 2757 1 77 2767 1 77 2782 1 77 2783 1 77 2784 1 77 2785 1 77 2802 1 77 2803 1 77 2804 1 77 2805 1 77 2822 1 77 2823 1 77 2824 1 77 2825 1 77 2826 1 77 2827 1 77 2837 1 77 2838 1 77 2839 1 77 2840 1 77 2857 1 77 2858 1 77 2859 1 77 2860 1 77 2861 1 77 2862 1 77 2872 1 77 2873 1 77 2874 1 77 2875 1 77 2876 1 77 2877 1 77 2887 1 77 2888 1 77 2889 1 77 2890 1 77 2893 1 77 2908 1 77 2909 1 77 2910 1 77 2911 1 77 2928 1 77 2929 1 77 2930 1 77 2931 1 77 2948 1 77 2949 1 77 2950 1 77 2951 1 77 2952 1 77 2953 1 77 2963 1 77 2964 1 77 2965 1 77 2966 1 77 2983 1 77 2984 1 77 2985 1 77 2986 1 77 2987 1 77 2988 1 77 2998 1 77 2999 1 77 3000 1 77 3001 1 77 3002 1 77 3003 1 77 3013 1 77 3014 1 77 3015 1 77 3016 1 77 3019 1 77 3020 1 77 3021 1 77 3022 1 77 3039 1 77 3040 1 77 3041 1 77 3042 1 77 3043 1 77 3044 1 77 3054 1 77 3055 1 77 3056 1 77 3057 1 77 3058 1 77 3059 1 77 3069 1 77 3070 1 77 3071 1 77 3072 1 77 3075 1 77 3076 1 77 3077 1 77 3078 1 77 3079 1 77 3080 1 77 3090 1 77 3091 1 77 3092 1 77 3093 1 77 3096 1 77 3097 1 77 3098 1 77 3099 1 77 3102 1 77 3103 1 77 3118 1 77 3119 1 77 3120 1 77 3121 1 77 3138 1 77 3139 1 77 3140 1 77 3141 1 77 3158 1 77 3159 1 77 3160 1 77 3161 1 77 3162 1 77 3163 1 77 3173 1 77 3174 1 77 3175 1 77 3176 1 77 3193 1 77 3194 1 77 3195 1 77 3196 1 77 3197 1 77 3198 1 77 3208 1 77 3209 1 77 3210 1 77 3211 1 77 3212 1 77 3213 1 77 3223 1 77 3224 1 77 3225 1 77 3226 1 77 3229 1 77 3230 1 77 3231 1 77 3232 1 77 3249 1 77 3250 1 77 3251 1 77 3252 1 77 3253 1 77 3254 1 77 3264 1 77 3265 1 77 3266 1 77 3267 1 77 3268 1 77 3269 1 77 3279 1 77 3280 1 77 3281 1 77 3282 1 77 3285 1 77 3286 1 77 3287 1 77 3288 1 77 3289 1 77 3290 1 77 3300 1 77 3301 1 77 3302 1 77 3303 1 77 3306 1 77 3307 1 77 3308 1 77 3309 1 77 3312 1 77 3313 1 77 3314 1 77 3315 1 77 3316 1 77 3333 1 77 3334 1 77 3335 1 77 3336 1 77 3337 1 77 3338 1 77 3348 1 77 3349 1 77 3350 1 77 3351 1 77 3352 1 77 3353 1 77 3363 1 77 3364 1 77 3365 1 77 3366 1 77 3369 1 77 3370 1 77 3371 1 77 3372 1 77 3373 1 77 3374 1 77 3384 1 77 3385 1 77 3386 1 77 3387 1 77 3390 1 77 3391 1 77 3392 1 77 3393 1 77 3396 1 77 3397 1 77 3398 1 77 3399 1 77 3400 1 77 3401 1 77 3402 1 77 3412 1 77 3413 1 77 3414 1 77 3415 1 77 3418 1 77 3419 1 77 3420 1 77 3421 1 77 3424 1 77 3425 1 77 3426 1 77 3427 1 77 3428 1 77 3431 1 77 3432 1 78 23 1 78 51 1 78 72 1 78 87 1 78 101 1 78 105 1 78 106 1 78 107 1 78 135 1 78 156 1 78 171 1 78 185 1 78 189 1 78 190 1 78 191 1 78 212 1 78 227 1 78 241 1 78 245 1 78 246 1 78 247 1 78 262 1 78 276 1 78 280 1 78 281 1 78 282 1 78 296 1 78 300 1 78 301 1 78 302 1 78 316 1 78 317 1 78 318 1 78 322 1 78 323 1 78 324 1 78 345 1 78 366 1 78 381 1 78 395 1 78 399 1 78 400 1 78 401 1 78 422 1 78 437 1 78 451 1 78 455 1 78 456 1 78 457 1 78 472 1 78 486 1 78 490 1 78 491 1 78 492 1 78 506 1 78 510 1 78 511 1 78 512 1 78 526 1 78 527 1 78 528 1 78 532 1 78 533 1 78 534 1 78 548 1 78 563 1 78 577 1 78 581 1 78 582 1 78 583 1 78 598 1 78 612 1 78 616 1 78 617 1 78 618 1 78 632 1 78 636 1 78 637 1 78 638 1 78 652 1 78 653 1 78 654 1 78 658 1 78 659 1 78 660 1 78 668 1 78 682 1 78 686 1 78 687 1 78 688 1 78 702 1 78 706 1 78 707 1 78 708 1 78 722 1 78 723 1 78 724 1 78 728 1 78 729 1 78 730 1 78 737 1 78 741 1 78 742 1 78 743 1 78 757 1 78 758 1 78 759 1 78 763 1 78 764 1 78 765 1 78 772 1 78 773 1 78 774 1 78 778 1 78 779 1 78 780 1 78 787 1 78 788 1 78 789 1 78 791 1 78 807 1 78 828 1 78 843 1 78 857 1 78 861 1 78 862 1 78 863 1 78 884 1 78 899 1 78 913 1 78 917 1 78 918 1 78 919 1 78 934 1 78 948 1 78 952 1 78 953 1 78 954 1 78 968 1 78 972 1 78 973 1 78 974 1 78 988 1 78 989 1 78 990 1 78 994 1 78 995 1 78 996 1 78 1010 1 78 1025 1 78 1039 1 78 1043 1 78 1044 1 78 1045 1 78 1060 1 78 1074 1 78 1078 1 78 1079 1 78 1080 1 78 1094 1 78 1098 1 78 1099 1 78 1100 1 78 1114 1 78 1115 1 78 1116 1 78 1120 1 78 1121 1 78 1122 1 78 1130 1 78 1144 1 78 1148 1 78 1149 1 78 1150 1 78 1164 1 78 1168 1 78 1169 1 78 1170 1 78 1184 1 78 1185 1 78 1186 1 78 1190 1 78 1191 1 78 1192 1 78 1199 1 78 1203 1 78 1204 1 78 1205 1 78 1219 1 78 1220 1 78 1221 1 78 1225 1 78 1226 1 78 1227 1 78 1234 1 78 1235 1 78 1236 1 78 1240 1 78 1241 1 78 1242 1 78 1249 1 78 1250 1 78 1251 1 78 1253 1 78 1262 1 78 1277 1 78 1291 1 78 1295 1 78 1296 1 78 1297 1 78 1312 1 78 1326 1 78 1330 1 78 1331 1 78 1332 1 78 1346 1 78 1350 1 78 1351 1 78 1352 1 78 1366 1 78 1367 1 78 1368 1 78 1372 1 78 1373 1 78 1374 1 78 1382 1 78 1396 1 78 1400 1 78 1401 1 78 1402 1 78 1416 1 78 1420 1 78 1421 1 78 1422 1 78 1436 1 78 1437 1 78 1438 1 78 1442 1 78 1443 1 78 1444 1 78 1451 1 78 1455 1 78 1456 1 78 1457 1 78 1471 1 78 1472 1 78 1473 1 78 1477 1 78 1478 1 78 1479 1 78 1486 1 78 1487 1 78 1488 1 78 1492 1 78 1493 1 78 1494 1 78 1501 1 78 1502 1 78 1503 1 78 1505 1 78 1508 1 78 1522 1 78 1526 1 78 1527 1 78 1528 1 78 1542 1 78 1546 1 78 1547 1 78 1548 1 78 1562 1 78 1563 1 78 1564 1 78 1568 1 78 1569 1 78 1570 1 78 1577 1 78 1581 1 78 1582 1 78 1583 1 78 1597 1 78 1598 1 78 1599 1 78 1603 1 78 1604 1 78 1605 1 78 1612 1 78 1613 1 78 1614 1 78 1618 1 78 1619 1 78 1620 1 78 1627 1 78 1628 1 78 1629 1 78 1631 1 78 1633 1 78 1637 1 78 1638 1 78 1639 1 78 1653 1 78 1654 1 78 1655 1 78 1659 1 78 1660 1 78 1661 1 78 1668 1 78 1669 1 78 1670 1 78 1674 1 78 1675 1 78 1676 1 78 1683 1 78 1684 1 78 1685 1 78 1687 1 78 1689 1 78 1690 1 78 1691 1 78 1695 1 78 1696 1 78 1697 1 78 1704 1 78 1705 1 78 1706 1 78 1708 1 78 1710 1 78 1711 1 78 1712 1 78 1714 1 78 1716 1 78 1731 1 78 1752 1 78 1767 1 78 1781 1 78 1785 1 78 1786 1 78 1787 1 78 1808 1 78 1823 1 78 1837 1 78 1841 1 78 1842 1 78 1843 1 78 1858 1 78 1872 1 78 1876 1 78 1877 1 78 1878 1 78 1892 1 78 1896 1 78 1897 1 78 1898 1 78 1912 1 78 1913 1 78 1914 1 78 1918 1 78 1919 1 78 1920 1 78 1934 1 78 1949 1 78 1963 1 78 1967 1 78 1968 1 78 1969 1 78 1984 1 78 1998 1 78 2002 1 78 2003 1 78 2004 1 78 2018 1 78 2022 1 78 2023 1 78 2024 1 78 2038 1 78 2039 1 78 2040 1 78 2044 1 78 2045 1 78 2046 1 78 2054 1 78 2068 1 78 2072 1 78 2073 1 78 2074 1 78 2088 1 78 2092 1 78 2093 1 78 2094 1 78 2108 1 78 2109 1 78 2110 1 78 2114 1 78 2115 1 78 2116 1 78 2123 1 78 2127 1 78 2128 1 78 2129 1 78 2143 1 78 2144 1 78 2145 1 78 2149 1 78 2150 1 78 2151 1 78 2158 1 78 2159 1 78 2160 1 78 2164 1 78 2165 1 78 2166 1 78 2173 1 78 2174 1 78 2175 1 78 2177 1 78 2186 1 78 2201 1 78 2215 1 78 2219 1 78 2220 1 78 2221 1 78 2236 1 78 2250 1 78 2254 1 78 2255 1 78 2256 1 78 2270 1 78 2274 1 78 2275 1 78 2276 1 78 2290 1 78 2291 1 78 2292 1 78 2296 1 78 2297 1 78 2298 1 78 2306 1 78 2320 1 78 2324 1 78 2325 1 78 2326 1 78 2340 1 78 2344 1 78 2345 1 78 2346 1 78 2360 1 78 2361 1 78 2362 1 78 2366 1 78 2367 1 78 2368 1 78 2375 1 78 2379 1 78 2380 1 78 2381 1 78 2395 1 78 2396 1 78 2397 1 78 2401 1 78 2402 1 78 2403 1 78 2410 1 78 2411 1 78 2412 1 78 2416 1 78 2417 1 78 2418 1 78 2425 1 78 2426 1 78 2427 1 78 2429 1 78 2432 1 78 2446 1 78 2450 1 78 2451 1 78 2452 1 78 2466 1 78 2470 1 78 2471 1 78 2472 1 78 2486 1 78 2487 1 78 2488 1 78 2492 1 78 2493 1 78 2494 1 78 2501 1 78 2505 1 78 2506 1 78 2507 1 78 2521 1 78 2522 1 78 2523 1 78 2527 1 78 2528 1 78 2529 1 78 2536 1 78 2537 1 78 2538 1 78 2542 1 78 2543 1 78 2544 1 78 2551 1 78 2552 1 78 2553 1 78 2555 1 78 2557 1 78 2561 1 78 2562 1 78 2563 1 78 2577 1 78 2578 1 78 2579 1 78 2583 1 78 2584 1 78 2585 1 78 2592 1 78 2593 1 78 2594 1 78 2598 1 78 2599 1 78 2600 1 78 2607 1 78 2608 1 78 2609 1 78 2611 1 78 2613 1 78 2614 1 78 2615 1 78 2619 1 78 2620 1 78 2621 1 78 2628 1 78 2629 1 78 2630 1 78 2632 1 78 2634 1 78 2635 1 78 2636 1 78 2638 1 78 2640 1 78 2648 1 78 2663 1 78 2677 1 78 2681 1 78 2682 1 78 2683 1 78 2698 1 78 2712 1 78 2716 1 78 2717 1 78 2718 1 78 2732 1 78 2736 1 78 2737 1 78 2738 1 78 2752 1 78 2753 1 78 2754 1 78 2758 1 78 2759 1 78 2760 1 78 2768 1 78 2782 1 78 2786 1 78 2787 1 78 2788 1 78 2802 1 78 2806 1 78 2807 1 78 2808 1 78 2822 1 78 2823 1 78 2824 1 78 2828 1 78 2829 1 78 2830 1 78 2837 1 78 2841 1 78 2842 1 78 2843 1 78 2857 1 78 2858 1 78 2859 1 78 2863 1 78 2864 1 78 2865 1 78 2872 1 78 2873 1 78 2874 1 78 2878 1 78 2879 1 78 2880 1 78 2887 1 78 2888 1 78 2889 1 78 2891 1 78 2894 1 78 2908 1 78 2912 1 78 2913 1 78 2914 1 78 2928 1 78 2932 1 78 2933 1 78 2934 1 78 2948 1 78 2949 1 78 2950 1 78 2954 1 78 2955 1 78 2956 1 78 2963 1 78 2967 1 78 2968 1 78 2969 1 78 2983 1 78 2984 1 78 2985 1 78 2989 1 78 2990 1 78 2991 1 78 2998 1 78 2999 1 78 3000 1 78 3004 1 78 3005 1 78 3006 1 78 3013 1 78 3014 1 78 3015 1 78 3017 1 78 3019 1 78 3023 1 78 3024 1 78 3025 1 78 3039 1 78 3040 1 78 3041 1 78 3045 1 78 3046 1 78 3047 1 78 3054 1 78 3055 1 78 3056 1 78 3060 1 78 3061 1 78 3062 1 78 3069 1 78 3070 1 78 3071 1 78 3073 1 78 3075 1 78 3076 1 78 3077 1 78 3081 1 78 3082 1 78 3083 1 78 3090 1 78 3091 1 78 3092 1 78 3094 1 78 3096 1 78 3097 1 78 3098 1 78 3100 1 78 3102 1 78 3104 1 78 3118 1 78 3122 1 78 3123 1 78 3124 1 78 3138 1 78 3142 1 78 3143 1 78 3144 1 78 3158 1 78 3159 1 78 3160 1 78 3164 1 78 3165 1 78 3166 1 78 3173 1 78 3177 1 78 3178 1 78 3179 1 78 3193 1 78 3194 1 78 3195 1 78 3199 1 78 3200 1 78 3201 1 78 3208 1 78 3209 1 78 3210 1 78 3214 1 78 3215 1 78 3216 1 78 3223 1 78 3224 1 78 3225 1 78 3227 1 78 3229 1 78 3233 1 78 3234 1 78 3235 1 78 3249 1 78 3250 1 78 3251 1 78 3255 1 78 3256 1 78 3257 1 78 3264 1 78 3265 1 78 3266 1 78 3270 1 78 3271 1 78 3272 1 78 3279 1 78 3280 1 78 3281 1 78 3283 1 78 3285 1 78 3286 1 78 3287 1 78 3291 1 78 3292 1 78 3293 1 78 3300 1 78 3301 1 78 3302 1 78 3304 1 78 3306 1 78 3307 1 78 3308 1 78 3310 1 78 3312 1 78 3313 1 78 3317 1 78 3318 1 78 3319 1 78 3333 1 78 3334 1 78 3335 1 78 3339 1 78 3340 1 78 3341 1 78 3348 1 78 3349 1 78 3350 1 78 3354 1 78 3355 1 78 3356 1 78 3363 1 78 3364 1 78 3365 1 78 3367 1 78 3369 1 78 3370 1 78 3371 1 78 3375 1 78 3376 1 78 3377 1 78 3384 1 78 3385 1 78 3386 1 78 3388 1 78 3390 1 78 3391 1 78 3392 1 78 3394 1 78 3396 1 78 3397 1 78 3398 1 78 3399 1 78 3403 1 78 3404 1 78 3405 1 78 3412 1 78 3413 1 78 3414 1 78 3416 1 78 3418 1 78 3419 1 78 3420 1 78 3422 1 78 3424 1 78 3425 1 78 3426 1 78 3427 1 78 3429 1 78 3431 1 78 3432 1 79 24 1 79 52 1 79 73 1 79 88 1 79 102 1 79 105 1 79 108 1 79 109 1 79 136 1 79 157 1 79 172 1 79 186 1 79 189 1 79 192 1 79 193 1 79 213 1 79 228 1 79 242 1 79 245 1 79 248 1 79 249 1 79 263 1 79 277 1 79 280 1 79 283 1 79 284 1 79 297 1 79 300 1 79 303 1 79 304 1 79 316 1 79 319 1 79 320 1 79 322 1 79 323 1 79 325 1 79 346 1 79 367 1 79 382 1 79 396 1 79 399 1 79 402 1 79 403 1 79 423 1 79 438 1 79 452 1 79 455 1 79 458 1 79 459 1 79 473 1 79 487 1 79 490 1 79 493 1 79 494 1 79 507 1 79 510 1 79 513 1 79 514 1 79 526 1 79 529 1 79 530 1 79 532 1 79 533 1 79 535 1 79 549 1 79 564 1 79 578 1 79 581 1 79 584 1 79 585 1 79 599 1 79 613 1 79 616 1 79 619 1 79 620 1 79 633 1 79 636 1 79 639 1 79 640 1 79 652 1 79 655 1 79 656 1 79 658 1 79 659 1 79 661 1 79 669 1 79 683 1 79 686 1 79 689 1 79 690 1 79 703 1 79 706 1 79 709 1 79 710 1 79 722 1 79 725 1 79 726 1 79 728 1 79 729 1 79 731 1 79 738 1 79 741 1 79 744 1 79 745 1 79 757 1 79 760 1 79 761 1 79 763 1 79 764 1 79 766 1 79 772 1 79 775 1 79 776 1 79 778 1 79 779 1 79 781 1 79 787 1 79 788 1 79 790 1 79 791 1 79 808 1 79 829 1 79 844 1 79 858 1 79 861 1 79 864 1 79 865 1 79 885 1 79 900 1 79 914 1 79 917 1 79 920 1 79 921 1 79 935 1 79 949 1 79 952 1 79 955 1 79 956 1 79 969 1 79 972 1 79 975 1 79 976 1 79 988 1 79 991 1 79 992 1 79 994 1 79 995 1 79 997 1 79 1011 1 79 1026 1 79 1040 1 79 1043 1 79 1046 1 79 1047 1 79 1061 1 79 1075 1 79 1078 1 79 1081 1 79 1082 1 79 1095 1 79 1098 1 79 1101 1 79 1102 1 79 1114 1 79 1117 1 79 1118 1 79 1120 1 79 1121 1 79 1123 1 79 1131 1 79 1145 1 79 1148 1 79 1151 1 79 1152 1 79 1165 1 79 1168 1 79 1171 1 79 1172 1 79 1184 1 79 1187 1 79 1188 1 79 1190 1 79 1191 1 79 1193 1 79 1200 1 79 1203 1 79 1206 1 79 1207 1 79 1219 1 79 1222 1 79 1223 1 79 1225 1 79 1226 1 79 1228 1 79 1234 1 79 1237 1 79 1238 1 79 1240 1 79 1241 1 79 1243 1 79 1249 1 79 1250 1 79 1252 1 79 1253 1 79 1263 1 79 1278 1 79 1292 1 79 1295 1 79 1298 1 79 1299 1 79 1313 1 79 1327 1 79 1330 1 79 1333 1 79 1334 1 79 1347 1 79 1350 1 79 1353 1 79 1354 1 79 1366 1 79 1369 1 79 1370 1 79 1372 1 79 1373 1 79 1375 1 79 1383 1 79 1397 1 79 1400 1 79 1403 1 79 1404 1 79 1417 1 79 1420 1 79 1423 1 79 1424 1 79 1436 1 79 1439 1 79 1440 1 79 1442 1 79 1443 1 79 1445 1 79 1452 1 79 1455 1 79 1458 1 79 1459 1 79 1471 1 79 1474 1 79 1475 1 79 1477 1 79 1478 1 79 1480 1 79 1486 1 79 1489 1 79 1490 1 79 1492 1 79 1493 1 79 1495 1 79 1501 1 79 1502 1 79 1504 1 79 1505 1 79 1509 1 79 1523 1 79 1526 1 79 1529 1 79 1530 1 79 1543 1 79 1546 1 79 1549 1 79 1550 1 79 1562 1 79 1565 1 79 1566 1 79 1568 1 79 1569 1 79 1571 1 79 1578 1 79 1581 1 79 1584 1 79 1585 1 79 1597 1 79 1600 1 79 1601 1 79 1603 1 79 1604 1 79 1606 1 79 1612 1 79 1615 1 79 1616 1 79 1618 1 79 1619 1 79 1621 1 79 1627 1 79 1628 1 79 1630 1 79 1631 1 79 1634 1 79 1637 1 79 1640 1 79 1641 1 79 1653 1 79 1656 1 79 1657 1 79 1659 1 79 1660 1 79 1662 1 79 1668 1 79 1671 1 79 1672 1 79 1674 1 79 1675 1 79 1677 1 79 1683 1 79 1684 1 79 1686 1 79 1687 1 79 1689 1 79 1692 1 79 1693 1 79 1695 1 79 1696 1 79 1698 1 79 1704 1 79 1705 1 79 1707 1 79 1708 1 79 1710 1 79 1711 1 79 1713 1 79 1714 1 79 1716 1 79 1732 1 79 1753 1 79 1768 1 79 1782 1 79 1785 1 79 1788 1 79 1789 1 79 1809 1 79 1824 1 79 1838 1 79 1841 1 79 1844 1 79 1845 1 79 1859 1 79 1873 1 79 1876 1 79 1879 1 79 1880 1 79 1893 1 79 1896 1 79 1899 1 79 1900 1 79 1912 1 79 1915 1 79 1916 1 79 1918 1 79 1919 1 79 1921 1 79 1935 1 79 1950 1 79 1964 1 79 1967 1 79 1970 1 79 1971 1 79 1985 1 79 1999 1 79 2002 1 79 2005 1 79 2006 1 79 2019 1 79 2022 1 79 2025 1 79 2026 1 79 2038 1 79 2041 1 79 2042 1 79 2044 1 79 2045 1 79 2047 1 79 2055 1 79 2069 1 79 2072 1 79 2075 1 79 2076 1 79 2089 1 79 2092 1 79 2095 1 79 2096 1 79 2108 1 79 2111 1 79 2112 1 79 2114 1 79 2115 1 79 2117 1 79 2124 1 79 2127 1 79 2130 1 79 2131 1 79 2143 1 79 2146 1 79 2147 1 79 2149 1 79 2150 1 79 2152 1 79 2158 1 79 2161 1 79 2162 1 79 2164 1 79 2165 1 79 2167 1 79 2173 1 79 2174 1 79 2176 1 79 2177 1 79 2187 1 79 2202 1 79 2216 1 79 2219 1 79 2222 1 79 2223 1 79 2237 1 79 2251 1 79 2254 1 79 2257 1 79 2258 1 79 2271 1 79 2274 1 79 2277 1 79 2278 1 79 2290 1 79 2293 1 79 2294 1 79 2296 1 79 2297 1 79 2299 1 79 2307 1 79 2321 1 79 2324 1 79 2327 1 79 2328 1 79 2341 1 79 2344 1 79 2347 1 79 2348 1 79 2360 1 79 2363 1 79 2364 1 79 2366 1 79 2367 1 79 2369 1 79 2376 1 79 2379 1 79 2382 1 79 2383 1 79 2395 1 79 2398 1 79 2399 1 79 2401 1 79 2402 1 79 2404 1 79 2410 1 79 2413 1 79 2414 1 79 2416 1 79 2417 1 79 2419 1 79 2425 1 79 2426 1 79 2428 1 79 2429 1 79 2433 1 79 2447 1 79 2450 1 79 2453 1 79 2454 1 79 2467 1 79 2470 1 79 2473 1 79 2474 1 79 2486 1 79 2489 1 79 2490 1 79 2492 1 79 2493 1 79 2495 1 79 2502 1 79 2505 1 79 2508 1 79 2509 1 79 2521 1 79 2524 1 79 2525 1 79 2527 1 79 2528 1 79 2530 1 79 2536 1 79 2539 1 79 2540 1 79 2542 1 79 2543 1 79 2545 1 79 2551 1 79 2552 1 79 2554 1 79 2555 1 79 2558 1 79 2561 1 79 2564 1 79 2565 1 79 2577 1 79 2580 1 79 2581 1 79 2583 1 79 2584 1 79 2586 1 79 2592 1 79 2595 1 79 2596 1 79 2598 1 79 2599 1 79 2601 1 79 2607 1 79 2608 1 79 2610 1 79 2611 1 79 2613 1 79 2616 1 79 2617 1 79 2619 1 79 2620 1 79 2622 1 79 2628 1 79 2629 1 79 2631 1 79 2632 1 79 2634 1 79 2635 1 79 2637 1 79 2638 1 79 2640 1 79 2649 1 79 2664 1 79 2678 1 79 2681 1 79 2684 1 79 2685 1 79 2699 1 79 2713 1 79 2716 1 79 2719 1 79 2720 1 79 2733 1 79 2736 1 79 2739 1 79 2740 1 79 2752 1 79 2755 1 79 2756 1 79 2758 1 79 2759 1 79 2761 1 79 2769 1 79 2783 1 79 2786 1 79 2789 1 79 2790 1 79 2803 1 79 2806 1 79 2809 1 79 2810 1 79 2822 1 79 2825 1 79 2826 1 79 2828 1 79 2829 1 79 2831 1 79 2838 1 79 2841 1 79 2844 1 79 2845 1 79 2857 1 79 2860 1 79 2861 1 79 2863 1 79 2864 1 79 2866 1 79 2872 1 79 2875 1 79 2876 1 79 2878 1 79 2879 1 79 2881 1 79 2887 1 79 2888 1 79 2890 1 79 2891 1 79 2895 1 79 2909 1 79 2912 1 79 2915 1 79 2916 1 79 2929 1 79 2932 1 79 2935 1 79 2936 1 79 2948 1 79 2951 1 79 2952 1 79 2954 1 79 2955 1 79 2957 1 79 2964 1 79 2967 1 79 2970 1 79 2971 1 79 2983 1 79 2986 1 79 2987 1 79 2989 1 79 2990 1 79 2992 1 79 2998 1 79 3001 1 79 3002 1 79 3004 1 79 3005 1 79 3007 1 79 3013 1 79 3014 1 79 3016 1 79 3017 1 79 3020 1 79 3023 1 79 3026 1 79 3027 1 79 3039 1 79 3042 1 79 3043 1 79 3045 1 79 3046 1 79 3048 1 79 3054 1 79 3057 1 79 3058 1 79 3060 1 79 3061 1 79 3063 1 79 3069 1 79 3070 1 79 3072 1 79 3073 1 79 3075 1 79 3078 1 79 3079 1 79 3081 1 79 3082 1 79 3084 1 79 3090 1 79 3091 1 79 3093 1 79 3094 1 79 3096 1 79 3097 1 79 3099 1 79 3100 1 79 3102 1 79 3105 1 79 3119 1 79 3122 1 79 3125 1 79 3126 1 79 3139 1 79 3142 1 79 3145 1 79 3146 1 79 3158 1 79 3161 1 79 3162 1 79 3164 1 79 3165 1 79 3167 1 79 3174 1 79 3177 1 79 3180 1 79 3181 1 79 3193 1 79 3196 1 79 3197 1 79 3199 1 79 3200 1 79 3202 1 79 3208 1 79 3211 1 79 3212 1 79 3214 1 79 3215 1 79 3217 1 79 3223 1 79 3224 1 79 3226 1 79 3227 1 79 3230 1 79 3233 1 79 3236 1 79 3237 1 79 3249 1 79 3252 1 79 3253 1 79 3255 1 79 3256 1 79 3258 1 79 3264 1 79 3267 1 79 3268 1 79 3270 1 79 3271 1 79 3273 1 79 3279 1 79 3280 1 79 3282 1 79 3283 1 79 3285 1 79 3288 1 79 3289 1 79 3291 1 79 3292 1 79 3294 1 79 3300 1 79 3301 1 79 3303 1 79 3304 1 79 3306 1 79 3307 1 79 3309 1 79 3310 1 79 3312 1 79 3314 1 79 3317 1 79 3320 1 79 3321 1 79 3333 1 79 3336 1 79 3337 1 79 3339 1 79 3340 1 79 3342 1 79 3348 1 79 3351 1 79 3352 1 79 3354 1 79 3355 1 79 3357 1 79 3363 1 79 3364 1 79 3366 1 79 3367 1 79 3369 1 79 3372 1 79 3373 1 79 3375 1 79 3376 1 79 3378 1 79 3384 1 79 3385 1 79 3387 1 79 3388 1 79 3390 1 79 3391 1 79 3393 1 79 3394 1 79 3396 1 79 3397 1 79 3400 1 79 3401 1 79 3403 1 79 3404 1 79 3406 1 79 3412 1 79 3413 1 79 3415 1 79 3416 1 79 3418 1 79 3419 1 79 3421 1 79 3422 1 79 3424 1 79 3425 1 79 3426 1 79 3428 1 79 3429 1 79 3431 1 79 3432 1 80 25 1 80 53 1 80 74 1 80 89 1 80 103 1 80 106 1 80 108 1 80 110 1 80 137 1 80 158 1 80 173 1 80 187 1 80 190 1 80 192 1 80 194 1 80 214 1 80 229 1 80 243 1 80 246 1 80 248 1 80 250 1 80 264 1 80 278 1 80 281 1 80 283 1 80 285 1 80 298 1 80 301 1 80 303 1 80 305 1 80 317 1 80 319 1 80 321 1 80 322 1 80 324 1 80 325 1 80 347 1 80 368 1 80 383 1 80 397 1 80 400 1 80 402 1 80 404 1 80 424 1 80 439 1 80 453 1 80 456 1 80 458 1 80 460 1 80 474 1 80 488 1 80 491 1 80 493 1 80 495 1 80 508 1 80 511 1 80 513 1 80 515 1 80 527 1 80 529 1 80 531 1 80 532 1 80 534 1 80 535 1 80 550 1 80 565 1 80 579 1 80 582 1 80 584 1 80 586 1 80 600 1 80 614 1 80 617 1 80 619 1 80 621 1 80 634 1 80 637 1 80 639 1 80 641 1 80 653 1 80 655 1 80 657 1 80 658 1 80 660 1 80 661 1 80 670 1 80 684 1 80 687 1 80 689 1 80 691 1 80 704 1 80 707 1 80 709 1 80 711 1 80 723 1 80 725 1 80 727 1 80 728 1 80 730 1 80 731 1 80 739 1 80 742 1 80 744 1 80 746 1 80 758 1 80 760 1 80 762 1 80 763 1 80 765 1 80 766 1 80 773 1 80 775 1 80 777 1 80 778 1 80 780 1 80 781 1 80 787 1 80 789 1 80 790 1 80 791 1 80 809 1 80 830 1 80 845 1 80 859 1 80 862 1 80 864 1 80 866 1 80 886 1 80 901 1 80 915 1 80 918 1 80 920 1 80 922 1 80 936 1 80 950 1 80 953 1 80 955 1 80 957 1 80 970 1 80 973 1 80 975 1 80 977 1 80 989 1 80 991 1 80 993 1 80 994 1 80 996 1 80 997 1 80 1012 1 80 1027 1 80 1041 1 80 1044 1 80 1046 1 80 1048 1 80 1062 1 80 1076 1 80 1079 1 80 1081 1 80 1083 1 80 1096 1 80 1099 1 80 1101 1 80 1103 1 80 1115 1 80 1117 1 80 1119 1 80 1120 1 80 1122 1 80 1123 1 80 1132 1 80 1146 1 80 1149 1 80 1151 1 80 1153 1 80 1166 1 80 1169 1 80 1171 1 80 1173 1 80 1185 1 80 1187 1 80 1189 1 80 1190 1 80 1192 1 80 1193 1 80 1201 1 80 1204 1 80 1206 1 80 1208 1 80 1220 1 80 1222 1 80 1224 1 80 1225 1 80 1227 1 80 1228 1 80 1235 1 80 1237 1 80 1239 1 80 1240 1 80 1242 1 80 1243 1 80 1249 1 80 1251 1 80 1252 1 80 1253 1 80 1264 1 80 1279 1 80 1293 1 80 1296 1 80 1298 1 80 1300 1 80 1314 1 80 1328 1 80 1331 1 80 1333 1 80 1335 1 80 1348 1 80 1351 1 80 1353 1 80 1355 1 80 1367 1 80 1369 1 80 1371 1 80 1372 1 80 1374 1 80 1375 1 80 1384 1 80 1398 1 80 1401 1 80 1403 1 80 1405 1 80 1418 1 80 1421 1 80 1423 1 80 1425 1 80 1437 1 80 1439 1 80 1441 1 80 1442 1 80 1444 1 80 1445 1 80 1453 1 80 1456 1 80 1458 1 80 1460 1 80 1472 1 80 1474 1 80 1476 1 80 1477 1 80 1479 1 80 1480 1 80 1487 1 80 1489 1 80 1491 1 80 1492 1 80 1494 1 80 1495 1 80 1501 1 80 1503 1 80 1504 1 80 1505 1 80 1510 1 80 1524 1 80 1527 1 80 1529 1 80 1531 1 80 1544 1 80 1547 1 80 1549 1 80 1551 1 80 1563 1 80 1565 1 80 1567 1 80 1568 1 80 1570 1 80 1571 1 80 1579 1 80 1582 1 80 1584 1 80 1586 1 80 1598 1 80 1600 1 80 1602 1 80 1603 1 80 1605 1 80 1606 1 80 1613 1 80 1615 1 80 1617 1 80 1618 1 80 1620 1 80 1621 1 80 1627 1 80 1629 1 80 1630 1 80 1631 1 80 1635 1 80 1638 1 80 1640 1 80 1642 1 80 1654 1 80 1656 1 80 1658 1 80 1659 1 80 1661 1 80 1662 1 80 1669 1 80 1671 1 80 1673 1 80 1674 1 80 1676 1 80 1677 1 80 1683 1 80 1685 1 80 1686 1 80 1687 1 80 1690 1 80 1692 1 80 1694 1 80 1695 1 80 1697 1 80 1698 1 80 1704 1 80 1706 1 80 1707 1 80 1708 1 80 1710 1 80 1712 1 80 1713 1 80 1714 1 80 1716 1 80 1733 1 80 1754 1 80 1769 1 80 1783 1 80 1786 1 80 1788 1 80 1790 1 80 1810 1 80 1825 1 80 1839 1 80 1842 1 80 1844 1 80 1846 1 80 1860 1 80 1874 1 80 1877 1 80 1879 1 80 1881 1 80 1894 1 80 1897 1 80 1899 1 80 1901 1 80 1913 1 80 1915 1 80 1917 1 80 1918 1 80 1920 1 80 1921 1 80 1936 1 80 1951 1 80 1965 1 80 1968 1 80 1970 1 80 1972 1 80 1986 1 80 2000 1 80 2003 1 80 2005 1 80 2007 1 80 2020 1 80 2023 1 80 2025 1 80 2027 1 80 2039 1 80 2041 1 80 2043 1 80 2044 1 80 2046 1 80 2047 1 80 2056 1 80 2070 1 80 2073 1 80 2075 1 80 2077 1 80 2090 1 80 2093 1 80 2095 1 80 2097 1 80 2109 1 80 2111 1 80 2113 1 80 2114 1 80 2116 1 80 2117 1 80 2125 1 80 2128 1 80 2130 1 80 2132 1 80 2144 1 80 2146 1 80 2148 1 80 2149 1 80 2151 1 80 2152 1 80 2159 1 80 2161 1 80 2163 1 80 2164 1 80 2166 1 80 2167 1 80 2173 1 80 2175 1 80 2176 1 80 2177 1 80 2188 1 80 2203 1 80 2217 1 80 2220 1 80 2222 1 80 2224 1 80 2238 1 80 2252 1 80 2255 1 80 2257 1 80 2259 1 80 2272 1 80 2275 1 80 2277 1 80 2279 1 80 2291 1 80 2293 1 80 2295 1 80 2296 1 80 2298 1 80 2299 1 80 2308 1 80 2322 1 80 2325 1 80 2327 1 80 2329 1 80 2342 1 80 2345 1 80 2347 1 80 2349 1 80 2361 1 80 2363 1 80 2365 1 80 2366 1 80 2368 1 80 2369 1 80 2377 1 80 2380 1 80 2382 1 80 2384 1 80 2396 1 80 2398 1 80 2400 1 80 2401 1 80 2403 1 80 2404 1 80 2411 1 80 2413 1 80 2415 1 80 2416 1 80 2418 1 80 2419 1 80 2425 1 80 2427 1 80 2428 1 80 2429 1 80 2434 1 80 2448 1 80 2451 1 80 2453 1 80 2455 1 80 2468 1 80 2471 1 80 2473 1 80 2475 1 80 2487 1 80 2489 1 80 2491 1 80 2492 1 80 2494 1 80 2495 1 80 2503 1 80 2506 1 80 2508 1 80 2510 1 80 2522 1 80 2524 1 80 2526 1 80 2527 1 80 2529 1 80 2530 1 80 2537 1 80 2539 1 80 2541 1 80 2542 1 80 2544 1 80 2545 1 80 2551 1 80 2553 1 80 2554 1 80 2555 1 80 2559 1 80 2562 1 80 2564 1 80 2566 1 80 2578 1 80 2580 1 80 2582 1 80 2583 1 80 2585 1 80 2586 1 80 2593 1 80 2595 1 80 2597 1 80 2598 1 80 2600 1 80 2601 1 80 2607 1 80 2609 1 80 2610 1 80 2611 1 80 2614 1 80 2616 1 80 2618 1 80 2619 1 80 2621 1 80 2622 1 80 2628 1 80 2630 1 80 2631 1 80 2632 1 80 2634 1 80 2636 1 80 2637 1 80 2638 1 80 2640 1 80 2650 1 80 2665 1 80 2679 1 80 2682 1 80 2684 1 80 2686 1 80 2700 1 80 2714 1 80 2717 1 80 2719 1 80 2721 1 80 2734 1 80 2737 1 80 2739 1 80 2741 1 80 2753 1 80 2755 1 80 2757 1 80 2758 1 80 2760 1 80 2761 1 80 2770 1 80 2784 1 80 2787 1 80 2789 1 80 2791 1 80 2804 1 80 2807 1 80 2809 1 80 2811 1 80 2823 1 80 2825 1 80 2827 1 80 2828 1 80 2830 1 80 2831 1 80 2839 1 80 2842 1 80 2844 1 80 2846 1 80 2858 1 80 2860 1 80 2862 1 80 2863 1 80 2865 1 80 2866 1 80 2873 1 80 2875 1 80 2877 1 80 2878 1 80 2880 1 80 2881 1 80 2887 1 80 2889 1 80 2890 1 80 2891 1 80 2896 1 80 2910 1 80 2913 1 80 2915 1 80 2917 1 80 2930 1 80 2933 1 80 2935 1 80 2937 1 80 2949 1 80 2951 1 80 2953 1 80 2954 1 80 2956 1 80 2957 1 80 2965 1 80 2968 1 80 2970 1 80 2972 1 80 2984 1 80 2986 1 80 2988 1 80 2989 1 80 2991 1 80 2992 1 80 2999 1 80 3001 1 80 3003 1 80 3004 1 80 3006 1 80 3007 1 80 3013 1 80 3015 1 80 3016 1 80 3017 1 80 3021 1 80 3024 1 80 3026 1 80 3028 1 80 3040 1 80 3042 1 80 3044 1 80 3045 1 80 3047 1 80 3048 1 80 3055 1 80 3057 1 80 3059 1 80 3060 1 80 3062 1 80 3063 1 80 3069 1 80 3071 1 80 3072 1 80 3073 1 80 3076 1 80 3078 1 80 3080 1 80 3081 1 80 3083 1 80 3084 1 80 3090 1 80 3092 1 80 3093 1 80 3094 1 80 3096 1 80 3098 1 80 3099 1 80 3100 1 80 3102 1 80 3106 1 80 3120 1 80 3123 1 80 3125 1 80 3127 1 80 3140 1 80 3143 1 80 3145 1 80 3147 1 80 3159 1 80 3161 1 80 3163 1 80 3164 1 80 3166 1 80 3167 1 80 3175 1 80 3178 1 80 3180 1 80 3182 1 80 3194 1 80 3196 1 80 3198 1 80 3199 1 80 3201 1 80 3202 1 80 3209 1 80 3211 1 80 3213 1 80 3214 1 80 3216 1 80 3217 1 80 3223 1 80 3225 1 80 3226 1 80 3227 1 80 3231 1 80 3234 1 80 3236 1 80 3238 1 80 3250 1 80 3252 1 80 3254 1 80 3255 1 80 3257 1 80 3258 1 80 3265 1 80 3267 1 80 3269 1 80 3270 1 80 3272 1 80 3273 1 80 3279 1 80 3281 1 80 3282 1 80 3283 1 80 3286 1 80 3288 1 80 3290 1 80 3291 1 80 3293 1 80 3294 1 80 3300 1 80 3302 1 80 3303 1 80 3304 1 80 3306 1 80 3308 1 80 3309 1 80 3310 1 80 3312 1 80 3315 1 80 3318 1 80 3320 1 80 3322 1 80 3334 1 80 3336 1 80 3338 1 80 3339 1 80 3341 1 80 3342 1 80 3349 1 80 3351 1 80 3353 1 80 3354 1 80 3356 1 80 3357 1 80 3363 1 80 3365 1 80 3366 1 80 3367 1 80 3370 1 80 3372 1 80 3374 1 80 3375 1 80 3377 1 80 3378 1 80 3384 1 80 3386 1 80 3387 1 80 3388 1 80 3390 1 80 3392 1 80 3393 1 80 3394 1 80 3396 1 80 3398 1 80 3400 1 80 3402 1 80 3403 1 80 3405 1 80 3406 1 80 3412 1 80 3414 1 80 3415 1 80 3416 1 80 3418 1 80 3420 1 80 3421 1 80 3422 1 80 3424 1 80 3425 1 80 3427 1 80 3428 1 80 3429 1 80 3431 1 80 3432 1 81 26 1 81 54 1 81 75 1 81 90 1 81 104 1 81 107 1 81 109 1 81 110 1 81 138 1 81 159 1 81 174 1 81 188 1 81 191 1 81 193 1 81 194 1 81 215 1 81 230 1 81 244 1 81 247 1 81 249 1 81 250 1 81 265 1 81 279 1 81 282 1 81 284 1 81 285 1 81 299 1 81 302 1 81 304 1 81 305 1 81 318 1 81 320 1 81 321 1 81 323 1 81 324 1 81 325 1 81 348 1 81 369 1 81 384 1 81 398 1 81 401 1 81 403 1 81 404 1 81 425 1 81 440 1 81 454 1 81 457 1 81 459 1 81 460 1 81 475 1 81 489 1 81 492 1 81 494 1 81 495 1 81 509 1 81 512 1 81 514 1 81 515 1 81 528 1 81 530 1 81 531 1 81 533 1 81 534 1 81 535 1 81 551 1 81 566 1 81 580 1 81 583 1 81 585 1 81 586 1 81 601 1 81 615 1 81 618 1 81 620 1 81 621 1 81 635 1 81 638 1 81 640 1 81 641 1 81 654 1 81 656 1 81 657 1 81 659 1 81 660 1 81 661 1 81 671 1 81 685 1 81 688 1 81 690 1 81 691 1 81 705 1 81 708 1 81 710 1 81 711 1 81 724 1 81 726 1 81 727 1 81 729 1 81 730 1 81 731 1 81 740 1 81 743 1 81 745 1 81 746 1 81 759 1 81 761 1 81 762 1 81 764 1 81 765 1 81 766 1 81 774 1 81 776 1 81 777 1 81 779 1 81 780 1 81 781 1 81 788 1 81 789 1 81 790 1 81 791 1 81 810 1 81 831 1 81 846 1 81 860 1 81 863 1 81 865 1 81 866 1 81 887 1 81 902 1 81 916 1 81 919 1 81 921 1 81 922 1 81 937 1 81 951 1 81 954 1 81 956 1 81 957 1 81 971 1 81 974 1 81 976 1 81 977 1 81 990 1 81 992 1 81 993 1 81 995 1 81 996 1 81 997 1 81 1013 1 81 1028 1 81 1042 1 81 1045 1 81 1047 1 81 1048 1 81 1063 1 81 1077 1 81 1080 1 81 1082 1 81 1083 1 81 1097 1 81 1100 1 81 1102 1 81 1103 1 81 1116 1 81 1118 1 81 1119 1 81 1121 1 81 1122 1 81 1123 1 81 1133 1 81 1147 1 81 1150 1 81 1152 1 81 1153 1 81 1167 1 81 1170 1 81 1172 1 81 1173 1 81 1186 1 81 1188 1 81 1189 1 81 1191 1 81 1192 1 81 1193 1 81 1202 1 81 1205 1 81 1207 1 81 1208 1 81 1221 1 81 1223 1 81 1224 1 81 1226 1 81 1227 1 81 1228 1 81 1236 1 81 1238 1 81 1239 1 81 1241 1 81 1242 1 81 1243 1 81 1250 1 81 1251 1 81 1252 1 81 1253 1 81 1265 1 81 1280 1 81 1294 1 81 1297 1 81 1299 1 81 1300 1 81 1315 1 81 1329 1 81 1332 1 81 1334 1 81 1335 1 81 1349 1 81 1352 1 81 1354 1 81 1355 1 81 1368 1 81 1370 1 81 1371 1 81 1373 1 81 1374 1 81 1375 1 81 1385 1 81 1399 1 81 1402 1 81 1404 1 81 1405 1 81 1419 1 81 1422 1 81 1424 1 81 1425 1 81 1438 1 81 1440 1 81 1441 1 81 1443 1 81 1444 1 81 1445 1 81 1454 1 81 1457 1 81 1459 1 81 1460 1 81 1473 1 81 1475 1 81 1476 1 81 1478 1 81 1479 1 81 1480 1 81 1488 1 81 1490 1 81 1491 1 81 1493 1 81 1494 1 81 1495 1 81 1502 1 81 1503 1 81 1504 1 81 1505 1 81 1511 1 81 1525 1 81 1528 1 81 1530 1 81 1531 1 81 1545 1 81 1548 1 81 1550 1 81 1551 1 81 1564 1 81 1566 1 81 1567 1 81 1569 1 81 1570 1 81 1571 1 81 1580 1 81 1583 1 81 1585 1 81 1586 1 81 1599 1 81 1601 1 81 1602 1 81 1604 1 81 1605 1 81 1606 1 81 1614 1 81 1616 1 81 1617 1 81 1619 1 81 1620 1 81 1621 1 81 1628 1 81 1629 1 81 1630 1 81 1631 1 81 1636 1 81 1639 1 81 1641 1 81 1642 1 81 1655 1 81 1657 1 81 1658 1 81 1660 1 81 1661 1 81 1662 1 81 1670 1 81 1672 1 81 1673 1 81 1675 1 81 1676 1 81 1677 1 81 1684 1 81 1685 1 81 1686 1 81 1687 1 81 1691 1 81 1693 1 81 1694 1 81 1696 1 81 1697 1 81 1698 1 81 1705 1 81 1706 1 81 1707 1 81 1708 1 81 1711 1 81 1712 1 81 1713 1 81 1714 1 81 1716 1 81 1734 1 81 1755 1 81 1770 1 81 1784 1 81 1787 1 81 1789 1 81 1790 1 81 1811 1 81 1826 1 81 1840 1 81 1843 1 81 1845 1 81 1846 1 81 1861 1 81 1875 1 81 1878 1 81 1880 1 81 1881 1 81 1895 1 81 1898 1 81 1900 1 81 1901 1 81 1914 1 81 1916 1 81 1917 1 81 1919 1 81 1920 1 81 1921 1 81 1937 1 81 1952 1 81 1966 1 81 1969 1 81 1971 1 81 1972 1 81 1987 1 81 2001 1 81 2004 1 81 2006 1 81 2007 1 81 2021 1 81 2024 1 81 2026 1 81 2027 1 81 2040 1 81 2042 1 81 2043 1 81 2045 1 81 2046 1 81 2047 1 81 2057 1 81 2071 1 81 2074 1 81 2076 1 81 2077 1 81 2091 1 81 2094 1 81 2096 1 81 2097 1 81 2110 1 81 2112 1 81 2113 1 81 2115 1 81 2116 1 81 2117 1 81 2126 1 81 2129 1 81 2131 1 81 2132 1 81 2145 1 81 2147 1 81 2148 1 81 2150 1 81 2151 1 81 2152 1 81 2160 1 81 2162 1 81 2163 1 81 2165 1 81 2166 1 81 2167 1 81 2174 1 81 2175 1 81 2176 1 81 2177 1 81 2189 1 81 2204 1 81 2218 1 81 2221 1 81 2223 1 81 2224 1 81 2239 1 81 2253 1 81 2256 1 81 2258 1 81 2259 1 81 2273 1 81 2276 1 81 2278 1 81 2279 1 81 2292 1 81 2294 1 81 2295 1 81 2297 1 81 2298 1 81 2299 1 81 2309 1 81 2323 1 81 2326 1 81 2328 1 81 2329 1 81 2343 1 81 2346 1 81 2348 1 81 2349 1 81 2362 1 81 2364 1 81 2365 1 81 2367 1 81 2368 1 81 2369 1 81 2378 1 81 2381 1 81 2383 1 81 2384 1 81 2397 1 81 2399 1 81 2400 1 81 2402 1 81 2403 1 81 2404 1 81 2412 1 81 2414 1 81 2415 1 81 2417 1 81 2418 1 81 2419 1 81 2426 1 81 2427 1 81 2428 1 81 2429 1 81 2435 1 81 2449 1 81 2452 1 81 2454 1 81 2455 1 81 2469 1 81 2472 1 81 2474 1 81 2475 1 81 2488 1 81 2490 1 81 2491 1 81 2493 1 81 2494 1 81 2495 1 81 2504 1 81 2507 1 81 2509 1 81 2510 1 81 2523 1 81 2525 1 81 2526 1 81 2528 1 81 2529 1 81 2530 1 81 2538 1 81 2540 1 81 2541 1 81 2543 1 81 2544 1 81 2545 1 81 2552 1 81 2553 1 81 2554 1 81 2555 1 81 2560 1 81 2563 1 81 2565 1 81 2566 1 81 2579 1 81 2581 1 81 2582 1 81 2584 1 81 2585 1 81 2586 1 81 2594 1 81 2596 1 81 2597 1 81 2599 1 81 2600 1 81 2601 1 81 2608 1 81 2609 1 81 2610 1 81 2611 1 81 2615 1 81 2617 1 81 2618 1 81 2620 1 81 2621 1 81 2622 1 81 2629 1 81 2630 1 81 2631 1 81 2632 1 81 2635 1 81 2636 1 81 2637 1 81 2638 1 81 2640 1 81 2651 1 81 2666 1 81 2680 1 81 2683 1 81 2685 1 81 2686 1 81 2701 1 81 2715 1 81 2718 1 81 2720 1 81 2721 1 81 2735 1 81 2738 1 81 2740 1 81 2741 1 81 2754 1 81 2756 1 81 2757 1 81 2759 1 81 2760 1 81 2761 1 81 2771 1 81 2785 1 81 2788 1 81 2790 1 81 2791 1 81 2805 1 81 2808 1 81 2810 1 81 2811 1 81 2824 1 81 2826 1 81 2827 1 81 2829 1 81 2830 1 81 2831 1 81 2840 1 81 2843 1 81 2845 1 81 2846 1 81 2859 1 81 2861 1 81 2862 1 81 2864 1 81 2865 1 81 2866 1 81 2874 1 81 2876 1 81 2877 1 81 2879 1 81 2880 1 81 2881 1 81 2888 1 81 2889 1 81 2890 1 81 2891 1 81 2897 1 81 2911 1 81 2914 1 81 2916 1 81 2917 1 81 2931 1 81 2934 1 81 2936 1 81 2937 1 81 2950 1 81 2952 1 81 2953 1 81 2955 1 81 2956 1 81 2957 1 81 2966 1 81 2969 1 81 2971 1 81 2972 1 81 2985 1 81 2987 1 81 2988 1 81 2990 1 81 2991 1 81 2992 1 81 3000 1 81 3002 1 81 3003 1 81 3005 1 81 3006 1 81 3007 1 81 3014 1 81 3015 1 81 3016 1 81 3017 1 81 3022 1 81 3025 1 81 3027 1 81 3028 1 81 3041 1 81 3043 1 81 3044 1 81 3046 1 81 3047 1 81 3048 1 81 3056 1 81 3058 1 81 3059 1 81 3061 1 81 3062 1 81 3063 1 81 3070 1 81 3071 1 81 3072 1 81 3073 1 81 3077 1 81 3079 1 81 3080 1 81 3082 1 81 3083 1 81 3084 1 81 3091 1 81 3092 1 81 3093 1 81 3094 1 81 3097 1 81 3098 1 81 3099 1 81 3100 1 81 3102 1 81 3107 1 81 3121 1 81 3124 1 81 3126 1 81 3127 1 81 3141 1 81 3144 1 81 3146 1 81 3147 1 81 3160 1 81 3162 1 81 3163 1 81 3165 1 81 3166 1 81 3167 1 81 3176 1 81 3179 1 81 3181 1 81 3182 1 81 3195 1 81 3197 1 81 3198 1 81 3200 1 81 3201 1 81 3202 1 81 3210 1 81 3212 1 81 3213 1 81 3215 1 81 3216 1 81 3217 1 81 3224 1 81 3225 1 81 3226 1 81 3227 1 81 3232 1 81 3235 1 81 3237 1 81 3238 1 81 3251 1 81 3253 1 81 3254 1 81 3256 1 81 3257 1 81 3258 1 81 3266 1 81 3268 1 81 3269 1 81 3271 1 81 3272 1 81 3273 1 81 3280 1 81 3281 1 81 3282 1 81 3283 1 81 3287 1 81 3289 1 81 3290 1 81 3292 1 81 3293 1 81 3294 1 81 3301 1 81 3302 1 81 3303 1 81 3304 1 81 3307 1 81 3308 1 81 3309 1 81 3310 1 81 3312 1 81 3316 1 81 3319 1 81 3321 1 81 3322 1 81 3335 1 81 3337 1 81 3338 1 81 3340 1 81 3341 1 81 3342 1 81 3350 1 81 3352 1 81 3353 1 81 3355 1 81 3356 1 81 3357 1 81 3364 1 81 3365 1 81 3366 1 81 3367 1 81 3371 1 81 3373 1 81 3374 1 81 3376 1 81 3377 1 81 3378 1 81 3385 1 81 3386 1 81 3387 1 81 3388 1 81 3391 1 81 3392 1 81 3393 1 81 3394 1 81 3396 1 81 3399 1 81 3401 1 81 3402 1 81 3404 1 81 3405 1 81 3406 1 81 3413 1 81 3414 1 81 3415 1 81 3416 1 81 3419 1 81 3420 1 81 3421 1 81 3422 1 81 3424 1 81 3426 1 81 3427 1 81 3428 1 81 3429 1 81 3431 1 81 3432 1 82 27 1 82 55 1 82 76 1 82 91 1 82 101 1 82 111 1 82 112 1 82 113 1 82 139 1 82 160 1 82 175 1 82 185 1 82 195 1 82 196 1 82 197 1 82 216 1 82 231 1 82 241 1 82 251 1 82 252 1 82 253 1 82 266 1 82 276 1 82 286 1 82 287 1 82 288 1 82 296 1 82 306 1 82 307 1 82 308 1 82 316 1 82 317 1 82 318 1 82 326 1 82 327 1 82 328 1 82 349 1 82 370 1 82 385 1 82 395 1 82 405 1 82 406 1 82 407 1 82 426 1 82 441 1 82 451 1 82 461 1 82 462 1 82 463 1 82 476 1 82 486 1 82 496 1 82 497 1 82 498 1 82 506 1 82 516 1 82 517 1 82 518 1 82 526 1 82 527 1 82 528 1 82 536 1 82 537 1 82 538 1 82 552 1 82 567 1 82 577 1 82 587 1 82 588 1 82 589 1 82 602 1 82 612 1 82 622 1 82 623 1 82 624 1 82 632 1 82 642 1 82 643 1 82 644 1 82 652 1 82 653 1 82 654 1 82 662 1 82 663 1 82 664 1 82 672 1 82 682 1 82 692 1 82 693 1 82 694 1 82 702 1 82 712 1 82 713 1 82 714 1 82 722 1 82 723 1 82 724 1 82 732 1 82 733 1 82 734 1 82 737 1 82 747 1 82 748 1 82 749 1 82 757 1 82 758 1 82 759 1 82 767 1 82 768 1 82 769 1 82 772 1 82 773 1 82 774 1 82 782 1 82 783 1 82 784 1 82 787 1 82 788 1 82 789 1 82 792 1 82 811 1 82 832 1 82 847 1 82 857 1 82 867 1 82 868 1 82 869 1 82 888 1 82 903 1 82 913 1 82 923 1 82 924 1 82 925 1 82 938 1 82 948 1 82 958 1 82 959 1 82 960 1 82 968 1 82 978 1 82 979 1 82 980 1 82 988 1 82 989 1 82 990 1 82 998 1 82 999 1 82 1000 1 82 1014 1 82 1029 1 82 1039 1 82 1049 1 82 1050 1 82 1051 1 82 1064 1 82 1074 1 82 1084 1 82 1085 1 82 1086 1 82 1094 1 82 1104 1 82 1105 1 82 1106 1 82 1114 1 82 1115 1 82 1116 1 82 1124 1 82 1125 1 82 1126 1 82 1134 1 82 1144 1 82 1154 1 82 1155 1 82 1156 1 82 1164 1 82 1174 1 82 1175 1 82 1176 1 82 1184 1 82 1185 1 82 1186 1 82 1194 1 82 1195 1 82 1196 1 82 1199 1 82 1209 1 82 1210 1 82 1211 1 82 1219 1 82 1220 1 82 1221 1 82 1229 1 82 1230 1 82 1231 1 82 1234 1 82 1235 1 82 1236 1 82 1244 1 82 1245 1 82 1246 1 82 1249 1 82 1250 1 82 1251 1 82 1254 1 82 1266 1 82 1281 1 82 1291 1 82 1301 1 82 1302 1 82 1303 1 82 1316 1 82 1326 1 82 1336 1 82 1337 1 82 1338 1 82 1346 1 82 1356 1 82 1357 1 82 1358 1 82 1366 1 82 1367 1 82 1368 1 82 1376 1 82 1377 1 82 1378 1 82 1386 1 82 1396 1 82 1406 1 82 1407 1 82 1408 1 82 1416 1 82 1426 1 82 1427 1 82 1428 1 82 1436 1 82 1437 1 82 1438 1 82 1446 1 82 1447 1 82 1448 1 82 1451 1 82 1461 1 82 1462 1 82 1463 1 82 1471 1 82 1472 1 82 1473 1 82 1481 1 82 1482 1 82 1483 1 82 1486 1 82 1487 1 82 1488 1 82 1496 1 82 1497 1 82 1498 1 82 1501 1 82 1502 1 82 1503 1 82 1506 1 82 1512 1 82 1522 1 82 1532 1 82 1533 1 82 1534 1 82 1542 1 82 1552 1 82 1553 1 82 1554 1 82 1562 1 82 1563 1 82 1564 1 82 1572 1 82 1573 1 82 1574 1 82 1577 1 82 1587 1 82 1588 1 82 1589 1 82 1597 1 82 1598 1 82 1599 1 82 1607 1 82 1608 1 82 1609 1 82 1612 1 82 1613 1 82 1614 1 82 1622 1 82 1623 1 82 1624 1 82 1627 1 82 1628 1 82 1629 1 82 1632 1 82 1633 1 82 1643 1 82 1644 1 82 1645 1 82 1653 1 82 1654 1 82 1655 1 82 1663 1 82 1664 1 82 1665 1 82 1668 1 82 1669 1 82 1670 1 82 1678 1 82 1679 1 82 1680 1 82 1683 1 82 1684 1 82 1685 1 82 1688 1 82 1689 1 82 1690 1 82 1691 1 82 1699 1 82 1700 1 82 1701 1 82 1704 1 82 1705 1 82 1706 1 82 1709 1 82 1710 1 82 1711 1 82 1712 1 82 1715 1 82 1716 1 82 1735 1 82 1756 1 82 1771 1 82 1781 1 82 1791 1 82 1792 1 82 1793 1 82 1812 1 82 1827 1 82 1837 1 82 1847 1 82 1848 1 82 1849 1 82 1862 1 82 1872 1 82 1882 1 82 1883 1 82 1884 1 82 1892 1 82 1902 1 82 1903 1 82 1904 1 82 1912 1 82 1913 1 82 1914 1 82 1922 1 82 1923 1 82 1924 1 82 1938 1 82 1953 1 82 1963 1 82 1973 1 82 1974 1 82 1975 1 82 1988 1 82 1998 1 82 2008 1 82 2009 1 82 2010 1 82 2018 1 82 2028 1 82 2029 1 82 2030 1 82 2038 1 82 2039 1 82 2040 1 82 2048 1 82 2049 1 82 2050 1 82 2058 1 82 2068 1 82 2078 1 82 2079 1 82 2080 1 82 2088 1 82 2098 1 82 2099 1 82 2100 1 82 2108 1 82 2109 1 82 2110 1 82 2118 1 82 2119 1 82 2120 1 82 2123 1 82 2133 1 82 2134 1 82 2135 1 82 2143 1 82 2144 1 82 2145 1 82 2153 1 82 2154 1 82 2155 1 82 2158 1 82 2159 1 82 2160 1 82 2168 1 82 2169 1 82 2170 1 82 2173 1 82 2174 1 82 2175 1 82 2178 1 82 2190 1 82 2205 1 82 2215 1 82 2225 1 82 2226 1 82 2227 1 82 2240 1 82 2250 1 82 2260 1 82 2261 1 82 2262 1 82 2270 1 82 2280 1 82 2281 1 82 2282 1 82 2290 1 82 2291 1 82 2292 1 82 2300 1 82 2301 1 82 2302 1 82 2310 1 82 2320 1 82 2330 1 82 2331 1 82 2332 1 82 2340 1 82 2350 1 82 2351 1 82 2352 1 82 2360 1 82 2361 1 82 2362 1 82 2370 1 82 2371 1 82 2372 1 82 2375 1 82 2385 1 82 2386 1 82 2387 1 82 2395 1 82 2396 1 82 2397 1 82 2405 1 82 2406 1 82 2407 1 82 2410 1 82 2411 1 82 2412 1 82 2420 1 82 2421 1 82 2422 1 82 2425 1 82 2426 1 82 2427 1 82 2430 1 82 2436 1 82 2446 1 82 2456 1 82 2457 1 82 2458 1 82 2466 1 82 2476 1 82 2477 1 82 2478 1 82 2486 1 82 2487 1 82 2488 1 82 2496 1 82 2497 1 82 2498 1 82 2501 1 82 2511 1 82 2512 1 82 2513 1 82 2521 1 82 2522 1 82 2523 1 82 2531 1 82 2532 1 82 2533 1 82 2536 1 82 2537 1 82 2538 1 82 2546 1 82 2547 1 82 2548 1 82 2551 1 82 2552 1 82 2553 1 82 2556 1 82 2557 1 82 2567 1 82 2568 1 82 2569 1 82 2577 1 82 2578 1 82 2579 1 82 2587 1 82 2588 1 82 2589 1 82 2592 1 82 2593 1 82 2594 1 82 2602 1 82 2603 1 82 2604 1 82 2607 1 82 2608 1 82 2609 1 82 2612 1 82 2613 1 82 2614 1 82 2615 1 82 2623 1 82 2624 1 82 2625 1 82 2628 1 82 2629 1 82 2630 1 82 2633 1 82 2634 1 82 2635 1 82 2636 1 82 2639 1 82 2640 1 82 2652 1 82 2667 1 82 2677 1 82 2687 1 82 2688 1 82 2689 1 82 2702 1 82 2712 1 82 2722 1 82 2723 1 82 2724 1 82 2732 1 82 2742 1 82 2743 1 82 2744 1 82 2752 1 82 2753 1 82 2754 1 82 2762 1 82 2763 1 82 2764 1 82 2772 1 82 2782 1 82 2792 1 82 2793 1 82 2794 1 82 2802 1 82 2812 1 82 2813 1 82 2814 1 82 2822 1 82 2823 1 82 2824 1 82 2832 1 82 2833 1 82 2834 1 82 2837 1 82 2847 1 82 2848 1 82 2849 1 82 2857 1 82 2858 1 82 2859 1 82 2867 1 82 2868 1 82 2869 1 82 2872 1 82 2873 1 82 2874 1 82 2882 1 82 2883 1 82 2884 1 82 2887 1 82 2888 1 82 2889 1 82 2892 1 82 2898 1 82 2908 1 82 2918 1 82 2919 1 82 2920 1 82 2928 1 82 2938 1 82 2939 1 82 2940 1 82 2948 1 82 2949 1 82 2950 1 82 2958 1 82 2959 1 82 2960 1 82 2963 1 82 2973 1 82 2974 1 82 2975 1 82 2983 1 82 2984 1 82 2985 1 82 2993 1 82 2994 1 82 2995 1 82 2998 1 82 2999 1 82 3000 1 82 3008 1 82 3009 1 82 3010 1 82 3013 1 82 3014 1 82 3015 1 82 3018 1 82 3019 1 82 3029 1 82 3030 1 82 3031 1 82 3039 1 82 3040 1 82 3041 1 82 3049 1 82 3050 1 82 3051 1 82 3054 1 82 3055 1 82 3056 1 82 3064 1 82 3065 1 82 3066 1 82 3069 1 82 3070 1 82 3071 1 82 3074 1 82 3075 1 82 3076 1 82 3077 1 82 3085 1 82 3086 1 82 3087 1 82 3090 1 82 3091 1 82 3092 1 82 3095 1 82 3096 1 82 3097 1 82 3098 1 82 3101 1 82 3102 1 82 3108 1 82 3118 1 82 3128 1 82 3129 1 82 3130 1 82 3138 1 82 3148 1 82 3149 1 82 3150 1 82 3158 1 82 3159 1 82 3160 1 82 3168 1 82 3169 1 82 3170 1 82 3173 1 82 3183 1 82 3184 1 82 3185 1 82 3193 1 82 3194 1 82 3195 1 82 3203 1 82 3204 1 82 3205 1 82 3208 1 82 3209 1 82 3210 1 82 3218 1 82 3219 1 82 3220 1 82 3223 1 82 3224 1 82 3225 1 82 3228 1 82 3229 1 82 3239 1 82 3240 1 82 3241 1 82 3249 1 82 3250 1 82 3251 1 82 3259 1 82 3260 1 82 3261 1 82 3264 1 82 3265 1 82 3266 1 82 3274 1 82 3275 1 82 3276 1 82 3279 1 82 3280 1 82 3281 1 82 3284 1 82 3285 1 82 3286 1 82 3287 1 82 3295 1 82 3296 1 82 3297 1 82 3300 1 82 3301 1 82 3302 1 82 3305 1 82 3306 1 82 3307 1 82 3308 1 82 3311 1 82 3312 1 82 3313 1 82 3323 1 82 3324 1 82 3325 1 82 3333 1 82 3334 1 82 3335 1 82 3343 1 82 3344 1 82 3345 1 82 3348 1 82 3349 1 82 3350 1 82 3358 1 82 3359 1 82 3360 1 82 3363 1 82 3364 1 82 3365 1 82 3368 1 82 3369 1 82 3370 1 82 3371 1 82 3379 1 82 3380 1 82 3381 1 82 3384 1 82 3385 1 82 3386 1 82 3389 1 82 3390 1 82 3391 1 82 3392 1 82 3395 1 82 3396 1 82 3397 1 82 3398 1 82 3399 1 82 3407 1 82 3408 1 82 3409 1 82 3412 1 82 3413 1 82 3414 1 82 3417 1 82 3418 1 82 3419 1 82 3420 1 82 3423 1 82 3424 1 82 3425 1 82 3426 1 82 3427 1 82 3430 1 82 3431 1 82 3432 1 83 28 1 83 56 1 83 77 1 83 92 1 83 102 1 83 111 1 83 114 1 83 115 1 83 140 1 83 161 1 83 176 1 83 186 1 83 195 1 83 198 1 83 199 1 83 217 1 83 232 1 83 242 1 83 251 1 83 254 1 83 255 1 83 267 1 83 277 1 83 286 1 83 289 1 83 290 1 83 297 1 83 306 1 83 309 1 83 310 1 83 316 1 83 319 1 83 320 1 83 326 1 83 327 1 83 329 1 83 350 1 83 371 1 83 386 1 83 396 1 83 405 1 83 408 1 83 409 1 83 427 1 83 442 1 83 452 1 83 461 1 83 464 1 83 465 1 83 477 1 83 487 1 83 496 1 83 499 1 83 500 1 83 507 1 83 516 1 83 519 1 83 520 1 83 526 1 83 529 1 83 530 1 83 536 1 83 537 1 83 539 1 83 553 1 83 568 1 83 578 1 83 587 1 83 590 1 83 591 1 83 603 1 83 613 1 83 622 1 83 625 1 83 626 1 83 633 1 83 642 1 83 645 1 83 646 1 83 652 1 83 655 1 83 656 1 83 662 1 83 663 1 83 665 1 83 673 1 83 683 1 83 692 1 83 695 1 83 696 1 83 703 1 83 712 1 83 715 1 83 716 1 83 722 1 83 725 1 83 726 1 83 732 1 83 733 1 83 735 1 83 738 1 83 747 1 83 750 1 83 751 1 83 757 1 83 760 1 83 761 1 83 767 1 83 768 1 83 770 1 83 772 1 83 775 1 83 776 1 83 782 1 83 783 1 83 785 1 83 787 1 83 788 1 83 790 1 83 792 1 83 812 1 83 833 1 83 848 1 83 858 1 83 867 1 83 870 1 83 871 1 83 889 1 83 904 1 83 914 1 83 923 1 83 926 1 83 927 1 83 939 1 83 949 1 83 958 1 83 961 1 83 962 1 83 969 1 83 978 1 83 981 1 83 982 1 83 988 1 83 991 1 83 992 1 83 998 1 83 999 1 83 1001 1 83 1015 1 83 1030 1 83 1040 1 83 1049 1 83 1052 1 83 1053 1 83 1065 1 83 1075 1 83 1084 1 83 1087 1 83 1088 1 83 1095 1 83 1104 1 83 1107 1 83 1108 1 83 1114 1 83 1117 1 83 1118 1 83 1124 1 83 1125 1 83 1127 1 83 1135 1 83 1145 1 83 1154 1 83 1157 1 83 1158 1 83 1165 1 83 1174 1 83 1177 1 83 1178 1 83 1184 1 83 1187 1 83 1188 1 83 1194 1 83 1195 1 83 1197 1 83 1200 1 83 1209 1 83 1212 1 83 1213 1 83 1219 1 83 1222 1 83 1223 1 83 1229 1 83 1230 1 83 1232 1 83 1234 1 83 1237 1 83 1238 1 83 1244 1 83 1245 1 83 1247 1 83 1249 1 83 1250 1 83 1252 1 83 1254 1 83 1267 1 83 1282 1 83 1292 1 83 1301 1 83 1304 1 83 1305 1 83 1317 1 83 1327 1 83 1336 1 83 1339 1 83 1340 1 83 1347 1 83 1356 1 83 1359 1 83 1360 1 83 1366 1 83 1369 1 83 1370 1 83 1376 1 83 1377 1 83 1379 1 83 1387 1 83 1397 1 83 1406 1 83 1409 1 83 1410 1 83 1417 1 83 1426 1 83 1429 1 83 1430 1 83 1436 1 83 1439 1 83 1440 1 83 1446 1 83 1447 1 83 1449 1 83 1452 1 83 1461 1 83 1464 1 83 1465 1 83 1471 1 83 1474 1 83 1475 1 83 1481 1 83 1482 1 83 1484 1 83 1486 1 83 1489 1 83 1490 1 83 1496 1 83 1497 1 83 1499 1 83 1501 1 83 1502 1 83 1504 1 83 1506 1 83 1513 1 83 1523 1 83 1532 1 83 1535 1 83 1536 1 83 1543 1 83 1552 1 83 1555 1 83 1556 1 83 1562 1 83 1565 1 83 1566 1 83 1572 1 83 1573 1 83 1575 1 83 1578 1 83 1587 1 83 1590 1 83 1591 1 83 1597 1 83 1600 1 83 1601 1 83 1607 1 83 1608 1 83 1610 1 83 1612 1 83 1615 1 83 1616 1 83 1622 1 83 1623 1 83 1625 1 83 1627 1 83 1628 1 83 1630 1 83 1632 1 83 1634 1 83 1643 1 83 1646 1 83 1647 1 83 1653 1 83 1656 1 83 1657 1 83 1663 1 83 1664 1 83 1666 1 83 1668 1 83 1671 1 83 1672 1 83 1678 1 83 1679 1 83 1681 1 83 1683 1 83 1684 1 83 1686 1 83 1688 1 83 1689 1 83 1692 1 83 1693 1 83 1699 1 83 1700 1 83 1702 1 83 1704 1 83 1705 1 83 1707 1 83 1709 1 83 1710 1 83 1711 1 83 1713 1 83 1715 1 83 1716 1 83 1736 1 83 1757 1 83 1772 1 83 1782 1 83 1791 1 83 1794 1 83 1795 1 83 1813 1 83 1828 1 83 1838 1 83 1847 1 83 1850 1 83 1851 1 83 1863 1 83 1873 1 83 1882 1 83 1885 1 83 1886 1 83 1893 1 83 1902 1 83 1905 1 83 1906 1 83 1912 1 83 1915 1 83 1916 1 83 1922 1 83 1923 1 83 1925 1 83 1939 1 83 1954 1 83 1964 1 83 1973 1 83 1976 1 83 1977 1 83 1989 1 83 1999 1 83 2008 1 83 2011 1 83 2012 1 83 2019 1 83 2028 1 83 2031 1 83 2032 1 83 2038 1 83 2041 1 83 2042 1 83 2048 1 83 2049 1 83 2051 1 83 2059 1 83 2069 1 83 2078 1 83 2081 1 83 2082 1 83 2089 1 83 2098 1 83 2101 1 83 2102 1 83 2108 1 83 2111 1 83 2112 1 83 2118 1 83 2119 1 83 2121 1 83 2124 1 83 2133 1 83 2136 1 83 2137 1 83 2143 1 83 2146 1 83 2147 1 83 2153 1 83 2154 1 83 2156 1 83 2158 1 83 2161 1 83 2162 1 83 2168 1 83 2169 1 83 2171 1 83 2173 1 83 2174 1 83 2176 1 83 2178 1 83 2191 1 83 2206 1 83 2216 1 83 2225 1 83 2228 1 83 2229 1 83 2241 1 83 2251 1 83 2260 1 83 2263 1 83 2264 1 83 2271 1 83 2280 1 83 2283 1 83 2284 1 83 2290 1 83 2293 1 83 2294 1 83 2300 1 83 2301 1 83 2303 1 83 2311 1 83 2321 1 83 2330 1 83 2333 1 83 2334 1 83 2341 1 83 2350 1 83 2353 1 83 2354 1 83 2360 1 83 2363 1 83 2364 1 83 2370 1 83 2371 1 83 2373 1 83 2376 1 83 2385 1 83 2388 1 83 2389 1 83 2395 1 83 2398 1 83 2399 1 83 2405 1 83 2406 1 83 2408 1 83 2410 1 83 2413 1 83 2414 1 83 2420 1 83 2421 1 83 2423 1 83 2425 1 83 2426 1 83 2428 1 83 2430 1 83 2437 1 83 2447 1 83 2456 1 83 2459 1 83 2460 1 83 2467 1 83 2476 1 83 2479 1 83 2480 1 83 2486 1 83 2489 1 83 2490 1 83 2496 1 83 2497 1 83 2499 1 83 2502 1 83 2511 1 83 2514 1 83 2515 1 83 2521 1 83 2524 1 83 2525 1 83 2531 1 83 2532 1 83 2534 1 83 2536 1 83 2539 1 83 2540 1 83 2546 1 83 2547 1 83 2549 1 83 2551 1 83 2552 1 83 2554 1 83 2556 1 83 2558 1 83 2567 1 83 2570 1 83 2571 1 83 2577 1 83 2580 1 83 2581 1 83 2587 1 83 2588 1 83 2590 1 83 2592 1 83 2595 1 83 2596 1 83 2602 1 83 2603 1 83 2605 1 83 2607 1 83 2608 1 83 2610 1 83 2612 1 83 2613 1 83 2616 1 83 2617 1 83 2623 1 83 2624 1 83 2626 1 83 2628 1 83 2629 1 83 2631 1 83 2633 1 83 2634 1 83 2635 1 83 2637 1 83 2639 1 83 2640 1 83 2653 1 83 2668 1 83 2678 1 83 2687 1 83 2690 1 83 2691 1 83 2703 1 83 2713 1 83 2722 1 83 2725 1 83 2726 1 83 2733 1 83 2742 1 83 2745 1 83 2746 1 83 2752 1 83 2755 1 83 2756 1 83 2762 1 83 2763 1 83 2765 1 83 2773 1 83 2783 1 83 2792 1 83 2795 1 83 2796 1 83 2803 1 83 2812 1 83 2815 1 83 2816 1 83 2822 1 83 2825 1 83 2826 1 83 2832 1 83 2833 1 83 2835 1 83 2838 1 83 2847 1 83 2850 1 83 2851 1 83 2857 1 83 2860 1 83 2861 1 83 2867 1 83 2868 1 83 2870 1 83 2872 1 83 2875 1 83 2876 1 83 2882 1 83 2883 1 83 2885 1 83 2887 1 83 2888 1 83 2890 1 83 2892 1 83 2899 1 83 2909 1 83 2918 1 83 2921 1 83 2922 1 83 2929 1 83 2938 1 83 2941 1 83 2942 1 83 2948 1 83 2951 1 83 2952 1 83 2958 1 83 2959 1 83 2961 1 83 2964 1 83 2973 1 83 2976 1 83 2977 1 83 2983 1 83 2986 1 83 2987 1 83 2993 1 83 2994 1 83 2996 1 83 2998 1 83 3001 1 83 3002 1 83 3008 1 83 3009 1 83 3011 1 83 3013 1 83 3014 1 83 3016 1 83 3018 1 83 3020 1 83 3029 1 83 3032 1 83 3033 1 83 3039 1 83 3042 1 83 3043 1 83 3049 1 83 3050 1 83 3052 1 83 3054 1 83 3057 1 83 3058 1 83 3064 1 83 3065 1 83 3067 1 83 3069 1 83 3070 1 83 3072 1 83 3074 1 83 3075 1 83 3078 1 83 3079 1 83 3085 1 83 3086 1 83 3088 1 83 3090 1 83 3091 1 83 3093 1 83 3095 1 83 3096 1 83 3097 1 83 3099 1 83 3101 1 83 3102 1 83 3109 1 83 3119 1 83 3128 1 83 3131 1 83 3132 1 83 3139 1 83 3148 1 83 3151 1 83 3152 1 83 3158 1 83 3161 1 83 3162 1 83 3168 1 83 3169 1 83 3171 1 83 3174 1 83 3183 1 83 3186 1 83 3187 1 83 3193 1 83 3196 1 83 3197 1 83 3203 1 83 3204 1 83 3206 1 83 3208 1 83 3211 1 83 3212 1 83 3218 1 83 3219 1 83 3221 1 83 3223 1 83 3224 1 83 3226 1 83 3228 1 83 3230 1 83 3239 1 83 3242 1 83 3243 1 83 3249 1 83 3252 1 83 3253 1 83 3259 1 83 3260 1 83 3262 1 83 3264 1 83 3267 1 83 3268 1 83 3274 1 83 3275 1 83 3277 1 83 3279 1 83 3280 1 83 3282 1 83 3284 1 83 3285 1 83 3288 1 83 3289 1 83 3295 1 83 3296 1 83 3298 1 83 3300 1 83 3301 1 83 3303 1 83 3305 1 83 3306 1 83 3307 1 83 3309 1 83 3311 1 83 3312 1 83 3314 1 83 3323 1 83 3326 1 83 3327 1 83 3333 1 83 3336 1 83 3337 1 83 3343 1 83 3344 1 83 3346 1 83 3348 1 83 3351 1 83 3352 1 83 3358 1 83 3359 1 83 3361 1 83 3363 1 83 3364 1 83 3366 1 83 3368 1 83 3369 1 83 3372 1 83 3373 1 83 3379 1 83 3380 1 83 3382 1 83 3384 1 83 3385 1 83 3387 1 83 3389 1 83 3390 1 83 3391 1 83 3393 1 83 3395 1 83 3396 1 83 3397 1 83 3400 1 83 3401 1 83 3407 1 83 3408 1 83 3410 1 83 3412 1 83 3413 1 83 3415 1 83 3417 1 83 3418 1 83 3419 1 83 3421 1 83 3423 1 83 3424 1 83 3425 1 83 3426 1 83 3428 1 83 3430 1 83 3431 1 83 3432 1 84 29 1 84 57 1 84 78 1 84 93 1 84 103 1 84 112 1 84 114 1 84 116 1 84 141 1 84 162 1 84 177 1 84 187 1 84 196 1 84 198 1 84 200 1 84 218 1 84 233 1 84 243 1 84 252 1 84 254 1 84 256 1 84 268 1 84 278 1 84 287 1 84 289 1 84 291 1 84 298 1 84 307 1 84 309 1 84 311 1 84 317 1 84 319 1 84 321 1 84 326 1 84 328 1 84 329 1 84 351 1 84 372 1 84 387 1 84 397 1 84 406 1 84 408 1 84 410 1 84 428 1 84 443 1 84 453 1 84 462 1 84 464 1 84 466 1 84 478 1 84 488 1 84 497 1 84 499 1 84 501 1 84 508 1 84 517 1 84 519 1 84 521 1 84 527 1 84 529 1 84 531 1 84 536 1 84 538 1 84 539 1 84 554 1 84 569 1 84 579 1 84 588 1 84 590 1 84 592 1 84 604 1 84 614 1 84 623 1 84 625 1 84 627 1 84 634 1 84 643 1 84 645 1 84 647 1 84 653 1 84 655 1 84 657 1 84 662 1 84 664 1 84 665 1 84 674 1 84 684 1 84 693 1 84 695 1 84 697 1 84 704 1 84 713 1 84 715 1 84 717 1 84 723 1 84 725 1 84 727 1 84 732 1 84 734 1 84 735 1 84 739 1 84 748 1 84 750 1 84 752 1 84 758 1 84 760 1 84 762 1 84 767 1 84 769 1 84 770 1 84 773 1 84 775 1 84 777 1 84 782 1 84 784 1 84 785 1 84 787 1 84 789 1 84 790 1 84 792 1 84 813 1 84 834 1 84 849 1 84 859 1 84 868 1 84 870 1 84 872 1 84 890 1 84 905 1 84 915 1 84 924 1 84 926 1 84 928 1 84 940 1 84 950 1 84 959 1 84 961 1 84 963 1 84 970 1 84 979 1 84 981 1 84 983 1 84 989 1 84 991 1 84 993 1 84 998 1 84 1000 1 84 1001 1 84 1016 1 84 1031 1 84 1041 1 84 1050 1 84 1052 1 84 1054 1 84 1066 1 84 1076 1 84 1085 1 84 1087 1 84 1089 1 84 1096 1 84 1105 1 84 1107 1 84 1109 1 84 1115 1 84 1117 1 84 1119 1 84 1124 1 84 1126 1 84 1127 1 84 1136 1 84 1146 1 84 1155 1 84 1157 1 84 1159 1 84 1166 1 84 1175 1 84 1177 1 84 1179 1 84 1185 1 84 1187 1 84 1189 1 84 1194 1 84 1196 1 84 1197 1 84 1201 1 84 1210 1 84 1212 1 84 1214 1 84 1220 1 84 1222 1 84 1224 1 84 1229 1 84 1231 1 84 1232 1 84 1235 1 84 1237 1 84 1239 1 84 1244 1 84 1246 1 84 1247 1 84 1249 1 84 1251 1 84 1252 1 84 1254 1 84 1268 1 84 1283 1 84 1293 1 84 1302 1 84 1304 1 84 1306 1 84 1318 1 84 1328 1 84 1337 1 84 1339 1 84 1341 1 84 1348 1 84 1357 1 84 1359 1 84 1361 1 84 1367 1 84 1369 1 84 1371 1 84 1376 1 84 1378 1 84 1379 1 84 1388 1 84 1398 1 84 1407 1 84 1409 1 84 1411 1 84 1418 1 84 1427 1 84 1429 1 84 1431 1 84 1437 1 84 1439 1 84 1441 1 84 1446 1 84 1448 1 84 1449 1 84 1453 1 84 1462 1 84 1464 1 84 1466 1 84 1472 1 84 1474 1 84 1476 1 84 1481 1 84 1483 1 84 1484 1 84 1487 1 84 1489 1 84 1491 1 84 1496 1 84 1498 1 84 1499 1 84 1501 1 84 1503 1 84 1504 1 84 1506 1 84 1514 1 84 1524 1 84 1533 1 84 1535 1 84 1537 1 84 1544 1 84 1553 1 84 1555 1 84 1557 1 84 1563 1 84 1565 1 84 1567 1 84 1572 1 84 1574 1 84 1575 1 84 1579 1 84 1588 1 84 1590 1 84 1592 1 84 1598 1 84 1600 1 84 1602 1 84 1607 1 84 1609 1 84 1610 1 84 1613 1 84 1615 1 84 1617 1 84 1622 1 84 1624 1 84 1625 1 84 1627 1 84 1629 1 84 1630 1 84 1632 1 84 1635 1 84 1644 1 84 1646 1 84 1648 1 84 1654 1 84 1656 1 84 1658 1 84 1663 1 84 1665 1 84 1666 1 84 1669 1 84 1671 1 84 1673 1 84 1678 1 84 1680 1 84 1681 1 84 1683 1 84 1685 1 84 1686 1 84 1688 1 84 1690 1 84 1692 1 84 1694 1 84 1699 1 84 1701 1 84 1702 1 84 1704 1 84 1706 1 84 1707 1 84 1709 1 84 1710 1 84 1712 1 84 1713 1 84 1715 1 84 1716 1 84 1737 1 84 1758 1 84 1773 1 84 1783 1 84 1792 1 84 1794 1 84 1796 1 84 1814 1 84 1829 1 84 1839 1 84 1848 1 84 1850 1 84 1852 1 84 1864 1 84 1874 1 84 1883 1 84 1885 1 84 1887 1 84 1894 1 84 1903 1 84 1905 1 84 1907 1 84 1913 1 84 1915 1 84 1917 1 84 1922 1 84 1924 1 84 1925 1 84 1940 1 84 1955 1 84 1965 1 84 1974 1 84 1976 1 84 1978 1 84 1990 1 84 2000 1 84 2009 1 84 2011 1 84 2013 1 84 2020 1 84 2029 1 84 2031 1 84 2033 1 84 2039 1 84 2041 1 84 2043 1 84 2048 1 84 2050 1 84 2051 1 84 2060 1 84 2070 1 84 2079 1 84 2081 1 84 2083 1 84 2090 1 84 2099 1 84 2101 1 84 2103 1 84 2109 1 84 2111 1 84 2113 1 84 2118 1 84 2120 1 84 2121 1 84 2125 1 84 2134 1 84 2136 1 84 2138 1 84 2144 1 84 2146 1 84 2148 1 84 2153 1 84 2155 1 84 2156 1 84 2159 1 84 2161 1 84 2163 1 84 2168 1 84 2170 1 84 2171 1 84 2173 1 84 2175 1 84 2176 1 84 2178 1 84 2192 1 84 2207 1 84 2217 1 84 2226 1 84 2228 1 84 2230 1 84 2242 1 84 2252 1 84 2261 1 84 2263 1 84 2265 1 84 2272 1 84 2281 1 84 2283 1 84 2285 1 84 2291 1 84 2293 1 84 2295 1 84 2300 1 84 2302 1 84 2303 1 84 2312 1 84 2322 1 84 2331 1 84 2333 1 84 2335 1 84 2342 1 84 2351 1 84 2353 1 84 2355 1 84 2361 1 84 2363 1 84 2365 1 84 2370 1 84 2372 1 84 2373 1 84 2377 1 84 2386 1 84 2388 1 84 2390 1 84 2396 1 84 2398 1 84 2400 1 84 2405 1 84 2407 1 84 2408 1 84 2411 1 84 2413 1 84 2415 1 84 2420 1 84 2422 1 84 2423 1 84 2425 1 84 2427 1 84 2428 1 84 2430 1 84 2438 1 84 2448 1 84 2457 1 84 2459 1 84 2461 1 84 2468 1 84 2477 1 84 2479 1 84 2481 1 84 2487 1 84 2489 1 84 2491 1 84 2496 1 84 2498 1 84 2499 1 84 2503 1 84 2512 1 84 2514 1 84 2516 1 84 2522 1 84 2524 1 84 2526 1 84 2531 1 84 2533 1 84 2534 1 84 2537 1 84 2539 1 84 2541 1 84 2546 1 84 2548 1 84 2549 1 84 2551 1 84 2553 1 84 2554 1 84 2556 1 84 2559 1 84 2568 1 84 2570 1 84 2572 1 84 2578 1 84 2580 1 84 2582 1 84 2587 1 84 2589 1 84 2590 1 84 2593 1 84 2595 1 84 2597 1 84 2602 1 84 2604 1 84 2605 1 84 2607 1 84 2609 1 84 2610 1 84 2612 1 84 2614 1 84 2616 1 84 2618 1 84 2623 1 84 2625 1 84 2626 1 84 2628 1 84 2630 1 84 2631 1 84 2633 1 84 2634 1 84 2636 1 84 2637 1 84 2639 1 84 2640 1 84 2654 1 84 2669 1 84 2679 1 84 2688 1 84 2690 1 84 2692 1 84 2704 1 84 2714 1 84 2723 1 84 2725 1 84 2727 1 84 2734 1 84 2743 1 84 2745 1 84 2747 1 84 2753 1 84 2755 1 84 2757 1 84 2762 1 84 2764 1 84 2765 1 84 2774 1 84 2784 1 84 2793 1 84 2795 1 84 2797 1 84 2804 1 84 2813 1 84 2815 1 84 2817 1 84 2823 1 84 2825 1 84 2827 1 84 2832 1 84 2834 1 84 2835 1 84 2839 1 84 2848 1 84 2850 1 84 2852 1 84 2858 1 84 2860 1 84 2862 1 84 2867 1 84 2869 1 84 2870 1 84 2873 1 84 2875 1 84 2877 1 84 2882 1 84 2884 1 84 2885 1 84 2887 1 84 2889 1 84 2890 1 84 2892 1 84 2900 1 84 2910 1 84 2919 1 84 2921 1 84 2923 1 84 2930 1 84 2939 1 84 2941 1 84 2943 1 84 2949 1 84 2951 1 84 2953 1 84 2958 1 84 2960 1 84 2961 1 84 2965 1 84 2974 1 84 2976 1 84 2978 1 84 2984 1 84 2986 1 84 2988 1 84 2993 1 84 2995 1 84 2996 1 84 2999 1 84 3001 1 84 3003 1 84 3008 1 84 3010 1 84 3011 1 84 3013 1 84 3015 1 84 3016 1 84 3018 1 84 3021 1 84 3030 1 84 3032 1 84 3034 1 84 3040 1 84 3042 1 84 3044 1 84 3049 1 84 3051 1 84 3052 1 84 3055 1 84 3057 1 84 3059 1 84 3064 1 84 3066 1 84 3067 1 84 3069 1 84 3071 1 84 3072 1 84 3074 1 84 3076 1 84 3078 1 84 3080 1 84 3085 1 84 3087 1 84 3088 1 84 3090 1 84 3092 1 84 3093 1 84 3095 1 84 3096 1 84 3098 1 84 3099 1 84 3101 1 84 3102 1 84 3110 1 84 3120 1 84 3129 1 84 3131 1 84 3133 1 84 3140 1 84 3149 1 84 3151 1 84 3153 1 84 3159 1 84 3161 1 84 3163 1 84 3168 1 84 3170 1 84 3171 1 84 3175 1 84 3184 1 84 3186 1 84 3188 1 84 3194 1 84 3196 1 84 3198 1 84 3203 1 84 3205 1 84 3206 1 84 3209 1 84 3211 1 84 3213 1 84 3218 1 84 3220 1 84 3221 1 84 3223 1 84 3225 1 84 3226 1 84 3228 1 84 3231 1 84 3240 1 84 3242 1 84 3244 1 84 3250 1 84 3252 1 84 3254 1 84 3259 1 84 3261 1 84 3262 1 84 3265 1 84 3267 1 84 3269 1 84 3274 1 84 3276 1 84 3277 1 84 3279 1 84 3281 1 84 3282 1 84 3284 1 84 3286 1 84 3288 1 84 3290 1 84 3295 1 84 3297 1 84 3298 1 84 3300 1 84 3302 1 84 3303 1 84 3305 1 84 3306 1 84 3308 1 84 3309 1 84 3311 1 84 3312 1 84 3315 1 84 3324 1 84 3326 1 84 3328 1 84 3334 1 84 3336 1 84 3338 1 84 3343 1 84 3345 1 84 3346 1 84 3349 1 84 3351 1 84 3353 1 84 3358 1 84 3360 1 84 3361 1 84 3363 1 84 3365 1 84 3366 1 84 3368 1 84 3370 1 84 3372 1 84 3374 1 84 3379 1 84 3381 1 84 3382 1 84 3384 1 84 3386 1 84 3387 1 84 3389 1 84 3390 1 84 3392 1 84 3393 1 84 3395 1 84 3396 1 84 3398 1 84 3400 1 84 3402 1 84 3407 1 84 3409 1 84 3410 1 84 3412 1 84 3414 1 84 3415 1 84 3417 1 84 3418 1 84 3420 1 84 3421 1 84 3423 1 84 3424 1 84 3425 1 84 3427 1 84 3428 1 84 3430 1 84 3431 1 84 3432 1 85 30 1 85 58 1 85 79 1 85 94 1 85 104 1 85 113 1 85 115 1 85 116 1 85 142 1 85 163 1 85 178 1 85 188 1 85 197 1 85 199 1 85 200 1 85 219 1 85 234 1 85 244 1 85 253 1 85 255 1 85 256 1 85 269 1 85 279 1 85 288 1 85 290 1 85 291 1 85 299 1 85 308 1 85 310 1 85 311 1 85 318 1 85 320 1 85 321 1 85 327 1 85 328 1 85 329 1 85 352 1 85 373 1 85 388 1 85 398 1 85 407 1 85 409 1 85 410 1 85 429 1 85 444 1 85 454 1 85 463 1 85 465 1 85 466 1 85 479 1 85 489 1 85 498 1 85 500 1 85 501 1 85 509 1 85 518 1 85 520 1 85 521 1 85 528 1 85 530 1 85 531 1 85 537 1 85 538 1 85 539 1 85 555 1 85 570 1 85 580 1 85 589 1 85 591 1 85 592 1 85 605 1 85 615 1 85 624 1 85 626 1 85 627 1 85 635 1 85 644 1 85 646 1 85 647 1 85 654 1 85 656 1 85 657 1 85 663 1 85 664 1 85 665 1 85 675 1 85 685 1 85 694 1 85 696 1 85 697 1 85 705 1 85 714 1 85 716 1 85 717 1 85 724 1 85 726 1 85 727 1 85 733 1 85 734 1 85 735 1 85 740 1 85 749 1 85 751 1 85 752 1 85 759 1 85 761 1 85 762 1 85 768 1 85 769 1 85 770 1 85 774 1 85 776 1 85 777 1 85 783 1 85 784 1 85 785 1 85 788 1 85 789 1 85 790 1 85 792 1 85 814 1 85 835 1 85 850 1 85 860 1 85 869 1 85 871 1 85 872 1 85 891 1 85 906 1 85 916 1 85 925 1 85 927 1 85 928 1 85 941 1 85 951 1 85 960 1 85 962 1 85 963 1 85 971 1 85 980 1 85 982 1 85 983 1 85 990 1 85 992 1 85 993 1 85 999 1 85 1000 1 85 1001 1 85 1017 1 85 1032 1 85 1042 1 85 1051 1 85 1053 1 85 1054 1 85 1067 1 85 1077 1 85 1086 1 85 1088 1 85 1089 1 85 1097 1 85 1106 1 85 1108 1 85 1109 1 85 1116 1 85 1118 1 85 1119 1 85 1125 1 85 1126 1 85 1127 1 85 1137 1 85 1147 1 85 1156 1 85 1158 1 85 1159 1 85 1167 1 85 1176 1 85 1178 1 85 1179 1 85 1186 1 85 1188 1 85 1189 1 85 1195 1 85 1196 1 85 1197 1 85 1202 1 85 1211 1 85 1213 1 85 1214 1 85 1221 1 85 1223 1 85 1224 1 85 1230 1 85 1231 1 85 1232 1 85 1236 1 85 1238 1 85 1239 1 85 1245 1 85 1246 1 85 1247 1 85 1250 1 85 1251 1 85 1252 1 85 1254 1 85 1269 1 85 1284 1 85 1294 1 85 1303 1 85 1305 1 85 1306 1 85 1319 1 85 1329 1 85 1338 1 85 1340 1 85 1341 1 85 1349 1 85 1358 1 85 1360 1 85 1361 1 85 1368 1 85 1370 1 85 1371 1 85 1377 1 85 1378 1 85 1379 1 85 1389 1 85 1399 1 85 1408 1 85 1410 1 85 1411 1 85 1419 1 85 1428 1 85 1430 1 85 1431 1 85 1438 1 85 1440 1 85 1441 1 85 1447 1 85 1448 1 85 1449 1 85 1454 1 85 1463 1 85 1465 1 85 1466 1 85 1473 1 85 1475 1 85 1476 1 85 1482 1 85 1483 1 85 1484 1 85 1488 1 85 1490 1 85 1491 1 85 1497 1 85 1498 1 85 1499 1 85 1502 1 85 1503 1 85 1504 1 85 1506 1 85 1515 1 85 1525 1 85 1534 1 85 1536 1 85 1537 1 85 1545 1 85 1554 1 85 1556 1 85 1557 1 85 1564 1 85 1566 1 85 1567 1 85 1573 1 85 1574 1 85 1575 1 85 1580 1 85 1589 1 85 1591 1 85 1592 1 85 1599 1 85 1601 1 85 1602 1 85 1608 1 85 1609 1 85 1610 1 85 1614 1 85 1616 1 85 1617 1 85 1623 1 85 1624 1 85 1625 1 85 1628 1 85 1629 1 85 1630 1 85 1632 1 85 1636 1 85 1645 1 85 1647 1 85 1648 1 85 1655 1 85 1657 1 85 1658 1 85 1664 1 85 1665 1 85 1666 1 85 1670 1 85 1672 1 85 1673 1 85 1679 1 85 1680 1 85 1681 1 85 1684 1 85 1685 1 85 1686 1 85 1688 1 85 1691 1 85 1693 1 85 1694 1 85 1700 1 85 1701 1 85 1702 1 85 1705 1 85 1706 1 85 1707 1 85 1709 1 85 1711 1 85 1712 1 85 1713 1 85 1715 1 85 1716 1 85 1738 1 85 1759 1 85 1774 1 85 1784 1 85 1793 1 85 1795 1 85 1796 1 85 1815 1 85 1830 1 85 1840 1 85 1849 1 85 1851 1 85 1852 1 85 1865 1 85 1875 1 85 1884 1 85 1886 1 85 1887 1 85 1895 1 85 1904 1 85 1906 1 85 1907 1 85 1914 1 85 1916 1 85 1917 1 85 1923 1 85 1924 1 85 1925 1 85 1941 1 85 1956 1 85 1966 1 85 1975 1 85 1977 1 85 1978 1 85 1991 1 85 2001 1 85 2010 1 85 2012 1 85 2013 1 85 2021 1 85 2030 1 85 2032 1 85 2033 1 85 2040 1 85 2042 1 85 2043 1 85 2049 1 85 2050 1 85 2051 1 85 2061 1 85 2071 1 85 2080 1 85 2082 1 85 2083 1 85 2091 1 85 2100 1 85 2102 1 85 2103 1 85 2110 1 85 2112 1 85 2113 1 85 2119 1 85 2120 1 85 2121 1 85 2126 1 85 2135 1 85 2137 1 85 2138 1 85 2145 1 85 2147 1 85 2148 1 85 2154 1 85 2155 1 85 2156 1 85 2160 1 85 2162 1 85 2163 1 85 2169 1 85 2170 1 85 2171 1 85 2174 1 85 2175 1 85 2176 1 85 2178 1 85 2193 1 85 2208 1 85 2218 1 85 2227 1 85 2229 1 85 2230 1 85 2243 1 85 2253 1 85 2262 1 85 2264 1 85 2265 1 85 2273 1 85 2282 1 85 2284 1 85 2285 1 85 2292 1 85 2294 1 85 2295 1 85 2301 1 85 2302 1 85 2303 1 85 2313 1 85 2323 1 85 2332 1 85 2334 1 85 2335 1 85 2343 1 85 2352 1 85 2354 1 85 2355 1 85 2362 1 85 2364 1 85 2365 1 85 2371 1 85 2372 1 85 2373 1 85 2378 1 85 2387 1 85 2389 1 85 2390 1 85 2397 1 85 2399 1 85 2400 1 85 2406 1 85 2407 1 85 2408 1 85 2412 1 85 2414 1 85 2415 1 85 2421 1 85 2422 1 85 2423 1 85 2426 1 85 2427 1 85 2428 1 85 2430 1 85 2439 1 85 2449 1 85 2458 1 85 2460 1 85 2461 1 85 2469 1 85 2478 1 85 2480 1 85 2481 1 85 2488 1 85 2490 1 85 2491 1 85 2497 1 85 2498 1 85 2499 1 85 2504 1 85 2513 1 85 2515 1 85 2516 1 85 2523 1 85 2525 1 85 2526 1 85 2532 1 85 2533 1 85 2534 1 85 2538 1 85 2540 1 85 2541 1 85 2547 1 85 2548 1 85 2549 1 85 2552 1 85 2553 1 85 2554 1 85 2556 1 85 2560 1 85 2569 1 85 2571 1 85 2572 1 85 2579 1 85 2581 1 85 2582 1 85 2588 1 85 2589 1 85 2590 1 85 2594 1 85 2596 1 85 2597 1 85 2603 1 85 2604 1 85 2605 1 85 2608 1 85 2609 1 85 2610 1 85 2612 1 85 2615 1 85 2617 1 85 2618 1 85 2624 1 85 2625 1 85 2626 1 85 2629 1 85 2630 1 85 2631 1 85 2633 1 85 2635 1 85 2636 1 85 2637 1 85 2639 1 85 2640 1 85 2655 1 85 2670 1 85 2680 1 85 2689 1 85 2691 1 85 2692 1 85 2705 1 85 2715 1 85 2724 1 85 2726 1 85 2727 1 85 2735 1 85 2744 1 85 2746 1 85 2747 1 85 2754 1 85 2756 1 85 2757 1 85 2763 1 85 2764 1 85 2765 1 85 2775 1 85 2785 1 85 2794 1 85 2796 1 85 2797 1 85 2805 1 85 2814 1 85 2816 1 85 2817 1 85 2824 1 85 2826 1 85 2827 1 85 2833 1 85 2834 1 85 2835 1 85 2840 1 85 2849 1 85 2851 1 85 2852 1 85 2859 1 85 2861 1 85 2862 1 85 2868 1 85 2869 1 85 2870 1 85 2874 1 85 2876 1 85 2877 1 85 2883 1 85 2884 1 85 2885 1 85 2888 1 85 2889 1 85 2890 1 85 2892 1 85 2901 1 85 2911 1 85 2920 1 85 2922 1 85 2923 1 85 2931 1 85 2940 1 85 2942 1 85 2943 1 85 2950 1 85 2952 1 85 2953 1 85 2959 1 85 2960 1 85 2961 1 85 2966 1 85 2975 1 85 2977 1 85 2978 1 85 2985 1 85 2987 1 85 2988 1 85 2994 1 85 2995 1 85 2996 1 85 3000 1 85 3002 1 85 3003 1 85 3009 1 85 3010 1 85 3011 1 85 3014 1 85 3015 1 85 3016 1 85 3018 1 85 3022 1 85 3031 1 85 3033 1 85 3034 1 85 3041 1 85 3043 1 85 3044 1 85 3050 1 85 3051 1 85 3052 1 85 3056 1 85 3058 1 85 3059 1 85 3065 1 85 3066 1 85 3067 1 85 3070 1 85 3071 1 85 3072 1 85 3074 1 85 3077 1 85 3079 1 85 3080 1 85 3086 1 85 3087 1 85 3088 1 85 3091 1 85 3092 1 85 3093 1 85 3095 1 85 3097 1 85 3098 1 85 3099 1 85 3101 1 85 3102 1 85 3111 1 85 3121 1 85 3130 1 85 3132 1 85 3133 1 85 3141 1 85 3150 1 85 3152 1 85 3153 1 85 3160 1 85 3162 1 85 3163 1 85 3169 1 85 3170 1 85 3171 1 85 3176 1 85 3185 1 85 3187 1 85 3188 1 85 3195 1 85 3197 1 85 3198 1 85 3204 1 85 3205 1 85 3206 1 85 3210 1 85 3212 1 85 3213 1 85 3219 1 85 3220 1 85 3221 1 85 3224 1 85 3225 1 85 3226 1 85 3228 1 85 3232 1 85 3241 1 85 3243 1 85 3244 1 85 3251 1 85 3253 1 85 3254 1 85 3260 1 85 3261 1 85 3262 1 85 3266 1 85 3268 1 85 3269 1 85 3275 1 85 3276 1 85 3277 1 85 3280 1 85 3281 1 85 3282 1 85 3284 1 85 3287 1 85 3289 1 85 3290 1 85 3296 1 85 3297 1 85 3298 1 85 3301 1 85 3302 1 85 3303 1 85 3305 1 85 3307 1 85 3308 1 85 3309 1 85 3311 1 85 3312 1 85 3316 1 85 3325 1 85 3327 1 85 3328 1 85 3335 1 85 3337 1 85 3338 1 85 3344 1 85 3345 1 85 3346 1 85 3350 1 85 3352 1 85 3353 1 85 3359 1 85 3360 1 85 3361 1 85 3364 1 85 3365 1 85 3366 1 85 3368 1 85 3371 1 85 3373 1 85 3374 1 85 3380 1 85 3381 1 85 3382 1 85 3385 1 85 3386 1 85 3387 1 85 3389 1 85 3391 1 85 3392 1 85 3393 1 85 3395 1 85 3396 1 85 3399 1 85 3401 1 85 3402 1 85 3408 1 85 3409 1 85 3410 1 85 3413 1 85 3414 1 85 3415 1 85 3417 1 85 3419 1 85 3420 1 85 3421 1 85 3423 1 85 3424 1 85 3426 1 85 3427 1 85 3428 1 85 3430 1 85 3431 1 85 3432 1 86 31 1 86 59 1 86 80 1 86 95 1 86 105 1 86 111 1 86 117 1 86 118 1 86 143 1 86 164 1 86 179 1 86 189 1 86 195 1 86 201 1 86 202 1 86 220 1 86 235 1 86 245 1 86 251 1 86 257 1 86 258 1 86 270 1 86 280 1 86 286 1 86 292 1 86 293 1 86 300 1 86 306 1 86 312 1 86 313 1 86 316 1 86 322 1 86 323 1 86 326 1 86 327 1 86 330 1 86 353 1 86 374 1 86 389 1 86 399 1 86 405 1 86 411 1 86 412 1 86 430 1 86 445 1 86 455 1 86 461 1 86 467 1 86 468 1 86 480 1 86 490 1 86 496 1 86 502 1 86 503 1 86 510 1 86 516 1 86 522 1 86 523 1 86 526 1 86 532 1 86 533 1 86 536 1 86 537 1 86 540 1 86 556 1 86 571 1 86 581 1 86 587 1 86 593 1 86 594 1 86 606 1 86 616 1 86 622 1 86 628 1 86 629 1 86 636 1 86 642 1 86 648 1 86 649 1 86 652 1 86 658 1 86 659 1 86 662 1 86 663 1 86 666 1 86 676 1 86 686 1 86 692 1 86 698 1 86 699 1 86 706 1 86 712 1 86 718 1 86 719 1 86 722 1 86 728 1 86 729 1 86 732 1 86 733 1 86 736 1 86 741 1 86 747 1 86 753 1 86 754 1 86 757 1 86 763 1 86 764 1 86 767 1 86 768 1 86 771 1 86 772 1 86 778 1 86 779 1 86 782 1 86 783 1 86 786 1 86 787 1 86 788 1 86 791 1 86 792 1 86 815 1 86 836 1 86 851 1 86 861 1 86 867 1 86 873 1 86 874 1 86 892 1 86 907 1 86 917 1 86 923 1 86 929 1 86 930 1 86 942 1 86 952 1 86 958 1 86 964 1 86 965 1 86 972 1 86 978 1 86 984 1 86 985 1 86 988 1 86 994 1 86 995 1 86 998 1 86 999 1 86 1002 1 86 1018 1 86 1033 1 86 1043 1 86 1049 1 86 1055 1 86 1056 1 86 1068 1 86 1078 1 86 1084 1 86 1090 1 86 1091 1 86 1098 1 86 1104 1 86 1110 1 86 1111 1 86 1114 1 86 1120 1 86 1121 1 86 1124 1 86 1125 1 86 1128 1 86 1138 1 86 1148 1 86 1154 1 86 1160 1 86 1161 1 86 1168 1 86 1174 1 86 1180 1 86 1181 1 86 1184 1 86 1190 1 86 1191 1 86 1194 1 86 1195 1 86 1198 1 86 1203 1 86 1209 1 86 1215 1 86 1216 1 86 1219 1 86 1225 1 86 1226 1 86 1229 1 86 1230 1 86 1233 1 86 1234 1 86 1240 1 86 1241 1 86 1244 1 86 1245 1 86 1248 1 86 1249 1 86 1250 1 86 1253 1 86 1254 1 86 1270 1 86 1285 1 86 1295 1 86 1301 1 86 1307 1 86 1308 1 86 1320 1 86 1330 1 86 1336 1 86 1342 1 86 1343 1 86 1350 1 86 1356 1 86 1362 1 86 1363 1 86 1366 1 86 1372 1 86 1373 1 86 1376 1 86 1377 1 86 1380 1 86 1390 1 86 1400 1 86 1406 1 86 1412 1 86 1413 1 86 1420 1 86 1426 1 86 1432 1 86 1433 1 86 1436 1 86 1442 1 86 1443 1 86 1446 1 86 1447 1 86 1450 1 86 1455 1 86 1461 1 86 1467 1 86 1468 1 86 1471 1 86 1477 1 86 1478 1 86 1481 1 86 1482 1 86 1485 1 86 1486 1 86 1492 1 86 1493 1 86 1496 1 86 1497 1 86 1500 1 86 1501 1 86 1502 1 86 1505 1 86 1506 1 86 1516 1 86 1526 1 86 1532 1 86 1538 1 86 1539 1 86 1546 1 86 1552 1 86 1558 1 86 1559 1 86 1562 1 86 1568 1 86 1569 1 86 1572 1 86 1573 1 86 1576 1 86 1581 1 86 1587 1 86 1593 1 86 1594 1 86 1597 1 86 1603 1 86 1604 1 86 1607 1 86 1608 1 86 1611 1 86 1612 1 86 1618 1 86 1619 1 86 1622 1 86 1623 1 86 1626 1 86 1627 1 86 1628 1 86 1631 1 86 1632 1 86 1637 1 86 1643 1 86 1649 1 86 1650 1 86 1653 1 86 1659 1 86 1660 1 86 1663 1 86 1664 1 86 1667 1 86 1668 1 86 1674 1 86 1675 1 86 1678 1 86 1679 1 86 1682 1 86 1683 1 86 1684 1 86 1687 1 86 1688 1 86 1689 1 86 1695 1 86 1696 1 86 1699 1 86 1700 1 86 1703 1 86 1704 1 86 1705 1 86 1708 1 86 1709 1 86 1710 1 86 1711 1 86 1714 1 86 1715 1 86 1716 1 86 1739 1 86 1760 1 86 1775 1 86 1785 1 86 1791 1 86 1797 1 86 1798 1 86 1816 1 86 1831 1 86 1841 1 86 1847 1 86 1853 1 86 1854 1 86 1866 1 86 1876 1 86 1882 1 86 1888 1 86 1889 1 86 1896 1 86 1902 1 86 1908 1 86 1909 1 86 1912 1 86 1918 1 86 1919 1 86 1922 1 86 1923 1 86 1926 1 86 1942 1 86 1957 1 86 1967 1 86 1973 1 86 1979 1 86 1980 1 86 1992 1 86 2002 1 86 2008 1 86 2014 1 86 2015 1 86 2022 1 86 2028 1 86 2034 1 86 2035 1 86 2038 1 86 2044 1 86 2045 1 86 2048 1 86 2049 1 86 2052 1 86 2062 1 86 2072 1 86 2078 1 86 2084 1 86 2085 1 86 2092 1 86 2098 1 86 2104 1 86 2105 1 86 2108 1 86 2114 1 86 2115 1 86 2118 1 86 2119 1 86 2122 1 86 2127 1 86 2133 1 86 2139 1 86 2140 1 86 2143 1 86 2149 1 86 2150 1 86 2153 1 86 2154 1 86 2157 1 86 2158 1 86 2164 1 86 2165 1 86 2168 1 86 2169 1 86 2172 1 86 2173 1 86 2174 1 86 2177 1 86 2178 1 86 2194 1 86 2209 1 86 2219 1 86 2225 1 86 2231 1 86 2232 1 86 2244 1 86 2254 1 86 2260 1 86 2266 1 86 2267 1 86 2274 1 86 2280 1 86 2286 1 86 2287 1 86 2290 1 86 2296 1 86 2297 1 86 2300 1 86 2301 1 86 2304 1 86 2314 1 86 2324 1 86 2330 1 86 2336 1 86 2337 1 86 2344 1 86 2350 1 86 2356 1 86 2357 1 86 2360 1 86 2366 1 86 2367 1 86 2370 1 86 2371 1 86 2374 1 86 2379 1 86 2385 1 86 2391 1 86 2392 1 86 2395 1 86 2401 1 86 2402 1 86 2405 1 86 2406 1 86 2409 1 86 2410 1 86 2416 1 86 2417 1 86 2420 1 86 2421 1 86 2424 1 86 2425 1 86 2426 1 86 2429 1 86 2430 1 86 2440 1 86 2450 1 86 2456 1 86 2462 1 86 2463 1 86 2470 1 86 2476 1 86 2482 1 86 2483 1 86 2486 1 86 2492 1 86 2493 1 86 2496 1 86 2497 1 86 2500 1 86 2505 1 86 2511 1 86 2517 1 86 2518 1 86 2521 1 86 2527 1 86 2528 1 86 2531 1 86 2532 1 86 2535 1 86 2536 1 86 2542 1 86 2543 1 86 2546 1 86 2547 1 86 2550 1 86 2551 1 86 2552 1 86 2555 1 86 2556 1 86 2561 1 86 2567 1 86 2573 1 86 2574 1 86 2577 1 86 2583 1 86 2584 1 86 2587 1 86 2588 1 86 2591 1 86 2592 1 86 2598 1 86 2599 1 86 2602 1 86 2603 1 86 2606 1 86 2607 1 86 2608 1 86 2611 1 86 2612 1 86 2613 1 86 2619 1 86 2620 1 86 2623 1 86 2624 1 86 2627 1 86 2628 1 86 2629 1 86 2632 1 86 2633 1 86 2634 1 86 2635 1 86 2638 1 86 2639 1 86 2640 1 86 2656 1 86 2671 1 86 2681 1 86 2687 1 86 2693 1 86 2694 1 86 2706 1 86 2716 1 86 2722 1 86 2728 1 86 2729 1 86 2736 1 86 2742 1 86 2748 1 86 2749 1 86 2752 1 86 2758 1 86 2759 1 86 2762 1 86 2763 1 86 2766 1 86 2776 1 86 2786 1 86 2792 1 86 2798 1 86 2799 1 86 2806 1 86 2812 1 86 2818 1 86 2819 1 86 2822 1 86 2828 1 86 2829 1 86 2832 1 86 2833 1 86 2836 1 86 2841 1 86 2847 1 86 2853 1 86 2854 1 86 2857 1 86 2863 1 86 2864 1 86 2867 1 86 2868 1 86 2871 1 86 2872 1 86 2878 1 86 2879 1 86 2882 1 86 2883 1 86 2886 1 86 2887 1 86 2888 1 86 2891 1 86 2892 1 86 2902 1 86 2912 1 86 2918 1 86 2924 1 86 2925 1 86 2932 1 86 2938 1 86 2944 1 86 2945 1 86 2948 1 86 2954 1 86 2955 1 86 2958 1 86 2959 1 86 2962 1 86 2967 1 86 2973 1 86 2979 1 86 2980 1 86 2983 1 86 2989 1 86 2990 1 86 2993 1 86 2994 1 86 2997 1 86 2998 1 86 3004 1 86 3005 1 86 3008 1 86 3009 1 86 3012 1 86 3013 1 86 3014 1 86 3017 1 86 3018 1 86 3023 1 86 3029 1 86 3035 1 86 3036 1 86 3039 1 86 3045 1 86 3046 1 86 3049 1 86 3050 1 86 3053 1 86 3054 1 86 3060 1 86 3061 1 86 3064 1 86 3065 1 86 3068 1 86 3069 1 86 3070 1 86 3073 1 86 3074 1 86 3075 1 86 3081 1 86 3082 1 86 3085 1 86 3086 1 86 3089 1 86 3090 1 86 3091 1 86 3094 1 86 3095 1 86 3096 1 86 3097 1 86 3100 1 86 3101 1 86 3102 1 86 3112 1 86 3122 1 86 3128 1 86 3134 1 86 3135 1 86 3142 1 86 3148 1 86 3154 1 86 3155 1 86 3158 1 86 3164 1 86 3165 1 86 3168 1 86 3169 1 86 3172 1 86 3177 1 86 3183 1 86 3189 1 86 3190 1 86 3193 1 86 3199 1 86 3200 1 86 3203 1 86 3204 1 86 3207 1 86 3208 1 86 3214 1 86 3215 1 86 3218 1 86 3219 1 86 3222 1 86 3223 1 86 3224 1 86 3227 1 86 3228 1 86 3233 1 86 3239 1 86 3245 1 86 3246 1 86 3249 1 86 3255 1 86 3256 1 86 3259 1 86 3260 1 86 3263 1 86 3264 1 86 3270 1 86 3271 1 86 3274 1 86 3275 1 86 3278 1 86 3279 1 86 3280 1 86 3283 1 86 3284 1 86 3285 1 86 3291 1 86 3292 1 86 3295 1 86 3296 1 86 3299 1 86 3300 1 86 3301 1 86 3304 1 86 3305 1 86 3306 1 86 3307 1 86 3310 1 86 3311 1 86 3312 1 86 3317 1 86 3323 1 86 3329 1 86 3330 1 86 3333 1 86 3339 1 86 3340 1 86 3343 1 86 3344 1 86 3347 1 86 3348 1 86 3354 1 86 3355 1 86 3358 1 86 3359 1 86 3362 1 86 3363 1 86 3364 1 86 3367 1 86 3368 1 86 3369 1 86 3375 1 86 3376 1 86 3379 1 86 3380 1 86 3383 1 86 3384 1 86 3385 1 86 3388 1 86 3389 1 86 3390 1 86 3391 1 86 3394 1 86 3395 1 86 3396 1 86 3397 1 86 3403 1 86 3404 1 86 3407 1 86 3408 1 86 3411 1 86 3412 1 86 3413 1 86 3416 1 86 3417 1 86 3418 1 86 3419 1 86 3422 1 86 3423 1 86 3424 1 86 3425 1 86 3426 1 86 3429 1 86 3430 1 86 3431 1 86 3432 1 87 32 1 87 60 1 87 81 1 87 96 1 87 106 1 87 112 1 87 117 1 87 119 1 87 144 1 87 165 1 87 180 1 87 190 1 87 196 1 87 201 1 87 203 1 87 221 1 87 236 1 87 246 1 87 252 1 87 257 1 87 259 1 87 271 1 87 281 1 87 287 1 87 292 1 87 294 1 87 301 1 87 307 1 87 312 1 87 314 1 87 317 1 87 322 1 87 324 1 87 326 1 87 328 1 87 330 1 87 354 1 87 375 1 87 390 1 87 400 1 87 406 1 87 411 1 87 413 1 87 431 1 87 446 1 87 456 1 87 462 1 87 467 1 87 469 1 87 481 1 87 491 1 87 497 1 87 502 1 87 504 1 87 511 1 87 517 1 87 522 1 87 524 1 87 527 1 87 532 1 87 534 1 87 536 1 87 538 1 87 540 1 87 557 1 87 572 1 87 582 1 87 588 1 87 593 1 87 595 1 87 607 1 87 617 1 87 623 1 87 628 1 87 630 1 87 637 1 87 643 1 87 648 1 87 650 1 87 653 1 87 658 1 87 660 1 87 662 1 87 664 1 87 666 1 87 677 1 87 687 1 87 693 1 87 698 1 87 700 1 87 707 1 87 713 1 87 718 1 87 720 1 87 723 1 87 728 1 87 730 1 87 732 1 87 734 1 87 736 1 87 742 1 87 748 1 87 753 1 87 755 1 87 758 1 87 763 1 87 765 1 87 767 1 87 769 1 87 771 1 87 773 1 87 778 1 87 780 1 87 782 1 87 784 1 87 786 1 87 787 1 87 789 1 87 791 1 87 792 1 87 816 1 87 837 1 87 852 1 87 862 1 87 868 1 87 873 1 87 875 1 87 893 1 87 908 1 87 918 1 87 924 1 87 929 1 87 931 1 87 943 1 87 953 1 87 959 1 87 964 1 87 966 1 87 973 1 87 979 1 87 984 1 87 986 1 87 989 1 87 994 1 87 996 1 87 998 1 87 1000 1 87 1002 1 87 1019 1 87 1034 1 87 1044 1 87 1050 1 87 1055 1 87 1057 1 87 1069 1 87 1079 1 87 1085 1 87 1090 1 87 1092 1 87 1099 1 87 1105 1 87 1110 1 87 1112 1 87 1115 1 87 1120 1 87 1122 1 87 1124 1 87 1126 1 87 1128 1 87 1139 1 87 1149 1 87 1155 1 87 1160 1 87 1162 1 87 1169 1 87 1175 1 87 1180 1 87 1182 1 87 1185 1 87 1190 1 87 1192 1 87 1194 1 87 1196 1 87 1198 1 87 1204 1 87 1210 1 87 1215 1 87 1217 1 87 1220 1 87 1225 1 87 1227 1 87 1229 1 87 1231 1 87 1233 1 87 1235 1 87 1240 1 87 1242 1 87 1244 1 87 1246 1 87 1248 1 87 1249 1 87 1251 1 87 1253 1 87 1254 1 87 1271 1 87 1286 1 87 1296 1 87 1302 1 87 1307 1 87 1309 1 87 1321 1 87 1331 1 87 1337 1 87 1342 1 87 1344 1 87 1351 1 87 1357 1 87 1362 1 87 1364 1 87 1367 1 87 1372 1 87 1374 1 87 1376 1 87 1378 1 87 1380 1 87 1391 1 87 1401 1 87 1407 1 87 1412 1 87 1414 1 87 1421 1 87 1427 1 87 1432 1 87 1434 1 87 1437 1 87 1442 1 87 1444 1 87 1446 1 87 1448 1 87 1450 1 87 1456 1 87 1462 1 87 1467 1 87 1469 1 87 1472 1 87 1477 1 87 1479 1 87 1481 1 87 1483 1 87 1485 1 87 1487 1 87 1492 1 87 1494 1 87 1496 1 87 1498 1 87 1500 1 87 1501 1 87 1503 1 87 1505 1 87 1506 1 87 1517 1 87 1527 1 87 1533 1 87 1538 1 87 1540 1 87 1547 1 87 1553 1 87 1558 1 87 1560 1 87 1563 1 87 1568 1 87 1570 1 87 1572 1 87 1574 1 87 1576 1 87 1582 1 87 1588 1 87 1593 1 87 1595 1 87 1598 1 87 1603 1 87 1605 1 87 1607 1 87 1609 1 87 1611 1 87 1613 1 87 1618 1 87 1620 1 87 1622 1 87 1624 1 87 1626 1 87 1627 1 87 1629 1 87 1631 1 87 1632 1 87 1638 1 87 1644 1 87 1649 1 87 1651 1 87 1654 1 87 1659 1 87 1661 1 87 1663 1 87 1665 1 87 1667 1 87 1669 1 87 1674 1 87 1676 1 87 1678 1 87 1680 1 87 1682 1 87 1683 1 87 1685 1 87 1687 1 87 1688 1 87 1690 1 87 1695 1 87 1697 1 87 1699 1 87 1701 1 87 1703 1 87 1704 1 87 1706 1 87 1708 1 87 1709 1 87 1710 1 87 1712 1 87 1714 1 87 1715 1 87 1716 1 87 1740 1 87 1761 1 87 1776 1 87 1786 1 87 1792 1 87 1797 1 87 1799 1 87 1817 1 87 1832 1 87 1842 1 87 1848 1 87 1853 1 87 1855 1 87 1867 1 87 1877 1 87 1883 1 87 1888 1 87 1890 1 87 1897 1 87 1903 1 87 1908 1 87 1910 1 87 1913 1 87 1918 1 87 1920 1 87 1922 1 87 1924 1 87 1926 1 87 1943 1 87 1958 1 87 1968 1 87 1974 1 87 1979 1 87 1981 1 87 1993 1 87 2003 1 87 2009 1 87 2014 1 87 2016 1 87 2023 1 87 2029 1 87 2034 1 87 2036 1 87 2039 1 87 2044 1 87 2046 1 87 2048 1 87 2050 1 87 2052 1 87 2063 1 87 2073 1 87 2079 1 87 2084 1 87 2086 1 87 2093 1 87 2099 1 87 2104 1 87 2106 1 87 2109 1 87 2114 1 87 2116 1 87 2118 1 87 2120 1 87 2122 1 87 2128 1 87 2134 1 87 2139 1 87 2141 1 87 2144 1 87 2149 1 87 2151 1 87 2153 1 87 2155 1 87 2157 1 87 2159 1 87 2164 1 87 2166 1 87 2168 1 87 2170 1 87 2172 1 87 2173 1 87 2175 1 87 2177 1 87 2178 1 87 2195 1 87 2210 1 87 2220 1 87 2226 1 87 2231 1 87 2233 1 87 2245 1 87 2255 1 87 2261 1 87 2266 1 87 2268 1 87 2275 1 87 2281 1 87 2286 1 87 2288 1 87 2291 1 87 2296 1 87 2298 1 87 2300 1 87 2302 1 87 2304 1 87 2315 1 87 2325 1 87 2331 1 87 2336 1 87 2338 1 87 2345 1 87 2351 1 87 2356 1 87 2358 1 87 2361 1 87 2366 1 87 2368 1 87 2370 1 87 2372 1 87 2374 1 87 2380 1 87 2386 1 87 2391 1 87 2393 1 87 2396 1 87 2401 1 87 2403 1 87 2405 1 87 2407 1 87 2409 1 87 2411 1 87 2416 1 87 2418 1 87 2420 1 87 2422 1 87 2424 1 87 2425 1 87 2427 1 87 2429 1 87 2430 1 87 2441 1 87 2451 1 87 2457 1 87 2462 1 87 2464 1 87 2471 1 87 2477 1 87 2482 1 87 2484 1 87 2487 1 87 2492 1 87 2494 1 87 2496 1 87 2498 1 87 2500 1 87 2506 1 87 2512 1 87 2517 1 87 2519 1 87 2522 1 87 2527 1 87 2529 1 87 2531 1 87 2533 1 87 2535 1 87 2537 1 87 2542 1 87 2544 1 87 2546 1 87 2548 1 87 2550 1 87 2551 1 87 2553 1 87 2555 1 87 2556 1 87 2562 1 87 2568 1 87 2573 1 87 2575 1 87 2578 1 87 2583 1 87 2585 1 87 2587 1 87 2589 1 87 2591 1 87 2593 1 87 2598 1 87 2600 1 87 2602 1 87 2604 1 87 2606 1 87 2607 1 87 2609 1 87 2611 1 87 2612 1 87 2614 1 87 2619 1 87 2621 1 87 2623 1 87 2625 1 87 2627 1 87 2628 1 87 2630 1 87 2632 1 87 2633 1 87 2634 1 87 2636 1 87 2638 1 87 2639 1 87 2640 1 87 2657 1 87 2672 1 87 2682 1 87 2688 1 87 2693 1 87 2695 1 87 2707 1 87 2717 1 87 2723 1 87 2728 1 87 2730 1 87 2737 1 87 2743 1 87 2748 1 87 2750 1 87 2753 1 87 2758 1 87 2760 1 87 2762 1 87 2764 1 87 2766 1 87 2777 1 87 2787 1 87 2793 1 87 2798 1 87 2800 1 87 2807 1 87 2813 1 87 2818 1 87 2820 1 87 2823 1 87 2828 1 87 2830 1 87 2832 1 87 2834 1 87 2836 1 87 2842 1 87 2848 1 87 2853 1 87 2855 1 87 2858 1 87 2863 1 87 2865 1 87 2867 1 87 2869 1 87 2871 1 87 2873 1 87 2878 1 87 2880 1 87 2882 1 87 2884 1 87 2886 1 87 2887 1 87 2889 1 87 2891 1 87 2892 1 87 2903 1 87 2913 1 87 2919 1 87 2924 1 87 2926 1 87 2933 1 87 2939 1 87 2944 1 87 2946 1 87 2949 1 87 2954 1 87 2956 1 87 2958 1 87 2960 1 87 2962 1 87 2968 1 87 2974 1 87 2979 1 87 2981 1 87 2984 1 87 2989 1 87 2991 1 87 2993 1 87 2995 1 87 2997 1 87 2999 1 87 3004 1 87 3006 1 87 3008 1 87 3010 1 87 3012 1 87 3013 1 87 3015 1 87 3017 1 87 3018 1 87 3024 1 87 3030 1 87 3035 1 87 3037 1 87 3040 1 87 3045 1 87 3047 1 87 3049 1 87 3051 1 87 3053 1 87 3055 1 87 3060 1 87 3062 1 87 3064 1 87 3066 1 87 3068 1 87 3069 1 87 3071 1 87 3073 1 87 3074 1 87 3076 1 87 3081 1 87 3083 1 87 3085 1 87 3087 1 87 3089 1 87 3090 1 87 3092 1 87 3094 1 87 3095 1 87 3096 1 87 3098 1 87 3100 1 87 3101 1 87 3102 1 87 3113 1 87 3123 1 87 3129 1 87 3134 1 87 3136 1 87 3143 1 87 3149 1 87 3154 1 87 3156 1 87 3159 1 87 3164 1 87 3166 1 87 3168 1 87 3170 1 87 3172 1 87 3178 1 87 3184 1 87 3189 1 87 3191 1 87 3194 1 87 3199 1 87 3201 1 87 3203 1 87 3205 1 87 3207 1 87 3209 1 87 3214 1 87 3216 1 87 3218 1 87 3220 1 87 3222 1 87 3223 1 87 3225 1 87 3227 1 87 3228 1 87 3234 1 87 3240 1 87 3245 1 87 3247 1 87 3250 1 87 3255 1 87 3257 1 87 3259 1 87 3261 1 87 3263 1 87 3265 1 87 3270 1 87 3272 1 87 3274 1 87 3276 1 87 3278 1 87 3279 1 87 3281 1 87 3283 1 87 3284 1 87 3286 1 87 3291 1 87 3293 1 87 3295 1 87 3297 1 87 3299 1 87 3300 1 87 3302 1 87 3304 1 87 3305 1 87 3306 1 87 3308 1 87 3310 1 87 3311 1 87 3312 1 87 3318 1 87 3324 1 87 3329 1 87 3331 1 87 3334 1 87 3339 1 87 3341 1 87 3343 1 87 3345 1 87 3347 1 87 3349 1 87 3354 1 87 3356 1 87 3358 1 87 3360 1 87 3362 1 87 3363 1 87 3365 1 87 3367 1 87 3368 1 87 3370 1 87 3375 1 87 3377 1 87 3379 1 87 3381 1 87 3383 1 87 3384 1 87 3386 1 87 3388 1 87 3389 1 87 3390 1 87 3392 1 87 3394 1 87 3395 1 87 3396 1 87 3398 1 87 3403 1 87 3405 1 87 3407 1 87 3409 1 87 3411 1 87 3412 1 87 3414 1 87 3416 1 87 3417 1 87 3418 1 87 3420 1 87 3422 1 87 3423 1 87 3424 1 87 3425 1 87 3427 1 87 3429 1 87 3430 1 87 3431 1 87 3432 1 88 33 1 88 61 1 88 82 1 88 97 1 88 107 1 88 113 1 88 118 1 88 119 1 88 145 1 88 166 1 88 181 1 88 191 1 88 197 1 88 202 1 88 203 1 88 222 1 88 237 1 88 247 1 88 253 1 88 258 1 88 259 1 88 272 1 88 282 1 88 288 1 88 293 1 88 294 1 88 302 1 88 308 1 88 313 1 88 314 1 88 318 1 88 323 1 88 324 1 88 327 1 88 328 1 88 330 1 88 355 1 88 376 1 88 391 1 88 401 1 88 407 1 88 412 1 88 413 1 88 432 1 88 447 1 88 457 1 88 463 1 88 468 1 88 469 1 88 482 1 88 492 1 88 498 1 88 503 1 88 504 1 88 512 1 88 518 1 88 523 1 88 524 1 88 528 1 88 533 1 88 534 1 88 537 1 88 538 1 88 540 1 88 558 1 88 573 1 88 583 1 88 589 1 88 594 1 88 595 1 88 608 1 88 618 1 88 624 1 88 629 1 88 630 1 88 638 1 88 644 1 88 649 1 88 650 1 88 654 1 88 659 1 88 660 1 88 663 1 88 664 1 88 666 1 88 678 1 88 688 1 88 694 1 88 699 1 88 700 1 88 708 1 88 714 1 88 719 1 88 720 1 88 724 1 88 729 1 88 730 1 88 733 1 88 734 1 88 736 1 88 743 1 88 749 1 88 754 1 88 755 1 88 759 1 88 764 1 88 765 1 88 768 1 88 769 1 88 771 1 88 774 1 88 779 1 88 780 1 88 783 1 88 784 1 88 786 1 88 788 1 88 789 1 88 791 1 88 792 1 88 817 1 88 838 1 88 853 1 88 863 1 88 869 1 88 874 1 88 875 1 88 894 1 88 909 1 88 919 1 88 925 1 88 930 1 88 931 1 88 944 1 88 954 1 88 960 1 88 965 1 88 966 1 88 974 1 88 980 1 88 985 1 88 986 1 88 990 1 88 995 1 88 996 1 88 999 1 88 1000 1 88 1002 1 88 1020 1 88 1035 1 88 1045 1 88 1051 1 88 1056 1 88 1057 1 88 1070 1 88 1080 1 88 1086 1 88 1091 1 88 1092 1 88 1100 1 88 1106 1 88 1111 1 88 1112 1 88 1116 1 88 1121 1 88 1122 1 88 1125 1 88 1126 1 88 1128 1 88 1140 1 88 1150 1 88 1156 1 88 1161 1 88 1162 1 88 1170 1 88 1176 1 88 1181 1 88 1182 1 88 1186 1 88 1191 1 88 1192 1 88 1195 1 88 1196 1 88 1198 1 88 1205 1 88 1211 1 88 1216 1 88 1217 1 88 1221 1 88 1226 1 88 1227 1 88 1230 1 88 1231 1 88 1233 1 88 1236 1 88 1241 1 88 1242 1 88 1245 1 88 1246 1 88 1248 1 88 1250 1 88 1251 1 88 1253 1 88 1254 1 88 1272 1 88 1287 1 88 1297 1 88 1303 1 88 1308 1 88 1309 1 88 1322 1 88 1332 1 88 1338 1 88 1343 1 88 1344 1 88 1352 1 88 1358 1 88 1363 1 88 1364 1 88 1368 1 88 1373 1 88 1374 1 88 1377 1 88 1378 1 88 1380 1 88 1392 1 88 1402 1 88 1408 1 88 1413 1 88 1414 1 88 1422 1 88 1428 1 88 1433 1 88 1434 1 88 1438 1 88 1443 1 88 1444 1 88 1447 1 88 1448 1 88 1450 1 88 1457 1 88 1463 1 88 1468 1 88 1469 1 88 1473 1 88 1478 1 88 1479 1 88 1482 1 88 1483 1 88 1485 1 88 1488 1 88 1493 1 88 1494 1 88 1497 1 88 1498 1 88 1500 1 88 1502 1 88 1503 1 88 1505 1 88 1506 1 88 1518 1 88 1528 1 88 1534 1 88 1539 1 88 1540 1 88 1548 1 88 1554 1 88 1559 1 88 1560 1 88 1564 1 88 1569 1 88 1570 1 88 1573 1 88 1574 1 88 1576 1 88 1583 1 88 1589 1 88 1594 1 88 1595 1 88 1599 1 88 1604 1 88 1605 1 88 1608 1 88 1609 1 88 1611 1 88 1614 1 88 1619 1 88 1620 1 88 1623 1 88 1624 1 88 1626 1 88 1628 1 88 1629 1 88 1631 1 88 1632 1 88 1639 1 88 1645 1 88 1650 1 88 1651 1 88 1655 1 88 1660 1 88 1661 1 88 1664 1 88 1665 1 88 1667 1 88 1670 1 88 1675 1 88 1676 1 88 1679 1 88 1680 1 88 1682 1 88 1684 1 88 1685 1 88 1687 1 88 1688 1 88 1691 1 88 1696 1 88 1697 1 88 1700 1 88 1701 1 88 1703 1 88 1705 1 88 1706 1 88 1708 1 88 1709 1 88 1711 1 88 1712 1 88 1714 1 88 1715 1 88 1716 1 88 1741 1 88 1762 1 88 1777 1 88 1787 1 88 1793 1 88 1798 1 88 1799 1 88 1818 1 88 1833 1 88 1843 1 88 1849 1 88 1854 1 88 1855 1 88 1868 1 88 1878 1 88 1884 1 88 1889 1 88 1890 1 88 1898 1 88 1904 1 88 1909 1 88 1910 1 88 1914 1 88 1919 1 88 1920 1 88 1923 1 88 1924 1 88 1926 1 88 1944 1 88 1959 1 88 1969 1 88 1975 1 88 1980 1 88 1981 1 88 1994 1 88 2004 1 88 2010 1 88 2015 1 88 2016 1 88 2024 1 88 2030 1 88 2035 1 88 2036 1 88 2040 1 88 2045 1 88 2046 1 88 2049 1 88 2050 1 88 2052 1 88 2064 1 88 2074 1 88 2080 1 88 2085 1 88 2086 1 88 2094 1 88 2100 1 88 2105 1 88 2106 1 88 2110 1 88 2115 1 88 2116 1 88 2119 1 88 2120 1 88 2122 1 88 2129 1 88 2135 1 88 2140 1 88 2141 1 88 2145 1 88 2150 1 88 2151 1 88 2154 1 88 2155 1 88 2157 1 88 2160 1 88 2165 1 88 2166 1 88 2169 1 88 2170 1 88 2172 1 88 2174 1 88 2175 1 88 2177 1 88 2178 1 88 2196 1 88 2211 1 88 2221 1 88 2227 1 88 2232 1 88 2233 1 88 2246 1 88 2256 1 88 2262 1 88 2267 1 88 2268 1 88 2276 1 88 2282 1 88 2287 1 88 2288 1 88 2292 1 88 2297 1 88 2298 1 88 2301 1 88 2302 1 88 2304 1 88 2316 1 88 2326 1 88 2332 1 88 2337 1 88 2338 1 88 2346 1 88 2352 1 88 2357 1 88 2358 1 88 2362 1 88 2367 1 88 2368 1 88 2371 1 88 2372 1 88 2374 1 88 2381 1 88 2387 1 88 2392 1 88 2393 1 88 2397 1 88 2402 1 88 2403 1 88 2406 1 88 2407 1 88 2409 1 88 2412 1 88 2417 1 88 2418 1 88 2421 1 88 2422 1 88 2424 1 88 2426 1 88 2427 1 88 2429 1 88 2430 1 88 2442 1 88 2452 1 88 2458 1 88 2463 1 88 2464 1 88 2472 1 88 2478 1 88 2483 1 88 2484 1 88 2488 1 88 2493 1 88 2494 1 88 2497 1 88 2498 1 88 2500 1 88 2507 1 88 2513 1 88 2518 1 88 2519 1 88 2523 1 88 2528 1 88 2529 1 88 2532 1 88 2533 1 88 2535 1 88 2538 1 88 2543 1 88 2544 1 88 2547 1 88 2548 1 88 2550 1 88 2552 1 88 2553 1 88 2555 1 88 2556 1 88 2563 1 88 2569 1 88 2574 1 88 2575 1 88 2579 1 88 2584 1 88 2585 1 88 2588 1 88 2589 1 88 2591 1 88 2594 1 88 2599 1 88 2600 1 88 2603 1 88 2604 1 88 2606 1 88 2608 1 88 2609 1 88 2611 1 88 2612 1 88 2615 1 88 2620 1 88 2621 1 88 2624 1 88 2625 1 88 2627 1 88 2629 1 88 2630 1 88 2632 1 88 2633 1 88 2635 1 88 2636 1 88 2638 1 88 2639 1 88 2640 1 88 2658 1 88 2673 1 88 2683 1 88 2689 1 88 2694 1 88 2695 1 88 2708 1 88 2718 1 88 2724 1 88 2729 1 88 2730 1 88 2738 1 88 2744 1 88 2749 1 88 2750 1 88 2754 1 88 2759 1 88 2760 1 88 2763 1 88 2764 1 88 2766 1 88 2778 1 88 2788 1 88 2794 1 88 2799 1 88 2800 1 88 2808 1 88 2814 1 88 2819 1 88 2820 1 88 2824 1 88 2829 1 88 2830 1 88 2833 1 88 2834 1 88 2836 1 88 2843 1 88 2849 1 88 2854 1 88 2855 1 88 2859 1 88 2864 1 88 2865 1 88 2868 1 88 2869 1 88 2871 1 88 2874 1 88 2879 1 88 2880 1 88 2883 1 88 2884 1 88 2886 1 88 2888 1 88 2889 1 88 2891 1 88 2892 1 88 2904 1 88 2914 1 88 2920 1 88 2925 1 88 2926 1 88 2934 1 88 2940 1 88 2945 1 88 2946 1 88 2950 1 88 2955 1 88 2956 1 88 2959 1 88 2960 1 88 2962 1 88 2969 1 88 2975 1 88 2980 1 88 2981 1 88 2985 1 88 2990 1 88 2991 1 88 2994 1 88 2995 1 88 2997 1 88 3000 1 88 3005 1 88 3006 1 88 3009 1 88 3010 1 88 3012 1 88 3014 1 88 3015 1 88 3017 1 88 3018 1 88 3025 1 88 3031 1 88 3036 1 88 3037 1 88 3041 1 88 3046 1 88 3047 1 88 3050 1 88 3051 1 88 3053 1 88 3056 1 88 3061 1 88 3062 1 88 3065 1 88 3066 1 88 3068 1 88 3070 1 88 3071 1 88 3073 1 88 3074 1 88 3077 1 88 3082 1 88 3083 1 88 3086 1 88 3087 1 88 3089 1 88 3091 1 88 3092 1 88 3094 1 88 3095 1 88 3097 1 88 3098 1 88 3100 1 88 3101 1 88 3102 1 88 3114 1 88 3124 1 88 3130 1 88 3135 1 88 3136 1 88 3144 1 88 3150 1 88 3155 1 88 3156 1 88 3160 1 88 3165 1 88 3166 1 88 3169 1 88 3170 1 88 3172 1 88 3179 1 88 3185 1 88 3190 1 88 3191 1 88 3195 1 88 3200 1 88 3201 1 88 3204 1 88 3205 1 88 3207 1 88 3210 1 88 3215 1 88 3216 1 88 3219 1 88 3220 1 88 3222 1 88 3224 1 88 3225 1 88 3227 1 88 3228 1 88 3235 1 88 3241 1 88 3246 1 88 3247 1 88 3251 1 88 3256 1 88 3257 1 88 3260 1 88 3261 1 88 3263 1 88 3266 1 88 3271 1 88 3272 1 88 3275 1 88 3276 1 88 3278 1 88 3280 1 88 3281 1 88 3283 1 88 3284 1 88 3287 1 88 3292 1 88 3293 1 88 3296 1 88 3297 1 88 3299 1 88 3301 1 88 3302 1 88 3304 1 88 3305 1 88 3307 1 88 3308 1 88 3310 1 88 3311 1 88 3312 1 88 3319 1 88 3325 1 88 3330 1 88 3331 1 88 3335 1 88 3340 1 88 3341 1 88 3344 1 88 3345 1 88 3347 1 88 3350 1 88 3355 1 88 3356 1 88 3359 1 88 3360 1 88 3362 1 88 3364 1 88 3365 1 88 3367 1 88 3368 1 88 3371 1 88 3376 1 88 3377 1 88 3380 1 88 3381 1 88 3383 1 88 3385 1 88 3386 1 88 3388 1 88 3389 1 88 3391 1 88 3392 1 88 3394 1 88 3395 1 88 3396 1 88 3399 1 88 3404 1 88 3405 1 88 3408 1 88 3409 1 88 3411 1 88 3413 1 88 3414 1 88 3416 1 88 3417 1 88 3419 1 88 3420 1 88 3422 1 88 3423 1 88 3424 1 88 3426 1 88 3427 1 88 3429 1 88 3430 1 88 3431 1 88 3432 1 89 34 1 89 62 1 89 83 1 89 98 1 89 108 1 89 114 1 89 117 1 89 120 1 89 146 1 89 167 1 89 182 1 89 192 1 89 198 1 89 201 1 89 204 1 89 223 1 89 238 1 89 248 1 89 254 1 89 257 1 89 260 1 89 273 1 89 283 1 89 289 1 89 292 1 89 295 1 89 303 1 89 309 1 89 312 1 89 315 1 89 319 1 89 322 1 89 325 1 89 326 1 89 329 1 89 330 1 89 356 1 89 377 1 89 392 1 89 402 1 89 408 1 89 411 1 89 414 1 89 433 1 89 448 1 89 458 1 89 464 1 89 467 1 89 470 1 89 483 1 89 493 1 89 499 1 89 502 1 89 505 1 89 513 1 89 519 1 89 522 1 89 525 1 89 529 1 89 532 1 89 535 1 89 536 1 89 539 1 89 540 1 89 559 1 89 574 1 89 584 1 89 590 1 89 593 1 89 596 1 89 609 1 89 619 1 89 625 1 89 628 1 89 631 1 89 639 1 89 645 1 89 648 1 89 651 1 89 655 1 89 658 1 89 661 1 89 662 1 89 665 1 89 666 1 89 679 1 89 689 1 89 695 1 89 698 1 89 701 1 89 709 1 89 715 1 89 718 1 89 721 1 89 725 1 89 728 1 89 731 1 89 732 1 89 735 1 89 736 1 89 744 1 89 750 1 89 753 1 89 756 1 89 760 1 89 763 1 89 766 1 89 767 1 89 770 1 89 771 1 89 775 1 89 778 1 89 781 1 89 782 1 89 785 1 89 786 1 89 787 1 89 790 1 89 791 1 89 792 1 89 818 1 89 839 1 89 854 1 89 864 1 89 870 1 89 873 1 89 876 1 89 895 1 89 910 1 89 920 1 89 926 1 89 929 1 89 932 1 89 945 1 89 955 1 89 961 1 89 964 1 89 967 1 89 975 1 89 981 1 89 984 1 89 987 1 89 991 1 89 994 1 89 997 1 89 998 1 89 1001 1 89 1002 1 89 1021 1 89 1036 1 89 1046 1 89 1052 1 89 1055 1 89 1058 1 89 1071 1 89 1081 1 89 1087 1 89 1090 1 89 1093 1 89 1101 1 89 1107 1 89 1110 1 89 1113 1 89 1117 1 89 1120 1 89 1123 1 89 1124 1 89 1127 1 89 1128 1 89 1141 1 89 1151 1 89 1157 1 89 1160 1 89 1163 1 89 1171 1 89 1177 1 89 1180 1 89 1183 1 89 1187 1 89 1190 1 89 1193 1 89 1194 1 89 1197 1 89 1198 1 89 1206 1 89 1212 1 89 1215 1 89 1218 1 89 1222 1 89 1225 1 89 1228 1 89 1229 1 89 1232 1 89 1233 1 89 1237 1 89 1240 1 89 1243 1 89 1244 1 89 1247 1 89 1248 1 89 1249 1 89 1252 1 89 1253 1 89 1254 1 89 1273 1 89 1288 1 89 1298 1 89 1304 1 89 1307 1 89 1310 1 89 1323 1 89 1333 1 89 1339 1 89 1342 1 89 1345 1 89 1353 1 89 1359 1 89 1362 1 89 1365 1 89 1369 1 89 1372 1 89 1375 1 89 1376 1 89 1379 1 89 1380 1 89 1393 1 89 1403 1 89 1409 1 89 1412 1 89 1415 1 89 1423 1 89 1429 1 89 1432 1 89 1435 1 89 1439 1 89 1442 1 89 1445 1 89 1446 1 89 1449 1 89 1450 1 89 1458 1 89 1464 1 89 1467 1 89 1470 1 89 1474 1 89 1477 1 89 1480 1 89 1481 1 89 1484 1 89 1485 1 89 1489 1 89 1492 1 89 1495 1 89 1496 1 89 1499 1 89 1500 1 89 1501 1 89 1504 1 89 1505 1 89 1506 1 89 1519 1 89 1529 1 89 1535 1 89 1538 1 89 1541 1 89 1549 1 89 1555 1 89 1558 1 89 1561 1 89 1565 1 89 1568 1 89 1571 1 89 1572 1 89 1575 1 89 1576 1 89 1584 1 89 1590 1 89 1593 1 89 1596 1 89 1600 1 89 1603 1 89 1606 1 89 1607 1 89 1610 1 89 1611 1 89 1615 1 89 1618 1 89 1621 1 89 1622 1 89 1625 1 89 1626 1 89 1627 1 89 1630 1 89 1631 1 89 1632 1 89 1640 1 89 1646 1 89 1649 1 89 1652 1 89 1656 1 89 1659 1 89 1662 1 89 1663 1 89 1666 1 89 1667 1 89 1671 1 89 1674 1 89 1677 1 89 1678 1 89 1681 1 89 1682 1 89 1683 1 89 1686 1 89 1687 1 89 1688 1 89 1692 1 89 1695 1 89 1698 1 89 1699 1 89 1702 1 89 1703 1 89 1704 1 89 1707 1 89 1708 1 89 1709 1 89 1710 1 89 1713 1 89 1714 1 89 1715 1 89 1716 1 89 1742 1 89 1763 1 89 1778 1 89 1788 1 89 1794 1 89 1797 1 89 1800 1 89 1819 1 89 1834 1 89 1844 1 89 1850 1 89 1853 1 89 1856 1 89 1869 1 89 1879 1 89 1885 1 89 1888 1 89 1891 1 89 1899 1 89 1905 1 89 1908 1 89 1911 1 89 1915 1 89 1918 1 89 1921 1 89 1922 1 89 1925 1 89 1926 1 89 1945 1 89 1960 1 89 1970 1 89 1976 1 89 1979 1 89 1982 1 89 1995 1 89 2005 1 89 2011 1 89 2014 1 89 2017 1 89 2025 1 89 2031 1 89 2034 1 89 2037 1 89 2041 1 89 2044 1 89 2047 1 89 2048 1 89 2051 1 89 2052 1 89 2065 1 89 2075 1 89 2081 1 89 2084 1 89 2087 1 89 2095 1 89 2101 1 89 2104 1 89 2107 1 89 2111 1 89 2114 1 89 2117 1 89 2118 1 89 2121 1 89 2122 1 89 2130 1 89 2136 1 89 2139 1 89 2142 1 89 2146 1 89 2149 1 89 2152 1 89 2153 1 89 2156 1 89 2157 1 89 2161 1 89 2164 1 89 2167 1 89 2168 1 89 2171 1 89 2172 1 89 2173 1 89 2176 1 89 2177 1 89 2178 1 89 2197 1 89 2212 1 89 2222 1 89 2228 1 89 2231 1 89 2234 1 89 2247 1 89 2257 1 89 2263 1 89 2266 1 89 2269 1 89 2277 1 89 2283 1 89 2286 1 89 2289 1 89 2293 1 89 2296 1 89 2299 1 89 2300 1 89 2303 1 89 2304 1 89 2317 1 89 2327 1 89 2333 1 89 2336 1 89 2339 1 89 2347 1 89 2353 1 89 2356 1 89 2359 1 89 2363 1 89 2366 1 89 2369 1 89 2370 1 89 2373 1 89 2374 1 89 2382 1 89 2388 1 89 2391 1 89 2394 1 89 2398 1 89 2401 1 89 2404 1 89 2405 1 89 2408 1 89 2409 1 89 2413 1 89 2416 1 89 2419 1 89 2420 1 89 2423 1 89 2424 1 89 2425 1 89 2428 1 89 2429 1 89 2430 1 89 2443 1 89 2453 1 89 2459 1 89 2462 1 89 2465 1 89 2473 1 89 2479 1 89 2482 1 89 2485 1 89 2489 1 89 2492 1 89 2495 1 89 2496 1 89 2499 1 89 2500 1 89 2508 1 89 2514 1 89 2517 1 89 2520 1 89 2524 1 89 2527 1 89 2530 1 89 2531 1 89 2534 1 89 2535 1 89 2539 1 89 2542 1 89 2545 1 89 2546 1 89 2549 1 89 2550 1 89 2551 1 89 2554 1 89 2555 1 89 2556 1 89 2564 1 89 2570 1 89 2573 1 89 2576 1 89 2580 1 89 2583 1 89 2586 1 89 2587 1 89 2590 1 89 2591 1 89 2595 1 89 2598 1 89 2601 1 89 2602 1 89 2605 1 89 2606 1 89 2607 1 89 2610 1 89 2611 1 89 2612 1 89 2616 1 89 2619 1 89 2622 1 89 2623 1 89 2626 1 89 2627 1 89 2628 1 89 2631 1 89 2632 1 89 2633 1 89 2634 1 89 2637 1 89 2638 1 89 2639 1 89 2640 1 89 2659 1 89 2674 1 89 2684 1 89 2690 1 89 2693 1 89 2696 1 89 2709 1 89 2719 1 89 2725 1 89 2728 1 89 2731 1 89 2739 1 89 2745 1 89 2748 1 89 2751 1 89 2755 1 89 2758 1 89 2761 1 89 2762 1 89 2765 1 89 2766 1 89 2779 1 89 2789 1 89 2795 1 89 2798 1 89 2801 1 89 2809 1 89 2815 1 89 2818 1 89 2821 1 89 2825 1 89 2828 1 89 2831 1 89 2832 1 89 2835 1 89 2836 1 89 2844 1 89 2850 1 89 2853 1 89 2856 1 89 2860 1 89 2863 1 89 2866 1 89 2867 1 89 2870 1 89 2871 1 89 2875 1 89 2878 1 89 2881 1 89 2882 1 89 2885 1 89 2886 1 89 2887 1 89 2890 1 89 2891 1 89 2892 1 89 2905 1 89 2915 1 89 2921 1 89 2924 1 89 2927 1 89 2935 1 89 2941 1 89 2944 1 89 2947 1 89 2951 1 89 2954 1 89 2957 1 89 2958 1 89 2961 1 89 2962 1 89 2970 1 89 2976 1 89 2979 1 89 2982 1 89 2986 1 89 2989 1 89 2992 1 89 2993 1 89 2996 1 89 2997 1 89 3001 1 89 3004 1 89 3007 1 89 3008 1 89 3011 1 89 3012 1 89 3013 1 89 3016 1 89 3017 1 89 3018 1 89 3026 1 89 3032 1 89 3035 1 89 3038 1 89 3042 1 89 3045 1 89 3048 1 89 3049 1 89 3052 1 89 3053 1 89 3057 1 89 3060 1 89 3063 1 89 3064 1 89 3067 1 89 3068 1 89 3069 1 89 3072 1 89 3073 1 89 3074 1 89 3078 1 89 3081 1 89 3084 1 89 3085 1 89 3088 1 89 3089 1 89 3090 1 89 3093 1 89 3094 1 89 3095 1 89 3096 1 89 3099 1 89 3100 1 89 3101 1 89 3102 1 89 3115 1 89 3125 1 89 3131 1 89 3134 1 89 3137 1 89 3145 1 89 3151 1 89 3154 1 89 3157 1 89 3161 1 89 3164 1 89 3167 1 89 3168 1 89 3171 1 89 3172 1 89 3180 1 89 3186 1 89 3189 1 89 3192 1 89 3196 1 89 3199 1 89 3202 1 89 3203 1 89 3206 1 89 3207 1 89 3211 1 89 3214 1 89 3217 1 89 3218 1 89 3221 1 89 3222 1 89 3223 1 89 3226 1 89 3227 1 89 3228 1 89 3236 1 89 3242 1 89 3245 1 89 3248 1 89 3252 1 89 3255 1 89 3258 1 89 3259 1 89 3262 1 89 3263 1 89 3267 1 89 3270 1 89 3273 1 89 3274 1 89 3277 1 89 3278 1 89 3279 1 89 3282 1 89 3283 1 89 3284 1 89 3288 1 89 3291 1 89 3294 1 89 3295 1 89 3298 1 89 3299 1 89 3300 1 89 3303 1 89 3304 1 89 3305 1 89 3306 1 89 3309 1 89 3310 1 89 3311 1 89 3312 1 89 3320 1 89 3326 1 89 3329 1 89 3332 1 89 3336 1 89 3339 1 89 3342 1 89 3343 1 89 3346 1 89 3347 1 89 3351 1 89 3354 1 89 3357 1 89 3358 1 89 3361 1 89 3362 1 89 3363 1 89 3366 1 89 3367 1 89 3368 1 89 3372 1 89 3375 1 89 3378 1 89 3379 1 89 3382 1 89 3383 1 89 3384 1 89 3387 1 89 3388 1 89 3389 1 89 3390 1 89 3393 1 89 3394 1 89 3395 1 89 3396 1 89 3400 1 89 3403 1 89 3406 1 89 3407 1 89 3410 1 89 3411 1 89 3412 1 89 3415 1 89 3416 1 89 3417 1 89 3418 1 89 3421 1 89 3422 1 89 3423 1 89 3424 1 89 3425 1 89 3428 1 89 3429 1 89 3430 1 89 3431 1 89 3432 1 90 35 1 90 63 1 90 84 1 90 99 1 90 109 1 90 115 1 90 118 1 90 120 1 90 147 1 90 168 1 90 183 1 90 193 1 90 199 1 90 202 1 90 204 1 90 224 1 90 239 1 90 249 1 90 255 1 90 258 1 90 260 1 90 274 1 90 284 1 90 290 1 90 293 1 90 295 1 90 304 1 90 310 1 90 313 1 90 315 1 90 320 1 90 323 1 90 325 1 90 327 1 90 329 1 90 330 1 90 357 1 90 378 1 90 393 1 90 403 1 90 409 1 90 412 1 90 414 1 90 434 1 90 449 1 90 459 1 90 465 1 90 468 1 90 470 1 90 484 1 90 494 1 90 500 1 90 503 1 90 505 1 90 514 1 90 520 1 90 523 1 90 525 1 90 530 1 90 533 1 90 535 1 90 537 1 90 539 1 90 540 1 90 560 1 90 575 1 90 585 1 90 591 1 90 594 1 90 596 1 90 610 1 90 620 1 90 626 1 90 629 1 90 631 1 90 640 1 90 646 1 90 649 1 90 651 1 90 656 1 90 659 1 90 661 1 90 663 1 90 665 1 90 666 1 90 680 1 90 690 1 90 696 1 90 699 1 90 701 1 90 710 1 90 716 1 90 719 1 90 721 1 90 726 1 90 729 1 90 731 1 90 733 1 90 735 1 90 736 1 90 745 1 90 751 1 90 754 1 90 756 1 90 761 1 90 764 1 90 766 1 90 768 1 90 770 1 90 771 1 90 776 1 90 779 1 90 781 1 90 783 1 90 785 1 90 786 1 90 788 1 90 790 1 90 791 1 90 792 1 90 819 1 90 840 1 90 855 1 90 865 1 90 871 1 90 874 1 90 876 1 90 896 1 90 911 1 90 921 1 90 927 1 90 930 1 90 932 1 90 946 1 90 956 1 90 962 1 90 965 1 90 967 1 90 976 1 90 982 1 90 985 1 90 987 1 90 992 1 90 995 1 90 997 1 90 999 1 90 1001 1 90 1002 1 90 1022 1 90 1037 1 90 1047 1 90 1053 1 90 1056 1 90 1058 1 90 1072 1 90 1082 1 90 1088 1 90 1091 1 90 1093 1 90 1102 1 90 1108 1 90 1111 1 90 1113 1 90 1118 1 90 1121 1 90 1123 1 90 1125 1 90 1127 1 90 1128 1 90 1142 1 90 1152 1 90 1158 1 90 1161 1 90 1163 1 90 1172 1 90 1178 1 90 1181 1 90 1183 1 90 1188 1 90 1191 1 90 1193 1 90 1195 1 90 1197 1 90 1198 1 90 1207 1 90 1213 1 90 1216 1 90 1218 1 90 1223 1 90 1226 1 90 1228 1 90 1230 1 90 1232 1 90 1233 1 90 1238 1 90 1241 1 90 1243 1 90 1245 1 90 1247 1 90 1248 1 90 1250 1 90 1252 1 90 1253 1 90 1254 1 90 1274 1 90 1289 1 90 1299 1 90 1305 1 90 1308 1 90 1310 1 90 1324 1 90 1334 1 90 1340 1 90 1343 1 90 1345 1 90 1354 1 90 1360 1 90 1363 1 90 1365 1 90 1370 1 90 1373 1 90 1375 1 90 1377 1 90 1379 1 90 1380 1 90 1394 1 90 1404 1 90 1410 1 90 1413 1 90 1415 1 90 1424 1 90 1430 1 90 1433 1 90 1435 1 90 1440 1 90 1443 1 90 1445 1 90 1447 1 90 1449 1 90 1450 1 90 1459 1 90 1465 1 90 1468 1 90 1470 1 90 1475 1 90 1478 1 90 1480 1 90 1482 1 90 1484 1 90 1485 1 90 1490 1 90 1493 1 90 1495 1 90 1497 1 90 1499 1 90 1500 1 90 1502 1 90 1504 1 90 1505 1 90 1506 1 90 1520 1 90 1530 1 90 1536 1 90 1539 1 90 1541 1 90 1550 1 90 1556 1 90 1559 1 90 1561 1 90 1566 1 90 1569 1 90 1571 1 90 1573 1 90 1575 1 90 1576 1 90 1585 1 90 1591 1 90 1594 1 90 1596 1 90 1601 1 90 1604 1 90 1606 1 90 1608 1 90 1610 1 90 1611 1 90 1616 1 90 1619 1 90 1621 1 90 1623 1 90 1625 1 90 1626 1 90 1628 1 90 1630 1 90 1631 1 90 1632 1 90 1641 1 90 1647 1 90 1650 1 90 1652 1 90 1657 1 90 1660 1 90 1662 1 90 1664 1 90 1666 1 90 1667 1 90 1672 1 90 1675 1 90 1677 1 90 1679 1 90 1681 1 90 1682 1 90 1684 1 90 1686 1 90 1687 1 90 1688 1 90 1693 1 90 1696 1 90 1698 1 90 1700 1 90 1702 1 90 1703 1 90 1705 1 90 1707 1 90 1708 1 90 1709 1 90 1711 1 90 1713 1 90 1714 1 90 1715 1 90 1716 1 90 1743 1 90 1764 1 90 1779 1 90 1789 1 90 1795 1 90 1798 1 90 1800 1 90 1820 1 90 1835 1 90 1845 1 90 1851 1 90 1854 1 90 1856 1 90 1870 1 90 1880 1 90 1886 1 90 1889 1 90 1891 1 90 1900 1 90 1906 1 90 1909 1 90 1911 1 90 1916 1 90 1919 1 90 1921 1 90 1923 1 90 1925 1 90 1926 1 90 1946 1 90 1961 1 90 1971 1 90 1977 1 90 1980 1 90 1982 1 90 1996 1 90 2006 1 90 2012 1 90 2015 1 90 2017 1 90 2026 1 90 2032 1 90 2035 1 90 2037 1 90 2042 1 90 2045 1 90 2047 1 90 2049 1 90 2051 1 90 2052 1 90 2066 1 90 2076 1 90 2082 1 90 2085 1 90 2087 1 90 2096 1 90 2102 1 90 2105 1 90 2107 1 90 2112 1 90 2115 1 90 2117 1 90 2119 1 90 2121 1 90 2122 1 90 2131 1 90 2137 1 90 2140 1 90 2142 1 90 2147 1 90 2150 1 90 2152 1 90 2154 1 90 2156 1 90 2157 1 90 2162 1 90 2165 1 90 2167 1 90 2169 1 90 2171 1 90 2172 1 90 2174 1 90 2176 1 90 2177 1 90 2178 1 90 2198 1 90 2213 1 90 2223 1 90 2229 1 90 2232 1 90 2234 1 90 2248 1 90 2258 1 90 2264 1 90 2267 1 90 2269 1 90 2278 1 90 2284 1 90 2287 1 90 2289 1 90 2294 1 90 2297 1 90 2299 1 90 2301 1 90 2303 1 90 2304 1 90 2318 1 90 2328 1 90 2334 1 90 2337 1 90 2339 1 90 2348 1 90 2354 1 90 2357 1 90 2359 1 90 2364 1 90 2367 1 90 2369 1 90 2371 1 90 2373 1 90 2374 1 90 2383 1 90 2389 1 90 2392 1 90 2394 1 90 2399 1 90 2402 1 90 2404 1 90 2406 1 90 2408 1 90 2409 1 90 2414 1 90 2417 1 90 2419 1 90 2421 1 90 2423 1 90 2424 1 90 2426 1 90 2428 1 90 2429 1 90 2430 1 90 2444 1 90 2454 1 90 2460 1 90 2463 1 90 2465 1 90 2474 1 90 2480 1 90 2483 1 90 2485 1 90 2490 1 90 2493 1 90 2495 1 90 2497 1 90 2499 1 90 2500 1 90 2509 1 90 2515 1 90 2518 1 90 2520 1 90 2525 1 90 2528 1 90 2530 1 90 2532 1 90 2534 1 90 2535 1 90 2540 1 90 2543 1 90 2545 1 90 2547 1 90 2549 1 90 2550 1 90 2552 1 90 2554 1 90 2555 1 90 2556 1 90 2565 1 90 2571 1 90 2574 1 90 2576 1 90 2581 1 90 2584 1 90 2586 1 90 2588 1 90 2590 1 90 2591 1 90 2596 1 90 2599 1 90 2601 1 90 2603 1 90 2605 1 90 2606 1 90 2608 1 90 2610 1 90 2611 1 90 2612 1 90 2617 1 90 2620 1 90 2622 1 90 2624 1 90 2626 1 90 2627 1 90 2629 1 90 2631 1 90 2632 1 90 2633 1 90 2635 1 90 2637 1 90 2638 1 90 2639 1 90 2640 1 90 2660 1 90 2675 1 90 2685 1 90 2691 1 90 2694 1 90 2696 1 90 2710 1 90 2720 1 90 2726 1 90 2729 1 90 2731 1 90 2740 1 90 2746 1 90 2749 1 90 2751 1 90 2756 1 90 2759 1 90 2761 1 90 2763 1 90 2765 1 90 2766 1 90 2780 1 90 2790 1 90 2796 1 90 2799 1 90 2801 1 90 2810 1 90 2816 1 90 2819 1 90 2821 1 90 2826 1 90 2829 1 90 2831 1 90 2833 1 90 2835 1 90 2836 1 90 2845 1 90 2851 1 90 2854 1 90 2856 1 90 2861 1 90 2864 1 90 2866 1 90 2868 1 90 2870 1 90 2871 1 90 2876 1 90 2879 1 90 2881 1 90 2883 1 90 2885 1 90 2886 1 90 2888 1 90 2890 1 90 2891 1 90 2892 1 90 2906 1 90 2916 1 90 2922 1 90 2925 1 90 2927 1 90 2936 1 90 2942 1 90 2945 1 90 2947 1 90 2952 1 90 2955 1 90 2957 1 90 2959 1 90 2961 1 90 2962 1 90 2971 1 90 2977 1 90 2980 1 90 2982 1 90 2987 1 90 2990 1 90 2992 1 90 2994 1 90 2996 1 90 2997 1 90 3002 1 90 3005 1 90 3007 1 90 3009 1 90 3011 1 90 3012 1 90 3014 1 90 3016 1 90 3017 1 90 3018 1 90 3027 1 90 3033 1 90 3036 1 90 3038 1 90 3043 1 90 3046 1 90 3048 1 90 3050 1 90 3052 1 90 3053 1 90 3058 1 90 3061 1 90 3063 1 90 3065 1 90 3067 1 90 3068 1 90 3070 1 90 3072 1 90 3073 1 90 3074 1 90 3079 1 90 3082 1 90 3084 1 90 3086 1 90 3088 1 90 3089 1 90 3091 1 90 3093 1 90 3094 1 90 3095 1 90 3097 1 90 3099 1 90 3100 1 90 3101 1 90 3102 1 90 3116 1 90 3126 1 90 3132 1 90 3135 1 90 3137 1 90 3146 1 90 3152 1 90 3155 1 90 3157 1 90 3162 1 90 3165 1 90 3167 1 90 3169 1 90 3171 1 90 3172 1 90 3181 1 90 3187 1 90 3190 1 90 3192 1 90 3197 1 90 3200 1 90 3202 1 90 3204 1 90 3206 1 90 3207 1 90 3212 1 90 3215 1 90 3217 1 90 3219 1 90 3221 1 90 3222 1 90 3224 1 90 3226 1 90 3227 1 90 3228 1 90 3237 1 90 3243 1 90 3246 1 90 3248 1 90 3253 1 90 3256 1 90 3258 1 90 3260 1 90 3262 1 90 3263 1 90 3268 1 90 3271 1 90 3273 1 90 3275 1 90 3277 1 90 3278 1 90 3280 1 90 3282 1 90 3283 1 90 3284 1 90 3289 1 90 3292 1 90 3294 1 90 3296 1 90 3298 1 90 3299 1 90 3301 1 90 3303 1 90 3304 1 90 3305 1 90 3307 1 90 3309 1 90 3310 1 90 3311 1 90 3312 1 90 3321 1 90 3327 1 90 3330 1 90 3332 1 90 3337 1 90 3340 1 90 3342 1 90 3344 1 90 3346 1 90 3347 1 90 3352 1 90 3355 1 90 3357 1 90 3359 1 90 3361 1 90 3362 1 90 3364 1 90 3366 1 90 3367 1 90 3368 1 90 3373 1 90 3376 1 90 3378 1 90 3380 1 90 3382 1 90 3383 1 90 3385 1 90 3387 1 90 3388 1 90 3389 1 90 3391 1 90 3393 1 90 3394 1 90 3395 1 90 3396 1 90 3401 1 90 3404 1 90 3406 1 90 3408 1 90 3410 1 90 3411 1 90 3413 1 90 3415 1 90 3416 1 90 3417 1 90 3419 1 90 3421 1 90 3422 1 90 3423 1 90 3424 1 90 3426 1 90 3428 1 90 3429 1 90 3430 1 90 3431 1 90 3432 1 91 36 1 91 64 1 91 85 1 91 100 1 91 110 1 91 116 1 91 119 1 91 120 1 91 148 1 91 169 1 91 184 1 91 194 1 91 200 1 91 203 1 91 204 1 91 225 1 91 240 1 91 250 1 91 256 1 91 259 1 91 260 1 91 275 1 91 285 1 91 291 1 91 294 1 91 295 1 91 305 1 91 311 1 91 314 1 91 315 1 91 321 1 91 324 1 91 325 1 91 328 1 91 329 1 91 330 1 91 358 1 91 379 1 91 394 1 91 404 1 91 410 1 91 413 1 91 414 1 91 435 1 91 450 1 91 460 1 91 466 1 91 469 1 91 470 1 91 485 1 91 495 1 91 501 1 91 504 1 91 505 1 91 515 1 91 521 1 91 524 1 91 525 1 91 531 1 91 534 1 91 535 1 91 538 1 91 539 1 91 540 1 91 561 1 91 576 1 91 586 1 91 592 1 91 595 1 91 596 1 91 611 1 91 621 1 91 627 1 91 630 1 91 631 1 91 641 1 91 647 1 91 650 1 91 651 1 91 657 1 91 660 1 91 661 1 91 664 1 91 665 1 91 666 1 91 681 1 91 691 1 91 697 1 91 700 1 91 701 1 91 711 1 91 717 1 91 720 1 91 721 1 91 727 1 91 730 1 91 731 1 91 734 1 91 735 1 91 736 1 91 746 1 91 752 1 91 755 1 91 756 1 91 762 1 91 765 1 91 766 1 91 769 1 91 770 1 91 771 1 91 777 1 91 780 1 91 781 1 91 784 1 91 785 1 91 786 1 91 789 1 91 790 1 91 791 1 91 792 1 91 820 1 91 841 1 91 856 1 91 866 1 91 872 1 91 875 1 91 876 1 91 897 1 91 912 1 91 922 1 91 928 1 91 931 1 91 932 1 91 947 1 91 957 1 91 963 1 91 966 1 91 967 1 91 977 1 91 983 1 91 986 1 91 987 1 91 993 1 91 996 1 91 997 1 91 1000 1 91 1001 1 91 1002 1 91 1023 1 91 1038 1 91 1048 1 91 1054 1 91 1057 1 91 1058 1 91 1073 1 91 1083 1 91 1089 1 91 1092 1 91 1093 1 91 1103 1 91 1109 1 91 1112 1 91 1113 1 91 1119 1 91 1122 1 91 1123 1 91 1126 1 91 1127 1 91 1128 1 91 1143 1 91 1153 1 91 1159 1 91 1162 1 91 1163 1 91 1173 1 91 1179 1 91 1182 1 91 1183 1 91 1189 1 91 1192 1 91 1193 1 91 1196 1 91 1197 1 91 1198 1 91 1208 1 91 1214 1 91 1217 1 91 1218 1 91 1224 1 91 1227 1 91 1228 1 91 1231 1 91 1232 1 91 1233 1 91 1239 1 91 1242 1 91 1243 1 91 1246 1 91 1247 1 91 1248 1 91 1251 1 91 1252 1 91 1253 1 91 1254 1 91 1275 1 91 1290 1 91 1300 1 91 1306 1 91 1309 1 91 1310 1 91 1325 1 91 1335 1 91 1341 1 91 1344 1 91 1345 1 91 1355 1 91 1361 1 91 1364 1 91 1365 1 91 1371 1 91 1374 1 91 1375 1 91 1378 1 91 1379 1 91 1380 1 91 1395 1 91 1405 1 91 1411 1 91 1414 1 91 1415 1 91 1425 1 91 1431 1 91 1434 1 91 1435 1 91 1441 1 91 1444 1 91 1445 1 91 1448 1 91 1449 1 91 1450 1 91 1460 1 91 1466 1 91 1469 1 91 1470 1 91 1476 1 91 1479 1 91 1480 1 91 1483 1 91 1484 1 91 1485 1 91 1491 1 91 1494 1 91 1495 1 91 1498 1 91 1499 1 91 1500 1 91 1503 1 91 1504 1 91 1505 1 91 1506 1 91 1521 1 91 1531 1 91 1537 1 91 1540 1 91 1541 1 91 1551 1 91 1557 1 91 1560 1 91 1561 1 91 1567 1 91 1570 1 91 1571 1 91 1574 1 91 1575 1 91 1576 1 91 1586 1 91 1592 1 91 1595 1 91 1596 1 91 1602 1 91 1605 1 91 1606 1 91 1609 1 91 1610 1 91 1611 1 91 1617 1 91 1620 1 91 1621 1 91 1624 1 91 1625 1 91 1626 1 91 1629 1 91 1630 1 91 1631 1 91 1632 1 91 1642 1 91 1648 1 91 1651 1 91 1652 1 91 1658 1 91 1661 1 91 1662 1 91 1665 1 91 1666 1 91 1667 1 91 1673 1 91 1676 1 91 1677 1 91 1680 1 91 1681 1 91 1682 1 91 1685 1 91 1686 1 91 1687 1 91 1688 1 91 1694 1 91 1697 1 91 1698 1 91 1701 1 91 1702 1 91 1703 1 91 1706 1 91 1707 1 91 1708 1 91 1709 1 91 1712 1 91 1713 1 91 1714 1 91 1715 1 91 1716 1 91 1744 1 91 1765 1 91 1780 1 91 1790 1 91 1796 1 91 1799 1 91 1800 1 91 1821 1 91 1836 1 91 1846 1 91 1852 1 91 1855 1 91 1856 1 91 1871 1 91 1881 1 91 1887 1 91 1890 1 91 1891 1 91 1901 1 91 1907 1 91 1910 1 91 1911 1 91 1917 1 91 1920 1 91 1921 1 91 1924 1 91 1925 1 91 1926 1 91 1947 1 91 1962 1 91 1972 1 91 1978 1 91 1981 1 91 1982 1 91 1997 1 91 2007 1 91 2013 1 91 2016 1 91 2017 1 91 2027 1 91 2033 1 91 2036 1 91 2037 1 91 2043 1 91 2046 1 91 2047 1 91 2050 1 91 2051 1 91 2052 1 91 2067 1 91 2077 1 91 2083 1 91 2086 1 91 2087 1 91 2097 1 91 2103 1 91 2106 1 91 2107 1 91 2113 1 91 2116 1 91 2117 1 91 2120 1 91 2121 1 91 2122 1 91 2132 1 91 2138 1 91 2141 1 91 2142 1 91 2148 1 91 2151 1 91 2152 1 91 2155 1 91 2156 1 91 2157 1 91 2163 1 91 2166 1 91 2167 1 91 2170 1 91 2171 1 91 2172 1 91 2175 1 91 2176 1 91 2177 1 91 2178 1 91 2199 1 91 2214 1 91 2224 1 91 2230 1 91 2233 1 91 2234 1 91 2249 1 91 2259 1 91 2265 1 91 2268 1 91 2269 1 91 2279 1 91 2285 1 91 2288 1 91 2289 1 91 2295 1 91 2298 1 91 2299 1 91 2302 1 91 2303 1 91 2304 1 91 2319 1 91 2329 1 91 2335 1 91 2338 1 91 2339 1 91 2349 1 91 2355 1 91 2358 1 91 2359 1 91 2365 1 91 2368 1 91 2369 1 91 2372 1 91 2373 1 91 2374 1 91 2384 1 91 2390 1 91 2393 1 91 2394 1 91 2400 1 91 2403 1 91 2404 1 91 2407 1 91 2408 1 91 2409 1 91 2415 1 91 2418 1 91 2419 1 91 2422 1 91 2423 1 91 2424 1 91 2427 1 91 2428 1 91 2429 1 91 2430 1 91 2445 1 91 2455 1 91 2461 1 91 2464 1 91 2465 1 91 2475 1 91 2481 1 91 2484 1 91 2485 1 91 2491 1 91 2494 1 91 2495 1 91 2498 1 91 2499 1 91 2500 1 91 2510 1 91 2516 1 91 2519 1 91 2520 1 91 2526 1 91 2529 1 91 2530 1 91 2533 1 91 2534 1 91 2535 1 91 2541 1 91 2544 1 91 2545 1 91 2548 1 91 2549 1 91 2550 1 91 2553 1 91 2554 1 91 2555 1 91 2556 1 91 2566 1 91 2572 1 91 2575 1 91 2576 1 91 2582 1 91 2585 1 91 2586 1 91 2589 1 91 2590 1 91 2591 1 91 2597 1 91 2600 1 91 2601 1 91 2604 1 91 2605 1 91 2606 1 91 2609 1 91 2610 1 91 2611 1 91 2612 1 91 2618 1 91 2621 1 91 2622 1 91 2625 1 91 2626 1 91 2627 1 91 2630 1 91 2631 1 91 2632 1 91 2633 1 91 2636 1 91 2637 1 91 2638 1 91 2639 1 91 2640 1 91 2661 1 91 2676 1 91 2686 1 91 2692 1 91 2695 1 91 2696 1 91 2711 1 91 2721 1 91 2727 1 91 2730 1 91 2731 1 91 2741 1 91 2747 1 91 2750 1 91 2751 1 91 2757 1 91 2760 1 91 2761 1 91 2764 1 91 2765 1 91 2766 1 91 2781 1 91 2791 1 91 2797 1 91 2800 1 91 2801 1 91 2811 1 91 2817 1 91 2820 1 91 2821 1 91 2827 1 91 2830 1 91 2831 1 91 2834 1 91 2835 1 91 2836 1 91 2846 1 91 2852 1 91 2855 1 91 2856 1 91 2862 1 91 2865 1 91 2866 1 91 2869 1 91 2870 1 91 2871 1 91 2877 1 91 2880 1 91 2881 1 91 2884 1 91 2885 1 91 2886 1 91 2889 1 91 2890 1 91 2891 1 91 2892 1 91 2907 1 91 2917 1 91 2923 1 91 2926 1 91 2927 1 91 2937 1 91 2943 1 91 2946 1 91 2947 1 91 2953 1 91 2956 1 91 2957 1 91 2960 1 91 2961 1 91 2962 1 91 2972 1 91 2978 1 91 2981 1 91 2982 1 91 2988 1 91 2991 1 91 2992 1 91 2995 1 91 2996 1 91 2997 1 91 3003 1 91 3006 1 91 3007 1 91 3010 1 91 3011 1 91 3012 1 91 3015 1 91 3016 1 91 3017 1 91 3018 1 91 3028 1 91 3034 1 91 3037 1 91 3038 1 91 3044 1 91 3047 1 91 3048 1 91 3051 1 91 3052 1 91 3053 1 91 3059 1 91 3062 1 91 3063 1 91 3066 1 91 3067 1 91 3068 1 91 3071 1 91 3072 1 91 3073 1 91 3074 1 91 3080 1 91 3083 1 91 3084 1 91 3087 1 91 3088 1 91 3089 1 91 3092 1 91 3093 1 91 3094 1 91 3095 1 91 3098 1 91 3099 1 91 3100 1 91 3101 1 91 3102 1 91 3117 1 91 3127 1 91 3133 1 91 3136 1 91 3137 1 91 3147 1 91 3153 1 91 3156 1 91 3157 1 91 3163 1 91 3166 1 91 3167 1 91 3170 1 91 3171 1 91 3172 1 91 3182 1 91 3188 1 91 3191 1 91 3192 1 91 3198 1 91 3201 1 91 3202 1 91 3205 1 91 3206 1 91 3207 1 91 3213 1 91 3216 1 91 3217 1 91 3220 1 91 3221 1 91 3222 1 91 3225 1 91 3226 1 91 3227 1 91 3228 1 91 3238 1 91 3244 1 91 3247 1 91 3248 1 91 3254 1 91 3257 1 91 3258 1 91 3261 1 91 3262 1 91 3263 1 91 3269 1 91 3272 1 91 3273 1 91 3276 1 91 3277 1 91 3278 1 91 3281 1 91 3282 1 91 3283 1 91 3284 1 91 3290 1 91 3293 1 91 3294 1 91 3297 1 91 3298 1 91 3299 1 91 3302 1 91 3303 1 91 3304 1 91 3305 1 91 3308 1 91 3309 1 91 3310 1 91 3311 1 91 3312 1 91 3322 1 91 3328 1 91 3331 1 91 3332 1 91 3338 1 91 3341 1 91 3342 1 91 3345 1 91 3346 1 91 3347 1 91 3353 1 91 3356 1 91 3357 1 91 3360 1 91 3361 1 91 3362 1 91 3365 1 91 3366 1 91 3367 1 91 3368 1 91 3374 1 91 3377 1 91 3378 1 91 3381 1 91 3382 1 91 3383 1 91 3386 1 91 3387 1 91 3388 1 91 3389 1 91 3392 1 91 3393 1 91 3394 1 91 3395 1 91 3396 1 91 3402 1 91 3405 1 91 3406 1 91 3409 1 91 3410 1 91 3411 1 91 3414 1 91 3415 1 91 3416 1 91 3417 1 91 3420 1 91 3421 1 91 3422 1 91 3423 1 91 3424 1 91 3427 1 91 3428 1 91 3429 1 91 3430 1 91 3431 1 91 3432 1 0 0 0 linbox-1.4.2/benchmarks/matrix/bibd_14_7_91x3432.sms.gz000066400000000000000000005276271274717217100223000ustar00rootroot00000000000000‹ý.Rbibd_14_7_91x3432.smsLk’ì:ÎkÿßQœ!X¾ñÍ:wW îèˆ]êS2%²$éYÿ{öÿ÷ÿÖÿþ÷ïßýû÷üþ½¿ã÷oþþ­ß¿ýûw~ÿ®çýñ^½ÞË×{ýz ¬×ÂzM¬×Æz¬×Ê~­l}†×Ê~­ì×Ê~­ì×Ê~­ì×Ê~­œ×Êy­ý)¯•óZ9¯•óZ9¯•óZ9¯•ûZ¹¯•ûZ¹Z‘×Ê}­Ü×Ê}­Ü×Ê}­Äk%^+ñZ‰×Jha_+ñZ‰×J¼Vâµ’¯•|­äk%_+ùZIùçµ’¯•|­äk¥^+õZ©×J½VêµR¯•’›_+õZ©×J¿VúµÒ¯•~­ôk¥_+ýZiEËk¥_+óZ™×ʼVæµ2¯•y­Ìke^+£ #êvâîQà=мG¡÷(öߣè{~ì9Œe@&’ eb™`&š gÅóR@¯ .dO1½ÔKQ½ÖKq½ØK‘½ÚK±½@“=…÷R|/øR„/…øRŒ/ùR”/…ùº WöéK¡¾ëKÁ¾íKá¾ïK¿ñ+Ø dOA¿õKa¿÷K¿ùK¡¿ûKÁ¿’½EöÿKXBÀ–0°‚%,Á` «Ø¬dOPX–а‡%<,b KXÍî'{BÅ,–p±Œ%d,Ac KàXBǶSöSm¨ÂÇ>¶ð±…-|lác [øØÂÇ^lв'|lác [øØÂÇ>¶ð±ÙïÙð½ãË{>›>»>Û>û>¿ð±…-|ìÃ#Dö„-|lác [øØÂÇ>¶ð±…}y&Éžð±…-|lác [øØÂÇ>¶ð±ƒ‡œì [øØÂÇ>¶ð±…-|lác ;yjÊžð±…-|lác [øØÂÇ>¶ð±‹Ç°ì [øØÂÇ>¶ð±…-|lác »y®Ëžð±…-|lác [øØÂÇ>¶ð±‡ƒ'„#|áãGø8ÂÇ>Žðq„³8zÈžðq„#|áãGø8ÂÇ>Žðq„#|áãGø8ÂÇ>Žðq8q4âläÑìq<â|ĉG$áãGø8Âǹœ¶dOø8ÂÇ>Žðq„#|áãGø8ÁñMö„#|áãGø8ÂÇ>Žðq„“œeOø8ÂÇ>Žðq„#|áãGø8ÅSö„#|áãGø8ÂÇ>Žðq„ÓœXeOø8ÂÇ>Žðq„#|áãGø8Ø3°ÁÂÇ>®ðq…+|\áã Wø¸ÂÇ]ªeOø¸ÂÇ>®ðq…+|\áã Wø¸ÂÇ>®ðq…+|\áã Wø¸ÂÇ>®ðqÇ~Ù>®ðq…+|\áã’CDEF8=2 R r ’ áã Wø¸ÂÇ>n˜Èžðq…+|\áã Wø¸ÂÇ>®ðq“LGö„+|\áã Wø¸ÂÇ>®ðq…[¤N²'|\áã Wø¸ÂÇ>®ðq…+|Ü&“=áã Wø¸ÂÇ>®ðq…+|\áãÉÙÒ;á#„>Bøá#„>Bøá#é¢ì !|„ðÂG!|„ðÂG!|„ðÂG!|„ðÂG!|„ðÂGZÙ>Bøá#„>Bøá#„>â’!ËžðÂG!|Ù6é6ù6 7·SnÙ#é&ë&í>Bøá#„>Bøˆ$‡—=á#„>Bøá#„>Bøá# R@ö„>Bøá#„>Bøá#„hXÙ>Bøá#„>Bøá#„>b -à-D\)|¤ð‘ÂG )|¤ð‘ÂG ¹ BdOøHá#…>RøHá#…>RøHá#…>RøHá#…>RøHá#…>ò@ÕÈžð‘ÂG )|¤ð‘ÂG )|¤ð‘îGö„>RøHá#…>RøHá#… È$Ù>RøHá#ᥠ¦`¦ ¦à¦ §ÌNÉü•ð‘ÂG )|¤ð‘ÂG YÐ]²'|¤ð‘ÂG )|¤ð‘ÂG )|dßɞð‘ÂG )|¤ð‘ÂG )|¤ð‘!#'JNø(ᣄ>Jø(ᣄ>Jø¨Å'{ÂG %|”ðQÂG %|”ðQÂG %|”ðQÂG %|”ðQÂG %|”ðQRö„>Jø(ᣄ>Jø(ᣄº°š²'|”ðQÂG %|”ðQÂG %|T@“ÊžðQÂG %|”ðQÂG %|”ðQ ï*{ÂG ƒ … ‡ ‰ ‹ k"Wö r…>Jø(ᣄ>Jø(á£fXö„>Jø¨>öOSØÿ½ãóû÷þþß¿ùû·~ÿöïßy¯zÞïÕK¦Þë×k`½Ökb½6Ökd½Vökeë3¼Vöke¿Vöke¿Vöke¿Vökå¼VÎkåèOy­œ×Êy­œ×Êy­œ×Êy­Ü×Ê}­Ü×ÊÕŠ¼Vîkå¾Vîkå¾Vîk%^+ñZ‰×J¼VB ûZ‰×J¼Vⵯ•|­äk%_+ùZÉ×JÊ?¯•|­äk%_+õZ©×J½VêµR¯•z­”ÜüZ©×J½VúµÒ¯•~­ôk¥_+ýZé×J+Z^+ýZ™×ʼVzóZ™×ʼVæµ2¯•QÐu »Gq÷(ðEÞ£Ð{{‚ïQô= ¿GöƲG É„2±L0Í„³ây) ×²§˜^ ꥨ^ 른^ ì¥È^ í¥Ø^ ÉžÂ{)¾—|)—B|)Æ—‚|)Ê—Â|]+{Šô¥P_Šõ¥`_Šö¥p_Š÷¥€_Šøl²§ _Šú¥°_Šû¥À_Šü¥Ð_Šý¥à_ÉÞ"{Šÿ%,!` KXÁ –`°„ƒUlV²'(,aa KhX‚Ö±„ˆ%H¬f÷“=¡b K¸XìÉBÆ4–°±Ž%t¬a;e?Õ†*|lác [øØÂÇ>¶ð±…-|ìÅ-{ÂÇ>¶ð±…-|lác ›ýž ß;¾ì±ç³é³ë³í³ï³ñ [øØÂÇ>¶ð±…-|lác [øØ—g’ì [øØÂÇ>¶ð±…-|lác ;xÈÉžð±…-|lác [øØÂÇ>¶ð±“§¦ì [øØÂÇ>¶ð±…-|lác »x Ëžð±…-|lác [øØÂÇ>¶ð±›çºì [øØÂÇ>¶ð±…-|lác {8(pRÐQAø8ÂÇ>Žðq„#|áãGø8‹£‡ì Gø8ÂÇ>Žðq„#|áãgs–‘=áãGø8ÂÇ>Žðq8 ¥õ*­Wi½JëUZ¯ý<ûõð×zµÖ«µ^­õj­Wk½ZëÕZ¯Özõâ0!{Z¯ÖzµÖ«µ^­õj­Wk½ZëÕZ¯ÞœNdOëÕZ¯ÖzµÖ«µ^­õj­Wk½ZûIŽ;²§ý¤µŸ´ö“Ö~ÒÚOZûIk?ií'­ý¤/ç'ÙÓ~ÒÚOZûIk?ií'­ý¤µŸ´ö“Ö~ÒÁLö´Ÿ´ö“Ö~ÒÚOZûIk?ií'­ý¤µŸtr“=í'­ý¤µŸ´ö“Ö~ÒÚOZûIk?ií']eOûIsöäðÉé“ã'çO œ@9‚ú *{ÚOZûIk?ií'-|´ðÑÂG -|ôp¨åT«c­ð1ÂÇ#|Œð1ÂÇ#|Œð1‹c²ì #|Œð1ÂÇ#|Œð1Âdz9wËžð1ÂÇ#|Œð1ÂÇ#|Œð1ÂÇ#|Œð1ÂÇ#|Œð1ÂÇ#|Ì%3=ác„>Føác„>Føác‚TCö„>Føác„>Føác„IrÙ>Føác„>Føác„>¦H†dOøác„>Føác„>Fø˜&»’=²4Ò4ò4525R5r5’5²5§kÎ×HØœ±9esÎæ¤ÍY›Ó6çmNÜÈÜR·‡Üí!y{ÈÞÒ·‡üí!{ÈàR¸‡î!‰{ÈâÒ¸‡<î!‘{ÈäR¹‡\î!™{ÈæÒ¹‡|î!¡{ÈèRº‡œî!©{ÈêÒº‡¼î!±{ÈìR»‡Üî!¹{ÈîÒ»‡üî!Á{ÈðR¼‡ï!É{ÈòÒ¼‡<ï!Ñ{ÈôR½‡\ï!Ù{ÈöÒ½‡|ï!á{ÈøR¾‡œï!é{ÈúÒ¾‡¼ï!ñ{ÈüR¿‡Üï!ù{ÈþÒ¿‡üï!|ÈRÀ‡ð! |ÈÒÀ‡<ð!|ÈRÁ‡\ð!|ÈÒÁ‡|ð!!|ÈR š41kbÚ3'¦N̘<ùØ“>Á² 3(¦PÌ¡˜D1‹b šH1“b*Å\ŠÉ³)¦Ş˜P1£bJÅœŠI³*¦UÌ«˜X1³bjÅ܊ɳ+¦W̯˜`1ÃbŠÅ‹I³,¦Y̳˜h1ÓbªÅ\‹É³-¦[Ì·˜p1ãbÊÅœ‹I³.¦]Ì»˜x1óbêÅ܋ɳ/¦_Ì¿˜€1c ÆŒI³0¦aÌØˆ1c*Æ\ŒÉ³1¦cÌǘ1#cJÆœŒI³2¦eàeÄÌ‚™YP3 nfAÎ,Ø™=³àgÍ‚¡YP4k›‹ƒ°4 šfÁÓ,ˆšS³ jÖ6—i2óc3±l>Ó„¦MSšæ4Mj‚Ah›o³ nÌÍ‚ºYp7 òfÁÞ,蛳 p ΂ÂYp8 gÁâ,hœ³ rL΂ÊYp9 2gÁ欗Î9?Iåü$•ó“TÎïß¿ùû·~ÿöïßy¯zÞïÕë½|½×/~-¬×Äzm¬×Èz­ì×ÊÖgx­ì×Ê~­ì×Ê~­ì×Ê~­ì×Êy­œ×ÊÑŸòZ9¯•óZ9¯•óZ9¯•óZ¹¯•ûZ¹¯•«y­Ü×Ê}­Ü×Ê}­Ü×J¼Vⵯ•x­hÁ㵯•x­Äk%^+ùZÉ×J¾Vòµ’¯•”^+ùZÉ×J¾VêµR¯•z­Ôk¥^+õZ)¹ùµR¯•z­ôk¥_+ýZé×J¿VúµÒ¯•V´¼Vúµ2¯•y­Ìke^+óZ™×ʼVæµ2 :¢Na÷(îÞ£È{zbïQð=оGá÷ÈžÃXöd"™P&– f¢™pV®ðqٳٴٵٶ½oË;7[7{7›·ðq…+|\áã 7xÈžðq…+|\áã Wø¸ÂÇ>®ðq“'‹ì Wø¸ÂÇ>®ðq…+|\áã ·xTÉžðq…+|\áã Wø¸ÂÇ>®ðq›gŸì Wø¸ÂÇ>®ðq…+|\áã wx˜ò4ÕãTøá#„>Bøá#„>BøˆÅãYö„>Bøá#„>Bøá#„Ø<ïeOøá#„>Bøá#„>BøˆÃBö„>Bøá#„>Bø(­iýKë_ZÿÒú×ðèçÙ¯‡¿Ö¿µþ­õo­ký[ëßZÿÖú·Ö¿‡ ÙÓú·Ö¿µþ­õo­ký[ëßZÿÖú÷æt"{ZÿÖú·Ö¿µþ­õo­ký[ëßZÿ>wdOëßZÿÖú·Ö¿µþ­õo­kjíO}9?Éžö§ÖþÔÚŸZûSkjíO­ý©µ?µö§d²§ý©µ?µö§ÖþÔÚŸZûSkjíO­ý©“žìijíO­ý©µ?µö§ÖþÔÚŸZûSkêâÈ({ÚŸš³'‡ONŸ?9råÊÔgPÙÓþÔÚŸZûSkjᣅ>ZøhᣇC-§Zk…>Føác„>Føác„Y“eOøác„>Føác„>Fø˜Í¹[ö„>Føác„>Føác„9äeOøác„>Føác„>Fø˜Kf {ÂÇ#|Œð1ÂÇ#|Œð1ÂÇ©†ì #|Œð1ÂÇ#|Œð1ÂÇ“ä.²'|Œð1ÂÇ#|Œð1ÂÇ#|L‘ Éžð1ÂÇ#|Œð1ÂÇ#|Œð1Mv%{di¤iäi$jdj¤jäj$kdkNל¯‘°9c#eÛòÁÚrÂÚòÂÚrÃÚA^%G¬0‰ùbm9cíÄrb9±œXN,– Ë…åÂra¹°\X.,– ËåÆrc¹±ÜXn,7–ËåÆò`y°¤Ú‡\û˜5"Û>¤Û‡|ûp2îCÊ}È¹ÏÆòÆòÆòÆòÆòÆòÆòÆòÆòÆòÁòÁòÁòÁòÁòÁòÁòÁòÁòÁòÅòÅòÅòÅòÅòÅòÅòÅòÅòÅr`9°X,Cý‘ç/ýE¦¿Hõ¹þ"Ù_dû‹t‘ï/þEÆ¿Hù9ÿ"é_dý‹´‘÷/ÿEæ¿Hý¹ÿ"ù_dÿ‹ô‘ÿ/€° À‚X° `Á,ˆ€° \À‚ X° :`Á,#° œÀ‚X° Z`Á ,ˆ3° ÜÀ‚X° z`Á,‚uÍÝ‚A8‚I°` 4Á‚'X ¦`A,¸‚Y°` tÁ‚/X Æ`A,8ƒi°` ´Á‚7X æ`A,¸ƒy°`ôÁ‚?X aA!,8„‰°`4‚GX &aA%,¸„™°`t‚OX FaA),8…©°`´Â‚WX faA-,¸…¹°`ô‚_X †aA1,8†ɰ`4ÂgX ¦aA5,¸†Ù°`tÂoX ÆaA9,8‡é°`´Ã‚wX æaA=,¸‡ù°`ÖK?ÜŸ¤r’ÊýI*÷'©ÜŸ¤rÿ{çÔïßþý;ïUÏûã½z½—¯÷úõX¯…¥Û¼6Ökd½Vökeë3¼Vöke¿Vöke¿Vöke¿Vökå¼VÎkåèOy­œ×Êy­}–ÍÇÖçÖ-—î¹tÓµ™¯¯û.ÝxéÎK·^‡u=Ý}éö‹ûÙ;²wdïÊÞ•½+{—…•½+{Wö®ì]Ù»²²²²²xJöBöBöBöBöRöRöRöRöRö×Ë^Ê^Ê^Ê^É^É^É^É^É^É^K²W²W²×²×²×²×²×²×²×²×§ìµììììììììì ÑN¸+Þü£ˆò¢•Pv,+˜‰fÂYñtOGñtOGñtOGñt.à=ÅÓQ<ÅÓQ<ÅÓQ<ÅÓQ<ÅÓ Ð&{Ч£x:Ч£x:Ч£x:Ч£x:Ч“ÀWöOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOGñtOWñtOWñtOWñôž»®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àªqÁUã‚«ÆW ®\5.¸j\pÕ¸àJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+EæJ‘¹Rd®™+Eæò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/ßx¿|ãýò÷Ë7Þ/bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ‹tƒ.bÐE ºˆA1è"]Ä ûÇáAÆ™Ad‘Df™Ad†ÙX"3ˆÌ 2ƒÈ "3ˆÌ 2ƒÈ "3ˆÌ 2ƒÈ "3ˆÌ 2ƒÈ "3ˆÌ 2ƒÈ "3ˆÌ 2ƒÈ "3ˆLè‰?± ( Å‚¢Xp ’bÁR¬0jÕDª™TS©—Še³©¦Sͧ™0 ÊbÁY,H‹k± -¼Å‚¸X0 êbÁ],È‹{± /üÅ‚ÀX0 cÁa,HŒŽLžð "cÁd,¨Œ—± 3lÆ‚ÎXð BcÁh,(§± 5¬Æ‚ÖXð bcÁl,¨·± 7ìÆ‚ÞXð ‚cÁp,(ŽDZ 9,Ç‚æXð+­‰€A¨Ž×± ;lÇ‚îXð ÂcÁx,(ç± =¬Ç‚öXð âc½ÌGüÄ øïŸß¿÷÷oüþÍß¿õû·ß9ïÿ9úó^ò¼?^c÷µveîµw_ƒ÷µx_+÷µr_+ñZ‰×J¼VâµúT¯•x­Äk%^+ñZÉ×J¾Vòµ’¯•|­¼ÇÂRƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjP¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%Q¨%QH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ú‡Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjPH ©A!5(¤…Ô RƒBjP¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G¨¾#TߪïÕw„ê;Bõ¡úŽP}G jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jPЉ&èDt¢ :Ñh‚N4A'š MЉ&èDt¢ :Ñh‚N4A'š MЉ&èDt¢ :Ñh‚N4A'š MЉ&èDt¢ :Ñh‚N4A'š MЉ&èDt¢ :Ñh‚N4A'š MЉ&èDt¢ :Ñh‚N4A'š MЉ&èDt¢ :Ñh‚N4A'š MЉ&èDt¢ :Ñh‚N4A'š MЉ&èDt¢ :Ñh‚N4¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨A¨AVã°‡Õ8¬Æa5«qXÃjVã°‡Õ8¬Æa5«qXÃjVã°‡Õ¸¬Æe5.«qYËj\Vã²—Õ¸¬Æe5.«qyV^ž•—gååYI¢¿Èô©þ"×_$û‹l‘î/òýEÂ¿Èø)ÿ"ç_$ý‹¬‘ö/òþEâ¿Èü©ÿ"÷_$ÿ‹ì‘þ/òÿuMØ™±3egÎî#í°lÚμ‰;žP .@jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP jP ÅŸ÷©¸OÅ}*îSqŸŠûTܧ⠇cç<¥}´tº)oJç›RÜ—â¾.gR÷¥¸/Å})îKq_ŠûRÜ—â¾÷zdOq_ŠûRÜ—â¾÷¥¸/í÷¥ý¾´ßWrŠ’=ÅA)Šó2NdZßÒú–Ö·´¾¥õ­á@¦Ùæ,¦Ã˜â·¿­ømÅo+~[ñÛŠßVü¶â·‡;ÙÓ¾ÝÚ·[ÏÅ–?[þlù³åÏ–?[ñÛŠßæDÉ‘’3%‡JN•+¿­ømÅo+~[ñÛŠßVü¶â·µ¾­õm­ok}[ë;ú{Gïèïý½s˜×úùÞwô÷ŽþÞQüŽâw¿£øÅï(~Gñ;ŠßQüŽâw¿£øÅï(~Gñ;ŠßQüŽâw¿£øÅï(~Gñ;ŠßQüçßG·4¡DJ4¡DJ4¡DJ4¡DJ4¡DJ4¡DJ4¡DJ4¡DJ4¡DJ4¡DJÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„þÚ£Õbÿ7 +~H‹ÕVd–‹Ôr‘[.’ËEv¹H/×6¯¬È0)æ"Ç\$™‹,s‘f.òÌE¢¹ö—ÉcÙ¹¼“ygóNçÉç÷Æ2´ ¤M miH_l|±ñÅÆ_l|A²»Èvéî"ß]$¼‹Œw‘ò.rÞEÒ»Èziï"ï]$¾‹Ìw‘úªÌ%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\’2—¤Ì%)sIÊ\M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„MèoÀwÙâ.[Üe‹»áÉ| `uÕVX]`uÕVX]`uÕVX]`uÙÿ"ý_äÿ `Á,(€° ,À‚Xð "`Á,¨€ M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„M(Ñ„Mèo€/_¾|ø"ðEà‹Àa_êÔ¨P @€:uêÔ¨á,¤Å‚µXÐ ÞbA\,˜‹u±à.äÅ‚½XÐ þbA`, iB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB‰&”hB"ºbÁW,‹c± ,œÅ‚´X° ÚbÁ[,ˆ‹s±ŠH("¡ˆ„"ŠH("¡ˆ„÷[­õ« ªÿÞño›¨·µ[½­ÝêmíVok·z[»Õ« Õ[ýSoõO½Õ?õVÿÔ[ýSoõO½šP½šP½šP½šP½šP½šP½/r©÷E.õ¾È¥Þ¹Ôû"—z_äRï‹\ê}‘K½/r©÷E.õ¾È¥Þ¹Ôû"—z_äRÿ½Eï%Q¨TøS*ü)þ” J…?¥ÂŸ’(T…J¢PI*‰B%Q¨Ô­Ô­Ô­Ô­Ô­Ô­Ô­Ô­Ô­Ô­Ô­Ô­Ô­Ô­Ô­$ •D¡’(T…J¢PI*ì” vJ;¥‚RÁN©`§T°S*Ø)ì” vJ;¥‚RÁN©`§T°S…J¢PI*‰B%Q¨$ •D¡’(T…J¢PI*‰B%Q¨$ •D¡Ò;°KïÀ.½»ôìÒ;°KïÀ.½»ôìÒ;°KïÀ.½»ôìÒ;°KïÀ.½»ôìÒ;°KïÀ.½»ôì’(T*ü)þ” J…?¥ÂŸRáOI*‰B%Q¨$ •D¡’(Tj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹Vj‹V…J¢PI*‰B%Q¨$ • vJ;¥‚RÁN©`§T°S*Ø)ì” vJ;¥‚RÁN©`§T°S*Ø)‰B%Q¨$ •D¡’(T…J¢PI*‰B%Q¨$ •D¡’(T…J¢Pé…"¥Š”^(Rz¡Hé…"¥Š”^(Rz¡Hé…"¥Š”^(Rz¡Hé…"¥Š”^(Rz¡Hé…"¥Š”^(Rz¡HI*‰B%Q¨$ •D¡’(T*Ø)ì” vJ;¥‚RÁN©`§T°S*Ø)ì” vJ;¥‚RÁN©`§$ •D¡’(T…J¢PI*‰B%Q¨$ •D¡’(T…J¢PI*‰B¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc¥öc%Q¨$ •D¡’(T…J¢PI*‰B%Q¨$ •D¡’(T…J¢PI*â” qJ…8¥BœR!N©§TˆSÿqd)­siKq_ŠûRÜ—â¾÷¥¸/Å})îKq_Šû’?Jþ(ù£ä’?Jþ(ù£ä’?Jþ(ù£ä’?Jþ(ù£t~(Jç‡W*‰Bÿ~Ê%”üQòGót_ù£ä’? h*íC¥}¨´•öûÒþÝÂM 7-öÃï¯~¾×·ÖµµŸ´ö“Ö~Ò›y:úi][ëÚZ×ÖºöežÎˆZ×Öº¶Öµµ®­um­kk][ëÚÁ‘Sö´^­õj­Wk½ZëÕÃá”өާZ—ѺŒÖe´.£uÅù(ÎGq>ŠóYweoqà•=í'£ýd´ŸŒâw¿£øÅï(~Gë<—´ìiGë1Ú'FûÄhŸÅå(.Gq9ŠË)å²§u­óhGëÜËËËËËÁœ`N0'<‡»êã6ŽÛ8nã¸ã6ŽÛ8nã¸Ý|Ôæc4–Ùwc¹±<¦6à6ðYè" ]ä¡… Q¨… Q¨… Q¨… Q¨… QèoÀò–÷°¼–å@³x–Ñr`ZTËÁ)§œrp ùñ"A^dÈ‹y‘#/’dõ+D¡B*D¡B*D¡B*D¡B*D¡B*D¡B*D¡B*D¡¢è¦(º)ŠnŠ¢›¢è¦(º)ŠnŠ¢›¢è¦(º)ŠnŠ¢›¢è¦(º)ŠnŠ¢›¢è¦(º)ŠnŠ¢›B*D¡B*D¡B*D¡B*D¡B*D¡B*D¡B*D¡B*D¡B*D¡B*D¡¿¼xðâÁ‹/¼xðâÁ‹/¼ö Ö˃õò`½lËÁ¶ °`4À‚X &`A,¸€°`tÀ‚X F`A ,rýE²¿Èöéþ"ßWÑMQtSÝE7EÑMQtSÝE7EÑMQtSÝE7EÑMQtSÝ¢P! ¢P! ¢P! ¢P! ¢P! ¢P! ¢P! ¢P! ¢P! ¢P! Õj:ö—A0ðäbÐ `ôñ`âÁdHv€dHv€d€ºXp òbÁ^,英 0 Æ‚ÂXp cÁb,hŒ± 2LÆ‚ÊXp 2C¢PQ¡STè:E…NQ¡STè:E…NQ¡STè:E…NQ¡STè:…(TˆB…(TˆB…(TˆB…(TˆB…(TˆB…(TˆB…(TˆB…(ô7`s€-YÐ% ¾dA˜¬—1é_«¸~K„úU…ú}›O¿oóé÷m>ý¾Í§ß·ùô["Ô¯*Ôo÷~¾õÛð­ß†oý6|ëWê· ¨ß2 ~Ë€ú-ê· ¨_U¨_U¨_U¨_U¨_Uèïã.ýÜúÉŸqõ3ô3õ³ô³õó5·ø»õ¿òPÿ÷&?eçÈΑýù¯<ÔªjÕµjZµ@­Z –<Ô’‡ZòPKjÉC­·Ü´ÞrÓzËMë-7­·Ü´ÞrÓzËMë-7­·Ü´ÞrÓ’‡Zµ@­Z V-P«¨U Ô’‡ZòPKjÉC-y¨Õ­Õ­Õ­Õ­Õ­Õ­Õ­Õ­Õ­Õ­%µä¡–<Ô’‡ZòP«Æ§UãÓªñiÕø´j|Z5>­ŸVO«Æ§UãÓ’‡ZòPKjÉC-y¨%µä¡–<Ô’‡ZòпŸÒ{ˆþûÙú){[ö¶ì)þŽ w„¹#н_jÉC­~o­~o­~o­~o­~o-y¨U ÔªjÕµjZµ@-y¨%µä¡–<Ô’‡Zo¹i½å¦õ–›Ö[nZo¹i½å¦õ–›Ö[nZo¹i½å¦%µjZµ@­Z V-P«¨%µä¡–<Ô’‡ZòP«ÿZ«ÿZ«ÿZ«ÿZ«ÿZ«ÿZ«ÿZ«ÿZ«ÿZ«ÿZKjÉC-y¨%µä¡VO«Æ§UãÓªñiÕø´j|Z5>­ŸVO«Æ§%µä¡–<Ô’‡ZòPKjÉC-y¨%µä¡Öûá[ï‡o½¾õ~øÖûá[ï‡o½¾õ~øÖûá[ï‡oÉC­Z V-P«¨U ÔªjÉC-y¨%µä¡–<Ôê¿Öê¿Öê¿Öê¿Öê¿Öê¿Öê¿Öê¿Öê¿Öê¿Ö’‡ZòPKjÉC-y¨UãÓªñiÕø´j|Z5>­ŸVO«Æ§UãÓªñiÉC-y¨%µä¡–<Ô’‡ZòPKjÉC-y¨õ6™ÖÛdZo“i½M¦õ6™ÖÛdZo“i½M¦õ6™ÖÛdZòPKjÉC-y¨%µj|Z5>­ŸVO«Æ§UãÓªñiÕø´j|Z5>-y¨%µä¡–<Ô’‡ZòPKjÉC-y¨%µúªµúªµúªµúªµúªµúªµúªµúªµúªµúªµä¡–<Ô’‡ZòPKjÉC-y¨%µä¡–<ÔªñiÕø´j|Z5>­ŸVO«Æ§UãÓªñiÕø´ä¡–<Ô’‡ZòPKjÉC-y¨%µä¡–<ô÷Sóä·’ßJ~+ü¦ý©…›–ŸZ~jù©å§–ŸZxh­ký[ëßZÿÖú·Öµµ®­um­kk][ëÚZ×Öº¶Öµµ®­um­kk];9zröäð©yŠóVœ7gT©Ã)•c꣟K?ßûŽö“Ñ~2ÚOFûÉh?í'£ýd´ŸŒÖoç£ýd´ŸŒö“Ñ~2ŠßÑ~<ÚGûñh?í'£ýd´ŸŒö“Ñ~2ZçÑ>1Ú'FûÄhŸÅå(.Gq9ŠËQ\ŽÖyoÃ1_ñ6Š·Ñóqô|Åßèù8:‡ÌpÎwBÀIÿá¨ÿ,r‡Eò°˜¼I6ùÃ&ØX&Ex–/–/–/–¯ó,_,_,_,_,“-<‰åÄrb9±LÊð–ËI– Ë…åÆrc¹±ÜX,–Ë^çqBåŒêa°l²¼þzÌo ŠA3ÀòÆòÆ2iÛÚXÞL>L>L>L>LÆ) §,œ²pÊÂ)NõV`9°X,'–ˉåÄrb9±LvèôÐù¡ÄÕX&EtŽè$ÑY¢ÓDç‰N):U\xpãÁ7Üxp“h“YJjä¡Fj*{šÊž¦²§©ìi*{šÊž¦²§©ìi*{šÊžFjä¡Fjä¡Fjä¡Fjä¡Fjä¡ß€É¸{ãî»7îÞ¤ÿ䯋v‘Á.RØE»HbYì"]䱋DVmÖ~,㸠N78%]䳋„v‘Ñ.RZÉC<ÔÈC<ÔÈCMeOSÙÓTö4•=MeOSÙÓTö4•=MeOSÙÓÈC<ÔÈC<ÔÈC<ÔÈC<ÔÈC<ô7zd½‹´w‘÷êe0¿–Þz‡ö°Ó’&/òäE¢¼È”%5•=MeOSÙÓTö4•=MeOSÙÓTö4•=MeO#5òP#5òP#5òP#5òP#5òÐß4‘h¯kæ 4‘k«sÚo€eÐtÙi/;-™ù"5_äæ‹ä|‘/ÒóE~¾HÐú"E_äè‹$}‘¥/ÒôEž®Êž¦²§©ìi*{šÊžFjä¡Fjä¡Fjä¡Fjä¡Fjä¡þOoÿ 6ƒÃà2ðdÈE6Xh€° TÙÓTö4•=MeOSÙÓTö4•=MeOSÙÓTö4òP#5òP#5òP#5òP#5òP#ý Ø<¡üÀ‚ X0êœö`P B>aA(,…¥°à¤Â‚UXÐ ^aA,,˜…µ°àä‚]PeOSÙÓTö4•=MeO#5òP#5òP#5òP#5òP#5òÐoÀdܸ;qwân¨‹w± /ìÅ‚¾Xð cÁ`,( ÉCMeOSÙÓTö4•=MeOSÙÓTö4•=MeOSÙÓÈC<ÔÈC<ÔÈC<ÔÈC<ÔÈC<ô7 $`@È‚Y öcA,øÉC<ÔÈC<ÔÈC<ÔÈCMPSÔ”5e@MP#5òP#5òP#ývæ÷¡Ÿ~½?ê÷ã·¥üû¡ÿ×ïùýøÅͼ­ãæ­šWš÷?ó¾ógÞwþÌûΟy«…敇æí7o'¸y;ÁÍÛ n^yhÞ y ƒæ- š·0h$ä¡‘<4’‡þþý~é÷K¿_ü>ôó½×›^Œª†FòÐßOýÿûè§ì^ÙÕ¾ô—¿¥û?5/5/e¿ôûÒ|­ÃÒB,­Ä{öÉC#yh$ýû9úýè÷£ß¿?÷{ÒU ä¡Q+¸Q+¸Q+¸Q+¸‘<4ªUªƒFÕA#yh$ä¡‘<4zÝÎèu;£×íŒ^·3zÝÎèu;#yhT4ªUªƒFòÐHÉC#yhÔÒmÔÒmÔÒmÔÒmÔÒmÔÒm$ä¡‘<4’‡FÕ@£j Q5ШhT 4ªÉC#yh$ä¡‘<4’‡þ~j¾ w„¹è´îGñx´¾ïÁyôºŸÑë~F¯ûU ä¡Q+¸Q+¸Q+¸Q+¸‘<4ªUªƒFÕA#yh$ä¡‘<ôo[xB?µÉhÝîÃïµ}hÝ.›‘Öãnþ¿®Óz\­Ç{lUªƒFÕA£ê ‘<4’‡FòÐH½ngôºÑëvF¯Û½ngôº‘<4ªUªƒFÕA#yh$ä¡‘<4jé6jé6jé6jé6jé6jé6’‡FòÐHÉC£j Q5ШhT 4ªUä¡‘<4’‡FòÐHÉC?5ÿhþÑ|ÅchýßSà¨ܨܨܨÜHUªƒFÕA£ê ‘<4’‡FòÐH½ngôºÑëvF¯Û½ngôº‘<4ªUªƒFÕA#yh$ä¡‘<4jé6jé6jé6jé6jé6jé6’‡FòÐHÉC£j Q5ШhT 4ªUä¡‘<4’‡FòÐHÉC_ÍW|§â;ß)?¤öƒÔ~ðž”FÕA#yh$ä¡‘<4jé6jé6jé6jé6jé6jé6’‡FòÐHÉC£j Q5ШhT 4ÿqˆ)Å}É/%¿”üRòKÉ/%¿”üRòKÉ/%¿ÔažN(Š÷Òy ä·hT 4ªUªFòÐHÉC#yh$ä¡Q‹·Q‹·Q‹·Q‹·‘<4’‡FòÐHÉC#yhT4ªUªƒFòÐHÉC#yèï§®—?[ûSkj=ÿZ~kù­å·–ZëßZÿÖú·Ö¿µþ-\´Ö¹µÎ­un­sk][ëÚÁQR¿×:¶Ö±µŽ­ulíë­õlí7­uêæÿë:­Gkiíߣ8Åñ(ŽçáL«ßk=Fq<ŠãQÜŽâv·³ù}é§î§u›Ãÿ?ß(>GÏÇѺÖm´n£ø­ÛhÝFë6ŠÇQ<ŽöÑ:ŽÖq´Ž£u­ßh¿í×o5ШhT 4’‡FòÐHÉC#yh$ýýÔ|=/ף濙©Àó0‡ÃÿÃéÿáøÿhÿ@4Ô µACmÐP4Dƒ@4Dƒ@ô0‡Tá æs‚ì%¸{pUò_’Ïœ|æä3sÈ*ÒŠ‡¼âiæY<¤O{N3àîN·È7އŒãK¹r*»*†J ¡hˆhˆhˆèo€wÖæªÍU›«pœs¸u˜|˜|˜|™s™s™s™ƒSœä­`NxÇ-·pÜÂq Ç-çtÐù Bg„«°Œ+$:Ktšè3Ë»‰ÃM n–w³¼›X|õ§ß€›67æ l.]õ~uë7T,øy<Ü= ™C¬¾_ïú ¸j­\…/€>„ñ{Ôÿ ¸jsþ~ÏëoÎÞyí\ð~uë7`h?¬üaåßocýLfå ~ˆçC<âùχx~ÏØëQÑÒo°ƒd ?ù²\–÷²¼—ż¬áeÅ.ës ì˾x‰çK<_VìÏ—x¾ÄóeÅ.›Ã%ž/kx ã÷üxN3`ˆç˪^âù²¼—x¾Äóey/Ë{‰ç;žÃMG7 ¢7Ø.Þ3íoàÇÂÀ ~±àAô+Do½/‚è ¢7ðEð Â8Øv7½Z×߀öð÷»Nv›À;w‚Ý&pJà”`o |ñ\æà‹Àï—•~Ïá  Ø[‚½%Æ[MNœ’¸ ‰ùdKI\¸ qAâ‚ĉ äöòà"qA²àÉ‚' þªb¿–yhæõ,–ñE²í$ÛNâ‹ô¡Ã§°“¸)yæ&[S¢Ä_ v½GÇ¿þJ°“ø+ñW‚Ä_‰¿Ònb×*v­Âq…ã ÇŽ+WlVų –ç`™táÊ•…+ W®,\Y¸²@S¦Â¹…s‹M¯pnáܺžÃ½pnáÊ•Å~X­pnáÜ•…+‹ãSùt‰O‹±@eùä *‹GRáåâ¬Ulž…ß œ¾"ÛoÀj E$È-öÕ"6Š}µñ{ãîf«ì ˜ NW6lüÕx§ñN½Æ)Sš'Qƒ¯Æ) š'Qƒ¦ÆžÃ-Xðfy›åmžøÍò6kجX³> vì47Ê yûòý Ȱb@€ k8Àáæ~æ‡á‰? `XÕ!æ‡å6´!æ‡å–wˆù Ïá¦l_C„O:í!ïaÁ‡x|Xð)ÏÁ2ñ<¬üpÖÂxðŽÃñ`ðÅ8 sÆÎ6¸IêÝ;Ú9;[þ-{˜ÞÕôŽle{ÞöµÛ¿esR'¿wäyÎÏ'h3´Ç)Ús=/|7çmOxžS¸p¨ØëÙrúïH[.Ï+Ï+Ïsv÷8½{Úóœà=íOàïqŽ÷Œ×y|íøö̲g'¶õåÍ_â¼ì£ÿI¿ÜÙ~[Ë×._k¿­ík·¯uR½ìÕµ¿k„;ç^öï:ßoý]ϳ×õ<ûwÙ¿+<ÏþýRô/G_éOŸþôöô²§—=½ìéeOiü*ßÞþ2ùÕ¾‡½ÿ¥÷ËÞÿü/Ã_öþ²÷¿´ÿËû—#b9"œñ«Dì™#z<ϱÛÞ79 –€ïÈ×:"L¨ZìùÚíkóí80§ w?½#fcßLƒêÆÞ‘¯eÏ–høŽ|íý®müYCæ%–ù‰‡ïȇ#ÇTÄ2±LF,³ª-ûÛq`"b™‰øŽ<Ï>ßæÉL>,³’ßÑ7¯=â/7±L=¨«à;²eãÜdÃ:{fžãyç›çO`œ{ëx?öÛ±·Ž=s왾6¾y¾GøöÑIßÃ87‘!±ñùZû픯5öMpHr|G¾Ö»À1öýkâc™ùPëÁwÄ<“Ëì‡jÐÞÑ7¯<â˜Yæ@ô¶¨wäkíékO›#Y&I¤D¾#ßÞ¾Fí5j¯½oE‚äodïßÿ¡Y}­½ozE²äoäˆ0ç²Lº,³.Ë´Ë2ï²L¼,3/ËÔË2÷²L¾H¢|G¾Öqíýkï_?÷MÏ,ó3’*ß‘?³cãû·mϱqÇ×úip¿xñ~`:G ß‘9kÇIU´½£ôÈVM&x–žeŠg™ãY¦t–9eRg™ÕY¦u–yeG¯œú¼ß‡#'%á(1ϳLôHÏ|G¾G|ó|ŸÂQb*H²æ;òµŽ’ðÎo†h™"’¸ùŽü™9&Ž–™£eêh™;Z&–Ù£eúh™?Z&$t¾#_ëóAÚûéóA:L1-sL<#ŸL&¬¤ƒ¾#Ïóž“ÞsÌZ-ÓVRCß‘¯ý´!ïCæ®V~‚Ñÿ(FþÌŽµt¬¥c-W鳨‰®e‚Kâèoä'“Y/é£ïÈö¼7™ [&Ã$’þF~–¥ŸeéøKïMéH4K¶L“I,}GÇ£ë‘å2ïM¦Ï$™þFËöf×–Y5é¦ïègoý§o¯÷å[ÿ~¾¡¸Þºº?ß@û÷Sÿý=˜®ÿ®þû» ­·ëâßOÙ ÙKý÷Ô}RvKÿ¿týë¤?õß[÷kÍÙÝøïºÏ[l÷ƒfÀœµ\L^Å€«öÀ9¬ÅûUÍ¿ÁeÎe¯…AVæý>æß ±“|Œô¯¸{qUa°ø+š_±VʧÂéR'ÆßÀþå¯`åK'át!œþ ˆÖp'›…Ú¬ÏûÕÈ߀«ž÷‹¿A0ð¯pÌ¹Ì¹Ì¹Ì >ap‹`2«*áôß ù`ÄÜfy•¬,½¨ë7À ¸‰ÄÍòî6&’l˜Ì‚o|³àÊYÂéR߯ßT=É`À“×fÀUíËôœ¢Ôe!œ.5sü ¸jóÁ6—.Ç_œ[ÉÉB8ýøWõ‡•¿·øð'—ÅVC`Öù°Î‡å=,¯r†…pºÔÝñ78 جãËò^¶‚Ëò^ö„ËpYºËB]ÖG§ÿ¿WØ—x¾Äó½þwgO¸„ñ%z/çe—¸ìïw >ÛÅ%°/}YÞK<_âùÏ:y/„Ó¥¿sXçË:a,x°àÁ‚¿ßüÆAôëDo½AôѸ ˆÞ zƒ  œì6w‚0vl §KÅöð÷ë¿¿"ÂÃO5¼l2w_¡„úûý¾ß€9Í|ñötø ø„8åý6ßoÀçÁ;1~Üò¼ÅÉ–’Ä|â‹ÄéÃÀòãš9¸ Yùdå“í=qAòdLV>Yðd“uN’$Ù[¤$.Hvþ2 d§$ØI:ÀNúøáó ’pºÔmòov’gnòÌM@”€(Ù£’=*ñW²Y%€ÄMÉÃ7ñWñð-W8®p\á¸b³*>λVáÊ÷%c¿WáÊ•…+ W®,ÐTø´@SáÜbÓ+ˆ ç¡âÁQø´ÀWñX/|Z-\Y@¯pe¥¯âƒ±1¨,NV* wWù*VœϦ" À‘P ·8´!Q@¸ˆ|9ñòj¼Üx¹—¥ÖœµÇ5nj¼Ó@¯^ãh/4øj`Õ¬|³à ˆšoÖ¹YçMÍ6جsû°Ï6 jÖ§ÁNƒá¹3œš†§Ì÷f¿s8¯;Û€‹áá2Àa¶'ëó — †å6´!æ‡ mØÇ†íkXÞ!Ô‡uÖyص†|Xða×âyˆça‡xÂxãá¹3¸`ˆÞqÊEÐŽ“/ž;ã4Œ0ž/!sFÆÖ†pú‘ª<Ë¿uö8ùz¶»}íöµxáô7ú~K6õ8?{œ =ÎОûÍógv¶ö„¯¾ðµáOêlîIÏs÷”ëŒî)Ï+ÏkÏsz÷à#UA¾£/©õß6¾ÖÙÞãtïq¾·ì/Y^`IõïÈW€«õ?©³ƒÿÉ¢¿ìÙüòçe_®ík·¯uz½¶­l[qνŽçÿöú·×Ñõ¼ëyáyöï 'æË^]éOoÿ®ô§·§¿„}ÙÓ_î¾Ê÷(ßÃ>_í{Øû_N¿ìýeï/{ÙûËÞÿrý5¾Öq°ÆV›-áô7JÊ#ð±y6-3§ËÂéoä{,_k$›2@8]N#_»}­oNátY8]”U¾#[ñ.°/ÛûÁ¾¾Ö‘³½3˜‹X&#N¥–ïÈöWf$–™ˆe*b™‹X&#–Ùõâü¼ìöçëï·þT¦|Ì<¨ïæ;bÞñ.`öAU—ï¨<âZSË„j0#ãÜTƒ^¿öŽ<Ï<ö۱ߎwïsüIí·ctûíØ[ÇÞ27±LN¨#ç;ò=Â÷0ÎÍY œþF¾GúÚôµöà1â}y¼ËSxæ/á(1»£ÖŸïÈ÷pl˜óA8]NÿFŽ’ð¾Ž’ðnaVáôoä( ïá}ÃdÂé¢ô7r”˜9Z¦Ž–¹£eòh™=Z¦–ù£e átý§‚Ðw´<:Y´°÷óù®å“šmB8]N£ðÈVÖw-k•>;šB8ýlÅ1”~☧R¹è;²=ÇUú)”>=˜­RÇÐwäû:šò~Wø3;®LZ!œþF¾ö„Wéç‘©«eî áô7²•O;r¬¥#,aé)aé)ë»ÖŸÅ±–Þ‘Ì!œþFþ,Ž¿ô ÅüØ2/¦jÒwäÏâH4I¶Ì’!œ.ŠKßÑñèz•GÕ¼K™RC8]T™¾#ÛsœŠiÛÿÕûã²ÿ{7´ý¾ îïç¼?ßðÚNÿýÔåWÿý=Xî÷=u?e7e/5/u}Ênéÿ—®´%œþû©ÏÑš?úï£û®Ó—gÿ‡A2`ÎbÎÚ .&/d鎋%Ñ7a÷‹Åx{ÛüVo1Ààe2+³X¥eû¿Å¢(Û(§î^\Uüªù<ÍåÍM›9ÜaÎ0‡•[,Ýf餜n*M7Êéß@Ÿg;P—o®Ú\åà!z”Ûl*M7Êé¿Áåî—9,Ýf锢l*M7ÊéV7Óß pSbotoW˜¿Añ™YÞ]|f"qŠ›XÜãf7a©ïyn”ÓM¥éF9Ýjtú‡Öù°ÎÊX6•¦åt«Íéoq”ÓM¥éF9ÝjvúpÕæ*¼sˆgUšn”Órú7`@Wz²Õÿô7À2¾8D¸r­wãý ;,ø!°•Dl½ ï7àWÄóayË«¤aSiºQN·^ˆ÷°[±\¶‚Ëò*YØ(§}žËÒ]J•¦åôo ¸Šx¾Äó%ž/ñ|Ù.KwYºKô^v‰K¿ÍW~þv¶ Þ·^¢÷`x¾,ï%žõMÅM¥éF9ÝziÞoÀ½F÷ Â8Xð`ÁƒxC²]$.HV>yD&ëœ<+€$ žì- R$»M)§[W®ò©ï¤Ï>€à¯M v%[Sâ¯D‰¿’=*y$ JÜ”¸)Qò,(üU ©p\á¸Âq…ã  *-\Y<\ W®,6Æò9çþâÑ_<‰ w{fqÖ*ü^¶€b-[„D„‹Ø(°\DBã÷ÆÝ—›ÓiãÜÆ¹+Ç5nj ×x§^ƒ¸·¹ëß_4{]ã‚f¯kV¾Q³àÍó½Yçf÷kÖ¹YçflŸöYºf¡ì4Øi°3 exÊ O™á±>k3`K7,Ýðp.Éh¶';ïà¦ÀaþáÁ1lhÃòÚóC¨¡>á9Ü‹]kˆðaÁ‡"|Xða‡užò,³àÃ`ãÁCôŽs.‚vœ}qúçaöÎÿddNÉðÒéoD®ò,ÿ7ga³¯gûZ¶/½?ð7:þ-atúù³8A{œ¡=NÑçhOø3‡?Uø |F¥é¶túË7}EÚ²ó¸§ü œÒ=åyåyíyíyíû:Ã{ÚW8Ù{œí=ãkï=ÜN£ãQxäøñ_êlo­åk—¯ýÒg{ðK ×öµöå|ë˯—ý»âú’îeÿ®ã{Ø¿ëÚ²ý»®ç…ç9_öê²WWøŠô§·WúZ{úËØ—=ý%ï«|çñË>ÿRú/§_öþ²÷¿ü~Ùû_ªÿåúËÞÿÒþ/ï_c+ƪSÿå”éô7ò<ÇÁv˜@:Ý®4Ý–N·+M·¥ÓßÈ×n_kïïý]k6ƈߎÓ TšnK§¿‘¯½þ××:^¶w3H§ÛÒé¶tº]iº-nK§ÛÒéoä+Òÿ-mÏñb6b™ŽÐÛ #GÄn¾¶ÇÁ¶÷·}nîA¯*|GÛ£ë‘9.ï¦"N#_aÿšs@:ýÂ#ϳývì·c¿ûíݦ!¨4Ý–N#ßÞ9öÇ1Îq~왓¾Â8?öÖ1CwLÑ#þ؃¦7¨4Ý–N·¥ÓíJÓmét[:ý|­ý{Æ÷°Ïزý{äë½ýzo¿öêµWM nWšnK§¿‘ïaO_{úÚÓ×ø½F­ ¤ÓíJÓmét»Òt[:ýý¹êk?žÕÞ¿åê8¸Æª9—eÒe™uY¦]–y—eâe™yY¦^–¹—eòe™}¡Òt[:ý|­Ÿ×Þ¿ö¾‰še¦ét[:Ý®4Ý–NÿFŽ’ë§Áõ3ÀdÒév¥é¶tº-nK§Û•¦ÛÒé¶tº-þ¼G„cÈ Ï2ųÌñ,s;ËœÎ2©³ÌêPiº-þF¾Âg=9H§¿‘ïá=áÝ">’Þ»…I¤ÓíJÓmét»Òt[:ý|­÷ûp”„÷ sEËdÒé¶túù3û¤`êh™;Z&–Ù£eúh™?Z&–$*M·¥Óßh{t<²jaï›lZf›N·¥ÓßÈV¼¿˜„B:ýùÌ`B éô7ºÙŠO‘橨4Ý–N·¥Óméô7²GS:šÒ»O:šÒ{Ž)+¤Ó¿‘ã*}>HŸ Ò»O~ŠŸG¦®V~2‘#,?ÅÈ;R~â‘w¤t„¥Ï¦·¨4Ý–N·¥Ó¿‘w$³^H§ÛÒéoäÏâø3+†tú7r$¦#1½7™#[&ÉV~‘è½É<Òé¶tº-nWšnK§ÛÒé¶tº-nWšnK§ÛÒé¶tº-žÿúýñþâü÷迟úõjGÍyjM¤ÓóßÕÃåü÷Æy_âøïgÊ^j^ê÷%»%{¥ë_×ÕšI§ç¿ÑüÑ—÷¨Öô þ .ƒbÀœÅœuƒdÀ‚,®Ú\µ1Èbè[¯ç?}Õõo€ÁËäëæƒ–Y%`&'sŠ«Š_õbÀå,–¾‹zèÍ{¨5=H§‡Þ¼‡ZÓƒtz¨5=H§éô/,˜ó —o®ÚLÞÌ!zôeÐCoÞC­éA:=zäoÀ‚JÒé¡7ï¡Öô jMÒéA:ý0™UU7œC­éA:=z#ä߀PÜ,ï&7ë¼ ËÍ‚o|³à’NÞ ùÃÔfp«G– .éôPkzNÒé¡7ï¡Öô jMÒéA:=Ôš¤ÓƒtzNÿÌè‡xV÷›CoÞC­éA:ýÛ%¸)+¯/czójMÒé¿ ~XçÃò–÷°¼J½yµ¦éôЛ÷PkzNµ¦éô þ°˜—»¬Îÿ‡ZÓƒtúo@<_âùÏ—x¾ÄóeO¸,Ý%z/Ñ{Ù%.a|Ù..ÛÅey/ûê%ž/«z‰çËò^âYGïCoÞC­éA:=ôæ=Ôš¤ÓC­éA:=H§Gï›ü°ÎÁòÑDo°àAôÑDoà‹ hƒXÕ!ûPkzNÒé¡Öô ¤Óƒtú7ÐòêD}ôÊ߀«ðNð€ œ¸ õÀAÌ¿oŽø ˜ƒ/tü=ôæ=Ôš¤ÓC­éA:=H§ÿž¯8%qA>~? ˜ƒ $.H\¬|r$Hö‰ òøqeÖ9Y^I§‡Þ¼‡ZÓƒtz¨5=H§éôЛ÷PkzNµ¦éô jMÒéA:=H§ÿÅdü•lM‰¿’‡oâ¯dJž‰¿7¥½ÃÃ7yh*W8®p\á¸Âqˆ|Œ“tz¨5=H§éôЛ÷PkzNµ¦éô jMÒéA:=H§G¯·ü ˜ÌA¨®çp \Yí7 ëÓ`§ÁNûÈÏñé}Iæo »7@†¥à0\‡gʇáá2ÀaXÞáÑ?;^Û×ڗ˾\€éôX:=–NÿFNº—ý»®ÿ"ûw]ϳWx^xžý»ìÕe_~9úJúôµöô²§—=½ìéeO¯ò=œÇ¯ò=œÒ/{ÿËî—½ÿå÷ËÞÿRýeïYÿ¯îØÊœé—SZóךK§#ÇÁ¶÷7)jM¥Ócéôoä8Øö¾9jM¥Ócéô¸ÖôX:=–N¥ÓßÈVÎw­™œëk/Ûñ²½3ìk+Ž¡í=ÂlÒé±tz,K§£ôé{˜á1±ÌF,Ók{g0AkÞãZÓcéô7ò<{ÚÜÒéot< Ò£öÈך@3õ ÷|þFF·¹†e²a™[ 5ïq­é±túù¾F÷±ßLC K§¿‘ïa{Á<Å2?A­é±tz\kz,K§¿‘¯5âOùZ#þؗǾ<ÞïMz,³H§¿‘¯°Ñmêéô7bÞ5’M þFf,íËkL›Y&AN#ßÞ¾ö´IZóךK§Çµ¦ÇÒé±túùZ{ÿÚû×Þ7¹‚tz\kz,K§ÇÒéoäký7í²Ì»,/ËÌË2õ²Ì½,“/Ëì ­ykM¥ÓãZÓcéôX:=®5=–N¥Ócéô7²cÿúipý 0—³LæPkz,K§ÇÒéq­é±tz,K§ÇÒéßÈÑd‚g™áY¦x–9žeJg™ÓY&u–Ye6‡ZÓcéô¸ÖôX:=–N#ßããã&zhÍ{\kz,ךK§ÇÒéoäk%áóA8JL!ךK§ÇÒé±tú7r”˜9Z¦Ž–¹£eòh™=Z¦–ù£ei™A¢5ïùo™LB:ý®Gá‘õ ï/駆y§eâ‰Ö¼¿‘¯õ™!½Ó˜Z&¤¨5=–N¥Ócéô7ògñ³ÇLÕ2U…túùZG“é*¤ÓßÈw󞓎+sVˤÒéoäkWéç‘™«eê éô7òßë)?íȱ–ްôÙ"a¦·N¥ÓßȹcͬÒéoäÏâøKÇ_ú„b~l™£ÖôX:ý|­÷¦ôÞdšl™'C:=–NkM¥ÓcéôX:=–NkM¥ÓcéôX:=–N¥Ó¿xì÷ÇyÜ÷G¼?4³Þýþ]þè§ì,Z²´djÉ–o+kKæ–ìmÙÛ|.ÙÛ²·eoËÞ–½-{[ö¶ìÙ;²wøCeïÈÞ‘½#{GöŽìÙ»²weïÊÞeådïÊÞ•½+{Wö®ì…ì…ì…ì…쮽½½½½”½”½”½”½”½Ä·²—²—²—²W²W²W²W²W²W²W‹ì•ì•ìµìµìµìµìµìµìµì5Ñ'{-{#{#{#{#{#{#{#{#{C8;ž 臈~釘~ꇨ~뇸~ìËT°l°-†‹ñbÀ1† ˜Y€fm£ËàfœrÐY`gžzðYàgË@h¡ˆ(ZÀh£HZ@i]ïXM 8-ð´ÔQ H-0µÕU X-pµÖY h-°µ×] x-ðµØJïxXc -P¶€Ùg  -¶€Úk«¼™b¸-ð¶Üq È-0·Ýu Ø­ö>e·€Þ{ ð-з€ß .¸Æ?x€Á 7Ü`pƒÁ 7Ü`pƒÁ½üxÁ2Ü`pƒÁ 7Ü`pƒÁíç–\ß“ Ë~vùáå§—_~~ù7Ü`p?± 7Ü`pƒÁ 7Ü`pƒÁ ÷õóË`pƒÁ 7Ü`pƒÁ 7Ü`pƒÁ 7Ü`pƒÁ 7Ü`pƒÁ 7ÜéS–Áàƒ n0¸Áàƒ n0¸Áà.@° 7Ü`pƒÁ 7Ü`pƒÁ wûlƒe0¸Áàƒ n0¸Áàƒ n0¸ÇÇ&Ÿ›88Á<`ð€Á<`ð€Á³|$Ã2<`ð€Á<`ð€Á<Û§=,ƒÁ<`ð€ÁO‘çÛŸ½Õú9\~—ŸÄµ¿Ü;¹Æå§qùq\~—Èå'rù‘\ßgñC¹Î÷´ð=ü\.?˜ËOæò£¹ül.?œËOçòã¹ü|®û=’|?¢ËÏèòCºü”.?¦ËÏéòƒºü¤.?ªËÏêòúü´.?®ËÏëò»üÄ.?²ËÏìòC»üÔ®ü®¾‡Üå'w}îïÙý=¼¿§÷÷øþžßßüžà¾Ç÷ ÷C¼ü/?ÆËÏñòƒ¼ü$/?ÊËÏòêï˜à{øq^~ž—èå'zù‘^~¦—êå§zù±^óE¾ÃˆO#>^·Ï×ívû„Ý>b·ÏØíCvû”Ý>f÷úN<¾‡OÚí£v/ßÇíöi»¿Õ8oã¼óÞß±Ê÷0ÎÛ8oã¼ó6ÎÛ8oã¼ó6Îû|g7ßÃ8oã¼ó6ÎÛ8oã¼ó6ÎÛ8ïû}ã¼ó6ÎÛ8oã¼ó6ÎÛ8oã¼ó6ÎÛ8oã¼ó6ÎÛ8oã¼ó6ÎÛ8ïüŽº¾‡qÞÆyçmœ·qÞÆyçmœ·qÞõ§}㼿ÃúwZÿŽëßyý;°'öïÈþÙÿçÐî{çmœ·qÞÆyçmœ·qÞÆyçmœ·q>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>ÆùçóQQÆùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçcœq>Æùçó¥ç_~þ%è_†þ¥è_Žþ%é_–þ¥éÿ“§‰º3õ/Uÿrõ/Yÿ²õ/]ÿòõ/aÿ2v§ìsöÇIûã¬ýqÚþ,ßÉûãÌýqêþ8w>ÒÙÙûãôýqþþ8œÁ?Náçð“øÇYüã4þqÿ8‘œÉ?Nåçò“ùÇÙüãtþq>ÿ8¡œÑ?Néçô“úÇYýã´þq^ÿ8±œÙ?Níçö“ûÇÙýãôþq~ÿ8Áœá?Nñçø“üÇYþã4ÿqžÿ8Ñœé?Nõçú“ýÇÙþãtÿq¾ÿ8áœñ?Nùçü“þÇYÿã´ÿqÞÿ8ñœù?Nýçþ“ÿÇÙÿãôÿqþÿ˜xÌ<¦sI€Ç,Àcà1ð˜xÌ<¦sqnV|›߿ŷ‰ñmf|›ßæÆ·Éñmv|¯šûnÎ÷øØ¹ž3Î×GÐ} ÝGÑ}q¾>yÉ87W¾M–o³åÛtù6_¾M˜o3æÛ”ù6g¾Mšo³æÛ´ù6o¾Mœo3çÛÔù6w¾Mžo³çÛôù6¾M o3èÛú6‡¾M¢o³èÛ4ú6¾M¤o3éÛTú6—¾M¦o³éÛtú6Ÿ¾M¨o3êÛ”ú6§¾Mªo³êÛ´ú6¯¾M¬o3ëÛÔú6·¾M®o³ëÛôú6¿¾M°o3ìÛûǯr¯r¯r¯r¯r¯r¯rÿéºÑå~ÊÎ’¡%KK¦–l-[²¶ø²·eoó¹doËÞ–½-{[ö¶ìmÙÛ²wdïÈÞᕽ#{GöŽìÙ;²wdïÊÞ•½+{—•“½+{Wö®ì]Ù»²²²²²¸BöBöBöBöBöRöRöRöRöRößÊ^Ê^Ê^Ê^É^É^É^É^É^É^,²G˜•ìµìµìµìµìµìµìµì5Ñ'{-{#{#{#{#{#{#{#{#{C8;ž 臈~釘~ꇨ~뇸~ìËT°l°-†‹ñbÀ1† ˜Y€æ8Ê¿0'ÎèŽt‡ºcÝÁN´Âý?×Â21úCÔÂþ÷‡À?Dþ!ô±ÂàÄ2áˆÿ8@à€(8Àà€ƒH8@စh8Àဇ ˆ8å-ˀ ,¸8「4Ø8€ã´w+,ƒ@9@䀑H(9À䀓3Þ½²‚” R.H¹ å‚” R.H¹ å‚”»¼Éb¤\rAÊ)¤\rAÊ)¤ÜíýËÈò‚óQÖñZa™O³ø8ËŸç`ù`ù`ùbùbùbùÚ X¾X¾X¾X¾X¾X,–Ëå°‡±X,–ˉåÄrb9±œXN–ˉåÄra¹°\X.,– Ëå¸Ära¹°ÜXn,7–ËåÆrc¹òXn,–˃åÁò`y°”ãÄ@!2‘yˆÌCd"ó™‡È<×Ä2‘yˆÌCd"ó™‡ÈùÖòÑeû첿ËO/>€–O å#hù Z>„–O¡åchùZ>ˆÖùNH¾‡Ï¢åÃhù4Z>Ž–Ï£åiùDZ>’–Ϥu¿c˜ïáciù\Z>˜–O¦å£iùlZ>œ–O§åãiÅwÖó=|B-QËgÔò!µ|J-SËçÔòAµ|R­ü”¾‡«åÓj}ÇÕï¼úX¿ëwdýάߡõN­¾ÇwnõÁµ|r-]Ëg×òáµ|z-_Ëç×êïhì{ø[>Ö±åSlù[>Ç–²å“lù([󿿸ÏÉŽñqŒc|ããŸó¨}¤vŒc|ããÇø8ÆÇ1>ŽñqŒc|ããÇø8ÆÇ1>ŽñqŒc|ããÇø8ÆÇ1>ŽñqŒc|ããÇø8ÆÇ1>ŽñqŒc|ããÇø8ÆÇ1>ŽñqŒc|ããÇø8ÆÇ1>ŽñqŒc|ããÇø8ÆÇ1>_šöåi_¢öej_ªöåj_²öek_ºö?ùÚ—°9cûR¶/gû’6N ”q¥Ë¸Òe\é2®tWºŒ+]Æ•.ãJ—q¥Ë¸Òe\é2®tWºŒ+]Æ•.ãJ—q¥Ë¸Òe\é2®tWºŒ+]Æ•.ãJ—q¥Ë¸Òe\é2®tWºŒ+]Æ•.ãJ—q¥Ë¸Òe\é2®tWºŒ+]Æ•.ãJ—q¥Ë¸Òe\é2®tWºŒ+]Æ•.ãJ ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^ÓÂkZxM ¯iá5-¼¦…×´ðš^óO–XmÌýŸo^x”•GíŸå:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưcü:Ưc<ãáÇx8ÆÃ1~–…ŸeágYøY~–…ŸeágYøY~–…Ÿeág™¾Ìþù~–…ŸeágYøY~–…Ÿeñ)p~–…ŸeágYøY~–…Ÿeaœ‡qÆyçaœ‡qÆyçaœ‡qnjw›ÛÝ&w·ÙÝmzw›ßÝ&x·ÞmŠw›ãÝ&y·YÞmšw›çÝ&z·˜Þz…×z…×z…×z…×z…×úO3ëýÑš©ÿ{øÿ£Ký”á+ËÓ²}eüÊú•½+{WöBöBöBöBö‚Ï*{ü]!{!{!{){){){){){R^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµþÓ1÷o Šçèî:áþ ˆ¥µ—–––––7–ñÅÆ_l|±ñÅÆ_l|±ñÅÆ_l|±ñÅÆ_l|±ñÅÆ_l|±ñÅÆ_l|±ñÅÆ_lû l°Â 0lаÃ@l±Ä‡Õ8¬Æa5«qXÃjoÞ XÃjVã°‡Õ8¬Æa5«qXÃjVã°‡Õ8¬Æa5«qXÃjVã°—ȼDæ%2ïò69"ónosìsDæ%2/‘y‰ÌKd^"ó™—ȼøâï XÆ_\|qñÅÅ׳wfoÍÞ›¿ÍËÞž½?{ƒö/.¾¸øââ‹‹/nxßÇ2¾¸øâÚDæ%2/Ûõe¿¾lØ—[Ì¢ô±(},J‹ÒÇ¢ô±P^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ åµP^ë??Ã.?¹X`5‚ÕV#X`5"ý@Ä2«¬F°áÕ(,– Ë…åÂrùY‹åÂra¹±ÜXn,7–ËåÆrû1ŽåÆò`y°‘–¤å3iùPZ>•6ÁE c¹„±\ÂX.a,—0–KË%ŒåÆr c¹„±\ÂX.a,—0–KË%ŒåÆr c¹„±\ÂX.a,—0–KË%ŒåÆr c¹„±\ÂX.a,—0–KË%ŒåÆr c¹„±\ÂX.a,—0–KË%ŒåÆr c¹„±\ÂX.a,—0–KË%ŒåÆr c¹„±\ÂX.a,—0–KË%Œe嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„å&„?êÁÜÏšþF¦x~Єð72arc™ÝX½ñ?ü†ïñ1ÅñqÉñ±Ë÷øxËL‡i§mÞ åµ¬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯å²ÁrÙ`¹l°\6X.,— –ËËeƒå²ÁrÙ`¹l°\6X.,— –ËËeƒå²ÁrÙ`¹l°\6X.,— –ËËeƒå²ÁrÙ`¹l°\6X.,— –ËËeƒå²ÁrÙ`¹l°\6X.,— –ËËeƒå²ÁrÙ`¹l°\6X.,— –ËËeƒå²ÁrÙ`¹l°\6X.,— –ËËeƒå²ÁrÙ`¹l°\6X.,— –ËËeƒå²ÁrÙ`¹l°\6X.,— –•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯e嵬¼–•ײòZV^ËÊkYy-+¯£bÿ8vûÍìÝ6}·ÍßmxÛ Þ6…·Íám“xÛ,Þ6·ÍãmyÛLÞ6•·Íåm“yÛlÞ6·ÍçmzÛŒÞ6¥·Íém“zÛ¬Þ6­·Íëm{ÛÌÞ6µ·Íím“{ÛìÞ6½·Íïm|Û ßû-ì·°ßÒ~KŸAÒgô$}I?WÓÏÕôs5ý\M?WÓÏÕôsUµý*¯ýV°¶*X[¬ýŸgý¼úïÏw¯ké¯-ýµ¥¿¶ô×–þÚÒ_[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½j[½jýµÑ_ýµÑ_ýµÑ_ýµ)mŠG›âѦx´)mŠG›âѦx´)mŠG›âѦx´)mŠG›âѦx´)mŠG›âѦx´)mô×Fmô×Fmô×Fmô×Fmô×Fmô×Fmô×Fmô×Fmô×Fmô×Fmô׿-|Í[øš·ð5oákÞÂ×¼…¯y _ó¾æ-|Í[øš·ð5oákÞÂ×¼…¯y _ó¾æ-|Í[øš·ð5oákÞÂ×¼…¯y _ó¾æ-|Í[øš·ð5oákÞÂ×¼…¯y _ó¾æ-|Í[øš·ð5úk£¿6úk£¿6úk£¿6úkS<Ú6Å£MñhS<Ú6Å£MñhS<Ú6Å£MñhS<Ú6Å£MñhS<Ú6Å£MñhS<Úè¯þÚè¯þÚè¯þÚè¯þÚè¯þÚè¯þÚè¯þÚè¯þÚè¯þÚè¯þÚè¯MÿÔ¦jÓ?µéŸÚôOmú§6ýS›þ©MÿÔ¦jÓ?µéŸÚôOmú§6ýS›þ©MÿÔ¦jÓ?µéŸÚôOmú§6ýS›þ©MÿÔ¦jÓ?µéŸÚôOmú§6ýS›þ©MÿÔ¦jÓ?µÑ_ýµÑ_ýµÑ_ýµÑ_ýµÑ_ýµÑ_ýµÑ_ýµÑ_ýµÑ_ýµÑ_ýµÑ_›òͦ|³)ßlÊ7›òͦ|³)ßlÊ7›òͦ|³)ßlÊ7›òͦ|³)ßìÿ|¤H6üdÃO`•À*U«V ¬X%°J`•À*U«V ¬X%°J`•>xøäÁ&“l2 ¬X%°J`•À*Ë',«V ¬X%°J`•À*U«l–° ¬X%°J`•À*U«VI %”ãƒ'1©Øð‹Ã_qú+ެ XÕõÉ£°*`UÀª€U«V¬ X°ªð¡ËÀª€U«V¬ XO«âiU<­*}ÞÄ2TRù ëC,„þÚÖ_Ûúk[më¯mýµ­¿¶ëDÛu¢í:Ñvh»N´]'Ú®m׉¶ëDÛu¢í:Ñvh»N´]'Ú®m׉¶ëDÛu¢í:Ñvh»N´­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_ÛúëßÈkÕ^«öZµ×ª½Víµj¯U{­ú[+áÛgøö!¾Ó÷(ßÃñ×å{”ïQ¾Gùå{”ïQ¾Gùí{´ïѾGûí{8Ãêö=Ú÷hߣ}ñ=ØÜÐ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_ ¿}çã&G¶Ù‘mz„×”ýF&@-¯)û>.Á÷8¾Çñ=Žïq|ã{ßãú×÷¸¾Çõ=®ïq}ë{\ßãú×÷ß#|ð=‰¦}¶yŸmâg›ùAmë¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×vmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›ÙÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[ýy·5­´Í+mKÛÌE#*£öµÇ¨=Fí1jQ{ŒÚcÔ£öµÇ¨=Fí1jQ{ŒÚcÔ£öµ×Ïýëçþõsÿú¹ýÜ¿ŽÄëH¼ŽÄëH¼ŽDÓ^Û¼×6ñµÍ|mS_è¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf»6³]›Ù®Íl×f¶k3Ûµ™íÚÌvmf[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµ­¿¶õ×¶þÚÖ_Ûúk[më¯mýµÿd«8Ž!³‹Ûôâ6¿¸M0n3ŒÛã6ǸM2n³ŒÛ4ãÎOXr ™iܦ·¹Æm²q›mÜéR»¸yK^çÕ_Gÿý,ýlýÔïßÏýïçzÍ{w«Q=먞uTÏ:ªgÕ³Žôבþ:Ò_GúëH鯣wvŽÞÙ9zgçè£wvŽÞÙ9zgçè£wvŽÞÙ9zgçè£wvŽÞÙ9¼³s`‡RÖ¡”u(eJY‡RÖ¡”u`v`v`öoõ™\L.&“Ë“ƒ‡÷ŠÏ\|ŒÆrc¹±ÜXƒA2(Í€ÈX„Æfòf2K·YºÍÒm–n³tÛyø‡q°LØéŒþ7ÀòÅrb9±œXN,†›8Üâ&7¡¸qÊÆ)§lœ²qÊÆ)›HÛ„Ú&Ö6Áv65æøl‡Áe ’A1hXÆ):Pÿ °¼°¼°¼°ŒSË{XÞÃòê[C)ëPÊ:°ƒ;°ƒ;°ƒ;´ÍÚæms‡¶¹CÛÜ¡mîÐ6wh›;´ÍÚæms‡¶¹CÛÜ¡mîÐ6w`v`v`v¨<*O‡ÊÓ¡òt¨<*O‡ÊÓ¡òt¨<*O‡ÊÓ¡òt¨<*O‡ÊÓA€ØA€ØA€ØA€ØA€ØA€ØA€ØA€^9¼ rxäð2ÈáeÃË ‡—A/ƒ^9¼ rxäð2ÈáeÃË ‡—A/ƒ^9¼ rxäð2ÈA€ØA€ØA€Ø¡òt¨<*O‡ÊÓ¡òt¨<*O‡ÊÓ¡òt¨<*O‡ÊÓ¡òt¨<*Ov`v`v`v`v`v`v`vèE;ÿùp‘ìáÉž %AJ‚”) R§$NIœ’8%qJâ”) Rò;v`™§púäá£NIœ’8%qJâ”Ä)‰S²|¤Á2°J`•À*Uá”Â)…S §N)œR8¥pJá”Â)¬ X°*`UÀª€U«V¬ X,Ëùê•[^ºåµ[^¼åÕ[^>ZâŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽ[âŽر;`ÇìX€ °ãRÓq©é¸Ôt\j:.5—šŽKMÇ¥¦ãRÓq©é¸Ôt\j:.5—šŽKMÇìX€ °cv,ÀŽر;`ÇìX€ °cv,ÀŽرû7ßc|ñ=Æ÷ßc|ñ=œ.ó¥±Ç{pìÁ±Ç66ÞÎøùË÷X¾‡=8öàØƒcŽ=8öàc|Œñ1ÎÓÆ‰Ú8S§jþ;‡}>öùØçcŸ}>öù8 ›ö=Ú÷ð2í{´ïÑ¾Çøã{ØçcŸ}>öùØçãœåáy@SÙ¿‘É€‡GMe£ã‘óI0HSÙßÈ÷pšø8O|œ(>ΧŠsÅÇÉâãlñqºø8_|ÂW„¯_¾"¾+ü©ÂŸ*ý©œe>N3ç™ÍÇ™æãTóq®ù´ïÑ¾Çøã{Œï1¾Çøã{8é|>:í|@í6ËAáè¸pt\8:.ŽŽ GÇ…£cv,ÀŽر;`ÇìX€ °cv,ÀŽر;`ÇìX€ °cv,ÀŽرû7²Ï—}¾ìóeŸ/û|ÙçË>_öù²Ï—}¾L0,3 æ}¶‰Ÿmæg›ÄÙfq¶iœmg›ÈÙ“³íémOo{zÛÓûù®LèØÓÿó@ÿÃ-ßcùË÷X¾‡ýöQ;·ó‘;»óÑ;Û~ÛöÛ¾¾Çõ=®ïq}ë{\ßãúöÂÇô|TÏÇõ|dÏÇöìò=Ê÷(ßÃÜöà¶·=¸íÁýy°}ö=Ú÷𲽃˜)Ú¦Š¶¹¢m²h›-Ú¦‹¶ù¢mÂh›1Ú¦Œ¶9#ر;`Çì¸pt\8:.ŽŽ GÇ…£ãÂÑqáè¸pt\8:.ŽŽ GÇ…£ãÂÑqáè¸pt\8:.ŽŽر;`ÇìX€ °cv,ÀŽر;`ÇìX€ °cv,ÀŽر;`ÇìüÇ;£åÑöèxô]¥GåQ{ħ2OÆ;#ßÃOë§Æõνó_ïü÷|óüY¼ƒ˜ƒÛ&áöýøaÇŸy¸m"n›‰Û¦â¶¹8 GÇ…£ãÂÑqáè¸pt\8:.ŽŽ GÇ…£ãÂÑqáè¸pt\8:.ŽŽ GÇ…£ãÂÑqáèX€ °cv,ÀŽر;`ÇìX€ °cv,ÀŽر;`ÇìX€ °cv,Àþìó°ÏÃ>û<ìsÓ|Û<ß6Ñ·ÍômS}Û\mh#ßÃ{NxÏ ïá}#¼o„Ïás„iÄmq›HÜf·©Äm.q›LÜf·éÄm>q›PÜf·)ÅmNq›T¤Ôô7òÞ7§͘ï *Ÿ6ÍDnS‘Û\ä6¹ÍFnÓ‘Û|ä6!‰;`ÇìX€ °cv,ÀŽر;`ÇìX€ °cv,Àþ¼#™éܦ:·¹Îm²s¿lç¿qÞ?àüýÌ÷çïÃüýÔïäïgè§æý þûyõû߃ïï§ì„ì„æ¥ì”æ•æ•æ•æ•æµî÷{üüýÔ}[ÆðùŸÅ`3ðŸxƒdP š /¯ Kò& ƒƒÁƒÁƒÁƒAè•bÿÁä`r09˜L.îÎB-Vj±T‹µz¿æø`™åZ¬×bÁ–Wl°ba™í«Ø¾Ší«€U«V¬ X°*s²1Vy2À€-[¶pwáîÂÝ…»Ë‡®NËÞX^áå%Vwàw䃟 ^9U¶¾#_¾"|…¡^I±ïÈŸ*}ý΢í{´ïѾGû>–O¤^ååY^Ÿå’ûŽ|ˆõé¼}'û¼Þ>°÷ñ=®ïq}ë{\ßãúöG_ßÃÇüö9¿}Ðïô=Ò÷ðY¿}Øïï´_¾G}ç}ߣ|ò=Ú÷°Û§þö±¿Ç÷ßc|ñ=Æ÷à)#)ö9±àAóoäÔ‚GÍ¿Qx”•Gí‘ï±}í{l_a|Œñ1ÎÐÆ)ÚØçs}gi¾‡5FԤGúFÔQcD5FÔ8½û|Œ¨1¢Æˆ#jŒ¨±?¨Nõ-¶GÇ#çzNöž3ªSýð‡¤ØßhûÛ÷0ƒð˜CxÌ"<æ'‰³ÄçøÇ÷¸¾‡3ÅÇ©âã\ñq²ø8[|œ.>Οðá+ÂW„¯_‘þTéOUþTåOUþTå{”ïQ¾‡SÍǹæÓ¾Gûã{Œï1¾Çø_¶>¾‡“ÎÇY§9Žm’c›åPÝwäÿËñ¿$ßYþ2g´–ïaŸ/û|ÙçË>_û»ÂŸÊÜÀ29°Ž?Õñ§²Ï—}¾ìóeŸ/û|™$0£:Õwä{„ï¾"|Eú 3 ËÔÂ2·°L.,³ +ý©ÒŸÊQb&g/GÉr”¬ú®ðg1»`Îg›ôÙf}¶iI±ïhy´=:ñYþ‡ÏùØA{z{?ØÞ¶÷ƒíý`{?ØŽíØØÇ÷8¾Çñ=¼lï½³í·m¿m£{ÝÛèÞF÷6º·=½íémto£{ÝÛ~ÛöÛ¶ß>"éc’>*é㒶ѽîmto£{ÝÛèþ(¥SúH%³JÛL‘¤ØwTµG¾Â4_´ÏÇ Ûƒ¦Œ¶9#Õ©¾#ßÃè>óçýxG?ÞÑÑmÊi›sÚ&¶Y§mÚIRìod¬cõ«ÇX=ƪ©ªm®j›¬Úf«¶é*I±ïÈWØçÇ>?ö¹®mŠk›ãÚ&¹¶Y®mšk›çÚ&º¶™®mªk›ëÚ&»¶Ù®mºk›ï’ûŽ|…Ÿ×Ï€»¾+ÌÇzg¸Þ®w†ëÁ<Ù¾Ž’ë(¹Ž’ë(¹Þù¯wþ{üYŽ?‹wû‘Ã;üÑÃŽëÄ<Ü6·ÍÄmSqÛ\œ¤Øwä{86®cãz1#·MÉmsrÛ¤Ü6+·MËmórÛÄÜ63·MÍmssÛäÜ6;·MÏmós’bßÑöèxdÕçù®HÊ£öÈ컣)¼ƒ„wðŸ²äØ0¹·ÍîmÓ{ÛüÞ6Á')öù ?5ÂOðžcšORì;ò§òžÞsÌõéýžïÈW8J"¾+üYüt ?]Â{Sxo2¸Í#n‰ÛLâ6•¸Í%n“‰Ûlâ6¸Í'nŠÛŒâ6¥¸Í)n“Š’bß‘¯p4ÅMó]áOå½ÉLä6¹ÍEª‡ï;j|…£)½7™µÜ¦-·yËmâr›¹Ü¦.·¹Ëmòr›½”ûŽ|…£.ué½É„ç6ѹÍtnSÛ\ç6Ù¹Er®ß _ÿ>ÃÒÏz¾æßOþëç¼?.?úÿoÀ.I±ë})ëßÏÔOÙ ÙIý÷Ò}‹ÿ¯y¥y%û­ßæ>ßë-výûüȳþ[™³˜³˜³<'èÎÊ.–Šaÿ‡É¬ÂbUßoXþÜ‚•Y,ŽôK]„&'÷*æW±R‹¥Z¬•Îå )v!Å.¤ØõßÛ1æ7`Î0g,ïayËûöBù ’A1ð62–÷²ª—»Ûÿ…ËY±ËŠIŠ]ªxý 6ƒÃ@kxY±ËŠ]âùÏ—è½l—Íáí3òðá—å½åÿÂg&ž/ñ|YÞËò^–÷Ï—å½,ïõò½ÁvlÂÁ‚ ,x°àÁ:ÑDo½Aô¾|ø"ðEà‹à!ì?wt`ûpøKRìRáßà0¸ üœc{K°·{Kü/_¾‚?ÚOLæà‹`o ö–àqx'yü%¿äñ—À!yü%¿äñ—<þ’ƒ@òø{¿öxN2àîìóÉ’ìó: ,Õ·þÌy=Ëø"ñEâ‹Ä‰/’?9u$ÞI°“`'ÁNâ¸dGJv¤·âõ7`r3§™ÓÌa×Jœ’R’SJŽçðQq\á¸Âq…ã ÇŽ+W8®–çø„…e\Y¸²peáÊ•…+ W®,\Y¸²Ž'slMʼn¨ðà[¢ù0‡'H±^.V{y¹U û±†jüŽ|EøŠð}ÓóÊ×–?_ù(Êú Å.K±ËRì²û7ÏûþÞñ¼ùæù¯ô©´}~ožjüŽŽG×#·çm_»}Jöù½½Îí5m¯iûTß>Ö÷õ¼ëy×ó|Æo{¡ÃŸÅ^hŸóÛýNÿé¿Ã^h{¡í…vJÐöBÛ m/ô—|yÁ—Ø3mÏ´=Ó_º`ŒªqF5Ï7Ïy…ý6öÛØoc¿ý6εfùZûrœ€ÍöµÆÌØ¿s<ï|ÿ }9ÎÑÆ¾œðµá{8a#jì·±ßÆ~#jì·±ßÆ~›úæùïu67öå|Ù[ûïÿFÙüO÷¥pÎá8•©íï;ò¼åyÎñü¦¶¿ïÈ×:Ï{¶¯Ý¾ÖŒÁ³=ïxž3ÂÇ)áãœð9¾öøÚëk)>NçŠÏõµ×׆¯uù8s|ÂW„¯È/óõNg‹Oy^yžÆÇãӞמ×þôíÏâDòq&ù8•|œK>N{zÙÓ&A¶Ym)vYŠ]–b—¥Øe)vYŠý|­½¿ìýeï›,AŠ]–b—¥ØEeë;ò¼ãyç›g–Á±±ìóe‚`]_{}íõµŽeï/&fÔ ø}Wøïul˜¸Ùfn¶©U»¾#_ëxYŽ—U¾¢üYÊŸÅ„„yÕ¾#Ïs”,GÉ*ööýq:›={ôÎfÏVµëo´<ϤÏÇú|´Ï¶?âg›?Üû›g~ÈûÁ¶Ï·qþ1B%ôqBÛ˜þX¡úx¡mo}<ж·v~ó®Gþ,öÖ¶·vùZûmÛÛèÞF÷îožïa¿}DÑÇmûm~_Ë3yûòñLj?Fü±§Mm³Gªv}G¾Â˜6_„»,ÅþìÁóq|ÿCò}ó®Gþ,öô±§=}ìiLÛ Ó6ŤÊÖwä{Éf b—¥Øe)vYŠ]–bÿFö¾Éªm¶j›®BŠ]–b—¥Øe)vQÙúŽ<Ï ¢-U¶þFŽóùÜ4¢‰®m¦ )vYŠý£ô¨<âZ3_H±ËRì²»,Å.K±‹j×wäk/×ñr÷w…?‹÷Óiû:®®ãÊÔšª]ßÑw…ÿrïü×;ÿõÎ}*¸Þåoxž÷ûëýþ:†ÌÅmmH±ËRì²»¨l}Gžçˆ0§ÊÖwä{8JÌËmsÛÌRì²ûùZG‰ »mÆn›©CŠ]–b—¥ØEeë;òØ\ºJèMéë¦ôu#Ån¤Ø»ÕOø78 .®ZF+Wá‹ a,)v#Ån¤Ø?pó “ÁùÁ;’bÿ pŽÂæ€öÃÊVþ}këoÀdVþ°à‡x>Äó!žñ|ˆgB7¥¯›Ò×»‘b7Rì¿[Áey/Ë{YÌË^Vì²>—À¾ì‹—x¾ÄóeÅ.ñ|‰çK<_Vì²9\âù²†—0–û7ðœfÀ"Ï—U½Äóey/ñ|‰çËò^–÷Ïw<‡›ŽnDo°]è·‘b7¥¯›Ò×MéëFŠÝH±)v«Ÿðo€e¢7ðE½Aô¾RAÛNà&×þ ü@d×ql#Ån½µõ7àrv›À)S‚½%ðÅÛä7`¾|¡/ªm¤Ø»‘bÿž©Ìao‰ñãV“§$.Hb>ÙR$.H\¸ qAâ‚Ĺ=‡‡<¸H\,x²àÉ‚KŠÝH±)v«Ÿðo€åÀ2¾H¶dÛI|‘>tøÔv7%ÏÜdkJ@”ø+ÁN⯷Ãðß%ØIü•ø+ÁNâ¯Ä_i7±k»Vá¸Âq…ã ÇŽ+6«âYPËs°ÌºpeáÊ•…+ W®,\Y ©@SáܹŦW8·pn]Ïá^8·peáÊb?,€V8·pnáÊ•Åñ©|ºÄ§ÅÆX ²|ò•Å#©ðrqÖ*6ÏÂïN%1Ëg̺¾âz«K-ì¶»ySë;òéyék¿ÓæwÜ,[)Ïó‰³|äôŸ¿ü÷/ÿ¹ëþ^ÀðoôÍk¾Óíñˆßö—¥°céM­ïÈó¶¯Ýþ­×´­Ï;žç5íëy>Ö÷ýæùnן9××^_¾Ö‰ã¶âŒñq¦ø¤ÿ¢ô¼ôíyíOï„òq"ù8“|œJ>Î%ŸÏÓì˜H±¿Ñõ(ÞL+!ÅþFþ­ýk" )v»îu»îu»îu[ŠÝ–b·¥Øßè›g*Ð{»9%ê^·ë^·ë^·¥Øm)v[Šý¾y¾‡Q{ì}sQH±Ûu¯Ûu¯Ûu¯ÛRì¶»-ÅþFþÌŽˆãýþ8"ÌfmÓYH±ÛRìßÈÞ?öþñÎoš )v[ŠÝ®{Ý®{Ý®{Ý–b·¥Øm)ö7â3_džY±mZŒº×íº×íº×m)v[ŠÝ–b£ë‘?‹cèz¸~.˜aÛfÖbÿFŽœû±Æ×ó>ÞØ‘c¦º×m)v[ŠÝ–bÿFŽómzÇê;ú¸ißÃQböm›~CŠÝ–bÿFÞ#nû>˜–CŠÝ–b·ë^·ë^·ë^·¥Øm)v[ŠÝëã‘uG‰I;ê^·¥Øm)v[Šý¾y¾‡Ÿáˆ0Ÿ·MèmówÛu¯ÛRì¶»-ÅþFþÌŽ 3{ÛÔu¯¿‘¯õžŽ—ø„Ÿ"Ã1ŸúðÉŸþàgYŸ(áÝ'W¦ ·9C¤Øm)öoäóAxÏ ï9æ‘b·¥Ø¿‘ã*Wá}Èã6ɸÍ2ê]¬ïÈŸÙ±fîqÇW>‹¦#ÌD$Rì¶»i7üŽÊ£öÈö&-‘b·¥Øm)v»îu»îu»îu[ŠÝ–b·¥ØM»áwäÏâ˜4˹Ms"ÅnK±ÛRì¶»] »-ÅnK±ç¿|¼Ö¿æýù~À£jØ#)ößOý÷÷6ç¿«ÿþñQCâ£jØ#)ößmôßS÷IÙ-ýÿÒõ­Õúï­ûµæìŒî?üwÝG_=H±‡žÃ‡žÃ)öP{¨=H±)öß`? ˜ÃZèK›‡b؃û7ð¯0ÈÊèœ(†=H±ÿŠ»W‹¿¢ùk¥sùAŠýó&sÆþå¯`åK§CúAŠý¬á&N6 µYõùpÁ£Ã÷AŠýøW8æ\æ\æ\æŸ0¸E0™U•{þÓüÐŽøP {b^íú`@ÜDâfywÉ€6LfÁ7 ¾Yp¥Rì¡çð¡çðAŠ=ÔÀj`RìAŠ=z£ëoÀU ÷àI±)öÐ|ø ŤØC1ìAŠý0ùÿ\Ì ,‡…APXyjRìßÀ¿b«!°ë|XçÃò–W'Óƒ{è9|è9|b5°‡؃{bÿ—“YºËB]ÖGRþ\E`_âùÏ÷úWÜ=áÆÿŸ©sKtÕ¡èTjÑ IóŸXŸ8ìåþ¹Ñ­ÈAo³ZN*{Sgj—Hí·6„bC(ö» ë”ةéMås*ŸSù|•^ņÞ9zçpņj`C5°!B±_£dè¶ 4.eoižKÙ[ÊÞRö–²·‚Rö–²·”´¥ ”v›RtJi\Ú±¯` ÆPlÜ„} ýI^ÜÕÒ&SŠN)¥T/¥úÕO¡bØŠ ½s8ôÎአÕÀ†j`C(6„b¿·[Ýo‹£-å(çbq‹£ãv­6 ÁÑÌÍüÑö~‚£;ãÑÌMøÑ<¿ÂC ähí-G+å(G;ÿÑ’9Z2GA9Z;Ñ¡µsè-¢‹bC¯#ÆPlÜŸvýZDG‹èh:Ú£Žâu´YÝŽÂttó=ŠWëæÛ \+p­Àµ×Ú¬Z·€V[»V+”¿_t} õR([¡l…²ÊV([«©ÓÖjj·µéµn­EÔ nKµn­˜¶ÖWë¶ÞŠiëVÒZh­˜¶BÙZz­Pö¡—.LckU¶”UkU¶ÂÝM/͆ÖiëÞÔJ€Ö‚meBkå¶Dk+%ZK¸f„çþìcEb¶uòWäf'‚±ø7„&“gLš1kÖ¯Ø|Õ¦&Ř c6ŒY0¾½ñeõºáŰAl€bû®º©Ü_ƒýY(^žRFùþg½z˜¾N_gdTûU&«6@±E»¤r~ oEæ~оŕWJæð×Ã_›‘›vÈÿyõÿÐî} ó> ™!2Cd†'ƒYzð4µÄcy°Zž¬V[”Pl€b¿YkôåAk‰àò¨µÄrYëôužax[g”àJ‰ê²f–5³ÄryF[b¹ÄmY=ËêYžØ–Õ³<³-qÛ¦\"¸ýöàúˆåË%–û>ϽtïƒqÛ÷Qî}„S´ôºáŰAl€bûX…§‡ÓÎñÁÃß'ðÁsà'ðÁ#á'ðÁÓá'éËóá'éË£â'é›o_®”çÆO1 OŽŸ¢Ýᯇ¿¾Ñ¡]Ó®i×´k®`ð;ôà)ò3ô®ž'ÊO’ž ?‹혪€ *` ØÇj,ú}#úœ‰8‡"Ωˆs,"ÔÂ(6¨… PìstðÁ¢‡D…s˜¢ ØÅ(ö±ð‘ôMú’Fô­èKô­èËQ‚£p˜`œ&pZ£ ØÅ(ö±è{Þ¾\K3 9dB§÷Å(ök‘MFæØ2ò2ʾUß÷pÇÙ\{öýEןX´#æN¤ÿwìÃ.ðü¸Óƒ˜¿§AÎ.àÄÜYñÎ:÷|ÿÊȬé÷0è=zOÞc ÷ȉ›³ºßÃ!'ZN´Þó¡÷€È‰Ç{Vô½§Eïq‘­÷äè=:zŒœ:+žã#½x8@±Š jaûXê¬ø`‡½}ìhÇJæœH¯PlPTÀ(6@±ÅÕé ÒA¤ƒHsÒä5©6@±Š},|ý úAôƒès@¥(6@±A-l€bƒZØÅ~-VhÁ~Ãw#‚õË!×ýןE_V2'^B±Š}¬Äâ@•ÏI˜s&TÀ°Š Pìc½‡·ô%s87Š Pl€bƒZØÅ(ö±…JîÉ= É¡$‡’ÌI2'Éœ$s8lSl€bûX\=ù‘›sæ¦× (6¨€ *` ØÇz¿éK–pB' ØÇ¢/ûF²oprçÝ9gwΙ^7üXïÁ;'ïdD¡ŠŒ(vñ„b‹¾äA±«yÀQžPl€b‹QÐŽì9zΉžPl€b‹¾¨‡"sêEäP½ôQÿŒG^w¡B=pP¨× (ök‘M Å(ö±ðÁý¨È+Ž…bûXô·/WJ†qÞ(ûX\3VûöÕ¬v¤C†q$©ZØÅ(6@±A-l€b Ø 6¨€ Pl€bƒ(6@±A-l€b Ø 6@±Š Pl€bƒZØÅ(6@±ù¯¿–ÿüþóo©ä}!qÞjؼ(öïóü>óþûïÆ™÷7aó¾8o5l^û÷yûŸ;nßÿß·ÿ/‰ò¢Ø¿Ï{sÛïý÷½þ÷ö»ÿIhê}Ä©jØ‹Mýìkª6ÅbS¯!N±ØT5lŠÅ~ µÑd܇†ÔûˆSÕ°)û5ä]Sså}ê}Ä©jØ‹ýòÞêÕúÓèzFÝGNGmVmVmVm4s¦©sMÝe±©jØ‹ý÷zœD1uwõrõ"y”=÷?LUæXlþs%â}÷Lª6Åb¿ÉHVº ]F©±2îVæXì×Pã£[׬é½ÿ±cê}Ä©jØ‹Mýìkª6ÅbS¯!N±ØT5lŠÅ¦ÞGœª†M±ØÔϾ¦ªaS,6õâ‹MUæXlª6ÅbS¯!N±ØT5lŠÅ¦Xlª6ÅbS,ök¨M²ÈWÉ…bŠE(ïþMý"lê}Ä©jØ‹ýò® Ís(ŸCÓšÞûߦªaS,6õ³¯©jØ‹M½†8ÅbSÕ°)û5îõ¤¦.5Q·6Åb¿FÉP/ås*ŸSùœÊçÔžšºÔÔ¥²7µK¤Òøþ'y)›ª†M±ØÔ/¦ÞGœª†M±Ø¯¡kµQ§öÙTö&ó¼×W)K^šðR>—&¼4Ï¥y.eo){K^ÊÞRö–BPÊÞ+áR,6õâ‹MUæXlŠÅ¦ªaS,6Åb¿†+L¥ /m2¥Mæj¬Ô/¦ÞGœª†M±Ø¯!ïJõÒ^ÚïPJUæXlê5Ä)›ª†M±ØÔ/¦ÞGœª†M±Ø?C±8Jõ£…à(G»úÑÌÍüÑr8Ú.ŽBp4óG·È£y>ºW-£ ?Ú[ŽVÊQŽv›£%sYlê5Ä)›ª†M±Ø‹MUæXlŠÅ¦~6õ>âT5lŠÅþZDGñ:Ú£ŽîG‹è(LGa:ZDG÷‚V¼Z«©¸VàZk®µˆZ‹¨ÁÖ}¹¥[Z¡l…²ÊV([¡l…²ÊÖjjÅ´µšZ«©9§ÆB­Ý¯ÓVL[wóVL[1m퇭˜¶bÚ eëæÒ e+”­±Ñ™ nëÖߺõ·îD­p·öÌ–Öj޵`[ ÐÚE[+·•­”h-áVn4¬ýµ$ ;P}HÌÖþdL²1ËvKŒ“ŸƒMÞFœÃ&,ö± ‹¾ÿS›‹QPž=´Ú íPŸÿû–èÏF€öòÝtO‹},]ß Û½>èôA¨]?ûXüÕ>Á(J`½8)†MXìcÑ9?ÅU=ÐøS\AÑ÷Ðã02ŠˆÂ4ߣi÷Êÿ¦ÝÐŽxÌà—‡!2CdféKd†x ñXmK*†MXìc½ò±Dk¾F_£/\£/ÏZK,—õq‹a›°Ø¯ô ªËšÙä ’¾É}‰Û²z–¸-OlËêÙC»¦]ÓŽ.+jûíÁ<Ëå±nY[û>Ï-ßc¹ÅMo#NŠaûXo;=·|#½ƒ8a±I1lÂb¿Gø><ñ}üm‡ÀÏŸÀ„Ÿ oÐ7éËóá'éË£â'éËSã‡ÇÆO1 Ož?<(~>ßè0rÓŽÇÆÏŸ~ÛqõVaÑ#è´#Œ<°x{¼ÇøHú’œ¶8Ç-b±I1lÂb›Ã&,6a±I1lÂb‹¾œ,Ø¡/ùb7™cœâ¬iΔT ›°ØÇ¢ë7XµAÌ9urŽÄb“bØ„Å>}‰>Tb± ‹MŠa›°ØÇ⚇Cöû ‚<àdK,6)†MXlR ›°Øüçœx‰Å&Ű ‹MXlR ›°Ø„Å&Ű ‹},úr7HÅ&Ű ‹MXlÂb“bØ„Å&,6a±Eß÷̘»A¾§Æäçl*†MXìcÑŽÝ"É—$_8wsÞÄb ìèIn$»E’ÉnÁIœXlR ›°Ø¤6a±_‹,Iöû$K8­‹MŠa›°ØÇ ,NÒÉâ¾PìÅ}¡ÈŽðœ3<±ØÇ¢/yPÜ+8ÈsNòÄbûX\)Á¹žŠaûµÈ’b§)4Ç|b±Å7g÷©>ME6Õ "È«z™yUdS‘MÅîSdS±çp|(ûXø@ª Ø}8V‹},ú²VdÇb±Å(dX¡-Š ãôQ,6a±I1lÂb›°Ø¤6a± ‹MXlR ›°ØäÄ ‹MŠa›°Ø¤6a± ‹MXlR ›°Ø„Å&,6a±I1lÂb›°Ø„ÅÖ¿ù}ü¶Üú÷»ì¿ÏóûŒÛìçªn9l][ÿòþû/uëß/5ëþ(lÝ7×-‡­Ëbë_ßqûŽ×·ÿ/‰ê–ÃÖe±õooû½ÿþK„ºå°%[úIØÒ ‰Kå°%[z!q©¶ÄbKå°%[b±_Cj2îCCé'aK/$.•ÖXìw†ua¥‘5)WÈ—ÊaK,¶þÝÿR²ô“°õ゙¦T[b±_CmVmVm4q¦™3Mkêî1Yb±%ûM µyEÝ]½\]m”=Ws–¡îJÄû_A~ µQR]û5ta%udŒ õ:êuÔX³z5v©¶ÄbK? [z!q©¶ÄbK/$.•ÖXl©¶ÄbK,¶ô“°¥—ÊaK,¶ôBâR9l‰Å–ÊaK,¶ÄbK/$.•ÖXl©¶ÄbK,¶T[b±%[b±_Cm´ÐCù|_Sz!q©¶Äb¿»„œj毖-½¸T[b±†&<4Ï¡é Mohz¯4-½¸T[b±¥—ÊaK,¶T[b±%ûgh2S3–šŸûÚ”R9l‰ÅþÊçT>§ò9•Ï©|Ní ©©Keo*{S»D*SÛEj»HMoj_MåsjVSùœšÞT>_©Wz!q©¶ÄbK/$.•ÖXl©¶ÄbK,¶ô“°¥—ÊaK,¶ôBâR9l‰Å–ÊaK,¶ÄbK/$.•ÖXl©¶ÄbK,¶T[b±%[b±_ãNïÕ^¥Ÿ„-½¸T[b±_C½‚Rª—bQÊù«šJ/$.•ÖXlé…Ä¥rØ‹-•ÖXl‰ÅþÝ_”£œ·â µQŽBp‚£Íü‘$8Ú7Ž–ÃQNp»×ÈšgÇe±¥—ÊaK,¶T[b±%[z!q©¶ÄbKå°%[b±¥rØ‹-±Ø‹ý3Z¯£­é(^G7ߣxíQG÷‚£x…éÝ|î­ÕÔ \+p­Àµ× \kµtËe±¥rØ‹-±ØÒ ‰Kå°%[*‡-±Ø‹-•ÖXl‰Å–Xlé'aK/$.•ÖXlé…Ä¥rØ‹-•ÖXl‰Å–^H\*‡-±ØR9l‰Å–Xl©¶ÄbK,¶ÄbK/$.•ÖXl©¶ÄbK,¶T[b±%[b±¥rØ‹-±Ø‹-±Ø¯®ÓgÁ˜jýlñ:⢶`±_K ŘCcîŒ93&͘5cn¬_µ©¹0&Ø ãËëuÄE5lÁb‹×Õ°‹-ªa [°ØÇR»QÚë÷` 9Œ>§Ó7ø+ª}‚Q‚vI»|e5íòmÇ•ޔǪ†-XlÁb¿Ö¡s?(þ! Ó´kÚ½òŸ(Ìû$ð¿'¼™!2Cd†'„!2C<–(¬¶%½Ž¸¨†-XlQ [°Ø‚Å>}yÐZ£/ZK,—X.ëcQ¼°OšìÏbdÖ̲R–X.ÏhK—h-«g‰Û²Ž–G¶åQm‰Û6íˆà²¢–X.±\b¹CßyÕøëûÇ:ZÝUô{°•X‹v<Î}Œg>ã¡g¼Ñ×èËÁ‡¾ÓÎiÇÃß'ÞçJ|>‚¾<~x(ü$}ó}(¥oÒ7ß¾<×òØø)®¹¯èqøëáF>´kÚñØøiÚ5í¿툴;íÞcÖ¾ó÷ȉ¹³ ¼çBïy³ÎÕíDõ=zÏ‚Þ3 ÷è=râæ¬î÷Dȉ–ú7o|' ïQÑ{Vô½§EÎê~Žœ¸ùÒ—ÿž9+Þ‰%Iª†-XlÁb ûXô ¾ÁêæøH,ökß`%sNäéuÄE5lÁb‹jØ‚Å,öké Ò/‰Å~-Vm°j9trNœc'±Ø¯Eô9‹‹-ªa [°Ø¢¶`±‹-XìcÑwèÁ~Ïi–^G\TÃ,¶¨†-XlÁbë=8}ON9:%ú~9§_ª†-XlÁb ûµ¸p&[TÃ,¶`±E5lÁb [°Ø¢¶`±‹-XlÁb‹+xÏŒ¹ä{jÌÝ€s6½Ž¸¨†-Xìcá—]>Ñœ»‰Å,ö±ðAn$Áé›^G\TÃ,¶¨†-XlÁb‹¾dI¢’,á°Î9­S5lÁb [°ØÇJ¬Æ¢J¡Ø78·‹},ßÉNóœS<çôN,ö±èKô9ÓS5lÁb [°ØÇb4C¡Š¦È—"_ õPùŽÂµ¼ðlªÿqÆ{‘ÄË$È«"›ŠâÈP¯#þZì9E^yÅI¢s”¨×-òª¸yÅ £sĨjØ‚Å,¶`±Å(h‹"ʼ:ä窆-XlÁb [TÃ,¶`±‹-Xlñ:⢶`±E5lÁb [TÃ,¶`±‹-ªa [°Ø‚Å,¶¨†-XlÁb [°Ø‚Åþ5þ}øï#~ùû¨ßÇù}ôïc~{»k˜;ŽÝìŽdw(»cÙÌîhv‡³;žßñ\×uÇó;žßñüŽçw<¿ãùÏïxqÇ‹;^è‹ÞñâŽw¼¸ãÅ/îxqÇÓ´å/ïx©™»ãå/ïxyÇË;^ÞñêŽWw¼ºãÕ¯Š;^ÝñêŽWw¼ºã;Þ¹ã;Þ¹ã;ÞQlïxçŽwîxçŽ×w¼¾ãõ¯ïx}Çë;^+Yîx}Çë;ÞÜñæŽ7w¼¹ãÍoîxsÇeßoîx{ÇÛ;ÞÞñöŽ·w¼½ãíoïx«t&Ÿ•ÐeôG)ýQN”ÔeõGiýQ^”Øü.Ìbaµ°\X/,V KFkÆ´hZߺõµ[ß»õÅ[ß¼—ÐGß}ôÝGß}ôÝGß}ôÝGß}ôÝGß}Œ°kd}÷Ñw}÷Ñw}÷Ñw}÷Ñw}÷q2J#kÏm£]ãžÕ~ ¬c´sŒ¶ŽÑÞ1A²jdm£ýc´ŒvÑ2ÚCF›Èhm#“¬¬d´•Œö’Ñf2ÚMFÛÉh?m(£eŠ%¦‘µ©Œv•Ѷ2ÚWFËhgm-£½e´¹Ìaõjdí/£ f´ÃŒ¶˜Ñ3ÚdF»Ìh›í3£f´ÓŒ¶ša¯a³a·a»a¿aÃaÇaËy÷¬]g´íŒöÑÆ3Zƒ£58Zƒ£58Zƒ³lgìgÚдWkpµWkpµWkpµWkpµר*5²Öàj ®Öàj ®Öàj ®Öàj ®Öà:»°FÖ\­ÁÕ\­ÁÕ\­ÁÕ\­ÁÕÜ`ƒ×ÈZƒ«5¸Zƒ«5¸Zƒ«5¸Zƒ«5¸Zƒ›Ü;4²Öàj ®Öàj ®Öàj ®Öàj ®Öà·%¬5¸Zƒ«5¸Zƒ«5¸Zƒ«5¸Zƒ«5¸‡;žFÖ\­ÁÕ\­ÁÕ\­ÁÕ\­ÁÕ\­ÁÕ\­ÁÕ\­ÁÕ\­ÁÕ\­ÁÕ\­ÁîÓ™;?·~îýÜü¹ûsûçþ@¼àÕˆ€W š;qs+nîÅ­Å —J_àõ±«°PÇŽLJã#ðø|>ÀGà#ðøà¡‰ÄGâ#ñ‘øH|$>…ÂGá£ðQø(|> …ÂÇÁÇÁÇÁÇÁÇÁÇÁÇÁÇÁÇÁÇÁGã£ñÑøh|4>ÆGã£ñ1ø| >ƒÁÇàcð1ø|,>‹ÅÇâcñ±øX|,>X[ˆLCe2ÓЙ†Ð4”¦!5 ­iˆMCmrÓЛ†à4§!9 ÍiˆN›÷•uŽî4„§¡< éihOC|êÓŸ†þ4¨¡@ jhPC„*Ô¡†5„¨¡D )jhQCŒjÔ£†5©¡H IjhRC”ªÔ¥†.5„©¡L ijhSCœêÔ§†>5ª¡P ‰jhTC¤*Õ©†N5„ª¡T ©jhUC¬jÕ«†^5«¡X ÉjhVC´ªÕ­†n5„«¡\ éjhWC¼êÕ¯†~5¬¡` khXCÄ*Ö±†Ž5„¬¡d )khYCÌjÖ³†ž5­¡h IkhZCÔªÖµ†®5„­¡lmßÓ(Ö9âÖP·†¼5ô­!p …kH\?Z[~´¶ühmùÑÚò£µå'ß¾5X:/;Z[~ …ÂGá£ðQø(|> ÆGã£ñÑøh|4>ÆÇàcð1ø| >ƒÁÇàcð±øX|,>‹ÅÇâcñ±øÐÚòÖÚòÖÚú³+°«°Vc > †ÇáÃðaø0|> œõ¢•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheŸ—ñ°ÎÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+ûÕÊýƒ§ýïþ¿ø}äï£~ç÷Ñ¿ù}ìíþ¹ŸwÓ°w$»CÙËî`vG³;œÝñüŽçº®;žßñüŽçw<¿ãùÏïx~Ç‹;^ÜñB_ôŽw¼¸ã…®ÏùBúFºÓ5˜.œ^úZºÓ…˜®Ät)Ì•FÖÕ˜.ǸžÐÈ¡‘C#§FNœ9 ƒFNœ95rjäÔÈ¥‘K#—F.\DX#—F.\¹4òÑÈG#|4òÑȇäÑÈG#|4rkäÖÈ­‘[#·FnÜä¥FnÜy4òhäÑÈ£‘G#F<¤¼F¼y52Ës5òjäÕÈ«‘W#/«‰å¤õôÑ‚úhE}´¤>wä–¯^þ¥dh¯–¯–¯‘¯‘¯‘¯‘¯‘¯{—o±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×{m±×ïýK©iå¦}”œöù¼ík°¸ rüp'üp/üp7üp?üpGüpOüpWüp_ü>Üœ>Ü>Üž>ÜŸ>Ü >Ü¡>ŽîQnRîRnSîSnTîTnUîUnVîVnWîWnXîXnYîYnZîZn[î[n\î\n]î]n^î^n_î_n`î`naîanbîbncîcndîdneîenfîfngîgnhîhniŸ7ǹ©}¸«}¸­}¸¯}¸±}¸³}¸µ}¸·}¸¹}¸»}¸½}¸¿}¸Á}¸Ã}¸Å}¸Ç}¸É}¸Ë}¸Í}¸Ï}¸Ñ}¸Ó}tû1û Eu2ÓÈŒun¬scëÜXçÆ:7Ö¹½z—un¬scëÜXçÆ:7Ö¹±Îun¬óW„¾*ô•¡¯}…è«D_)újÑÆoÛûo'ü¶¿Ò í„߯oã·ñÛøí×/ûK³¿4ûKÇ«ÏðÁþÒì/ÍþÒì/ÍþÒì/ÍþÒì/ÍþÒùŠ@|°¿4ûK³¿4ûK³¿4ûK³¿4ûK³¿t½Jì/ÍþÒì/ÍþÒì/ÍþÒì/ÍþÒì/}^9‹ö—féW,¿jù•˯^~ó«˜_Éü?ÍŒW5³¿4ûK³¿4ûK³¿4ûK³¿4ûK³¿4ûK³¿4ûK³¿4û ÂÖP¶†´5´­!n ukÈ[CßÚ’ãKŽ/9¾äø’㯞GГãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾äø’ãKŽ/9¾ïCâû”ø>&¾Ï‰ïƒâû¤ø>*¾ÏŠïÃâÿžßÇEžßÆ÷‰ñ}dÔ=ÔÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheÿ¼§Hœ#¡•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·Á¾ öm°oƒ}ìÛ`ßû6Ø·¿P$°«°Þv5Xº–%Ç—_r|Éñ%Ç—_r|Éñ%Ç—_r|Éñ%Ç—_r|Éñ%Ç—_r|Éñ%Ç—_r|Éñ%Ç—_r­ìû²r­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽV´r •­hå@+Z9ÐÊV´r •­hå@+Z9ÐÊV´r •ãjåùaßùaßùaßùaßùaßùaßùaßùwûÅý¿¡ÿ¿·ëç~ÞóŽœúŽwð¼£ç/ïxyÇ«;^ÝñêŽWw¼ÒµÞñêŽWw¼ºãÕïÜñÎïÜñÎïÜñî‘ÛˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûޏïˆûÎWõË82Zm®÷ûj㯡\2—2R†F6lYyߌ<ÿî/—Œ~®vô®äÑïÖŽ^šÆGãcð1ø| >ƒÁÇàcð1øX|,>‹ÅÇâcñ±øÐÝAÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæP¾9”oå›CùæÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïó<X‰ÅC6Ïhè Goø‡Ç´æJo\~,||||||||4>ÆGã£ñÑøh|4>ƒÁÇ;WƒÁÇàcð1ø| >‹ÅÇâcñ±øX|,>zÄÒ;¤‹£Ý?ô6éÇâôƒƒãdÅ8Z1ÎVì=\ùßé >Þó•÷€å=ayXÞ3–÷å=eá˜Å8gáÐË9õ÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29”L%“CÉäP29pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ï|‰ÞÊRÜ‚sÂàœ08' Î ƒsÂàœ08' Î ƒsÂàœ08' Î ƒsÂàœ08' Î ƒsÂàœ08' Î ƒsÂàœ08' Î ƒsÂàœ08' Î ƒsÂàœ08' Î Ýèö@·º=Ðínt{ ÛÝŸ7nÆGã£ññ»¯îûî¯z÷ï>÷óþóo'Ù[½»·zwoõî^ú»—þ{éï^ú»—þ{_Õ»÷U½{_Õ»÷U½{_Õ»÷U½{_Õ»÷U½{_Õ»ÿô-úŽ×w¼¾ãõ¯ïxsÇ›;ÞÜñæŽ7w¼)}&B3áš ×\8ŒÖti^K[°4`iÀbr5`iÀÒ€524òÑÈG#|4òÑÈšwÓÄ›fÞ4õ¦¹¿ôwEWôwEWôwEWôwEWôwEWôwEWôwEWôwEWôwEWôwEWô÷ÏÐl¸fÃ5®ÙðCc]†fÃ5Îl(]¹èJFW6ºÒÑ•®„te¤+%]9éJJWVºÒÒ•—®Äte¦F<y4òjäÕÈ«‘W#¯F^­!ý©õ§~ÿ¤õµZ`Ë ÓsÖ–—Â4 Ó(L£%3Z2WÔ­ gW…³«ÂÙUáìªpvU8»*œ]ή gW…³«ÂÙUáìªpvEWôwEWôwEWôwEWôwEWôwEWôwEWôwEWôwEWôwEWôwEW¯]½>võúØÕëcW¯]½>võúØÕëcW¯]½>võúØÕëcW¯]½>võúØÕëcW¯]½>võúØÕëcW¯]½>võúØÕëcW¯]½>võúØÕëcW¯]½>võúØÕëcW¯]½>võúØ…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u© ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïB¿–n&vßWñXH±ZŒUë¬Zd‹¡[ áb(CºÚÅüÕ½¬Zä‹¡_ c(CÂÆ1†Š1ÿŸ¤ÄÇ+*_UùÊÊWW",ÝñA&:™èd¢Ç«[å£¹ÒæJ›+m®´¹ÒæJ›+m2¬É°&Ú k2¬É°&Ú k2¬É°&Ú k2¬É°&Ú k2¬É°&Ú½®Ùë† 2lȰ!Ãæóö8X5Xºª!Æ 2lȰ!Æ 2lˆÛ·!nCÜP`z½ìcу¹æj˜«a®†¹æjÞ¹â¾0܆ûÂp_î Ã}a¸/ ÷…á¾0܆û²ÌÐe†03”™!Í mfˆ3CòÌÐg†@3š!Ñ fˆ4Ñß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïsÜÀ1§Í8g3ÎጛV­£æ5ç¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9GÍ9jNôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïB—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»¼Òuy¥ëòJ×å•®Ë+]—Wº.¯t]^麼Òuy¥ëòJ×å•®Ë+]—Wº.¯t]^麼Òuy¥ëòJ×å•®Ë+]—Wº.¯t]^麼Òuy¥ëòJ×å•®Ë+]—Wº.¯t]^麼Òuy¥ëòJ×…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿_‹¸q0çœÌ9GsÎÙœêR‹«"nKÜ–dÙA–dÙA–dÙA–dÙA–dÙA–­ìheG+;ZÙÑÊŽVö}Oèß#ú÷Œþ=¤Oéßcz2­ìhåàœ08' Î ƒsÂàœPôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBúûµš‘›‘›‘›‘›‘‡‘‡‘‡‘‡‘‡«| >ƒÁÇâcñ±øX|,>žú žÿ>ö÷ñìßϾŸs?ïߟŒú~Úï3n»g濟wÔ¼ã¤þ~ÇÉ;ιíÎmwn»sÛÛ®¯¿¹íæ¶›Ûnn»½íö^×êkÅý¼×§o½w¼½ãío5Ÿ; é›þCmBmBmÂe\¿¦/üSã¡Æ¥Æ¥Æ•š}5n5n5n5n— ‚§èµ®¹u£‘G#F<©`+G>GFËÊ Sj¸»kê\Sçš:×Ô¹¦Î5u¿ªÛÇÐe„FVÚýªnC#§F>ùh䣑FVºòЕˆ®Lt¥¢+(® ¸‚â Š+(® ¸2Í•j®\s%[(Ùâ£eõq!#e”Œ#£eŒ ¬ „idÓȦ‘M#Û¹µjF6º°Ñ…͇6)ãv-™þ} 5v5vke§§kSí*“4Ö> e´ÐF m´ÐF m´ÐF í§Hƒ F#kíŒÖÎhíŒÖÎhí̲±!iGÒÔ­¦n5u«©[MÝ*¦«˜®bºŠé*¦«˜®±Ûid­ÕÚY­ÕÚY­ÕÚY­ßQâchäd#ÕÈ Ê*(« ¬ÖÎjí¬ÖÎjí¬ÖÎjí¬ÖÎjíl³Kkde”UPVAYeµ¡­6´Ÿ8{ ¬ÊÅ¿?+± ë`½=´»~œN§‡ÓÃßÜhâƒeXŽÅU>ÀGà£ðqðqðqðqðqðqðqðqðqðqðÁ=ëÃMëÃ]ëÃmë³øX|,>‹nÊï]Ù´ªîë|V`%Va¬Æ,|> †Ã|uÀ+^%ðJ#‚F4"hÄGâ#ñ‘ø ‚F4"hDðU¯ìxuÇ+<^åñJW{¼âãU¯üxõÇ+@^òJ#æþ*1bîÄ܉¹sd‹¡[ áb(CºÚåâߟ…bî†Ã’ÙÍŽlFÄ*Æ1†Ž1„Œ¡d )cN̘;1÷ÄGâ#ñ‘øHÔ WÚì\ÍÎÕì\ío;ú’÷·Æ[ã­_ohàF79Ùäd““MNö«„_)üjáW ¿jø•ÃÿÓÃøx19Ù¯&&ÃÐ9†Ð1”Ž!u.þ},§‡ÓƒÙEï‚ç–Ùþ¬ÁB¨³« »ÊÄ«ÕñA† 6dØïxígáƒûÂp_î Ã}a¸/ »Ê°« "8DpˆàÁ!‚³øX|p_î Ã}a¸/ µ ­eˆ-CmrËÐ[†à2—!¹ Íeˆ.Cu²ËÐ]ÿþ,zÁ%‚K—.ëcYËúXž—ÇÄå9qyPÜâ{߃˜/1_b¾Ä|‰ùs4“!š ÕdÈ&{uÓ>‹Å1_b¾Ä|‰ùóå‰é£ýô¾Î÷±8Šøèyã¾Î÷gO³ZƒŽ6s´™£Ímæh3G›9ÚÌÑfŽ6s´™£ÍmvñïÏzŸ±éQô¨·WU\ÕáªxÆEÍ9jÎQsŽšsÔœ£ænÑìÏÂÇâcñ±øX|,>8PBÍùç ½¨9GÍ9jÎQsŽšsÔœ£æ5稹‹=ˆ¹só·Ç`qUÄ5ç¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9GÍ9jΘ17bnÄ܈¹sôŸ£ÿýçè?Gÿ9úÏÑŽþsôßÅ¿?ëý·÷D…#©‚‹ë=‚yÏ`ÞC˜ÿ¼=8‡yb¸ÒÕ®ô¼WÊiÌá8æpsdç!;ÙÙdg“Mv6ÙÙdg“Mv6ÙÙœ˜5GfÍ™Y>ȵ&ך\kr­Éµ&ך\kr­Éµ&‚M›6D×9ºÎÑuŽ®st£ëîë|‹¢ë¼ß³´÷0í=M{ÓÞó´÷@¢ë]çè:G×9ºîâ߯…®st£ë]çèº[4û³K>†ÇáÃðaø0|>¸Ó wºáNÇÉÚÅ¿?‹Ä|ˆùsÎל6ç„Í9bsÎØœC6ç”Í9fsÎÙœƒ6ç¤Í9jsÎÚœÃ6ç´íþvæÏ¢1b>ýöઈ9GtÎÏóÁÇàƒ3î| >¸¿¡JUê¨RG•:ªÔQ¥Ž*uT©£JUê¨RG•:ªÔQ¥ŽÆt4¦£1éhLç<Ð9tN#AçLÐ9tNcAç\Ð9tN£AçlÐ9tN/þýYôà°Üö¼=¸*vŽ3EçPÑ9UtŽ}ß3y²‰“EçhÑ9[tÓEçxñ¾øg½'ù,ÎòßÃü÷4ÿ=ÎÏóßý÷Dÿ=ÒçLÿáþ‡SýÇú(ä@! 9PÈBr …(ä@! 9PÈBr …(ä@! 98½ r …(ä@! 9PÈBr …(ä@! 98ï¼ø÷g½ø…vý¶ãZ†k®e¸–áZ†k| >ƒÁÇÒni·´#;QÜq·=¯yþFîs?Ïïó—&öûÝïgÞϺŸ·Ý/\vù¯ýÞÑüý¼Ã×§î8uÛ;Nßv}Ûõm×·]ßvsýý¦Á.ÿµËíòßï÷0.ƒ¯˜2JÆ‘Ñ2FÆؘMÉ}h°ûŠæÇЀ¡Cj‚.¶[Úûj\j\j\jÜò®‰2Í”iªLsõ{½àchdM—i¾LfÌØjäÕÈ«‘WQ׌ÝãQ»¥½¡ 1565v’©eŒŒU~}”`95r’{95rjäÔÈ©‘5Ï®T¼ Ø‚M Ø‚M ØnµîchäÖÈ­‘G#F<y4²‚rA° ›@° ›@° ›@° ›@° ÿZ´a-cdhd×È®‘•Ï¡5Zä¡UÞJ€Ñ…–ÌhÉŒ–ÌhÉŒ–ÌÈ×(F 0J€QÜSN6`6`¶ûû²¡‘µvîá¦Ýß—} ¬%À6v¶5VLG1¶%ö¥ecbgúÈ0÷2VkgµvVkgÓULW1]ÅtÓÕ<¯bz…Ÿ ›@° ›@°ÝjÝÇÐÈZ;«}|µ‘¯vòÕV¾ÚÐVÚ*(W·™@° ›@° ›@° ›@° ›@🡠m¹hC[mh« mµ¡­òù7~ ¼ÜÞ7½÷n0ÆÆèáÜcœ›Œs—q|pùýWn•øH|$>ò½á#ñ‘øH|$>¸|>>>>¸§|ýÞ-ñÑøh| >ƒÁÇâcñ±øxã±ï=ù½)° ˱äô°îo®þ¬ƒÕXƒ…LJã`ާGÐ#èôzA#‚F|Õƒ> …ÂÇÁÇÁÇÁÇÁÇÁÇÁªã•¯îx…‡ >¯öxÅÇ«>^ùñêW€¼ ä• F̘;1wbîÄÜÑyÈ` ØT£ûXþª=|¼Â˜;ëÜYçÈCï‚G ØÁ6@°‚ l€` ØÁE²ÄÉ'Kœ,iò¾ùFM7YÜñªNúòš,n¼5ÞúõVô@79Ùäd““MNö«„ÙUš]¥ÙUšœlr²ÉÉ&'›œlr²ÉÉ!ÃÐ9†Ð1”Ž!unUïc‘/C¾ ³;äË/Cô‡èÑ¢?Ddˆ$C%2ÉÐI†P2”’!• ­dˆ¥[£û³ðñ>kp_˜~Ÿ6ðÁ}a¸/ ÷…!‚ÊVüp_î Ã}a¸/ µ ­eˆ-CmÙrŸFo‚ËP\†ä24—!º ÕeÈ.Cw ›ªz>Xñˆ/C}òËÐ_†3˜!Áî»>Øå—µ¬(„˜¡Ä )fh1CŒ  ØÁ6@°©F÷géIé£xÜÝŸåXÅ“&šíÙ·F÷±` ØÁ6@°‚ l€à¯ø|$>xNE›9ÚÌÑfŽ6s´™£Í‚ l€` ØT£û³¸ªæªš«j®ªñÑøh|ð ‹š6@°‚ l€` ØÁ6@°éÍÆ?K>8c¹o6þY0¼' ïg ¨9GÍ9ÚL ØÁ6@°‚ l€` ØT£û³ðAÌQsŽšsÔœ£æ5ç¨9GÍ9çAÎ@°‚ l€` ØÁþZd çHnd‰‘%F–VÀÉ÷ßKWzÞ¾Ûy`Þ3˜÷†+=\éyýrs8‰9ÅÎb‡1‡Ó˜ÃqÌá<æ >ÈÎÑÌakö°fk²³ÉÎ&;›ìl²³ÉN4×­Ñ},ö°fCs9šËÑ\Á6@°‚ l€`-r •æ¨4G¥Ýß\ýYø ;›ìl²³ÉNt£ë]çè:`SîÏ⪈ ºÎÑuŽ®st£ë]wkt¿ÖpîBÃ]h¸ qàå(AG :JÐQ‚Žt” £%è(AG :eÎI™sT朕9‡eŽvt´££íèhGG;:ÚÑÑŽŽvt´££íèhGG;:ÚÑ9isŽÚœ³6ç°Í9msÔ¦£6µé¨MGm:jÓQ›>ïí{HûžÒ’%C– Y2dɼYÂý Uê¨RG•ú¼gºäÆ’Kn,¹*uT©£JUê¨RG•  ØÁ6@°‚ l€` øk±££JUê¨RG•:'ƒÎÑ s6è:§ƒŽŽut¬£cëèXGÇ::ÖÑ±ŽŽut¬£cëûžÉ³ƒ c£EçlÑ9\tNãEßÿä¿'ùå¿gùïaþ{šÿçsžò ”opÆx×õgÑð±·×Âá? 9PÈBr …(äàô2PÈBr …(ä@! 9PÈÁée …(ä@!  ØÁ6@°‚‹M¦GÓ£éÑ\Ks-͵4×ÒŒ<Œ<Œ<Œ<Œ<|ߥÇÒcé±ôØ·ײ\Ër-d'ç§qOMýù¡ßï~a÷³Ÿ~ÿìúÿs?÷÷ùÛvü÷Úçï0õû¬ûï¥ÿîç§î8çþ{_¿­ÿÛõm×wü¹ßÛ~ïõý&Ão¡¯ û?¾à=vàïwUSS£MɸžïÓ…«Ø‚ýþï×È ¹H¹Ð̘¦æJz¿ïo~ 5>òÕjÓ꥙2M•i®îi¬ »@° û¿ßïÄ=†Ú¬Ú,mî×¹G¯®B`þü‹2Ä”"¦î®6¡^¡´ŠqçÐ5c®»œ.ì÷woCmJmŠ6%CÞ5½~ø]óÑ5]³¦×5½®éuå¢kz}Xj3j³š:e¬kÂ]îË¢bU-cd¨ié)¡X„bŠE(»@ð×P/­ñÐ"ex+[FËjt…#ï£E4ZD£E4ÚEF.F 0J€QÜ2vUûºª}]Õ¾®j_v`v௡6 ÷(Ü£õ5Úˆ® u»@°ß÷7?†º+Ê£(bºÚvVÛÎý¯ü\Õ¾.ìÁ.ìÁ~÷ö1ÔÆÕÆiÓ2ä]Ó{ÿÃ>Wµ¯«Ú×UíëÁ.ìÁ.ì÷Ì¡6šÞÕúZm_«ík5á« _MøjÂWó¼Z_÷?¿sÕöºj{]µ½.ìÁ.ìÁ.ìÁ_C½´âì£=Î>ï­ƒ;ÅçC;{ï0…u°´‰~œvÜ'>À‡V‚P°ƒ‚ì àÇ¢÷’OÑ®hWÜðŠk)úþíð=ßãð=švÜz>Ü{>Ü|®ly,ÚqÿùÌÛn°¸–÷®ÍméÃ}éÃéwî·e-"Õõ:u½N]¯ƒ‚ì `;(ØAÁ< ¯Ó×éëô%Ò¯$° GÐ#è‘´KÚ%í’võêÚíêmÇÕi#Òv^1C_"mDú¯ÊxeÆ«3¬ñAô_ññªW~¼úȾýW”¼ªä•%ÈC;(Ø©ëuêzº^§®×©ëuêzì `;(ØAÁ v½†ù±Xç(CòRG(ØAÁ vP°ƒ‚Z_§Öשõuj}ì `;(ø±4^óÍ›o¾GÇûoèN®´¹ÒæZo]ï¿ÑƒjÓêÕúSË—¦Ê4W÷46Tø*ü þ†Pp‡PpüsM+7nÍ×PÍØEÁq¯÷1ÔÝÕFÉãÊ׌Ý#ÐÐÛC(8Tø*ü þ†Pp‡Pð× 2X©wKC(ø›ÔºfM¯+]‰èš^×ôºrñ¢à ¡àø÷ûÁÝÇÐ…mʸ½náï×Т҄LJ6ZwŸÑTåê}—s‡Pp‡ C…¿¡Âß ¡à þ.î{…½,K­C]Øh]-ü5ÔX—1r:y´Œ`”WdžJC(8ôvçÐÛCow¡àPáo¨ð7TøBÁ!BÁßmEm:eèëh¡]IBÁq¯÷1Ô]Q¾*1„‚Cow½Ý9ôvç þ† C…¿!BÁ!ü5ÔFñZ-´û_þ…PpèíΡ·;‡ÞîBÁ¡ÂßPáo¨ð7„‚C(8„‚ãþàîc°)kWÖ„¯Ö×jÂW~5[‡Ppè]Ρw9‡ÞåBÁ!BÁ¡ÂßPáo¨ð7„‚C(8@ÁåXÜ;Œ¿jµÝ_éýYŒâ´sú:Àbnînîn W8(8@ÁE;n0Ÿâ®È½æÃÍæsø‡‘›vM»¦÷ž7ŸÏÐŽÛÏg¸n@î@Ÿež—¾‹"cDæ¢à(ø¹›Óî½±¿wvâfF_£/q3E}¹åQ5û"PF|-Þ¿ò’vÄ×’vÄ׈¯íˆï+ ^a‡«?\=‘6"mDÚˆ´éWdXãƒH¿:ÃDÿFô_ùñê#úFô_QòªÛW€¡À´§ªî7¨û Pp€‚¼Ä9x‰sðç(8@ÁAÝoP÷Ôý(8@Á ~,®™Ü@:Hu¿AÝoP÷ à(8xÙs€‚ à 8@ÁñïþþïÏBtrõÍ•6YÜ\is¥­[µjú•ÞŸEò´}_µûÊ]2ñ¾0@ÁAÝoP÷Ôý(8@Á ~¬·Ý`½ê:°ô×yŸ’È!ÄÎý•ÞÇrú’%Ü¢ôbçu¿AÝoP÷ à(økß!¾Ã¾1Eæ~xÐ@$*I(8¨û ê~ƒºß(8@Áõ¶ãJÙÐRªû ê~ƒºß(8@Áõ¶ãÙ‡]`‰ŠK(8¨û ê~ƒºß(8@ÁÅS»ÚË_†ú2ä—¡¿T  àÇj,F)ÚÚ7Ä–ê~ à?íØå—µ…ú2Ä–^ìüXŒÌ>޼òÏûù>C*ZBÁ PðcÑN{öý}ÝŸE_ž3?œV|œ¾þ¶ÃGà#hÇ#é‡gÒOÐ7è›ôMúò¨úáYõ“ôMú}ypý£ðÄúáIõsøF‡v‡v<­~švM»~Ûq<Í¢×½æè5¡à î7¨û ê~ à?VbÖÁ,ú}ôš£×½æË8ç2ކs”›PpP÷Ôýu¿ Pp€‚‹vDß8§à°ÇQsÎq£æ5çœ (8@ÁÅ5“ÆqªÏQxÎÉ‘stä¨>Gõ9ªO/{Pp€‚Ô(8xtP  àЯôþ¬Æ¢™}åæpU‡«:\Áá(æps†vó¶Ã›î8~ÈâCéNÕ(ø±Þã¢Æ¢'aMv¶ÑŽ ê~ƒºß î7@Á PðcqÍd:ÖÑ±ŽŽut¬£cëèXGÇ::V(8@Á ê~ƒºß î7@Á PðcqÍonh§‰Ï{ίÜNU÷ à(ø±`ü£…¬Zà(ø ôåüŸ“Ê@! Y(ø±h\sà-è›ôMú&}“¾IߤoÑ·è[\sqÍÅxÅx‡¾‡¾‡Y;ô=ô=o_æêp-ÍxÍx͵4ã5ã5ã5ßmè;\Ë0ÊÐwè;o_®e¹–e¼e¼åZ–ñ^Ì´Œ§ì 4zJ…‚óßù}üÒìïsŸ¿„É[ œÿ}Þÿ¥GþËûï¿ðæ}tÞjà¼(øÏÜ]?çŽÛ÷ÿ÷íÿ[ÊŸ÷ßçú›Û~ï8{ý¯þýúá{݇¯12ÔÆLFÊPckêåj£¹¸ÿÑhª8…‚¿Ò€š™«óSÅÀ)ü5ø“¼·zµl}‹ÑŸ4W÷ 6…‚¿ÑT›%¾úš9ÓÔ]œBÁ_CY 9tå‰k¢\ós f¾†z)yneL §~Ö7õ³¾©bà N½ñ9õÆç NÕ§j€S(8…‚ÿŒ£ Sι¦÷¢à¯¡?µT"º2Ñ5½®\tͳkžo p §Pð×Ðîù¢à¯2´ª>GÆjÝ©±¹ õRÒ^œªNÕ§Pp §^ýœBÁ)œ*N¡à¿U¹,K­GeÂèzF—1ÆŸî8£L|Em  ýI‹è¾ª&U œBÁ©ŸõMý¬oª8…‚So|N½ñ9…‚S5À©à N¡à¯¡ c+£p¢< î=ÆL½ :U œBÁ©ŸõMý¬oª8…‚So|N½ñ9…‚S5À©à N¡à¯¡íQ m5½«õµZ_«=jµ¾¶Ø]ÕFûøjžWó¼ÚÒW¾šðÕ„_-—BÁ©7>§ÞøœBÁ©àT p §Ppê×|S(8UœªN¡à N½ú9…‚S(8©NPðci#ýp«øp‹øpkø8uú:}¡àÇzÿª½þÃÝãÃíãÃýã“o;®¹Þ›=Šë+úWʽæshÇMæÓü•ûͧi×´Úqóù(FªN*€œ àÇâš¹}¸ñxo妵¤ à¤8AÁ ~¬À¢ï{o'‚ïÝ݈¥9}¾ÜüÍÅE`A»à¯ùÊ ¾QÒ.iW´#¾V\²Áˆª®žøÚáê‰ô+'ŒH¿ÊÂbnƒ¢ÿ*#ú6¯r¢/Ñ7¢ÿ*[ú’¶Œ²¯Cé.¤×='¯{NPpRœT'(8AÁ…£/+A#œ àäÅÏ NPpR œ à'ÀIp‚‚œ¼ø9AÁ Njœ à'µÀ NPp~¦ai¼æê›ýªu#±&‹›ëk® ñÑdl“§Mv6¢·_±ûª]vŸî÷¯\»OíȺFý6Y×äZ“kˆ¡àübßVb¡¸É¦!‡;6ì%èÕ'(ø±ø+»ÅCôÑAzÝs‚‚“ à¤8AÁ ~,®´¸R¢pQðcñ×fä¦ó>°3Ìû(B<æ}!2("3ìh(½î9ÿrJ(8©N*€œ à¯ÅÝ`Ù–]`‰à² ,±D~ '(8©NPð×bí£½ ñe¨/C~úK/ƒNjüµX=h/CsZK¯{~,ÚAô–*€œ àÇâJ‰å¾Ï“ïåû IÜö}”|!-GU 'ÀIp‚‚üX…§‡ÓÎñÁÃç'ðÁsè'ðÁ#)ŠL(8©N*€œ àÇ¢o¾}¹Rž[QnŽ^S-p‚‚‹¿¾Ñ¡]Ó®i×´k®`ð;ôà)ö3ô®ž'ÚO²¨4½î9AÁIpRœ à?VcÑ—èÑG¯9‡2Žrs”›PpR œ à¤8AÁÏÑÅ‹º;;‡9ªNPp‚‚ Iߤ/y`Dߊ¾Dߊ¾eX1 ‡h=Gá©8AÁ ~,úž·/×ÒŒB‡ (Aç¸ÉÑ„Ž&Ôo'/ƒNjüXüõ=Œáš×w¸ªÃ2û¼~ÉçC²øÅ‡ã˜³ôà@æ,}ÉçÃÎÕÒ˜BÁÅ_õ¬¡Zà?í8kr²Ù¥š]ªÙ¥ÚéKv6Ù‰st˜^÷œ à¤8©NPp‚‚¿;R““ÍŽÔD°É¿&–M&6™ˆ®S-p‚‚‹¾ï†®Óïù&µÀ ~,Úßf—Bש8AÁ Îﱞaq°G¤ÑzzÝs‚‚“ à¤8AÁ þZìHCô‡èÑG:dŽN NPpR œ à¤8AÁ•Xô`oB;:ÚÑÑŽŽvt´£PpRœT'(8AÁEßóöåJ9å(N(8©N*€œ à¯Å~€ Njœ à'µÀ NPðc1 9„u´¨£EêèNGw:ºÓÑŽÚtÔ¦Pp‚‚«±ðA– ;õºç'ÀIp‚‚üXø`ßX²„BG©:‡…ŽfuŽ …‚“Zà'µÀ þZä:ÖÑ±ŽŽut¬£cëèX¡à¤8©NPp‚‚‹¾ï1>w ô®s®è,ç‰ NPðc½8àí«xtq ‹…‚üXcïuÌm¿÷ß÷úßÛï~ǯ2Ž µ1µ1—‘2ÔØ4!v=š¦äÖýšŒûÐPzt©¸Ä‚¿†¼kj®¼/½ºT \bÁ_CÞ[½Z]ϨûÈé¨ÍªÍªÍªfÎ4u®©»,¸T \bÁ_ã^“(¦î®^®^$²çž‡–ªK,øÏHyOµÑÔ¹¦îk–ªK,¸ôè .U—Xpé÷€Kïƒ.U—Xð×Ð5+]©èÊEW2ºæÙ•–÷5Ð%\ª.±à¯qGÍshžïþ~–¡…gj¬¤ …à²àR5p‰—^]bÁ¥jà .±àR5p‰—Xðß²Ô52ata÷\´T \bÁ†–ÌÈ×hÀÑ2Z;—ÿZDW½–Þ]ª.±à¯!§ ÷h5Â}Õh©¸Ä‚K¯.±àR5p‰ÿìE£ѲmC£àÞB–Òï—Þ]ª.±à¯á2ÔFS·šºUàV[ÅkÆìŠrª­iµÐVëkµ¾VÓ{U_é}Ð¥jà .ýèo©¸Ä‚K¯.±àR5p‰—Þ]ª.±àÒþ–ªK,¸ôè .U—Xp©¸Ä‚K¯.±àR5p‰—XpQ \Àà?–vÒ÷Š÷ˆ÷†Ó×¹ï8}ƒ¿*탋káöñáþñáòáò)®¹¸ª¢‡b¦jà?wCzFæ.ói®€Χi×´Ú í¿Ü>CnEîEŸ¥/w£+W üXUXÜ ?ôxoìïÝèkô}oîDð½½›Ó—Xš#¸ûñ5GY ŒøZàƒøZ22ñµ¤]ѱ`DÕˆª=WO|íЗH¿zˆô+-¬ñÊ0bþ ŽWqÑ7¢ÿª#ú¯y•ˆýW”¼ªÄö`š]„‰!Hƒ‹vä“Áࢸ€ÁE5pƒ‹—@0¸¨.`pƒ‹jà0¸¨.`pñèÕÀ .`pQ \Àà0¸¨.`pƒ \_ìX¥¹ææJ›ëk®¯¹ªÆo¿#³û´n‚ÁUXôýŸÜ=XŒB&6ù×C»¡Y×d]“kM®5¹Öì>Ã}aØs†¼²iÈ¡a/¨.`ðc,Úå«ëiĠHwä‘`pQ \Àà¯ÅnFR5pƒ¿{Ä4íÞçv’ª üXô 2((ÁàÇÂñâžR5pƒë}â‘d–`pQ \ÀàÇ¢/»òK0¸€ÁE5pƒ üµXûˆ/C}òËÐ_†Óï?eõ,q[vùeõì¡]Ó®iG—µýö`ž‰å²Ë£ºô:袸€Á¥ç¡Ïû,ù>C*ZŽªR5pƒ‹ïi„4—`ð×âŒÍ%üXo;|>xE‘9ŠL0¸¨.`ðc½OÅôåYõ“ôå±½&\ÀàÇ¢/OªŸƒÃ7:ŒÜ´ã¹õÃë§ßv\=±è5Áࢸ€Áσ>>–<Â~ÞHk…:zÍÑk‚ÁE5pƒ‹jà?}ß#¢r .ª \ÀàÇ*,z=‚väÊM/.`pQ \Àࢸ€ÁEߤ/Ñ7¢Âsž`pƒ‹jà?}9Ú@ë9‡H‚ÁE5pƒ \Àࢸ€Á .`ðs¢¢v‡?œÉ®þ¼‡1\ý!³Ïá¯\ËiFá ù|†vdñ!‹Ïp}dñá@æÏ‡|>Òú=àÇJ¬ÆÒ4Ûäi“m´#'›]ªÉÉf—Bs©¸€Á…ö¦&'›œlö¦&2ÍŽÔäd­&'›Ll2±‰ NÕÀ .`pQ \Àà-ò¯‰o“WM|›ýª‰o³75ÇmÍy[Õ&ªè:çüÊÑu‚Á•Xœèé!Òu ?=Ø‘8÷r” ª üXô%úœ 0¸¨.`pƒ‹kfoB;:ÚÑÑŽŽvt´££íèhGU0ø±èËŽ4DŸã7Gc:Ó9ŠsÔ¦sçœÆ9ºS0¸¨.`pƒ‹jà0¸€ÁE5pƒ \ÀàÇRß%‡Ð¢Žu´¨£@ÝéèNGwª¸€ÁE©MGc -òeÑ4Knl¼íðÁn .ª \T0ø±èË~¿d Ç…ŽzuÔ«stèèXGÇ::ÖÑ±ŽŽut¬£cëèXGÇ::Ö9Ft­^]Àࢸ€Á .ª \Àࢸ€ÁÅù¾vU0¸€Áø`1 ÿ(dU0¸€Á þZp€çÿÎý?ü¿>²`ðcá#è›ôMú&}“¾Iß|û2kÅ•£ß·¥¥è{¸‚CßCßõ¾ùa”õÆk®¥¯¯¯¯e¸–a”¡ïÐwøFõÌ; ײŒ·\Ë2Þ2Þ2ÞrU/q";¥n >ÿæ÷ñK®óï—<Ÿç÷ùK’s_ }n=ð¹0øüËûï¿ ž¿ âÜ_>÷•ÐçÖŸ ƒÏ¿¾ãö¯oÿÑeÝvsÿ¾·ýÞÿ-Âsë`ð×H-CmLm,d”Œ#CbêåêåP“qŽ~øèÐGõÀG0ø;ú°ÒÈš”+äê`ðùwÿSÍ£ß>ÿnyÎQ=ð þj³j³j£‰3Íœiê\Sçʉ ƒ`ð7-ÔæMuwõr5vµQöÜ’˜£7BÕÁà£ß>z#ôQ=ð >z#ôQ=ð >ª>‚ÁG0øk¨±fõ¾ú¨ø µQ*º¦×•Œ®yv¥¥kÂ]îšð ƒ¿ÆjM¹Œ”¡eõ¹#‡&üÂà£zà#|ƒÞ}T|ƒê`ð >ª>‚ÁG0ø—¥Ö¥®pta£Ë¸²ø¨ø+p~øèÐGõÀG0øk¨—â>Šû(¢z#ôQ=ð >z#ôQ=ð >ª>‚ÁG0øk¨±fuµ¾VÓ»ZhWê½ú¨ø½ú¨øÕÁà#|ô›ÀGo„>ª>‚ÁGo„>ª>‚ÁGõÀG0ø½ú¨øÕÁà#|T|€Á|€Á¥ôýâcÜP¸%|œN;§oðW¥½ê0ø¹eÑŽûLJȇ;ȧ¸Ò·•b&|€Á_‹›Íçð׿{4WдkÚ í†vÜ}>ƒ_î?WÌê0øƒK>Þ8ÒD0ø±¸?™ÿÝ×µ°ƒ0ø±èûÞܹ»›Ó—X±4G 8£ ŒH¿’Àˆ¯%߈øZÒŽøZÑ®hW¯BÁ/±|„®þЗH‘6"mDÚˆ´5>PÖø@pѵ‡ýW}Ñ…ˆýW“Ø2»Ë(oF¬ÆC˜è…Їzà >¼úP|€Á‡zà >Ààà ¡õÀ|¨>Àà >Ô`ð`ðá…Їzà >Ô`ðê0øƒ0øP|€Á|€Á|¾8°PÁ_¹Òæúš«ê¤~[÷hý"ðá…Їzà þZdg¿r—ݧÉÄfêye1íȺ^Ú‘kM®5¹Öd:G0ø±ÔnÈ«áaÈÔŽ`ðcÑ—Üò$üµØ-†ÙbŽ$Ò ¡õÀ|¨>Àà þZìh$½úP|€ÁE»÷ùƒ(Ìû(ò¿G¼™!2CdÐRúEàÇâù…(,wçåÉi%|¨>Àà ~,ú² ,»êK0øƒõÀ|€ÁüµXñˆ/C}òËÐ_†³%‚(/½úP|€ÁE;žQ[‚ÁÅ•²¢–X¢½ƒ0ø±ÞgEþú>H²ŽWŽ–Ò ¡õÀüµxžüèŽí(-Õ`ð?O©øà‰óã´sÚñô‰ >Ô`ð?ϽôMú&}“¾Iß|ûò`Ís+ÊM0ø±èqøëáF>´kÚñÜúiÚ5í¿<Ä¢×T|€Áüµx’ýðûYÚiôš£×½¦zà >Àà¯õž&}ôšÛ{Ä@ôÍÞ¾š]f çh8G¯é…Їzà ~,¼}Îu '|€ÁE_¢Ïy£ëƒ0øP|€Á|€Á_‹S ž£ðT|€Á|¨>Àà >ÀàC=ð`ð`ð÷ …¼?|·Ã÷8œÅœ÷ †?\é᪎´¨ê0øð‹À‡Bê0øðBèC=ðê0øƒÏ÷GAR–ª>ÀàǢюœlr²Ù¥šœlv)4—`ð?>ÈÉ&'QdŽS=ðê0øƒë=£/ù‡† >ÀàC=ð`ð-²®ßƒ6² ]'üX´ã´ ]'üXø}cÉ.…®st`ðcq G¤9ßrTŸsÔ¥zà >Ô`ð?}‰þý!úèDç¬ÌQŒ‚Á|€Á_‹Œ@;:ÚÑÑŽŽvt´££íèhGG;ê…Їzà >Ô`ðê0øƒ0ø±…µ?ì>óžÌ’/(PÕ`ð`ð¡øƒ0øƒ0ø±thQG‹:ZÔÑ¢Žîtt§£;Ýé¨Mç´ÏQ›ŽÆt4¦sèùé…Їzà þZäÆrßZ²dÉT©£JõBèC=ðê0øƒõÀ|€ÁüXô%7Ð±ŽŽut¬£cëèXGÇ::Ö9Ft­`ð¡øƒ0øP|€Á|€Á߃{í/ñy÷¥‡T|€ÁüXŽý?œû£U|€Á|€ÁüúrìBN*õBèÇâšo oÐ7é›ôMú&}“¾Ißâû£×\ŒWŒRo_fíÐ÷Ð÷Ð÷ðÍ£®å0^s-ÍxÍxÍxÍwkFi®eeè;ôú×2Œ2\Ë0Þr-ËxËxËxË·|srö„n >Àà¿n¿ûÿâ÷‘¿ú}œßGÿ>æ÷±·ûç~ÞqLÃÞ‘ìew,»ƒÙÍîpvÇó;žëºîx~Çó;žßñüŽçw<¿ãù/îxqÇ }Ñ;^ÜñâŽGW‡·‡ºÐ‡No¯–12t!©+Iœ9¹œ95rjäÔÈ©‘K#—F.\¹øž¹4riäÒÈ¥‘F>ùh䣑F>L¡F>ùh䣑[#·Fnܹ5rkäÖÈ­‘[#·F<y4òhäÑÈ£‘G#F<y5òjäÕÈ«‘W#¯F^¼y5òÞ‘óó‘a2\†–ä'e”Œ#£eŒ ¬õ™Z ©šZ¢©5Úú½üKÉÐ& oÑú­o1ú£o1ú£o1ú£o1ú£o1ú£o1ú£o1ú£o1ú£­f´×Œ6›Ñn3ÚnFûÍhÃí8£-g´çŒ6Ñ®3ÚvFûÎhãí<£d´“Œv’ÑN2ÚIF;Éh'í$£d´“Œv’ÑN2ÚIF;Éh'í$£d´“Œv’ÑN2ÚIF;Éh'í$£d´“Œv’ÑN2ÚIF;Éh'í$£d´“Œv’ÑN2ÚIF;Éh'í$£d´“Œv’ÑN2ÚIF;‰¹¾†y½ÿÖXƒ¥;žë»üYÜõômÌõuÌõ}Ì>>>>>ÆGã£ñÑøx¿[ã£ñÑø| >ƒÁÇàcð1ø| >‹ÅÇâcñ±øX|,>Úv,´ïXhã±@Þ„¶ í=Ú|,´ûXhû±ÐþcñÁ:'P:ñjÔN wÅhž@õº' ŽLJãÃñáøp|8>ŽÇGà#ðø|>ÀGà#ð‘øH|$>‰ÄGâ#ñ‘øH|> …ÂGáƒuŽò1¤¡} ñc¨CþúÇ@†2$¡ d¨ C:ÈB†2¤¡… 1d¨!CzÈD†"²&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯É¿&ÿšükò¯ßüã>ÓÜgšûLsŸiî3Í}¦¹Ï4÷™æ>ÓÜgšûLsŸAØÊÖ¶†¶5Ä­¡n ykè[7}7·áßôÝÜôÝÜôÝÜôÝÜôÝÜôÝÜôÝÜôÝÜ‹ÅÇâcñ±øX|,>‹}7w¾›ëê®{¨»î¡îº‡ºëê®{¨»î¡îº‡ºðaø0|> †ÇáÃðaøàôÀ9?ð÷3çÁ9GpNœ³ç4Á9OpÇGà#ðø|>ÀGà#ð‘øH|$>‰ÄGâ#ñ‘øH|> …ÂGá£ðQø(|> ÆGã£ñÑøh|4>Ö9ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;Zù/0†åXõ¶ãDŽü;äß!ÿùwÈ¿Cþòï‡ü;äß!ÿùwÈ¿Cþòï‡ü;äß!ÿùwÈ¿Cþòï‡ü;äß!ÿùwÈ¿Cþòï‡ü;äß!ÿùwÈ¿Cþòï‡ü;äß!ÿùwÈ¿Cþòï‡ü;äß!ÿùwÈ¿Cþ5ù×ä_“Mþ5ù×ÜgšûLsŸiî3Í}¦¹Ï4÷™æ>ÓÜgšûLsŸiî3heG+;ZÙÑÊŽVv´²£•­ìheï÷Ìšû ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìheG+;ZÙÑÊŽVv´²£•­ìhå0å_˜ò/LùöyÛ5Ö`é˜Ø”aÊ¿0å_˜áÃðaø0|> †LJãÃñáøp|8>ŽÇäÄ^v 1hˆC bƒˆXà&b@ƒŠXÄà"1ȈF 6bÀƒŽxÄà# 1‰H Fb@ƒ’˜Äà$(1H‰J VbÀƒ–¸ÄÞü˜ÄÄ@&31 ‰AM lbpœäÄ@';áy&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&xž žg‚ç™ày&îóÌü°ïü°ïü°ïü°ïü°ïü°ïü°ïü»ýâþßÐÿßÛõs?ïÀyGN }ÇÎ;xÞÑóŽ—w¼¼ãÕ¯îxuÇ«;^éZïxuÇ«;^ÝñêŽwîxçŽwîxçŽwîx÷XtÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}¿±SpLÑ1…Çh£€»"î„\1wÝu×È®‘]#+#Ó5rhdÅ"ƒlÒÈŠE*©X¤b‘ŠE’¤d)iJž¾‰ª‘IUr•d%[‹T,R±HÅ"‹,Ö€FV,R±Hb¡ÄMen*uS¹›JÞTöæayi䣑F>¹ïÈ÷xlÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}GÜwÄ}ÿŒV›V›V›Q›‘÷‘÷‘÷‘÷‘÷‘÷ÑÈ£‘G#¯F^¼Y±Åb‹Q,F±Åb‹U,V±XÅb‹U,V±XÅb‹U,V±XÅb‹U,V±XÅb‹U,V±XÅb‹U,V;Éj'Yí$«dµ“¬v’ÕN²ÚIV;Éj'Yí$«DÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßû~-æ*˜«`®‚¹ æ*˜«`®‚¹ æ*˜«`®‚¹ æ*˜«`®‚¹ æ*˜«`®’¹Jæ*™«d®’¹Jæ*™«d®’¹Jæ*™«4|> †ÇáÃðaø0|8>ŽLJãÃñáøp| ‡‘†þ0ˆ¡@ bhC„*Ä!†1„ˆ¡D )bhCŒjÄ#†1‰¡H IbhqßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾ó%z†åXõ¶+¬ƒÕXƒ¥kA¹ÒÅÐ.†x1Ô‹!_ ýbCÁÆÐ0*B~,|·!nC܆¸ qâ6ÄmˆÛ·!nC܆¸ qâ6ÄmˆÛ·!nC܆¸ q›7n¬…a- kaX ÃZÖÂ> …Âú`¤Ä}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ï|)Za¬Æ,ù@ox0WÁ\sÌU0WÁ\sÌU0WÁ\sÌU0WÁ\sÌU0WÁ\sÌ*ΉŠs¤âñÎUà#ðø|>‰ÄGâ#ñ‘øH|$>‰ÂGá£ðQø(|>Ø78jqÎZ< ÆGã£ñ¡ç qßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;_ŠÖXƒ%Í\5sÕÌU3WÍ\5sÕÌU3WÍ\5sÕÌU3WÍ\5sÕÌU3WÍ\5sÕÌU3WÍ\5sÕÌiÎIšs”æýÎ÷dNÓœã4ç<ÍѧŽ>uô©£O}êèSGŸ:úÔѧŽ>uô©£O}êèSGŸ:úÔѧŽ>uô©£O}êèSGŸ:úÔѧŽ>uô©£O}êèSGŸ:úÔѧŽ>uô©£OÅ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾÷¸ïÀ}î;pßûÜwà¾ó%zj‡> ôi O}èÓpâæÄ͉›7'nNÜœ¸9qsâæÄ͉›7'nNÜœ¸9qsâæÄ͉›7Îrƒ³Üà,78Ë Îrƒ³Üà,78Ë Îrƒ³Üà,78Ë Îrƒ³Üà,78Ë ÎrÃ߸5>ÆGã£ñÑø| >ƒß=oÜwÕ»{«w÷Vïî­ÞÝ[½»·zwoõî^ú»—þ{éï^ú»—þûïÜþ¿™ûû¼ãœ;ιãô§ï8}Çé;Nßëé;^ßñúŽ×w¼¾ãÍoîxsÇ›;žfeôýÂd¸Œ‘2h|dhZêú½’~U8»*œ]ή gW…³«ÂÙUáìªpvU8»*œ]ή gW…³«ÂÙUáìªpvU8»*œ]ήèïŠþ®èïŠþ®èïŠþ®èïŠþ®èïŠþ®èïŠþ®èïŠþ®èïŠþ®èïŠþ®èïŠþ®èÙHÍFj6R³‘Mc]†f#5Él(uR¹“JžTö¤Ò'•?9y4òhäÑÈ«‘W#¯F^¼y5òjäÕÈ«‘÷Ž\Ÿ “á2BFÊÐ’Ó–Ó^þ¤õ%§½¬0-1gmiq)F 0J€QŒ`”£%À(&X¶Y 0J€Ñb-ÆÑ&uOW…³«ÂÙý]Ñßý]Ñßý]Ñßý]Ñßý]Ñßý]Ñßý]Ñßý]Ñßý]Ñßý]ÑßýýÛÃ5«ÙXÍÆj66h<2îe¬fc5«m{µoß7®~Mxõ&éÕ›¤¿†FN\¹4riäÒÈ¥‘K#—F.\Yûêj_]í««}uµ¯®öÕÕ¾ºÚWWûªèïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÐß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ô÷k=ŠE¢G½=¸*Vm²j“U›¬ÚdÕ&«6YµÉªMVm²j“U›¬ÚdÕ&«bÈC‡BÄP"†1´ˆ!F 5bÈC‚ÄP$†$14‰èïBú»Ðß…þ.ôw¡¿KìR#»ÔÈ.5²KìR#»ÔÈ.5²KìR#»ÔÈ.5²KìR#»ÔÈ.5²KìR#»ÔÈ.5²KìBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ô÷k1WÃ\ s5ÌÕ0WÃ\ s5ÌÕ¼sÅZÖ°†µ0¬…a- kaX ÃZÖ°e†.3„™¡Ì ifh3CœêÌg†>3š¡Ð ‰fh4C¤‰þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u© ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïB¿VÓ£éÑôhz°jƒU‹šsÔœ£æ5ç¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9Ñß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]êR—ºÔ¥.u¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èï×b'äPË9Õr޵œs-ýBðòzèÇJ¬Â:Xø`Õ«vXµÃªVí°j‡U;¬ÚaÕ¢O}êèSGŸ:úÔѧŽ>uô©£O}êèSGŸ:úÔѧŽ>ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïB¿TÂÀ—0À„õÛƒ«j®j¸ªáª†«| >`:(î@qŠ;PÜâw ¸Å(î@qŠ;PÜâ·êR—ºÔ¥.u©K]êR—ºÔ¥.u©K]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBú»Ðß…þ.ôw¡¿ ý]èïBúûµÈ!'‡œrrÈÉ!'‡œrrÈÉ!'‡œrrÈÉ!'‡œ r(È¡ ‡‚ rè÷$ò<ÿ}ìïãÙu¾Ÿ}?ç~Þ¿?»Í÷Ó~ŸqÛ=Ñý~ÞQóŽ“úû'ï8ç¶;·Ý¹íÎmwn»¾þæ¶›Ûnn»¹íö¶Û{]«¯÷ó^ß^¿{ÇÛ;ÞÞñVóð¹þžVcdÜ6¿ÃãÇP›t×ïÿ~£ÆG5>÷*%¡Æ£Æ£ÆCã’qd´ ]³æ)4Q¡™ MUh®B“õ;} …Sy‘JŒTf¤RãWïòj¬©KM]jêRS—šºÔÔ%9ER‘U¤y¥ÄúU¸<™§‘[#·FnܹÉWܹ5²‚’ J*(© ¤‚’ J}ŽŒ–12îÈe&Ãe„Œ”¡‘”RPJA)¥”Ò‚-×È®‘]#û¹• £UðÓá2h“2n÷‘¯‘¯‘¯‘¯qke+F 0J€QLÒXû€`”£ø©ÒÇÐÈ¥‘K#—F.6¬%À(F 0J€Yö#6$íHšºÕÔ­¦n5u«©[eË*[Vٲʖ5ö:lìv94rhd­ÊÕª\­ÊÕª\­ÊÕª\e“T#+(« ¬‚²ÚÅWÛøj_­ÊÕª\­ÊÕª\­Êmvi¬ ¬‚² Ê*(« ¬VåjU®Våj«\m•ÿþ¬ƒõþu°t‹pmé·ÌögÑ£éÑôzèjo™íÏ ¬Äâªï5>Úá/þýYŽX‰UX«±K>Âñáøp|8>ŽÄGâ#ñ‘ø(|> … "D0ˆ ÷dã¦lܕ۲q_6nÌ÷u¾E¹77gãîlÜžû³qƒ6îÐÆ-Úâàâcñ±øX|HÖwjãVmÜ«›µq·¾E³?˱+±ðáøp|8>ÀGà#ðø|ó$æIÌ“˜g½=¸*bžÄ<‰yó$æIÌ“˜'1ObžbžÄ<‰yó$æIÌ“˜'1ObžőŒ¶tKºø÷±ˆoß&¾ío»ÁÒxô`M7kºYÓÍšnÖt3“ÍL63ÙÌd3“­;Ç}ñÏ ,¾GsUìÊÍ®ÜìÊÍ®ÜìÊÈCçBÇP:†Ô¹ø÷±X=¨CîzÇ<·Ìög –®jX=ÃêVϰz†Õ3¬ž |°†µ0¬…a- kaX ÃZÖ°†"8DpˆàÁ!³‡Ì2{Èì!³‡ÌFjZË[†Ú2ä–¡· Áe(.CršË]†ê2d—¡».þ},åÐÅ¿?˱ë^Á-³ýY†åXõö(¬ƒÕXƒ¥«rÃ×ì†Çá#ðø|>‰ÄGâ#ñ‘øH|$>‰ÄGã£ñÑøh|4>ÆGモÍmæh3G›¹¿| >ƒíòþº "D0ˆ`AÔœ£æ5ç¨9GÍ9jÎQsŽšsÔœsŽád8'ÎQÆ-šýYø ‚¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9GÍ9jÎQsŽš»ø÷gу˜1bÎ9‹£æ5ç¨9GÍ9jÎQsŽšsÔœÇóÅÇâcñ±øÐþçIÌ“˜'1Obžöö(¬ƒÕXƒ¥«Bÿ9úÏÑŽþsôßÅ¿?˱ëmWXº–sèqèqèqèqÞ5XºúÃ~pØûÁa?8ì‡Ü8äÆY|,>tO¹ø÷g–cVbÖÁj¬Á‘n"ÝÀGàƒý¹ÙŸ›ý¹ÙŸ›ý¹YÝM›6l"ˆ®st£ë]çè:G×Ý×ù>D×9ºÎÑuŽ®st£ë]çè:G×9ºÎÑuŽ®stÝÅ¿_ ]çè:G×9ºÎÑu·hög –| "8¬Õa­kuX«ÃZÖê°V‡µ:¬UNÖ.þýYô æĊ˜s¾æ°9'lΛsÆæ²9§lÎ1›sÎæ´9'mÎQ›sÖæ¶9§m>Ä|ˆùó!æÓo®Š˜sDçœÑù¼1gGvôaGvôáüÜ”ÿþ¬ÂzÛ5Ö`é¨Ý”ÿþ,LJáÃðaø0|@ a‰ „A! a‰ÄGâ#ñ‘øH|> …ÂGá£ðQø(|4=šM¦G¿=¸ªæª`$(î@qŠ;PÜÿþ,|€J VbÀƒ–¸Äà%(î@qŠ;PÜâw ¸ï €ÖÁj,|>`8w|8í‚v@,Ú×\Kp-Áµ×Bþ¡þõ¨ÿ@ýê?PÿúÔ þõËl===ÎÛƒ«j®ª¹ªæªÈ?ž‚ç…ày!x^žÍhþ@óš?ÐüÁyìÅ¿?‹kºùr-‹ÅÇâcñ!­†Ép!ãŽ|Ÿ/ì–ö>†+CR)’Ê‘ ‚M Ø‚M Ø‚í¾$ù14²r&•4÷°×îK’C#—FÖ<ßs^6`6`¶[­ûY©–ʵT²Ý£Z»Õº¡‘W#+(¥d+%[)ÙJÉVÆòÑú1- Ó 2-5¥´Ë5²kd×È¡‘C#KS#‡F­N}‹Q¶Œ¾Åè[Œ¾Åè[Œ¾Å([F6º°Ñ….ltaW¨š@° ›@° Ûý}ÙÇÐÈJ€QܳM»¿/ûùhäÃFÃNÃV£ÆZhW2Ú-í} 5^6&v¦ “q/cÓULW1]mÄ¿—$?ÆÈÐÈ®‘5Ï«U¹Šé*¦«˜®VåjU®ö¨_µî×Ð6¾Z•«U¹Z•«U¹Z•«U¹ ÊjC[mh›@° ›@° ›@° ›@ðŸ¡U¹Ü´*W«rµ*W«r•Ï«U¹Ú*W[¥@°©ª÷g9V`%=t¡Á6@°‚MïBþYøX|,>‹÷šÊ»û.äÇÒn"l€` ØT£û³k°ðø|>ÀGâ#ñ‘øH|> …ÂGáƒr5n²Æ]Ö¸ÍÞß\ýYøh|4>¡ÇÐcè1ôzAnÐÆÚ¸E÷hã&mÜ¥Û´qŸ¾5º¥ D ØÁ6@°‚ l€` øk>ÀGâ#ñ‘øH|$>Äa`(CÚÀ†:0ä¡ `(C"Á †J¸5º? ¬ód'ëaa( CZÚ†º0ä…¡/ a( +²¤È’"KŠ,)²¤Éˆ&¾ÍšnÖt³¦›5ݬé&ZM´šh5Ñj¢ÕD«Y¡Í mVh³B›Ú¬·f½5ë­YoÍzkæ¾™ûfoæ~˜ItŽ!t ¥cH[ÕûX¬žaõ ³;¬žaVϰz†Õ3¬žaõ ‘ ‘d¨$C&:ÉJ†R2¤’¡• ±tkt>X ÃZÖ’éÖèþ,|°†™=döÙCf;æ°c"µ ­eˆ-CmÙrÏCo‚ËP\†ä24—!º ÕeÈ.Cw ›ªzÖÁj¬ÁR×5  ØÁ6½ ùgñ¼®k¾ïBþYøp|pÍÎ3¾ó”ï<ç{à#ðø|> …ÂGá£ðQø(|> …ÆGã£ñÑøh|4>ÆôÅÇâcñ±øX|,>‹Å‡òT ØÁ6@°‚M5º?˰8¥!‚Aƒ³Ôœ£æ5ç¨9` ØÁ6@°‚ l€`­ƒƒƒƒƒƒƒƒƒƒbÄ<ˆyó æœ³8jÎQsŽšsÔœsØâ¨9GÍ9jÎQsŽšsÔœ£æ5ç¨9` ØÁ6@°‚ l€`-²$É’$K’,I²ä‡H"}ˆôa?8ì‡H"}ˆô!Ò‡HâvˆÛ!n‡¸âvˆÛ!n‡¸öçÃþ|ˆÛ!n‡¸5qkâÖD¡‰B…& Mš( ¹nîc±º›Õær4—£¹‚ l€` ØÁþZìϨ4G¥9*íþæêÏÂûs³?7«»YÝè:G×9ºÎÑuÁ¦ÝŸÅUAt£ë]çè:G×9ºîÖè~­aå +oXyÃþÌ—£%è(AG :JÐQ‚Žt” £%è”9'eÎQ™sVæ–9ÚÑÑŽŽvt´££íèhGG;:ÚÑÑŽŽvt´££íèhGç¤Í9jsÎÚœÃ6ç´ÍQ›ŽÚtÔ¦£6µé¨MGm:jÓQ›ŽÚtNé|È’!K†,eIzàƒ€áÖèþ,â›V÷­ÑýYŽ…LJãÒbŽ„>‰ÄGâhaP [Ü  ;ø8ø8ø8ø8øv´ÃÀÖôhz4=šýöચ«‚‘Ä $¶øX|J Rb ƒ•˜îF4z Ñ‚ l€` ØÁ6@°‚ üµÈ4úý]ןE{p-Áµ×Îò`ä`ä`ä`ä`dòÏ…ÂGá£ðQø(|> äç¬Á9«@°‚ l€` ØÁ~,zMN69Ùä@7®e¸–áZ†kF^Ffá¹"x®ž+‚Ü[Õû³ÀìMñy{¬Æ,]K¼Tó—“þüÐïw¿°ûÙ¿O¿výÿ¹Ÿûûü¥–ÿ^ûü¦~Ÿuÿ½ôÿÏý¼ãÔçÜïë·õÿo»¾íúŽ?÷ï{Ûï½¾ßôù-ôu`v`þ~WµÑ$Üÿ(çkЦd\Ï÷TÛUìÁ~‡÷kèëß#k¿¿Ãû5ŽþtîÈ÷ðÙïû›C[¾FmF½4÷??uUûº@° »@° ÿÅéS2ŽŒ–AÕ>2ÔØMÿ¢îJ‘TŽÜsbWµ¯«Ú×Uíëªöu`v`öû»·¡6Gmmô•b©éÍæ_tÍJ³Tž¥¦75½©é½‡µ~_ÀüjÃôîjh!(!K^šðÒ„—&¼4Ï¥uxk{]µ½®Ú^Wm¯ »@° »@° »@ð×P¯P¯P/ex+£Fßbô-F‹h´ˆF‹h´ˆF»ÈèÂn%‹ß÷7?†‡|)IîˆèªöuUûºª}] Ø‚] Ø‚¿†Úµ9j£58J’ÑåÆÁ~ßßüê¾ê®}i” «mgµí¬–Þ~ØÌÔF3¶ÚvV™ðûÝÛÇPW§MËwMïÿr¯ùVûºª}] Ø‚] Ø‚ý¾€ù1ÔFÓ»Z•«U¹Z•« _MøjÂW¾šçÕ\mz·¶×UÛëªíu`v`v`þê¥uj-Ô?K·×]K(ØõâæŸÕXƒ¥ñ¼i7ôÕå«ÖשõuP°ƒ‚ì `ÿwÚög9V`½í K×ÜòÂÞk¬ÁÒ÷§ÓÎiç´ Úí‚vA;¥Ý}åòÏ¢oÒ7é›ô%Q´+Úí>ˆ[· nAÜ‚¸q76nÇÄ2š¾Mߦ/‘æîlÜžû³j}ì `;(Øÿwiã6mܧµq§¾¯\þYô%ÒI¤“Hs+7îåÆÍܸ›«®×©ëuP°ƒ‚ì `;(ø±èKô“è'ÑGÒÀІ80Ô! }`C!ÁÐBÁ vP°ƒ‚üµˆ~²Î“už¬s¤…¡- qa¨ ¡`;µ¾N­¯SëëÔú:(ØAÁ vPðci¼&Z÷¡`×Oïþ,zé&ÒM,›hu½ÿFVm³j›(4Qh¢ÐD¡‰B3ãÍŒ73ÞÌx3ÍÎÚ쬽o;¾%ó<Ìß°ò:†Ö1ÄÎ}qóc9íXQÊVÔ0ÏÜs:¬žaõ ‰ Mdˆ"CÝŸ¶ýY\ QÖǰ>†õ1¬´P°ƒ‚üµˆZé¾rùg½í˜]VÀ™!2Cd†È,ñ@YÒÊÐV†¸R]¯ƒ‚ì `;(ØAÁ_‹X¢Ä )fh1U;(ØõâæŸeXŽuÇ vj}Z_§ÖשõuP°ƒ‚ì à¯Åõ¹ÓŽgz÷·ÝÊ ®%è›ü›voÕú:µ¾ vP°ƒ‚üµíííÎÛ.±¸–¦oÓ·éÛô%è0G‡9:ÌÑaªëuP°ƒ‚ì `;(Ø¿èöƒeXŽXô0z=ŒF§ÓŽsšpÚÁÚíâm—X\ ‘F¥ ;(Ø©ëuêzº^§®×©ëuêzì `;(ØAÁ þZD•朚8Ç&BÁ vP°ƒ‚º^§®×©ëuêzº^§®×AÁ vP°ƒ‚ì `×k˜ÖÁj,õE×9ºN(ØAÁ vP°SëëÔú:µ¾N­¯ƒ‚ì `-òêG÷£ûâæŸX‰%‡HŸC_éqÕú:µ¾ vP°ƒ‚ìúiÛŸE;âvˆÛaMÖô!nÍZmÖjë>£Z_;(ØAÁ þZïI*3ÞN;Û,®…UÛ¬ÚfÕ¢ÍT×ëÔõ:u½N]¯S×ëÔõ:(ØAÁ vP°ƒ‚üµˆe³j›UÛ¬Ú&Òè:G×9ºNµ¾ vP°ƒ‚üµˆ ºÎÑuŽ®stÝ}åò×Bá ;(ØAÁN]¯S×ëÔõ:u½N]¯S×ë `;(ØAÁ vPð×"ú–9§eÎq™£íèhGG;:ÚÑÑŽŽvt´££íèhGçœÍ9hsNÚ„‚üXôesçœÀ9jÓQ›ŽÚtÔ¦P°ƒ‚Z_§Öשõuj}ì `;(ø±îx>P­¯SëëÔú:µ¾ vP°ƒ‚üX´ƒª\Å‚vÁµ€ ,è °¤oÒ7i£0 …A) La…¢oÑŠa‡¾‡¾‡¾‡¾‡¾ðx Ãi¡`;u½N]¯S×ëÔõ:u½N]¯ƒ‚ì `;(ØAÁþニùg%Va¬·‡¾¯“Nn¸ö¡`§Öשõuj}Z_;(ØAÁ ~,Æ#¯PõBÁ vêzº^§®×©ëuêzº^;(ØAÁ vP°ƒ‚‹¾äOÁAð<ç±ÁylpœÇªÖשõuj}Z_;(ØAÁ ~,Æ#ÿœüsòÏÉ?F^F&ÿœüsòÏÉ?ž&‚§‰ài"xšž&‚3_¡`;(Ø©vPpü«ß‡þï/-ãÖÇEÁñï—@Ÿ·]Ü¿ÿR'î; ãÖÇEÁŸûû<·Ý¹?wܾãõí?·ÝÜvsÿ>·ýÞß;þÞ~{ÿ~Qp¨ð7Tø*ü ¡à ¡à¯A›‘±úÆy }çûĆPðŸQ!C5¡o~ϦC(8îïõ>†k:BópŸYBow½Ý9ôvç þ† C…¿!BÁ!üghZRÓ’š–Ô´ÜG‰ Žû{½¡îÊ‘{:BÁ¡·;‡Þîz»s‡ C…¿¡Âß ¡à þ´šåXjVSY–šÞTžÝóÚPáo¨ð7TøBÁ!BÁqp÷1BFÊ`‰|dh±°6-C#kæKKó¾Ë9„‚C(8„‚C…¿¡ÂßPáo‡PpÿÊð^–¥Ö¡²etñW  5ÖÅ.ut=£ëyyy¿ÿ¥b‡Þîz»sèíÎ!*ü þ† C(8„‚C(ø»­¨Öàh Þÿ¼0T BÁq¯÷1Ô}ÕFKo•«»/ ½Ý9„‚C…¿¡ÂßPáo‡Pp µÑ\­ÁU”W³zßîz»sèíÎ!*ü þ† C(8„‚C(8îî>›²veMøj ®&|5á‡Pp‡Þåz—sè]Î!BÁ!*ü þ† C(8„‚üXº¸’JµÀ ýJïÏ2,Ú5}‡¿wÙa”¡ÝÒni·´ãÎÜÚ‚+ e™Åçm7Xú–Üî…‚¿–°Ùiç´ Úí‚vñ¶ã ‚+HÚ%Wª¼ ê~ƒºß î7@Á Pð×"FqðqðAÜâÐ÷З¸EÓ·éÛô%ªÑô®y…ør{6îÏz±s€‚ƒºß î7¨û Pp€‚üµˆ*wêûûº?‹¾D:‰4wrãV. à¯E¤3ðø úÜì…‚ƒºß î7¨û Pp€‚üµÈ”! m`ˆCòÀІ@0‚!„‚ à î7¨û ê~ à?×Ln$k?‡ñÈ\ú.sõæ û¢C/{Pp€‚Ô(8ôû¿?‹cßãÆÇÒ÷í¤GÒŽ6«¶‰Qz£&FMdš(tã—5ØD¡™ñfv›Ùmf·YyÍì6³Ûû¶,}ËaÖ†õ6ïSk ±s¥÷±œ¾¬¨aNÑ@z±s€‚ƒºß î7¨û Pp€‚üµŠvºoÛ°f†‰¤;/v^ì à î7¨û ê~ à?ÖÛŽ+ewDK©î7¨û ê~ à/q^â¼Ä9@Á PpP÷Ôýu¿ Pp€‚ë^³^Ô(8ô+½?«°Ôεj…‚keé{èÅÎ ê~ƒºß î7@Á Pð× Ú)'Ý•“ªPðc%#'íŠvE»¢]ÑîÐîp‡+8o;®T9é¨/Õýu¿AÝo€‚ àÇzÛácðAÜÐfBÁAÝoP÷Ôý(8@Á ~¬ÄÒ(A|Ãø+ñE¯9zMu¿AÝoP÷ à(ø±ÞvÅÕiTšsÌáè5G¯9zÍÑkŽ^sôš£×„‚ à î7¨û ê~ à?×LF„îÓŽ^sNUœcG¹ -¢rÓKœ àu¿AÝoP÷ à(8ô;¼Enp:ã¨>Gá94ªû Pp€‚¼ì9@Á PpP  ààUÐA-p€‚C¿Òû³‹v‡¾Ä÷ËC,OÓ®iGÜ+ù íæm‡7Ýqü·Ã^|ˆàaý6Ñj"ÓD¦?´# Mš(4Qhf¼ß3Uæ¾ým§+mæ¹YµÍªmVm³j;iGdšõÛù¶Ãë½& à î7¨û ê~ à?×Ìúmâ‹®st^ì à î7¨û ê~ à?ÖÛNW?ìÏœi©î7¨û ê~ à?ÖÛ¬¼!úhB¡à î7¨û ê~ à?×LF íèhGG;:ÚÑÑŽŽvt´££c6GE u¿AÝoP÷ à(øk±öQ›Î©œs,ç¨Mç`Nu¿ Pp€‚‹¹"‡P¥Ž*U-p€‚ƒZà-ã¯Ê½Ø9@ÁAÝoP÷Ôý(8@Á ~,Úéìþ¾îÏ¢oâ#ñ‘ôÍ·> P SXá£è[ô=ô=ô=ômØ¡ï¡/¼Ãškn®Y»€ê~ƒºß(8@ÁE; ˆAElé»ô•˜vÕýu¿ Pp€‚«±‹ñŒñÈ t»ê~ à?–cq-äú>PõBÁ ê~ƒºß î7@Á PðcÑ.¹æÄy…ú ê~ƒºß î7@Á PðcqÍäš“k<%OÁylp<%O ÁS‚^ö à(ø±¸òSÝài"xšž‚'Õý(8@Á ~,˜#9ÉÓDð4§Ppª8UœBÁ)ügø½¢ÐWŽd.Ž&Cm*dð§;`hîNª8…‚¿Ò´zœû-BSqNRÅÀ)œzãsêÏ)œªNÕ§Pp ”¡Æ®qü^ê}@øú“räž §ŠS(8õ³¾©ŸõM§PpêÏ©7>§Ppª8UœBÁ)üÍH]˜r,5½©,K¥Y*Ïî)m §Þøœzãs §j€S5À)œBÁ_£dh‰˜kÑ•æù¢àT pª8…‚S(8õk¾)œªNÕ§Pp §^ýœBÁ)œ*N¡à¿U¹,K­G¥Í(IFkgŒ?ÝqF»ÈèÂF—1ò>r:rz_U“*N¡àÔÏú¦~Ö7U œBÁ©7>§ÞøœBÁ©àT p §Pð×Ð…±ÆÑÒ-½Ñ64J‰U&ÜcÊ Ný¬oêg}SÅÀ)œzãsêÏ)œªNÕ§Pp  mŠòjzWkpµWÛ×j n±»ªö±Õ<¯æyµ¡­&|5á« ¿ÅÀ)œzãsêÏ)œªNÕ§Pp §~Í7…‚S5À©à N¡àÔ«ŸS(8…‚“Zà'¿œ¼ :©NPðcñW¥^Ô'(8ù=ßä÷|“Zà'¯{N^÷œ à¤8©NPp‚‚¿–2N/ƒNjüXüÕÙi´ Úí\iÒCY'üX\sâ£èQ´+|> ‡D+>}}‰`4}‰e4}›¾Í•6£ £ }‡vË_—¿.ßH)üX•XK~“¨r£ ~¬Â‘æþ­×='(8©N*€œ àÇÂÑO¢ŸDŸû¾PðcÑ7éK „‚“Zà?Ö`ÑC;“! }`C!A(8©N*€œ à¯EôsèËŠGO'(8©N*€œ àÇ¢ïÒ÷Ívä‡Pp‚‚“Zà'(8¿Ø°4ró&¾M|›¨6Qmݪõ2è¤8AÁÅ_‰Qf56sßýþ•+`ž›ÙmvÖfv{ùn¬¼fN7BÁùž¬ÄÒxÃ* 5CìØ°ÊÐ=ªNPðcñWÖÑí’vI;Ö̰R†õ: NPðcq¥¬”! Ãî8쎨$CªH¯{N^÷œ à¤8©NPp‚‚¿‘² ¥×='¯{NPpRœT'(8AÁɯø&(8©N*€œ àäÅÏ NPpR œ àä·€“—A'µÀ ~¬÷¯×¯^Ô'(økUþ©8AÁ_Ëiç´Ó•ª8©NPp‚‚+±t¥ž´Kþšï_¹hW´+Úí´8úJÀ NPðcqͦGÓ®ñ1ø| =D E&œT'À NPðc©o(c½¦Zà?–ú†ÑÎø«½Õ7 §§3¨4½î9AÁIpRœ à?WO¤ƒH£Òôºç'ÀIp‚‚üXø úè5U'(8AÁEߦ/y€rsRåæè5ç,ÅÑkBÁIpRœ à?>–¾¬dN^„‚œ¼ø9AÁ Njœ à¤8©NPp‚‚“?'(8AÁI-p‚‚œ à¤8AÁ N~ 8ytR œ àÇâ¯Äüé£û¾Ppò{¾Éïù&µÀ N^÷œ¼î9AÁIpRœ à?WJÜšµÚD¦‰G&Mš¹oæ¾Ù•›ynæ¹™çfž›]¹Y¿è0G‡éuÏ N*€“ à'(øk±SwÑ·èK›=»‰eúú²’û0 +¹Y¿ÍZmV(ºN¿ç›Ô'(ø±hG|›u‰®Sp‚‚œ_ÄkXu°hG¤9érŽºýçœz9JP¿â› à¤8©NPp‚‚¿ÑîÉœš9ŠÑ9@s´££íèhGG;:ÚÑÑŽŽvt´££…‚“ à¤8AÁ ~,úž·/WÊ>ÎQœPpRœT'(8AÁ_‹ý*œÔ'(8AÁ Njœ à/÷ÐNð¡àÇâ¯ÊÕ'(ø±hç´{Ù tÅ‚<˜îتNPðcÑ0a‰ÂGÑ£ðQôXXÑ÷Њa‡¾‡¾  ;o_®ÞaÍ( ƒ}˜v½î9AÁIpRœ à?>à# A… '(ø±+°ë`5–¾¯Kͺ](8AÁE_{ûr-Î(äª^(ø±¸g<òʃoô zMN69ÙäIòÊÉ+4¿Pð×"¯ æä•CÄx NPðc1Êar'U'(8AÁE_2Ì›k!×x^ NPðcq-äÏÁ©npª~ÉZÿ~¦î/×}!tý‹ÛèR5p‰ ]ó¨ÍªrîžÌ–ªK,¸ôè .U—Xpé}Ð¥jà .ýèo©¸Ä‚K¯.±àR5p‰—ªK,¸ôè .U—Xp‰—ªK,¸Ä‚ÿ–¥Ö×èë\±\zt©¸Ä‚ÿ -™ÑÞÿÖ±ô>èR5p‰ÿ©µŸê•úS¹ uW’ÜÎR5p‰—~ô·T \bÁ¥×@—Xp©¸Ä‚ÿ ö¢Ñ¿héRb–ýé~U&¬â¾Šûj¡­öŸUÜWS·šºU¸Wá¾ÇŽ¥×@—Xp©¸Ä‚K¿\zt©¸Ä‚¿†®Ykpµ/ .ýèo©¸Ä‚K¯.±àR5p‰—Þ]ª.±àÒþ–ªK,¸ôè .U—Xp©¸Ä‚K¯.±àR5p‰—XpQ \Àà÷üb÷×—Óë ‹jà?VaÑwø«®_0øk)›ô:袸€ÁõO¿ø[T0ø±Vcé ‚[^p« cdí-‚ÁUX´ Úí‚vßÀoÒ#¹æä ’¾‰¢Gá£hWø 2qèqðA´. .ª üµˆ 7aU0¸€ÁE5pƒ üXô%¾±ø ¾±ŒL|“üK´KjóP5pƒ¿–Ñ%íZ0ø±ðA¤“H'‘NLJヘgà#ðAô“ès·×K  \T0¸€ÁE5pƒ üX\sÑ£èqhG  `(C"AÕÀ þ©3K…¡àUú‰vÝÿbS™æ…çgJÓˆEÂ2QÂ?‰ºM]V?X}‰Cp —n„.å—`p)¸ƒK0ø+¨°f5df¡é Ú=¦-Ý]Ê.ÁàÒÐ¥|à .å—`p —¾ \ºº”\‚Á¥¡KùÀ%\Ê.Áà .Ý]Ê.ÁàR>p —`p)¸ƒK0¸ƒ¿n)¿Ô(FÖ2êü ‹KùÀ%üîêŒú3Ò>R:ÒuaðWP-ÙÆSKùÀ%\ú&péFèR>p —n„.å—`p)¸ƒK0øO`/ P®72‰›ËR‚ÁßÊ$”„«ýžM–`pé›À¥¡KùÀ%\ºº”\‚Á¥|à .Á௠šՕ®¦wåŒ÷›À¥¡KùÀ%\ºº”\‚Á¥|à .ÁàÒ7K7B—òK0¸t#t)¸ƒKùÀ%\‚Á¥¡KùÀ%\Ê.Áà .å0¸€Á þîùí1 N_..„.ò ü•†ºÃoÕmå0¸ø"pq!t‘\ÀàŸäH‰THƒD]yΣÎy²¹lLùÀ þI”sÊ9åœrŽÞ@›¬îð° .`ðOBG¢#)—”Kt°2^è(tuY7/ê6u›ºM]ÖÒYK—‘͇g³`ðO¢ëëˈX__ʱ¾Õñ þIÒËsZ0¸È.`pƒ:Xé`¥y”ëBè"¸€ÁE>pƒ ü“¨Ëꫬ>!€`p‘\Àà0ø'Q7©‘”Ã"ñÁ!@8D‡á#èBè"¸€ÁE>pƒ \ä0¸€Á þI´‚ïÇ2WK]ì…CùÀ .`pƒ‹|à0¸€Á ®/v$µ×¬t³¾Íª6«Ú¬j³Z×6kÔzh(¸€Á_‰Uh|°ñ¼fÆ›of·ÙYÏkf·™Óf&{93Iœ#ü“Tnð·Á·†¢ÁàŸD]pƒ‹|à0ø'¡ƒõXVay:/VLh%\ä0¸€ÁÅ…ÐE>pƒ‹|à0¸È.`pƒ ü}sÖØÑxõEàâBè"¸€ÁõEÀ¤ßšz¯|àÿ$ÊñÎnF9£œ¢Få0¸È.`pƒ5‚ßÊ•\À௔”KÊ%å’r…ÞB›lRùÀ .`ðWjt4:šrM¹A+cƒŽAÇP—u³¥îRw©»Ôe-‰×”\Àà0ø'QƒõuY§ò ü•X_ÇêÜ(Çú¯ñš¯çFä&ü•Xig¥9ç0â5#^3â5#^3Ž?ŒÈM0ø+±úÄkF¼¦|à0¸È.`pƒ ü“¨;ÔÊa޹ ùÀ .`ðO¢.«Ú¹Œ¸Î8…1"<å0¸€Á ..„.ò \ä0¸€ÁE>pƒ \Àà"¸€Á .`pƒ¿§ƒØFé)¤/BùÀ þIÔm~Ë VÓ Þ]C9V°ðäš·œzZ‹6V°X·Â“‹]¹ñÚVŒ¤ ¡‹|àÿ$Ê1÷m”cî›ynæ¹™gb.Áàÿ$tà«” Ê:X™tàµDi‚Á?‰ºìÙÿà 0¸È.`pƒ ü•ðÚf}%® þI”c&® þIè}׿$®3â:ÁàŸ”HÒÁù–õG]Ê.`p‘\Ààÿ$ê²úÃê«Oœhœ•£`pƒ ü•°bG#v4bG#v4bG#v4bG#v4bG]]ä0¸È.`pƒ‹|à0¸€Á?‰VðýiæŠ';¨*¸€Á .`p‘\Àà0¸€Áõ…Á:Ê?²]]ä0ø+åŒr•c”ƒ®G¤åÀZŽSqŽ \P.Ѥ8‰xÅIê‚.NQ·¨[Ô-êuë­+‚qšVš>7íÁ>Ìã å†rƒ¶ALä,:À#ç]Á¥îRW‘›ò \ÀàŸH‰THjÏ­ê*®S>pƒ ü“4r6Õ ÿ$úb´‡]é %ìʰ&ÆÌ)‡5é ÿ$t`WDÿºú'Q7©‹]vÅsÎ*\Ààÿ$Z©·.³†]q2ë¼%8'³Îû‚`pƒ¿ÒÐìwÁàÿ$Zú‚%ò!\ÀàŸD_°I{mRÏ-çmÂy›pÞ&œ· çDXùÀ .`pƒ \Àà¿jÏûþüˆçG>?êùÑϹõìHPKæBBJ( -vö ÏÎøÔ²«eWË®–]-»ZvµìjÙÕr¨åPË¡–C-‡Zµj9ÔrÜ–]=tõÐÕCW]=tõÐÕCwÚ¹=tõÐÕCW]=tõÐÕCW]=tzj9ÕrªåTË©–S-§ZNµœj9oË©¦z˜êaª‡©¦z˜êaíܦz˜êaª‡©¦z˜êaª‡©&=Lµ\j¹Ôr©åRË¥–K-—Z.µ\j¹Ôr«åVË­–[-·ZnµÜj¹Õr«åVË£–G-Zµjù¨eím÷/:[àºu£u+¹…²[yÍ-¦ÝbÚý¥„ŽH‰TH4HÚ†>‡öÔÕ?ÉÐqÐqÐqÐqÐqÐqÐñö™ úÃýa‹þ°Gؤ?ìÒ¶éûô‡úÃNýa«þ°Wج?ìÖ¶ëûõ‡ ûÃŽýaËþ°gØ´?ìÚ¶íûö‡ûÃÎý t:‰ŽDG¢#Ñ‘èHt$:É3rF9£œý¯œúbÚ«ŽÖâÉZ/}^ú¼ôyéóÒç¥ÏKŸ—>/}^ú¼ôyéóÒç¥Ïûö_X|añ…Å_X|añ…Å_X|añ…Å_X|añ…Å_X|añ…Å_X|añ…Å_X|añ…Å_X|añ…Å–gãòl\žË³qy6®žvTÎŽÊé#ÄÍÔMrCŸR"R# :‹ŽEÇ¢cѱèXt,:z†šéª"ÿ$Cr¤@J¤Bj¤ABÇAÇAÇAÇAÇAÇAÇAÇAÇAÇA‡¡ÃÐaè0t: †C‡¡ÃÐáèpt8:Ú,(” ÊÅÿÊ%R!5Ò ©/¡}Ã"Ðèt:Ž@G #БèHt$:‰ŽDG¢#Ñ‘èHt: …ŽBG¡£ÐQè(t: ŽFG££ÑÑèht4:öƒ`?öƒ`?öƒ`?öƒ`?öƒ`?öƒ`?öƒ`?öƒ`?öƒ`?öƒ`?öƒd?(쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »*쪰«Â® »Ê å†ró¿r4HêËbËóhy-Ï£åy´<–çÑò=ü“©itŒdW"Ò? †C‡¡ÃÐaè0t: †C‡£ˆçq@CzÔã°ö8´ÇÁ=ïq€C|äã0ú8ÔÇÁ>þrŸV9p•X9•Z9°•\9Е^9‰ŽDG¡£ÐñÚU¡£ÐQè(t: …ŽFG£CÏwìʱ+Ç®»rìʱ+Ç®»rìʱ+Ç®»rìʱ+Ç®»rìʱ«ÿÁ¹ÿÑ9t¼|ît/¡{ÝËè°«—Ò½˜îåt/¨{IÝ‹ê^V÷º—Ö½¸îåu/°{‰Ý‹ì^f÷B»—Ú½ØnçŽ]9v娕cWŽ]9v娕cWŽ]ݿٜ‡%Ï¿½ÿ÷¹?ï??»ÕßO¿?ãþLýž‚*i*j*k. ­æ¤7¥8Õ`ªÁTƒ‰r5˜j0Õ`jX©–K-—Z.µ\j¹Ôr©åRË¥–™°º-_£åQåQåQþÔCW]=tõÐÕCW]=tõÐÕC–Ôéa«åVË­–[-·ZnµÜj¹Õr«å¾-߃ÚQåQåQåQåQåQåQåQåQåQå?aUxUxoáú|$ &Á%„„”PZÂHPËr­’o•œ«ä]%÷*ùWµ|ÔòQËG-›Z–3–œ±äŒ%g,9cÉKÎX¦–M-»Z–©_¢<"Ê#¢<"Ê#¢<"Ê#¢<ÿF=õpÔÃQG=õpÔÃQG=õpÔÑ3ŽœqäŒ#g9ãÈošóèÎëQ¾ó(ßy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢ü•Ø%?l“öÉå‡òÃVùa¯ü°Y~Ø-?l—ŸBG££ÑÑèht4:ŽFG££Ñ1èt :ƒŽAÇ cÐ1èt,:‹ŽåÈsÊxPO*ãQe¬‚± Æ*«`¬‚± Vï삱 Æ*«`¬‚± Æ*«`¬‚c±þFX¬c±~Þ…ÔHƒ¤^9ëX¬c±ŽÅ:Q…V8q…X¸¡ÃÐáèpt8:ŽG‡£ÃÑáèpt:Ø7<ÐètÑ ûF²o$ûFž7D"Fb’UÈ7Fc’UHV!Y…d’UH{ã0t° É*$«¬B² É*$«¬B² éo°‡V!Y…d’UHV!Y…dTN²o$ûF²o$ûF²o$ûF²o$ûF²o$ûF·¢ƒ}#Ù7’}#Ù7’}#‹ŽEÇ¢cѱo´K¸û!Þýðò#ˆ9D1‡0æÇ™C$se±Œˆò@”¢<å(Dy Ê_ _hÅŒ§ƒ–ƒ–yoh^š7‡æÕ¡ywh^š]¹Ù•›]¹Ù•›]¹Ù•›]¹Ù•›]¹Ù•›]yñ…Å_X|añ…Å_X|añ…Å_X|añ…Å_Xv¤eGZv¤e–UXVañ…Å_X|aç­A¯ð…Å_X|añ…Å_X|añ…ÅV¾`ù‚}ä ö‘/ÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Ï—~&R!5Ò QC«/×\9Î?)Ðèt:‰ŽDG¢#Ñ‘èHt$:‰ŽDG¡£ÐQè(t: …ŽBG¡CÑœˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<_úy É‘é­QH4HêÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœÍÑœ͉(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆòWb',vÂb'lžG]5vÕØUcW]5vÕØUcW]5vÕØUcW]5vÕØUcWDsF4gDsF4gDsF4gDsʨ®×r«‡Üêá¢í!ËzȲ²¬¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(%vÂe'\vÂåy´õÖ W<¶éUÓ«¦WŽFG££ÑÑèht-‘Ñ-‘ñ©Ÿñ©Ÿñ©Ÿñ©Ÿñ©Ÿñ©Ÿñ©Ÿñ©ˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢<å(Dy ÊQˆò@”¢ü• œqà qú­A¯š^ ½z5ôjÐ1èt :ƒŽAÇ¢cѱèXt,:‹Ž×®Úá”)=dJ™Ò?É‘)‘ I:8ásNøœ>ç„Ï9ásNøœ>ç„Ï9ásNøœ>ç„Ï9ásNøœ>ç„Ï9ásNøüpît/Ÿ{ÝKè°+Nøœ>ç„Ï9ásNøœ>ç„Ï9áQˆò Ò2¸îåu/°{‰Ý‹ì^f÷B»—Ú½ØnçŽ;6îØ¸cãŽ;6îØ¸cãŽß{yöIKÞ÷ÿëøûÙ÷çÜŸ*ý¹?Ïý÷WPISSþ‘ 2nü ¡Â©Â©Â©Â©ÂOø÷íœ · · · 7…ScÓàZ}nucÔò¨åQË£–ç¶ì×µ»U¶ñ*Ûx•m¼Ê6^e¯ˆòŠ(¯ˆòŠ(¯ˆòŠ(ÿ ê¡«‡®ºzèôpRBIh ê³ áÞÏ´º {õaäեثK±WDyE”WDyE”WDyE”WÉÁ«äàUrð*9x•¼J^%¯’ƒWÉÁ«äàUrð*9x•¼J^%¯ˆòŠ(¯ˆòŠ(¯ˆòŠ(¯ˆòŠ(¯ˆòŠ(¯ˆòŠ(¯ˆòŠ(¯ˆòŸ w(¹C¹ZvµìjÙÕ²Œ­dl%c+-JiQJ‹RZ”Ò¢”å¾›}µ,¯,yeÉ+[–0š¨ÑD&j>” Wéh»¸DyE”WDyE”WDùOÐpFà g4œ ·„‘p‡3Îh8£Mf´ÉŒ6™{]ÏêRì…(/Dy!Ê Q^ˆòB”—là%xÉ^²—là%xÉ^²—là%xÉ^²—là%xÉ^ˆòB”¢¼å…(/Dy!Ê Q^ˆòB”¢¼å…(/Dy!Ê_iѱèXt,:òßsd—ÒA2$G ¤D*¤F$tttté0™ˆòB”¢¼å…(/ÙÀK6ð’ ¼d/ÙÀK6ð’ ¼d/ÙÀK6ð’ ¼d/ÙÀK6ð’ ¼å…(/Dy!Ê Q^ˆòB”¢¼å…(/Dy!Ê Q^ˆòB”¿R #Ðètd8Q†f8q†h8+謠³‚Î ò,?<ÌOóÃãüð²lû¼ïª¼­~dÙö‘eÛG–mÄfFlfÄfFlfÄfFlfÄfFlfÄfFlfÄfFlfÄfFlf¼Šï¢ÆË¨ñ6j¼Žï£Ê^²—là%xÉ^²—là%xÉ^²—là%xÉ^²—là…(/Dy!Ê Q^ˆòB”¢¼å…(/Dy!Ê Q^ˆòB”¢ü•ŽFG££ÑÑèht4:¬ ±™›±™›™½+8èt :œÞVX]`uÕ«¬B° Á*«¬B° Á*«¬B° Qè(t: ¬B° Á*«¬B° Á*«¬B° Á*«¬B° Á*«øQâG‰%~”Ÿ·F!5Ò ©WDsF4gDsF4gDsF4gDsF4gDsF4gDs–¬y²æÉš'kž¬9ŽGG #Ðèt:í˜)ÿ$Í©ñæj¼ºï®ÆËëEÊt É‘ÔÓnq/~¤F$t0§ÆœsjÌ©1§æèpt8:˜ScN-Ñ‘èHt$:‰ŽDG¢#Ñ‘èht4:ŽFG££ÑÑèht°‚¶èXt,:‹ŽEÇ¢cѱèÀB;ëEÊÄ©vš‹”VX]h§¹ Ä?‰UV!X…`‚UV! …ŽBG¡ƒUV!X…`‚UV!ðŠÀ+¯¼"X…`‚UV!X…`?Jü(ñ£ÄòóÖ(¤F$õŠhî&?:ð£|OÞØ›ˆæŒhΈæŒhΈæ.R~$jày‰ç%»>÷šêŸàBÂU‘ZÊ{ |nòO¸*R“ZÊÔRÞà#¤|î'ƒ‚ʌʬÊì‘ íš„{ž{nòO ·Ï÷÷)!å#¤|î=Ó?AeLeŒ2%AÚ]µdH%ß¹HùÜ|㟠2²±çow‚ZÖZ”Ö¢´¥µ(­ÅEÊGHùOÐê”í¾£}…[«eQOròO¸íŒöÑŒfl4c£‰MÂhF“0š„Ñ$Œ&a4À'ù'Üå9Úh8)!å#¤üTFæ72¿‘ù|päƒ77ù‘´·}ÿ&k¸·S?’¶‘QŽòÃ.úd¸<ÚØ??l vÐ[è'(ÇnúIÊ%åd ÷›ÀDÝâߊqã(ÆÑ”cóý°û~Ø~Ÿ{¥‰rìÀŸyË }Yê²1Ø™?l͇õ8òÖ›iüHo¹A’ŽÃºÖí°n‡u»ý)%Öòuº2í››ü“x˜Y½ÿF9Yá½ú'1§O†Ë#]æÙ–rK¹}Ï<–å¹÷›ÀäHo¹DR_œ8ÁÏûo4HDÌ‹3/n”{£§œSÎ)çotñA¢/AÝ nPÿpÖÓrI9|'óÍ4~$ê²nκ9ëÆ3üð?ÎZ:þáÄ'®§šòQöñ#9R ieÒ(G –XgbÉ®’N9µô·\!Ñ—7X êuƒºì4D‡àÜLãGB1^ä%;R²#%«@q¿úûHÔe—Jv)â‰C@qòû!eo"¨8D‡°âW‹Cd!¤|@ʤ|@ʤ|t×ô# uÏSÛ $9Ä$Bʤ|”}üHÔÅ^ˆU1Šò)òOR{Ç7­4åÚß#RÇÂ?o<ù"å£Û©‰xmãµm4ž×ØFcm4;k³³6;k³³6+ݬt³³ö¾ååûÁü-ž·þþ›z¿ìk˾¶ñ¾ŸPZ³ÌоïOøÇâˬíÿÞ¡Þ—¨ÒA$ÊÊÊÉî½ÒDÝC]£®Q—7Yâ0#3â0#»™ÆD]§nP7¨Ô êuƒºI]YûÍM~¤”´üÛRN–xo§þJ¼™ÞìãG*$Þí™g;”;”{ϘS3Êå80{ËilÆœšS—¹2æÊ˜+c®Œy1æÅ’rI¹¢\Q®(Wo¹@¢/MݦnS·©Ëz‡q˜‡qØÍ4þI¬±™›™½ë¶ÔÕbÎZ¯ñš¯ )e?R# ’V&‚rA9¬3°ÎHÊ%å’rI9V!X…(êu‹ºEݦ\S®)×”c‚Uˆ¡îPw¨;Ôe‚Uˆ¥îRw©Ë.•Ì}2÷Éܧbå›iüH”co"r3"·›iü“Ø›ˆæŒhΈæŒhNHùè®éG¢.ûž×qò)ò)e?u±—Ä^_%4"A#4â?ãpÃ8¹0Ž.Œ³ ãðÂ8½0+nöñ# ’zUøyaa……VXXaM…5ÖTXSaM…OÖÔØKc/½4ûsc/½4öÒØK¿'²ØFcÄ\÷^éG¢/ØFcm›ÝLãG¢\P.Þrè`ÝšukÖ­Y·f݈æŒhΚµlöìfÏnöìaÇ|uðÕeÇ\¼vyÒ-ÅQ,^»<é–èa‰]VaY…}ÏÆyú-O¿ÅC‰úŒ¨ÏˆúŒ¨ïf?:ð·Åß–§äâyË*1Þ¯þ>uÙ³—=›ØÑˆØÑˆØÑˆØÑˆØÑˆØQHù€”Hù€”Hù+±úËóry^.;:Ѧm:Ѧm )òQöñ#Q÷P÷P÷PC¾êœÿ9çNT*¤|”}üHÒqÐqÐqÞº‡rF9£œQ:sœrN9í÷^éG¢. \ãðš›iüH”mœ¤pã$:’ºI]ؘÇá<è¹_ý}$êBI˜ä€GŽlÒCº™ÆD9@ „ÈAD#râl!åR> åR> 壻¦)©Þ¯a†m˜žBÊGÙÇD]ìŰ3j}1úbô»rt8ÖîX;'7Óø‘(GËœ:'¦9uºN]§.¶ëA]œuƒºñÖÐ ½€î%t/¢s¬˜sBçœÐ_‚Ç9¡ò)ò)ÿ$Úò_þ÷À—¾бqÎýå‚>Ôêbí/6|¹á }hoioioi_xãeŒö/Ÿ‰ÚsÑõßÏÇ8ì"eû÷lL?o9wÕ‹+<›˜)9Ù„”ÿ„PáPáP™<nîfc÷óÆ?A…KeZµZ¿jéU•••Y•Y•Y•Ñ´Ü}ÁþÝ¿%ù &Á5·‡÷˜Û”œlBÊBªpªpªLiN5®kRv?oüT¸UFãrË5.׸\ãrë¦"›R‘M©È&¤lBÊ&¤ü'•‘yĹÃÉ@¸sß#ì~Þø'´•)Õ*ýJKy†íÞ\ýTFC¾YC¦TdR6!eRþVe6$¤„[¸´¦¥±—Æ~uMHÙ”ŠlJE6¥"›² )›²Ýïÿ„Û±’§”œé¦"›R‘M©È&¤lBÊ&¤l÷žêŸ –S-k-JæW2¿ÒZÜTdS*² )›² )…ÛÖƒŒ¦n4c#k™“TX36šŸÑ´Œ&a4 £IMÂhì)Û½¹ú'¨ºF:²º‘Æ5×e¤¢îlŒÌoäƒÃ&óù R ’vš{¨iä&HÙteõ#Ñ Ûç‡ýóÃúaý°…~‚r‰6öÕORŽ-ö£)Rn²”MWV?-7åšrM9vßÛïEÊR6òWb þ°?#~$ê.:´ƒ)Ù@ÊR6²ézêG:H†DÝCÝC]Öí†îF²” ¤l 埤>ól2A!eÓ'é Q®©Ë“̘Ic&m(ÇL3ãyfz  )HÙ@Ê?é-7Hš{gþœ¹ræÊ™+g®œyñ7BpÊ9åü-GœåðÇnÐhä!yÈF²” ¤l eÓõÔ„¼‚‡´²”ZüH†D{ìfÄ$ÊC6ò ¤l e)›®±~$ú‚ À(7Ù@Êöï~,ù‘Ó)×<Õ k,ìæº˜.¹þIXSãµ½tQËiü²ß÷ƒ÷;hì ±ƒfgmvÖÆšµyF5vÐû–$Þ5˜µÅß[|kÙ×–}my²/µì\‹G-µxÏ2‹÷,Þ³xÊâ)Ë\-ÏóeoZæjy²/þ±ÌË2/‹¬æEyÈF²‘‡l e)HÙô1âGJ¤B¢®¡ƒ·ØQ×Þrèpt8厧®S7¨Ô êuƒºAݤ®¬ÝxoUn²”MŸ4~¤DR¹÷]Õ´«Ü+«3i‡r̤ÊåŒrF9C›ö3§œöƒ?É‘¨Á\seÌ•1WƼXR.)—”+Ê=(zPo9z*_0¢/å!yÈF²” ¤l åŸô–CÇ ƒu#6R6ò˜û`žc©‹÷sÌ}0÷ÉÜ'sŸxTê CyÈR6²”M×S?:ð·Äˈ愔!e)ÿ$ÊñD\k—W²‘‡l e)Hù'Q”#R6²”lj¡¿„îEtœ:ç„BÊRþI†D_°lDz9;tÎ…” ¤l e#ÙÈC6ò ¤l e)ÿ$ú‚µ¿ØÐ‡ö†¾à/L|i¢/£Ä^Äx‘²ÿ»?£ùûÏ>?“ð›ì)ÿý¼ÿþ,¶ÿ»gêߎ5ù,¾ )~ÕWH“ )µS!_ÝÎÜ­Ä•œìBÊ~?}ü¤tTfTfUfµF±R±šˆÏ‘`4š„kÜ®k®]ÉÉ.¤üøÕÎ5C×5×®ädRþ üJ ¡ºÆå—k\®q±Ê®á„Fqï²v!eWN²+'Ù…”]Hù+ÜŽÝ7×5×®ädRþ úU}$¨––25äÔoZ‘+9Ù…”]wY»î²v!eWN²+'Ù…”]Hù+¨cšÒ$\¤ì÷ÓÇ_á|$¨ÌQ9É=ªu!eWN²+'Ù…”]HùO§ÜädRvÝeíºËÚ…”]9É®œdRv!e¿_<þ ª•ª¥E¹/e.¤ìºÔÚ…”]HÙ•œìBÊþúý`òO¸ ŽŒä"å¯À¯®®Ñ¾2šÑ$Œ&a4 £IÛhÈ£‘>Ÿ>þ RªŽÆ5²ºÑpFws’]9É.¤ìBÊ_AÈçƒ$ÏPn²ƒ”¿’ñ[†.¹vr“¤ü“Þßj·û°~Ø@?ì ŸxËi_û°›~’Iÿ’ºIOÙm?E9¶ÙOó[vÜOS®)7”cûýÈW•‘ìd$;HÙAÊ?‰>³Øöa]cí e'#ÙÉHv²ƒ”]ß9~$ê겂ǨËZÞpÞAÊRvr“¤ìúZòO’G)7ÙAÊ?‰ßÊètɵ“›ì e×I«o<ÖŒù3æÏ´ç );ÉNF²ƒ”¤ü{´‰rÌ•3CÎ 9óâØ½c÷î”ÃÜé)àÚ…”}ÆxÆÚAÊNF²“‘ì e)ÿ$tu‹º¬ ãÎZ:žâì <Ï•›ì eÿ§K®Üd)ÿ$~ËŒ'3žì/i”cÆï£“‘ìd$;HÙAÊ_I1r“¤ü“(ÇŒç˱ç );Hù+±û$sŸÌx2ãD BÊ_‰½)û!é)sŸÌ=ñÄ! 8D‡âS‚ŠCTq+qÅ!°Rv2’Œd);HÙ¹ÐÚAÊRvr“¤ì e'#ÙÉHv²ƒ” ­¤ì e'7ÙAÊRv²“›ì e)û7$?HªÛïo±µÆÂŸn,¬õ€×%×Nn²ƒ”¿å5¡ß׃÷ý;è~KØY›ÕovÖfgmV¿Yóf%$Röﶪ§ë¯ÄKs°ÌÁ²›-^¶øÖ²‡-³±ÌÆâGËl,Ï™e—Z|fñ”Å?¶ßô½i™«e®ö}£z_©ÞW)¼bß—©÷%JO#ªRv2’Œd);Hù'5:ŒF9C‡¡ÃÑáÔpt8uNÝ nP7¨Ô êÆ[—ž&­hï4^`uɵ“›ì åŸôþV-¿¯¨Æœšž)÷‹ÇäH”cþŒù3£3iÌŸ5˜Ic&™4æÏ˜5c®,ÞßÒ2óbI¹¤\RN`ÄWÊHv²ƒ”}nt45šrŽAÇ c¨1è`µˆÈ„”Œd'#ÙAÊRþIªëÚAŒxM¹ÉRv.¹vr“¤ü“ø-3Ìx$å’rÌxèÙ­Œd'#ÙAÊRþI‰„ަFSŽFG£ƒ|!˜ût0÷ÁŒ3K]æ>–ºÌ}0÷ÁÜ'sŸxT²_%»ñ𲓑ìd$;HÙAÊ_ÉÐaÔåÔ-ñ·4êâyÄuBÊRvr“¤ì e'#ÙÉHv²ƒ” ­¤ì e'7ÙAÊRv²“›ì e)»¾–üHj¯°ÄzËa…ý~^zî )»¾xüH‰D¹¡ž\ØUáÉ…5;paM…'ÖTØPã«Í^ÜØK+®Sn²ƒ”k¬k¬¤ìd$;ÉRvòWÂ6š=‚8̈Ãtµƒ”Œd'#ÙAÊRv}çø‘¨ËJ7+ØìÙÍZvQ—½„¸N¹ÉRv.¹vr“¤ü“©(ÇÓoñËeÆ¿\¼q™ñÅ/—¹_ür™ñʼnõtµƒ”Œd'#ÙAÊRþIè`î—_fœèPHù'Q7ߺô”¹_æžØÑˆØÑˆØÑˆØÑˆØÑˆ…”Œd'#ÙAÊRþIÔÅóÏ#ÆRv²“‘ìd$;HÙAÊÎ…ÖRv²“›ì e);HÙÉMv²ƒ”¿üm‡–íÃoiåÊåŒrF¹—Ñ@iŽSbsÀG‘‚r“¤ü“(Î8ŽDGR#Ñ‘Ôsœ¤nQöæRþIÔ­·.=…’À”›ì å¯$ûÓ5ÖRv2’Œd);Hù'¡ªrÀ*Dá0Rv.´v²ƒ”Üd);HÙÉHv2’¤ì eçBk);HÙÉMv²ƒ”¤ìä&;HÙAÊNn²ƒ”¿’žLºÆÚAÊNF²“‘ì e)ÿ$C¢®S;åLÐ9tÎ3A!e'7ÙAÊRv2’Œd);Hù'Q7ߺô{~Yg‡BÊNn²ƒ”¤ì e'#ÙÉHv²ƒ”u›ºXûKk÷¡/C{ؽíáŽø2J<À—ö–ö¯ˆýüxŒ&þ=†ò÷3ïÏ}~>K)ÿý¼ÕïÎÿŽJÜý*tÍu(99„”¿Â\!]‚þ¥ÔN¥5X·3÷oRB×\‡’“CHù+Hé¨ÌªÌªÌªŒf㾞‡n·!åPrr)Ç?×$\ã}09tÍu(99„”¿Âh ]‚þ¥ÕN§5ØZˆQ-Ë5.׸\ãº×\‡’“CH9ôUäPrr)‡n·!åPrr)Ç¿ûÆú`rèšëPrr)ÿ u$¨––25ä‹”¿BIP­ijMïÇ CÉÉ!¤ºÝ:„”CÉÉ!¤ú`rèšëPrr)ÿ {iÈ799„”C_E%'‡rèvëR%'‡rèšëPrr)‡¾ŠJN!åÐíÖ!¤JN!åPrr)‡n·!åPrr)‡r(99„”CHùo»ƒŒ¦n4c##¹ÉÉ!¤ü'h[ÍÏh6F“0š„Ñ$Œ&a4ö{Íu(99„”¿‚”ÊêFà g4Š‘Ç]¤ºÝ:„”CÉÉ!¤_¤¬­ä—Á%×Anr€”’#Q×ù­Æ.¤ü“´~Ø??l vÐ[èGË/¤\m å 79@Ê_‰ÝöS´Ì6{‘òObïl4å†rC¹A/ð½Ú:@ÊAnr€”ƒK®ƒÜä)ßCr“¤\m å 79@ÊAnr€”ƒ«­¤ä&H9@ÊAnr€”¤ü}6Êõµäà’ë 79@Ê?)‘¨ËœÚðÔZa&ù3æÏä®úr› åŸÄcœ™tfÒ™I?Ô8´Œµ;3äòs]rä&Hù'QްÁ½xOXå&Hù'¡#©Adáx€ãÎÊxQ_pVË Bœ(Äñgyr+79@ÊRr“¤ åø§¯%ÿ¤@j$ÕHf<±ÄÄþÒ(ÇŒ'3žÌx2ãÉžs¤ü“ÐÔt0ãùÆrÌ8±€r› å 79@Ê?‰ºøL6u™{BˆC !¤ åŸDŸ ‰(!Å!¦8‡¨âVâŠC`¡Üä)W[H9ÈMr€”ƒÜä)H9ÈMrpµu€”ƒÜä)H9ÈMr€”¤ä&H9@ÊRŽ/H~%õ ±ºÆÖ k|º±°Æ®n†KpÉu› 埔HÔýßûA!Ñ þÖì¬Íê7«ß¬~³úÍC³æ½Œ§Õ°úË\-ÏøeVáòOâ…ßZ†ºÌx0ãÏÄR—¹æ>˜û`Of<õœRþJøVâ[DnºÚ:@ÊAnr€”ƒÜä)W[H9ÈMr€”ƒÜä)H9ÈMrpµu€”ƒÜä)H9ÈMr€”¤ä&H9@ÊRŽ/HÖ¿q„¡K®ƒÜä)%ì£ ]rä&Hù'¡ +쪰«Â“ O®¥WXSáÉ…5ÖÔXNã¡Í^Ü<ßšç[c/•4VÒF9žjÍS­± b.å&H9¸ä:ÈMòWšݢY™fnV¿Y­fÍ›5oVºYAb8å&H9@ÊAnr€”¤|-9þé’ë 79@Ê?Iz]âˆ=”;o9ÍÆ2ãËŒ/~¹øå2÷ËŒ/>¸xÞú[Ì8ñŸr› å 79@Ê?‰ºøÌâ[ËÜ1£r€”}f÷&v4bG#v4bG#v4bG#v4bGå&Hù'Q—}|ÙÇÏ#Æ4bL!å)¹ÉR®¶r› å)¹ÉRr€”ƒÜä)H9@ÊñO_KþJ´Ìi”såœF9gPÎÉ“òOzËi¼G¯«­¤ä&Hù+:‚ŽxË¡²»Rr“¤ä&Hù'Q·¨[Ô-ê‚FNÓÓ¦xɘœ¦ÆPc(7h´Í[ƒž.:€*Ð"9¼È‰Âb$¤ å 79@ÊRr“¤\m å 79@ÊRr“¤ å)¹ÉRr€”¿œ ëäÔOHù'R Ò[Ccã$PH9ÈMòO¢®S7¨ usl—3A!å)¹ÉRþIÔÅŠ_Vlj¡¿ØÎ‹‘cÏœúKõ8;Rr€”ƒÜä)ÿ$ú‚e¿,SD± }ÁÚ_VèØ½c÷/@t<Àñ€—*¾XÑ—öð_ú÷xEþ›çÇc4ùï1Á¿Ÿ÷×Ïãòï§ßŸ·œßßß-ÿ•¸w)¤>˜œºæ:•œœBÊ_µ!a¯Pj§¤¢T¸T¦U«õ«9T}TfTfUfUfUfÕ±½*.RN%'§r )çäÖº&ýFÓd4a©Â©2¥v4®û· ©k®SÉÉ)¤ü'h\®q¹Æå—k\÷ƒÉ©k®SÉÉ)¤œºæ:•œœBÊ©ääRN!åüwß3þ„<RÂUzÏŽSHù+¨VëWò=N!åÔ“S×\§’“SH9uÍu*99…”SÉÉ)¤œBÊù¯4÷d7uÍu*99…”SLN]sJNN!åÔ5שääRN%'§r )§>˜œºæ:•œœBÊ©k®SÉÉ)¤œJNN!åRN]sJNN!åTrr )§r*99…”SH9…”ó_ËAFS7š±‘mÜk®SÉÉ)¤ü´íhF“0š„Ñ$Œ&a4öÑHï5שääRN}09uÍu*99…”S×\§’“SH9•œœBÊ)¤œ_¤¬­ä#‡Ð×’“K®“Üä)ÿ$ê:¿ÕØ•›œ å¯Äþùaý°ƒ~ØB?Zuå&'H9ÉMNr‚”¿»íýZrrÉu’›œ åŸD¹¡ÜPŽí÷3èeþÈ[•›œ å)ÿ$é8Ú†•›œ åä’ë$79AÊInr‚”¤œ\rä&'H9ÉMNr‚”“Üä)'H9AÊßg£Lñ˜LP_KN.¹Nr“¤ü•˜]ãIv3a’Üä)'_KN.¹Nr“¤ü“xRˇ…”“Üä)'Hù'Qƒ¹rfȵ )ÿ$Êa÷7|LòOBo MÀá +¤œ 埄ŽDÀ#øðèUnr‚”“Üä)'Hù'Qÿð¦.þᬥ³–ŽÏðÎ\ºR»”]Â×¥K¶K©Ñ% ]Ê‘.‘íÙ®÷ë;_a$ÜÂ÷ýä+¨p›—RBIPË­–[-Zµ\ÑQè(t:ŽFG££Ñ¡}î¸|ó¸œó¸¼ó¸Üóø¼5 ©‘I½r9éñEÇ¢cѱèXtÌ8¾ê‹m>'´Ð~vîµ?É‘)‘ ©‘ xwàÝwÞx7qÀIZNZNZNZNZNZNZNZηeödßHödßHödßHödßHb»$¸K¢»4t:Øi’&Ùi’&Ùi’&Ùi’&Ùi’&Ùi’†@å--------×Û2{X±‡{X±‡{X±‡{X±‡{X±‡{X±‡{X±Ó;M±Ó;M±Ó;M±Ó;M±Ó;M±Ó; ‘ÔéóJƒ$m]5vÕØUcWƒ_~9Ÿ÷·”H…ÔHƒ¤ Þ3xÏà=ƒ÷ Þ3xÏà=Ã(‡Q£F9Œrñ…Å_X|añ…Å‹],v±ØÅb‹],v±ØÅb‹],v±ØÅb‹],ve±ö‘ýÙGögÙŸ}döÉ·¯r²¿¿÷½ÒA2$t: …ŽBG¡£ÐÑèht4:ŽFG££ÑÑèht :ƒŽAÇ cÐ1èгÑ-Z>´|hùÐò¡åCˇ–ÏÛ²žº‚ÕÅWš‹Ëµ‹œèenyÒÞ.2¦ Ð]€îúâÏD*¤F$jð¢ï¼é;¯úλ¾ó²ï¼í;¯ûÎû¾óÂï¼ñ;¯üÎ;¿óÒï¼õ;¯ýnè0tpá†C‡£ÃÑáèpt8:ŽG‡£CÞm¼µ¯íÆ{»ñân¼¹ë›ËÅUÙE†s¦‹ë³‹¬çVù϶.°õOBûF:‰ŽDG¢ƒ&Øi‚&Øi‚&Øi‚&Øi‚&Øi‚&Øi‚†cã\Á8X0NŒ£KZNZNZηeö°dKö°dKö°dKö°dKö°dKö°dKö°d§Ivšd§Ivšd§Ivšd§Ivšd§Ivšd§Ivšd§!‚2"(#‚2"(#‚2"(#‚2"(#‚2"(#‚2"(#‚2"(#‚2"(#‚2"(#‚2"(#‚²f-›µlÖ²YËf-›µlÖ²YËf-›µlÖ²YËf-›µlÖ²YËf-›µlÖ²YËf-›µlÖ²YËf-›§GDÆ‘qHdœÇDÆ9‘qPd£w5#&4NkŒãã¼Æ8°1NlôÍåâªì"ùÓ?É)©iÐÁly‚-O°å ¶<Á–'Øò[ž`Ëly‚-O°å ¶<Á–'Øò[ž`ËŒøÔ9=rNœÓ#çôÈ9=òZögâµìŸ·e=ýcèptpŒþáýÃAú‡“ôGéÎÒ?p‹äâãèt:Ž@G #Ðèt:‰ŽD‡v?ŸW ¤D*¤F$i;²+éŸdHè8è8è8è8è8è`õ«Üq莃w¾ã‡ð8ˆGsùÔ/2« ^ñ"Ǻ@ã/Ðx}ñ§Z6Z6Z6Z6Z6Z6Z6Z¶·eìʰ+î »2ìʰ+î »2ìʰ+î »2ìʰ+î »²DG¢#Ñ‘èHt$: …ŽB‡â'âv"n'âv"n'âv"n'âv"n'âv"n'âv"n÷—´aWDÜNÄíDÜNÄíÿƒsÿ£sèxùÜ è^BÇêq;·ðv· ¼ý“^ˆVßY}gõ9³tÎ,3KçÌÒ9³tÎ,3KçÌÒ9³tÎ,3KçÌÒ9³tÎ,3KçÌÒ9³tÎ,3K^ú¥—ýÏž~ÿ÷™†¿ŸyÖý©ßÏý¹ÏÏ»ë|…‘ _=ËûTÆM‚_ퟔPÔ±ÏH¸ ^¤ÜÿîßT|–v“v“v“v“vC»‡uÃÕ²&än)_A-ÇmÙÕ²«Œ«ŒS&T&4Óqµßei!åþÇ¢\¤ÜBÊ-¤ü'¨‡Á’I{H{H{H{H{ •f©Yk›ÕÖrßWÀRn!åRn!åRn!å?¡T¸T¸T¸T¸(ÜFÂíÆ}Ïj}йuv+í¹u“v+ÿ¹•ÿÜBÊ-¤ÜBÊ-¤ÜBÊ-¤ÜBÊ-¤ÜBÊ-¤ÜBÊ-¤ÜBÊ-¤ÜBÊý¯?&Á%„„”PZÂH¸-·üâþíëWPËG-µ,«kY]ËêZVײº–ÕµÜü¾/ô¿ò…#Á$P&$\¥£ùÍÏh~Fó3šŸ‹”ÿ„Uá½…WÚWÚWÚWÚWÚWÚW“¹šÌÕd®&s5™«É\M¦rƒ”¤Ü å)7Hù+5ŒF £†½5´‘~ØI?l¥öÒÓ+G‡£ÃÑáèÐŽqÞÍúÝ­ßíúݯٰ…”¤Ü å)7H¹AÊ Rnrƒ”¤ü• …ŽBG¡£ÐQèht4:ŽFG££ÑÑèht4:ƒŽAÇHÇ ò¤Ü å)7H¹AÊ_‰¾}1úbôÅè‹Íû(6$ú2D¯ƒŽAÇ cy’£ÃÑáèpt8:ŽG‡£Ã_‹ŽEÇ¢cѱÒÁôð=2ÎŒ$ãÉ8B2â:#®3â:#®3â:]Ýä5ÿ$t°?/ûó²?/ûó²?/~´øÑâG‹-~´øÑê &¤Ü å)7H¹AÊ Rnrƒ”¤Ü å)7H¹AÊ Rnrƒ”¤Ü å)7Hù+%5’I¤F¾5èUÑ«¢WE¯Š^: …ŽB‡v't"A't"A'Rnrƒ”¤Ü å)7H¹AÊ RnòWbÖ8¥sNéœS:ç”Î9¥S^óOBG »:Ž@G¢#Ñ‘èHt°–‡µ<¬åa-Á>÷qÀC~ôã°þ8ôÇÁ?ÿq¿Ș!c†Œ2fȘ!c†Œ2fȰ+î »2ìÊê­A¯š^5½jzÕôªÑÑèht4:ôtq"n'âv"n'âv"n'âv"n!å)7H¹AÊ Rnrƒ”¤Ü å)7H¹AÊ RþJÌ31º£;1º£;1º£;1º£;1º£;1ºò𛼿&¯¹AÊ Rnrƒ”¤Ü å)7H¹AÊ Rnrƒ”¤Ü å)ÿ$ʱ‚œŸ:ç§Îù©ßóÓù§óü|œ`þ=ý÷óÜŸvÞòyËÝ?_!åùw™ÃWH %¡%ÜÂ÷•v”xÌóažó|˜çÃ^²—ìã)/HyAÊ R^.–^.–^.–^.–^.–^.–^ò‚”¤¼ å%ÓxÉ4^2—Lã%ÓxÉ4^ò‚”¤¼ å)/Hù+-u—ºK]ù÷áI!¤¼\O½\O½\O½\O½ å%ûxÉ>^²—ìã)/HyAÊ Rþ>–å¹ÇµéûÊ?é-—Hê‹ÓŸ÷ßiˆ˜g^|)·oŒPH4H”;o0A4¿þ‡º‡ºF9£ÞÍ#V™ÆK¦ñ‚”¤¼ å)/HyAÊ?‰ºøÇ=ÄýIª›Œ<µ…*ûxÉ>^²¤¼ å)/Hy¹Xz¹Xz¹Xz¹Xz¹Xz¹XzAÊ R^ò‚”—Lã%ÓxÉ4^2—Lã%ÓxAÊ R^ò‚”¤¼ å¯ÔÔmê²3$;C1òbäåïoÕr1Êb”Å(+Þr¤µ,F^Œ¼y1òbäÅþWŒ¼y1òbäUo YN)hR^ò‚”—ìã%ûxÉ>^²¤¼ å)/Hù'©½ÆËˆ0„”Òûo…ÔHjeØ‘_ œ8ć€B×S/HyÉ>^²—ìã%ûxAÊ R^ò‚”åXéÁk‡§îðÔ|áû[ÿM­,Ú–}cѶØÕbW‹]-vµØÐbC‹ -6´XÄâ)‹§l¿åIoaÄÊ>^²—ìã%ûxAÊ R^ò‚”—‹¥—‹¥—‹¥—‹¥—‹¥—‹¥¤¼ å)/HyÉ4^2—Lã%ÓxÉ4^2¤¼ å)/HyAÊ RþIÔå5öþ$ê2^â]O½\O½\O½\O½ å%ûxÉ>^²—ìã)/HyAÊ RþJF9Þ½Í(go9ÍäeF¡ìã%ûxÉ>^²¤¼ å)/Hy¹Xz¹Xz¹Xz¹Xz¹Xz¹XzAÊ R^ò‚”—Lã%ÓxÉ4^2—Lã%ÓxAÊ R^ò‚”¤¼ 寄8þáM]ù¯¡Š¡Š¡шшèbéåbéåbéåbéåbéåbé)/HyAÊ R^2—Lã%ÓxÉ4^2—Lã)/HyAÊ R^ò‚”u—ºì ÁÎ@„"¤¼ å)/™ÆK¦ñ’i¼d/™ÆK¦ñ‚”¤¼ å)/HyAÊËeÓËeÓËeÓËeÓ R^ò‚”¤¼ å)/ÙÇKöñ’}¼d/HyAÊ R^òO¢½x%êâ[ÄRF,eÄRBÊKöñ’}¼d/ÙÇ R^ò‚”¤ü“(ÇœsZÌiaMÿ)/ÙÇKöñ’}¼d/HyAÊ R^òr±ôr±ôr±ôr±ôr±ôr±ô‚”¤¼ å)/™ÆK¦ñ’i¼d/™ÆK¦ñ‚”¤¼ å)/HyAÊ_‰={س‡={س‡‘s"¤ìã%ûxÉ>^ò‚”¤¼ ååbéåbéåbéåbéåbéåbé)/HyAÊ R^2—Lã%ÓxÉ4^2—Lã)/HyAÊ R^ò‚”uÙ¹–kµg )/HyAÊ R^2—Lã%ÓxÉ4^2—Lã)/HyAÊ R^ò‚”—˦—˦—˦—˦¤¼ å)/HyAÊ R^²—ìã%ûxÉ>^ò‚”¤¼ 埤öˆ"(Ò‰"(Ò‰"ˆÑ‰ˆÑ‰u±ôr±ôr±ôr±ôr±ôr±ô‚”¤¼ å)/™ÆK¦ñ’i¼d/™ÆK¦ñ‚”¤¼ å)/HyAÊ?‰ºÌøaÆ3NÜéÄrè2—Lã%ÓxÉ4^2—Lã)/HyAÊ R^ò‚”—˦—˦—˦—˦¤¼ å)/HyAÊ R^²—ìã%ûxÉ>^ò‚”¤¼ 埤öˆÌ…”¤¼ å%ÓxÉ4^2—Lã%ÓxÉ4^ò‚”¤¼ å)/Hy¹lz¹lz¹lz¹lzAÊ R^ò‚”¤¼ å%ûxÉ>^²—ìã)/HyAÊ RþI´·Œhß“ŽÐSMHyAÊKöñ’}¼d/ÙÇ R^ò‚”¤¼\^½ å)/HyAÊKnò )ÿMI>?~öýY÷ŸÏýyÿ›Æ¿ŸuËÕýýQ;Ï&öR­óüaËOPá¸ež×ܯðóO¸=xþú' *cªåú•”>hòT&T¥䓊ü4Ügcø .2#áŽë±ý¯ Ùs©xLö+¨ç•ó'hÊÏm94®çÈû+h2C|þù'¨–ÆRWh\¡qJSe4®ÐR>Hù'¸ÊŒ„;®Ôš>yH?K1 ²!©HM]ªåTËÏ;ÖOPõV™V™Q™Q™Q™¡ŒTŒz¸*³2õ½“PNIé“©óZ‚ÊHésúTFJŸwŠŸàBenÇžÿ“PZ­Õò‹)ÿ„@µ,—iYÔƒ”‚j™j™jÉØZ6ö 埠Zr«çåOu~Ôç)ÿ„” Â2õçšë¯0!áög4‡£9Íáhê¤üZÂHPMÔJéj¢Vµš–Õ´H4HÚù>F9£®ñ[Íó½²ú‘(Çþùaý°ƒ~‚rA¹D[Ò礜üò|ä˜çݵ=xÂÌGRË'(GNPŽzp’rôàЃ'¤|¤ƒdHÔ-t:šºM¹FG£c(7èt u‡ºCÝ¥îRw©»Ô]êî[W}æÙqs“IåŒqXó4mÊ5ué½ÑS£§6”£§F¯Œ^=yÈõR~$Cr¤·Ü iîùszàÌ•Óg®œ„ö½›‡üH†ô–k$õ åÁž‡ºø[:Œºö–C‡¡Ã)‡_^N]§.žòüY×#½ÁuƒºA]¼'ð™d¼Éx“±¥ö³{eõOblÉØ’±%cKÆ–Œ-[ú[N+x|2¶dÉ8xþ€‹” ù–C»@â„)?uÙï!r8„)?’ú\Œ¼XÁbäÅÈ‹,V°Øm‹½®X·b·-F^Œ¼ØÿŠ‘#/ö¿bäÅȤüHô™Ù(f£˜bäÅžXï4u›ºì“„:)?í±û" Cìq/¹þI<9›§Z3Ï…µBÙ{Éõ#©åÁˆ'Åý¦ñO2êâCì`°ƒy{€µv0ñ–Cv0¬ù°æÃšOÜÜäGR+‹¶EÛbu‹ŽEÇòLY?ýÜ$¤~u{üüéÉOP™P™P™<¤"U8ÕŸT­ºs)uÍžk€×PòWàW­)¿ †xºòWЯ<$¨–ÆW¿ºã -ch8¡Q„Vô"åss’‚ —úSªÕ·cOšÒO¸í¤FšØŒT¤f,¥"ÕàEÊç~úø'¤••••ÙëJŪðª?«Z{;vbÏMNþ úUëWó‘ 2£2£2Rz‘ò¹9É?A…w$ÜZý9\BIP™ó‘`R‚ Ë~.R>÷‹Ç?Aµäž÷œ÷)!ås/µþ ª%«kYxË©Ÿ?}ýF¹ð¨«£®ÎáWW×hVG+8šÌÑŽæp4‡Ïߟþ„p»±š¨ç/N‚Êh'Yí$«ùYyÜjZÖ(|û³òÁմܯ%ÿ$i»¹É4’ŒßuºjXHùè‹ÇÔ’Ø??l vÐO¼åVR¢-©‘ô/©«M༻öÑR )¥à·Úlnnò#Q.)GŽvÒ›‘üHÔÐŽ ¤ü“ E¦\££ÑÑèhj :†ºƒŽ¡îPw¨»Ô]ê.u—ºKO—Väñ‡Gƽäú‘Tδ—k~ˈŒq<7øH‰ôþV«oK9zeo_´ý)e$?qy–òïÑ®ž:óçÌš3WÎ 93äÌK|ˆ>ô >oØ žzC{‹òOJ$t5Œr†|0 þF)èÀ/¯ˆ7¬qê¾þo°ƒ§Ä÷àµ<£…”.¹þIŒ2µÝß/ÿ$F™Œ2[2¶dlÉØ’%#J<>[âûɈ’qðÔ¿×X?:Øsˆ„”Hù+áûYÔÅ÷ŸŒäG¢nQ—ý Ù?"ˆR>ÊM~$­B±‚Åx‹ñã­xk¨ÅÈ‹‘ûn1òbÿ+F^ìÅÈ‹=¢Šž2žQÌF1Å;H1ÅîXýÖ¥/ìŽÅNCÐ#¤|”›üH´Ç>Dìq¿–ü“°:â!寄Ï43>ìƒ/ ¾0øÅ|aðóQŒ#¤|ôÅãGJ$ʱú”ÇÕÖ|xæ k><ó†Õ'Œ¸—\?’z¿ÌÁ¢m±ºEÛÒòbM‹ -~´XÎb/Ësf±—ÅSÿØ~kÐ?ž¡+Û0"Š››ü“Šß¿•íÞÜäŸÔ”kÊ5åd7#ù‘¨!KRþIï‹$:–K¹E‡žˆ7#ù‘ )©‘¨{¨{¨{¨{¨ËÛì9o]õô­­Ì+Qw)·èØ÷·jÙ‡éi*¤|ôÅãGâúPŽ^}ùß›·Þ#ì}÷6£†¼ÌÞr“¿ÅÍM~$~{Þß¾oõ”ã•ßrïÛ¿|ëf$?5´ç)ÿ$õ™wv!å£k¬ ‰ŽD§¼Õ¯õ÷;Ç?©¨[Ô-êâ^ÔÅS¼©Ûô´iE»¼«ÜÜ䟤§šÜ/?å[0¶`lÁØ8+¸Éı cãàÀ890N î5Ö„|?C |!†ºø~ uñýXê² ÄR—ý Ø? EÈBÊG¹É?©gDŒ7o2^"#.1N9Œ¸DHù(#ù‘¨ËÈ9ý¸Z?Ò[—ž2œ…)e$?­ì[WsPìŽÅ®RŠÛonò#R#qT¦^Hù€”¾–üHèʼn Œ¸Éˆ›ŒɈ‡ŒxȈ‚Œ(Ȉ}ŒˆÇˆnî5ÖÄ8˜Éb& k*öb{î%×?‰5oVº±ñf¥›õmVµ±ç¦Í 6+د^V°YÁa9«R>ºÆú'±FœàG8FÌeœæÑ×ýÎñ#Q—gÅuÙ³‡§±™ò)å&?­0òa”‹u.6¹Œrå2¶elËØ–±qFt3’)¨Ëóˆ#ã¤Èˆõî5Ö„ž=ÄBʤ|ôãG¢.GÕ›ÔeÏ^b3âD!åR>ÊM~¤ÛÊÍM~$G*¤FZIN]§‡âœiÝï?uƒºAÝ .韠nP—ÓuN¼œ/!壌äG¢Nï?šƒ{¡õ#Q·èKÑJ½­Ð—¦½¦/M{Ú‡œxòæ&ÿ$Ù¤1Þ/?åŒrF9VæÈ·œÓ¼›‘üHô€•9ŠnnòOb=8ásxsÖçœõ9g}ÎYŸòOBsÏYßÍH~$ê2ã‡çüOHù(7ù‘ÔŠ)R>ºÆú‘I­€…nFò#%u9´èf$?u¹Az8ÿR> å£ÜäG¢fƒs›‘ü“°5c8;tÎ…”r“ém…¾ í }ÚӳщÖhý^cýHÉ‘ é­!½Äí÷;ÇD]ָ݉ۅ”.´~$ê=e‰ê¨þf$?­`ÅÎZÕ )òQnò#Ñ kI¤ïDúN¤/¤|@ÊGÉt) é­«ö85R> åR>ÊM~$Úc}¡“BÊG¹ÉD{¬ù=gµýüx–çïçìƒ/ ¾0øÂà ƒ/ ~>xÀàÓƒOOºÁ“‡¾ÌÛVXýÁW‡5ì~°ûaõ #î×’s°Ò{¯¶~¤@¢CÝEÇRcѱo9Þ8õ<ºW[?¯¡z" )¹ÉR6]mýHÔ=Ô=Ôå½ö(R6òïõ—ö†ËoñÆŸ¤^ã0úlò#!åŸH”£WF_Ì(§8YHÙtµõ#½¯êô@þv¿–ü“èëÙ-¤ü“x«§Î+¿åþ÷ö8pj¼g ¸S7ÐÔt剎¤¾Àk½²‘›l eÓÕÖDÝ¢nQŸñ¦§xËXå^rý“ôì¶x?%1ˆr“ ¤ü“(ÇÉG0¢`DçBʦK®RSƒÞ¾ø~àûï{Nàû1ÔÅ÷c¨»ÔÅgb©‹÷„"då&HÙ@ʦK®ãMÆ›¬ Š¡q‰²‘›l e#7Ù@ʦ«­‰ºŒœã!e#7Ù@ÊR6r“ ¤lºÚú‘ÔƒbäÅîXz_Pn²” ¤l e#7Ù@ÊR6òWÂ&‹“8"(å&Hù+aÄHF<¤Üd)ÿ$ú‡…ç‡;FtcÄ4Bʦ«­É‘èÖÔ¬~ÓƒÆÆ›46Þô YËf-›lô6z›äXF¹ÉR6]rýH$ÃÊp‚#¤lºÚú‘ÐÁ³‚èK¹ÉR6]mýHÔå©1ìÞDiF”&¤l eÓ×’¿Ò2Êå™Çá-£äxH¹ÉR6}ù‘4ˈ–q\dœ )›.¹~$jÐûõ·:ØŸ‰ÿ„”Üd)¹ÉR6]mýHÔåy´x£1 )HÙtÉõ#R!$WHÙtµõ#%R#Q7¨Ë™9§[BÊFn²” ¤lä&HÙ@ÊFn²”MW[ÿ$Nï?ïÈ‹ºE_Š‘­})ÚkúÒ´×´§]À‰'ï%×äH‰$mĉÊM6òOzË©/Gu¯¶~$z®ÑÜK®‰¬Â‰·:˜{Îú„”Üd)¹ÉR6]mýHÔeÆ3~˜ñÓô”?Ì8¨w:LÈBR6]mýH‰ÔHÔMêbuð"!e#7Ù@ÊR6r“ ¤l e#7Ù@ʦ«­s`ïȱ5ÃÖ¬yÓJÓ—¦½¡/C{C{z29Ѻr“ ¤ü“ ‰ìno é%nR6r“ ¤lºÚú‘¨ÔeÛ%–R6²‘›l eÓÕÖD°bg-‰ï•›l e)HÙÈM6²” ¤lä&HÙtµõ#9R"õ¤sNM…” ¤l e#7Ù@ÊR6²”Üd)HÙ@ÊRöóüxåïç>?óþ:ïïŸÉó›ì)û¿»³ý în•ûw/®k®]ÉÉ.¤ìÿî ïWH ·÷ÍÖ•œìBÊþï¾Ì~ýÊ[‚ª‡Ê„ÊH»iw“p]síJNv!eWr² )»²ÿs)uÍžk\÷o\×\»’“]Hùoªí#!%¬VÃ$„•ѸBã +4®Ð¸BËÒEh¡%½/„.¤ìJNv!eRþÚÇ-s”ý~0ù'ÜZ))ëIµœ´Ó.AÕ[eFeFeFe†2²×•Š5 2áU­½µîQ¬ß&ÿÙ¹”ÞƒV¿Lþ *³*#¥%]…Šm ·‡)»²ß&ÿ„ÛrË.Rv]síJNv!eWr² )»²ëškWr² )»’“]HÙ…”]ÉÉ.¤ìBÊ.¤ü'h8£Îú<êꨇ£Žz8cTFs8šÃÑŽæðþ%ªß&ÿ„Ûòj¢.RöûÁ䟠2š–Õ–²ò¸Õ´\¤ìJNv!eRö/RÖÖö9ޤ=í£A*7ÙAÊ?‰ºo{š^å&;HÙõµäG¢;è'('Tn²ƒ”Üd);HÙ¿øØ‘ôÛ£æ¼;ø Êу“”KÊуƒÞójÓæ£Üd);Hù'¡£ÑÑ”kÊ5:ŽAÇPw¨;Ôêu—ºKÝ¥®v!e);HùûlÔxL{ëýZòObD7tòWê¿•Ó(7ÙAÊ®¯%?åä®BÊÎ%×Nn²ƒ”Üd);Hù÷l§=pfÈé3CNâC<ð $BôÚBέÜd);HÙõµäŸ„ç௺äÚÉMv²“›ì e);—\;¹ÉRvr“¤ì e'7ÙAÊRv²¡ñAJ$ÕHö—4Ê1¶dlÉØ’±%#JíäBÊNn²ƒ”¤ü“ÐAïóí3»O²ç$¾Ÿì9‰ïâ]ríä&;HÙÉMv²ƒ”Üd);HÙAÊþï~-ù‘Ô^1Êb¯+Æ[¬[1òbäÅÈ‹ý¯’ºŒ¼ØÿŠ‘#/ö¿bŠÝ¢˜b6Š9(vbi„”¤ìä&;HÙAÊRvr“¤ì e);HÙ¿ Ù‘¤ƒ8â~-ù'1ãÏ4>3ìCƒ/ ¾0ø…òO¢.0øôàɃ Ö>ôeXý‰·œF4¬ù°æƒÝ«?xÀ=,þ¶ÌÁ2òEÛbu‹Ž}ÛÃZlh±—ÅgOYìe±’Å6–gèb‹m¬lÈ#î×’) ‰rM¹¦\S®)'½ÊMv²“›ì e)»¾–üHèXÊ鉨K®Üd);¹ÉRv²sɵ“›ì e'7ÙAÊRvr“¤ì e)%yž‘‡oQ†ò÷ýXÏÕûµäŸ$?Rn²ƒ”]_KþIôÅŒrï›·âdå&;HÙÉMv²ƒ”/ëªáôÀ™!§Î 9=p£œQŽ8zýÕ&?7ÏœºðήK®Üd);—\;¹ÉRvr“¤ì eç’k'7ÙAÊNn²ƒ”¤ìä&;HÙAÊRþže0Þx>ô,³x?‚rŒ-BÊÎ%×Nn²ƒ”Üd);Hù'¡ƒÞÇÛç¦\£ßA¾xE° ÄPw©Ë.øL°ÄR—ý ömå=â\¨^É‘Þ3"‰/q‰²“›ì e);—\;¹ÉRvr“¤ì e'7ÙAÊRv²sɵ“›ì e'7ÙAÊRvr“¤ì e);¹ÉRv²ƒ”¤ü•ð_A¿zÖï+¸„«ý~óé+”„–0nË—?Ç¿ë–_Á$¸µ¬‘˜†b‹i0¦Ñ˜†sö+¨åVË­–û¶|=ãOHÍb}$èWê¡«‡®Þ%ý %¡%Œ„Ûò]×?A= õ0ÔÃPC=¼÷J}µÜj¹Õò¨åQË£–G-ZžÛò=qþ &Á%„ ßnÜ·˜¯0n7îËÌW8L‚K 2S™MÉlJfS2›’ÙÜ·š¯q«0f-K(YBižKó\šçÒ<—æ¹wQËšçÒ<—æ¹4Ï-§»®_Aî *¬ynÍskž[óÜšçµjYîÙrÏ–{¶Ü³åž-÷ìTË©–÷–9þ½ñè+ð«nõÑüŒæg4?£ùÍÏÈï_~íZžJBK ·åÕd®&s5™«É\Mæj2W“¹šÌó‘!þI”H…ôÖIÚ#ÎG›Äùh—8mçSè(t: …ŽBG¡ƒýùÓèhtÈ’Ïý ǯ䤃dHÔÐèªì Ã9ÓÁõÙAÖs«ƒüç[Øú+iS8öá9£má˜ö…c¬‡±¬Ç°Ãz ë1¬Ç°Ã3`x Ï€It$:DCD1DCD1ìÃþ7K¹}ËÑlc°Å6ÛXlc±Å6ÛXlc±ÅÏ?_ü|ñó­·Æ Ñ+lc±Å6ÛXlc±Å6ÛXlc±Å6ÛX=Áô-åà ì s9ÎÁµØA6s¡ƒ¼æG8:¸4;ÈuuõÀêVù϶°u€­¿çóŸ¦\S®ßrôeèËЗw^†¾ }t :ƒ=ÙýÈ®ôUåà2ì ‡9@Ï?ihE{ŽÀtp}võÀê ÿ9ÀÖ¶þJM¦ów˜¿Óo zÅü©:‘ª©:‘ª©úaþów˜¿Ãüwþ‹EFú–rpv¹çàZì ›9€ÐA^s€£\šä:ˆ:Èz`u«ƒüç[Ø:ÀÖ_‰y1æÅ˜›·}a^Œy±w^–¾,}Yt,:‹í˜NÄíDÜNÄíDÜNÄíDÜNÄíœ;:çŽÎ¹£sîèœ;:çŽÊz`u«ƒüç[Ø:ÀÖ_©(×”kÊ5åð Ç+ü¥~xï Îû‚ó¾à¼/8ï Îû‚ó¾ ‹¯ƒ|å3™Ëp€sàç=è9Èf t¡@è¯ÄÜsÌ}0÷ÁÜß4¿j÷çã9y™rþ{fúï§ÝŸ~ÆýyËÝ¿¯N1åüwÿfå+”„–0náKòß=Îÿ &Á%„....ÖHîßl|…–0ÔùHPË£–G-ZžÛò5ÖSþ¤ôþaÂWh #á çÒÿ¯`\BHPa­LhiBkZœÐêÜï }…–0ÔýHPË«–W-¯ZÞÛòeÊ_¡%Œ„ÛòÍeJ¥2§˜rŠ)§˜rŠ)§˜òŸ K(YBÉJSw߆¾BK%µljYó\Z”Ò¢”å2åSþd %K(YBÉJó\šçÒ<—æ¹4Ï¥y¾L9Å”SL9Å”SL9Å”SL9Å”SL9Å”¿Þ©–åq-íRËr¢–µœ¨åDÍv {nYÂh2ïߢ~…‘puv™û©)¦ü'h2G“9šÌÑdŽ&ó2åSN1åSN1å?Av¸²Ã•®ìðþ­çWPË©–µ}­¶¯eûºLù'i·ûvRmaº;IgN˜r”¦œ0å„)%¹óù°Û~´™OÓ+mgçÓèt :š|1å„)'L9aÊ SþJ²:}V9¹ ;IbN>µœÜ$6'we')ÎIŠs”¦œ0å„)'L9aÊ SN˜r”¦ü•: †kfè0t: †CBžX‡GÖá™uxhžZbÊ SN˜r”¦ü•è‹Ó§/ÎJ;+í¬4²ã¬´;:X“cMŽ5ùPc¨±ôjéÕÒ+V:Xé`¥ƒ•V:Xé`¥k ¬)°¦Hjä[£iè¾Ês÷ðà=ÔÌÉé|ÿºŒœàDÙÉSþJøÂà ƒ/ ¾0´òY7H:=Cíâ½ìJ®&¥ðFvw+Òéx+»6é6éö—ŽZñÖ†Ÿcø9†Ÿ#¦¼‰DÞD"o"‘7LyÔ7LysBõæ„êÍ Õ¦¼aʦ¼‰DÞD"o"‘7LyÔ7LùQÔ™—Óõµm(oÈ;äÕ&ßúhrë¤ëVxr‹)ß‚K­.—PϘµ˜ò-tÉO9¡† µ+Ô®P»Nxr‹)·Ž³ngÝbÊ­¨äVTr‹)·˜ò-N“ÏG“[']·Â“[LùºT*P·(x˜rëóǭϷ“[L¹uœuë8ëSnE%·¢’[L¹Å”BFNºn…'·˜rëóǭϷ“[L¹uœuë8ëSnE%·¢’[L¹Å”SêZšcšlš}[½zÎl1åVTr+*¹Å”[L¹õÕãSnE%·¢’[L¹Å”[çZ·˜r‹)·Â“[Lù'F ‚&c«{[¶z˜ò-t)´|°ŽtJ(ú°Õ‡­>M´Qg/¶õùãÖç[áÉ-¦Ü:κuœu‹)·¢’[QÉ-¦ÜbʷЪuÉXuÎuÜ0å[WeŸ:纉Nn˜róÕãæ«ÇMtrÔ›“¬›“¬¦ÜÄ$71É Sn˜ò£ÎHéœë&:¹aÊÍW›¯7ÑÉ SnN²nN²n˜r“ÜÄ$7L¹aÊR­L ˜rs’us’uÔ›˜ä&&¹aÊ Sn¾uÜ0å&&¹‰In˜rÔ›3­¦Ü0å&:¹aÊÍ“›s®›èä†)?Š«z\èœë&:¹aÊÍW›¯7ÑÉ SnN²nN²n˜r“ÜÄ$7L¹aÊRoxó¶æX˜cW>ÜM †˜rs’us’uÔ›˜ä&&¹aÊ S~”jX]ä÷[£([ \’`6#ÌË`Œ‚ŒQ0Cy‹)7gZ7L¹aÊMtrÔ›s®›èä†)7_=n¾zÜD'7L¹9ɺ9ɺaÊMLr“Ü0å†)ߊ¹Ÿ´(iGRûüjE$‘¬9‰m$¶‘C °’ÂJêÂÄ^ {ÁqSn˜rÜ0å&:¹aÊÍIÖÍIÖ Snb’›˜ä†)7LùQ†"o’÷sˆ±Äbý«"/kD}sQʾ3¥ yé]<… ²ðANˆ˜rÜ0å†)7L¹‰Nn˜rÔoÅ3oó\ÀCY8$ dá‰,\}1¹9纉Nn˜ò£¸Ê\hz·)¹é¿.®2§›u·7é6阿ͬÅmQLrÔ¦|+ì~˜ƒx1 7fáÇ,™…'£s®›èä†)7_=n¾zÜD'7L¹9ɺ9ɺaÊMLr“Ü0å†)?J¯QWò[r·"oqµ¸[‘n“n“n“nS«¦VMÞÖ®&¯ÖE'7L¹9ɺ9ɺaÊMLr“Ü0å†)7ß:n˜r“ÜÄ$7L¹aÊꪅ Sn˜rÜ0åæ‹ÉÍ9×MtrÔõ]U¯í0­fbÊÍW›¯7ÑÉ SnN²nN²n˜r“ÜÄ$7L¹aÊRo¸Ö E'7L¹ùêqóÕã&:¹aÊÍIÖÍIÖ Snb’›˜ä†)7LùQÔ «óÍoô=~Ž˜r“ÜÄ$7L¹aÊÍ·Ž¦ÜÄ$71É Sn˜rs¦uÔ¦ÜD'7L¹9纉Nn˜róÕãæ«ÇMtrÔ›“¬›“¬¦ÜÄ$71É Sn˜ò£TgvŒdÝœdÝ0å&&¹‰In˜rÔoŶPb%‰•¤‘{IìHL¹aÊMtrÔ›èä†)7'Y7'Y7L¹‰Inb’¦Ü0åGмìPái‰)7L¹9ÓºaÊ Sn¢“¦Ü0å&&¹‰In˜rÔ›3­¦Ü0å&:¹aÊ Sn˜rÜ0å†)7_Lnιn¢“¦ü(®bx2†×"¦Ü|õ¸ùêqÜ0åæ$ëæ$ë†)71ÉMLrÔ¦|+Z¹Yõö·ÉHoVšÍHoÆw3ª›õe3–›õe³ªì!ë˦_šõ¥åß‹)7'Y7'Y7L¹‰Inb’¦Ü0åæ[Ç Snb’›˜ä†)7L¹9ÓºaÊ Sn¢“¦ÜœsÝD'7L¹ùêqóÕã&:¹aÊÍIÖÍIÖ Snb’›˜ä†)7LùQª3;FÆN‘N²nN²n˜r“ÜÄ$7L¹aÊÍ·Ž¦ÜÄ$71É Sn˜rs¦uÔ¦ÜD'7L¹‰Nn˜rs’us’uÔ›˜ä&&¹aÊ S~T£Èä òyƒ¼AÞ oRÓ¤”¤”M)›¼›¼ZYÏÒñ,ÏRL¹‰Nn˜rÔ¦ÜD'7L¹aÊÍ9×MtrÔ›¯7_=n¢“¦ÜœdÝœdÝ0å&&¹‰In˜rÔ¥±\à‰ŸX²?dÝ0å&&¹‰In˜rÔ›o7L¹‰Inb’¦Ü0åæLë†)7L¹‰Nn˜rÜ0åæ$ëæ$ë†)71ÉMLrÔ¦ü¨F‘«3¬Î’¼IÞ$o’·¨)ÔŸZL¹‰Inb’¦Ü0åæLë†)7L¹‰Nn˜rÔ¦ÜD'7L¹aÊMtrÔ›“¬›“¬¦ÜÄ$71É Sn˜ò£ E^Æ ¿ÝñÛJg§ÒÙ©Sn¢“¦Ü0å&&¹‰In˜rÔ›3­¦Ü0å&:¹aÊ Sn˜rÜ0å†)7L¹‰Inb’¦Ü0åæLë†)7L¹‰Nn˜rÔ¦ÜD'7L¹aÊ Sn˜rÜ0å†)7Lùw!Þßñ™¿·×ç|7yÎY×sâ“ç0åß¿yò¿7œ¿óÎ<úhòè¤ëQxòˆ)ßâÜæPÑG“G']“GLù§œó6;:ézžÞ S˜òÀ”‡èä)Ly`Ê·bÝôЦ7pH<0åG©ÎÍø6#ØÌ…f.4s¡™ ͽwÿçßsý]Úž‚BâdyÁ#J¢%Nš— <"%tÉL"$”¦J¼•x+±Z`j‚© ¦F˜ZñNà[Œê3KÂ%”kN®wsþç^ï_?<¢$Z⤠»$4¦Kn!¡4¡ÄjW¨]¡v½M¾Å(ZjÅ{ÒõO¼áÉX.'WÆiW¦§.¥ ,X'M]ˆ”8‰K–ðn?Bi–Ò¨ÇÞWŸG„DIl‰Óö÷ çʵº…Fç O~„Ò¨3KFR2’’‘”zõ z„ª1£™¥©¥Nx?šü;дS÷¾´Ï„T®4‰P®T.ÍÁ­ž™ò#”K“hkznMÏ-3Þ,ê±=,'W«W[&úþYì³X\JÃ:Ò§Z}ØêÃV¶úp4ÑFå¼çC>¢$”F5êŸQ·¼Lù²ÌQ·Œ«Q·ŒºåeÊwO\2Öõî¿¾Š«²Îü*ÒէȱɱɱI·IפkÒ5éºPÔOÿD'¿Š¼ZÓÖë{¾Jw[µü*Òé’tIº$:ýD'¿JµZ²ËÔ_¥¼¯Où*ž3×F©<ÓRq¢“_¨B‘w‘×ÈËñ¤9Ñɯ"¯‘W+Êaʯ¢Îô©éŠvhn-žY‹‡Ö⩵|}J9»rjêF:#uq'“NÓóD'¿j¡EÞ oŠ»aW>äÒiÁ8ç\¿*P‰R­BO‚Ô_å(òÒCïšá':ùQŒB`aÁxÎIàcÌÐ`^ò>LùUäÝäeÖò„>LùUÔ™>MÚ›ëûM%'ëKb»Éè'Ö™Xg~^vðF'¿ ×ÍUçÄ"‹HÚ‘Ô>¿:³ú$‘¬9‰mä|þ!y‡¼X .Âaʯ T¢p*±œ—)? Â8_L~éhe±ÖÖ^¬u/S~«^%yYÿ*É‹%ë_a‰ÅúW¬U´ë¬Ïuæ©×q¢“_E^úä0å[á„,¼Ã”_å¨Dj£¾òÔ“›UtÓC8& ‡dáˆ,<‘…+²š»5ãÖÌ…f.4s¡™ ]Ÿ"sº™É½IÇLnæocíݤc®6ÖŽs¢“5äeŒ†µ/fáÆ,ü˜…#³ðdÖpùÊc¤‡‘ôùbò«U(ÒñÞõþuÜ«•(ò.ò&ª¸[q·"G‘n“Ž×³k“n“®©ïjø9':ùUäU/&¿Š—K­‡)¿ŠM'¯žˆ†ïs˜ò«Èä òy“¼IÞ$¯žQ‡)¿Š:Ó§‹—ÓÕ´ƒwÐ5äÓÌQzŠŸs®_Õ(Ò%騋%é’tšµ':ùU‰Ú(òòjî sìÊ5§ ?ç|1ùU¤3Ò1¾ø9†Ÿcø9Æë¹áñ¦ü¨Íošç':ùU”‡…áñ¦ü*jÀás®_¥¼¡Øð‡S~U  µQ¢<Ú´-°ØÊÃvƒÑ¬ê0åWq·¢ÎÌx|©Ã”_¥¼lœs®_¥û&«Obx<‡)¿ªQä5òb%xA‡)¿Š¼Ø žÑ‰N~¥`CIŸ²…qι~Õw•»aíÉZ—ìI%«^²+•¬ÉUb‰Éú—X">—ásèäWQ Ö‰f쥜èäW)/û*ÆÆÊaʯ ¥ÐÏì·.ÆŽ‹±år˜ò«Ô“ÅÚ„/exP†ßdøM†ßdø/†¯bø%':ùU¤£6-ß´|ÓòM{7­Ü´rÓÊM+7­dŸä|1ùUÜçÛf¤7£ºËÍnFp³ªlž›õ…m™Ã”_¥¼ìÜs®_ÅÞ'£Ð¬ Íx4kD³F4cÔ<5šg~Øaʯ"/³§™=xi‡)?jSgú” ¡óÅäW±-ËŠ9¬9ÃèÏ"ëË0;ì~X_»,b°6ŠÎ9×¢ÎÃ*0XÄàñ ¶1ØÆ`Ã*0X >áaÊúv­¿mkžLóm\¥`CøŽÎ®Õ9çúUßUí__²öüª@мNÞ o7Èä òyå_¦ü*꜔·É«•Õñ,ÏÒñ,S~5hJijД7Ô`(o(o(V°d“ç‹É¯ T¡Hg¤3Ò陥uÈñr}=Çß=LùUäO,új5÷¥¯VS ý²è—5Ô€~YôËúú[Ã{=ÑɯZ(C*Q…Ryì¾s®_õ]ånØòaʯ¢dì¯ùœsý*ò&y“¼IÞ$oÑÊ¢”¢ÎEyô®ak0©ü*r`k6Ô€~¶¯Ÿõ„8Ñɯ2”£çÂ:ñÑOtò«(…uñNüöü*ò2nøíþa5üvg§ÒÙ©[ùëïÌËu>¬ü—PÉjÉ™j·PÉ£’ç”üþéÆ#–„I¸DHœ’ÉÿDªœV9­rZå´ÊéSÎÓŸp ‚o‰–Ï)9Ô«¡^ õj¨WÏ®÷ú{ÿHø[¢%NÉçïKÂ$\"$Tr(±† 5©!H Áy÷ú AjRCP‚Òœ·[¸„¬ÔS¢$¶DK¨du]©Îgv+?B‰e½¥~Þ²„-Kز„-KØêç­~Þêç­~Þêç­~ÞªóV·ê¼Uç­:¿±ÌP54g‰^"Ñ?!ÛØ²-ÛØ²÷H¦G¨[ÕØª†ìyËž[ÃtörBkU¬U±VÅ:XN´ž +Ê%±$NÉ#ÀÈF0êÌÑ˜ŽÆt4¦£1õϨFý3êŸQÿŒê¼.YÀzÿ’óU‰*9X/­çËʯZ(CqáÃ=†{ ÷\KùS e(Ýc9œ<–“Ãɡٽ–¦÷Zšßkif­¥aX«¸†ïÙð=¾§Ã¢F;Œví0Úaš’‹'ʉl~ÕF©Væäpr89œþå VA­‚Zµ j•”¼)k²MÉ›’5á–k•8_V~•£¥{¸&Ù:^Ô£¥{xräÉ=’{$÷ <×¶Å“mñh{¾Ýyëø+ÂiXªÕù «G-”¡(îA;‚víÚùå VI­’Z1Wƒ¹MŽ&G“£Égôž ò*j5ÔŠÙÌnžÒ‹Çôâ9½xP/žÔ+±ºÄêRËïÊ dl#±Ä6ÛHl#éÓÄb‹M,6±ØÄ6ÛHl#±Ä6’>-l¼°ñÂÆ ¯õ娍F©V…5Ö„±ð#ŽÄ“X¸ _báL,¼‰…;!}+V=<Š…K±ð)~Ьzµ©Õ¦V¬Å(¶VØZak…­¶VØZakÅ“¤x’Oœ•…·²6c´£Ímæ%îÈÚ<6Ï…MmzhÓCÍ*ßÌýfî7÷hæ~óÔmfr3“›™ÜÌäæ©ÛôUÓWM_5}ÕôUÓW80 fáÂ,|˜5øÃ|æÛ0߆ù6¬aÃìfÏ0{†Ù3Z‘ìÒ\°KsÁ.Í»4ìRïÚ¥Þ5|ç1|ç±+É‘äHr$9’M­šZ µj5Ôj¸Çpá¼Òáï)¿*P‰*Ô—£Qª^á^­$G’£ÈÁ[éâµtñ^ŠßdøM†ßdøM¶´²¾áû¾áû¾áÉžŒáÉžŒáɘmî±¹Çæ›{ðÂn›{lî±¹Çæ´ƒ÷åóeåWmT£È¡5Ö\k¬¹ÖXs=éÌõ¤3îÜ#¸Gpà´Ãi‡Ó§þµ£©US«¦VM­4W-´ŠZhµÐ*j¡UÔb}9U¨j”jÅNÎù²ò«(Ù)Û¬.°º(J.JÆ6Øs06Œ]cÛÁØw8ßS~•¡¨/G¡6ªQª^%6žØxbã‰'ÖĦ…á7~“á7~Óùžò«(™¹ŸÌýdî³blˆ;"Æ–ˆ±'bɪ—¬zɪ—¬z9_jÅV)ÆNб•bxU†WexU†WexU†WexU†WexUbÏ·ÂÖ𪠯Ê𪠯Ê𠬾¼o'ïÛʣ׊^Ãk1¼–sö­6}°éƒÍüØÌM7uÞÔ™ c‡ÆØ¢1öhŒMÃÏ1üÃÏ1ü±çu“_C9*P‰*ÔF5J÷hæG³æ4íhÚÑ´£iGÓ6uŒ]c[ÇØ×16v¬Yš•¡Yš•¡÷—ƒZ±Ú6«m³Ú6«-^šá¥^šá¥Y;½<ã‡güðŒÖÎÁ6Øk26›ŒÝ&c»ÉØo:ßS~9þÛ}&G}9¨¶Á&•±KelSÙü·eýíY³iýíZÛÖß¾õ·qÍÎõ%kòKÖäxŒŽÇèxŒŽÇèxŒŽÇèxŒŽÇèxŒÎ.˜ã1:£ã1:ãO}9¨UQ«¢VE­ŠZmJÞ”¼)ySò¦d¶í/öí/6î/vöCÉCÉCÉŒûpΞÛù²ò«U(•·À Ë)/(Os՗檯àÁ=‚{÷î±É±ÉAÿ-úoí/µ¢ÿý·è¿Eÿ±çæ¦UÊM«”›V)·E=­Üô´rÓÓÊMO+7=­Fä@¢»ü*JvJvJvJvJvJf@K[r+r9êËA­6µÚÔjS+FÁš’›’›’›’›’‡’‡’‡’‡’µb:^¸ã…;^¸ã…»3Fì;:ûŽÎ¾£ˆó£(oQ«Š³ª8«Š³ªà£;>º³SéìT:;•ÎN¥³SéìTþµbUqÆÃg<œñpÆÃ™¼/8ï Îû‚ó¾àÎx8ãጇ3þ+ˆÏWŠj¬ Á*¬òÁª¬*ÁªŒ4oΛƒ³ãêì¸:;®Îîªèò‚./èò‚.ßêe¿ÿì÷ßw屿wŽØaÊö÷öËïß“þí“ß¿qò¿EÚßù+mS¾EJ”Ä–èWœ}S¶¿³ÜÂ$\âÜô0å[(Wm •\§b‡)›˜²‰)›˜²ý¹ªqfÙ-ZBiÖ%qî~þèù'J—‘*¹UrŸ’Ï[£‰)ÿD, “p‰Óöó~w åR¯†zõÄJ™˜²‰)›˜²‰)ÿ„ª‘²…óçÁ·P»$ÎÝS5<ïP·Pv AjR&‘‚ƒdçÃÊ ™¢  d%8/-?¡j”:ªÔQ…IGIèîªêÙÚµóaåG(»¬w«ª[UݪêVUÏvë-”f)Í"MIœ»ŸWS61eS¶ó=åG(M(fÜ a6…0›˜²‰)›˜²‰)›˜²‰)ÿD+W+W+—ìùlúþ„Ĉ-ѧª­ª¶L´5G½:êÕQ¯Ž¬wd£ŽuÔ¨£Fsgd~#ó™ßh1š)£™{þJôZòÔëRÅ”¥ð=èU ¥uöøÆ·*òV¢ ¥5òb=»©S6˜²Ý„8P‰*Ô—®QªË·|/§§§§j¿¨ý¢ö‹Ú¯M:ž߃à{ð(XkS­ËbÊS6˜²é{ÊZ¤[¤[¤Ó¬T³Á” ¦l0eƒ)LÙ`Ê· òyƒ¼AÞä7ZnMýšúaa¦ ·xÊ,×Âq¾¬üªF©VN œx.HG­Ž·õ(Òa§<Õ~Šºô§(¥)¥)¥U O91eƒ)LùVF:#‘; fY0Ë"?e(G©OƒvD‘®HW_ºDQ«þõ£½ñµw¨ßp7fm0kcÈ;Ÿ ¥«‰í&¶›Øn꙲x ‹)LÙ`Ê·¢_’~Iúå1ò¨BQ—ý©FQg-œç{ʯ"ý’ôKÒ/)¯RLÙ`ÊS6˜²Á” ¦|+#¯‘—õùÄÖLÙ`ÊS6˜ò­èI|‰…3±ð&î„¢˜ ¦l0eƒ)LÙ`ÊS~yéÝ¢w‹™WôiѧEŸÖ×§CÉx_bÊS6˜ò£HG¿°µdì-ý”¡T—©O*Qßö3éè—¡_f騧fµÿ¶¬Ù³V{Å” ¦l0åG±•Í^öÅföÅn6£ã1:£˜ò£Hç¤sÒ9éœh–‰)LÙ`ÊS6˜²Á”Ÿ=zòy‹¼EÞÍÕÍÕý]¥äMÉlÛ_ìÛ_lÜ_ìÜãÇ:ûpÎ>œã½:Þ«ã³:žª³çëc ÿÁr8é +H¤ Òé’tI:ÍU_I]ö§•(µr5éštôÕê/ÝF©Vø§Î~³_çì×9ûuÎ~Û"/ÖiX§a†M6 IrP’³‡çxÈŽ‡ìxÈŽ‡ììõ‰)LÙ`ÊS6˜²Á”oEï½Ëž Ö‰×,¦l0eƒ)LÙ`ʦ³¯_E^¬èåìúhׇ»>Þõçb<\O1eƒ)ßÊHg¤3ÒÙ—Žû÷OQ¬ÿÞñïÿÞÙ½tv/ýcrì^Š)LÙ`ÊS6˜²Á”Mg_?ŠÕ‚ÝPE,LÙ`ÊS6˜ò£èÆÈ¿1b Vù`- Vù`ƒ F÷gÇÕÙquÞ0œ7 ç½BLÙ`ÊS6˜²§l0å_ýþûúGþ÷Î ?ñÉ~˜òïß<ÿžts®Ÿ?ìö¿³v¹Â“]Lù£›)qŸ4çÍØžìbÊ·H‰’Pš2 ]Ú—„²o¥Q•O0²+ÙŒìbÊ.¦ìbÊþwÞyoáqD¨ÀRH‰Óöck·8iλ+<ÙÅ”o‘%¡4j×yåû õjèîç¬MSv#»‚‘]ÁÈ.¦ìbÊ.¦ü¦4æ§íg ÛžìbÊ?¡!HUõýžÐ-æ”\êùR K=_êù’–  ÔQçO]]LÙÅ”]Lù¤9CpŽ­t…'»˜ò-°ÝbŸ4[UݪêVU·ªºÕ™[F²e${‘æT㜷äbÊ®`dW0²+ÙÅ”]LÙÅ”ý|OùºW³Ùj×VÏŸ×W0²+ÙŒìbÊ.¦ìbÊ·8moõFË$:Z;´œ7Ž[(nz^\LùZrÔ«s)‡„.©£FwûhpG0ê„Q'Ì&n¡N5y4…Gm_çï<èd‡)ßÊ(ÒՅ⪪z¾¬ü¨Mº!ÝNݦHd‡);LÙaÊ·Z¤ÓÔÿ ­þßò½¨óR'Ÿ/+?*HGíµ_Ô~QûµIÇs`mjÅ“€GÁZM­h¥É:‰ìD";LÙaÊSv}OùU…ÒsËh/šÅ“F‘ÈN$²‰ì0e‡);LùQê—s Žì0åG‘ ³æ¹Ê9µw­çËʯ"5ð$OeOÒå—Ž»¥êìE:­ìËsgŒœ:ód[<Út¶Ã”Hd'Ù‰Dv˜²Ã”¦|+ü•`–#´2´*Ù‰Dv˜²Ã”¦ìúžò«¸/–´7£Ã”Hd'Ù‰Dv˜²Ã”¦ì7IÆ…ºøÑçñ¼x>/ÐbÊN$²‰ìD";LÙaÊS~Ô—NíMÖ«ÄvÛMì ›òúKGyMyôKÒ/)¯RLÙaÊSv"‘Hd'ÙaÊSv˜ò£Ô/…åàG, E";LÙaÊS~é˜e…ýáYˆ);LÙ‰Dv"‘Hd‡);LÙaÊ¢•ôi1óŠ™W_Ÿbu…Õ+ëÆêö…ÃÎj»YO÷úüzC Ÿ~ÆeQt²Ã”EZ¾±°¦øbÊ·Ò»ÁOñþ¨6VÜÌîÖ Âù²ò«HǬmúªé«f†Žœž…·"¦ü¨/zwè¿Á?,g˜ƒÃÚ4Ô~˜ƒø"bÊ·¢ÎÃŒÍ(1e'Ù‰Dv"‘¦ì0e‡)?Št¼„]¼…]ÉÕ¤ÞÈ®ânEº&ÝnH÷Õ~¾tª~Žáç~Žáçˆ);‘ÈN$²‰ì0e‡);LÙõ=åG÷• ¦ì0e‡);‘ÈN$²‰ì0e‡);LùQê—ïÕØ®O%Jyñx Ǿ7eüÃW1|ÃW±ï½Ù6é6é6éšt_ý´"þ‹á¿˜1æ¼\‹)?*P¼æ/ÒQ{§öNíñs ?Çðs ?Çðs ?ÇðsÄ”Hd'Ù‰Dv˜²Ã”¦ìúžò«¸/–´7£Ð*jxFÆN€"‘¦ì0e‡)?Jý‚g$¦|+ú‡í0e'Ù‰Dv"‘¦ì0e‡)ߊѦ½Z¯Ä”Hd'Ù‰Dv˜²Ã”¦ü¨/]£4ZI{“¡tÒÑ^¶*‰ì0e‡);LùVØUb9YÔ”µŽ½cóCLÙaÊ·Ú¤c–%ö—X>’á#[&ŠDv"‘¦ì0e‡)?J­Ä«2¼*1e'Ù‰Dv"‘¦ì0e‡);g_;LÙaÊSv¢“¦|+F¦êS”‡M²McEOý±CclÑ{4bÊN$²‰ìD";LÙaÊS~Ô—NíØØËfôÙ‚1üÃÏ1vaŒ E";‘ÈN$²Ã”¦ì0åG}éT«f,›V6ëAÓJ6pŒ1e‡)»¾§ü*î«÷-1e‡);LÙ‰Dv"‘Hd‡);LÙaÊ¢_˜øf†oføf†o&¦ìD";‘ÈN$²Ã”¦ì0åG‘Ž§Ð°‚ ¶;Ø.›PŠDv˜²Ã”¦ìúžò£è—á)4_{µ ˆ);‘ÈN$²‰ì0e‡);LùQì/®jÆ;£³ãåxŒŽÇ(¦ü(Ò95ý9¾£˜²Ã”Hd'Ù‰Dv˜²Ã”¦ü(Z¹¹º¹º©[ôWSrÓ^öí¯&oyiù†«#ÇgSv¢“¦|«-|pºÀ>œ"‘Hd'ÙaÊSv˜ò£HG/z|mÊ£‡Ö¦¼MyôÐjÊ£¯ý² Kž‘˜²Ã”¦ìD";‘ÈN$²Ã”¦ì0åGŠ«šÝΟ³Ã'¦ì0e‡)?ŠtA ´&Š);LÙaÊN$²‰ìD";LÙaÊS~­¤Oñ©ŸZ‘ÈN$²‰ì0e‡);LÙ9ûÚaÊSv˜²ì0e‡);‘ÈN$²‰ì0e‡);LùQ¤cÝpÖ ÇŠ+Æ¿W$²‰ìD";LÙaÊS~”¡¸Êh9£Å"‘Hd‡);LÙaÊ¢åÌÞ œwE';LÙaÊSv˜²‰ìD";‘ÈSv˜²Ã”³¯¦ì0e‡);ÑÉSv˜²Ã”¦ìD';LÙaÊ¿JÎûï;sâï]™ãœu'>9Sþý«ßO¾sDXü¿‚ t O1åø;ÔàþŠ³Þ„Nº…'‡˜ò-¸tÊ9']‡Â“CLùºôÎâPxrˆ)ßÂ%B¢$Î-ÎÔ 1åS¾Å©Øù#êŸ(¥i„ l¨ž<¯œ¿._§]¡ž÷¾S¾—(eß§]‡)ßB—ú´ë¼¼…˜rè8ëÐqÖ!¦ŠJE%‡˜rˆ)ßâT켞…Nº…'‡˜ò-ti+—̦4¥ž/õ|©ªg8Ä”CÇY‡Ž³1åPTr(*9Ä”CLù'òTìì÷†Â“CLùº¤^ݪêVU·ªºUÕ-#Ù²­^Ýå­î=_î …'‡˜rè8ëÐqÖ!¦ŠJE%‡˜rˆ)‡¾§bÊ¡¨äPTrˆ)‡˜rè\ëS1åPxrˆ)ÿÖõÆ9‡2tÒu(<9Ä”o¡K™ZVN+æB„Äié¨WÏÇpB']‡Â“CLùº¤q î¨F0ê„Q'ŒÚ>jûhîL³äŠ­K s®ƒèä€)?ê»JÞZ¨DµÔæ*Ëç5¤Óª«“¬ƒ“¬¦Ä$1ÉS˜ò£TÓoù^êc1å[Wƒ»QûEíµÿÿµ©Õ¦V›M­š¼²:E'L98É:8É:`ÊALr“0å€)ßS˜r“Ä$L9`ÊÁ™ÖS˜r0å[%Š–Ï@kòöwõ{®:J%»æåÆUÍCE'L98É:8É:`ÊALr“0å€)?J5uÆÈ™Ç‹zWGw jÔ>¨}Pû`F%ˆI˜rÀ”¥Z¾Gä÷[£(9Å}i[5ŲcSƒ¦~ŒQÐòj@ó÷0å€)ÑÉSι¢“¦ü(®Ò“‰Mf.H‡$=”ôPbI_%}•ôUb»É\M­’:É:`ÊALr“0å€)ßS˜r“Ä$L9`ÊÁ™ÖS˜r0å :9`ÊÁIÖÁIÖSb’ƒ˜ä€)LùQÔË)ÖÄbM9•B½ºUÕ­ªnUu«ª[½ºÕ«[½z r*>9•SG]§â“SP9õiäT|r *§N¸NAåT|r *§â“SP9uÂu *§â“SP9•SñÉ)¨œ‚Ê¿…A½Ñ²„„Õð¼|ÜBÙu¯¹)q*v ò-N9£¥`´ŒÆ}t÷ѸwÔ £N˜M­oÔGsgÔöiÖ<­c×…2”/T  Å‚Y†âª¦Œ ò£´|^CºQº¥nÓG‘“ðä*'Ç['P9 ON ròÉää ë$<9Ê"µ_Ô~Qûoñ_›ZñX›<¾gÂÒè ë$<9ÊÉG‘“ðä*'Ç['P9 ON ržœ@åäxë*'áÉ TN ržœ@å*ß*)–Û×Ê&o“cx®Ò§Î®•CPùQj‡s_OÒñTö$]n”ju\°*'áÉ TN>™œt„''PùQÊÔ>¨}Pû öÁŒ ¹:Þ:ÊIxr•“ƒ®“ðä*'EN“¨œo@å$<9ÊIxr•“ã­¨œ„''P9ÊIxr•¨œ|299è: ON ò­èÉÄûË vôPb‰$}•ôUb‰í&s5±ƒÄŠ‹H¬8é—Ä6’~Iú¥X‘ŠY[´¼°¡ÒCTP9ÊIxr•¨œt„''PùQ”BŸ³gBP9 ON ržœ@åäxë*'áÉ TN ržœ@å*'áÉ TNŽ·N ržœ@å*'áÉ TN r•“ðä*'P9Ê·2ÝcÓC›ÞØÿ½Šß Ï2ü t„''PùQ*¯±Ýfv7sº©K32M¯5}Õô.ŠÂ“¨œo@å$<9Ê·b ›ü¥0ó†Ú«.ˆºN“¨ü¨St„''P9ù(ržœ@åäxë*'áÉ TN>™œt„''PùQäÒ é†t_íÕ÷†Ÿcø9‚ÊIxr•“ƒ®“ðä*'EN“¨œo@å$<9ÊIxr•“ã­¨œ„''P9ÊIxr•¨|+ùúdrrÐužœ@åGé¾ß›2^‹Â“¨ü(Þº¹ï÷¾l›t›tZ‡Ì¾ú59d§†'#¨œ|299è: ON ò£ÈAíÚ;µwjŸcø9†Ÿ#¨œ„''P99è: ON ròQä$<9ÊÉñÖ TN“¨œ„''P99Þ:ÊIxr•¨œ„''P9ÊÉ'““ƒ®“ðä*?Šûb‰ýÛ&=Ø{ ‚ÊIxr•“ƒ®“ðä*ß +N,GÇ['P9 ON ržœ@åäxë*'áÉ TN ržœ@å*']'áÉ T~¥Ð§ÉìfDP9 ON ržœ@åäxë*'áÉ TN ržœ@å*'áÉ TNŽ·N ržœ@å*'áÉ TN r•“ðä*'P9Ê·b<ª>ÅUú¿Éð›ôÉää ë$<9Ê·bnê·©[0ú(ržœ@åäxë*'áÉ TN>™œt„''PùVÌ#6Tžœ@åä£ÈIxr•“ã­¨œ„''P99è: ON ròQä$<9ÊÉñÖ TN“¨œ„''P99Þ:ÊIxr•¨œ„''P9Ê·Òû‚ºN“¨ü(Ýwðïfœtþ¥S vÀ“ ržœ@åä ë$<9ÊÉG‘“ðä*'Ç['P9 ON ržœ@åG±-Rxr•¨œ„''P9Ê·2~3Ê3Ê3JqJqò:9Ô»ŽÇèì‚)<9Ê¢mEÉEÉì­_Å=ŠZ¥÷Ø\Ýüܴ֔’Íú«)¹©;øW¥PÓá^`Œ #Žëø¬ÎŽœ³'¨ü(Ýwé‚tAºøÒqßänIíÁ*<9ÊÉA×Ixr•“"'áÉ TNŽ·N ržœ@å$<9ÊÉñÖ TN“¨œ@å$<9Ê TNºN“¨ü(J¡OñÝ<ÇWv|eg7OáÉ TNŽ·N ržœ@å*'áÉ TN ržœ@åäxë*'áÉ TN ržœ@å*'P9 ON r•¨œt„''PùQ† ÷°/÷`´œ¯Þñê¯^P9 ON r•“ðä*'P9 ON rr¼u•“ðä*'P9 ON r•¨œ„''P9Ê TN“¨œo@å$<9Ê TN“¨œ@å*'áÉ TN r•¨œ„''P9Ê TN rý½åÖß;¢õ÷özýþóï>ÿžtgÙü‰÷Y]gñª¿óÇ/¥Ï&—κ.(— ò}ÿSÎùS“Òg“Kg]—”KPù'Þé]úlré¬ëR€r *—>›\ç¬ëR€r *ßâTÕUŸ3£JÊ%¨\‚Êõw>íô¥KP£rF‰Õ§gx"º[âTþ@åŸP»Î›^é¬ëR€r *—>›\:뺠\‚Ê¥³®KÊ%¨\ P.AåTþ‰×»ú‰’íœW¨R€r *×ßy*}6¹tÖu)@¹•KŸM.u] P.AåÒY×¥åT.(— r *ÿÄFè²Õ³Ÿ[‚Ê¥Ï&—κ.(— ré¬ëR€r *—”KP¹•KŸM.u] P.AåÒY×¥åT.(— r *—κ.(— r)@¹•KP¹ \‚Ê%¨\‚Êõ×ê6ý¢ª¶úù¼}””KPù'd«s!JâTlÔ«#£-£qûèî£q îl/¥Q'ŒÚ>ÔGm5yÔ䕟EO+Úq±‹o&']ñÉT¾U9Š«š2ŠO. rñÍäâ¤ë">¹€ÊÅI×E|r•‹øä*PùVþ)îÜ-Ȥ£ö‹Ú/j¿¨ýÚÔŠçÀÚÔŠGÂjòòt0Zi27Å'P¹8麈O. rŸ\@å*']ñÉT.â“ ¨\@å">¹€ÊT. ò­J=dý)ê‡] Ø*ßÏU­ÏúfrqÒuŸ\@åâ›ÉÅI×E|r•‹“®‹øä*ñÉT. ò­úSÜm¸Ûc”.¨}Pû öAíƒr•‹øä*P¹øfrqÒuŸ\@åâ¤ë">¹€ÊE|r• ¨\œt]Ä'P¹ˆO. r•‹øä*P¹€Ê·Âžy:/Ï‹çóâ­o&']ñÉT.Nº.â“ ¨\Ä'P¹€ÊÅ7“‹“®‹øä*']ñÉT.â“ ¨\@åâ¤ë">¹€ÊE|r• ¨\Ä'P¹€ÊT¾•Šò˜çŹ€ÊT¾U¢Š»w+ré†tCº!µÇÏ1üÃÏQ|r• ¨\|3¹8麈O. rqÒuŸ\@å">¹€ÊT.Nº.â“ ¨\Ä'P¹€ÊE|r• ¨\@å[ñjl×§T?<Ãã1<ûÞ”ñU ÅðK•‹o&']ñÉT.Nº.â“ ¨\Ä'P¹€ÊÏ›=Š:»VyÅ'P¹øfrqÒuŸ\@åâ¤ë">¹€ÊE|r• ¨\|3¹8麈O. rqÒuŸ\@å">¹€ÊT.Nº.â“ ¨\Ä'P¹€ÊE|r• ¨\@å[aÏñí“`±ì(*ßL.Nº.â“ ¨\œt]Ä'P¹ˆO. r•ëOßL.Nº.â“ ¨\œt]Ä'P¹ˆO. r•‹“®‹øä*ñÉT. rŸ\@å*PùVõ)Êcž³÷¡“®‹øä*ñÉT. rqÒuŸ\@å">¹€ÊT.â“ ¨\@å*']ñÉT.â“ ¨\@å">¹€ÊT. rŸ\@å*P¹€Ê·bv=‰eøM†ßdøM†ÿblÐ;4ÆáÉè›ÉÅI×E|r•‹“®‹øä*ñÉT. ò­ö§¸ó?ÇØs16TtÒuŸ\@åâ¤ë">¹€ÊE|r• ¨\|3¹8麈O. rqÒuŸ\@å">¹€ÊT.Nº.â“ ¨\Ä'P¹€ÊE|r• ¨\@å[1+ðÍ ßÌðÍ ßLßL.Nº.â“ ¨\œt]Ä'P¹ˆO. r•‹o&']ñÉT.Nº.â“ ¨\Ä'P¹€Ê÷þ´æ¾â“ ¨\Ä'P¹€ÊE|r• ¨\@åg{üS”g”¢÷st]Ä'P¹ˆO. r•Ÿ w®æ÷õ+J.êRÜ£¨UQJq¢¼Ío›’›–}ڔ̶ýՔܔÂ^þÕ”7\®ðc•¥ëC RМT.¾™\œt]Ä'P¹8麈O. rŸ\@å*ßL.Nº.â“ ¨\œt]Ä'P¹ˆO. r•‹“®‹øä*ñÉT. rŸ\@å*PùVþ)ÊÃþØásöõYP¹ˆO. r•‹“®‹øä*ñÉT. rŸ\@å*P¹8麈O. rŸ\@å*ñÉT. r•‹øä*P¹€ÊT~T¡HÇ(°+éìE*>¹€ÊE|r• ¨\œt]Ä'P¹ˆO. r•‹øä*P¹€ÊÅI×E|r•‹øä*P¹ˆO. r• ¨\Ä'P¹€ÊT. rqÒuŸ\@å">¹€ÊT.â“ ¨\@å*ñÉT. r• ¨\Ä'P¹€ÊT. r•÷ŸßÝo¯ï¿wmýv- “p‰8Â%Þ‘ßçµyÿµè*ð5·èS…µT—“æÌü[¨šáç^VJ³•ko •ü®“[_UÞ: {+|y 9ï¿3qn±%ZBiì’8wwÕçì»ÿD+ÍèÝÝuw×ÝCåœÏ!ýDê—4 —8÷ R¨WC½êÕNµõUå­£°·Â—·óO¨çӔƔƔÆ/‰s÷óbö%+Ò¤† 5©nIuÂ9ñò.§ëJvzŽÂÞ _ÞBÎ?¡Ž*uT©£*ISº{I´²·²·²Ëz·ŒËø·Œÿ¼Ñü„¦Ò6¥1¥1ҔĹûù›Ù­£°·Â—·óO¨Î;•&•¦”FÓak,Γ[QË[¤y+|y 9o!çŸh„î%CÚsîÕ²¨V+Zó´UÕVU[UmUµÕÏ­Y02€‘Œ `4+G0¡\qJ-^£¹sþbtë(ì­ðå-äüjਣžÜ[˜‹žæÌº4¼¿‘ß4f?ŬœIºM^ź6k®FC_UÞœ…½ `ÞPç}Sâ@%ªP_ºF©.ËPA)A)A)A)Eº"]‘®Hפã9ð=¾'‚µšºh]ÖYØ›æ u¾í0#‘ÎH§YùSª•ù§U¨jw Trßä¾É}‹ß_~ÒaaƘ»žŒËµp,ל[®%z9#茖3Z¤£ÎÎh9£åEº"rßÔ¥QX"O¶Å£m9#Xb`‰%#ÈCp}ô}Ð÷Á, fÏÍŃsñä\<:ÏΛt›tûK—(jÕŸ¢~Ø.O\Qç uÞ79þ”¡… ¥§ôJl7±ÝÄvSÏ}Uysö&€yCoU¤+Ò1“³¾t…¢.ûSR{y¶/î+±ƒÄŠ™\ôFÑø ‡`á,\Qç u¾•}ªQÜ×¹¯S2sGBÔùVX¾Ä™Xx w⧸o}Š0 û+쯰?|…²ðB~Šûbk…­¶V¬*ŪR¬*¸. ßem=Òׯþξì†0oó†0?мôóf6n¬i³nì¦Ú»ioSƒf4ëA³4ëAÇ÷ºA:z·éÝfv7³»é«¦¯š¾jžºCËñVîÊÂ_Y8,?¥ºà»,œ—5ÌÁasp赡‡†5šQviFÙ¥¥¯*oÎÂÞ0o¨ó­œtNº ï`ø/?¥·°+QE)E)›R6¥ðºw5é†t²][z9±%OË–,ÑïŠKãaK㡯*oÎÂÞ0o¨ó­háñáñØ j•Ÿ¢~Eýx+]EýŠ»íOqßÍ}y‘Å[2|³Åo²03Y˜cŽ'cø%†_bø%?¥º£eŒ–mÒQgc´ð_ ÿÅð_ ÿÅL³ÇüBa‰¼C›kž›3‚Ž%:–èX¢3‚Nß;}ïô½×—.PÔeªP¥>õ¯l$àñáñX0n±>Å®¶Ønh-u~v?>ÅÖˆžtzÒY8%c»í¶AýŠtE:fr0“ñx Çðx Çðx Çðx Çðx Ç;Àã1<Ãã1<c»B'`o–7¬yÀ¼¡Îê|«ü÷eVdrߤdæ~2÷ûÃG2|$ÃG2|$Ëæ¾Í}çSÔ€y”Ø_bxZV×§¥ûö‡WexU†WexU†W%ê|+û%;%cxU†WexU"Ì·b< ;-fmÑ“EO=YôdÑø%†_b›VnZ¹Ù÷ÜN:꼩óÆ"6±±ˆ_:6±’ÍŒÂÏ1üÃϱÍ*ßÌf~4ó£Y;ñ‡~Št̶/]¡T<(Ã2<(Ã2<(c ÇØÃ16q¬Ym›qÃç2|.Ãç2|.Qç u¾UŠû²¾4ë ^š Ö>Xû`íÃj;Øî`»ƒí¶‹ofì,[KÆÞ’ ¶1ØÞœáÍÞœáÍÞœ v0ØÁô—n£¾êOi?ÿÏñÿD7ÔùVëSJT¡(™­n÷ÑàŽ:aÔ £N5pÔÀÑ$:ñ@·H =Í¢uþ¢³áÊ·RG¬ãG?ê[9É»¹ª±Xצ”&ÝnH§nS sÕ®Üpå[él¡LʹJ—:yãun•¤+ÒéŠt›tM:ž«©Ok µ¢•ç Èæ8ì&†¹áÊ Wn¸ò£H§%nñ˜Wn¸rÕ›C°›Èå&r¹áÊ Wn¸ò£¨s‘cs_ÚkÃ}±°ó·O÷sU+¤¸ò­­ó"]ŽZ9µò$]‘®¸cé›tš6˱Xo®Rgžl‹GÛ -šâÊÍ—•›ã°›æ†+7\¹áÊ·¢ïƒYX,ÏÍŃsñä\<:Å•®ÜpåG}é¸/ó’Ç­¸rÕ›C°›Èå&r¹áÊ Wn¸ò£p¡ô<W~T¡6ŠtôK2ú¤c&'–ÈóZ\ùQ_:µ7™É<ØOöÅ£}ñlWn¸rÕûfÈŽ ”ZŽ? ®Üpåæì&r¹‰\n¸rÕ®|+fJ9%ca8Šan¸rÕ®ü(Ò±¢Wqz²èÉ¢'‹yt"pšÈå†+7\¹áʢθÓÅ*Z¬*ŪRÌÐbd6}¿é{üš…?#®Üpå†+7ñÊ W¾ý¼Yi6ëËÆr6-ÚÌ(ÕÔ åI‰+ߊµ¸±{ÜÕI^fwÓ»7³»™µM_5}ÕXñÐr¼qåG}éxÑÁ:ñ]ÖðÔæàÐC¸-k°œÁFu±K+ˆ]šQviTÅ•›/+7Ça71Ì Wn¸rÕE:^Â.Þ®äjQÊæn›»mÒ5é†tC:­“âÊ Wn¸ò£H'?ÇðsÄ•›/+7Ça71Ì Wn¸rÕEºä¾zºˆ+7\¹áÊÍ!ØMär¹Üpå†+7\ùQÔY³ÂLO qåGé¾x<†Çcø/†_bÆhYRJ’n“ŽZµú^¯mHÇ«»1–ø/†ÿb†ÅºÖqåG*Q¤Ã1âeÛðsÄ•®ÜpåG}é6ŠZÑJ×3^Ça71Ì Wn¸rÕï ÆÇ‚yØn,Ò±ãg¤Èå&r¹áÊ Wn¸ò£Tço7'¾}FÏÈ"IG¿£gdxF†Çcx<†Çcx<†Çcx<†Çcx7Æf„b˜®Üpå†+?êK×(µ<±ötÒ±®á)r¹‰\n¸rÕ®ü(꜔Œ…áK¾”á#‰+7\ùVMº¦Í=èɤ'óëIæ¾”"—®Üpå†+ß «Ã«2¼*qåæì&r¹‰\n¸rÕ®ü(CQ²S2c„§%®ü(~£'‹ž,æ Û4†dE¿à—ÞˆmfÔfFmjº©[0Šan¸rÕ®ü¨/zc³mÖ—Mñs ?ÇØaWn¾¬Ü‡ÝÄ07\¹áÊ W~Ô—NµjÆÊð  Êð Œ×W¾cÔ<éš'>—¸rÕ›C°›Èå&r¹áÊ Wn¸ò­xâ4³bè|3Ã73|3qåæËÊÍqØM sÕ®ÜpåG‘Ž•ax†âÍÞœáÍÞœ¸rÕ®ü(Òñ¬Zþù£U@\ùQJÛÞêqå†+?j£(™­n Sqå[pIåh”ÎËÞˆ+ßB—F#{4‡+>®<:{Ä•GÑÉ£èäWqå[œŠ¥ÆâìN”G\ùºÔÊ¥Þ(U£Ôó¥ž/õ|é¦%;{¿£±G\y<ŠNqåWþ‰ZúEÖR²Õ’­–zuk¼ÎþëèãÊ£±G\y<ŠNqåW¾§Ù’Ð¥Ð/*GÓê¼»Œ¢“G\yÄ•o¡›jžèäQtòˆ+¸òèìWqåQ˜òˆ+ÿÖ­­æ´êÜêðV [;¯÷ÒrÄh2Žìðp埌rFV7²ºÑ¸Æ}4î£Áu¨F0jà¨]£¥i4wW¾…V¶szг2jm»dŠâÊú®’·È»YM7ËisµYt‡t£tçO}†±®<Ä&±ÉW¸ò£TÓåü&‹W¾Ur5¹[‘®H·IÇ⿚Z5µâɲ†Z yµ|)JyàÊÃÇ•‡±®<Ä&±ÉW¸ò£Tƒãu±ÉClòÀ•®<œƒ=på+QÊW¾U¡iãhŒ¯Íw•çªVHE)\ùQ\¥Ž­9µrêr<³+±ÉClòÀ•®ü(ÕԛߘÁhñh[¡'«¢”®<|\y8{àÊClò›®<œˆ=på!6yˆM¸òÀ•7Ñ“I±ÉClòÀ•®<œƒ=på+QÊW¢”®ü(Ò9邚&5Hr$5HòÒ»FOýgÅUlŸZç`\yàÊC”òÀ•®<Ä&±ÉW¸òpöÀ•®Yצü—PÛ#{PbYʦüåÒX¼ïV·ØÊÞÊÕÊÕ§9¥Þ({©çK=_êùÒMK6Vê¨wøê±—+?B‰Õu¥®{¹ò-¶~Q K¶Z2þR¯n×»ÿúˆ“f«Wß0åG¤„۩ƦüåRsÞ0åGè^2þ­Vlµâ=ìúº©†àåÊ·Ð|¹ò#TM™7Lùª:a«¶fîVo´ÚÞjÎûZr‹Ô%Õ°5O[kYÂh2ŽìðÝž½…]§œ×ÿ¿…¬n4î£qûhpG0ê„Q'Œ8j×h¦7LùZÇÞoÑ<ÊøM¦x¢”_Åz©µk]EÞÍÕÍJÛ”Ò,ºCºQº¥n[ßâ¼Ôƒ‡+¿ŠêÍ¥ü*ò:¿QçwoõQÉÝ’Eº"Ý&‹ÿjjÅs`ñdù ß3aiΙׯ T¡Ô§FÛŒ¶™‘CsñD)¿Š¼ÎUa¦ y¸ò«(9¨=dôÐë§¾ŠtE]iûZÉøòˆZ®r¹VÈsæõ£´r®ü*µÃ±5§VN]5ü—sÒõ«E ‚¼Éo›»mònî¶É1¤Ò éÔ÷'JùQò¬ÏIׯâ¥QVgx<çÌëWé¥pi0üœ¥ü*Já ßÇð}W~W‹«Eýx+ÅG:\ùQôТ‡Ö&}µ4+Ìi£•x<†ÇcxŽVù¥üª@‘ƒ–ãû®ü*®²š%«YbCøH‡+?ŠJz(“tù¥£ä¢<æybaÉFTbMxK‡+¿Š’YÛ“•_ÿ±&âU^ÕáʯÚ(Õ´èÝÂþØo9\ùU”ŒÕáU®ü*ÒÑ÷xU‡+¿Š{8÷`Œð¹ ŸËêÛÐcÖkNÑlÓþmzoäD)¿J¥lZ´©ß¦VlÁœï+? ‹ØØÁfídCÆØ‘9\ùQ<7uf[ÅØW1öSΙׯÚ(¥kF°yžã“®_ÅF(cÔŒ”áA”áA(åGÑ66sW~5`4+H³‚à}®ü(æG{¶ôPÓCÏÐ__±6Žoføf†ovμ~éœtØÁðLÁK3ö˜W~5À"ðæ oÎðæ oîD)¿ŠRxÚ³%eìI®ü*íK_ß.ö·-:QÊ¯ÒæôµH§:\ùU¤cËûb«û2ÒÉÂN”ò« EŽàl³ v¢”_ÅÕ¤mEÉEÉEí‹t›šnÒmÒmê¼¹oSr“—Íú«©ýn(yH7_:îñáÆhim:\ùUÊÁŽœ³çx¯¾4§Ï™×¯"½»è]¼RÇ+u¼RÇ+u¼RÇ+u|Ñ¥ü(új5µ§å‹–/Z¾h9;w‡+¿êc*\Å&!@'JùUªŸÑCìæ®ü*Ò9%;å9éôìq’ã!Ÿ“®_Å=°NKòWé?Ã&mS26iØ$ž´CªW~éš:7÷Å&ñÂ/üpå[±wx¢”_å¨/]¡¥úù¢”E)¬¾È„Ìé{§ï¾wçzÖ:ž¾ãÕ;»—Îîåáʯ¢dÆïßñþïßÙï‹Â]qåÚºÔjS+{+Íœ4g¶­¦üˆ“æL—u”±$\B¹L¹B¹J·ÐÝ­¬sêõ#\⤠•ó†eÝB#ñÝùˆSòÙÿ ÒyÙ[çÔëG(ûœ4©ñzO½~DH(ª¦†àl[¯¦üåråJ¥)YQ+{+—†à¼C­¿Ro”î^êùRÏ—z¾t¯’•:êpåuN½~„n¡®+u]©ëÎFðOl Õ°d«%ã/í–‘œ]×u”¡4²­9u¸ò:aÊ·P÷nuïVsÞS¯¡{…ÊQ+¶*¸ò:aÊP.ÅÖ|Ô¡úhÊl×áÊë„)?BiÔ[½Ñj{«­ª¶úù¼€¬¦ü¥é­5æ´âýÛÒGœ›Ž àpåŸpå’ÕÆ}4î£q î¨F0ê„Q»Fsg´4æÎáÊK\ù^ý–Ö¯K“æ|AùU‰"G®È»¹Ú¬´M)M:î{üÔ¥(åW)ÝRž(åW±P«7Å•\ùVŽ¢Î+¹[’#IW¤Û¤Û¤Û¤kjÅs`5µâ‘°†¼<ŒVš&߉R~•Ê3Úf´È4O”ò«È˸¯s)JùUªŸ%3¾܃²$}eôÏ©eŒ´ õc|yD‰+ßJ+äù‚ò£ôä>Qʯ"]Žºx’.IWj¯3‚®Is¢”_EÞMÞFQç`´x´‰+/}AùQØ_0F<Ï™×Ò²(®¼¥ü*ò2ßxn.œ‹'çâÑyμ~yµ8œ(åW‘—q ¬8ð+l—‡ðâ)|¢”_å¨@‘NÏ“óåWá`é²x@Ÿ/(¿ŠtX'ésæõ« µQjob‰Eð`_<Ùöųýœy}+óâÊKQʯJ”òÖâêú~Û(J–—°pN”ò«HG_}UÌøbžãHˆ+/yý*jÜkÂW^:óúUßoŽ¢d¬®xTÓônѻդÃê «+¬®†óåPíqfÄ•\yÁ•—¢”_e(GŠRX‘6ý·éMÛ6íÀËX¸«¹o³z7ëA³ 4vû±šñhú¹™ÓŸýÌ¥/(¿ŠwVàÁЇöâ­ˆ+/E)? ëćYø.kX•‡98Ì<Üqå[©¯Î”_¨B‘ÎHg¤3ÒéÔ§†ÿ"®¼¥ü*òò:v%js·ÍÝ696é†t¼ø]C:Ù©ñVy¢”_å¨Dм´ri8Qʯ¢<Ú†Ç#®¼¥ü*ò&y‹«õýFýx+]E]Š{ÐCk“޾Zô>’#mòë Çðx Çð_ äœyý*JIÒmÒQÛ¤ãõÚä¥þ‹¸òR”ò«È«§ù…¢ÎÎh¹VoÃÏ9_P~é#üœsæõ«ÅŽ}Çc¼©Ÿ/(?JëÁ‰R~åÑ6<qå¥(åW9Š ¬8Ö÷[¢Øà`|ñ–N”ò«HG_}NyôK`±xFâÊK_P~Ô&Ö‰gdx<†Çcx<†Çcx<†Çcx7çÌëW±Ãu¶™í|_ù†p‰8Bvz¶|o¡4¡4ªFÉ6iþ u]©ëÞÖn±u©%¡ÄsoÕy/„K(Z±ÕŠ­VlµâôÜ‚K§£v ZâôØy¡1.›Hó=]u©t©tI <Ë&Òüjò !º—T nkà¶ú§µ´ÚÕª|«ª]ˆ–8å´JžËµØH"$ÎÜYݨ&§äÑú3ºél„Ò´ÒP 5ð¸õ·Ð¥ÑÊvœúgA )ã*+à¨$G²˜y7ª?•(-’—Lp¿ðyT¢”nQ«³õjÀægÉæªqÕ¸ê\ T~ŠIÚ±ö§H·IGÛ¾Á¢mëkO‡ïñ°èûóÇŽ·Zj¡¸j\5®2F篖ÅUZ~\Q6ߊÞx¿Çðªï*%3Ò<¯–Ñ<¨Öq'MX¾•_Ÿ2VFGÐrÿÔFµõóüé’tÔÊ‹«ÅUFÐ7W7WAg´x´-žm?¥A;xà­0Òéh[ж mAÛ"¸\¥ïyr.‹gç9ûU\Ý\eŒ¢¹ÚßUjÐÔ ©Á×ÃU-% X6³˜¥¼‰•†òO‘ÛÍàj~ŠtXbÒIo$39é¤7rWÕ"í‹gûâá~Â~Wçó7ªQ\¥å…kY¬kx 7aá'(`Ù@Ìb¾ýWôŽÄ“ø)Ís|‰…3!Ø|+úbpÓAد¢rW1jsµ¹Š­kg±v=^ôx yYUŠß<·6ö·y’lž$ûÛŒÇfµÝ¬¶8@kóœÙÌîÍ*ºY}6óm3·ö|Šòäu­æͨ6ë¾ÆO5Junl¼±çîOqz·©Á\Ÿr”Ò µÂ]l¾Ö‰³pbÎËìj°¡ÙŸ"OSü”…[b×õ©‘Òh,?Ê>E:'sÕ¹\ ®W“«ÉÕBíO‘£ÉÁËØõµCvjKvzÂ~WiÛ¢mkqÕ¸ª¾·åŸ TJWƒ«ÁUÞ1ñ‚ /è„ý*jPÔ€ÞXÅÕÍÕMÉ›’7%ÓKsÚL3ô|`ùQö©Bé×Aü’_²O-”IQ?ëO‘®I÷Õj¸ªÙcÎâÓ>9#茖û§ÈÁÆ„ÓÏO‘Ž §mNÛœ¶ñZn¾¹º¿«êIÞÚ ïÆœ}^å G°ùÞ­`Œð‚ /è„ýªoC5z#Œ«ö]¥dF¿É‚þÃo2|$‹ü9°Ý`û„Í‹M:,Çðx Çðx,¾Þ`vãñX®OJs!i9`ó­° ¼ à 2¶'Œý cƒÂ’ÞÈà*ëZ~»Kßös?鿤ÿØè°dž'óI¡Ël¾ý‡ßdøMç ìWQ½{&Vz2Y]ßÕj”JÆ«2¼*ël¾=ŽWõSßUJæIRØ^•– Äl æG‘—ÙÍöÍïE‰vГ՟¢ôû2†_bìÃ1ÆNŒíoã3>E:ž›Zm,bó4ج/»¸Z\e}a£Åðs ?ç§”£i¾ÏO9Št´­i[Ó6¶c~Š«þ]eW4>Õ(õ)[8 ]6`ó­#6vŒÃçRè²›oEoà‡~˜– Äl æ[ÑÍú2Xû¬O)ǰ²¶‹öS¤ÃÙYRè²›ÅUzƒ 'Û3¼9Û3¼¹sö«¸Ê³g°Á6f¾«Ô@~“³/åø„ŽOèø„ X6³˜EÞE^C9¥h-v°| 3‰”87=o,.°| ¥ ¥Q•l£dÍ,»Àò-”fë—–Í—lµÔ«[u>ï/·H ¥Q+¶Z±ÕŠ-ÃÞjÎÙõóå[Äé±-‹Ú2þ–]a»"—]`Ù–ï ¬4[7ݺ—fåyßqå[(î€eWÀ² ,û_«ZÍ9/(~>°| U¬UŸÖiMϳiëçË·0—( -H²ºãô»ÀòO¨7FÃ}þjÔ–¢•Fm5pd™£Îp锳N´Ð­Xö.Í‘ó…åW‘#YB5OÖUäݨÔFi‘¼X7ן«½–”õߪ¼¸º¸j\5Ê3Ò9¿*¿UžtIy´ãl>Št›t´mѶEÛŽ{ê€åG)iX¾•,o™eç$l'vÙËX~éÈ$vÅUz#±ƒÜ\Ý”G¿ðd_<ÚÏöÅÃ]`Ù9 Û‰]vÀ²–oµ>ïÑP‰Rýð–E:æG%cWEÿ3¾è5<‰Ÿ¢Ölœ Å.;`ÙË"]Ql­èÝÚßUÙFaux#ËNIJ–°ìœ„íÄ.;`ÙË2T µQäed6ÎÿÆ:ñ€.ÐÚØ$>ËÂY¸Ë¢.<š{4cÙ¬ÊÍ5ënËUZÍÈ4VÜÜ·›{ЧM¯ =4ôË0/ëZ>´|°N|˜5X'ÎËž ƒå 5ÖÝaÝFoD`ùV»T¿ó…åGéœt¼e]ÎÕà*¯^W|W)÷±+ù­P›Mº¦<ÞÊ.¹W¶´2Oc¼r*vÙËX¾•‘N~ŽÀò£ ¥7Å\ ®W“«¼v®$]Rƒâ¾Eýê»ú½ß’nSò¦äMÉôßÒü0“ý/,?JveÆøâç˜1–ßÛ³é¹ÿSŽR Œú ¯G‘®IÇë´ W5–°ü(¥sÆÒ-wr0Zî”G;xÇ6gdœ‘Á§ÑIØNì²–°ü(ÒÑ÷®•Á\k¬9ëÃUl×™¼ß^ñªoxA: Û‰]vÀ²–E:F¿IËX~”lÏH`ùQÔ”¾ ¶O‚>ˆM:ìÇðx Çðx Çðx ?G`ùQlähXvNÂvb—°ì€åG‘ŽÙͶ„b—°ì€åG‘îÛ]JJþo£‰¼Ìø¤×»Jì*Ù‰Jú/Y ñ›–oEOæPl-éÝ¢'Ù=±Âê𪠯Êðª ¯ÊØp1¼*Å.;`ÙË"VW¬4ÅȰMcøWËNIJ–°|+æ4~“á# ,ߊ¾*VGöe ¿Ä؇16bŒcF`ùQ¤Ã^6±ÙqÜXÄf½ß¬9»HÇúÂþбybø9?ņ%í`oå§E:ÚÖ´­i[›º´²<(Ã2<(ÃXvNÂvb—°ì€å[1zSƒÍ}Y_ðÖE:Fº™͘7ý׬/s¡ð †µì|aùQôÁðtì`ðx†Þì€í&å[Ñ/xs†7gxs†7'°ìœ„íÄ.;`ÙË"ž=În”b—°ì€å[-Òi~,;ËX¾{Þ[ÜxŒ?E)ÎÕàjp5¸Êþ8ûaËb_>©AqU3ê§¾ý{JÞ”¼)y“w“wSò&os•ÝzöÜ–°ìD,;`ÙËXv"–°ì€åGqȰ´²úrrÐã‹~^Aº$}ŠWêx¥ŽWêx¥ŽWêx¥Ž/*°ü(hˆ¬S`Ù9 Û‰]vÀ²–8Á: ›d7O`ÙË·2Ò%%H†þc‡O`ùVX§aìÜ9ûuŠ]vÀ²–E:¬“}=Å.;`ÙË"ö‡Ÿíì :~¶Àò£(¹É‹ý£`¬ xáŽîxáÎ΢ Ìå=øÇÄðÖ–¥ú9ãñ±ŒáË;;•Š]vÀ²–E:lܱqgŒ<¿«ÔkÇûw¼g—S`ÙË·bÝàÀÙåX~é#ÞœÝPç}A`ÙËNIJ–°ì€eç$l'vÙËX¾à2#Þ0±ì€e,;`Ù‰XvÀ²–°ì€e'bÙËXvÀrü½Oø{Wøø{Wáø{{!ô…åP r,ߢŽxÒñwV²ø;!ô…åP r,ÇßñwV•ø{?¸~‹HU3Câ”sfsè Ë¡@åX¾·$Nš3‹B`9þÎ *‡Àrè$ìX*‡ÀòO¤ÒìSUW5Ž­„•C`ù'Öi{¨ÀP“Ï÷BÊ!°| •£&Ÿ¿*‡Àòo@¯%qÒ¤˜j`ª'P9–C'a‡Àr(P9–Bƒrþh7ô…åP r,ßâ4çü¥mè Ë¡@åX¾Å©ÏyO *‡Àò-”F=vÀrè$ìX*‡ÀòOlýÒ²ù–o¡Y¡:Ÿ÷—X¾…Ò¨[­ØjÅÖlÛjÎË¡/,‡•C`ùÊ•ºTº¤v° TåP r,‡NÂåP r,‡Àr(P9–C`9þZÐjÎù{×ЖCÊ!°| eWgû6ô…åP r,ßB R(W"νŽ{‹S±ÑMGyÀò-”F ­#- TÈò­X÷.ç7–À+É¡ñ[—&ÊºŠ¼¥¾Y~ÔH±p.u—Èò£”n-®.®.®ªc¨å[9¿*)/I—”G;Ö&‹þÚ¤£mß“`ѶC–ƒ@å€,ßX•²ü(å=Úåà,ì€,ÊY•²œ…å P9 ËY•²å[i*,“íéËA r@–¥»¹ž‹G•²|+ìσtŒ›3n^¤+®W7W±NߔǨzó3%°ÉÀ&CÏV}c9TÈò­™ mAÛ‚¶£´2žœ‹GçâÙ¹xx*P9 ËÁYØY•²*d98 ; ËA r@–²*d9 ˷²+N'›ôUb§I$ó7±ƒ,®W±ƒ¤_’~If7öų}ñp_<ݨåà,ì€,ÊY•²œ…å P9 ËY•²åG‘ƒ^+쪰«bþVr5¹JOâPˆ,ÊYÎÂÈr¨å€,ÊYÈr¨åà,ì€,ÊYÈr¨å€,d9TÈr@–²|+l§eáˆèËA r@–¥RšÐŒe³4cÔÿ¢³°²*dùV‹ß …M:6éNy´ƒ—l‘åG‘޶9msÚæŒoè"ËÁ7–ƒ@å€,ß ‹õá*ûA{C«…áïú†$²œ…å P9 ËY•²åGñVI,6è«ÀNƒ>æ/^áñáñÅ×/Ìnü*dùQÊ›´Ggad9TÈr¨åà,ì€,ÊYÈr¨å€,?ŠôZbWøM TÈrpv@–ƒ@å€,ÊYÎÂÈr¨å€,ÊYÈr¨åà,ì€,ÊYÈr¨å€,d9TÈr@–²|+z¿IßX•²ü(µOFßX•²ü(Õ€-*dùQ¤Ã"6+ÍfF±£@å€,ßjó[£ßÍønÆ·i›+"Ë"mkÚÖ´­ÙÕegFdùQêS<(Ã2<(*d98 ; ËA r@–ƒ@å€,gad9TÈr@–ƒ@å€,d9nž¬ßf}Š-_|¡¯‹ú`X#;V†aeì`è—¡_Øz2¼9Û3¼9ÛS r@–ƒ³°²*d9TÈò£Å&·úÅñïPÊYÈò­Øô¾œRdW?RÁÕàj|W©)äì‡)P9 Ë"GQJQ¿"]‘nS2{ï×&ï&ï¦mM›°]5é†tCÉCÿ y‡{|€1·Y~`ƒJÆ{U r@–¥»-úyѧ‹>ÅSu¼RÇ+u¼RÇ+u¼RÇ+u|Q*dùQä®ÒrxŽÈr¨å P9 ËÁYØY•²å P9 ËY¾ýgôÞ°³›§@å€,gad9TÈr¨åà,ì€,ÊYÈr¨å€,ÊYÎÂÈr¨å€,ÊYÈr@–ƒ@å€,d9 Ë"¯¼4ÿÈØ‡Æœ5«ÎÕ .AyA:lükøü"ËA r@–²*d9 ËA r@–E#gŒœ1rƈ÷ÿ€Ÿ7y-gqVgy¯pÞ+œ÷ …å P9 ËY•²å€,ÊYÈr@–²*d9 ËYÈrþ½×òï³ü{û5ÿÞ5$õåÔÉשHåYÎ{øˆRš}Š;«RêäëT¤rŠ,çßù+•ü;d©o,§N¾NE*§ÈrþÙœúÆrêäëT¤rŠ,§¾±|7÷¤9‘Ê)²œ:ù:©œ"Ë©HåYN‘åŸHuä>UuUãØJêäëT¤rŠ,ÿ„Ê 5ù|)uòu*R9E–BM>/{©“¯S‘Ê)²œúÆrêäëT¤rŠ,§N¾NE*§Èr*R9E–Sdù'4(ç-+õåÔÉשHåYοóB”úÆrêäëT¤rŠ,§¾±œ:ù:©œ"Ë©“¯S‘Ê)²œŠTN‘åYþ‰-Ѳù©œ"Ë©o,§N¾NE*§ÈrêäëT¤rŠ,§"•Sd9E–SßXN|ŠTN‘åÔÉשHåYNE*§ÈrŠ,§N¾NE*§Èr*R9E–Sd9©œ"Ë)²œ"Ëù×ê„V+Î JêË©“¯S‘Ê)²ü2‰”úÆrêäëT¤rŠ,ß ’r©F÷õÆh¸G7ä‰TN‘åÔÉשHåYNE*'d9!Ë·Òˆ¯K«¨¾²œ|D*'dùVEÞêB5аp.u—"•²œ|D*'d9‰TNÈrB–Ÿ¥¨$]R^RíX›t,úk“޶}O‚EÛN¤rB–²œ|e99ø:‰TNÈrrðu©œå$R9!Ë YN¾N"•²œD*'d9!ËI¤rB–²œå[å5¿ñ|=^_©œå[1‚fò•åäàë$R9!ËÉÁ×I¤rB–“Hå„,'dùV¬aüìe¨é°îëîðƒ¢ƒ¯“Hå„,'_YN¾N"•²œ|D*'d9‰TNÈrB–oU¨jÒ5å5åÑŽõ½úÉ&E–“ƒ¯“Hå„,'‘Ê YNÈrò•åäàë$R9!ËÉÁ×I¤rB–“Hå„,'d99ø:‰TNÈr©œå„,'‘Ê YNÈrB–ŸWb•gZ1õ•åäàë$R9!Ë·b¿×g£¦¦•Kd9ùÊrrðu©œåäàë$R9!ËI¤rB–²|+FÐ …M:¯þθ9íà%[‘Ê YN¾N"•²œD*'d9!ËÉW–“ƒ¯“Hå„,'_'‘Ê YN"•²œåäàë$R9!ËI¤rB–²œD*'d9!Ë Y~µbÖF’‹ fm`§Aó7štìªàñáñáñÞ¾N"•²œ|D*'d9‰TNÈrB–“ƒ¯“Hå„,'‘Ê YNÈr©œå„,'dùVô_Òk‰]%v•lE%ý—̨¤'ñ D–“ƒ¯“Hå„,'‘Ê YNÈr©œå„,'d99ø:‰TNÈr©œå„,'‘Ê YNÈrB–“Hå„,'d9!Ë Y¾3¿ÉðŒtðu©œå¼É²òâ1ÆNŒ±cì¼èàë$R9!ËÉÁ×I¤rB–“Hå„,'dùV¬íì«èàë$R9!Ëù§¯,'_'‘Ê YN¾N"•²œD*'d9!Ë·¢Çñ  Êð tðu©œå$R9!Ë YN¾N"•²œD*'d9!ËI¤rB–²œå¼wwÙÕ](|aÅ#ÓW–“ƒ¯“Hå„,'_'‘Ê YN"•²œåä+ËÉÁ×I¤rB–“ƒ¯“Hå„,'‘Ê YNÈò½y­'Ž"•²œD*'d9!ËI¤rB–²œå[%;y{8¥Wƒ«ÁÕ¤I:¶Ê¯ä¾É}“Úõ+Òé-U‘Ê YNÈrB–õåø6ÿÉ۔ܤcãOUd9!Ë YN"•²œå„,'dù ü\XZO©œåä+ËÉÁ×I¤rB–“ƒ¯“Hå„,'‘Ê YNÈrò•åäàë$R9!ËÉÁ×I¤rB–“Hå„,'d99ø:‰TNÈr©œå„,'‘Ê YNÈrB–oEÿ½†7ìP%g¿Îñý:E*'d9!ËÉÁ×I¤rB–“Hå„,'d9‰TNÈrB–²œ|D*'d9‰TNÈrB–“Hå„,'d9!ËI¤rB–²œå„,?J÷uFá#cÃW¤rB–“Hå„,'dùVØøÖœ1rÖv4MÇûw¼‘å„,ß »ÿ˜³n8c䌑3FÎüpVÞœ7E*'d9!Ë YNÈò£”7Á`y›p¢³ÏªHå„,'d9!ËI¤rB–²œå„,'‘Ê YNÈrB–²œåú{©¿wÌêïí×ú{Û^'P®tö-¶DñNÞú;߬¿ƒêïP„ÒaØõw"ÑnqªpÖ’ú;dõwvôK‡aßbKœ›žOCÕŸ5¢Ž•<§bç9nQj7 4K—L—L—ŒK§ç¯ŸH¥Ù§í®&[)†ýêÃÐÝC儚)QJ\[â´=Ôäó²W: û7ŽêÕ³{ýë’P50ÕÀTSvq^âJ1Ë%Äü¡S—¶¬¨J¬!8oNõW‚R}Jõ9»Ã·8]Wºû9 ûJJ“º$Û(Yó‰Y.!æ[¨À-!³)™MÊÑnÕykà¶Œ/¥Q+¶Z±ÕŠ­^ÝêÕ­víX§Ç¶,ê¼Û”Ãþ µbk¢íâ’nª±8‡PÞ‚KªOëR«@uÂÖÀÄü£Õ?gã÷'ÔŠÖ<íBœrÎ_±ÞâÔ¹UÎÙ´ý -)#ƒuÝh‚Œ `qj8êów£?¡¶Ú~þTôJ£Ž,s´FÍpIË×¥yµ.–½K£¹®ø9ò[BKªÈ»QªÙº4›×¥>_—ª¢Ã°Ÿ•øB±(/®W«ö]e=7JvT ’EyEy´cmÒ5éšt´mѶEÛÖ|W©í5-`: ûV²¼eZÅÚØËfåoÊkF°ãSÊÑŒQ³Ú6ëZc»Mï6ý×ý½¡(Ý0/‡Þzc°ÎÁ:ë¬f Ö‰óò{Щöƒ½ óm°ˆaµÞfðAtöó6(Þ°ŒtF:'oY—s5¸Ê«×ßÕ‘JJ.Ôþ9šòšò¾vh¤ ŸÆxÏÔaØ·¢m‹¶ñÒ)Ä|+Ú»´ è0ìG‘NÏxãÕm[ÉÕäjR^@o ¼îÚ*êWßUJ¦‡Ö¦äMÞMÉôž‘áû~Žáç˜i~˜i…3¼ÃÑaØ*”îkÔå{—þ^¦­I7\®jþïØ†OcÎø:cé†rrè¹oî”G;ði ŸÆœñpÚ†OcNÛœmßÔŠöºæ›þÕ‹uv/‚¶³‘÷{à ²`ÜB«èOqU/<†g$Äü¨@Q²‘×(™þ ,H‡aߊ¹znYÐ/±IפkÒax<†Çcx<†Çcx<†w£Ã°E:frÒòdþ&+WbãxA–¬alOüŒ«Ìn<#!æ[ÑCùí.±®eR2ý—E:ì ÉkJfrÒÉJˆß$Ä|+l-éÝœïªFº°5¼*cÅ𪠯Ê𪠯J‡a?Š’±?¼*!æGQ2ãÁÞŒáU ,!Ëb~yY‹ ‹-ú¹˜¡ÕŸ¢X]±:²/cø Æ>Œ±cìÄ/: ûQ¤ãi°±ˆýí8&W™QlÉü%3£ØV16O ?ç§T^ÓŽf´šùÑŒVÓ¶¦mMÛšñhƃ-Ã2<(Ã2<(†}+ÚÖ<éØ×b¾ãÖ<ézW©ëK3?šjF/ÍšùÑßž.sÌðÈl°Ýaíúe°Äáé2x<ƒ ½1¬l7 1ß ;À›3¼9Û3¼9†ý(®ò\lœM©Ÿ¢dYÎïQ¨D}Wµ}±Ë}±ÍÇè—ÖbgOË/ö¼/£ç²&†}«àjp5¸ªÕÖ/vʯ¤ÅU­± Y.ó£¨_Qò&ï¦d6á¯MÞ¦ä¦7ú»JÙ·gÎÙ‡û)Jòy5F¾ Kž‚Àò­>ê`ŸRÛ–ÖN_ôø Òéè¿•¤K®Òx¥ŽWêx¥ŽWêx : ûQ¤£78eiår£½ì× 1?j£TÃþØÍSÈr˜ †ù8Œ‘côûz: ûVX§aìܹÑ–\M®bV”Lﲯç¦õÏñ¤…˜Eý6%7yéqkòb†ýÁ´œ½CÇ wc<>Ò…îxáËEÈr˜oµÈ»È‹Å:«ÅÇÅœ5âbÎ(8£àÁÕàjP« dlܱqgŒ<¿«”\Ô1rƈ÷åG‘—1b¿Óy#pö;Š’#ÞÜ›’™3ì:o?E^FÐAg æQ0nq}Wu7`¢³ãêì¸:ïλ†B– Ä|+fY0ª¼8ïÎû‡óþá¼,`yÿéßwí¿wÞo‹÷߉“Û: { ,ßbŽxMdÿ•ì'úwV¥­Ã°·Àò-üÓ/®4!‘&±%ÎMÏlÞÖ¥åšS1×MÏ,ÚË·Pµë€å[è’•Dá§]güÄ>mw5ùìºo†½–oqÚ~Fä'Ôäó>¸uöX¾Åi{¨Éço‡·ÃÞË·8KÝ4ÕÀTS 껪ššLIdysö†,?ÊPÔ@˳Èò†,oB–7dyC–oµ¹Ú”B{»âٴΟÞJÏÆåþ)ÒQS§¦N]«sÆÍ‹tÅÕÍÕÍÕMý´zˆ,ßJKŠëS*/°ÉгuíFä§HGÛ‚¶mã!©å Y~Wi/ÏÎÅÃS‡aoÈò£¸ÚÔ´•(r`Å£Xq²‚$}•r}D–7dùVX6e†½!Ë·ÂbÏ®éæ0ì Y¾ó7‹«ÅÕÍUú%±ƒÄx´/ží‹‡ûâé®Ã°7dùQ‰Ú(õxÉAÑaز|+fw±š«Y±š}UÌøbζVô_}n+3¹˜=•ŸSËÕâ*=Yø¼…­¶VôdѓŌ*fTÑ»…ÕV‡‹"²¼9 {C–E:ž«ÛŒÇfeÝXÝÖÃXdyC–7!˲¼!˲|+lrÓW›–ãe,| ‘åGé¾Í hÆ­ãSªicíÍÓª…fv7}Úô_ÓM †Â5YC Ö‰¿²ë¬'FdùVA^æå0+Á_YÃ:4šev]ŸÒkÐ¥ñ°K£`—‘ÎHç¤ã5ër®Wy÷ºÔφO#²|«âûS”×”×”÷µC#-²ü¨Bq•¶-Ú¶Ô÷†Ÿcø9†O£Ã°7dùV±P\ ®&WeW†$²¼9 {C–EýŠlê·©}…ß$²¼!Ë·Òœ6|ÃÏÑaزü(^§ƒ¼ÔÞŠtÔÔ¨©Q—ïe_ŬI7\åuÞ´Þ‹,oB–7dùVZ-Ì Eí›t§<ÚO#²ü(ÒÑ6§mNÛœQÀÏ1üçÑaزü(G±5ÁþE0CÏ7à YÞ†½!ËRý‚Q ¬8´‚ˆ,oB–7dyC–o…eG~ŠEÉXl°‚$²ü(Ò5WÙVÁã±øú;Àã1|†½!ËR;Ø0<KZ™X ^Èòæ0ì Y~T ¨«Y²š%}…ß$²¼!Ë·¢ÿð›D–Eæo6W›«ôd6mÃÖð¥ ÊŠž,fT1£ŠÞÅ«2¼*ëYÞ†½!Ë·b÷m…,oÈò†,oB–7dyC–7dy²¼!˲¼!Ë·ÂN‹Š?dx<ÆþŒáñ3¶±+6bŒc+Æ6ö²ƒtØÆÆ6؆1¶_lW±ˆÍŒÚ¬>›ÅvŠÃÞå}óä ¥t-/CdùV¬MÛš¶5mÃ[RÈò†,ߊùexP†¥Ã°7dùQ\-j*/Wdysö†,ߊ5¶Õf}iÖݦ¯šùÑÌþ6uYwñÈtö†,?J%Ö9Øß°F kÄà Lr•UÏM!˲ü(®òtÁ›3¼9c#ÊØ€²¡•Ÿ¯7ØøÈ?Õaزü¨Bisú’Ï ²¼!Ë›å YÞå[±é}±Ç}99œÁÕàj|W©©ÖX‘åG‘£(¥¨iQƒ¢mEýŠ’7%oJÞäÝämÒ5éš4unJj5Ôêc CÞášÓ"˲¼!Ë·b–}J÷Ågõ¥Yë+HGŸ. ÃJÒ%Wé?¼RÇ+u¼RÇ+uüN†½!Ë·ÚA,,žã…,oÈò£Èq1ùC"Ë›å YÞåMÈò†,oÈò­è?vóoØ ë´ä*–ar“ã5‹,?Šô¤Ñ“†ýögô®mJÆ& ›4úßÛñ¸Ý†tØŸ uf<ðÂ/ÜñÂE–7dy²¼!˲¼!Ë"k„c»øò: {C–o\ÅžñïE–ElŸßñù²¼!˲¼ YÞå Y¾ãö1;ߤcŒœ1rÆÈ#ÞD–7dyC–7!˲¼!˲ü(•Â{…ó^á¼W8ïÎ{…³ãêì¸:ï"˲¼ YÞå YÞå YÞ„,oÈò†,oÈò†,÷ßûÌí¿wõ_Ÿß_›í¿óEÏÖaØ­HåYî¿s²Xÿ•¬ÿNÐZÿU©uv+R¹E–ûï¬ ýw¾tÙg h†ÝŠTn‘åþ;³¹ÿ¬J3ÊõŽeÿ¹nzfQ+R¹E–[‡a·"•[d¹©Ü"Ë-²üyÚ~öâBM>ð[‘Ê-²ü‡P“Ïû`ë0ìV¤r‹,ÿ„š|^öZ‡a·"•[dù'tÓTS L50Õ®”=²ÜŠTn‘åYþ ÊyËú‰Fœª¦†àì=ÿ,MCPªO©gO¸E–o¡4¡4¡4©4©K²C–[‘Ê-²Ü"Ë?±U²Ì¦TÕ³-Û"Ë·8i¶¬eËøYn†ÝŠTn‘åV¤r‹,·ÈòO„.©][ÍÙ2­­vmµâåV¤r‹,·Èrë0ìV¤r‹,·"•[d¹E–[‘Ê-²Ü"Ë-²ü[#Ö1‰Öè´æiâdoUãåŸP?Ÿp ŸPgž?3mE*·ÈòOÈFý3åQoŒwtÓQ“O¤r‹,·ÃnE*·Èr+R¹!Ë Y¾•ñ›ká»X'ÝD*7dùYMÉÛŸ"«å¥¾^‹œ½×&R¹!ËÍaØM¤rC–›Hå†,7dùVÁ=òS¤+Ê+Ê£k“ŽE5éhÛ÷$X_Û†ZÍ—Nµ:þisv©Üåæ0ì&R¹!ËM¤rC–²Ü†ÝD*7d¹‰TnÈrC–›Hå†,7d¹!Ë·Ú”×ÔŠç«kÁ^<›D–oźŠtA^ÍŽu‘iÃn"•²Ü†ÝD*7d¹‰TnÈrC–oÅÆõ)¥ãá&²|+ÚX]0 ᤣmAÛ‚¶ñYnÈò£¸J{yv.ž: »‰TnÈr©Üå†,7‡a7‘Ê Yn"•²Üå&R¹!Ë YnÈò­p°x,/ÇŠTnÈò£H‡Õe’®HÇè'½‘Ìdžâ"Ë Y¾½Á³}ñp_<Ýuv©Üå&R¹!Ë YnÃn"•²ÜD*7d¹!ËM¤rC–²ÜåGqõs[±¡b&W~N-WY ñ'D–²Ü†ÝD*7d¹‰TnÈrC–›Hå†,7d¹!ËÍaØM¤rC–›Hå†,7d¹‰TnÈrC–²ÜD*7d¹!Ë YnÈò­XE7ÏŠÍZ²iÇfölfÊÆršЬŸ"ÖÞŒV3ã›ÙÝôic»­ÇÿO)Ý`±¸&"ËÍaØM¤rC–›Hå†,7dùV¬aüæà`%ø+"Ë·Ò,³ëB©VŠTnÈòóŠE:'“ÎI\ ®ÆwU¯ZW’.y{+î±QMº¦¼¦<ÚO£Hå†,7‡a7‘Ê Yn"•²ÜåGq•öâ݈,7‡a7‘Ê Yn"•²Üåæ0ì&R¹!ËM¤rC–²ÜD*7d¹!Ë Y¾•æ´áû~ŽáÝ(R¹!Ë·b-QEº"¯fŠÙ&/Óø*ö½WÛp•×yÓìQ¤rC–²|+FÐ EíW¼sÚO£Hå†,7‡a7‘Ê Yn"•²Üå[5Wi/ÞÈrsv©Üå&R¹!Ë YnÃn"•²ÜD*7d¹!ËM¤rC–²Üå[yóSÜ£¨)³6è ¼ ÃãYnÃn"•²ÜD*7d¹!ËbG>¡á݈,7‡a7‘Ê Yn"•²Üåæ0ì&R¹!ËM¤rC–²ÜD*7d¹!Ë Y¾ý‡ßdøH"ËÍaØM¤rC–›Hå†,7d¹9 »‰TnÈr©Üå†,7‘Ê YnÈrC–›Ã°›Hå†,7‘Ê YnÈr©Üå†,7d¹‰TnÈrC–²Üå[a§µ)¥?Ez¨äm^‹mìŠc'ÆØŠ±M]6VÂÞ‹Èrsv©Üå&R¹!Ë Y¾3Ší†ÝD*7dùQJ×ò2©Üåæ0ì&R¹!ËM¤rC–²|+æ”áA”Ãn"•²ÜD*7d¹!ËÍaØM¤rC–›Hå†,7d¹‰TnÈrC–²Ü7YV^<2Ã3¶ ïˆÞ¬nð†çÌ0úCoL~WU+vžD–ÅUÖ¼9Û36¢Œ (‘å&R¹!Ë Y¾7¯e/ŠTnÈr©Üå†,7‘Ê YnÈrC–Ÿr®êíÉñE–o\ ®W“$é´Æ:;cŠTnÈr©Üå†,7‘Ê YnÈrC–E]š’›tMÉý¥£ÿ†’‡¼Kê÷Œž~Žo+²Üå[}´¸°` ø¬"Ëž }ŠWêìÒ9^©ã•:^©ã•:^©ã•úÚ\mòéè öë©Üå&R¹!Ë Y¾6iØ»yŠTnÈrC–›Hå†,7d¹!˸á*Ö‰7ìP%g¿ÎñE–›Hå†,7dùQäÀþØáS¤rC–²ÜD*7d¹!Ë Y~uÁþ€ZŠTnÈrC–›Hå†,7d¹!ËM¤rC–²Üå†,?Š{0 sV g<¸Êx°S)²Üå[aãXsÆÈ“0FxÿÎÞ¦ÈrC–²|+Æícvìw:»œÎ»Èr©Üå†,7d¹‰TnÈrC–²ÜåG)o0ZÁh±»ê¼Wˆ,7‘Ê YnÈrC–›Hå†,7d¹!Ë Yn"•²Üå†,7d¹!Ëó÷>sç¯Îÿ¿}8ïJ9çh²ù;kâ(fyþΛýÜ»¶G”.õ)îP„[œrÎJt‹Sàù‹”ù;_ºœ¿³{?g{~³<gÚÏßù4ÔüY#æÝôüuÇüíû[œ4gÂÜBi–.™.™.YI(Ÿj³ÿ‰}jèºûy½Åiα…[œvÝõŸP“ÏûàO”Ò¨WÏV?¡&Ÿ—½[œŠ¥nzö¬b¹„Ò¨©¦Ú•²‹óê6ŠY}]yD–"õË>U=/T?1J£žý,MCPªO©gwø'|I(M(:êlßB—Ôugx³<úºòˆ,ÿÄVÉ2›’µ”luËV·ê¼e-çEæ'LiÔŠ­Vlµb«W·zu«WÏëÍOä%áJ#›?ï3·àÒ±-Û8dùº×V}Z—4=Ïñ”#²<ŠY}]yD–Gdù·F¨í­ÑiÍӖѶêÓš§çpÊŸP?ŸMÛŸ0DIœ’G]72€ÑpFytÓQoŒÚ>jòÈ2G µëxó·à«Ÿ,@dùVÆoÅu±ž½×!fùQ”·ÉÛŸÒªy©Ï×¥i³58ä3Ä,?Št,Ëߺ¼Œ«Æêm_ºoiçù)ÒååÑŽµIפkÒѶEÛÖ×¶¡Vó¥S­Î'Zn¥ÅZ1Ë"qÕ¸jßÕ‘rÒiÕ]癆˜åGqU“SWÈò³<|\y ËY¾Õæ·&/­t=³|+Æ×A÷Oé¾'fùQj¹SOÒéŠtÅÕÍÕÍUMV}\y Ë·bãú”Ò£ŒVÐŽ`<ðA~Št´-h[ж`–}‰Â,ãѹxv.ž?ÅUl7h[0/£I×Ô ¹/žM W‡úéy,²<Ä,WÈò@–oµÈK_ñ8VÌò­˜µIo$kNÒY¤côOìÍ­˜É‰$vØöų}ñp_<ÝWÑÞÂ6êú®ªÇ /yE«°—bv«m1ÏqD–‡˜å[9%;y±µbž×ç¶ÒÅL®ä*ówB1Ë"¶Vôiakµ¿«´ [+æbí¬¦dVÑb)ì¿eá¸(fyø¸ò@–‡˜åáãÊYÈò³<|\y ËYÈò­˜µø* ÿcmj¿Yù7+c9Í h½Ÿ¬f-nf|³Ö5£Õ¬kÍÊÕÌߦ­ÇÿO)Ý0‡Þ¬shï`ƒuÖ9X'îÌÂ{YÃÓtö§HGç{…ÒøÚu¡T+Å,?JïH—‘ÎIç¤sÒWƒ«ñ]å•-I§ùaWqjÒ5å5åÑ|Å,?JémãÓðn³<|\y Ë·ÒÜ·%ßL1Ë· ÒWƒ«´mÉ®ôqå,ߪ¸oQ¿ú®R¿MºMɼµ®MÉ›¼›¼š†ïcø9†w£˜åGñ:Í~oͦ٨˜åG©åF ¾—ikÒ5醫ÃUÍÅ,WÈò­A7”“ŽÑ»1§ø4Æë¶áݘÓ6§mx7ŠY>®<ågÇÁPêS×Ê`>¤cû"°Ý mÁ¼äUßð‡,´v*fùQ\•·nøH"ËCÌòðqå,dùVAÞüéôÜú)Ê£7b“ŽÞÀã1<Ãã1<Ãã1<Ããù)öq˜É‰$-OÚ›ØFÒ¶ÄÆÇ2¶%³ü(®2Ïñ‘D–‡˜åGQr’[KæybMIÿá#Y6W™GÙßUÚ6¤ÃÖ’>Ml­°µÒS\WÈò³<|\y ËY~9°?¼*Å,WÈò³<|\y ËYb–‡+dy ËY¾vŠ·dÅó£è«bõ)¬_Å6-b#ÆØ‰1¶blSƒ•lžt‹ØØÁN®²òofÔfF±)c›µ™=›ñÝŒo3¾M;Z^†±ÍbÍ“®i[Ó¶¦mÍx4ó£YYñ  Êð  ê·ðs••µë»ªQe‹GdùQÜ—gYã4ë ™Èò³|+Æ/Mdyn²¬¼xd†¦˜åG©¼¡7gèá93Œþ°L~WÕ"vžD–oEoàÍÞœáÍÙÐÞÁ6æk6>Ø8ÛRÎn”b–õ]m©E:¶¹/=…ôqå,dùVìu_0‚Kýç—“.¸\ïêH%é’$÷•­ùU\-ÚV_:J.JÞ”¼É»É»ÉÑôFsµ©sé(y¨ÕPò÷£ C_éé'²<å,ßê£ À…åÿš:£lÛQˆþ÷(î`ç?±N„Ú¾Õ¯ÖE j 'iÚiï|‘,7¼KnNï,D»‰ÿÁJV°Ò€•™»0E§ÞY>uÚa¯a¯c›Sd!s§Êò‡ˆI·+•~î´»ugä[‰qú:})ÑéøÌ]¯Ó;Ë])¶MÚŽO]+>Èðéåƒn;F^ŒœŒœô%:Éêåƒd°ð¸E/X¸*Ë›w–¢¯Ñ—Ùº…²p¤ÌÂ?1v ¸|ÀåƒL¥ÞY>ˆvÚ#ˆñ Æã¹RÙD;¹ÍàÜTYÞT–?DÜ“ïŒXWŠÎÌQ0GÁE22³¬™`!WÜ&TYÞT–÷W1þt¥zÚ`ލ&× ãÜ5TYÞ¼³¼ùŸ+o*Ë›Êò¦²¼ygyó?WÞT–7•åMey«²üšÎŒ÷ß3+ï¿Çsï¿'R?÷üìÈ'Ò>pãS¢ì᪊p@S;Ñý¨úEÊBm†ÀóôÈUYþÀR/©\ÿ¨B »‡žUkç€P™SÙü-V¬*ËÇ­Ö0ôôŠºWEÀ­O½­õ™\÷ÁÌG G®äødrýxøu›; ºû£g=2ð‘ |dNý*øDK «Êò4•‰þ@ œñ=ý¬¡/Ò4Óɽuyù€žUiàÔæQ›G"¹®*Ë„€â|ªqjä H±Z•åHçÊ¡ 6®6²bÉŠ%+–¼ºäÕª,`è/2§~,{€ÚÈœú}ìˆ:6–b£*˨͒>)‘–çÒ|Ueù (·,MeU–¿=B¶§f'µNS~N©‘Z§)}R~®¤íÐÁ¶[ÕVl¹¥Xý€ºëYÅèP›T™³µK…?€ÝOЕ僤µa?¶ÀâÏ…&Hûb±áƒò"¤›§±oÏ­ù$Çue¹RGêHÝ[.îÊòAƒg<!Œ7;lÑ.iÇöoØfØvÏÛhµÑjßãEs¬t­¿®,„•îH±ÍI]Y.D Ý0R-ή,¢ÇÃÈxÍ™}×26N*«íADXhŸîw–Òvc¡³Ñ"@)ššÏI;æ-&íÒ…t]é¡iÒC›º³5à ;ó1˜…´Ã¶mc\éI«Á,prG§qv‡ç‹»Ûë’S¶+ËmÚÅc_)ú1¿œÌýÎr¡z@Š]ÎiãX¶'#±>xØs¼ñ°~Ÿ‰t"]H‰Îó®,„8ÛÃÝ8Ým²cN¬œ¿+•Ç¡]Y.D;1]Y. DVüÄkЈ®,„׿¥­øo²’烔u4'Ò‰møtNz°;N<9וb;æ$ê&Q7“‘ól¬$þæõ={ç"êQ·D ûåB tûJ¿ÅÌ,ÖôìÊr!i°XµpƒØbÿ[¬™…ΉÎÉ Hv†dH1¥~g¹4HÖyæEHÑ ‰âÍs7qºñ$åEH‰N˜K¿³\èÑc€X{]¤YØè s±­ùõßdÜ¢4 ]Y>Èi´ ÚíÆ½‹!WÊ•MïÊòA“g,P"MÆKÆÃ8M¿³\Hí Û¸sve¹´‚çteù àoXi:Sžã\YûåBHW]Y.DI»‰~óJÑo¡Ë¢·VÃk¶è«óÈaA÷qxŽ»n§éÊòAƒ¾Üš}"ESGSç¹÷2í̬Å}#ÝH¹Ø‡vþ®,ân/¾æá tf+HvÀiœëvW–¶À¶À¶`à9]Y>(ùV†.ÏñÀÊAìÂ}úåB ¢‡ÑŽ(Dñ Šó [êw– 12³—òú®ËAøj*“‘‰Øà>ýÎr!Úm¤¤U`<ãqÃx^ÄßXÉqÏqòýÎòAØöãñBzÂÉFô;Ë…®tnN‰¬ø¯=7åÄÚðl©ßY.D»DÊ:zòJ± ŸÂ¥Õï,.Õï,z@DvL¬ÊaU]Y.$o{éÊr¡bd¿=Њ=VÕ•åBèÇšž~¬n2;¿rØ’Oâoâ¡Éj„ñ8‰_~Rt&ã‹ç®A;bƒ,Œ“}éw–šHYQ‹Ø )ã‹EåEH™ßd~;R,ÃI³te¹RlKlKfÞÔ•åƒX0(‡A9 Ê+“5ç•j.aZN²ÇIòô;˱*’ý%™_¸Y¿³|^ƒ¥ueùC°4‡‘ù&Ša_N2É7>Ø0€76{Äf?Øìû¹RY‡srP›sØœÃæ6çäŸúåBH‰ñËúHK9¨~g¹Ð•*9ýÓÚxb¿³\h‚è«]9~äºЦ~g¹íÒt Õ0Æ 3äÃúåBH'¶Mt™ôXŒ¼yÑwaåÂI»DšèœŒœôØhµyÓ÷VîÌhMwe¹¤á{sµÓª ØkÞ…Ÿö;Ë…h7‘â?XiÀJV°Ò s–ôØØ±i‡½Ž•Ôs‚‚NW– уHô[q±+•~®½®+Ë…¯ù­Éˆ3„ã5rxýÎr!Ú‰þ %&)1ue¹=ˆDÇ“Nüù¶….T†<™˜ô¤/Ñ ãîw– !Ýè¼™øƒ…,ð¦@ÜëÞþzÛŸKçúÇy·¨W”ýõ’±þ ö¹D.‘#JV£—Ô ‰–DzúC>ì0•–_ýˆ!“ÇL¹³ã/ÉCÖ Q ‰dà#øÈÀú]ð¢h5MSç¬_°ZÕ¾G½`»€ÆÙ 5MÁtÀj ¯NéÓ‰à¨Õ¥åH$×M)6×]Z6•–_j³=ÎR¬.yu@müKV,Y±dÅ’K^]òêÒÂëûÍ PýBö‰&¢ž”¥ØèÒò¤OJ$“—–çR -M\gM¥eSiÙTZ~7 Ùžš”ª)År©±Öi*HR~ÞÖmúbð¶-×míT[°5Ý{†ÀH¶ïTØÔþ["Eæ–býìBr!!-û±þžb¼é¢o^¤mó·y†´{7à‹ÔÎä9Õ–BêHÑ´™¬Q[6jË´{.b¼Éx麈vI;l3l3l³kÛ¾‡ Zmiå?öËþ v!¤ŽÛÛ\¡¤Ú²Q[>ˆÓl ŮթڲQ[6}»}ñŸUæZT¿‹&Hº§.gE€´ìú+Ø…> I»I»‰t!]Hו&­­´«Ûø´G§›jËÂŽÁ|Œ ¶ lØ6Æ•&HZqrG§qv‡§qz¾)¶¼d&@h/ý6Òë b·3­FmÙôìBô€¤µq.[ÿÂËôìBHŸ‹h‡78§_„o<ÄÁC<ÄG»q¶‡»qºÇ»Möɉmów¥òË$Æa6YÝr Mè¯`bdöµéŒôÅ“µ?ÇEðVü7YÉ“=:¡Ú²é+Ø…ÐïNvljÿæBJ¬ABT[6}»}óö½\o°wNâê¢Ú²Q[6}»ÐݾòäâœYœ3‹Õ½XÝ‹ËÁbÕBV b [ÄËb¥$+%™óQz¯ æ(Ùë` –ÄsæE²2Ñ YÉûw‘Úm¢s›èÜDçFÓMtn¢sÐÛÄÐ^É÷7/ñßd\£ä{Õ–?ä  ]Ð.Ž{C:r ûi}¨¶ü¡I»JÆKÆK¤Ø§é¯`BŠm\:U[6}»¤•ÅE)4h7¤ØfØfŠ+Õ–Úò‡&úM¤xÃú-F^ŒÌµÕ}×í‹VZ÷qxŽ»v8‡É¨¶ü¡A_®Í®ÕØ_Á.„t¸M{Ò.‘n¤)š†vÕ–Úò‡ŒvÒ¹ß_Á.„;à4Î}[µåa[`[`[àûXhµÐ*AÚú+Ø…$ä/¶qÁï¯`J4€õW° !%v‡323=XÉÃé‹ÿqGò¯†Î­þ v!¤DâHÚá Ãx|\oì+E+âÆóä‹Èä`ùÃJ~)¶=Øöã¤'œü„Âú+Ø…®4AŒ|ÓK#?ôÅÏÍ>±Î¢ Žäp$)þƒ7õW°"Ö¼û°;Nü7u2õW° =  "=†ÇaUª-$oÀªT[6}»#°*‡U9¬JµeÓW° ݾ<—Õ=ÉöÁ¯¶äpŸ›guSìÁÉÌ8‰'ã¤bœ\Œ¯q툈Åi°Øï×Í9¢ébEÁsœ¬Œ“iq²'¾˜_xŽj˲‹hÇú€½)¶%¶%ë#Y0(‡A9 ÊaPƒòœH±ÄNû N:8׋Ð/‘âdIÖG2ÓÉú€¥9,MµeûjËzŒÌ7{'œKµå‰ƳñÜì=Þâ òMýìBB«u‘¢6ç°¹!Ŷ}m#ÆIK9ü/~:{ú+Ø…jí«¶lÔ–"nôµÛWyìÉ)`ŒAÆ+~é@:>hð Áƒö:»û+Ø…Nô›Œ<y1ò¢ï¢ïB«Ä‰4¯”‘“‘­6#oúnú޲¦¯N¿ t¢Ú²Q[>õ=—<\˜öÎþ v!¤x—Ü\ÀJV°Ò€•¬4`¥+ Xi¹ öi‡7ÈÍõW° 9ˆz ÑéD§‹Õ÷W° !Õ^§Ú²Q[>ˆ‘¾~û¢ÑéD'™» säæú+Ø…N4 :ïšû+Ø….ô[Œ¼9;ÑéD'yÂþ v¡+eä;Ä,<`á [ 1Õ ïäãÊ‚$ü"úí¨)ÂåƒL¥jË¡v`Õ–?DŒ1ÌQLôcŽ‚9â Ú²Q[6jËbæˆ|g»#3G‘ŒÌyûâIÖ ·‰à6äOU[¶¯zì t¥™jbq 2®Á]Cµe£¶lú v!ú2«Ü?‚ûGpÿîÁý#¸YÝ®-ÿþÞÿþûh*Í̹ˆ linbox-1.4.2/benchmarks/omp-benchmark.C000066400000000000000000000243761274717217100200020ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by AJS * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/omp-benchmark.C * @ingroup benchmarks * @brief f */ #include "linbox/linbox-config.h" #include #include #include #include #include "benchmarks/CSValue.h" #include "benchmarks/BenchmarkFile.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/vector/blas-vector.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/util/timer.h" #include "linbox/ring/modular.h" #include "linbox/matrix/sparsematrix/sparse-tpl-matrix-omp.h" #include "linbox/blackbox/transpose.h" #include "linbox/vector/vector-domain.h" #include "examples/map-sparse.h" #include "linbox/algorithms/blackbox-block-container.h" #include "linbox/algorithms/block-massey-domain.h" using namespace LinBox; typedef Givaro::Modular Field; typedef TriplesBBOMP OMPBB; typedef TriplesBB SeqBB; typedef SparseMatrix VPVBB; int randRange(int start, int end) { double rval = rand(); static const double NORMALIZING_CONSTANT = 1.0/(1.0+RAND_MAX); double normedRVal = rval*NORMALIZING_CONSTANT; double rangeSize = end-start; int offset = rangeSize*normedRVal; return start+offset; } template void runBlockWiedemann(BenchmarkFile& of, typename Blackbox::Field F, MapSparse matA, MapSparse matU, MapSparse matV, int iters) { typedef typename Blackbox::Field Field; typedef BlackboxBlockContainer BlockContainer; typedef BlasMatrix Block; int m=matA.rowdim(); int n=matA.coldim(); int p=matU.rowdim(); int q=matV.coldim(); Blackbox A(F,m,n); Block U(F,p,m), V(F,n,q); matU.copy(U); matV.copy(V); matA.copy(A); A.finalize(); BlockContainer Sequence(&A,F,U,V); BlockMasseyDomain MBD(&Sequence); std::vector minpoly; std::vector degree; double start = omp_get_wtime(); for (int i=0;i void runMMP(BenchmarkFile& of, typename Blackbox::Field F, MapSparse leftMat, MapSparse rightMat, int iters) { typedef typename MatrixDomain::OwnMatrix OwnMatrix; int m=leftMat.rowdim(); int n=leftMat.coldim(); int p=rightMat.coldim(); Blackbox A(F,m,n); OwnMatrix x(F,n,p), y(F,n,p); linbox_check(n==p); leftMat.copy(A); rightMat.copy(x); A.finalize(); double start = omp_get_wtime(); for (int i=0;i void runMVP(BenchmarkFile& of, typename Blackbox::Field F, MapSparse mat, MapSparse vec, int iters) { typedef typename Blackbox::Field Field; typedef typename Field::Element Element; typedef typename std::vector Vector; int m=mat.rowdim(); int n=mat.coldim(); Blackbox A(F,m,n); Vector x(n), y(n); mat.copy(A); vec.toVector(x); A.finalize(); double start = omp_get_wtime(); for (int i=0;i A(F,n,n); MapSparse U(F,n,m); MapSparse V(F,m,n); MapSparse::generateRandMat(A,nnz,q); MapSparse::generateDenseRandMat(U,q); MapSparse::generateDenseRandMat(V,q); benchmarkFile.addDataField("algorithm",CSString("Block-Wiedemann Parallel")); runBlockWiedemann(benchmarkFile,F,A,U,V,iters); benchmarkFile.pushBackTest(); benchmarkFile.addDataField("algorithm",CSString("Block-Wiedemann Seq")); runBlockWiedemann(benchmarkFile,F,A,U,V,iters); benchmarkFile.pushBackTest(); } void MMPBenchmark(BenchmarkFile& benchmarkFile, int n, int m, int nnz, int iters, int q) { benchmarkFile.addMetadata("problem",CSString("Matrix-Matrix Product")); Field F(q); MapSparse A(F,n,n); MapSparse X(F,n,m); MapSparse::generateRandMat(A,nnz,q); MapSparse::generateDenseRandMat(X,q); benchmarkFile.addDataField("algorithm",CSString("TriplesBBOMP-applyLeft")); runMMP(benchmarkFile,F,A,X,iters); benchmarkFile.pushBackTest(); benchmarkFile.addDataField("algorithm",CSString("TriplesBB-seq-applyLeft")); runMMP(benchmarkFile,F,A,X,iters); benchmarkFile.pushBackTest(); } void MVPBenchmark(BenchmarkFile& benchmarkFile, int n, int nnz, int iters, int q) { benchmarkFile.addMetadata("problem",CSString("Matrix-Vector Product")); Field F(q); MapSparse A(F,n,n); MapSparse X(F,n,1); MapSparse::generateRandMat(A,nnz,q); MapSparse::generateDenseRandMat(X,q); benchmarkFile.addDataField("algorithm",CSString("TriplesBBOMP-apply")); runMVP(benchmarkFile,F,A,X,iters); benchmarkFile.pushBackTest(); benchmarkFile.addDataField("algorithm",CSString("TriplesBBOMP-applyLeft")); runMVP(benchmarkFile,F,A,X,iters); benchmarkFile.pushBackTest(); benchmarkFile.addDataField("algorithm",CSString("TriplesBB-seq-applyLeft")); runMVP(benchmarkFile,F,A,X,iters); benchmarkFile.pushBackTest(); benchmarkFile.addDataField("algorithm",CSString("TriplesBB-seq-apply")); runMVP(benchmarkFile,F,A,X,iters); benchmarkFile.pushBackTest(); benchmarkFile.addDataField("algorithm",CSString("SparseMatrix::VPV")); runMVP(benchmarkFile,F,A,X,iters); benchmarkFile.pushBackTest(); } int main(int argc, char **argv) { int numThreads=1,n=50000,m=100,nnz=50000,q=65521,iters=1; bool runMMPBenchmarks=false,runMVPBenchmarks=false,runWiedemann=false; static Argument args[] = { { 't', "-t THREADS", "Number of threads", TYPE_INT, &numThreads }, { 'n', "-n N", "Dimension of N*N matrix A", TYPE_INT, &n }, { 'm', "-m M", "Dimension of N*M matrix X", TYPE_INT, &m }, { 'z', "-z NNZ", "Number of non-zero entries", TYPE_INT, &nnz}, { 'q', "-q PRIME", "Use field GF(Q) for prime Q", TYPE_INT, &q}, { 'i', "-i ITERS", "Number of iterations", TYPE_INT, &iters}, { 'a', NULL, "Run Matrix-Matrix Benchmarks", TYPE_BOOL,&runMMPBenchmarks}, { 'b', NULL, "Run Matrix-Vector Benchmarks", TYPE_BOOL,&runMVPBenchmarks}, { 'c', NULL, "Run Block-Wiedemann Benchmarks", TYPE_BOOL,&runWiedemann}, END_OF_ARGUMENTS}; parseArguments (argc, argv, args); BenchmarkFile benchmarkFile; benchmarkFile.addMetadata("Field-Implementation",CSString("Givaro::Modular")); benchmarkFile.addMetadata("num_threads",CSInt(numThreads)); benchmarkFile.addMetadata("N*N Blackbox Dimensions",CSInt(n)); benchmarkFile.addMetadata("Fat Vector Dimension",CSInt(m)); benchmarkFile.addMetadata("nnz",CSInt(nnz)); benchmarkFile.addMetadata("iterations",CSInt(iters)); benchmarkFile.addMetadata("date",BenchmarkFile::getDateStamp()); benchmarkFile.addMetadata("GF(q)",CSInt(q)); benchmarkFile.setType("date",BenchmarkFile::getDateFormat()); benchmarkFile.setType("time","seconds"); omp_set_num_threads(numThreads); if (runMMPBenchmarks) { MMPBenchmark(benchmarkFile,n,m,nnz,iters,q); benchmarkFile.write(std::cout); } if (runMVPBenchmarks) { MVPBenchmark(benchmarkFile,n,nnz,iters,q); benchmarkFile.write(std::cout); } if (runWiedemann) { blockWiedemannBenchmark(benchmarkFile,n,m,nnz,iters,q); benchmarkFile.write(std::cout); } return 0; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/optimizer.h000066400000000000000000000034751274717217100173430ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/optimizer.h * @ingroup benchmarks * */ #ifndef __LINBOX_benchmarks_optimizer_H_ #define __LINBOX_benchmarks_optimizer_H_ namespace LinBox { /* optimiser from a graph. */ /* * ----- * if (a < threshold) then * toto() * else * titi() * ---- * * OR (always better) * * ---- * toto(); * ---- */ // Optimizer opt(Data,Skeleton); // opt.run(); // opt.report("file"); /* optimiser from two timers */ // Optimizer opt(class1,class2,Skeleton); // opt.run(); // opt.report("file") // // opt.fit() // // class Optimizer { void report(const std::string & filename) ; void run() ; void fit(); } } #endif // __LINBOX_benchmarks_optimizer_H_ // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/benchmarks/perfpublisher.sh000077500000000000000000000112401274717217100203460ustar00rootroot00000000000000#!/bin/bash # Script to format benchmarks results into a single xml file. # See https://wiki.jenkins-ci.org/display/JENKINS/PerfPublisher+Plugin # ----- # 2014/11/17 - Written by AB XMLFILE=$1 benchmarks=$2 COMPILER=$3 # choose gdate on OS X if command -v "gdate" >/dev/null; then DATE=gdate else DATE=date fi #=================# # Plateform infos # #=================# COMPILERVERSION=$($COMPILER --version 2>&1 | head -1) if command -v "lscpu" >/dev/null; then CPUFREQ=$(lscpu | grep "MHz" | rev | cut -f1 -d' ' | rev) else CPUFREQ=$((`sysctl -n hw.cpufrequency`/1000000)) fi ARCH=$(uname -m) OSNAME=$(uname -s) OSVERSION=$(uname -r) if hash lsb_release 2>/dev/null then DISTRIB=$(lsb_release -ds) else DISTRIB='Unknown distribution' fi #==========# # Prologue # #==========# if [[ -f $XMLFILE ]] then echo '----> WARNING: File '$XMLFILE' is not empty.' echo '----> Results will be added to its end.' fi #========# # Header # #========# echo '' >> $XMLFILE echo '' >> $XMLFILE #=======# # Start # #=======# echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE #============# # Benchmarks # #============# for benchmark in $benchmarks do if [[ ! -f $benchmark ]] then #File does not exist: compile it echo '[Compiling]' $benchmark COMPILESTART=$($DATE +%s%3N) COMPILELOG=$(make $benchmark 2>&1; echo 'Returned state: '$?) COMPILEEND=$($DATE +%s%3N) COMPILETIME=$(($COMPILEEND - $COMPILESTART)) COMPILECHECK=$(echo $COMPILELOG | grep -o '[^ ]*$') COMPILETIMERELEVANT='true' else #File does exist echo '[Already compiled]' $benchmark COMPILELOG='(Previously compiled)' COMPILETIME='0.0' COMPILECHECK='0' COMPILETIMERELEVANT='false' fi if [[ $COMPILECHECK -ne 0 ]] then #Compilation failure # EXECUTED='no' - keep it to yes so that Jenkins # uses it within its results EXECUTED='yes' PASSED='no' STATE='0' EXECUTIONLOG='(Not executed)' EXECUTIONTIME='0.0' PERFORMANCEFLOPS='0.0' COMPILETIMERELEVANT='false' EXECUTIONTIMERELEVANT='false' PERFORMANCEFLOPSRELEVANT='false' ERRORLOG='Does not compile.' echo '-> Does not compile.' else #Compilation success echo '[Executing]' $benchmark EXECUTED='yes' EXECUTIONLOG=$(./$benchmark 2>&1) if [[ ${EXECUTIONLOG,,} != "time:"* ]] then #Execution failure PASSED='no' STATE='0' EXECUTIONTIME='0.0' PERFORMANCEFLOPS='0.0' EXECUTIONTIMERELEVANT='false' PERFORMANCEFLOPSRELEVANT='false' ERRORLOG='Unexpected output.' echo '-> Unexpected output.' else #Execution success PASSED='yes' STATE='100' EXECUTIONTIME=$(echo $EXECUTIONLOG | cut -d' ' -f2) PERFORMANCEFLOPS=$(echo $EXECUTIONLOG | cut -d' ' -f4) EXECUTIONTIMERELEVANT='true' if [[ ${PERFORMANCEFLOPS,,} != "irrelevant" ]] then PERFORMANCEFLOPSRELEVANT='true' else PERFORMANCEFLOPSRELEVANT='false' PERFORMANCEFLOPS='0.0' fi ERRORLOG='' fi fi echo '' >> $XMLFILE echo 'BENCHMARK' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE # Logs echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE # Times echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE echo '' >> $XMLFILE done #========# # Footer # #========# echo '' >> $XMLFILE #==========# # Epilogue # #==========# echo 'Results correctly exported to' $XMLFILE linbox-1.4.2/configure.ac000066400000000000000000000225751274717217100153230ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # This file is part of LinBox (and probably stolen here and there) # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ AC_PREREQ([2.61]) AC_INIT([LinBox], [1.4.2],[linbox-use@googlegroups.com],[linbox], [http://www.linalg.org/]) AC_CONFIG_MACRO_DIR([macros]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([1.8 gnu no-dependencies -Wall -Wno-portability foreign]) AC_CONFIG_HEADERS([config.h]) AX_PREFIX_CONFIG_H(linbox/config.h, __LINBOX) AC_PATH_PROG(RM, rm, $FALSE) RM="$RM -f" AM_MAINTAINER_MODE AM_DEP_TRACK AM_OUTPUT_DEPENDENCY_COMMANDS AM_ACLOCAL_INCLUDE(macros) # work around to fix the backward compatibility issue of automake 1.10 with 1.9 (pb with MKDIR_P) AC_SUBST([MKDIR_P]) AC_LANG([C++]) echo "-----------------------------------------------" AC_DEBUG AC_PROFILE AC_WARNINGS echo "-----------------------------------------------" # CFLAGS=${CFLAGS:-$DEFAULT_CFLAGS} # CXXFLAGS=${CXXFLAGS:-$DEFAULT_CXXFLAGS} ###################################################### # Try and pass different flags according to compiler # ###################################################### # disable default -g -O2 CXXFLAGS : ${CXXFLAGS=""} #set CXX AC_PROG_CXX AC_COMPILER_NAME STDFLAG=${CXXFLAGS} CXXFLAGS="" # We need a C++11 compiler now - AB 2014-12-12 AX_CXX_COMPILE_STDCXX_11([],[mandatory]) AC_SUBST([DEFAULT_CFLAGS]) AC_SUBST([DEBUG_CFLAGS]) AC_SUBST([TESTS_CFLAGS]) TESTS_CFLAGS="-O2" DEBUG_CFLAGS="-g" DEFAULT_CFLAGS="" WARN_CFLAGS="-Wall" #TODO use -fast for icc, -ipa for eko... if test "x$DBG" = "xyes" ; then DEFAULT_CFLAGS="-O0 ${DEFAULT_CFLAGS} " #those are CXXFLAGS DEBUG_CFLAGS="${DEBUG_CFLAGS} -DDEBUG -D_LB_DEBUG" else DEFAULT_CFLAGS="-O2 ${DEFAULT_CFLAGS} " DEBUG_CFLAGS="${DEBUG_CFLAGS} -DNDEBUG -U_LB_DEBUG" fi if test "x$PROF" = "xyes" ; then DEFAULT_CFLAGS="${DEFAULT_CFLAGS} -pg" fi if test "x$WARN" = "xyes" -o "x$WARN" = "xfull" ; then case x${CCNAM} in xicc) WARN_CFLAGS="${WARN_CFLAGS} -Wcheck" WARN_CFLAGS="${WARN_CFLAGS} -Wall -Wno-unused-parameter -Wuninitialized -Wconversion -Wcast-qual -pedantic -Wshadow -Wpointer-arith -Wwrite-strings -Wno-long-long" WARN_CFLAGS="${WARN_CFLAGS} -Wextra -ansi" ;; xeko) WARN_CFLAGS="${WARN_CFLAGS} -Wno-unused-parameter" ;; xgcc|xgcc44) WARN_CFLAGS="${WARN_CFLAGS} -Wextra -Wno-unused-parameter" if test "x${WARN}" = "xfull" ; then WARN_CFLAGS="${WARN_CFLAGS} -Wuninitialized -Wconversion -Wcast-qual -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wno-long-long -Wno-variadic-macros -Wno-vla" fi if test "x${HAVE_CXX11}" = "x0" ; then WARN_CFLAGS="${WARN_CFLAGS} -ansi" fi ;; xgcc48) WARN_CFLAGS="${WARN_CFLAGS} -Wextra -Wno-unused-parameter" if test "x${WARN}" = "xfull" ; then WARN_CFLAGS="${WARN_CFLAGS} -Wuninitialized -Wconversion -Wcast-qual -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wno-long-long -Wno-variadic-macros -Wno-vla" # WARN_CFLAGS="${WARN_CFLAGS} -fsanitize=address" fi if test "x${HAVE_CXX11}" = "x0" ; then WARN_CFLAGS="${WARN_CFLAGS} -ansi" fi ;; xclang) WARN_CFLAGS="${WARN_CFLAGS} -Wextra -Wno-unused-parameter" if test "x${WARN}" = "xfull" ; then WARN_CFLAGS="${WARN_CFLAGS} -Wuninitialized -Wconversion -Wcast-qual -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wno-long-long -Wno-vla-extension -Wno-variadic-macros" WARN_CFLAGS="${WARN_CFLAGS} -D__STRICT_ANSI__" fi ;; xclang31) WARN_CFLAGS="${WARN_CFLAGS} -Wextra -Wno-unused-parameter" if test "x${WARN}" = "xfull" ; then WARN_CFLAGS="${WARN_CFLAGS} -Wuninitialized -Wconversion -Wcast-qual -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wno-long-long -g -Wno-vla-extension -Wno-variadic-macros" WARN_CFLAGS="${WARN_CFLAGS} -D__STRICT_ANSI__" # WARN_CFLAGS="${WARN_CFLAGS} -fsanitize=address" fi ;; *) echo echo "*******************************************************" echo "unsupported compiler ($CCNAM). Please file a bug." echo "*******************************************************" echo WARN_CFLAGS="${WARN_CFLAGS}" esac fi DEFAULT_CFLAGS="${DEFAULT_CFLAGS} ${WARN_CFLAGS} ${DEBUG_CFLAGS}" TESTS_CFLAGS="${TESTS_CFLAGS} ${WARN_CFLAGS} ${DEBUG_CFLAGS}" AC_HEADER_STDC AC_PROG_LIBTOOL # newer libtool... LT_PREREQ([2.2]) LT_INIT echo "-----------------------------------------------" echo " START LINBOX CONFIG " echo "-----------------------------------------------" echo "-----------------------------------------------" LB_OMP echo "-----------------------------------------------" AC_SUBST([PARFLAGS],['${OMPFLAGS}']) AC_SUBST([PARLIBS],['${OMPFLAGS}']) # Machine characteristics AC_CHECK_SIZEOF(char, 8) AC_CHECK_SIZEOF(short, 16) AC_CHECK_SIZEOF(int, 32) AC_CHECK_SIZEOF(long, 32) AC_CHECK_SIZEOF(long long, 64) AC_CHECK_SIZEOF(__int64, 64) # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([float.h limits.h stddef.h stdlib.h string.h sys/time.h stdint.h pthread.h]) # check endianness of the architecture AC_C_BIGENDIAN( [AC_DEFINE(HAVE_BIG_ENDIAN, 1, [Define that architecture uses big endian storage])], [AC_DEFINE(HAVE_LITTLE_ENDIAN, 1, [Define that architecture uses little endian storage])], []) echo "-----------------------------------------------" # Feature checks LB_MISC LB_DRIVER echo "-----------------------------------------------" # Now getting GMP and Givaro from FFLAS-FFPACK - AB 2014-12-10 PKG_CHECK_MODULES([FFLAS_FFPACK], [fflas-ffpack]) dnl LB_CHECK_FFLAS_FFPACK(,,[ dnl echo '' dnl echo '*******************************************************************************' dnl echo ' ERROR: Fflas-Ffpack not found!' dnl echo dnl echo ' Fflas-Ffpack routines are required for this library to compile. Please' dnl echo ' make sure they are installed and specify its location with the option' dnl echo ' --with-fflas-ffpack= when running configure.' dnl echo ' Also make sure your compiler supports cxx-11...' dnl echo '*******************************************************************************' dnl exit 1 dnl ]) LB_CHECK_LAPACK # AC_MSG_RESULT($BLAS_LIBS) # AC_MSG_RESULT($BLAS_CFLAGS) LB_CHECK_IML LB_CHECK_M4RI LB_CHECK_M4RIE LB_CHECK_MPFR # we nedd mpfr next : LB_CHECK_FPLLL LB_CHECK_FLINT LB_CHECK_NTL LB_CHECK_SACLIB LB_CHECK_MAPLE LB_CHECK_SAGE LB_CHECK_EXPAT LB_BENCH LB_CHECK_XML # LB_OPT LB_DOC LB_CHECK_OCL if test ! -d ./benchmarks/data ; then echo "Creating data dir in benchmark" ; mkdir ./benchmarks/data ; fi DEPS_CFLAGS="${FFLAS_FFPACK_CFLAGS} ${NTL_CFLAGS} ${MPFR_CFLAGS} ${FPLLL_CFLAGS} ${IML_CFLAGS} ${FLINT_CFLAGS}" DEPS_LIBS=" ${NTL_LIBS} ${MPFR_LIBS} ${FPLLL_LIBS} ${IML_LIBS} ${FLINT_LIBS} ${OCL_LIBS} ${FFLAS_FFPACK_LIBS} ${XML_LIBS}" CXXFLAGS="${CXXFLAGS} ${STDFLAG}" AC_SUBST(CXXFLAGS) AC_SUBST(DEPS_CFLAGS) AC_SUBST(DEPS_LIBS) echo "-----------------------------------------------" dnl MYLIBS="${FFLAS_FFPACK_LIBS} ${NTL_LIBS} ${MPFR_LIBS} ${FPLLL_LIBS} ${IML_LIBS} ${FLINT_LIBS} ${LDFLAGS} ${OCL_LIBS}" dnl MYLIBS="${LIBS}" dnl MYFLAGS="${FFLAS_FFPACK_CFLAGS} ${NTL_CFLAGS} ${MPFR_CFLAGS} ${FPLLL_CFLAGS} ${IML_CFLAGS} ${FLINT_CFLAGS} ${OPT_FLAGS}" echo "CXXFLAGS = ${CXXFLAGS}" echo "LIBS = ${LIBS}" echo "DEPS_CFLAGS = ${DEPS_CFLAGS}" echo "DEPS_LIBS = ${DEPS_LIBS}" echo "DEFAULT CFLAGS = ${DEFAULT_CFLAGS}" echo "TESTS CFLAGS = ${TESTS_CFLAGS}" echo "-----------------------------------------------" echo " END LINBOX CONFIG " echo "-----------------------------------------------" AC_CONFIG_FILES([ Makefile linbox-config examples/Makefile doc/Makefile linbox/Makefile linbox/algorithms/Makefile linbox/algorithms/gauss/Makefile linbox/algorithms/matrix-blas3/Makefile linbox/algorithms/opencl-kernels/Makefile linbox/algorithms/polynomial-matrix/Makefile linbox/blackbox/Makefile linbox/element/Makefile linbox/field/Makefile linbox/matrix/Makefile linbox/matrix/sparsematrix/Makefile linbox/matrix/densematrix/Makefile linbox/matrix/matrixdomain/Makefile linbox/matrix/sliced3/Makefile linbox/randiter/Makefile linbox/ring/Makefile linbox/ring/ntl/Makefile linbox/ring/modular/Makefile linbox/solutions/Makefile linbox/util/Makefile linbox/util/formats/Makefile linbox/vector/Makefile tests/Makefile tests/data/Makefile tests/matrix/Makefile interfaces/Makefile interfaces/driver/Makefile interfaces/maple/Makefile interfaces/kaapi/Makefile interfaces/sage/Makefile macros/Makefile benchmarks/Makefile benchmarks/data/Makefile benchmarks/matrix/Makefile linbox.pc ]) # linbox/algorithms/IML/Makefile # examples/Readme-make # examples/field # examples/solver # examples/blackbox # examples/data AC_OUTPUT echo "-----------------------------------------------" linbox-1.4.2/doc/000077500000000000000000000000001274717217100135675ustar00rootroot00000000000000linbox-1.4.2/doc/Doxyfile.mod000066400000000000000000002275431274717217100160700ustar00rootroot00000000000000# Doxyfile 1.8.0 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or sequence of words) that should # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. PROJECT_NAME = linbox # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = . # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = YES # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = YES # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = YES # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = "bib=\xrefitem bib \"Bibliography\" \"Bibliography\"" # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding # "class=itcl::class" will allow you to use the command class in the # itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given extension. # Doxygen has a built-in mapping, but you can override or extend it using this # tag. The format is ext=language, where ext is a file extension, and language # is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, # C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C # (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions # you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. EXTENSION_MAPPING = # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all # comments according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you # can mix doxygen, HTML, and XML commands with Markdown formatting. # Disable only in case of backward compatibilities issues. MARKDOWN_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate getter # and setter methods for a property. Setting this option to YES (the default) # will make doxygen replace the get and set methods by a property in the # documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = YES # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and # unions are shown inside the group in which they are included (e.g. using # @ingroup) instead of on a separate page (for HTML and Man pages) or # section (for LaTeX and RTF). INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and # unions with only public data fields will be shown inline in the documentation # of the scope in which they are defined (i.e. file, namespace, or group # documentation), provided this scope is documented. If set to NO (the default), # structs, classes, and unions are shown on a separate page (for HTML and Man # pages) or section (for LaTeX and RTF). INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. # When the cache is full, less often used symbols will be written to disk. # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on # a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. SYMBOL_CACHE_SIZE = 0 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given # their name and scope. Since this can be an expensive process and often the # same symbol appear multiple times in the code, doxygen keeps a cache of # pre-resolved symbols. If the cache is too small doxygen will become slower. # If the cache is too large, memory is wasted. The cache size is given by this # formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = YES # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = YES # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = YES # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen # will list include files with double quotes in the documentation # rather than with sharp brackets. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = NO # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen # will sort the (brief and detailed) documentation of class members so that # constructors and destructors are listed first. If set to NO (the default) # the constructors will appear in the respective orders defined by # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to # do proper type resolution of all parameters of a function it will reject a # match between the prototype and the implementation of a member function even # if there is only one candidate or it is obvious which candidate to choose # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen # will still accept a match between prototype and implementation in such cases. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. The create the layout file # that represents doxygen's defaults, run doxygen with the -l option. # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The # .bib extension is automatically appended if omitted. Using this command # requires the bibtex tool to be installed. See also # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this # feature you need bibtex and perl available in the search path. CITE_BIB_FILES = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = doxy.debug #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ../linbox \ ../doc \ ../examples \ ../tests \ ../benchmarks # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py # *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = *.cc \ *.cpp \ *.C \ *.h \ *.inl \ *.doxy # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = *_src.inl \ Attic # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = *_src.inl \ */Attic/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = .. # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = *.C \ *.inl \ *INSTALL \ *COPYING \ *HACKING \ *AUTHORS \ *.html # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = YES # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty or if # non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) # and it is also possible to disable source filtering for a specific pattern # using *.ext= (so without naming a filter). This option only has effect when # FILTER_SOURCE_FILES is enabled. FILTER_SOURCE_PATTERNS = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = linbox-html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. Note that when using a custom header you are responsible # for the proper inclusion of any scripts and style sheets that doxygen # needs, which is dependent on the configuration options used. # It is advised to generate a default header using "doxygen -w html # header.html footer.html stylesheet.css YourConfigFile" and then modify # that header. Note that the header is subject to change so you typically # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # style sheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that # the files will be copied as-is; there are no commands or markers available. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # Doxygen will adjust the colors in the style sheet and background images # according to this color. Hue is specified as an angle on a colorwheel, # see http://en.wikipedia.org/wiki/Hue for more information. # For instance the value 0 represents red, 60 is yellow, 120 is green, # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. # The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of # the colors in the HTML output. For a value of 0 the output will use # grayscales only. A value of 255 will produce the most vivid colors. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to # the luminance component of the colors in the HTML output. Values below # 100 gradually make the output lighter, whereas values above 100 make # the output darker. The value divided by 100 is the actual gamma applied, # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, # and 100 does not change the gamma. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. HTML_TIMESTAMP = YES # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = YES # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated # that can be used as input for Qt's qhelpgenerator to generate a # Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see # # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's # filter section matches. # # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files # will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO # A unique identifier for the eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have # this name. ECLIPSE_DOC_ID = org.doxygen.Project # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) # at top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. Since the tabs have the same information as the # navigation tree you can set this option to NO if you already set # GENERATE_TREEVIEW to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to YES, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. # Since the tree basically has the same information as the tab index you # could consider to set DISABLE_INDEX to NO when enabling this option. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values # (range [0,1..20]) that doxygen will group on one line in the generated HTML # documentation. Note that a value of 0 will completely suppress the enum # values from appearing in the overview section. ENUM_VALUES_PER_LINE = 4 # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, # and Class Hierarchy pages using a tree view instead of an ordered list. USE_INLINE_TREES = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open # links to external symbols imported via tag files in a separate window. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files # in the HTML output before the changes have effect. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax # (see http://www.mathjax.org) which uses client side Javascript for the # rendering instead of using prerendered bitmaps. Use this if you do not # have LaTeX installed or if you want to formulas look prettier in the HTML # output. When enabled you may also need to install MathJax separately and # configure the path to it using the MATHJAX_RELPATH option. USE_MATHJAX = NO # When MathJax is enabled you need to specify the location relative to the # HTML output directory using the MATHJAX_RELPATH option. The destination # directory should contain the MathJax.js script. For instance, if the mathjax # directory is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to # the MathJax Content Delivery Network so you can quickly see the result without # installing MathJax. # However, it is strongly recommended to install a local # copy of MathJax from http://www.mathjax.org before deployment. MATHJAX_RELPATH = http://www.mathjax.org/mathjax # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension # names that should be enabled during MathJax rendering. MATHJAX_EXTENSIONS = # When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript # and DHTML and should work on any modern browser. Note that when using # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = NO # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a PHP enabled web server instead of at the web client # using Javascript. Doxygen will generate the search PHP script and index # file to put on the web server. The advantage of the server # based approach is that it scales better to large projects and allows # full text search. The disadvantages are that it is more difficult to setup # and does not have live searching capabilities. SERVER_BASED_SEARCH = NO #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. # Note that when enabling USE_PDFLATEX this option is only used for # generating bitmaps for formulas in the HTML output, but not in the # Makefile that is written to the output directory. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = stmaryrd \ amsmath # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for # the generated latex document. The footer should contain everything after # the last chapter. If it is left blank doxygen will generate a # standard footer. Notice: only use this tag if you know what you are doing! LATEX_FOOTER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. # Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See # http://en.wikipedia.org/wiki/BibTeX for more info. LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load style sheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # pointed to by INCLUDE_PATH will be searched when a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition that # overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all references to function-like macros # that are alone on a line, have an all uppercase name, and do not end with a # semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. For each # tag file the location of the external documentation should be added. The # format of a tag file without this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths # or URLs. Note that each tag file must have a unique name (where the name does # NOT include the path). If a tag file is not located in the directory in which # doxygen is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is # allowed to run in parallel. When set to 0 (the default) doxygen will # base this on the number of processors available in the system. You can set it # explicitly to a value larger than 0 to get control over the balance # between CPU load and processing speed. DOT_NUM_THREADS = 0 # By default doxygen will use the Helvetica font for all dot files that # doxygen generates. When you want a differently looking font you can specify # the font name using DOT_FONTNAME. You need to make sure dot is able to find # the font, which can be done by putting it in a standard location or by setting # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the # directory containing the font. DOT_FONTNAME = FreeSans.ttf # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the Helvetica font. # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to # set the path where dot can find it. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If the UML_LOOK tag is enabled, the fields and methods are shown inside # the class node. If there are many fields or methods and many nodes the # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS # threshold limits the number of items for each type to make the size more # managable. Set this to 0 for no limit. Note that the threshold may be # exceeded by 50% before the limit is enforced. UML_LIMIT_NUM_FIELDS = 10 # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are svg, png, jpg, or gif. # If left blank png will be used. If you choose svg you need to set # HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible in IE 9+ (other browsers do not have this requirement). DOT_IMAGE_FORMAT = png # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to # enable generation of interactive SVG images that allow zooming and panning. # Note that this requires a modern browser other than Internet Explorer. # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible. Older versions of IE do not have SVG support. INTERACTIVE_SVG = NO # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the # \mscfile command). MSCFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 1000 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES linbox-1.4.2/doc/DoxyfileDev.mod000066400000000000000000002275771274717217100165360ustar00rootroot00000000000000# Doxyfile 1.8.0 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or sequence of words) that should # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. PROJECT_NAME = linbox # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = . # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = YES # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = YES # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = YES # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = "bib=\xrefitem bib \"Bibliography\" \"Bibliography\"" # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding # "class=itcl::class" will allow you to use the command class in the # itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given extension. # Doxygen has a built-in mapping, but you can override or extend it using this # tag. The format is ext=language, where ext is a file extension, and language # is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, # C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C # (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions # you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. EXTENSION_MAPPING = # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all # comments according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you # can mix doxygen, HTML, and XML commands with Markdown formatting. # Disable only in case of backward compatibilities issues. MARKDOWN_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate getter # and setter methods for a property. Setting this option to YES (the default) # will make doxygen replace the get and set methods by a property in the # documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = YES # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and # unions are shown inside the group in which they are included (e.g. using # @ingroup) instead of on a separate page (for HTML and Man pages) or # section (for LaTeX and RTF). INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and # unions with only public data fields will be shown inline in the documentation # of the scope in which they are defined (i.e. file, namespace, or group # documentation), provided this scope is documented. If set to NO (the default), # structs, classes, and unions are shown on a separate page (for HTML and Man # pages) or section (for LaTeX and RTF). INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. # When the cache is full, less often used symbols will be written to disk. # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on # a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. SYMBOL_CACHE_SIZE = 0 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given # their name and scope. Since this can be an expensive process and often the # same symbol appear multiple times in the code, doxygen keeps a cache of # pre-resolved symbols. If the cache is too small doxygen will become slower. # If the cache is too large, memory is wasted. The cache size is given by this # formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = YES # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = YES # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = YES # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = YES # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen # will list include files with double quotes in the documentation # rather than with sharp brackets. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = NO # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen # will sort the (brief and detailed) documentation of class members so that # constructors and destructors are listed first. If set to NO (the default) # the constructors will appear in the respective orders defined by # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to # do proper type resolution of all parameters of a function it will reject a # match between the prototype and the implementation of a member function even # if there is only one candidate or it is obvious which candidate to choose # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen # will still accept a match between prototype and implementation in such cases. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. The create the layout file # that represents doxygen's defaults, run doxygen with the -l option. # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The # .bib extension is automatically appended if omitted. Using this command # requires the bibtex tool to be installed. See also # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this # feature you need bibtex and perl available in the search path. CITE_BIB_FILES = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = doxydev.debug #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ../linbox \ ../doc \ ../examples \ ../tests \ ../benchmarks # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py # *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = *.cc \ *.cpp \ *.C \ *.h \ *.inl \ *.doxy # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = *_src.inl \ Attic # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = *_src.inl \ */Attic/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = *__LINBOX_* # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = .. # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = *.C \ *.inl \ *INSTALL \ *COPYING \ *HACKING \ *AUTHORS \ *.html # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = YES # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty or if # non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) # and it is also possible to disable source filtering for a specific pattern # using *.ext= (so without naming a filter). This option only has effect when # FILTER_SOURCE_FILES is enabled. FILTER_SOURCE_PATTERNS = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = linbox-dev-html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. Note that when using a custom header you are responsible # for the proper inclusion of any scripts and style sheets that doxygen # needs, which is dependent on the configuration options used. # It is advised to generate a default header using "doxygen -w html # header.html footer.html stylesheet.css YourConfigFile" and then modify # that header. Note that the header is subject to change so you typically # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # style sheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that # the files will be copied as-is; there are no commands or markers available. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # Doxygen will adjust the colors in the style sheet and background images # according to this color. Hue is specified as an angle on a colorwheel, # see http://en.wikipedia.org/wiki/Hue for more information. # For instance the value 0 represents red, 60 is yellow, 120 is green, # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. # The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 110 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of # the colors in the HTML output. For a value of 0 the output will use # grayscales only. A value of 255 will produce the most vivid colors. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to # the luminance component of the colors in the HTML output. Values below # 100 gradually make the output lighter, whereas values above 100 make # the output darker. The value divided by 100 is the actual gamma applied, # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, # and 100 does not change the gamma. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. HTML_TIMESTAMP = YES # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = YES # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated # that can be used as input for Qt's qhelpgenerator to generate a # Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see # # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's # filter section matches. # # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files # will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO # A unique identifier for the eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have # this name. ECLIPSE_DOC_ID = org.doxygen.Project # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) # at top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. Since the tabs have the same information as the # navigation tree you can set this option to NO if you already set # GENERATE_TREEVIEW to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to YES, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. # Since the tree basically has the same information as the tab index you # could consider to set DISABLE_INDEX to NO when enabling this option. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values # (range [0,1..20]) that doxygen will group on one line in the generated HTML # documentation. Note that a value of 0 will completely suppress the enum # values from appearing in the overview section. ENUM_VALUES_PER_LINE = 4 # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, # and Class Hierarchy pages using a tree view instead of an ordered list. USE_INLINE_TREES = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open # links to external symbols imported via tag files in a separate window. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files # in the HTML output before the changes have effect. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax # (see http://www.mathjax.org) which uses client side Javascript for the # rendering instead of using prerendered bitmaps. Use this if you do not # have LaTeX installed or if you want to formulas look prettier in the HTML # output. When enabled you may also need to install MathJax separately and # configure the path to it using the MATHJAX_RELPATH option. USE_MATHJAX = NO # When MathJax is enabled you need to specify the location relative to the # HTML output directory using the MATHJAX_RELPATH option. The destination # directory should contain the MathJax.js script. For instance, if the mathjax # directory is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to # the MathJax Content Delivery Network so you can quickly see the result without # installing MathJax. # However, it is strongly recommended to install a local # copy of MathJax from http://www.mathjax.org before deployment. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension # names that should be enabled during MathJax rendering. MATHJAX_EXTENSIONS = # When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript # and DHTML and should work on any modern browser. Note that when using # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = NO # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a PHP enabled web server instead of at the web client # using Javascript. Doxygen will generate the search PHP script and index # file to put on the web server. The advantage of the server # based approach is that it scales better to large projects and allows # full text search. The disadvantages are that it is more difficult to setup # and does not have live searching capabilities. SERVER_BASED_SEARCH = NO #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. # Note that when enabling USE_PDFLATEX this option is only used for # generating bitmaps for formulas in the HTML output, but not in the # Makefile that is written to the output directory. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = stmaryrd \ amsmath # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for # the generated latex document. The footer should contain everything after # the last chapter. If it is left blank doxygen will generate a # standard footer. Notice: only use this tag if you know what you are doing! LATEX_FOOTER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. # Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See # http://en.wikipedia.org/wiki/BibTeX for more info. LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load style sheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # pointed to by INCLUDE_PATH will be searched when a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition that # overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all references to function-like macros # that are alone on a line, have an all uppercase name, and do not end with a # semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. For each # tag file the location of the external documentation should be added. The # format of a tag file without this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths # or URLs. Note that each tag file must have a unique name (where the name does # NOT include the path). If a tag file is not located in the directory in which # doxygen is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is # allowed to run in parallel. When set to 0 (the default) doxygen will # base this on the number of processors available in the system. You can set it # explicitly to a value larger than 0 to get control over the balance # between CPU load and processing speed. DOT_NUM_THREADS = 0 # By default doxygen will use the Helvetica font for all dot files that # doxygen generates. When you want a differently looking font you can specify # the font name using DOT_FONTNAME. You need to make sure dot is able to find # the font, which can be done by putting it in a standard location or by setting # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the # directory containing the font. DOT_FONTNAME = FreeSans.ttf # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the Helvetica font. # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to # set the path where dot can find it. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If the UML_LOOK tag is enabled, the fields and methods are shown inside # the class node. If there are many fields or methods and many nodes the # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS # threshold limits the number of items for each type to make the size more # managable. Set this to 0 for no limit. Note that the threshold may be # exceeded by 50% before the limit is enforced. UML_LIMIT_NUM_FIELDS = 10 # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are svg, png, jpg, or gif. # If left blank png will be used. If you choose svg you need to set # HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible in IE 9+ (other browsers do not have this requirement). DOT_IMAGE_FORMAT = png # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to # enable generation of interactive SVG images that allow zooming and panning. # Note that this requires a modern browser other than Internet Explorer. # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible. Older versions of IE do not have SVG support. INTERACTIVE_SVG = NO # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the # \mscfile command). MSCFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 1000 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES linbox-1.4.2/doc/Makefile.am000066400000000000000000000044151274717217100156270ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ if LINBOX_BUILD_DOC USE_TARGETS = docs INSTALL_TARGETS = install-doc endif docdir=$(LINBOX_DOC_PATH) man1_MANS = linbox-config.1 all all-local: $(USE_TARGETS) install install-data-local: $(INSTALL_TARGETS) docs : sed -i 's/\\version\s1.*/\\version\ $(VERSION)/' mainpage.doxy if test -d linbox-html ; then echo exists; else mkdir linbox-html ; fi if test -d linbox-dev-html ; then echo exists; else mkdir linbox-dev-html ; fi cp index-dev.html linbox-dev-html/index.html cp install-dist.html linbox-html/ cp install-dev.html linbox-html/ cp ../INSTALL linbox-html/ cp ../COPYING linbox-html/ cp ../AUTHORS linbox-html/ doxygen Doxyfile docs_dev : make docs cp install-dist.html linbox-dev-html/ cp install-dev.html linbox-dev-html/ cp ../INSTALL linbox-dev-html/ cp ../COPYING linbox-dev-html/ cp ../AUTHORS linbox-dev-html/ doxygen DoxyfileDev install-doc : mkdir -p $(DESTDIR)/$(docdir) cp -rp linbox-html $(DESTDIR)/$(docdir)/linbox-html cp -rp linbox-dev-html $(DESTDIR)/$(docdir)/linbox-dev-html cp -p linbox.html $(DESTDIR)/$(docdir)/linbox.html EXTRA_DIST= \ linbox.html \ install-dev.html \ index-dev.html \ install-dist.html \ Doxyfile.mod \ DoxyfileDev.mod \ doc.doxy \ mainpage.doxy \ tutorial.doxy \ versionning.doxy \ linbox-config.1 clean-local : rm -rf linbox-html rm -rf linbox-dev-html linbox-1.4.2/doc/doc.doxy000066400000000000000000000140021274717217100152360ustar00rootroot00000000000000// Copyright (C) 2005 David Saunders, part of LinBox, GNU LGPL, see COPYING /* * Coypright (c) LinBox * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== * */ /** \ingroup linbox \defgroup doc doc \brief This is a discussion of the form and organization of %LinBox documentation. The doc directory contains - in subdirectory linbox-html/ the html documentation, it has been built using Doxygen. Start at linbox-html/index.html. - Doxyfile, which specifies parameters for Doxygen to use when building the docs. - %doc.doxy, which is the source of this page. - %mainpage.doxy, which is the source of linbox-html/index.html. - install-dist.html and install-dev.html, some basic installation information. - linbox.html, which can be a handy way to get to linbox-html/index.html. There is a documentation page for each directory (see Modules) and each class of the %LinBox distribution. A directory (Module) page discusses the primary concepts supported by codes in the directory and lists the classes declared in the directory's files. A class page discusses properties of the class beyond the primary concept(s) that it implements and lists it's documented members. Files containing a \\file my_dir/my_file.h documentation show up in the files list. Each documented object (directory, class, member function, ...) has a one line memo that appears with it's name or signature in a parent object listing and at the top of it's own page if it has one (directory, class, top-level function). The memo also reappears as the first line of the fuller documentation. Some attempt is made to indicate which parts are most relevant to the user. HOW??

Developers:

Here are some rules of thumb about the documentation. Each directory dir/ has a dir/dir.doxy file listing its most user oriented contents and explaining the general nature of them. All other documentation is in the header files, a doc comment for each class and for each documented member function. In tests/ and examples/ there is also some documentation in .C files. Each documentation comment begins with a \\brief memo. Keep in mind that the \\brief text appears with the name/signature line of the object right above it. Thus there is no need to restate information that is plain from the signature such as the C++ type of a parameter. Try to make the brief memo succinctly state what the object is for. The user, looking at the signature and brief memo, will be trying to decide whether, at this moment in her study of things, she needs to click on this item for the fuller documentation of it. Try to help. The brief memo should not contain links to other pages. Put desired links in the fuller documentation. Most particularly the brief memo should not contain links to the object of which this item is a member. Such links become links to the current page and are a distraction and annoyance to the reader. Use documented parameter listings, with \\param arg - ..., when you have something significant to say about all or most of the parameters. When you use \\param for one parameter of a function, use it for all of them. However, it is sometimes better to skip the \\param listing format and just discuss in sentences the parameters, their requirements on input, relation to each other, and properties on output. Use your judgement about this on a case by case basis. Members of archetypes should be thoroughly documented in the archetype and then not documented at all in classes adhering to the archetype. Just a reference to the archetype documentation suffices. See ??? for an example of this. However, if the archetype function has a particular property concerning it's performance or use in this particular class, then document that special property. See Butterfly for an example of this. In many functions the return value is a reference to the first parameter, the primary output paramater. parameter and is rarely used in practice. In this case, don't use both the \\param and the \\return. Earlier I proposed not to use \\return at all in these situations. Perhaps we should use \\return arg1 - ... in place of \\param arg1 - ... . See ??? for an example of this.

References

References to papers/book can be documented for classes, functions, groups,... and referenced in a Bibliography page using : \n \\ref - [Authors] [Title] [journal,conference,book,...] [doi]. */ // vim:syn=doxygen linbox-1.4.2/doc/index-dev.html000066400000000000000000000031701274717217100163410ustar00rootroot00000000000000 LinBox documentation for Developers

Dead link

If you reached and see this page, then you need to compile the documentation first with

			> make docs_dev.
		

You may also want to return to users documentation or wait till the docs are built (auto refreshing page).

linbox-1.4.2/doc/install-1.0.html000066400000000000000000000144071274717217100164250ustar00rootroot00000000000000  

How to install LinBox (from a distribution)


See also INSTALL.  Once the LinBox distribution has been downloaded from the LinBox download section ,

1. Unpack the distribution using tar command:

tar -xvzf linbox-X.X.X.tar.gz
2. Go to the newly-created linbox directory and run the script configure, optionally you may specify the LinBox installation directory or an optional package directory using prefixes:
> cd linbox
> ./configure [--prefix=<inst. dir.> --with-package=<location> --enable-feature]
Gmp is required and its location must be specified <gmp location> is not a standard location such as /usr or /usr/local:
> ./configure --with-gmp= <gmp location> [...]
Atlas, or other source of BLAS, is also required and its location must be specified if not standard.
> ./configure --with-atlas= <atlas location> [...]
This sets up the library and runs  ./configure

3. Optional configurations

3.1. Where to put the include/ and lib/ directories:
--prefix= <chosen installation directory>
Ex:  ./configure --prefix= `pwd` will put the files within the current directory

3.2. The use of an optional package is switched on by specifying the directory where it can be found:

--with-package=<package_directory>

<package_directory> can be left blank if the package is installed in a standard directory (/usr or /usr/local)
Ex: ./configure --with-givaro will enable the use of Givaro library and assume it is installed in a standard directory

Available packages are the following:

Givaro (v3.1.3) --with-givaro= <givaro_directory> used for finite field arithmetic.
Lidia --with-lidia= <lidia_directory> used for finite field arithmetic.
NTL --with-ntl= <ntl_directory> used for finite field, polynomial arithmetic.
Saclib --with-saclib= <saclib_directory> not yet used
Maple --with-maple= <maple-directory>  used to create an interface with Maple.
Doxygen --with-doxygen= <doxygen-path>  used to create the html reference manual.

Note:

the use of --with-default= <default_directory> can add a special directory to the default location of library

the use of --with-all specifies that all packages will be used

3.3. The use of special feature is switched on by calling the enable parameter:

--enable-feature
Ex: ./configure --enable-shared will turn on the build of a shared library

Available extra features are the following:

--enable-optimization turn on runtime optimization during the configuration
--enable-doc turn on the build of documentation via Doxygen.
4.  Install the library:
>  make install

Copyright 1999-2005 The Linbox Group.
linbox-1.4.2/doc/install-dev.html000066400000000000000000000042531274717217100167030ustar00rootroot00000000000000 linbox: Installation (for developers)  

How to install LinBox (for developers using git)

Retrieve givaro, fflas-ffpack, and from github.com/linbox-team. You can configure LinBox with the autogen.sh script. You can use it exactly the same way ./configure works (execpt for the --help part... :() See here for additional information on configure script.

If you are not sure, run autogen.sh with the minimal options so LinBox can be well configured and then you will get more information with configure --help.


See also HACKING.


Copyright 1999-2011 The Linbox Group.
linbox-1.4.2/doc/install-dist.html000066400000000000000000000200021274717217100170560ustar00rootroot00000000000000 linbox: Installation  

How to install LinBox (from a distribution)


See also INSTALL.  Once the LinBox distribution has been downloaded from the LinBox download section,

1. Unpack the distribution using tar command:

tar -xvzf linbox-X.X.X.tar.gz
2. Go to the newly-created linbox directory and run the script configure.
> cd linbox
There are many options for configuring LinBox. If you are not sure, just run
> ./configure --help
You will find a very comprehensible list of all possible features you may enable/disable.

Required packages are the following:

Givaro --with-givaro= <givaro_directory> used for finite fields, integer, rational and polynomial arithmetic.
Fflas-Ffpack --with-fflas-ffpack= <fflasffpack_directory> used for small field dense linear algebra.
Basically, minimal LinBox only requires a working Givaro and Fflas-Ffpack installation. If they are not under the standard /usr or /usr/local paths, you may enable them with --with-givaro=<path/to/givaro> and --with-fflas-ffpack=<path/to/fflas-ffpack> options.

NOTE : other requirements
Givaro requires GMP for big integer operations, see Givaro page for more information.
Fflas-Ffpack requires some BLAS for floating point dense matrix multiplication, see Fflas-Ffpack page for more information.

For Givaro install GMP
For Fflas-Ffpack install Goto BLAS 2 ATLAS or ...

NOTE : There is a script in alpha version that tries to automate the installation of required packages:

> sh auto-install.sh
this will download the appropriate dependencies, compile and install them. Use --help for help on how to use this script.

3. Optional configurations
Available packages are the following:

NTL --with-ntl= <ntl_directory> used for finite field, polynomial arithmetic.
Lidia --with-lidia= <lidia_directory> used for finite field arithmetic.
Saclib --with-saclib= <saclib_directory> not yet used
Maple (> v9) --enable-shared --with-maple= <maple-directory>  used to create an interface with Maple.
Doxygen --enable-doc used to create the html reference manual (nothing will be created otherwise).
IML --with-iml= <IML-path>  used for fast integer/rational linear algebra.
gnuplot -enable-benchmark used for creating plots in benchmarks.

Note:

the use of --with-default= <default_directory> can add a special directory to the default location of library

the use of --with-all specifies that all packages will be used

4.  Install the library:
>  make
>  make install
5.  Optional make targets:
>  make examples
will compile the examples.
>  make check
will check LinBox is up and running.
>  make fullcheck
will perform additionnal checks to ensure LinBox is completely sane.
>  make benchmarks
will benchmarks some LinBox functionnalities.

6.  Enjoy ! (and report bugs, supply patches, ask for more functionnalities,... on the linbox mailing lists)

Copyright 1999-2011 The Linbox Group.
linbox-1.4.2/doc/linbox-config.1000066400000000000000000000014601274717217100164100ustar00rootroot00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36. .TH LINBOX-CONFIG "1" "June 2008" "linbox-config 1.1.6rc0" "User Commands" .SH NAME linbox-config \- tool for linking against LinBox .SH SYNOPSIS .B linbox-config [\fIOPTION\fR] .SH DESCRIPTION Known values for OPTION are: .TP \fB\-\-prefix\fR show Linbox installation prefix .TP \fB\-\-libs\fR print library linking information .TP \fB\-\-cflags\fR print pre\-processor and compiler flags .TP \fB\-\-help\fR display this help and exit .TP \fB\-\-version\fR output version information .SH "SEE ALSO" The full documentation for .B linbox-config is maintained as a Texinfo manual. If the .B info and .B linbox-config programs are properly installed at your site, the command .IP .B info linbox-config .PP should give you access to the complete manual. linbox-1.4.2/doc/linbox.html000066400000000000000000000027761274717217100157640ustar00rootroot00000000000000 Starter to LinBox documentation LinBox documentation main page: linbox-html/index.html (going there in 5 seconds). If it is a dead link, you have to build the documentation first with make docs. linbox-1.4.2/doc/mainpage.doxy000066400000000000000000000234061274717217100162620ustar00rootroot00000000000000// Copyright (C) 2005 David Saunders, 2010 LinBox. This file is part of LinBox, // GNU LGPL, see COPYING for license information. /* * Coypright (c) LinBox * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== * */ /** \mainpage LinBox Symbolic Linear Algebra Software Library. * * \section intro Introduction * * %LinBox is a C++ template library of routines for solution of linear algebra * problems including linear system solution, rank, determinant, minimal * polynomial, characteristic polynomial, and Smith normal form. * * Algorithms are provided for matrices with integer entries or entries in a * finite field. In support of the algorithms, a good collection of finite * field and ring implementations is available. Also there is provided a * number of matrix storage types, especially for blackbox representation of * sparse or structured matrix classes. A few algorithms for rational matrices * are available. More for integer and rational matrices is planned for future * releases. * * \section goals Goals * * Project %LinBox (http://linalg.org) is a collaborative effort among * researchers at a number of locations around the world. Some of the most * active participants are listed \subpage AUTHORS "here". The goals are to * produce algorithms and software for symbolic linear algebra, particularly * using \ref blackbox matrix methods, i.e. iterative methods requiring only * the linear transform property of the matrix (that, given A and x, one can * compute \f$y \gets Ax\f$). Such methods are especially effective with * sparse or structured matrices for which the matrix-vector product can be * computed cheaply. Increasingly, %LinBox also provides elimination based * methods for dense matrices exploiting the numeric BLAS routines. * * A good collection of finite field implementations is available. Some * algorithms are probabilistic, but their results are extremely reliable * except over very small fields (less than 1000 elements, say). * * \section desig Design * * %LinBox depends on other packages for some of its functionality. It is a * design goal of %LinBox to be a kind of \e middleware, providing a common * interface for use in projects needing linear algebra and providing access to * other systems and programs through wrappers whenever their capabilities may * contribute to the linear algebra. Thus, to gain full advangage of %LinBox * it will be desirable to have certain other packages installed. In * particular GMP and a BLAS implementation are required. GMP provides the * basic large integer system used throughout. We have been using ATLAS for * the BLAS implementation. The remaining dependencies are optional, but two * packages stand out as contributing substantially to %LinBox. They are %NTL * and Givaro. %NTL is used for some finite field and ring representations, * particularly in the case of \c GF(q), where \c q is a prime power or a prime * greater than word size. %NTL is also used by algorithms that need * polynomial operations such as factorization. Givaro is another source of * field representations and polynomial operations. Importantly, Givaro * provides our best representation of small non-prime fields, say q = * pe < 106. Functionality from some other * systems has been wrapped also but is currently less widely used in %LinBox. * * \e Genericity and \e high \e performance are the twin goals of %LinBox. The * genericity is achieved by use of a small set of interfaces. Algorithms are * implemented with C++ template parameters which may be instantiated with any * class adhering to the specified interface. High performance is achieved by * judicious specializations of the generic algorithms. It is entirely within * the spirit of the project to introduce new implementations. Thus a user of * the library may invoke a %LinBox algorithm, say for determinant or rank of a * matrix, but providing a blackbox class of her own design and perhaps even * providing the underlying field (or commutative ring) representation. * Conversely, the %LinBox field and ring interfaces and the many specific * representations can be used for purposes other than linear algebra * computation or with algorithms not provided by %LinBox. * * \section using Using LinBox * * - \subpage copy. * - \subpage tuto. This is a brief introduction to %LinBox capabilities. * - \subpage inst. Explains how to install from sources or from the latest svn * version. * - \subpage arch. Describes how %LinBox is organized * \internal * - \subpage upgr. Explains how to make new versions of %LinBox \endinternal * . * * \section docu Documentation * - Documentation for Users. If everything around is blue, then you * are reading the lighter, user-oriented, documentation. * - Documentation for Developers. If everything around is green, then * you can get to everything (not necessarily yet) documented. * . * * \section contrib Contributing to LinBox, getting assistance. * We warmly welcome contributors ! Contributing can rhyme with providing * documentation, pointing out bugs, requesting more features, giving * test-cases, making comments about the code,...
* You can contact the LinBox team at \f$\mathtt{linbox}\!-\!\mathtt{use} * \mathtt{@} \mathtt{googlegroups}\!\cdot\!\mathtt{com}\f$ (user oriented * discussions) or \f$\mathtt{linbox}\!-\!\mathtt{use} \mathtt{@} * \mathtt{googlegroups}\!\cdot\!\mathtt{com}\f$ (development oriented * discussions). * * \authors Members of the \link AUTHORS %LinBox group\endlink. The most * prolific documenters have been William J Turner, Bradford Hovinen, * David Saunders, Brice Boyer. * * \version 1.4.0 * * \par Support. * The project is supported by the National Science Foundation * (http://www.nsf.gov/) in the USA and by CNRS in France. */ /*! \page copy Copyright and Licencing * The copyright and licensing (GNU LGPL) info of %LinBox is in \c COPYING.LESSER (and below). * It gives permissions in addition to those of the GPL, see \c COPYING. * \verbinclude "COPYING.LESSER". */ /*! \page inst Installing LinBox * To install from a distribution, the usual configure, make sequence * applies. See \subpage dist "configuring and installing" for more details. * To install a development version from the SVN repository see the \subpage dev * "developer info". The generic Free Software Foundation \subpage INSTALL * "INSTALL" may also be of use. */ /*! \page arch Architecture of the library * * The distribution contains subdirectories (documented as `modules' here) * * - linbox. This contains the library * sources. The defined objects are in the namespace LinBox. * - linbox/field, linbox/ring, field and ring representations. * - linbox/randiter, random element * generation for fields and rings. * - linbox/blackbox, generally * immutable matrix representations for blackbox methods (based on * matrix-vector products). * - linbox/matrix, mutable sparse and * dense matrices. * - linbox/algorithms, the core * algorithms of %LinBox * - linbox/solutions, convenience * wrappers of algorithms * - linbox/element, details of field * and ring element representation. * - linbox/fflas, wrapper of BLAS for * exact finite prime field linear algebra. * - linbox/ffpack, . * - linbox/util, basic integers, timing * clocks, commentator. * . * - examples, programs meant to be * directly useful or be guides * for the progammer using %LinBox. * - doc, the browsable \c html documentation is * generated with Doxygen, * - interfaces, interfaces to other * systems, such as Maple, gap, web servers, * - tests, primarily correctness tests to aid * development. * - benchmarks, where you can benchmark * and compare your LinBox installation. * . */ /*! \page AUTHORS LinBox Authors * \verbinclude "AUTHORS" */ /*! \page INSTALL The INSTALL in LinBox * \verbinclude "INSTALL" */ /*! \page dist Configuring and Installing LinBox * \htmlinclude "doc/install-dist.html" */ /*! \page dev Developer info for LinBox * \htmlinclude "doc/install-dev.html" * * \par HACKING LinBox. * \verbinclude "HACKING" */ // vim:syn=doxygen linbox-1.4.2/doc/organization/000077500000000000000000000000001274717217100162735ustar00rootroot00000000000000linbox-1.4.2/doc/organization/Linbox.draft000066400000000000000000000042011274717217100205450ustar00rootroot00000000000000/Linbox --/doc : Describes Linbox --/algorithms : requirements and implementations for algorithms --/organization : documentation on the package organization --/config : generic makefiles, configuration files --/src : Library --/library --/archetypes : Linbox archetypes --/Field --/Blackbox --/Polynomials --/algorithms : Linbox algorithms (generic on Linbox objects) --/Ring --/Field --/FiniteExtension : Finite fields as a polynomial domain over finite fields Requires templates with field operations Implements field operations --/Blackbox : Requires templates with Apply Implements Apply --/Composition : A o B --/Transposition : A^t --/Sequence : Minimum polynomials --/Iterator : Requires templates with Apply Implements forward_iterator (u^t A^i v) --/Massey : Requires templates with forward_iterator Implements degree, minimun_poly --/Wiedemann : Requires templates with Apply, minimum_poly Implements rank, matrix minpoly --/objects : Implements from scratch --/Random --/Blackbox --/Field --/wrappers : Links existing libraries --/by_library : Wraps existing classes to match Linbox requirements --/A Library --/Rings : Implements ring operations from +,*,.. --/Integer : Implements integer operations from GMP, ... --/Polynomials : Implements Polynomial domain from ... --/Fields : Implements field operations from +,*,/,.. --/ZpZ : parametrized with a modulus from NTL ... --/GFq : tabulated finite fields from Givaro ... --/Blackbox --/SparseBlackbox : Implements Apply from vector of sparse vectors --/DenseBlackbox : Implements Apply from bidimensionnal arrays --/by_scope : Links to wrappers, but organized by scope --/tools --/Commentator --/SparseVector --/examples --/Gauss : Sparse gaussian elimination with reordering --/Random : Random generators tests --/Sequence : Wiedemann algorithm linbox-1.4.2/doc/organization/Makefile.am000066400000000000000000000016221274717217100203300ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # see COPYING for licence # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== EXTRA_DIST=\ Linbox.draft linbox-1.4.2/doc/tex/000077500000000000000000000000001274717217100143675ustar00rootroot00000000000000linbox-1.4.2/doc/tex/Makefile.am000066400000000000000000000023671274717217100164330ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== if USE_DOCPLUSPLUS_TEX USE_TARGETS = linbox.tex linbox.ps linbox.dvi endif CLEANFILES = linbox.tex linbox.ps MOSTLYCLEANFILES = linbox.aux linbox.log linbox.dvi all-local: $(USE_TARGETS) linbox.ps: linbox.dvi dvips linbox.dvi -o linbox.ps linbox.dvi: linbox.tex latex "\scrollmode\input linbox"; exit 0 linbox.tex: $(top_srcdir)/linbox/linbox.dxx doc++ -t -o linbox.tex $(top_srcdir)/linbox/linbox.dxx linbox-1.4.2/doc/tutorial.doxy000066400000000000000000000224101274717217100163360ustar00rootroot00000000000000// Copyright (C) 2005 David Saunders, 2010 LinBox. // This file is part of LinBox, see COPYING for licence information. /* * Coypright (c) LinBox * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== * */ /*! \page tuto LinBox tutorial The person requiring some exact linear algebra computation may exploit LinBox at any of four general levels. In order from least involved with the details to most involved, they are:
  1. Access using a LinBox web server.
  2. The user at this level must attend to preparation of a matrix in a suitable file format and invoking the webservice. The server itself should provide adequate documentation for this. Servers are generally available at linalg.org.
  3. Access using compiled codes. Full programs exist in the examples directory and can be used through an interface to LinBox in a general purposes system such as Maple or SAGE.
  4. The user at this level must see to installation, and then attend to preparation of her matrix in a suitable file format and to the form of the program or procedure invocation. A number of programs are available in the examples directory distributed with LinBox providing for rank, determinant, linear system solution, etc. The documentation of the examples module should serve for this level of access.
  5. Use of LinBox as a programmers library for exact linear algebra functions.
  6. At this level a user must do at least the following:
    1. Choose a field or ring representation and construct a specific field or ring object \c R.
    2. Choose a blackbox or matrix representation suitable to your data and construct specific matrix \c A over \c R.
    3. Call needed algorithm. The solutions directory is designed to support this by providing functions with simple problem oriented interfaces (\c rank(), \c det(), \c solve()), yet allowing some user control of algorithm details. The programmer may be providing some of the parts such as an application specific blackbox matrix class.
  7. Power development.
  8. Again, this is use of LinBox as a library, but with hands fully on the details. The programmer at this level apparently needs the best opportunities for high performance and is willing to use the more complicated internal interfaces to get it. Direct calls to functions in the algorithms directory and perhaps to related packages such as \c FFLAS, \c FFPACK, or other components are being used. The programmer working at this level of intimacy with LinBox is likely to develop some components that ought to be included in future releases of LinBox. Such contributions are warmly welcomed. The online documentation system is intended primarily for the programmer at level 3. Thus documentation is not generated to the last internal detail. It is supposed that the level 4 (and 3) programmer, when studying internal details, will be best served by reading the code. It is possible, if you wish, to set doxygen parameters so as to have a documentation listing for every class and function. Good luck separating wheat from chaff in that case.
In this tutorial we will discuss a simple application at level 3, the design of a program to compute the determinant of a sparse matrix over \f$\mathbf{GF}(101)\f$. The programmer has 3 major issues: field, matrix, algorithm. The basic algorithm choice is between blackbox and elimination algorithms. If our matrix is \c A, then the algorithm call may look like \code det(d, A, Method::Blackbox()); //or det(d, A, Method::Elimination()); \endcode To have access to this determinant function just \#include . The larger and sparser the matrix the more likely that the blackbox algorithm is fastest. Hybrids are under development to help make this choice, and even to make it at run time adaptively. The last argument to the solutions functions is a method object which specifies the algorithm to be used. In each case there is a default, so this argument is optional. Also, some method objects may be constructed so as to convey more detail about the algorithm to use. For example it may help to promise that the matrix is nonsingular or symmetric or to request a particular algorithm variant. The blackbox algorithm based fundamentally on Wiedemann's approach is specified by \c Method::Wiedemann, see \c solutions/methods.h for more details. Specification of a blocked blackbox algorithm may be advantageous (in the future). Elimination is likely fastest if the matrix is not extremely sparse or not large or not subject to rapid fill-in. Of course, first we must construct the matrix and field. For the field, you must first choose the class (representation type) of field and then instantiate your specific field. \code #include typedef Givaro::Modular Field; Field F(101); \endcode It is a good idea to use a \p typedef, making it easy to change representations later. The \ref modular field representations are LinBox's own and contain some useful optimizations. Another possibility is use of NTL's \c NTL::ZZ_p class. The LinBox wrapper of that, called \p LinBox::NTL_ZZ_p is found in \c field/ntl-ZZ_p.h. Or use a Givaro table based representation, \c LinBox::Givaro::GFq in \c field/givaro-gfq.h ...and there are many other options. The program \c tests/test-fields.C will provide some timing data on the basic functions of each representation. In %LinBox, a \p Field class and the class representing the field entries are distinct types. The field object owns the arithmetic operations, whereas the entry objects may be of a primitive type such as \c short, \c int, \c double. Each field class \p Fld has the embedded class \c Fld::Element for it's elements. \code Field::Element a, b, c; F.init(a, 2); F.init(b, 3); F.mul(c, a, b); // c <- a*b F.write(cout, c); \endcode You have seen that the field representations are in subdirectory \c linbox/field. Similarly the matrix representations are in \c linbox/blackbox. All of these are are suitable for blackbox algorithms. Only those deriving from representations in \c linbox/matrix are suitable for elimination. For a sparse matrix, \c LinBox::TriplesBB is a good representation choice if a blackbox algorithm is to be used. For a \f$\{0,1\}-\f$incidence matrix, the class \c LinBox::ZeroOne will be more economical of space and time. On the other hand, if elimination is to be used, those will not serve at all, but \c LinBox::SparseMatrix, which allows internal modification, will do the trick. The ordinary matrix representation is \c LinBox::BlasMatrix. If your matrix structure allows you to compute matrix-vector products in a way faster than these classes provide, you can gain by defining your own matrix class adhering to the \ref blackbox interface. The main components of the blackbox interface are member functions \c apply() and \c applyTranspose() functions. \c A.apply(y, x) performs \f$y \gets Ax\f$. Then there is the question of initializing matrix entries. Two basic approaches are illustrated here. \code TriplesBB A; A.read("triples-file"); // initialize A from data in file (including shape). \endcode Or a program can add entries to a sparse or dense matrix one by one using the \c setEntry function. \code SparseMatrix B(100, 200); // 100 by 200 zero matrix (so far). for ( ... ) { Field::Element v; F.init(v, ...); B.setEntry(i, j, v); // put nonzero v in i,j position. } \endcode Putting it all together, we may have a program looking like this. \code #include #include #include #include using namespace LinBox; main() { typedef Givaro::Modular Field; typedef BlasMatrix Matrix; Field F(65521); MatrixStream ms(F, std::cin); Matrix A(ms); Field::Element d; Method::BlasElimination M; det(d, A, M); F.write(std::cout << "the determinant is ", d) << std::endl; } \endcode This tutorial should continue with a discussion of compilation issues, but it doesn't. Something useful may be learned from examining the Makefile.am in the examples directory. */ // vim:syntax=doxygen linbox-1.4.2/doc/versionning.doxy000066400000000000000000000120441274717217100170360ustar00rootroot00000000000000// Copyright (C) 2013 the LinBox Group // Written by Brice Boyer (briceboyer) // This file is part of LinBox, see COPYING for licence information. /* * Coypright (c) LinBox * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== * */ /*! * \page upgr Updating/Versionning *

Creating a new version number for LinBox/Givaro/fflas-ffpack:

* * These software are versioned as \c projectname-x.y.z where \c x is a \b major revision * number, \c y a \b minor number and \c z a \b revision (or bug) number. * The script \c incremente-version — in the root directory of these project * sources — takes care of incrementing these numbers (along with the library * so-names if necessary). * *
    *
  • \b Revision number.
    * Minor changes are changes that do not change any API and do not provoke * any miscompilation in LinBox. As a consequence, for instance, any release * \c 1.3.z of LinBox should compile with any givaro \c 3.7.z and any * fflas-ffpack \c 1.6.z.
    * This correspondance should be published on the website. It is however always put in * the \c auto-install.sh script. *
  • * *
  • \b Minor number.
    * Any change in these numbers in givaro or fflas-ffpack produces a minor * version change in LinBox. A minor version number changed is required when there * is some API change in fflas-ffpack or givaro or linbox or anything leading to * a failure to compile properly due to newly added inconsistencies. *
  • * *
  • \b Major number.
    * These number are incremented when big change happens. Only the minor number * of LinBox is needed to change when a major increment happens in * givaro/fflas-ffpack. *
  • *
* *

Publishing

* Before publishing a new version : *
    *
  • \b Testing * - The buildbots should be green and the script \c auto-install.sh should * succeed and the tests/example pass/compile. (It would be cool if more * compilers were tested, namely clang and ekopath). * - The number of warnings when compiled with \c --enable-warnings=full should * also be minimised. * - The number of warnings when compiling the doc should be minimised (and new * functionalities/concepts documented). * . *
  • * *
  • \b Incrementing * - on an up-to-date svn source, run the script \c incremente-version, follow * its instruction and confirm. * - commit these changes as in: \code svn commit -m "updated to projectname-x.y.z"\endcode * so that it is easier to spot the changes in the ChangeLog when publishing it. *
  • * *
  • \b Branching
    * Once the incrementing has been done, if the minor or major number * has been changed, then a new branch should be created in the svn repository * using \code svn copy /path/to/trunk /path/to/branch/project-x.y \endcode * This is done in order to allow maintainance and support, eg. new patches from * distributions and easy support of a \c x.y major.minor version (for sage for * instance). *
  • * *
  • \b Publishing
    * A release comes with a tar ball \c tar.gz, a \c md5sum of it and a summary \c ChangeLog. * *
      *
    • LinBox and fflas-ffpack * - a \c tar.gz and a \c md5sum is created in the \c www directory * - the corresponding web pages are updated * - The changes form the ChangeLog should be * put in \c NEWS-a.b.html (even for revision versions) for LinBox and \c fflas-ffpack-Changelog-x.y.z for * fflas-ffpack. *
    • * *
    • Givaro
      * - a \c tar.gz and a \c md5sum is created and uploaded to the * forge where * one can also put the ChangeLog in a form. *
    • * *
    • \c auto-install.sh script
      * - the auto-installation script (first 4 lines) should be updated * accordingly. They should correspond to the latest stable/desired version number for * givaro/fflas-ffpack. *
    • *
    • ChangeLogs
      * It would be nice if the ChangeLogs looked something like (the * users cannot/won't view the svn log): * * \verbatim Date - code update : * item - bugs : * item - new features : * item \endverbatim * *
    • *
    *
  • *
  • \b Documentation
    * If a minor revision change happens, there should be an automatic way to update the doxygen documentation. *
  • *
*. * */ // vim:syntax=doxygen linbox-1.4.2/examples/000077500000000000000000000000001274717217100146405ustar00rootroot00000000000000linbox-1.4.2/examples/Makefile.am000066400000000000000000000060611274717217100166770ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # This file is part of LinBox # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ # DEFAULT_INCLUDES=-I@includedir@ # -DLinBoxSrcOnly DEFCPPFLAGS = @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR AM_CPPFLAGS = -I$(top_srcdir)/linbox $(DEFCPPFLAGS) $(DEPS_CFLAGS) LDADD = $(DEPS_LIBS) $(LDFLAGS) LDADD += $(top_builddir)/linbox/liblinbox.la # AM_LDFLAGS=-static #AM_LDFLAGS=-L@libdir@ -llinbox # if LINBOX_HAVE_OCL # AM_CPPFLAGS += $(OCL_CFLAGS) # LDADD += $(OCL_LIBS) # endif #EX_LDADD = $(NTL_LIBS) #LDADD = $(LINBOX_LIBS) $(EX_LDADD) # SUBDIRS=fields solver data blackbox EXAMPLES=rank det minpoly valence solve dot-product echelon sparseelimdet sparseelimrank checksolve doubledet smithvalence charpoly polysmith #bench-fft bench-matpoly-mult # EXAMPLES+=nulp yabla GIVARONTL_EXAMPLES=smith graph-charpoly if LINBOX_HAVE_NTL USE_GIVARONTL_EXAMPLES = $(GIVARONTL_EXAMPLES) endif EXTRA_PROGRAMS= $(EXAMPLES) $(USE_GIVARONTL_EXAMPLES) CLEANFILES=$(EXTRA_PROGRAMS) EXTRA_DIST = examples.doxy smithvalence.h #map-sparse.h map-sparse.inl examples: ${EXTRA_PROGRAMS} dot_product_SOURCES = dot-product.C doubledet_SOURCES = doubledet.C #linbox_program_SOURCES = \ # linbox-program.C checksolve_SOURCES = checksolve.C charpoly_SOURCES = charpoly.C graph_charpoly_SOURCES = graph-charpoly.C det_SOURCES = det.C rank_SOURCES = rank.C smith_SOURCES = smith.C minpoly_SOURCES = minpoly.C valence_SOURCES = valence.C solve_SOURCES = solve.C echelon_SOURCES = echelon.C smithvalence_SOURCES = smithvalence.C sparseelimdet_SOURCES = sparseelimdet.C sparseelimrank_SOURCES = sparseelimrank.C polysmith_SOURCES = poly-smith.C #bench_fft_SOURCES = bench-fft.C #bench_matpoly_mult_SOURCES = bench-matpoly-mult.C LINBOX=@prefix@ LINBOX_BIN=@bindir@ # for compilation of new examples #new_examp_comp = $(CXX) -I@includedir@ $(CXXFLAGS) $(AM_CPPFLAGS) $(OPTFLAGS) ${INCLUDES} $< -o $@ -L@libdir@ -llinbox $(AM_LDFLAGS) $(LDADD) $(LIBS) %:%.C # $(LTCXXCOMPILE) -c -o $@.$(OBJEXT) $< $(AM_V_CXX)$(CXXCOMPILE) -c -o $@.$(OBJEXT) $< $(AM_V_CXXLD)$(CXXLINK) $@.$(OBJEXT) $(LDADD) %:%.cpp # $(LTCXXCOMPILE) -c -o $@.$(OBJEXT) $< $(AM_V_CXX)$(CXXCOMPILE) -c -o $@.$(OBJEXT) $< $(AM_V_CXXLD)$(CXXLINK) $@.$(OBJEXT) $(LDADD) linbox-1.4.2/examples/Readme000066400000000000000000000000561274717217100157610ustar00rootroot00000000000000See also matrix examples in ../../tests/data/ linbox-1.4.2/examples/Readme-make.in000066400000000000000000000110301274717217100172730ustar00rootroot00000000000000#!/bin/sh # # Created by B. David Saunders # Modified by G. Villard # mar mai 6 18:15:17 CEST 2003 # dim aou 3 01:22:55 CEST 2003 ##################################################################################### # This Readme-make is actually a makefile illustrating two ways (A and B below) # to compile programs which use LinBox. # # Usage: "make -f Readme-make " ##################################################################################### # # Linbox is a C++ template source library using a two level directory structure. # To include a linbox file write "#include ". # For compiling code using linbox, three issues arise. # 1. location of LinBox include directory (which contains linbox/subdir/file.h). # 2. location of LinBox lib directory. Some components of LinBox ( those in linbox/util/ ) # are separately compiled and installed in this library. It is possible to include # sources from linbox/util/ rather than linking to this library. Compile # with "-DLinBoxSrcOnly". # 3. LinBox depends on other packages for some of it's functionality. The compiler must # find the include files and library objects for these packages. # Of these GMP is necessary, the others are optional. # # This makefile illustrates two ways to proceed (A and B below). # # ----> In both cases REPLACE ".." below with your LinBox top directory # e.g. LINBOX=/home/gvillard/Soft/linbox LINBOX=@prefix@ # ----> And put here your compiler's name and options #CCC=g++ CPPFLAGS= -O0 LDFLAGS= ######################################################################################### # A. # # If your LinBox library is compiled, normally the rest of this makefile # needn't be modified. # # If the LinBox library is compiled, use `$(LINBOX_BIN)/linbox-config --cflags --libs` # on the compile command to get the include and lib locations for LinBox and the # other packages it uses that were available when it was installed. # This is the simplest way to proceed. # This approach is used here for targets whose source suffix is .C # # no /bin if LinBox is uncompiled LINBOX_BIN=$(LINBOX)/bin #LINBOX_BIN=@bindir@ %:%.C #$(CXX) $(CPPFLAGS) $*.C -o $* $(shell $(LINBOX_BIN)/linbox-config --cflags --libs) CXXFLAGS+= $(shell $(LINBOX_BIN)/linbox-config --cflags) LOADLIBES+= $(shell $(LINBOX_BIN)/linbox-config --libs) ######################################################################################### # B. # You can compile from LinBox sources even without compiling LinBox. This approach is used # in this makefile example for targets whose source suffix is .cc or .cpp. # You must first indicate in this makefile the locations of LinBox and the packages used. # ----> Simply REPLACE ".." below with your LinBox top and packages directories GMP=.. #NTL=.. #GIVARO=.. #LIDIA=.. #SACLIB=.. # e.g. #GMP=/usr/local/algebra/gmp #NTL=/usr/local/algebra/ntl #GIVARO=/usr/local/algebra/givaro #LIDIA=/usr/local/algebra/lidia #SACLIB=/usr/local/algebra/saclib ###################################################################################### # Normally the rest of this makefile needn't be modified. Change remaining definitions # only when, in your installations, the includes or libs are not in the indicated places. ###################################################################################### LINBOX_INCL= -I$(LINBOX) -DLinBoxSrcOnly # GMP is a necessary component, used throughout LinBox. GMP_INCL= -I$(GMP)/include GMP_LIB= -L$(GMP)/lib -lgmp GMP_RLIB= -R$(GMP)/lib -lgmp # NTL is an optional component, used in a number of field classes. NTL_INCL= -I$(NTL)/include NTL_LIB= -L$(NTL)/lib -lntl # GIVARO is an optional component, used for instance in the Zech log fields GIVARO_INCL= -I$(GIVARO)/include GIVARO_LIB= -L$(GIVARO)/lib # LIDIA is an optional component. LIDIA_INCL= -I$(LIDIA)/include LIDIA_LIB= -L$(LIDIA)/lib # SACLIB is an optional component, not currently used. SACLIB_INCL= -I$(SACLIB)/include SACLIB_LIB= -L$(SACLIB)/lib INCL= $(LINBOX_INCL) $(GMP_INCL) INCL+=$(NTL_INCL) $(GIVARO_INCL) $(LIDIA_INCL) $(SACLIB_INCL) LIB= $(LINBOX_LIB) $(GMP_LIB) LIB+= $(NTL_LIB) $(GIVARO_LIB) $(LIDIA_LIB) $(SACLIB_LIB) # fixme: this is udel specific. RLIB= $(LINBOX_RLIB) $(GMP_RLIB) -R/usr/local/gnu/gcc/lib %:%.cc $(CCC) $(CPPFLAGS) $(LDFLAGS) $*.cc -o $* $(INCL) $(LIB) $(RLIB) # ... or use separate compilation and linkage %.o:%.cpp $(CCC) $(CPPFLAGS) $(INCL) $*.cpp -c %:%.o $(CCC) $(LDFLAGS) $*.o -o $* $(LIB) clean: rm -f *.o linbox-1.4.2/examples/athadet.C000066400000000000000000000055221274717217100163620ustar00rootroot00000000000000/* * examples/athadet.C * * Copyright (C) 2007, 2010 S. Guelton * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/athadet.C * @example examples/athadet.C \brief Determinant of sparse matrix over Z or Zp. \ingroup examples @author serge.guelton@imag.fr */ /* * to be compiled with kaapi library **svn sources**, available at http://gforge.inria.fr * g++ -o atahdet athadet.C $(pkg-config --cflags --libs kaapi) -g3 $( linbox-config --cflags --libs) * or * g++ -o atahdet athadet.C $KAAPI_CPPFLAGS $KAAPI_LDFLAGS -g3 $( linbox-config --cflags --libs) */ #define __LINBOX_HAVE_KAAPI #include #include #include #include #include #include #include using namespace LinBox; using namespace std; typedef Givaro::ZRing Integers; struct cra_det_task { void operator()(int argc, char **argv) { ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file '" << argv[1] << "'" << endl; return ; } Util::logfile() << "creating matrix" << std::endl; Integers ZZ; SparseMatrix sparseMatrix (ZZ); sparseMatrix.read(input); Util::logfile() << "matrix created" << std::endl; Givaro::ZRing::Element det_A; try { cra_det(det_A, sparseMatrix, RingCategories::IntegerTag(), Method::Hybrid() ); } catch ( LinBox::LinboxError & err ) { std::cerr << err << std::endl; } cout << "Determinant is "; ZZ.write(cout, det_A) << endl; } }; int main (int argc, char **argv) { if(argc<2) { cerr << "not enough args : usage = athadet file" << endl; return 1; } a1::Community com = a1::System::join_community(argc,argv); Util::logfile() << "starting job" << std::endl; a1::ForkMain()(argc,argv); com.leave(); a1::System::terminate(); return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/bench-fft.C000077500000000000000000000220351274717217100166050ustar00rootroot00000000000000/* -*- mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Copyright (C) 2013 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include #include #include #include #include #include using namespace std; #include "linbox/algorithms/polynomial-matrix/polynomial-fft-transform.h" #include "linbox/randiter/random-fftprime.h" #include "linbox/ring/modular.h" #include "fflas-ffpack/utils/align-allocator.h" using namespace LinBox; template void randomVect (Rand& r, Vect& v) { size_t s = v.size(); for (size_t i = 0; i < s; ++i) r.random(v[i]); } /********************************** ****** DFT CHECKING FUNCTION ***** *********************************/ template struct congruent{ T p; congruent(T _p): p(_p){} bool operator()(T a, T b) const { return ((uint64_t)a%(uint64_t)p) == ((uint64_t)b%(uint64_t)p);} }; template bool DFT_sanity_check(FFT& FFTDom, Funct f, const Vect& x, const Vect& y, string msg){ typedef typename FFT::Element Element ; Vect z(x); auto Functor = bind(f, &FFTDom, &z[0]); Functor(); msg+=" "; msg.resize(45,'.'); cout<<" Checking ... "<(FFTDom._p))?" done":" error")<(FFTDom._p)))){ std::ostream_iterator out_it (std::cout,", "); std::copy ( z.begin(), z.end(), out_it ); std::cout< bool check_DIF(const Field& fld, size_t kmax, long seed) { typedef typename Field::Element Element; bool passed = true; for (size_t lpts = 1; lpts < kmax ; lpts++){ size_t pts = 1 << lpts; cout<<"********************************************************"< x(pts),y(pts); std::vector> x(pts),y(pts); // Generate random inputs typename Field::RandIter Gen(fld);//,fld.characteristic(),seed); randomVect(Gen,y); x=y; FFT_transform MulDom(fld,lpts); typedef FFT_transform FFT_t; /* CHECK DIF */ // compute the correct result MulDom.FFT_DIF_Harvey_mod2p_iterative(y.data()); // check 2x2 passed &= DFT_sanity_check(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative2x2,x,y, "DIF_Harvey_mod2p_iterative2x2"); // check 3x3 passed &= DFT_sanity_check(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative3x3,x,y, "DIF_Harvey_mod2p_iterative3x3"); // check 4x1 SSE //passed &= DFT_sanity_check(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative4x1_SSE,x,y, "DIF_Harvey_mod2p_iterative4x1_SSE"); // check 4x2 SSE //passed &= DFT_sanity_check(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative4x2_SSE,x,y, "DIF_Harvey_mod2p_iterative4x2_SSE"); #ifdef __LINBOX_HAVE_AVX_INSTRUCTIONS2 // check 8x1 AVX //passed &= DFT_sanity_check(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative8x1_AVX,x,y, "DIF_Harvey_mod2p_iterative8x1_AVX"); #endif // check Harvey SSE passed &= DFT_sanity_check(MulDom,&FFT_t::template FFT_DIF,x,y, "DIF_Harvey_SSE"); // cout<<"---------------------------------------------------------------"<,x,y, "DIT_Harvey_SSE"); // cout< void DFT_performance(FFT& FFTDom, Funct f, size_t lpts, const Vect& x, string msg){ Vect z(x); auto Functor = bind(f, &FFTDom, &z[0]); Timer chrono; double time; double Miops; size_t ct,minct=4; ct = 0; chrono.start(); while (chrono.realElapsedTime() < 1){ for (size_t k=0;k void bench_DIF(const Field& fld, size_t kmax, long seed) { typedef typename Field::Element Element; for (size_t lpts = 5; lpts < kmax ; lpts++){ size_t pts = 1 << lpts; cout<<"*********************************************************"< x(pts); // Generate random inputs typename Field::RandIter Gen(fld,seed); randomVect(Gen,x); FFT_transform MulDom(fld,lpts); typedef FFT_transform FFT_t; // check 1x1 DFT_performance(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative,lpts, x, "DIF_Harvey_mod2p_iterative"); // check 2x2 DFT_performance(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative2x2,lpts, x, "DIF_Harvey_mod2p_iterative2x2"); // check 3x3 DFT_performance(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative3x3,lpts, x, "DIF_Harvey_mod2p_iterative3x3"); // check 4x1 SSE //DFT_performance(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative4x1_SSE,lpts, x, "DIF_Harvey_mod2p_iterative4x1_SSE"); // check 4x2 SSE //DFT_performance(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative4x2_SSE,lpts, x, "DIF_Harvey_mod2p_iterative4x2_SSE"); #ifdef __LINBOX_HAVE_AVX_INSTRUCTIONS2 // check 8x1 AVX //DFT_performance(MulDom,&FFT_t::FFT_DIF_Harvey_mod2p_iterative8x1_AVX,lpts, x, "DIF_Harvey_mod2p_iterative8x1_AVX"); #endif // check Harvey SSE DFT_performance(MulDom,&FFT_t::template FFT_DIF,lpts, x, "DIF_Harvey_SSE"); cout<<"---------------------------------------------------------------"<,lpts, x, "DIT_Harvey_SSE"); cout<3){ cerr<<"usage : prime_bitsize , (seed)"<2)?atoi(argv[2]):time(NULL)); RandomFFTPrime Rd(1< since the implementation will convert to uint32 // and use the uint32 implementation Givaro::Modular Fi(p); cout << "Test : " << ((check_DIF(Fi,k,seed))?"OK":"KO!!!!") << endl; bench_DIF(Fi,k,seed); return 0; } linbox-1.4.2/examples/bench-matpoly-mult.C000077500000000000000000000345041274717217100204760ustar00rootroot00000000000000/* -*- mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Copyright (C) 2013 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include #ifdef VERB #define KARA_TIMING #define FFT_PROFILE #endif #ifdef VERBINT #define INTFFT_TIMING #endif #ifdef HAVE_OPENMP #include #define GIVARO_USES_OMP #include #define gettime realtime typedef Givaro::OMPTimer myTimer; #else #include #define gettime usertime typedef Givaro::Timer myTimer; #endif #include #include #include using namespace std; #include #include #include //#include #include #include #include #include #include #include #include #ifdef BENCH_FLINT #define __GMP_BITS_PER_MP_LIMB 64 extern "C" { #include "flint/longlong.h" #include "flint/ulong_extras.h" #include "flint/nmod_poly_mat.h" #include "flint/flint.h" } #endif #ifdef BENCH_MMX #include #include #include #include #include #include #include #define Prime_field(C, n, p) \ modular >, modular_fixed > #endif using namespace LinBox; template void randomVect (Rand& r, Vect& v) { size_t s = v.size(); for (size_t i = 0; i < s; ++i) r.random(v[i]); } template void randomMat (Rand& r, Mat& m) { for (size_t i = 0; i < m.rowdim(); ++i) for (size_t j = 0; j < m.coldim(); ++j) r.random(m.refEntry(i,j)); } template bool operator==(const MatPol& A, const MatPol& B){ MatrixDomain MD(A.field()); if (A.size()!=B.size()|| A.rowdim()!= B.rowdim() || A.coldim()!=B.coldim()) return false; size_t i=0; while (i struct congruent{ T p; congruent(T _p): p(_p){} bool operator()(T a, T b) const { return (a%p) == (b%p);} }; template void MATPOLMUL_sanity_check(MULDOM& MulDom, const MatPol& C, const MatPol& A, const MatPol& B, std::string msg){ MatPol CC(C.field(),C.rowdim(),C.coldim(),C.size()); //auto Functor = bind(f, &MulDom, ref(CC),A,B); //Functor(); #ifdef FFT_PROFILER FFT_PROF_LEVEL=3; #endif MulDom.mul(CC,A,B); msg+=" "; msg.resize(45,'.'); cout<<" Checking ... "< void check_matpol_mul(const Field& fld, RandIter& Gen, size_t n, size_t d) { typedef PolynomialMatrix MatrixP; typedef PolynomialMatrix PMatrix; // product m*n n*m size_t m=n; PMatrix A(fld,m,n,d),B(fld,n,m,d),C(fld,m,m,2*d-1); MatrixP AA(fld,m,n,d),BB(fld,n,m,d),CC(fld,m,m,2*d-1); // Generate random matrix of polynomial for (size_t i=0;i Naive; typedef PolynomialMatrixKaraDomain Kara; typedef PolynomialMatrixFFTMulDomain FFT; Naive NMD(fld); Kara PMKD(fld); FFT PMFFT(fld); // compute the correct result for (size_t r=0;r void MATPOLMUL_performance(MULDOM& MulDom, const MatPol& A, const MatPol& B, double Miops, std::string msg){ MatPol C(A.field(),A.rowdim(),A.coldim(),A.size()+B.size()-1); //auto Functor = bind(f, &MulDom, ref(C),A,B); Timer chrono; double time; size_t ct,minct=4; size_t prec=6; ct = 0; chrono.start(); while (chrono.realElapsedTime() < 1){ for (size_t k=0;k void bench_matpol_mul(const Field& fld, RandIter& Gen, size_t n, size_t d) { typedef PolynomialMatrix MatrixP; MatrixP A(fld,n,n,d),B(fld,n,n,d),C(fld,n,n,2*d-1); // Generate random matrix of polynomial for (size_t i=0;i Naive; typedef PolynomialMatrixKaraDomain Kara; typedef PolynomialMatrixFFTMulDomain FFT; Naive NMD(fld); Kara PMKD(fld); FFT PMFFT(fld); size_t mmul=2*n*n*n; size_t madd=n*n; size_t kara=pow((double)d, log(3.)/log(2.)); //size_t fft= 17 *d *log(2.*d)/log(2.); size_t costNaive= mmul*d*d + madd*(d-1)*(d-1); size_t costKara = mmul*kara+ 6*madd*kara; //size_t costFFT = mmul*2*d + 3*madd*fft; #ifdef FFT_PROFILER FFT_PROF_LEVEL=3; #endif // bench naive MATPOLMUL_performance(NMD,A,B,costNaive, "Naive Multiplication"); // bench karatsuba MATPOLMUL_performance(PMKD,A,B,costKara, "Karatsuba Multiplication"); // bench fft //MATPOLMUL_performance(PMFFT,A,B,costFFT, "FFT Multiplication"); Timer chrono; #ifdef BENCH_FLINT nmod_poly_mat_t AA,BB,CC; nmod_poly_mat_init(AA,n,n,(uint64_t)fld.cardinality()); nmod_poly_mat_init(BB,n,n,(uint64_t)fld.cardinality()); nmod_poly_mat_init(CC,n,n,(uint64_t)fld.cardinality()); flint_rand_t state; flint_randinit(state); nmod_poly_mat_randtest(AA,state,d); nmod_poly_mat_randtest(BB,state,d); cout<<"-----------------------"< void profile_matpol_mulfft(const Field& fld, RandIter& Gen, size_t n, size_t d) { typedef PolynomialMatrix MatrixP; MatrixP A(fld,n,n,d),B(fld,n,n,d),C(fld,n,n,2*d-1); // Generate random matrix of polynomial for (size_t i=0;i FFT; FFT PMFFT(fld); myTimer chrono; //size_t mmul=2*n*n*n; //size_t madd=n*n; //size_t fft= 17 *d *log(2.*d)/log(2.); //size_t costFFT = mmul*2*d + 3*madd*fft; size_t count=0; chrono.start(); do { PMFFT.mul(C,A,B); count++; } while (false);//count<20 && chrono.userElapsedTime()<1); //cout<<"FFT Multiplication total: "< > MOD; // typedef mmx::modulus MOD; // typedef mmx::modular COEFF; // MOD M((uint64_t)fld.cardinality()); // COEFF::set_modulus(M); typedef mmx::modular >, mmx::modular_fixed> COEFF; //mmx::mmout <<"\n MMX mod :"<< COEFF::get_modulus()<<"\n"; typedef mmx::polynomial_tft PV; typedef mmx::matrix_tft MV; typedef mmx::polynomial POLY; typedef mmx::matrix MATRIX; MATRIX AAA(1,n,n), BBB(1,n,n), CCC(1,n,n); for (mmx::nat i=0; i vA,vB; for(size_t h=0;h void profile_matpol_mulkara(const Field& fld, RandIter& Gen, size_t n, size_t d) { typedef PolynomialMatrix MatrixP; MatrixP A(fld,n,n,d),B(fld,n,n,d),C(fld,n,n,2*d-1); // Generate random matrix of polynomial for (size_t i=0;i Kara; Kara PM(fld); Timer chrono; chrono.start(); PM.mul(C,A,B); size_t mmul=2*n*n*n; size_t madd=n*n; size_t kara=pow((double)d, log(3.)/log(2.)); size_t costKara = mmul*kara+ 6*madd*kara; cout<<"Kara Multiplication total: "< void runTest(const Field& F, size_t n, long b, long d, long seed, std::string test){ typename Field::RandIter G(F,b,seed); //typename Field::RandIter G(F,seed); if (test == "check"|| test == "all") check_matpol_mul(F,G,n,d); if (test == "bench" || test == "all") bench_matpol_mul(F,G,n,d); if (test == "fft") profile_matpol_mulfft(F,G,n,d); if (test == "longfft"){ size_t N[15]={16,16,16,16,16,16,16,16, 64,128,256,512,512,1024,2048}; size_t D[15]={64,128,256,512,1024,2048,4096,8192,1024,512,256,512,128, 64,32 }; for (size_t i=0;i<15;i++) profile_matpol_mulfft(F,G,N[i],D[i]); } if (test == "kara") profile_matpol_mulkara(F,G,n,d); } int main(int argc, char** argv){ static size_t n = 32; // matrix dimension static long b = 20; // entries bitsize static uint64_t d = 32; // matrix degree static bool z = false; // computer over Z[x] static long seed = time(NULL); static std::string test ="all"; static Argument args[] = { { 'n', "-n N", "Set dimension of test matrices to NxN.", TYPE_INT, &n }, { 'd', "-d D", "Set degree of test matrices to D.", TYPE_INT, &d }, { 'b', "-b B", "Set bitsize of the matrix entries", TYPE_INT, &b }, { 'z', "-z y", "Perform the computation over Z[x]", TYPE_BOOL, &z}, { 's', "-s s", "Set the random seed to a specific value", TYPE_INT, &seed}, { 't', "-t t", "Choose the targeted test {all,check,bench,fft,kara,longfft}", TYPE_STR, &test}, END_OF_ARGUMENTS }; parseArguments (argc, argv, args); if (z){ #ifdef FFT_PROFILER FFT_PROF_LEVEL=2; #endif cout<<"Computation over Z[x] "< F; runTest (F,n,b,d,seed,test); } else { if (b > 29){ #ifdef FFT_PROFILER FFT_PROF_LEVEL=2; #endif RandomPrimeIter Rd(b,seed); integer p= Rd.random(); Givaro::Modular F(p); //Givaro::Modular F(p); cout<<"Computation over Fp[x] with p= "< F((int32_t)p); Givaro::Modular F((int32_t)p); cout<<"Computation over Fp[x] with p= "<s,f0,{0,g0,(0,\:0,t0,+0,=s /* * Copyright (C) 2013 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include #include #include #include #include #include using namespace std; #include "linbox/algorithms/polynomial-matrix/polynomial-fft-butterflies.h" #include "linbox/algorithms/polynomial-matrix/polynomial-fft-algorithms.h" #include "linbox/algorithms/polynomial-matrix/polynomial-fft-transform.h" #include "linbox/randiter/random-fftprime.h" #include "linbox/ring/modular.h" #include "fflas-ffpack/utils/align-allocator.h" using namespace LinBox; template void randomVect (Rand& r, Vect& v) { size_t s = v.size(); for (size_t i = 0; i < s; ++i) r.random(v[i]); } /********************************** ****** DFT CHECKING FUNCTION ***** *********************************/ template struct congruent{ T p; congruent(T _p): p(_p){} bool operator()(T a, T b) const { return ((uint64_t)a%(uint64_t)p) == ((uint64_t)b%(uint64_t)p);} }; template bool DFT_sanity_check(FFT& FFTDom, Funct f, const Vect& x, const Vect& y, string msg){ typedef typename FFT::Element Element ; Vect z(x); auto Functor = bind(f, &FFTDom, &z[0]); Functor(); msg+=" "; msg.resize(45,'.'); cout<<" Checking ... "<(FFTDom._p))?" done":" error")<(FFTDom._p)))){ // std::ostream_iterator out_it (std::cout,", "); // std::copy ( z.begin(), z.end(), out_it ); // std::cout< bool check_DIF(const Field& fld, size_t kmax, long seed) { typedef typename Field::Element Element; bool passed = true; for (size_t lpts = 1; lpts < kmax ; lpts++){ size_t pts = 1 << lpts; cout<<"********************************************************"< x(pts),y(pts); std::vector> x(pts),y(pts); // Generate random inputs typename Field::RandIter Gen(fld);//,fld.characteristic(),seed); randomVect(Gen,y); x=y; // FFT_transform MulDom(fld,lpts); // typedef FFT_transform FFT_t; FFT_init fft_init (fld, lpts); FFT_algorithms > fft_algo_nosimd (fft_init); // using FFT_a = FFT_algorithms >; /* CHECK DIF */ // compute the correct result fft_algo_nosimd.DIF(y.data()); #if defined(__FFLASFFPACK_HAVE_SSE4_1_INSTRUCTIONS) // check FFT_algorithms::DIF if (Simd128::vect_size == 4 || Simd128::vect_size == 8){ FFT_algorithms > fft_algo_simd128 (fft_init); using FFT_a128 = FFT_algorithms >; passed &= DFT_sanity_check(fft_algo_simd128,&FFT_a128::DIF,x,y, "FFT_algorithms::DIF"); } #endif #if defined(__FFLASFFPACK_HAVE_AVX2_INSTRUCTIONS) // check FFT_algorithms::DIF if (Simd256::vect_size == 4 || Simd256::vect_size == 8){ FFT_algorithms > fft_algo_simd256 (fft_init); using FFT_a256 = FFT_algorithms >; passed &= DFT_sanity_check(fft_algo_simd256,&FFT_a256::DIF,x,y, "FFT_algorithms::DIF"); } #endif cout<<"---------------------------------------------------------------"<::vect_size == 4 || Simd128::vect_size == 8){ FFT_algorithms > fft_algo_simd128 (fft_init); using FFT_a128 = FFT_algorithms >; passed &= DFT_sanity_check(fft_algo_simd128,&FFT_a128::DIT,x,y, "FFT_algorithms::DIT"); } #endif #if defined(__FFLASFFPACK_HAVE_AVX2_INSTRUCTIONS) // check FFT_algorithms::DIT if (Simd256::vect_size == 4 || Simd256::vect_size == 8){ FFT_algorithms > fft_algo_simd256 (fft_init); using FFT_a256 = FFT_algorithms >; passed &= DFT_sanity_check(fft_algo_simd256,&FFT_a256::DIT,x,y, "FFT_algorithms::DIT"); } #endif cout< void DFT_performance(FFT& FFTDom, Funct f, size_t lpts, const Vect& x, string msg){ Vect z(x); auto Functor = bind(f, &FFTDom, &z[0]); Timer chrono; double time; double Miops; size_t ct,minct=4; ct = 0; chrono.start(); while (chrono.realElapsedTime() < 1){ for (size_t k=0;k void bench_DIF(const Field& fld, size_t kmax, long seed) { typedef typename Field::Element Element; for (size_t lpts = 5; lpts < kmax ; lpts++){ uint64_t pts = 1UL << lpts; cout<<"*********************************************************"< x(pts); // Generate random inputs typename Field::RandIter Gen(fld,seed); randomVect(Gen,x); FFT_init fft_init (fld, lpts); FFT_algorithms > fft_algo_nosimd (fft_init); using FFT_a = FFT_algorithms >; DFT_performance(fft_algo_nosimd,&FFT_a::DIF, lpts, x, "FFT_algorithms::DIF"); #if defined(__FFLASFFPACK_HAVE_SSE4_1_INSTRUCTIONS) if (Simd128::vect_size == 4 || Simd128::vect_size == 8){ FFT_algorithms > fft_algo_simd128 (fft_init); using FFT_a128 = FFT_algorithms >; DFT_performance(fft_algo_simd128,&FFT_a128::DIF, lpts, x, "FFT_algorithms::DIF"); } #endif #if defined(__FFLASFFPACK_HAVE_AVX2_INSTRUCTIONS) if (Simd256::vect_size == 4 || Simd256::vect_size == 8){ FFT_algorithms > fft_algo_simd256 (fft_init); using FFT_a256 = FFT_algorithms >; DFT_performance(fft_algo_simd256,&FFT_a256::DIF, lpts, x, "FFT_algorithms::DIF"); } #endif cout<<"---------------------------------------------------------------"<::DIT"); #if defined(__FFLASFFPACK_HAVE_SSE4_1_INSTRUCTIONS) if (Simd128::vect_size == 4 || Simd128::vect_size == 8){ FFT_algorithms > fft_algo_simd128 (fft_init); using FFT_a128 = FFT_algorithms >; DFT_performance(fft_algo_simd128,&FFT_a128::DIT, lpts, x, "FFT_algorithms::DIT"); } #endif #if defined(__FFLASFFPACK_HAVE_AVX2_INSTRUCTIONS) if (Simd256::vect_size == 4 || Simd256::vect_size == 8){ FFT_algorithms > fft_algo_simd256 (fft_init); using FFT_a256 = FFT_algorithms >; DFT_performance(fft_algo_simd256,&FFT_a256::DIT, lpts, x, "FFT_algorithms::DIT"); } #endif cout<3){ // cerr<<"usage : prime_bitsize , (seed)"<2)?atoi(argv[2]):time(NULL)); size_t l2n = 12; size_t k = l2n; RandomFFTPrime Rd; uint32_t p; //Modular bits = 22; Rd = RandomFFTPrime (1< Fd(p); // cout << "Test Modular: " << ((check_DIF(Fd,k,seed))?"OK":"KO!!!!") << endl; #ifdef __FFLASFFPACK_HAVE_INT128 //Modular bits = 59; Rd = RandomFFTPrime (1ul< Fi64(p); cout << "Test Modular : " << ((check_DIF(Fi64,k,seed))?"OK":"KO!!!!") << endl; #endif //Modular bits = 28; Rd = RandomFFTPrime (1< Fi32(p); cout << "Test Modular: " << ((check_DIF(Fi32,k,seed))?"OK":"KO!!!!") << endl; // bench_DIF(Fi32,k,seed); //Modular bits = 12; k = l2n = 8; Rd = RandomFFTPrime (1< Fi16(p); cout << "Test Modular : " << ((check_DIF(Fi16,k,seed))?"OK":"KO!!!!") << endl; // Bench FFT // cout << "Test : " << ((check_DIF(Fi16,k,seed))?"OK":"KO!!!!") << endl; // cout << "Test : " << ((check_DIF(Fd,k,seed))?"OK":"KO!!!!") << endl; // bench_DIF(Fi,k,seed); // bench_DIF(Fd,k,seed); return 0; } linbox-1.4.2/examples/bigmat.C000066400000000000000000000037671274717217100162240ustar00rootroot00000000000000/* * examples/bigmat.C * * Copyright (C) 2007, 2010 B Youse, D. Saunders * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file examples/bigmat.C * @example examples/bigmat.C * \ingroup examples * @brief Outputs a big and very sparse matrix. * * let C be the cyclic shift matrix with 1 on the 1,n position and along the first subdiagonal. * * This matrix is \f$2C + 3I\f$. It has 2 nonzero entries per row and per column. * It is an \f$ n \times n\f$ matrix whose determinant is considerably less than the * Hadamard bound (but is large -- 3^n +- 2^n). * */ #include #include using namespace std; int main(int argc, char* argv[]) { if (argc != 2 ) { cerr << "Usage: bigmat , where is the size you like." << endl; return -1; } int n = atoi(argv[1]); cout << n << " " << n << " M" << endl; cout << "1 1 3" << endl; cout << "1 " << n << " 2" << endl; for (int i = 2; i <=n; ++i) { cout << i << " " << i-1 << " " << 2 << endl; cout << i << " " << i << " " << 3 << endl; } cout << "0 0 0" << endl; return 0 ; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/blackbox/000077500000000000000000000000001274717217100164255ustar00rootroot00000000000000linbox-1.4.2/examples/blackbox/Makefile.am000066400000000000000000000027501274717217100204650ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # This file is part of LinBox # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ INCLUDES=-I$(top_srcdir) EXTRA_PROGRAMS = smith example ex-mat0 load-det load-minpoly load-symmetrize random-rank #zeroone-rank AM_CPPFLAGS=-DLinBoxSrcOnly $(NTL_CFLAGS) -DEXAMPLE_DATADIR=\"$(srcdir)/data\" LDADD = $(NTL_LIBS) -lgivaro -lclapack -lcblas -latlas $(LDFLAGS) example_SOURCES = example.C smith_SOURCES = smith.C load_det_SOURCES = load-det.C load_minpoly_SOURCES = load-minpoly.C load_symmetrize_SOURCES = load-symmetrize.C random_rank_SOURCES = random-rank.C #zeroone_rank_SOURCES = zeroone-rank.C ex_mat0_SOURCES = ex-mat0.C # general %:%.o $(CXXLINK) $(LDFLAGS) $(OBJECTS) $(LDADD) $(LIBS) linbox-1.4.2/examples/blackbox/ex-mat0.C000066400000000000000000000045431274717217100200120ustar00rootroot00000000000000/* * examples/blackbox/example.C * * Copyright (C) 2003 William J. Turner * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** @name examples/blackbox/ex-mat0.C * @author William J. Turner for the LinBox group * * @memo usage: ex-mat0 in-file out-file * * @doc * Run tests on Wiedemann algorithm for solving nonhomogeneous linear * equations * * FIXME What does it do? I think this may be a remnant, has evolved * into one of the other examples. delete it? */ //@{ #include #include #include #include #include #include "linbox/field/modular.h" //#include "linbox/blackbox/sparse0.h" #include "linbox/blackbox/sparse1.h" using namespace LinBox; using namespace std; int main(int argc, char* argv[]) { if (argc != 3) { cerr << "usage: " << argv[0] << " in_file out_file" << endl; return -1; } char* in_file = argv[1]; char* out_file = argv[2]; typedef Givaro::Modular Field; typedef Field::Element Element; typedef Field::RandIter RandIter; typedef std::list< pair > Row; typedef std::vector Vector; Field K(7); ofstream out_stream(out_file); ifstream in_stream(in_file); // SparseMatrix A(K,4,4); // A.read(in_stream); // A.write(out_stream); SparseBlackBoxDom< Field > A(K) ; A.read(in_stream); A.write(out_stream); } //@} // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/blackbox/example.C000066400000000000000000000074651274717217100202000ustar00rootroot00000000000000 /* * examples/blackbox/example.C * * Copyright (C) 2001, 2002, 2010 Bradford Hovinen * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** @name examples/blackbox/example.C * * @author Bradford Hovinen * @memo * Simple example on Linbox use. Demonstrates loading and application of * blackbox matrix to a vector and computation of the minimal polynomial. * @doc * FIXME what is shown different that in other minpoly example? * */ //@{ #include "linbox/linbox-config.h" #include #include #include // Field we are working with //#include "linbox/field/modular.h" #include "linbox/field/givaro-gfq.h" // Black box classes we are going to work with #include "linbox/matrix/sparse-matrix.h" // Minimal polynomial algorithm #include "linbox/solutions/minpoly.h" #include "linbox/vector/vector-domain.h" //using namespace LinBox; using namespace std; // This is the field we are going to be working with - integers mod q //typedef Givaro::Modular Field; typedef LinBox::Givaro::GFq Field; // Some typedefs to make the type names less daunting typedef vector Vector; typedef vector Polynomial; typedef vector > Row; typedef LinBox::SparseMatrix ::SparseFormat > Blackbox; // Constants: we are working with an n x n matrix over GF(q) const int n = 10; const int q = 101; void printVector (const Field &F, const Vector &v) { int i; cout << '('; for (i = 0; i < v.size (); i++) { F.write (cout, v[i]); if (i < v.size () - 1) cout << ", "; } cout << ')' << endl; } void printPolynomial (const Field &F, const Polynomial &v) { int i; for (i = v.size () - 1; i >= 0; i--) { F.write (cout, v[i]); if (i > 0) cout << " x^" << i << " + "; } cout << endl; } void makeTestVector (const Field &F, const Blackbox &A, Vector &v) { int i; v.resize (A.coldim ()); for (i = 0; i < v.size (); i++) F.init (v[i], i); } void testApply (const Field &F, const Blackbox &A, const Vector &v) { Vector w (A.coldim ()); cout << "v = "; printVector (F, v); A.apply (w, v); cout << "Av = "; printVector (F, w); cout << endl; } void testMinpoly (const Field &F, const Blackbox &A) { Polynomial m_A; LinBox::minpoly (m_A, A, F); cout << "Minimal polynomial m_A of A is: "; printPolynomial (F, m_A); cout << endl; } /// no command line args int main (int argc, char **argv) { srand (time (NULL)); // Construct the field GF(q) and a vector over GF(q)^n to // which to apply the matrix //Field F (q); Field F (2, 15); Vector v (n); // Construct and load the sparse test matrix Blackbox A (F, n, n); //ifstream input (EXAMPLE_DATADIR "/test.matrix"); ifstream input ("mat.txt"); A.read (input); // Run tests makeTestVector (F, A, v); testApply (F, A, v); testMinpoly (F, A); return 0; } //@} // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/blackbox/load-det.C000066400000000000000000000050011274717217100202160ustar00rootroot00000000000000 /* * examples/blackbox/load-det.C * * Copyright (C) 2001, 2002, 2010 Bradford Hovinen * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** @name examples/blackbox/load-det.C * * @author Bradford Hovinen * * @memo * Small program that loads and computes the determinant of a matrix whose * filename is given on the command line. */ //@{ #include "linbox/linbox-config.h" #include #include #include "linbox/field/modular.h" #include "linbox/solutions/det.h" using namespace LinBox; using namespace std; // Select our field: integers modulo a word-size (max. 31-bit) modulus typedef Givaro::Modular Field; // Select our black box: a sparse matrix over the above-mentioned field with // default application vector and row representation types typedef DenseMatrix Blackbox; // Constants: we are working with a matrix over GF(q) /// load-det matrix-file int main (int argc, char **argv) { Field::Element det_A; int q = 65521U; if (argc < 2 || argc > 3) { cerr << "Usage: load-det [

]" << endl; return -1; } commentator().setMaxDepth (2); commentator().setReportStream (cout); if (argc == 3) q = atoi(argv[2]); Field F (q); Blackbox A (F); ifstream input (argv[1]); if (!input) { cerr << "Error: Cannot load matrix " << argv[1] << endl; return -1; } A.read (input); // size is determined by the input. cout << "A is " << A.rowdim() << " by " << A.coldim() << endl; det (det_A, A, F); cout << "Determinant is " << det_A << " mod " << q << endl; return 0; } //@} // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/blackbox/load-minpoly.C000066400000000000000000000054111274717217100211360ustar00rootroot00000000000000 /* * examples/blackbox/load-minpoly.C * * Copyright (C) 2001, 2002 Bradford Hovinen * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** @name examples/blackbox/load-minpoly.C * * @author Bradford Hovinen * * @memo * Small program that loads and computes the minimal polynomial of a matrix * whose filename is given on the command line. */ //@{ #include "linbox/linbox-config.h" #include #include #include #include "linbox/field/modular.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/solutions/minpoly.h" using namespace LinBox; using namespace std; // Select our field: integers modulo a word-size (max. 31-bit) modulus typedef Givaro::Modular Field; // Select our black box: a sparse matrix over the above-mentioned field with // default application vector and row representation types typedef SparseMatrix Blackbox; // We are using dense vectors to represent polynomials typedef Vector::Dense Polynomial; // Constants: we are working with an n x n matrix over GF(q) const int n = 1000; const int q = 65521U; void printPolynomial (const Field &F, const Polynomial &v) { int i; for (i = v.size () - 1; i >= 0; i--) { F.write (cout, v[i]); if (i > 0) cout << " x^" << i << " + "; } cout << endl; } /// load-minpoly matrix-file int main (int argc, char **argv) { Polynomial m_A; if (argc < 2) { cerr << "Usage: load-minpoly " << endl; return -1; } commentator().setMaxDepth (2); commentator().setReportStream (cout); Field F (q); Blackbox A (F, n, n); ifstream input (argv[1]); if (!input) { cerr << "Error: Cannot load matrix " << argv[1] << endl; return -1; } A.read (input); minpoly (m_A, A, F); cout << "Minimal polynomial is "; printPolynomial (F, m_A); return 0; } //@} // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/blackbox/load-symmetrize.C000066400000000000000000000053151274717217100216620ustar00rootroot00000000000000 /* * examples/blackbox/load-sylletrize.C * * Copyright (C) 2001, 2002, 2010 Bradford Hovinen * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** @name examples/blackbox/load-symmetrize.C * * @author Bradford Hovinen * @memo * Small program that loads and computes the minimal polynomial of A^T A, where * A is a matrix whose filename is given on the command line */ //@{ #include "linbox/linbox-config.h" #include #include #include #include "linbox/field/modular.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/algorithms/blackbox-container-symmetrize.h" #include "linbox/algorithms/massey-domain.h" using namespace LinBox; using namespace std; typedef Givaro::Modular Field; typedef vector Vector; typedef vector Polynomial; typedef SparseMatrix ::SparseFormat > Blackbox; // Constants: we are working with an n x n matrix over GF(q) const int n = 1000; const int q = 65521U; /// load-symmetrize matrix-file int main (int argc, char **argv) { if (argc < 2) { cerr << "Usage: load-symmetrize " << endl; return -1; } commentator().setMaxDepth (2); commentator().setReportStream (cout); Field F (q); Blackbox A (F, n, n); ifstream input (argv[1]); if (!input) { cerr << "Error: Cannot load matrix " << argv[1] << endl; return -1; } A.read (input); unsigned long deg; std::vector P; BlackboxContainerSymmetrize TF (&A, F); MasseyDomain< Field, BlackboxContainerSymmetrize > WD (&TF, 20); WD.pseudo_minpoly (P, deg); cout << "Determinant is " << P[0] << endl; cout << "Degree is " << P.size () - 1 << endl; return 0; } //@} // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/blackbox/mat.txt000066400000000000000000000000611274717217100177440ustar00rootroot000000000000004 4 M 1 1 1 1 2 2 1 3 8 1 3 9 2 2 3 3 0 9 -1 linbox-1.4.2/examples/blackbox/mat2.txt000066400000000000000000000000411274717217100200240ustar00rootroot000000000000002 2 M 0 0 1 0 1 2 1 0 3 1 1 4 -1 linbox-1.4.2/examples/blackbox/random-rank.C000066400000000000000000000066421274717217100207520ustar00rootroot00000000000000 /* * examples/blackbox/random-rank.C * * Copyright (C) 2001, 2002, 2010 Bradford Hovinen * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** @name examples/blackbox/random-rank.C * * @author Bradford Hovinen * * @memo rank by several algorithms over large and small fields. * @doc FIXME what's it do more precisely? */ //@{ #include "linbox/linbox-config.h" #include #include #include #include "linbox/field/modular.h" #include "linbox/field/givaro-gfq.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/solutions/rank.h" #include "linbox/solutions/methods.h" #include "linbox/vector/stream.h" using namespace LinBox; using namespace std; // Select our field: integers modulo a word-size (max. 31-bit) modulus typedef Givaro::Modular Field; typedef Givaro::GFq FieldExtn; // The Gaussian elimiation code only works with sparse sequence vectors, so we'll use those typedef Vector::SparseSeq Row; typedef Vector::SparseSeq RowE; // Select our black box: a sparse matrix over the above-mentioned field with // default application vector and row representation types typedef SparseMatrix::SparseFormat> Blackbox; typedef SparseMatrix::SparseFormat> BlackboxE; // Constants: we are working with an n x n matrix over GF(q) const int n = 1000; //const int q = 65521U; const int q = 2U; const double p = 0.026; /// no command line args int main (int argc, char **argv) { unsigned long rank_A_Wiedemann, rank_A_elimination; commentator().setMaxDepth (2); commentator().setReportStream (cout); Field F (q); Field::RandIter gen(F); FieldExtn E (q, 10); FieldExtn::RandIter Egen(E); RandomSparseStream A_stream (F, gen, p, n, n); RandomSparseStream B_stream (E, Egen, p, n, n); Blackbox A (F, A_stream); BlackboxE B (E, B_stream); rank (rank_A_Wiedemann, A, F, MethodTrait::Wiedemann ()); rank (rank_A_elimination, A, F, MethodTrait::Elimination ()); cout << "Rank by Wiedemann is " << rank_A_Wiedemann << endl; cout << "Rank by Elimination is " << rank_A_elimination << endl; rank (rank_A_Wiedemann, B, E, MethodTrait::Wiedemann ()); rank (rank_A_elimination, B, E, MethodTrait::Elimination ()); cout << "Over Extension Field Rank by Wiedemann is " << rank_A_Wiedemann << endl; cout << "Over Extension Field Rank by Elimination is " << rank_A_elimination << endl; return 0; } //@} // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/blackbox/smith.C000066400000000000000000000276711274717217100176720ustar00rootroot00000000000000/* Copyright (C) LinBox * Written by bds, zw * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/blackbox/smith.C \brief mod m Smith form by elmination \author bds & zw */ #include #include #include #include using namespace std; #include "linbox/util/timer.h" #include "linbox/field/unparametric.h" #include "linbox/field/local2_32.h" //#include "linbox/field/PIR-modular-int32.h" #include "linbox/algorithms/2local-smith.h" #include "linbox/algorithms/local-smith.h" #include "linbox/algorithms/iliopoulos-elimination.h" using namespace LinBox; #ifndef BIG #include "linbox/field/PIR-modular-int32.h" typedef PIRModular PIR; #else #include "linbox/field/PIR-ntl-ZZ_p.h" typedef PIR_ntl_ZZ_p PIR; #endif template void Mat(DenseMatrix& M, PIR& R, int n, string src, string file, string format); template void distinct (I1 a, I1 b, Lp& c); template void display(I b, I e); int main(int argc, char* argv[]) { if (argc < 5) { cout << "usage: " << argv[0] << " alg m n source format \n" << endl; cout << "alg = `adaptive', `ilio', `local', or `2local', \n" << "m is modulus (ignored by 2local, adaptive), " << "n is matrix order, \n" << "source is `random', `random-rough', `fib', `tref', or a filename \n" << "format is `dense' or `sparse' (if matrix from a file)\n" << "compile with -DBIG if you want big integers used.\n"; return 0; } string algo = argv[1]; int m = atoi(argv[2]); int n = atoi(argv[3]); string src = argv[4]; string file = src; string format = (argc >= 6 ? argv[5] : ""); UserTimer T; if (algo == "adaptive") { cerr << "adaptive call not implemented yet" << endl; } if (algo == "ilio") { PIR R(m); DenseMatrix M(R); Mat(M, R, n, src, file, format); T.start(); IliopoulosElimination::smithIn (M); T.stop(); typedef list< PIR::Element > List; List L; for (size_t i = 0; i < M.rowdim(); ++i) L.push_back(M[i][i]); list > p; distinct(L.begin(), L.end(), p); cout << "#"; display(p.begin(), p.end()); cout << "# ilio, PIR-Modular-int32_t(" << m << "), n = " << n << endl; cout << "T" << n << "ilio" << m << " := "; } else if (algo == "local") { // m must be a prime power PIR R(m); DenseMatrix M(R); Mat(M, R, n, src, file, format); typedef list< PIR::Element > List; List L; LocalSmith SmithForm; T.start(); SmithForm( L, M, R ); T.stop(); list > p; distinct(L.begin(), L.end(), p); cout << "#"; display(p.begin(), p.end()); cout << "# local, PIR-Modular-int32_t(" << m << "), n = " << n << endl; cout << "T" << n << "local" << m << " := "; } else if (algo == "2local") { Local2_32 R; DenseMatrix M(R); Mat(M, R, n, src, file, format); typedef list< Local2_32::Element > List; List L; LocalSmith SmithForm; T.start(); SmithForm( L, M, R ); T.stop(); list > p; distinct(L.begin(), L.end(), p); cout << "#"; display(p.begin(), p.end()); cout << "# 2local, Local2_32, n = " << n << endl; cout << "T" << n << "local2_32 := "; } else { printf ("Unknown algorithms\n"); exit (-1); } T.print(cout); cout << ";" << endl; return 0 ; } /** Output matrix is determined by src which may be: "random-rough" This mat will have s, near sqrt(n), distinct invariant factors, each repeated twice), involving the s primes 101, 103, ... "random" This mat will have the same nontrivial invariant factors as diag(1,2,3,5,8, ... 999, 0, 1, 2, ...). "fib" This mat will have the same nontrivial invariant factors as diag(1,2,3,5,8, ... fib(k)), where k is about sqrt(n). The basic matrix is block diagonal with i-th block of order i and being a tridiagonal {-1,0,1} matrix whose snf = diag(i-1 1's, fib(i)), where fib(1) = 1, fib(2) = 2. But note that, depending on n, the last block may be truncated, thus repeating an earlier fibonacci number. "file" (or any other string) mat read from named file with format "sparse" or "dense". Also "tref" and file with format "kdense" */ template void Mat(DenseMatrix& M, PIR& R, int n, string src, string file, string format) { if (src == "random-rough") RandomRoughMat(M, R, n); else if (src == "random") RandomFromDiagMat(M, R, n); else if (src == "fib") RandomFibMat(M, R, n); else if (src == "tref") TrefMat(M, R, n); else // from file { int rdim, cdim; std::ifstream in (file.c_str(), std::ios::in); if (! in) { cerr << "error: unable to open file" << endl; exit(-1); } in >> rdim >> cdim; M. resize (rdim, cdim); if (format == "dense" ) { int val; for (int i = 0; i < rdim; ++ i) for ( int j = 0; j < cdim; ++ j) { in >> val; R. init (M[i][j], val); } } else if (format == "sparse") { int i, j; char mark; in >> mark; LinBox::integer val; do { in >> i >> j; in. ignore (1); in >> val; if ( i == 0) break; R. init (M[i-1][j-1], val); } while (true); } //Krattenthaler's q^e matrices, given by exponent else if (format == "kdense") KratMat(M, R, n, in); else { cout << "Format: " << format << " Unknown\n"; exit (-1); } } /*show some entries for (int k = 0; k < 10; ++k) cout << M.getEntry(0,k) << " " << M.getEntry(M.rowdim()-1, M.coldim()-1 - k) << endl; cout << endl << M.rowdim() << " " << M.coldim() << endl; */ /* some row ops and some col ops */ } // Mat // This mat will have s, near sqrt(n), distinct invariant factors, // each repeated twice), involving the s primes 101, 103, ... template void RandomRoughMat(DenseMatrix& M, PIR& R, int n) { M.resize(n, n, R.zero); if (n > 10000) {cerr << "n too big" << endl; exit(-1);} int jth_factor[130] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733}; for (int j= 0, i = 0 ; i < n; ++j) { typename PIR::Element v; R.init(v, jth_factor[25+j]); for (int k = j ; k > 0 && i < n ; --k) { M[i][i] = v; ++i; if (i < n) {M[i][i] = v; ++i;} } } scramble(M); } // This mat will have the same nontrivial invariant factors as // diag(1,2,3,5,8, ... 999, 0, 1, 2, ...). template void RandomFromDiagMat(DenseMatrix& M, PIR& R, int n) { M.resize(n, n, R.zero); for (int i= 0 ; i < n; ++i) R.init(M[i][i], i % 1000 + 1); scramble(M); } // This mat will have the same nontrivial invariant factors as // diag(1,2,3,5,8, ... fib(k)), where k is about sqrt(n). // The basic matrix is block diagonal with i-th block of order i and // being a tridiagonal {-1,0,1} matrix whose snf = diag(i-1 1's, fib(i)), // where fib(1) = 1, fib(2) = 2. But note that, depending on n, // the last block may be truncated, thus repeating an earlier fibonacci number. template void RandomFibMat(DenseMatrix& M, PIR& R, int n) { M.resize(n, n, R.zero); typename PIR::Element pmone; R.assign(pmone, R.one); for (int i= 0 ; i < n; ++i) M[i][i] = R.one; int j = 1, k = 0; for (int i= 0 ; i < n-1; ++i) { if ( i == k) { M[i][i+1] = R.zero; k += ++j; } else { M[i][i+1] = pmone; R.negin(pmone); } R.neg(M[i+1][i], M[i][i+1]); } scramble(M); } template < class Ring > void scramble(DenseMatrix& M) { Ring R = M.field(); int N,n = M.rowdim(); // number of random basic row and col ops. N = n; for (int k = 0; k < N; ++k) { int i = rand()%M.rowdim(); int j = rand()%M.coldim(); if (i == j) continue; // M*i += alpha M*j and Mi* += beta Mj //int a = rand()%2; int a = 0; for (size_t l = 0; l < M.rowdim(); ++l) { if (a) R.subin(M[l][i], M[l][j]); else R.addin(M[l][i], M[l][j]); //K.axpy(c, M.getEntry(l, i), x, M.getEntry(l, j)); //M.setEntry(l, i, c); } //a = rand()%2; for (size_t l = 0; l < M.coldim(); ++l) { if (a) R.subin(M[i][l], M[j][l]); else R.addin(M[i][l], M[j][l]); } } std::ofstream out("matrix", std::ios::out); //M. write(std::cout); out << n << " " << n << "\n"; for (int i = 0; i < n; ++ i) { for ( int j = 0; j < n; ++ j) { R. write(out, M[i][j]); out << " "; } out << "\n"; } //} } ////////////////////////////////// // special mats tref and krat // Trefethen's challenge #7 mat (primes on diag, 1's on 2^e bands). template void TrefMat(DenseMatrix& M, PIR& R, int n) { M.resize(n, n, R.zero); std::vector power2; int i = 1; do { power2. push_back(i); i *= 2; } while (i < n); std::ifstream in ("prime", std::ios::in); for ( i = 0; i < n; ++ i) in >> M[i][i]; std::vector::iterator p; for ( i = 0; i < n; ++ i) { for ( p = power2. begin(); (p != power2. end()) && (*p <= i); ++ p) M[i][i - *p] = 1; for ( p = power2. begin(); (p != power2. end()) && (*p < n - i); ++ p) M[i][i + *p] = 1; } } //// end tref /////// begin krat ///////////////////////////// struct pwrlist { vector m; pwrlist(integer q) { m.push_back(1); m.push_back(q); //cout << "pwrlist " << m[0] << " " << m[1] << endl; } integer operator[](int e) { for (int i = m.size(); i <= e; ++i) m.push_back(m[1]*m[i-1]); return m[e]; } }; // Read "1" or "q" or "q^e", for some (small) exponent e. // Return value of the power of q at q = _q. template num& qread(num& val, pwrlist& M, istream& in) { char c; in >> c; // next nonwhitespace if (c == '0') return val = 0; if (c == '1') return val = 1; if (c != 'p' && c != 'q') { cout << "exiting due to unknown char " << c << endl; exit(-1);} in.get(c); if (c !='^') {in.putback(c); return val = M[1];} else { int expt; in >> expt; return val = M[expt]; }; } template void KratMat(DenseMatrix& M, PIR& R, int q, istream& in) { pwrlist pwrs(q); for (int i = 0; i < M.rowdim(); ++ i) for ( int j = 0; j < M.coldim(); ++ j) { int /* e,*/ val; qread(val, pwrs, in); R. init (M[i][j], val); } } ///// end krat //////////////////////////// template void distinct (I1 a, I1 b, Lp& c) { typename I1::value_type e; size_t count = 0; if (a != b) {e = *a; ++a; count = 1;} else return; while (a != b) { if (*a == e) ++count; else { c.push_back(typename Lp::value_type(e, count)); e = *a; count = 1; } ++a; } c.push_back(typename Lp::value_type(e, count)); return; } template void display(I b, I e) { cout << "("; for (I p = b; p != e; ++p) cout << p->first << " " << p->second << ", "; cout << ")" << endl; } //@} // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/charpoly.C000066400000000000000000000114511274717217100165670ustar00rootroot00000000000000/* * examples/charpoly.C * * Copyright (C) 2005, 2010 D. Saunders, C. Pernet, J-G. Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/charpoly.C * @example examples/charpoly.C \brief Characteristic polynomial of matrix over Z or Zp. \ingroup examples */ #include #include #include #include #include #include #include using namespace std; #include #include using namespace LinBox; template std::ostream& printPolynomial (std::ostream& out, const Field &F, const Polynomial &v) { for (int i = (int)(v.size () - 1); i >= 0; i--) { F.write (out, v[(size_t)i]); if (i > 0) out << " X^" << i << " + "; } return out; } template std::ostream& prettyprintIntegerPolynomial (std::ostream& out, const Field &F, const Polynomial &v) { size_t n = v.size()-1; if (n == 0) { F.write(out, v[0]); } else { if(v[n] != 0) { if (v[n] != 1) F.write(out, v[n]) << '*'; out << 'X'; if (n > 1) out << '^' << n; for (int i = (int)n - 1; i > 0; i--) { if (v[(size_t)i] != 0) { if (v[(size_t)i] >0) out << " + "; if (v[(size_t)i] != 1) F.write (out, v[(size_t)i]) << '*'; out << 'X'; if (i > 1) out << '^' << i; } } if (v[0] != 0) { if (v[0] >0) out << " + "; F.write(out, v[0]); } } } return out; } template std::ostream& printFactorization (std::ostream& out, const Field &F, const Factors &f, const Exponents& exp) { typename Factors::const_iterator itf = f.begin(); typename Exponents::const_iterator ite = exp.begin(); for ( ; itf != f.end(); ++itf, ++ite) { prettyprintIntegerPolynomial(out << '(', F, *itf) << ')'; if (*ite > 1) out << '^' << *ite; out << endl; } return out; } typedef Givaro::ZRing IntDom; int main (int argc, char **argv) { commentator().setMaxDetailLevel (2); commentator().setMaxDepth (2); commentator().setReportStream (std::cerr); cout< 3) { cerr << "Usage: charpoly [

]" << endl; return -1; } ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file " << argv[1] << endl; return -1; } if (argc == 2) { IntDom ZZ; DenseMatrix A (ZZ); A.read (input); typedef Givaro::Poly1FactorDom IntPolRing; DenseVector c_A(ZZ); Timer tim; tim.clear();tim.start(); charpoly (c_A, A, Method::Blackbox()); tim.stop(); cout << "Characteristic Polynomial is "; printPolynomial (cout, ZZ, c_A) << endl; cout << tim << endl; cout << "Do you want a factorization (y/n) ? "; char tmp; cin >> tmp; if (tmp == 'y' || tmp == 'Y') { commentator().start("Integer Polynomial factorization by NTL", "NTLfac"); vector intFactors; vector exp; IntPolRing IPD(ZZ); tim.start(); IPD.factor (intFactors, exp, IntPolRing::Element(c_A.getRep().begin(),c_A.getRep().end())); tim.stop(); commentator().stop("done", NULL, "NTLfac"); printFactorization(cout << intFactors.size() << " integer polynomial factors:" << endl, ZZ, intFactors, exp) << endl; cout << tim << endl; } } if (argc == 3) { typedef Givaro::Modular Field; double q = atof(argv[2]); Field F(q); DenseMatrix B (F); B.read (input); cout << "B is " << B.rowdim() << " by " << B.coldim() << endl; // Givaro::Poly1Dom::Element c_B; DenseVector c_B(F); Timer tim; tim.clear();tim.start(); charpoly (c_B, B); tim.stop(); cout << "Characteristic Polynomial is "; printPolynomial (cout, F, c_B) << endl; cout << tim << endl; } return 0; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/checksolve.C000066400000000000000000000056111274717217100170750ustar00rootroot00000000000000/* * examples/checksolve.C * * Copyright (C) 2007 C. Pernet * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/checksolve.C * @example examples/checksolve.C \brief Solving of sparse matrix over Z or Zp. \ingroup examples */ #include #include #include #include #include #include using namespace LinBox; // using namespace std; int main (int argc, char **argv) { // commentator().setMaxDetailLevel (-1); // commentator().setMaxDepth (-1); // commentator().setReportStream (std::cerr); if (argc < 2 || argc > 4) { std::cerr << "Usage: checksolve

" << std::endl; return 0; } std::ifstream input (argv[1]); if (!input) { std::cerr << "Error opening matrix file " << argv[1] << std::endl; return -1; } std::ifstream invect(argv[2]); if (!input) { std::cerr << "Error opening vector file " << argv[2] << std::endl; return -1; } typedef Givaro::Modular Field; double q = atof(argv[3]); Field F(q); MatrixStream< Field > ms ( F, input ); DenseMatrix A (ms); // A.write(std::cout); std::cout << "A is " << A.rowdim() << " by " << A.coldim() << std::endl; DenseVector X(F, A.coldim()),B(F, A.rowdim()); for(DenseVector::iterator it=B.begin(); it != B.end(); ++it) invect >> *it; std::cout << "B is [ "< r(F, A.rowdim()); BlasMatrixDomain BMD(F); BMD.mul(r, static_cast& >(A), X); //A.apply (r,X); VectorDomain VD(F); if (VD.areEqual (r,B)) std::cout<<"CHECK"< [

]" << endl; return -1; } if (argc == 2 ) { // For a small integer matrix test, do "det data/mat2S". // It is a 2 by 2 matrix with determinant = -2. typedef Givaro::ZRing Integers; Integers ZZ; ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file " << argv[1] << endl; return -1; } DenseMatrix A(ZZ); A.read(input); cout << "Matrix is " << A.rowdim() << " by " << A.coldim() << endl; Integers::Element det_A; det (det_A, A); cout << "Determinant is "; ZZ.write(cout, det_A) << endl; } if (argc == 3) { typedef Givaro::Modular Field; double q = atof(argv[2]); Field F(q); ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file " << argv[1] << endl; return -1; } SparseMatrix B (F); B.read(input); cout << "Matrix is " << B.rowdim() << " by " << B.coldim() << endl; Field::Element det_B; det (det_B, B); cout << "Determinant is "; F.write(cout, det_B) << " mod " << q << endl; } return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/dot-product.C000066400000000000000000000057171274717217100172220ustar00rootroot00000000000000/* * examples/dot-product.C * * Copyright (C) 2002, 2010 Bradford Hovinen * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/dot-product.C * @example examples/dot-product.C * \brief Timings on dot products of random vectors. * \ingroup examples * * \author Bradford Hovinen * * Use of vectors meeting the LinBox dense and sparse vector archetypes * is illustrated and their dot-product times are benchmarked. * * Constructs random vectors and computes their dot product, giving the * required time. */ #include #include #include #include #include #include using namespace LinBox; typedef Givaro::Modular Field; /// no command line args int main (int argc, char **argv) { // Constants: we are working with an n x n matrix over GF(q) const int n = 10000000; const double p = .001; const int q = 32749; commentator().setMaxDepth (1); commentator().setReportStream (std::cout); Field F (q); Field::RandIter gen(F); RandomDenseStream::Dense> factory1 (F, gen, n); RandomSparseStream::SparseSeq> factory2 (F, gen, p, n); RandomSparseStream::SparsePar> factory3 (F, gen, p, n); Vector::Dense v1 (n), v2 (n); Vector::SparseSeq v3; Vector::SparsePar v4; factory1 >> v1 >> v2; factory2 >> v3; factory3 >> v4; VectorDomain VD (F); Field::Element res; commentator().start ("dense/dense dot product (1)"); for (int i = 0; i < 1; i++) VD.dot (res, v1, v2); commentator().stop ("done"); commentator().start ("dense/sparse sequence dot product (1000)"); for (int i = 0; i < 1000; i++) VD.dot (res, v1, v3); commentator().stop ("done"); commentator().start ("dense/sparse parallel dot product (1000)"); for (int i = 0; i < 1000; i++) VD.dot (res, v1, v4); commentator().stop ("done"); return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/doubledet.C000066400000000000000000000056411274717217100167210ustar00rootroot00000000000000 /* * examples/doubledet.C * * Copyright (C) 2008, 2010 C. Pernet * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file examples/doubledet.C * @example examples/doubledet.C * @ingroup examples * @brief computes doubleDet. */ #include #include #include #include #include #include #include using namespace LinBox; using namespace std; int main (int argc, char **argv) { // commentator().setMaxDetailLevel (-1); // commentator().setMaxDepth (-1); // commentator().setReportStream (std::cerr); Givaro::ZRing ZZ; ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file " << argv[1] << endl; return -1; } MatrixStream > ms (ZZ, input); DenseMatrix > A (ms); cout << "Matrix is " << A.rowdim() << " by " << A.coldim() << endl; if (A.rowdim() != A.coldim() + 1){ cerr<<"Wrong dimensions: A must be (n+1) x n"< 2) proof = true; //doubleDet (det1, det2, A, true); doubleDet (det1, det2, A, proof); tim.stop(); // Check solution size_t n = A.coldim(); DenseMatrix > B (ZZ, n, n); for (size_t i=0; is,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/echelon.C000066400000000000000000000046661274717217100163750ustar00rootroot00000000000000 /* * examples/echelon.C * * Copyright (C) 2007, 2010 C. Pernet * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/echelon.C * @example examples/echelon.C \brief Echelon form of matrix over Zp. \ingroup examples */ #include #include #include #include #include using namespace LinBox; using namespace std; int main (int argc, char **argv) { if (argc < 3 || argc > 3) { cerr << "Usage: echelon

" << endl; return -1; } ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file " << argv[1] << endl; return -1; } typedef Givaro::Modular Field; double q = atof(argv[2]); Field F(q); DenseMatrix A(F); A.read(input); DenseMatrix E(F,A.rowdim(),A.coldim()); cout << "A is " << A.rowdim() << " by " << A.coldim() << endl; cout << A << std::endl; EchelonFormDomain > EFD (F); EFD.rowReducedEchelon(E,A); #ifdef COMPARE_FFPACK DenseMatrix G(A); size_t * P = new size_t[G.coldim()]; size_t * Q = new size_t[G.rowdim()]; /* size_t r = (size_t)*/ FFPACK::ReducedRowEchelonForm (F, G.rowdim(), G.coldim(), G.getWritePointer(), G.coldim(), P, Q,false); if (G.coldim() <20) G.write(cerr<<"FFPACK::Echelon = "< #include #include // --------------------------------------------- //#include "linbox/field/unparametric.h" //#include "linbox/modular.h" #include "linbox/field/ntl.h" #include "linbox/field/archetype.h" using namespace LinBox; // --------------------------------------------- /* The template function "fct" reads two elements "a" and "b" of the * field "K" from the standard input and writes a/b on the standard output */ template int fct(const Field& K) { typedef typename Field::Element K_elt; K_elt a,b,r; K.init(a); K.init(b); K.init(r); K.read(std::cin,a); K.read(std::cin,b); K.div(r,a,b); K.write(std::cout,r) << "\n"; return 0; } // --------------------------------------------- /// no command line args int main() { /* The field objects "K_o" and "Q_o" are constructed as in previous examples */ // Givaro::ZRing Q_o; NTL_RR Q_o ; NTL::RR::SetPrecision(400); NTL::RR::SetOutputPrecision(50); // Givaro::ZRing K_o; NTL::zz_p::init(553); NTL_zz_p K_o ; /* These field objects "K_o" and "Q_o" of different types can be converted to * objects Q and K of a unique type "Field_archetype" for instance using * a constructor: */ FieldArchetype Q( & Q_o ); FieldArchetype K( & K_o ); /* The template function "fct" is called with two different fields but the * template is instantiated only once since it is called with a unique * template parameter "Field_archetype" */ fct(Q); fct(K); return 0; }; // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/fields/ex-fields.C000066400000000000000000000052711274717217100200770ustar00rootroot00000000000000/* * examples/fields/ex-fields.C * * Copyright (C) 2001, 2002, 2010 G. Villard * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/fields/ex-fields.C * \author Gilles Villard * \brief Using a template function with two distinct fields. */ // --------------------------------------------- #include "linbox/linbox-config.h" #include // --------------------------------------------- #include "linbox/field/modular.h" #include "linbox/field/ntl.h" using namespace LinBox; using namespace std; /** The template function "fct" reads two elements "a" and "b" of the * field "K" from the standard input and writes a/b on the standard output */ template void divide_ex(const Field& K) { /* "K" is a field domain (a C++ object) of type "Field" (here the template * parameter). The type of the elements of "K" is obtained through * "Field" by typename Field::Element */ typedef typename Field::Element K_elt; K_elt a,b,r; K.init(a); K.init(b); K.init(r); cout << "division example: enter two numbers: "; K.read(cin,a); K.read(cin,b); K.div(r,a,b); K.write( K.write(cout<< "the quotient in ") << " is ", r) << endl; } // --------------------------------------------- /// no command line args int main() { /* Using the parameterized domain capabilities, several domains * representing integers modulo may be used simultaneously. */ Givaro::Modular D(3), K(7); divide_ex(D); divide_ex(K); // NTL arbitrary precision real field // (Could be parameterized by the precision) // Givaro::ZRing K2; NTL_RR K2 ; NTL::RR::SetPrecision(500); NTL::RR::SetOutputPrecision(50); // NTL modulo p field //Givaro::ZRing K2; //NTL::zz_p::init(553); divide_ex(K2); return 0; }; // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/fields/modular-int.C000066400000000000000000000072701274717217100204530ustar00rootroot00000000000000 /* * examples/modular-int.C * * Copyright (C) 2005, 2010 D. Saunders, Z. Wang * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/fields/modular-int.C \brief Example of arithmetic in the Givaro::Modular finite field. */ //by Zhendong wan wan@udel.edu #include /* the header file for modular*/ #include "linbox/field/modular-int.h" int main (int argc, char **argv) { /* construct the Z/101Z field */ Givaro::Modular F(101); /* declare local variable a, b, c, x, y*/ Givaro::Modular::Element a, b, c, x, y; // initializtion F.init(a, 92); F.init(b, 50); F.init(c, 56); F.init(x, 33); F.init(y, 45); /* +, -, *, / arithmetic operation */ //compute c <- a + b mod 101; F.add(c,a,b); //output value of a F.write(std::cout,a); std::cout << " + "; //output value of b F.write(std::cout,b); std::cout << " = "; //output value of c F.write(std::cout,c); std::cout << " mod 101" << "\n"; //compute c <- a - b mod 101; F.sub(c,a,b); //output value of a F.write(std::cout,a); std::cout << " - "; //output value of b F.write(std::cout,b); std::cout << " = "; //output value of c F.write(std::cout,c); std::cout << " mod 101" << "\n"; //compute c <- a * b mod 101; F.mul(c,a,b); //output value of a F.write(std::cout,a); std::cout << " * "; //output value of b F.write(std::cout,b); std::cout << " = "; //output value of c F.write(std::cout,c); std::cout << " mod 101" << "\n"; //compute c <- a / b mod 101; F.div(c,a,b); //output value of a F.write(std::cout,a); std::cout << " / "; //output value of b F.write(std::cout,b); std::cout << " = "; //output value of c F.write(std::cout,c); std::cout << " mod 101" << "\n"; //compute c = 1 /a mod 101; F.inv(c,a); std::cout << "1 / " << a << " = "; //output value of c F.write(std::cout,c); std::cout << " mod 101" << "\n"; /* Inplace operation */ //compute a *= b; F.mulin(a,b); //compute a /= b; F.divin(a,b); //compute a <- 1 / a/; F.invin(a); /* a * x + y operation */ //compute c <- a * x + y; F.axpy(c,a,x,y); //compute c += a * x; F.axpyin(c,a,x); /* compare operation */ // test if a == 1 mod 101; //output value of a F.write(std::cout,a); std::cout << " == 1 mod 101 " << (F.isOne(a) ? "true" : "false") << "\n"; //test if a == 0 mod 101; //output value of a F.write(std::cout,a); std::cout << " == 0 mod 101 " << (F.isZero(a) ? "true" : "false") << "\n" ; // test if a == b mod 101; //output value of a F.write(std::cout,a); std::cout << " == "; //output value of b F.write(std::cout,b); std::cout << " mod 101 " << (F.areEqual(a,b) ? "true" : "false") << "\n"; //For performance, we recommend to use all possible operation, for example, using axpy, instead of mul, then addin. return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/find-invariant-factors.C000066400000000000000000000036561274717217100213260ustar00rootroot00000000000000#include "linbox/linbox-config.h" #include #include //#include //#define LINBOX_USES_OMP 1 #include "linbox/ring/modular.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/algorithms/coppersmith-invariant-factors.h" // Computes the invariant factors of a sparse matrix (given in Matrix Market Format) // Effectively times: TPL_omp, BlockCoppersmithDomain and KannanBachem using namespace LinBox; typedef Givaro::Modular Field; typedef typename Field::Element Element; typedef SparseMatrix SparseMat; //typedef SparseMatrix SparseMat; typedef CoppersmithInvariantFactors FactorDomain; typedef typename FactorDomain::PolyDom PolyDom; typedef typename FactorDomain::PolyRing PolyRing; typedef DenseVector FactorVector; int main(int argc, char** argv) { int earlyTerm = 10; int p = 97, b = 3; std::string mFname,oFname; static Argument args[] = { { 'p', "-p P", "Set the field GF(p)", TYPE_INT, &p}, { 't', "-t T", "Early term threshold", TYPE_INT, &earlyTerm}, { 'b', "-b B", "Blocking factor", TYPE_INT, &b}, { 'm', "-m M", "Name of file for matrix M", TYPE_STR, &mFname}, { 'o', "-o O", "Name of file for output", TYPE_STR, &oFname}, END_OF_ARGUMENTS }; parseArguments(argc,argv,args); Field F(p); SparseMat M(F); { std::ifstream iF(mFname); M.read(iF); M.finalize(); iF.close(); } std::cout << "Finished reading" << std::endl; PolyDom PD(F,"x"); PolyRing R(PD); FactorVector factorList(R); FactorDomain CIF(F,M,b); size_t numFactors=CIF.computeFactors(factorList,earlyTerm); std::cout << "Finished computing factors" << std::endl; { std::ofstream out(oFname); for (size_t i=0;i #include #include #define LINBOX_USES_OMP 1 #include "linbox/blackbox/pascal.h" #include "linbox/ring/modular.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/matrix/sliced3.h" #include "linbox/algorithms/coppersmith-invariant-factors.h" using namespace LinBox; template std::istream& readVector(std::istream& is, const Field& F, std::vector& out) { char c; is >> std::ws; is >> c; linbox_check(c=='['); is >> std::ws; out.clear(); c=is.peek(); while (is.good() && (c != ']')) { typename Field::Element d; F.read(is,d); out.push_back(d); is >> std::ws; c=is.peek(); } return is; } typedef SlicedField,uint64_t> Field; typedef typename Field::Element Element; typedef PascalBlackbox SparseMat; typedef CoppersmithInvariantFactors > FactorDomain; typedef typename FactorDomain::PolyDom PolyDom; typedef typename FactorDomain::PolyRing PolyRing; typedef DenseVector FactorVector; int main(int argc, char** argv) { int earlyTerm; int b; std::string mFname,oFname; static Argument args[] = { { 't', "-t T", "Early term threshold", TYPE_INT, &earlyTerm}, { 'b', "-b B", "Blocking factor", TYPE_INT, &b}, { 'm', "-m M", "Name of file for coefficients", TYPE_STR, &mFname}, { 'o', "-o O", "Name of file for output", TYPE_STR, &oFname}, END_OF_ARGUMENTS }; parseArguments(argc,argv,args); Field F(3); std::vector coeffs; { std::ifstream iF(mFname); readVector(iF,F,coeffs); iF.close(); } int n=coeffs.size(); coeffs.resize(2*n); SparseMat M(n,n,coeffs,F); #if 0 { MatrixDomain MD; typename MatrixDomain::OwnMatrix I(F,n,n),O(F,n,n); for (int i=0;i #include #include #include #include #include #include using namespace std; using namespace LinBox; template void printPolynomial(const Field& F, const Polynomial& P) { int n= (int) P.size()-1; for (int i=0;i0)?"+":""),P[0]); } else{ cout<<"X^"<1; --i) if (!F.isZero(P[(size_t)i])) F.write(cout<<((P[(size_t)i]>0)?"+":""),P[(size_t)i])<<"*X^"<0)?"+":""),P[1])<<"*X"; if ( P[0] != 0) F.write(cout<<((P[0]>0)?"+":""),P[0]); } } typedef ZeroOne > Matrix; typedef GivPolynomialRing, Givaro::Dense> IntPolRing; int main (int argc, char **argv) { commentator().getMessageClass (BRIEF_REPORT).setMaxDepth (2); commentator().getMessageClass (BRIEF_REPORT).setMaxDetailLevel (Commentator::LEVEL_UNIMPORTANT); if (argc != 2) { cerr << "Usage: graph-charpoly " < ZZ; Givaro::ZRing ZZ; Matrix A(ZZ); A.read (input); commentator().report(1, BRIEF_REPORT)<< "A is " << A.rowdim() << " by " << A.coldim() << endl; IntPolRing::Element c_A; charpoly (c_A, A, Method::Blackbox(Method::Wiedemann( Specifier::SYMMETRIC))); cout<< "Characteristic Polynomial is "; printPolynomial (ZZ, c_A); return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/grid_reduce.C000066400000000000000000000264501274717217100172270ustar00rootroot00000000000000 /* * examples/grid_reduce.C * * Copyright (C) 2008, 2010 A. Urbanska ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file examples/grid_reduce.C * @example examples/grid_reduce.C * @ingroup examples * @brief undocumented */ #include #include #include #include #include #include #include using namespace LinBox; int main(int argc, char* argv[]) { srand(time(NULL)); if (argc < 5) { std::cout << "usage: " << argv[0] << " alg m n S source format " << std::endl << std::endl; std::cout << "alg = `adaptive', `ilio', `local', or `2local', " << std::endl << "m is modulus (ignored by 2local, adaptive), " << "n is matrix order, " << std::endl << "S is reduced rows size" << std::endl << "source is `random', `random-rough', `fib', `tref', or a filename " << std::endl << "format is `dense' or `sparse' (if matrix from a file)" << std::endl << "compile with -DBIG if you want big integers used." << std::endl; return 0; } std::string algo = argv[1]; // int m = atoi(argv[2]); // int n = atoi(argv[3]); int S = atoi(argv[4]); std::string src = argv[5]; // std::string file = src; // std::string format = (argc >= 6 ? argv[5] : ""); UserTimer T, TT; std::string out(src); out=out+"z"; if (algo == "reduceT") out=out+"T"; typedef Givaro::ZRing Ints; //typedef Givaro::ModularBalanced Ints; //typedef Givaro::Modular Ints; //Ints Z(m); Ints Z; integer p; std::cout << "Computation modulo " << Z.characteristic(p) << "" << std::endl< mC; std::vector mR; #if 0 ifstream mRow ("mR2", ios::in); char c='['; mRow >> c; std::cout << c; while (c!='[') { mRow >> c; std::cout << c; } int mark; while( mRow >> mark) { mC.push_back(mark); } mRow.close(); mRow.open("mC2", ios::in) ; c='['; mRow >> c; std::cout << c; while (c!='[') { mRow >> c; std::cout << c; } for (int i=0; i< mC.size(); ++i) { mRow >> mark; if(mark==1) mC[i] = mark; } #endif std::cout << src << "" << std::endl<< std::flush ; TT.clear(); TT.start(); Grid A(Z,in, mR, mC); TT.stop(); std::cout << "Reading the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; int rank =0; TT.clear(); TT.start(); A.reduce(rank, S, mR, mC, os); TT.stop(); std::cout << "Reducing the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; std::cout << "The rank is " << rank << "" << std::endl << std::flush; A.write(os); //std::cout << "mR: \n["; //for (int i=0; i < mR.size() ; ++i) { // std::cout << mR[i] << " "; //} os << "mC: \n["; for (int i=0; i < mC.size() ; ++i) { os << mC[i] << " "; } os << "]" << std::endl; os << "mR: \n["; for (int i=0; i < mR.size() ; ++i) { os<< mR[i] << " "; } os <> c; std::cout << c; while (c!='[') { in >> c; std::cout << c; } TT.stop(); std::cout << "Time vector exchange in"; TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; TT.clear(); TT.start(); std::cout << "reading additional columns" << std::endl << std::flush; for (int i=0; i < mR.size(); ++i) { int mark; in >> mark; if (mR[i]!=1) mR[i] = mark; //if (mark>0) std::cout << mark << " "; } std::cout << "columns read in "; TT.stop(); TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; std::cout << "Time file preparation in"; TT.clear(); TT.start(); in.close(); src = argv[5+matrix]; std::cout << src << "" << std::endl << std::flush; std::string out3(src); out3= out3+"z"; if (algo == "reduceT") out3=out3+"T"; //++matrix; in.open(src.c_str(), std::ios::in); os.close(); os.open(out3.c_str(), std::ios::out); TT.stop(); TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; TT.clear(); TT.start(); A.read(Z,in, mC, mR); //Grid A2(Z,in, mR, mC); TT.stop(); std::cout << "Reading the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; rank =0; TT.clear(); TT.start(); if (matrix==1) A.reduce(rank, 1000000*S, mC, mR, os); //22(1,9) if (matrix==9) A.reduce(rank, 1000000*S, mC, mR, os); //22(1,9) if (matrix==7) A.reduce(rank, 4.7*S, mC, mR, os); //20(3,7)change1.6 if (matrix==5) A.reduce(rank, 1000000*S, mC, mR, os); //18(5,5)change3 //if (matrix==1) A.reduce(rank, S,mC,mR,os); else A.reduce(rank, S, mC, mR, os); TT.stop(); std::cout << "Reducing the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; std::cout << "The rank is " << rank << "" << std::endl << std::flush; TT.clear(); TT.start(); A.write(os); TT.stop(); std::cout << "Writing the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; TT.clear(); TT.start(); os << "mC:\n["; for (int i=0; i < mR.size() ; ++i) { os << mR[i] << " "; } os << "" << std::endl; os << "mR: \n["; for (int i=0; i < mC.size() ; ++i) { os<< mC[i] << " "; } os <> c; std::cout << c; while (c!='[') { in >> c; std::cout << c; } TT.stop(); std::cout << "Time vector exchange in"; TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; TT.clear(); TT.start(); std::cout << "reading additional columns" << std::endl << std::flush; for (int i=0; i < mC.size(); ++i) { int mark; in >> mark; if (mC[i]!=1) mC[i] = mark; //if (mark>0) std::cout << mark << " "; } std::cout << "columns read in "; TT.stop(); TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; std::cout << "Time file preparation in"; TT.clear(); TT.start(); in.close(); src = argv[6+matrix]; std::cout << src << "" << std::endl << std::flush; std::string out4(src); out4= out4+"z"; if (algo == "reduceT") out4=out4+"T"; matrix+=2; in.open(src.c_str(), std::ios::in); os.close(); os.open(out4.c_str(), std::ios::out); TT.stop(); TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; TT.clear(); TT.start(); A.read(Z,in, mR, mC); //Grid A2(Z,in, mR, mC); TT.stop(); std::cout << "Reading the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; int rank =0; TT.clear(); TT.start(); if (matrix==3) A.reduce(rank, 6.8*S, mR, mC, os); //21(3,9) if (matrix==9) A.reduce(rank, 6.8*S, mR, mC, os); //21(3,9) if (matrix==7) A.reduce(rank, 4.6*S, mR, mC, os); //19(5,7)nochange1.6 A.reduce(rank, S, mR, mC, os); TT.stop(); std::cout << "Reducing the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; std::cout << "The rank is " << rank << "" << std::endl << std::flush; TT.clear(); TT.start(); A.write(os); TT.stop(); std::cout << "Writing the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; TT.clear(); TT.start(); os << "mC:\n["; for (int i=0; i < mC.size() ; ++i) { os << mC[i] << " "; } os << "" << std::endl; os << "mR: \n["; for (int i=0; i < mR.size() ; ++i) { os<< mR[i] << " "; } os <> c; std::cout << c; while (c!='[') { in >> c; std::cout << c; } TT.stop(); std::cout << "Time vector exchange in"; TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; TT.clear(); TT.start(); std::cout << "reading additional columns" << std::endl << std::flush; for (int i=0; i < mR.size(); ++i) { int mark; in >> mark; if (mR[i]!=1) mR[i] = mark; //if (mark>0) std::cout << mark << " "; } std::cout << "columns read in "; TT.stop(); TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; std::cout << "Time file preparation in"; TT.clear(); TT.start(); in.close(); src = argv[5+matrix]; std::cout << src << "" << std::endl << std::flush; std::string out2(src); out2= out2+"z"; if (algo == "reduceT") out2=out2+"T"; //++matrix; in.open(src.c_str(), std::ios::in); os.close(); os.open(out2.c_str(), std::ios::out); TT.stop(); TT.print(std::cout); std::cout << "seconds" << std::endl << std::flush; TT.clear(); TT.start(); A.read(Z,in, mC, mR); //Grid A2(Z,in, mR, mC); TT.stop(); std::cout << "Reading the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; int rank =0; TT.clear(); TT.start(); A.reduce(rank, S, mC, mR, os); TT.stop(); std::cout << "Reducing the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; std::cout << "The rank is " << rank << "" << std::endl << std::flush; TT.clear(); TT.start(); A.write(os); TT.stop(); std::cout << "Writing the matrix in "; TT.print(std::cout); std::cout << " seconds" << std::endl << std::flush; TT.clear(); TT.start(); os << "mC:\n["; for (int i=0; i < mR.size() ; ++i) { os << mR[i] << " "; } os << "" << std::endl; os << "mC: \n["; for (int i=0; i < mC.size() ; ++i) { os<< mC[i] << " "; } os <s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/iliopoulos2.C000066400000000000000000000060471274717217100172330ustar00rootroot00000000000000/* linbox/algorithms/coppersmith-invariant-factors.h * Copyright (C) 2015 Gavin Harrison * * Written by Gavin Harrison * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include "linbox/linbox-config.h" #include #include #include "linbox/ring/modular.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/matrix/random-matrix.h" #include "linbox/algorithms/smith-form-iliopoulos2.h" #include using namespace LinBox; using namespace Givaro; typedef ZRing Field; typedef typename ZRing::Element Element; typedef IliopoulosDomain IliopoulosDom; typedef MatrixDomain Domain; typedef typename Domain::OwnMatrix Matrix; typedef typename Field::RandIter RandIter; typedef RandomDenseMatrix RandomMatrix; Field Z; Domain MD(Z); RandIter RI(Z); RandomMatrix RDM(Z, RI); IliopoulosDom ID(Z); void printMatrix(Matrix &A) { size_t m = A.rowdim(); size_t n = A.coldim(); std::cout << "matrix(ZZ, " << m << "," << n << ", [" << std::endl; for (size_t i = 0; i < m; i++) { Element tmp; Z.write(std::cout << "[", A.getEntry(tmp, i, 0)); for (size_t j = 1; j < n; j++) { Z.write(std::cout << ", ", A.getEntry(tmp, i, j)); } std::cout << "]," << std::endl; } std::cout << "])" << std::endl; } void randomL(Matrix &L) { size_t n = L.rowdim(); RDM.random(L); for (size_t i = 0; i < n; i++) { L.setEntry(i, i, Z.one); for (size_t j = i+1; j < n; j++) { L.setEntry(i, j, Z.zero); } } } void randomU(Matrix &U) { size_t n = U.rowdim(); RDM.random(U); for (size_t i = 0; i < n; i++) { U.setEntry(i, i, Z.one); for (size_t j = 0; j < i; j++) { U.setEntry(i, j, Z.zero); } } } int main(int argc, char** argv) { Matrix A(Z, 4, 4); //RDM.random(A); A.setEntry(0,0,Integer(2)); A.setEntry(1,1,Integer(6)); A.setEntry(2,2,Integer(12)); printMatrix(A); Matrix L1(Z, 4, 4); randomL(L1); Matrix U1(Z, 4, 4); randomU(U1); Matrix L2(Z, 4, 4); randomL(L2); Matrix U2(Z, 4, 4); randomU(U2); Matrix B(Z, 4, 4); MD.mul(B, U1, A); MD.leftMulin(B, L1); MD.rightMulin(B, U2); MD.rightMulin(B, L2); printMatrix(B); ID.smithFormIn(B, Integer(2 * 6 * 12)); printMatrix(B); return 0; } linbox-1.4.2/examples/integer-mul.C000066400000000000000000000035771274717217100172100ustar00rootroot00000000000000/* * examples/integer-mul.C * * Copyright (C) 2002, 2005, 2010 G Villard, D. Saunders * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/integer-mul.C * @example examples/integer-mul.C * \author Gilles Villard * \brief The LinBox arbitrary precision integer type illustrated. * \ingroup examples * * The class `integer' is a wrapper of GMP integers. */ // --------------------------------------------- #include #include // --------------------------------------------- #include // Use of Gmp based LinBox integers #include using namespace LinBox; using namespace std; // --------------------------------------------- /// no command line args. Prompts for two integers. int main() { integer a,b; cout << "1st integer > "; cin >> a; cout << "2nd integer > "; cin >> b; cout << "The product " << a*b << "\n"; return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/invariant-factors.C000066400000000000000000000076541274717217100204120ustar00rootroot00000000000000/* linbox/algorithms/coppersmith-invariant-factors.h * Copyright (C) 2015 Gavin Harrison * * Written by Gavin Harrison * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include "linbox/linbox-config.h" #include #include #include "linbox/ring/modular.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/blackbox/transpose.h" #include "linbox/blackbox/compose.h" #include "linbox/algorithms/invariant-factors.h" using namespace LinBox; typedef Givaro::Modular Field; typedef typename Field::Element Element; typedef SparseMatrix SparseMat; typedef InvariantFactors FactorDomain; typedef typename FactorDomain::PolyDom PolyDom; typedef typename FactorDomain::PolyRing PolyRing; typedef DenseVector FactorVector; int main(int argc, char** argv) { int earlyTerm; int p = 99991, b = 30, r = 3, t = 5; std::string mFname = "jumat",oFname=""; static Argument args[] = { { 'p', "-p P", "Set the field GF(p)", TYPE_INT, &p}, { 'e', "-e E", "Early term threshold", TYPE_INT, &earlyTerm}, { 'b', "-b B", "Blocking factor", TYPE_INT, &b}, { 't', "-t T", "First blocking factor", TYPE_INT, &t}, { 'r', "-r R", "R-th factor used as mod for iliopoulos", TYPE_INT, &r}, { 'm', "-m M", "Name of file for matrix M", TYPE_STR, &mFname}, { 'o', "-o O", "Name of file for output", TYPE_STR, &oFname}, END_OF_ARGUMENTS }; parseArguments(argc,argv,args); Field F(p); SparseMat M(F); { std::ifstream iF(mFname); M.read(iF); M.finalize(); iF.close(); } std::cout << "Finished reading, dimension " << M.rowdim() << "x" << M.coldim() << ", nnz " << M.size() << std::endl; PolyDom PD(F,"x"); PolyRing R(PD); FactorVector List1(R), List2(R), factorList(R); FactorDomain CIF(F, R); #if 1 CIF.solve(factorList, M, b, t, r, earlyTerm); #else // from solve in invariant-factors.h // Compute first b1 factors CIF.computeFactors(List1, M, t, earlyTerm); std::cout << "Finished computing early factors" << std::endl; { for (int i = List1.size()-1; i >= 0; i--) { std::cout << PD.degree(List1[i]) << ", "; } std::cout << std::endl; } // get r-th factor PolyRing::Element d; R.assign(d, List1[t - r]); // Compute factors mod r-th factor CIF.computeFactors(List2, M, d, b, earlyTerm); // Fill in zeros before r-th factor with r-th factor for (int i = 0; i < b - r; i++) { if (R.isZero(List2[i])) R.assign(List2[i], d); } // Fill in remaining factors with original values factorList.resize(b); for (int i = 0; i < r; i++) factorList[i] = List1[t-1-i]; for (int i = r; i < b; i++) factorList[i] = List2[b-1-i]; #endif std::cout << "Finished computing factors" << std::endl; for (size_t i = 0; i 0) { std::ofstream out(oFname); for (size_t i = 0; i file mpiexec C ./mpidet file rm file bigmat run: minpoly file mpirun -np 1 ./minpoly file clean: rm mpidet minpoly test-det test-bitonic-sort test-rank a.out *.o linbox-1.4.2/examples/map-sparse-test.C000066400000000000000000000024131274717217100177710ustar00rootroot00000000000000#include "examples/map-sparse.h" #include //bb: is this supposed to be installed ? using namespace LinBox; // why this test here ? int main(int argc, char* argv[]) { typedef Givaro::Modular Field; typedef Field::Element Element; int q=65537; int n=10; static Argument args[] = { { 'n', "-n N", "Set dimension of test matrices to NxN.", TYPE_INT, &n }, { 'q', "-q Q", "Operate over the \"field\" GF(Q) [1].", TYPE_INTEGER, &q }, //{ 's', "-s S", "Sparse matrices with density S.", TYPE_DOUBLE, &sparsity }, END_OF_ARGUMENTS }; parseArguments (argc, argv, args); srand ((unsigned)time (NULL)); Field F (q); MapSparse ms(F,n,n); Element d; for (int i=0;i * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file examples/map-sparse.h * @ingroup examples * @brief */ #ifndef __LINBOX_MAP_SPARSE_H #define __LINBOX_MAP_SPARSE_H #include #include #include #include #include #include #include #include #include namespace LinBox { template class MapSparseIF { public: typedef Field_ Field; typedef typename Field::Element Element; typedef size_t Index; virtual ~MapSparseIF() {}; virtual void setEntry(Index i, Index j, const Element& e) =0; virtual const Element& getEntry(Index i, Index j) const =0; protected: typedef std::map VectorType; typedef typename VectorType::iterator VectorIt; typedef typename VectorType::const_iterator VectorConstIt; typedef std::map MapType; typedef typename MapType::iterator MapIt; typedef typename MapType::const_iterator MapConstIt; }; template class MapSparse : public MapSparseIF { public: typedef Field_ Field; typedef typename Field::Element Element; typedef size_t Index; typedef std::map VectorType; typedef typename VectorType::iterator VectorIt; typedef typename VectorType::const_iterator VectorConstIt; typedef std::map MapType; typedef typename MapType::iterator MapIt; typedef typename MapType::const_iterator MapConstIt; MapSparse(); MapSparse(const Field& F, Index r, Index c); MapSparse(const MapSparse& M); void init(const Field& F, Index r, Index c); void shape(Index r, Index c); MapSparse& operator=(const MapSparse& M); ~MapSparse(); Index rowdim() const; Index coldim() const; const Field& field() const; void setEntry(Index i, Index j, const Element& e); const Element& getEntry(Index i, Index j) const; bool verify(); //forall r: A_{i,r}<-A_{i,r}+k*A_{j,r} void addRow(const Element& k, Index i, Index j); //forall r: A_{r,i}<-A_{r,i}+k*A_{r,j} void addCol(const Element& k, Index i, Index j); //forall r: A_{i,r}<-k*A_{i,r} void timesRow(const Element& k, Index i); //forall r: A_{r,j}<-k*A_{r,j} void timesCol(const Element& k, Index j); void swapRows(Index i, Index j); void swapCols(Index i, Index j); void scaleMat(const Element& k); void transpose(); Index nnz() const; // A -> A' = SAS^{-1}, and A' has about nnz nonzero entries. void randomSim(Index nnz, int seed = 0); // A -> A' = UAV, with U and V nonsingular, and A' has about nnz nonzero entries. void randomEquiv(Index nnz, int seed = 0); bool areEqual(MapSparse rhs) const; std::istream& read(std::istream& in); std::ostream& print(std::ostream& out) const; std::ostream& write(std::ostream& out) const; template void copy(Matrix& mat) const; template void copyFrom(Matrix& mat); template void toVector(Vector& vec) const; template void fromVector(const Vector& vec, Index r, Index c); static void generateCompanion(MapSparse& mat,std::vector& coeffs); static void generateDenseRandMat(MapSparse& mat, int q); static void generateRandMat(MapSparse& mat, int nnz, int q); static void generateScaledIdent(MapSparse& mat, int alpha); static void generateSparseNonSingular(MapSparse& mat, int approxNNZ, int seed=0); protected: static int randRange(int start, int end); MatrixDomain MD_; MapType rowMap_; MapType colMap_; Index numCols_; Index numRows_; Index nnz_; Element zero_; }; } #include #endif // __LINBOX_MAP_SPARSE_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/map-sparse.inl000066400000000000000000000352071274717217100174230ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by AJS * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file examples/map-sparse.inl * @ingroup examples * @brief */ #ifndef __LINBOX_MAP_SPARSE_INL #define __LINBOX_MAP_SPARSE_INL #include #include #include #include #include #include namespace LinBox { template MapSparse::MapSparse() : MD_(Field_()),numCols_(0), numRows_(0), nnz_(0) {} template MapSparse::MapSparse(const Field& F, Index r, Index c): MD_(F), numCols_(c), numRows_(r), nnz_(0) {F.assign(zero_,F.zero);} template void MapSparse::init(const Field& F, Index r, Index c) { MD_=F; F.assign(zero_,F.zero); shape(r,c); } template void MapSparse::shape(Index r, Index c) { rowMap_.clear(); colMap_.clear(); numRows_=r; numCols_=c; nnz_=0; } template template void MapSparse::fromVector(const Vector& vec, Index r, Index c) { shape(r,c); if (numCols_==1) { for (Index i=0;i MapSparse::MapSparse(const MapSparse& M): MD_(M.field()), rowMap_(M.rowMap_), colMap_(M.colMap_), numCols_(M.numCols_), numRows_(M.numRows_), nnz_(M.nnz_), zero_(M.zero_) {} template MapSparse& MapSparse::operator=(const MapSparse& rhs) { if (rhs==this) return; MD_.init(rhs.MD_); numCols_=rhs.numCols_; numRows_=rhs.numRows_; rowMap_=rhs.rowMap_; colMap_=rhs.colMap_; nnz_=rhs.nnz_; zero_=rhs.zero_; return *this; } template MapSparse::~MapSparse() {} template const Field_& MapSparse::field() const { return MD_.field(); } template bool MapSparse::verify() { for (int i=0;isecond).find(j); if (entry != (row->second.end())) { d=entry->second; } } Element e=zero_; MapConstIt col=colMap_.find(j); if (col != colMap_.end()) { VectorConstIt entry=(col->second).find(i); if (entry != (col->second.end())) { e=entry->second; } } if (d!=e) { return false; } } } return true; } template void MapSparse::setEntry(Index i, Index j, const Element& e) { VectorIt it=rowMap_[i].find(j); if (it != rowMap_[i].end()) { --nnz_; rowMap_[i].erase(it); VectorIt colIt=colMap_[j].find(i); colMap_[j].erase(colIt); } if (!field().isZero(e)) { ++nnz_; rowMap_[i][j]=e; colMap_[j][i]=e; } } template const typename MapSparse::Element& MapSparse::getEntry(Index i, Index j) const { MapConstIt row=rowMap_.find(i); if (row != rowMap_.end()) { VectorConstIt entry=(row->second).find(j); if (entry != (row->second.end())) { return (entry->second); } } return zero_; } //forall r: A_{i,r}<-A_{i,r}+k*A_{j,r} template void MapSparse::addRow(const Element& k, Index i, Index j) { MapIt rowJ=rowMap_.find(j); if (rowJ != rowMap_.end()) { for (VectorIt it=rowJ->second.begin();it!=rowJ->second.end();++it) { Index col=it->first; Element d=getEntry(i,col); field().axpyin(d,k,it->second); setEntry(i,col,d); } } } //forall r: A_{r,i}<-A_{r,i}+k*A_{r,j} template void MapSparse::addCol(const Element& k, Index i, Index j) { MapIt colJ=colMap_.find(j); if (colJ != colMap_.end()) { for (VectorIt it=colJ->second.begin();it!=colJ->second.end();++it) { Index row=it->first; Element d = getEntry(row,i); field().axpyin(d,k,it->second); setEntry(row,i,d); } } } //forall r: A_{i,r}<-k*A_{i,r} template void MapSparse::timesRow(const Element& k, Index i) { linbox_check(!(field().isZero(k))); MapIt row=rowMap_.find(i); if (row != rowMap_.end()) { for (VectorIt it=row->second.begin();it!=row->second.end();++it) { Index col=it->first; field().mulin(rowMap_[i][col],k); field().mulin(colMap_[col][i],k); } } } //forall r: A_{r,j}<-k*A_{r,j} template void MapSparse::timesCol(const Element& k, Index j) { linbox_check(!(field().isZero(k))); MapIt col=colMap_.find(j); if (col != colMap_.end()) { for (VectorIt it=col->second.begin();it!=col->second.end();++it) { Index row=it->first; field().mulin(rowMap_[row][j],k); field().mulin(colMap_[j][row],k); } } } template void MapSparse::swapRows(Index i, Index j) { VectorType oldRowI=rowMap_[i]; VectorType oldRowJ=rowMap_[j]; rowMap_[i].clear(); rowMap_[j].clear(); for (VectorIt it=oldRowI.begin();it!=oldRowI.end();++it) { Index col=it->first; colMap_[col].erase(colMap_[col].find(i)); } for (VectorIt it=oldRowJ.begin();it!=oldRowJ.end();++it) { Index col=it->first; colMap_[col].erase(colMap_[col].find(j)); } for (VectorIt it=oldRowI.begin();it!=oldRowI.end();++it) { Index col=it->first; rowMap_[j][col]=oldRowI[col]; colMap_[col][j]=oldRowI[col]; } for (VectorIt it=oldRowJ.begin();it!=oldRowJ.end();++it) { Index col=it->first; rowMap_[i][col]=oldRowJ[col]; colMap_[col][i]=oldRowJ[col]; } } template void MapSparse::swapCols(Index i, Index j) { VectorType oldColI=colMap_[i]; VectorType oldColJ=colMap_[j]; colMap_[i].clear(); colMap_[j].clear(); for (VectorIt it=oldColI.begin();it!=oldColI.end();++it) { Index row=it->first; rowMap_[row].erase(rowMap_[row].find(i)); } for (VectorIt it=oldColJ.begin();it!=oldColJ.end();++it) { Index row=it->first; rowMap_[row].erase(rowMap_[row].find(j)); } for (VectorIt it=oldColI.begin();it!=oldColI.end();++it) { Index row=it->first; colMap_[j][row]=oldColI[row]; rowMap_[row][j]=oldColI[row]; } for (VectorIt it=oldColJ.begin();it!=oldColJ.end();++it) { Index row=it->first; colMap_[i][row]=oldColJ[row]; rowMap_[row][i]=oldColJ[row]; } } template typename MapSparse::Index MapSparse::nnz() const { return nnz_; } // A -> A' = SAS^{-1}, and A' has about nnz nonzero entries. template void MapSparse::randomSim(Index nz, int seed) { typename Field::Element a; Index i,j; MersenneTwister ri; typename Field::RandIter r(field(),0, seed); //if (seed != 0) { ri.setSeed(seed); r.setSeed(seed); } if (seed != 0) { ri.setSeed(seed); // ridiculous constructor only seeding! typename Field::RandIter s(field(), 0, seed); r = s; } while (nnz() < nz) { field().nonzerorandom(r,a); i = ri.randomIntRange(0, rowdim()); j = ri.randomIntRange(0, coldim()); addCol(a, i, j); //std::cout << nnz() << std::endl; field().negin(a); addRow(a, i, j); } } // A -> A' = UAV, with U and V nonsingular, and A' has about nnz nonzero entries. template void MapSparse::randomEquiv(Index nz, int seed) { typename Field::Element a; Index i,j; MersenneTwister ri; typename Field::RandIter r(field(),0,seed); if (seed != 0) { ri.setSeed(seed); // ridiculous seeding! typename Field::RandIter s(field(), 0, seed); r = s; } bool flip = true; int count=0; while (nnz() < nz) { r.nonzerorandom(a); i = ri.randomIntRange(0, rowdim()); j = ri.randomIntRange(0, coldim()); if (i!=j){ if (flip) addCol(a, i, j); else addRow(a, i, j); flip = not flip; } ++count; } } template std::ostream& MapSparse::print(std::ostream& out) const { for (Index i=0;i std::ostream& MapSparse::write(std::ostream& out) const { out << "%%MatrixMarket matrix coordinate integer general" << std::endl; out << "% written from a LinBox MapSparse" << std::endl; out << numRows_ << " " << numCols_ << " " << nnz_ << std::endl; //for (Index i = 0; i < numRows_; ++i) for (MapConstIt p = rowMap_.begin(); p != rowMap_.end(); ++p) for (VectorConstIt rp = p->second.begin(); rp != p->second.end(); ++rp) field().write(out << 1+p->first << " " << 1+rp->first << " ", rp->second) << std::endl; out << std::endl; return out; } template std::istream& MapSparse::read(std::istream& in) { Index r,c; Element d; field().init(d); MatrixStream ms(field(),in); ms.getDimensions(r,c); shape(r,c); while (ms.nextTriple(r,c,d)) setEntry(r,c,d); return in; } template typename MapSparse::Index MapSparse::rowdim() const { return numRows_; } template typename MapSparse::Index MapSparse::coldim() const { return numCols_; } template void MapSparse::transpose() { rowMap_.swap(colMap_); int temp=numCols_;numCols_=numRows_;numRows_=temp; } template template void MapSparse::copy(Matrix& mat) const { std::stringstream ss; write(ss); mat.read(ss); mat.finalize(); } template template void MapSparse::copyFrom(Matrix& mat) { std::stringstream ss; mat.write(ss); read(ss); } template template void MapSparse::toVector(Vector& vec) const { if (numCols_ == 1) { for (Index i=0;i void MapSparse::scaleMat(const Element& k) { for (size_t i=0;i bool MapSparse::areEqual(MapSparse rhs) const { if (rhs.numCols_ != numCols_) { return false; } if (rhs.numRows_ != numRows_) { return false; } if (nnz_ != rhs.nnz_) { return false; } for (MapConstIt rowIt=rowMap_.begin();rowIt!=rowMap_.end();++rowIt) { for (VectorConstIt eltIt=rowIt->second.begin();eltIt!=rowIt->second.end();++eltIt) { if (eltIt->second != rhs.getEntry(rowIt->first,eltIt->first)) { return false; } } } return true; } template void MapSparse::generateDenseRandMat(MapSparse& mat, int q) { typedef typename Field::Element Element; size_t m=mat.rowdim(),n=mat.coldim(); Element d; for (size_t i=0;i void MapSparse::generateRandMat(MapSparse& mat, int nnz, int q) { typedef typename Field::Element Element; size_t m=mat.rowdim(),n=mat.coldim(); Element d; typedef std::pair CoordPair; typedef std::set PairSet; PairSet pairs; for(int i = 0; i < (int)nnz; ++i) { size_t row,col; do { row = randRange(0,(int)m); col = randRange(0,(int)n); } while (pairs.count(CoordPair(row,col))!=0); mat.field().init(d, randRange(1,q)); mat.setEntry(row,col,d); pairs.insert(CoordPair(row,col)); } } template void MapSparse::generateScaledIdent(MapSparse& mat, int alpha) { typedef typename Field::Element Element; size_t m=mat.rowdim(),n=mat.coldim(); size_t minDim=(m void MapSparse::generateSparseNonSingular(MapSparse& mat, int approxNNZ, int seed) { typedef typename Field::Element Element; int n=mat.rowdim(); linbox_check(mat.rowdim()==mat.coldim()); typename Field::RandIter r(mat.field(),0,seed); Element d; for (int i=0;i void MapSparse::generateCompanion(MapSparse& mat,std::vector& coeffs) { typedef typename Field::Element Element; int n=mat.rowdim(); linbox_check(mat.rowdim()==mat.coldim()); typename Field::RandIter r(mat.field()); Element d; mat.field().init(d,1); for (int i=1;i int MapSparse::randRange(int start, int end) { double rval = rand(); static const double NORMALIZING_CONSTANT = 1.0/(1.0+RAND_MAX); double normedRVal = rval*NORMALIZING_CONSTANT; double rangeSize = end-start; int offset = (int)(rangeSize*normedRVal); return start+offset; } } #endif // __LINBOX_MAP_SPARSE_INL // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/minpoly.C000066400000000000000000000067571274717217100164520ustar00rootroot00000000000000 /* * examples/minpoly.C * * Copyright (C) 2005, 2010 D Saunders, J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/minpoly.C * @example examples/minpoly.C \brief Minimal polynomial of a sparse matrix. \ingroup examples */ #include #include //! @bug this should be elsewhere template void printPolynomial (const Field &F, const Polynomial &v) { for (int i = (int)v.size () ; i-- ; ) { F.write (std::cout, v[(size_t)i]); if (i > 0) std::cout << " x^" << i << " + "; } std::cout << std::endl; } #include #include #include using namespace LinBox; using namespace std; int main (int argc, char **argv) { commentator().setMaxDetailLevel (-1); commentator().setMaxDepth (-1); commentator().setReportStream (std::cerr); int a = argc; while(a--){ cerr << "argv[" << a << "] = " << argv[a] << endl; } if (argc < 2) { cerr << "Usage: minpoly [

]" << endl; return -1; } ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file " << argv[1] << endl; return -1; } if (argc != 3) { int process = 0; Method::Blackbox M; #ifdef __LINBOX_HAVE_MPI Communicator C(&argc, &argv); process = C.rank(); M.communicatorp(&C); #endif Givaro::ZRing ZZ; SparseMatrix> A (ZZ); A.read (input); /* typedef SparseMatrix> SpMat; SpMat B (ZZ); B.read (input); Transpose BT(B); Compose > A(B,BT); */ if(process == 0) cout << "A is " << A.rowdim() << " by " << A.coldim() << endl; DenseVector > m_A(ZZ); minpoly (m_A, A, M); if(process == 0){ cout << "Minimal Polynomial is "; printPolynomial (ZZ, m_A); } // minpoly (m_A, A, Method::BlasElimination() ); // if(process == 0){ // cout << "Minimal Polynomial is "; // printPolynomial (ZZ, m_A); // } } else{ typedef Givaro::Modular Field; double q = atof(argv[2]); Field F(q); SparseMatrix B (F); B.read (input); cout << "B is " << B.rowdim() << " by " << B.coldim() << endl; DenseVector m_B(F); minpoly (m_B, B); cout << "Minimal Polynomial is "; printPolynomial (F, m_B); // minpoly (m_A, A, Method::BlasElimination() ); // cout << "Minimal Polynomial is "; // printPolynomial (F, m_B); } return 0; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/mpidet.C000066400000000000000000000051721274717217100162330ustar00rootroot00000000000000 /* * examples/mpidet.C * * Copyright (C) 2006, 2010 B Youse, D Saunders * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/mpidet.C * @example examples/mpidet.C \brief Determinant of sparse matrix over Z or Zp. \ingroup examples */ #include #include #include #include #include #include using namespace LinBox; using namespace std; int main (int argc, char **argv) { #ifdef __LINBOX_HAVE_MPI if (argc < 2) { cerr << "Usage: det " << endl; return -1; } // ex: ./det [matrix-file] else{ // For a small integer matrix test, do "make mpidet2 -f makefile.mpi" // set up parallel code object Communicator *Cptr = NULL; Cptr = new Communicator(&argc, &argv); typedef Givaro::ZRing Integers; Integers ZZ; ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file " << argv[1] << endl; return -1; } SparseMatrixA(ZZ); A.read(input); if(!Cptr->rank()){ cout << "A is " << A.rowdim() << " by " << A.coldim() << endl; cout << "Beginning parallel computation with " << Cptr->size() << " processes." << endl; } Integers::Element det_A; // call parallel det with cra cra_det(det_A, A, RingCategories::IntegerTag(), Method::Hybrid(*Cptr), Cptr); // if parent process, report the determinant if(!Cptr->rank()){ cout << "Determinant is "; ZZ.write(cout, det_A) << endl; } // tie up parallel loose ends if necessary MPI_Finalize(); } return 0; #else cerr << "Compile with -D__LINBOX_HAVE_MPI" << endl; return -1 ; #endif } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/nullspacebasis.C000066400000000000000000000042511274717217100177560ustar00rootroot00000000000000/* * examples/nullspacebasis.C * * Copyright (C) 2014 J-G. Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/nullspacebasis.C * @example examples/nullspacebasis.C \brief NullSpace of sparse matrix over GFq. \brief nullspace is allocated m \times n. \ingroup examples */ #include #include "linbox/matrix/dense-matrix.h" #include #include "linbox/algorithms/gauss.h" using namespace LinBox; int main (int argc, char **argv) { if ( argc < 2 || argc > 4) { std::cerr << "Usage to get a random null space basis over GF(p,k): p [k]" << std::endl; return -1; } std::ifstream input (argv[1]); if (!input) { std::cerr << "Error opening matrix file " << argv[1] << std::endl; return -1; } //typedef Givaro::Modular Field; typedef Givaro::GFqDom Field; Field F(atoi(argv[2]),argc>3?atoi(argv[3]):1); SparseMatrix B (F); B.read (input); std::cout << "B is " << B.rowdim() << " by " << B.coldim() << std::endl; DenseMatrix NullSpace(F,B.coldim(),B.coldim()); GaussDomain GD(F); GD.nullspacebasisin(NullSpace, B); NullSpace.write( std::cerr << "X:=", Tag::FileFormat::Maple ) << ';' << std::endl; std::cerr << "NullsSpace dimensions:" << NullSpace.rowdim() << 'x' << NullSpace.coldim() << std::endl; return 0; } linbox-1.4.2/examples/nullspacebasis_rank.C000066400000000000000000000051621274717217100207730ustar00rootroot00000000000000/* * examples/nullspacebasis_rank.C * * Copyright (C) 2014 J-G. Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/nullspacebasis_rank.C * @example examples/nullspacebasis_rank.C \brief NullSpace of sparse matrix over GFq. \brief nullspace is allocated rank \times n. \ingroup examples */ #include #include #include "linbox/matrix/dense-matrix.h" #include "linbox/algorithms/gauss.h" using namespace LinBox; int main (int argc, char **argv) { if ( argc < 2 || argc > 4) { std::cerr << "Usage to get a random null space basis over GF(p,k): p [k]" << std::endl; return -1; } std::ifstream input (argv[1]); if (!input) { std::cerr << "Error opening matrix file " << argv[1] << std::endl; return -1; } int pVal = atoi(argv[2]); //typedef Givaro::Modular Field; typedef Givaro::GFqDom Field; Field F(pVal, argc>3?atoi(argv[3]):1); SparseMatrix A (F); A.read (input); std::cout << "A is " << A.rowdim() << " by " << A.coldim() << std::endl; GaussDomain GD(F); typename Field::Element Det; unsigned long Rank; size_t Ni(A.rowdim()),Nj(A.coldim()); Permutation P((int)Nj,F); GD.InPlaceLinearPivoting(Rank, Det, A, P, Ni, Nj ); for(size_t i=0; i< Ni; ++i) { if (A[i].size() == 0) { size_t j(i); if (nextnonzero(j,Ni,A)) { A[i] = A[j]; A[j].resize(0); } else { break; } } } size_t nullity = A.coldim()-Rank; DenseMatrix NullSpace(F,A.coldim(),nullity); GD.nullspacebasis(NullSpace, Rank, A, P); NullSpace.write( std::cerr << "X:=", Tag::FileFormat::Maple ) << ';' << std::endl; std::cerr << "NullsSpace dimensions:" << NullSpace.rowdim() << 'x' << NullSpace.coldim() << std::endl; return 0; } linbox-1.4.2/examples/omp_block_rank.C000066400000000000000000000425651274717217100177400ustar00rootroot00000000000000/* * examples/omp_block_rank.C * * Copyright (C) 2010 J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== * This file is part of LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 2 of * the License, or (at your option) any later version. * * LinBox 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with LinBox. If not, see * . */ /*! @file examples/omp_block_rank.C * @example examples/omp_block_rank.C * @ingroup examples * @brief Block Wiedemann Rank with OpenMP */ #include #include #include #include #define __GIVARO_USE_OPENMP #include #include #include #ifndef __LINBOX_USE_OPENMP #error "you have to compile this example with openmp enabled" #endif // ********************************************************** // Variable globale pour fixer le générateurs des FFT primes struct FFTSeeder { unsigned long seed; FFTSeeder(unsigned long s=0) : seed(s) {} void setseed(unsigned long s=0) { seed=s; } unsigned long operator()() const { return this->seed; } }; FFTSeeder FFTgenerator; #define FFT_PRIME_SEED FFTgenerator() // ********************************************************** #include #define LINBOX_EXTENSION_DEGREE_MAX 20 #include #include #include #include #include #include #include #include #include template void extractLeftSigma(const Field &F, std::vector > &S, std::vector >&SigmaBase, std::vector &defect, size_t block) { typedef typename Field::Element Element; LinBox::DenseMatrixDomain _BMD(F); // take the block rows which have lowest defect // compute permutation such that first block rows have lowest defect std::vector Perm(2*block); for (size_t i=0;i<2*block;++i) Perm[i]=i; for (size_t i=0;i<2*block;++i) { size_t idx_min=i; for (size_t j=i+1;j<2*block;++j) if (defect[j]< defect[idx_min]) idx_min=j; std::swap(defect[i],defect[idx_min]); Perm[i]=idx_min; } LinBox::BlasPermutation BPerm(Perm); // Apply BPerm to the Sigma Base for (size_t i=0;i max) max=defect[i]; // prepare S to receive the sigma base const LinBox::DenseMatrix Zero(F,block,block); S.resize(max+1, Zero); // extract the sigma base //for (size_t k=0;k void write_sigma(const Field &F, const char* name, const std::vector > & P) { size_t m,n; m = P[0].rowdim(); n = P[0].coldim(); std::cerr< void scalarmulin(Container& C, const Field& F, const typename Field::Element& x) { for(typename Container::Iterator it=C.Begin();it!=C.End();++it) F.mulin(*it, x); } template void contaddin(Container1& C, const Field& F, const Container2& V) { typename Container1::Iterator cit=C.Begin(); typename Container2::ConstIterator vit=V.Begin(); for( ; cit!=C.End(); ++cit, ++vit) F.addin(*cit, *vit); } template void EvalPolyMat(Array& EvalDets, const Field& F, const LinBox::DenseMatrixDomain& D, const std::vector& matminpol, const Array& Points) { const long nump = Points.size(); std::cerr << "num procs: " << omp_get_num_procs() << std::endl; std::cerr << "max threads: " << omp_get_max_threads() << std::endl; std::cerr << "eval points: " << nump << std::endl; #pragma omp parallel for schedule(static) for(int i=0; i=0;--j) { scalarmulin(mat, F, Points[i]); contaddin(mat, F, matminpol[j]); } EvalDets[i] = D.det(mat); } // for(int i=0; i using namespace Givaro; template int OMP_BLOCK_RANK_main (const Field& F, int argc, char **argv) { LinBox::commentator().setMaxDetailLevel (-1); LinBox::commentator().setMaxDepth (-1); LinBox::commentator().setReportStream (std::cerr); OMPTimer chrono1,chrono2,chrono3,chrono4; chrono1.clear(); chrono2.clear(); chrono3.clear(); chrono4.clear(); Integer c; F.cardinality(c); unsigned long seed = (argc>4?atoi(argv[4]):0); FFTgenerator.setseed(seed); typename Field::RandIter generator (F,c,seed); LinBox::VectorDomain VD(F); std::ifstream input (argv[1]); LinBox::MatrixStream ms( F, input ); typedef LinBox::SparseMatrix Blackbox; typedef LinBox::DenseMatrix Block_t; Blackbox B (ms); std::cerr << "B is " << B.rowdim() << " by " << B.coldim() << std::endl; long M = B.rowdim() ; long N = B.coldim(); long R = (MN?M:N); int nb = (argc>3 ? atoi(argv[3]) : omp_get_max_threads() ); std::cerr << "block size: " << nb << std::endl; chrono1.start(); std::vector< std::vector< typename Field::Element > > LV(nb); for (typename std::vector< std::vector< typename Field::Element > >::iterator it = LV.begin(); it != LV.end(); ++it) { it->resize(R); for(typename std::vector::iterator vit=it->begin(); vit != it->end(); ++vit) generator.random( *vit ); // VD.write(output, *it) << std::endl; } Block_t LM(F, nb, R); for (size_t i=0; i < LM.rowdim(); ++i) { for (size_t j=0; j < LM.coldim(); ++j) { LM.setEntry(i,j, LV[i][j]); } } chrono1.stop(); std::cerr << "Generated " << nb << ' ' << R << "-vectors" << std::endl; std::cerr << chrono1 << std::endl; chrono2.start(); typedef LinBox::DenseMatrix Matrix; typedef std::vector Polynomial; const Matrix SigmaZero(F, 2*nb,2*nb); const Matrix SerieZero(F, 2*nb,nb); long d = 4+(R<<1)/nb; // define the serie and the sigmabase Polynomial Serie(d, SerieZero); Polynomial Sigma(d, SigmaZero); LinBox::DenseVector d1(F,S); for (int i = 0; i < S; i++) do generator.random (d1[i]); while (F.isZero (d1[i])); LinBox::Diagonal D1 (d1); LinBox::DenseVector d2(F,R); for (int i = 0; i < R; i++) do generator.random (d2[i]); while (F.isZero (d2[i])); LinBox::Diagonal D2 (d2); std::cerr << "num procs: " << omp_get_num_procs() << std::endl; std::cerr << "max threads: " << omp_get_max_threads() << std::endl; if (M>N) { #pragma omp parallel for firstprivate(B) schedule(static) for(int j=0; j v(S),u(S),w(R); std::vector< typename Field::Element > colonne(nb); LM.apply(colonne, LV[j]); for(int i=0;i v(S),u(S),w(R); std::vector< typename Field::Element > colonne(nb); LM.apply(colonne, LV[j]); for(int i=0;i defect(2*nb,0); for (int i=nb;i<2*nb;++i){ defect[i]=1; } LinBox::SigmaBasis SB(F, Serie); std::cerr<<"blockminpoly computation... "; SB.PM_Basis(Sigma, Serie, d-1, defect); std::cerr<<"done\n"; // write_sigma(F, "serie", Serie); // write_sigma(F, "sigma", Sigma); std::cerr<<"extracting bminpoly... "; std::vector LS2; extractLeftSigma(F, LS2, Sigma, defect, nb); std::cerr<<"done with size: " << LS2.size() << std::endl; std::cerr<<"Rank of the highest degree coefficient..."; unsigned long rdeg; LinBox::DenseMatrixDomain D(F); rdeg = D.rank(LS2[LS2.size()-1]); typename Field::Element d0,de; d0 = D.det(LS2[0]); de = D.det(LS2[LS2.size()-2]); if( ! ( F.isZero(d0) || F.isZero(de) ) ) { int rank = (int) ((LS2.size()-2)*(LS2[0].rowdim())+rdeg); chrono3.stop(); std::cerr<<"is " << rdeg << ", done.\n"; std::cerr << "Estimated rank: " << rank << std::endl; } else { chrono3.stop(); std::cerr<< "\n*** WARNING *** Insufficient information, interpolation required. You might also try again with a larger field.\n"; F.write(std::cerr<< "det(bm[0]): ", d0) << std::endl; std::cerr<< "rk(bm[0]): " << D.rank(LS2[0])<< std::endl; F.write(std::cerr<< "det(bm[" << (LS2.size()-2) << "]): ", de) << std::endl; std::cerr<< "rk(bm[" << (LS2.size()-2) << "]): "<< D.rank(LS2[LS2.size()-2]) << std::endl; std::cerr<< "rk(bm[" << (LS2.size()-1) << "]): "<< rdeg << std::endl; long def=0; if (F.isZero(d0)) ++def; if (F.isZero(de)) ++def; int rank = (int) ((LS2.size()-2-def)*(LS2[0].rowdim())+rdeg); std::cerr<< "*** VERY ROUGH *** rank approximation " << rank << std::endl; } std::cerr << "recursive PMBasis CPU time (s) : " << chrono3.usertime() << std::endl< PolyCRT; typedef typename PolyCRT::array_T VScal; VScal EvalPoints( LS2.size()*nb ); for(typename VScal::iterator itp = EvalPoints.begin(); itp != EvalPoints.end(); ++itp) { do { do generator.random (*itp); while (F.isZero (*itp)); } while ( (std::find(EvalPoints.begin(), itp, *itp) != itp)) ; } VScal EvalDets( EvalPoints.size() ); EvalPolyMat(EvalDets, F, D, LS2, EvalPoints); PolyCRT Interpolator(F, EvalPoints, "Y"); typename PolyCRT::Element Determinant; Interpolator.RnsToRing(Determinant, EvalDets); chrono4.stop(); std::cerr << "done\n"; // Interpolator.write(std::cerr << "Determinant of MinPoly: ", Determinant) << std::endl; Degree deg; Interpolator.getpolydom().degree(deg, Determinant); Degree val; Interpolator.getpolydom().val(val, Determinant); F.write(std::cerr, Determinant[0]) << " + "; if (val > 0) F.write(std::cerr<< "... + ", Determinant[val.value()]) << "Y^" << val << " + "; std::cerr << "... + "; if (Determinant.size() >= 2) { F.write(std::cerr, Determinant[Determinant.size()-2]) << "Y^" << (deg-1) << " + "; } F.write(std::cerr, Determinant[Determinant.size()-1]) << "Y^" << deg << std::endl; typename Field::Element t, p2; F.assign(p2, F.zero); if (Determinant.size() >= 2) { F.neg(p2, Determinant[ Determinant.size()-2]); F.divin(p2, Determinant[ Determinant.size()-1]); } if (M>N) { typedef LinBox::Transpose AT_BB; typedef LinBox::Compose< LinBox::Diagonal, AT_BB > DAT_BB ; typedef LinBox::Compose< DAT_BB, LinBox::Diagonal > DATD_BB; typedef LinBox::Compose< DATD_BB, Blackbox> DATDA_BB; typedef LinBox::Compose< DATDA_BB, LinBox::Diagonal > DATDAD_BB; AT_BB AT(&B); DAT_BB B1(&D2, &AT); // B1 = D2 B^T DATD_BB B2(&B1, &D1); // B2 = B1 D1 = D2 B^T D1 DATDA_BB B3(&B2, &B); // B3 = B2 B = D2 B^T D1 B DATDAD_BB B4(&B3, &D2); // B4 = B3 D2 = D2 B^T D1 B D2 std::cerr << "B4: " << B4.rowdim() << "x" << B4.coldim() << std::endl; // trace(t, B4); LinBox::WhisartTraceTranspose(t, F, D2, B, D1); F.write(std::cerr << "Trace D2 B^T D1 B D2: ", t) << std::endl; } else { typedef LinBox::Compose< LinBox::Diagonal, Blackbox > DA_BB; typedef LinBox::Compose< DA_BB, LinBox::Diagonal > DAD_BB; typedef LinBox::Transpose AT_BB; typedef LinBox::Compose< DAD_BB, AT_BB> DADAT_BB; typedef LinBox::Compose< DADAT_BB, LinBox::Diagonal > DADATD_BB; DA_BB B1(&D2, &B); // B1 = D2 B DAD_BB B2(&B1, &D1); // B2 = B1 D1 = D2 B D1 AT_BB AT(&B); DADAT_BB B3(&B2, &AT); // B3 = B2 B^T= D2 B D1 B^T DADATD_BB B4(&B3, &D2); // B4 = B3 D2 = D2 B D1 B^T D2 std::cerr << "B4: " << B4.rowdim() << "x" << B4.coldim() << std::endl; // trace(t, B4); LinBox::WhisartTrace(t, F, D2, B, D1); F.write(std::cerr << "Trace D2 B D1 B^T D2: ", t) << std::endl; } if (! F.areEqual( t, p2 )) { std::cerr << "*** FAILURE (" << (deg-val) << ") ***" << std::endl; F.write(std::cerr << "Trace: ", t) << std::endl; F.write(std::cerr << "Minpo: ", p2) << std::endl; } else { // std::cerr << "Degree - valuation: " << (deg-val) << std::endl; std::cerr << "MONTE CARLO RANK: " << (deg-val) << std::endl; } std::cerr << chrono4 << std::endl; std::cerr << "Rank |\t Time-genvect\t Time-seq\t Time-SB\t Time-Interp |\t Total-Time" << std::endl; std::cout << (deg-val) << std::scientific << std::setprecision(3) << " |\t" << chrono1.usertime() << '\t' << chrono2.usertime() << '\t' << chrono3.usertime() << '\t' << chrono4.usertime() << " |\t" << (chrono1.usertime()+chrono2.usertime()+chrono3.usertime()+chrono4.usertime()) << std::endl; return 0; } int main (int argc, char **argv) { // argv[1]: matrix file name // argv[2]: [optional] field characteristic (default 65521) // argv[3]: [optional] block size (default omp_max_threads) // argv[4]: [optional] random generator seed int c = (argc>2 ? atoi(argv[2]) : 65521); unsigned long extend = (unsigned long)FF_EXPONENT_MAX(c,(int)LINBOX_EXTENSION_DEGREE_MAX); if (extend > 1) { std::cerr << "*** WARNING *** would be best using an extension field of degree " << extend << std::endl; } #if 0 if (extend > 1) { typedef LinBox::Givaro::GFq Field; Field EF( (unsigned long)c, extend); EF.write(std::cerr << "Using an extension field ") << std::endl; return OMP_BLOCK_RANK_main(EF,argc,argv); } #endif // else { typedef Givaro::Modular Field; Field F(c); return OMP_BLOCK_RANK_main(F,argc,argv); // } } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/omp_smithvalence.C000066400000000000000000000201271274717217100203030ustar00rootroot00000000000000/* * examples/omp_smithvalence.C * Copyright (c) Linbox * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/omp_smithvalence.C * @example examples/omp_smithvalence.C \brief Valence of sparse matrix over Z or Zp. \ingroup examples */ #ifndef DISABLE_COMMENTATOR #define DISABLE_COMMENTATOR #endif #include #include #include "smithvalence.h" using namespace LinBox; int main (int argc, char **argv) { // commentator().setMaxDetailLevel (-1); // commentator().setMaxDepth (-1); // commentator().setReportStream (std::cerr); if (argc < 2 || argc > 4) { std::cerr << "Usage: omp_smithvalence [-ata|-aat|valence] [coprime]" << std::endl; std::cerr << " Optional parameters valence and coprime are integers." << std::endl; std::cerr << " Prime factors of valence will be used for local computation." << std::endl; std::cerr << " coprime will be used for overall rank computation." << std::endl; return -1; } std::ifstream input (argv[1]); if (!input) { std::cerr << "Error opening matrix file " << argv[1] << std::endl; return -1; } Givaro::ZRing ZZ; MatrixStream< Givaro::ZRing > ms( ZZ, input ); typedef SparseMatrix> Blackbox; Blackbox A (ms); input.close(); std::cout << "A is " << A.rowdim() << " by " << A.coldim() << std::endl; Givaro::ZRing::Element val_A; LinBox::Timer chrono; chrono.start(); if (argc >= 3) { Transpose T(&A); if (strcmp(argv[2],"-ata") == 0) { Compose< Transpose, Blackbox > C (&T, &A); std::cout << "A^T A is " << C.rowdim() << " by " << C.coldim() << std::endl; valence(val_A, C); } else if (strcmp(argv[2],"-aat") == 0) { Compose< Blackbox, Transpose > C (&A, &T); std::cout << "A A^T is " << C.rowdim() << " by " << C.coldim() << std::endl; valence(val_A, C); } else { std::cout << "Suppose primes are contained in " << argv[2] << std::endl; val_A = LinBox::Integer(argv[2]); } } else { if (A.rowdim() != A.coldim()) { std::cerr << "Valence works only on square matrices, try either to change the dimension in the matrix file, or to compute the valence of A A^T or A^T A, via the -aat or -ata options." << std::endl; exit(0); } else valence (val_A, A); } std::cout << "Valence is " << val_A << std::endl; std::vector Moduli; std::vector exponents; Givaro::IntFactorDom<> FTD; typedef std::pair PairIntRk; std::vector< PairIntRk > smith; Givaro::Integer coprimeV=2; if (argc >= 4) { coprimeV =Givaro::Integer(argv[3]); } while ( gcd(val_A,coprimeV) > 1 ) { FTD.nextprimein(coprimeV); } if (argc >= 4) { std::cout << "Suppose " << argv[3] << " is coprime with Smith form" << std::endl; } std::cout << "Integer rank: " << std::endl; unsigned long coprimeR; LRank(coprimeR, argv[1], coprimeV); smith.push_back(PairIntRk(coprimeV, coprimeR)); // std::cerr << "Rank mod " << coprimeV << " is " << coprimeR << std::endl; std::cout << "Some factors (50000 factoring loop bound): "; FTD.set(Moduli, exponents, val_A, 50000); std::vector::const_iterator eit=exponents.begin(); for(std::vector::const_iterator mit=Moduli.begin(); mit != Moduli.end(); ++mit,++eit) std::cout << *mit << '^' << *eit << ' '; std::cout << std::endl; std::vector SmithDiagonal(coprimeR,Givaro::Integer(1)); std::cout << "num procs: " << omp_get_num_procs() << std::endl; std::cout << "max threads: " << omp_get_max_threads() << std::endl; #pragma omp parallel for shared(SmithDiagonal, Moduli, coprimeR) for(size_t j=0; j::const_iterator mit=Moduli.begin(); mit != Moduli.end(); ++mit) { unsigned long r; LRank(r, argv[1], *mit); std::cerr << "Rank mod " << *mit << " is " << r << std::endl; smith.push_back(PairIntRk(*mit, r)); for(size_t i=r; i < coprimeR; ++i) SmithDiagonal[i] *= *mit; } */ eit=exponents.begin(); std::vector::const_iterator sit=smith.begin(); for( ++sit; sit != smith.end(); ++sit, ++eit) { if (sit->second != coprimeR) { std::vector ranks; ranks.push_back(sit->second); size_t effexp; if (*eit > 1) { if (sit->first == 2) PRankPowerOfTwo(ranks, effexp, argv[1], *eit, coprimeR); else PRank(ranks, effexp, argv[1], sit->first, *eit, coprimeR); } else { // if (sit->first == 2) PRank(ranks, effexp, argv[1], sit->first, 2, coprimeR); // else // PRank(ranks, effexp, argv[1], sit->first, 2, coprimeR); } if (ranks.size() == 1) ranks.push_back(coprimeR); if (effexp < *eit) { for(size_t expo = effexp<<1; ranks.back() < coprimeR; expo<<=1) { if (sit->first == 2) PRankIntegerPowerOfTwo(ranks, argv[1], expo, coprimeR); else PRankInteger(ranks, argv[1], sit->first, expo, coprimeR); } } else { for(size_t expo = (*eit)<<1; ranks.back() < coprimeR; expo<<=1) { if (sit->first == 2) PRankPowerOfTwo(ranks, effexp, argv[1], expo, coprimeR); else PRank(ranks, effexp, argv[1], sit->first, expo, coprimeR); if (ranks.size() < expo) { std::cerr << "It seems we need a larger prime power, it will take longer ..." << std::endl; // break; if (sit->first == 2) PRankIntegerPowerOfTwo(ranks, argv[1], expo, coprimeR); else PRankInteger(ranks, argv[1], sit->first, expo, coprimeR); } } } std::vector::const_iterator rit=ranks.begin(); // unsigned long modrank = *rit; for(++rit; rit!= ranks.end(); ++rit) { if ((*rit)>= coprimeR) break; for(size_t i=(*rit); i < coprimeR; ++i) SmithDiagonal[i] *= sit->first; // modrank = *rit; } } } Givaro::Integer si=1; size_t num=0; for( std::vector::const_iterator dit=SmithDiagonal.begin(); dit != SmithDiagonal.end(); ++dit) { if (*dit == si) ++num; else { std::cerr << '[' << si << ',' << num << "] "; num=1; si = *dit; } } std::cerr << '[' << si << ',' << num << "] " << std::endl; chrono.stop(); std::cerr << chrono << std::endl; return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/poly-smith.C000066400000000000000000000061701274717217100170550ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace LinBox; using namespace std; /// Prints out a matrix in maple format template void printMatrix(MatrixDom MD, Matrix A) { typename MatrixDom::Field::Element tmp; cout << "<"; for (size_t i = 0; i < A.rowdim(); i++) { if (i != 0) cout << ","; MD.field().write(cout << "<", A.getEntry(tmp, i, 0)); for (size_t j = 1; j < A.coldim(); j++) { MD.field().write(cout << "|", A.getEntry(tmp, i, j)); } cout << ">"; } cout << ">" << endl; } /// Prints a vector as a list template void printVector(Field F, Vector S) { F.write(cout << "[", S[0]); for (size_t i = 1; i < S.size(); i++) F.write(cout << ",", S[i]); cout << "]" << endl; } /// Makes vector polynomials monic template void normalize(PolyDom &PD, Vector &S) { typedef typename PolyDom::Type_t Scalar; for (size_t i = 0; i < S.size(); i++) { Scalar lcoef; PD.leadcoef(lcoef, S[i]); PD.divin(S[i], lcoef); } } int main(int argc, char **argv) { typedef Givaro::Modular BaseDom; typedef Givaro::Poly1Dom PolyDom; typedef GivaroPoly Field; typedef MatrixDomain MatrixDom; typedef DenseMatrix Matrix; if (argc < 4) { cout << "Generates a random GF(p)^(n-by-n) with polynomial coefficients with degree=d" << endl; cout << "Use: ./polysmith

" << endl; return 1; } int p = atoi(argv[1]); int n = atoi(argv[2]); int d = atoi(argv[3]); BaseDom BD(p); PolyDom PD(BD, "x"); Field F(PD); MatrixDom MD(F); Matrix M(F, n, n); GivaroPolyRandIter Rand(F); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Field::Element tmp; Rand.random(tmp, Givaro::Degree(d)); M.setEntry(i, j, tmp); } } printMatrix(MD, M); // Text Book SF Domain // Comment out this block if things are getting too slow SmithFormTextbookDomain SFD(MD); DenseVector S1(F, n, F.zero); Givaro::Timer t1; t1.start(); SFD.solve(S1, M); t1.stop(); normalize(PD, S1); printVector(F, S1); // Kannan-Bachem w/ Chou-Collins Improvement Domain SmithFormKannanBachemDomain SFKB(MD); DenseVector S2(F, n, F.zero); Givaro::Timer t2; t2.start(); SFKB.solve(S2, M); t2.stop(); normalize(PD, S2); printVector(F, S2); cout << "SFD: " << n << " " << p << " " << d << " " << t1.usertime() << endl; cout << "SFK: " << n << " " << p << " " << d << " " << t2.usertime() << endl; return 0; } linbox-1.4.2/examples/power_rank.C000066400000000000000000000072331274717217100171200ustar00rootroot00000000000000 /* * examples/power_rank.C * * Copyright (C) 2005, 2010 J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/power_rank.C * @example examples/power_rank.C \brief Rank of sparse matrix over Z or Zp. \ingroup examples */ #include #include #include #include #include using namespace LinBox; using namespace std; template int tmain (int argc, char **argv) { commentator().setMaxDetailLevel (-1); commentator().setMaxDepth (-1); commentator().setReportStream (std::cerr); ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file: " << argv[1] << endl; return -1; } Base p; Givaro::Caster(p,Givaro::Integer(argv[2])); Base q; Givaro::Caster(q,Givaro::Integer(argv[3])); typedef Givaro::Modular Field; Field F(q); MatrixStream ms( F, input ); SparseMatrix B (ms); cout << "B is " << B.rowdim() << " by " << B.coldim() << endl; if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(cout) << endl; // using Sparse Elimination PowerGaussDomain< Field > PGD( F ); std::vector > local; Givaro::Timer tq; tq.clear(); tq.start(); PGD(local, B, q, p); tq.stop(); F.write(std::cout << "Local Smith Form ") << " : " << std::endl << '('; for (auto ip = local.begin(); ip != local.end(); ++ip) std::cout << ip->first << " " << ip->second << ", "; cout << ")" << endl; std::cerr << tq << std::endl; return 0; } int main(int argc, char ** argv) { if (argc < 4 || argc > 5) { cerr << "Usage: rank []" << endl; return -1; } Givaro::Integer q(argv[3]); size_t method( argc>4? atoi(argv[4]) : 0); const size_t logq( (size_t)ceil(logtwo(q)) ); if ( (method == 1) || ( (method==0) && (logq<63) ) ) { return tmain(argc,argv); } else { if ( (method == 2) ) { return tmain(argc,argv); } else { if (! method) method = (size_t)std::max(6., ceil(log(logq)/log(2.)) ); switch (method) { case 6: return tmain>(argc,argv); case 7: return tmain>(argc,argv); case 8: return tmain>(argc,argv); case 9: return tmain>(argc,argv); case 10: return tmain>(argc,argv); case 11: return tmain>(argc,argv); } } } return 0; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/poweroftwo_ranks.C000066400000000000000000000077121274717217100203640ustar00rootroot00000000000000/* examples/poweroftwo_ranks.C * * Copyright (C) 2012 LinBox * Written by J-G Dumas * Time-stamp: <29 Mar 16 15:58:16 Jean-Guillaume.Dumas@imag.fr> * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/poweroftwo_ranks.C * @example examples/poweroftwo_ranks.C \brief Ranks of sparse matrix modulo 2^k \ingroup examples */ #include #include #include #include #include using namespace LinBox; using namespace std; template > void runpoweroftworank(ifstream& input, const size_t exponent) { typedef std::vector > Smith_t; typedef Ring_type Ring; // signed ? Smith_t local; Ring R; LinBox::MatrixStream ms( R, input ); LinBox::SparseMatrix A (ms); input.close(); LinBox::PowerGaussDomainPowerOfTwo< Int_type > PGD; cout << "B is " << A.rowdim() << " by " << A.coldim() << endl; // R.write(std::cerr << "Last entry: ", A.getEntry(A.rowdim()-1,A.coldim()-1)) << std::endl; Givaro::Timer tim; tim.clear(); tim.start(); PGD(local, A, exponent); tim.stop(); R.write(std::cout << "Local Smith Form ") << " : " << std::endl << '('; for (auto p = local.begin(); p != local.end(); ++p) std::cout << '[' << p->second << ',' << p->first << "] "; cout << ')' << endl; std::cerr << tim << std::endl; } int main (int argc, char **argv) { commentator().setMaxDetailLevel (-1); commentator().setMaxDepth (-1); commentator().setReportStream (std::cerr); if (argc < 3 || argc > 4) { cerr << "Usage: rank []" << endl; return -1; } ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file: " << argv[1] << endl; return -1; } size_t method( argc>3? atoi(argv[3]): 0 ); Givaro::Timer tim; size_t exponent = atoi(argv[2]); if ((method == 2) || ((method == 0) && (exponent >= (1<<10))) ) { runpoweroftworank(input, exponent); } else { if ((method == 1) || ((method == 0) && (exponent < 64)) ) { runpoweroftworank >(input, exponent); } else { switch (method) { case 6: runpoweroftworank>(input, exponent); break; case 7: runpoweroftworank>(input, exponent); break; case 8: runpoweroftworank>(input, exponent); break; case 9: runpoweroftworank>(input, exponent); break; case 10: runpoweroftworank>(input, exponent); break; case 11: runpoweroftworank>(input, exponent); break; } } } std::cerr << tim << std::endl; return 0; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/qchar.C000066400000000000000000000313731274717217100160510ustar00rootroot00000000000000 /* * examples/qchar.C * * Copyright (C) 2007, 2010 A. Urbanska * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file examples/qchar.C * @example examples/qchar.C * @ingroup examples * @brief Undocumented. */ #include #include #include #include #include #include #include #include using namespace LinBox; using namespace std; typedef Givaro::ZRing Integers; typedef Integers::Element Integer; typedef Givaro::Modular Field; typedef Field::Element Element; typedef Vector::Dense DVector; typedef GMPRationalField Rationals; typedef Rationals::Element Quotient; typedef DenseMatrix Blackbox; typedef SparseMatrix RBlackbox; //#define _LB_CONT_FR typedef UserTimer myTimer; myTimer tRationalModular; template std::ostream& printPolynomial (std::ostream& out, const Field &F, const Polynomial &v) { for (int i = v.size () - 1; i >= 0; i--) { F.write (out, v[i]); if (i > 0) out << " X^" << i << " + "; out << "\n"; } return out; } template struct PrecRationalModularCharpoly { const Blackbox &A; const MyMethod &M; const Integer ≺ PrecRationalModularCharpoly(const Integer& detPrec, const Blackbox& b, const MyMethod& n) : prec(detPrec), A(b), M(n) {} template Polynomial& operator()(Polynomial& P, const Field& F) const { typedef typename Blackbox::template rebind::other FBlackbox; FBlackbox * Ap; tRationalModular.clear(); tRationalModular.start(); MatrixHom::map(Ap, A, F); tRationalModular.stop(); //minpoly(P, *Ap, typename FieldTraits::categoryTag(), M); charpoly( P, *Ap, typename FieldTraits::categoryTag(), M); //minpolySymmetric(P, *Ap, typename FieldTraits::categoryTag(), M); integer p; F.characteristic(p); cout<<"Valence "< struct PrecRationalModularMinpoly { const Blackbox &A; const MyMethod &M; const DVector ≺ PrecRationalModularMinpoly(const DVector& detPrec, const Blackbox& b, const MyMethod& n) : prec(detPrec), A(b), M(n) {} template Polynomial& operator()(Polynomial& P, const Field& F) const { typedef typename Blackbox::template rebind::other FBlackbox; FBlackbox * Ap; tRationalModular.clear(); tRationalModular.start(); MatrixHom::map(Ap, A, F); tRationalModular.stop(); //minpoly(P, *Ap, typename FieldTraits::categoryTag(), M); //charpoly( P, *Ap, typename FieldTraits::categoryTag(), M); minpolySymmetric(P, *Ap, typename FieldTraits::categoryTag(), M); integer p; F.characteristic(p); //cout<<"Det(A) mod "< void generate_precRatMat(string& filename, RMatrix& M, DVector& den, Integer& denPrec); void i_vti_v(RBlackbox& Res, DenseMatrix& M, DVector& den, Integer& detPrec); int main (int argc, char** argv) { if ((argc < 3) || (argc > 4) ) { cout << "Usage: qchar n matrix" << endl; return -1; } size_t n = atoi(argv[1]); cout << "Matrix size " << n<< endl; string filename; filename=argv[2]; Integers Z; Rationals Q; Integer detPrec = 1; Integer detNum; Integer detDen; Blackbox DM(Z,n,n); DenseMatrix In(Q,n,n); RBlackbox M(Q,n,n); DVector V(n,1); // generate_precRatMat(filename, In, V, detPrec); //i_vti_v(M,In, V, detPrec); generate_precRatMat(filename, M, V, detPrec); cout << "detPrec is " << detPrec << "\n"; typedef GivPolynomialRing IntPolRing; IntPolRing::Element c_A; Integer max = 1,min=0; for (int i=0; i < n; ++i) { for (int j=0; j < n; ++j) { Integer a; Q.convert(a,M.getEntry(i,j)); // cerr<<"it="<<(*it)< a) min = a; } } if (max<-min) max=-min; else max = max+1; double hadamarcp = (double)n/2.0*(log(double(n))+2*log(double(max))+0.21163275)/log(2.0); cout << "had" << hadamarcp << "\n"; cout << "had2" << (Integer)hadamarcp*detPrec << "\n"; RandomPrimeIterator genprime( 26-(int)ceil(log((double)M.rowdim())*0.7213475205)); ChineseRemainder< EarlyMultipCRA > cra(3UL); typedef Method::Hybrid MyMethod; MyMethod Met; //PrecRationalModularCharpoly iteration (detPrec, M, Met); PrecRationalModularMinpoly< RBlackbox ,MyMethod> iteration(V, M, Met); cra (c_A, iteration, genprime); printPolynomial(cout, Z, c_A); return 0 ; } /* for a rational number num/den construct a continued fraction approximation: - with den bounded by den_bound AND - number of steps bounded by s NEW fraction replaces num/den */ void continuedFractionIn(Integer& num, Integer& den, double epsi,const size_t s, Integer den_bound) { //den_bound = 100; Integer a=num; Integer b=den; Integer t; //double y; Integer f[s]; f[0] = a/b;// y = f[0]; int i=1; while (1) //abs(y-x)>=epsi) { //cout << "a :" << a << " b: " << b << "\n"; t = a%b; a = b; b = t; f[i] = a/b; //y = (double)f[i]; num = 1; den = f[i]; for (int j=i-1; j > 0; --j) { Integer tmp = num; num = den; den = f[j]*den+tmp; //y = (double)f[j]+1/y; } //y = (double)f[0]+1/y; num = den*f[0]+num; if (den >= den_bound) break; ++i; if (i >= s) { break; } } } void i_vti_v(RBlackbox& Res, DenseMatrix& M, DVector& den, Integer& detPrec) { detPrec=1; Rationals Q; int n = M.coldim(); //DVector denV(n,1); for (int i=0; i < den.size();++i) den[i]=1; for (int i=0; i < n; ++i) { for (int j=0; j <=i ; ++j) { Integer q_num =0; Integer q_den =1; for (int k=0; k < n; ++k) { Integer deno_ik, nume_ik, deno_jk, nume_jk, deno, nume; Q.get_den (deno_ik, M.getEntry(k,i)); Q.get_num (nume_ik, M.getEntry(k,i)); Q.get_den (deno_jk, M.getEntry(k,j)); Q.get_num (nume_jk, M.getEntry(k,j)); if (i==k) { nume_ik = deno_ik-nume_ik; } else { nume_ik = -nume_ik; } if (j==k) { nume_jk = deno_jk-nume_jk; } else { nume_jk = -nume_jk; } //cout << nume_ik << nume_jk; deno = deno_ik*deno_jk; nume = nume_ik*nume_jk; //cout << q_num << "/" << q_den << " " ; //cout << nume << "/" << deno << " " ; if (deno==q_den) q_num+=nume; else { if (nume != 0) { Integer g = gcd(q_den, deno); q_num = q_num*deno/g+nume*q_den/g; q_den = q_den*deno/g; } } //cout << q_num << "/" << q_den << " " ; } if (q_num != 0) { Quotient q(q_num,q_den); if (i!=j) { den[i]=lcm(den[i], q_den); den[j]=lcm(den[j], q_den); Res.setEntry(i,j,q); Res.setEntry(j,i,q); cout << i << " " << j << " " << q_num << "/" << q_den << "\n"; cout << j << " " << i << " " << q_num << "/" << q_den << "\n"; } else { den[i]=lcm(den[i], q_den); Res.setEntry(i,j,q); cout << i << " " << j << " " << q_num << "/" << q_den << "\n"; } } } } Integer d = 1; for (int i=0; i < den.size(); ++i) { detPrec *=den[i]; d = lcm(d, den[i]); } den[den.size()-1]=d; for (int i=den.size()-2; i >=0; --i) { den[i]=d*den[i+1]; } } template void generate_precRatMat(string& filename, RMatrix& M, DVector& den, Integer& denPrec) { int prec=10; denPrec = 1; ifstream is(filename.c_str(), std::ios::in); int m,n; char c; is >> m >> n; do is >> c; while (isspace (c)); if ((m > M.rowdim()) || (n > M.coldim())) { cout << m << " " << n << " " ; cout << "Wrong matrix size\n"; return; } cout << "Reading matrix\n"; den.resize(m,1); while (1) {//! @todo temp fix #if 0 while (is >> m) //temp fix if (m==0) break;//temp fix #endif is >> m;//temp fix is >> n; #if 0 cout << m << n << "\n"; long double x; is >> x; #endif char xstr[500]; char numstr[500]; #if 0 cout << x << " "; sprintf(xstr, "%100f", x); cout << xstr << " " ; is >> c; int i=0; while (c!= '\n') { xstr[i]=c; ++i; is >> c; if (i>=199) { xstr[i]=0; break; } } is >> c; #endif is.getline(xstr,500); Integer ten=1; if (strchr(xstr, '/') != NULL) { //cout << "xstr " << xstr << "\n"; //! @bug non reentrant strtok strcpy(numstr, strtok(xstr, "/")); char tenstr[500]; strcpy(tenstr, strtok(NULL, "/")); if (prec < strlen(tenstr)) { int cut = strlen(tenstr)-prec; tenstr[prec]=0; //c = numstr[strlen(numstr)-2]; numstr[strlen(numstr)-cut]=0;//temp round down } Integer tmp(tenstr); ten = tmp; //cout << numstr << "/" << ten << "\n"; } else { // cout << "xstr" << xstr << " " ; int i=0; int j=0; c=xstr[i]; ++i; while (isspace (c)) { if (i >=strlen(xstr)) break; c=xstr[i]; ++i; } if (c=='-') { numstr[j]=c;++j; if (i < strlen(xstr)) { c = xstr[i]; ++i; } } if (c=='0') { //cout << "zero"; if (i < strlen(xstr)) { c = xstr[i]; ++i; } } //else cout << " not 0" << c; while (strchr("0123456789",c) != NULL) { //cout << "number"; numstr[j]=c; ++j; if (i >=strlen(xstr)) break; c=xstr[i]; ++i; } if (c=='.') { if (i < strlen(xstr)) { c = xstr[i]; //cout << "c" << c ; ++i; while (strchr("0123456789",c) != NULL) { numstr[j]=c;++j; if (i >=strlen(xstr)) break; c=xstr[i]; ++i; } } else { cout << "wrong number format at ."; break; } } numstr[j]=0; //cout << "num" << numstr << " " ; size_t dplaces=0; int exp=0; j=0; c = xstr[j]; ++j; while (c != '.') { if (j >= strlen(xstr)) break; c = xstr[j]; ++j; } if (j < strlen(xstr)) { c = xstr[j]; ++j; while (c != 'e') { ++dplaces; ten *= 10; if (j >= strlen(xstr)) break; c = xstr[j]; ++j; } } if (j < strlen(xstr)) { sscanf(xstr+j, "%d", &exp); j=j-2;c = xstr[j]; while (c=='0') { ten/=10; --j; c = xstr[j]; } } dplaces -=exp; if (exp > 0) { for (int i=0; i < exp; ++i) ten /=10; } else if (exp < 0) { for (int i=0; i < exp; ++i) ten *=10; } //double nume = x * (double)ten; } Integer num (numstr); Integer g; #ifdef _LB_CONT_FR double epsi = 1/(double)ten*10; size_t s=10; continuedFractionIn(num, ten, epsi, s, ten); #endif //cout << m << " " << n << " " << num << "/" << ten << "\n"; g = gcd(num,ten); //g =1; Quotient q(num/g,ten/g); if ((m==0)&&(n==0)&&(num==0)) break;//temp fix //M.setEntry(m-1,n-1,q);//temp fix M.setEntry(m,n,q); den[m-1] = lcm(den[m-1],ten/g); } Integer d = 1; for (int i=0; i < den.size(); ++i) { denPrec *=den[i]; d = lcm(d, den[i]); } den[den.size()-1]=d; cout << d << "\n"; for (int i=den.size()-2; i >=0; --i) { den[i]=d*den[i+1]; cout << den[i] << "\n"; } } #undef _LB_CONT_FR // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/rank.C000066400000000000000000000070361274717217100157050ustar00rootroot00000000000000/* * examples/rank.C * * Copyright (C) 2005, 2010 D. Saunders, J-G Dumas * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/rank.C * @example examples/rank.C \brief Rank of sparse matrix over Z or Zp. \ingroup examples */ #include #include #include #include #include #include #include #include #include #include #define SP_STOR SparseMatrixFormat::SparseSeq using namespace LinBox; /// rank or rank mod p int main (int argc, char **argv) { commentator().setMaxDetailLevel (-1); commentator().setMaxDepth (-1); commentator().setReportStream (std::cerr); if (argc < 2 || argc > 3) { std::cerr << "Usage: rank [

]" << std::endl; return -1; } std::ifstream input (argv[1]); if (!input) { std::cerr << "Error opening matrix file: " << argv[1] << std::endl; return -1; } long unsigned int r; Givaro::QField ZZ; LinBox::Timer tim ; tim.clear() ; tim.start(); MatrixStream> ms( ZZ, input ); SparseMatrix, SP_STOR> A ( ms ); tim.stop(); std::cout << "matrix is " << A.rowdim() << " by " << A.coldim() << " (" << tim << ")" << std::endl; tim.clear() ; tim.start(); if (argc == 2) { // rank over the rational numbers. /* We could pick a random prime and work mod that prime, But * the point here is that the rank function in solutions/ * handles that issue. Our matrix here is an integer or * rational matrix and our concept is that we are getting the * rank of that matrix by some blackbox magic inside linbox. */ LinBox::rank (r, A); } if (argc == 3) { // rank mod a prime uint32_t q = atoi(argv[2]); if (q == 0) { std::cerr << "second argument should be a non-zero integer or missing\n"; return -1; } typedef Givaro::Modular Field; Field F(q); if (q > F.maxCardinality()) { std::cerr << "your number is too big for this field" << std::endl; return -1 ; } SparseMatrix B (F, A.rowdim(), A.coldim());// modular image of A MatrixHom::map(B, A); std::cout << "matrix is " << B.rowdim() << " by " << B.coldim() << std::endl; //if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(std::cout) << std::endl; // Using the adaptive LinBox Solution LinBox::rank(r,B); } tim.stop(); std::cout << "Rank is " << r << " (" << tim << " )" << std::endl; return 0; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/rr.C000066400000000000000000000052771274717217100154020ustar00rootroot00000000000000 /* * examples/rr.C * * Copyright (C) 2008, 2010 A. Urbanska * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file examples/rr.C * @example examples/rr.C * @ingroup examples * @brief Rational Reconstruction. */ #include #include #include #include #include #include using namespace LinBox; using namespace std; typedef Givaro::ZRing Ints; //typedef Ints::Element Integer; int main (int argc, char **argv) { srand48( time(NULL) ); integer a,b; integer x(1); integer m(1); x = x*rand()*rand()*rand()*rand()*rand()*rand(); m = m*rand()*rand()*rand()*rand()*rand()*rand()*rand()*rand(); if (x > m) {integer t=x; x=m; m=t;} cout << "Searching a,b: a =" << x << "b mod " << m << endl << flush; cout << "size of m" << m.bitsize() << endl << flush; Ints Z; WangClassicRationalReconstruction RRB(Z,true,false); //RationalReconstruction > RR(RRB); //RationalReconstruction > RR(Z); //RationalReconstruction > RR(Z); RationalReconstruction > RR(Z); LinBox::UserTimer t; t.clear(); t.start(); for (int i=0; i < 1 ; ++i) { if (RR.reconstructRational(a,b,x,m,5)) { cout << "Found a,b: "<< a <<"=" << x << "x" << b << " mod " << m << endl << flush; cout << "Does agree with bounds\n"; } else { cout << "Found a,b: "<< a <<"=" << x << "x" << b << " mod " << m << endl << flush; cout << "Does not agree with bounds\n"; } } t.stop(); cout << "Time:"; t.print(cout); cout << endl; return 0 ; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/samplebb.C000066400000000000000000000154631274717217100165420ustar00rootroot00000000000000 /* * examples/samplebb.C * * Copyright (C) 2005, 2010 D Saunders * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/samplebb.C * @example examples/samplebb.C * \ingroup examples * \brief generate an example matrix with specified frobenius form. * * samplebb takes options and any number of argument triples denoting companion * matrix blocks. * For example, the call "samplebb -r 7 2 3 a3 1 1" generates a sparsely * randomized matrix (because of the '-r' option) matrix which is similar * (because of the two triples '7 2 3' and 'a2 1 1') to a direct sum of 3 * companion matrices for (x-7)^2 plus one companion matrix for x^3 + x + 2, the * polynomial denoted by 'a3'. * * In general, in the first position of each triple 'aK' denotes the polynomial * x^k + x + K-1 and a number n denotes the polynomial x-n. The second number * in the triple specifies a power of the polynomial and the third specifies how * many companion matrix blocks for that power of that polynomial. * * Possible options are * -r lightly randomized similarity transform, matrix remains sparse. * -R fully randomized similarity transform, matrix becomes dense. * * The matrix is written to standard out in SMS format (triples). * * For some other examples: * "samplebb 1 1 2 2 1 2 4 1 2 12 1 1 0 1 1" is a 8 by 8 diagonal matrix in smith form, * diag(1,1,2,2,4,4,12,0) * */ #include #include #include #include #include #include #include #include #include #include using std::string; using std::list; using LinBox::Companion; using LinBox::DirectSum; using LinBox::DenseMatrix; using LinBox::NTL_ZZ; using NTL::ZZX; void stripOptions(int& acp, char* avp[], string& opts, const int ac, char** av) { acp = 0; for (int i = 1; i < ac; ++i) { //std::cout << av[i] << " "; if (av[i][0] == '-') { for (const char* j = av[i]+1; *j != 0; ++j) opts.push_back(*j); } else { avp[acp] = av[i]; ++acp; } } } template void augmentBB(List& L, char* code, int e, int k, const Ring& R) { typedef typename Ring::Element Int; Int a; ZZX p; // build poly p if ( *code != 'a') // build linear poly { R.init(a, -atoi(code)); p += ZZX(0, a); p += ZZX(1, R.one); } else // build long poly { int n = atoi(code+1); R.init(a, n-1); p += ZZX(n, R.one); p += ZZX(1, R.one); p += ZZX(0, a); } //std::cout << "(code, e, k) =(" << code << ", " << e << ", " << k << ")" << std::endl; //std::cout << "Correspoding poly: " << p << std::endl; // compute q = p^e ZZX q(0, R.one); for(int i = 0; i < e; ++i) q *= p; //std::cout <<"Polynomial: " << q << std::endl; LinBox::DenseVector v(R,deg(q)+1); for (int i = 0; i < v.size(); ++i) v[i] = coeff(q, i); // companion matrix of q Companion* C = new Companion(R, v); for(int i = 0; i < k; ++i) L.push_back(C); } template < class Ring > void scramble(DenseMatrix& M) { Ring R = M.field(); int N,n = M.rowdim(); // number of random basic row and col ops. N = 2*n; for (int k = 0; k < N; ++k) { int i = rand()%M.rowdim(); int j = rand()%M.coldim(); if (i == j) continue; // M*i += alpha M*j and Mj* -= alpha Mi* typename Ring::Element alpha, beta, x; R.init(alpha, rand()%5 - 2); R.neg(beta, alpha); for (size_t l = 0; l < M.rowdim(); ++l) if (!R.isZero(alpha)) { R.mul(x, alpha, M[l][j]); R.addin(M[l][i], x); } for (size_t l = 0; l < M.rowdim(); ++l) if (!R.isZero(alpha)) { R.mul(x, beta, M[i][l]); R.addin(M[j][l], x); } } /* std::ofstream out("matrix", std::ios::out); //M. write(std::cout); out << n << " " << n << "\n"; for (int i = 0; i < n; ++ i) { for ( int j = 0; j < n; ++ j) { R. write(out, M[i][j]); out << " "; } out << "\n"; } */ } template void printMatrix (const Matrix& A) { int m = A. rowdim(); int n = A. coldim(); typedef typename Matrix::Field Ring; typedef typename Ring::Element Element; const Ring &r = A.field(); LinBox::DenseVector x(r,m), y(r,n); std::cout << m << " " << n << " M" << std::endl; typename LinBox::DenseVector::iterator y_p; for (int i = 0; i < m; ++ i) { r. assign (x[i], r.one); A. applyTranspose(y, x); for(y_p = y. begin(); y_p != y. end(); ++ y_p) if (! r.isZero(*y_p)) std::cout << i+1 << " " << y_p - y.begin() + 1 << " " << *y_p << std::endl; r. assign (x[i], r.zero); } std::cout << "0 0 0" << std::endl; } int main(int ac, char* av[]) { if (ac < 2) { std::cout << "usage: " << av[0] << " options block-groups." << std::endl; std::cout << av[0] << " -r 1 2 3 a4 1 1" << std::endl; std::cout << "for lightly randomized matrix similar to direct sum of 3 copies of companion " << std::endl << "matrix of (x-1)^2 and one copy of companion matrix of (x^4 + x + 3)^1." << std::endl; } typedef NTL_ZZ Ring; Ring Z; typedef Companion BB; int acp; char* avp[ac]; string opts; stripOptions(acp, avp, opts, ac, av); //std::cout << "number of triples: " << acp << std::endl; //for (int i = 0; i < acp; ++ i) // std::cout << avp[i]; //std::cout << std::endl; //std::cout << "Begin to ....\n"; list L; for (int i = 0; i < acp; i += 3) augmentBB(L, avp[i], atoi(avp[i+1]), atoi(avp[i+2]), Z); DirectSum A(L); //std::cout <<"Option: " << opts.c_str() << std::endl; if (opts.size() >= 1) { if (opts[0] == 'r') { // into sparse matrix, then 3n row ops with corresponding col ops DenseMatrix B(Z,A.rowdim(), A.coldim()); //MatrixDomain MD(Z); LinBox::MatrixHom::map (B, A); scramble(B); printMatrix(B); // delete B; } if (opts[0] == 'R') { throw LinBox::NotImplementedYet(); } // into dense matrix, then many row ops //... } else { printMatrix (A); } return 0 ; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/smith.C000066400000000000000000000366711274717217100161050ustar00rootroot00000000000000/* * examples/smith.C * * Copyright (C) 2005, 2010 D. Saunders, Z. Wang, J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/smith.C * @example examples/smith.C \brief mod m Smith form by elmination \ingroup examples \author bds & zw Various Smith form algorithms may be used for matrices over the integers or over Z_m. Moduli greater than 2^32 are not supported. Several types of example matrices may be constructed or matrix read from file. Run the program with no arguments for a synopsis of the command line parameters. For the "adaptive" method, the matrix must be over the integers. This is expected to work best for large matrices. For the "2local" method, the computaattion is done mod 2^32. For the "local" method, the modulus must be a prime power. For the "ilio" method, the modulus may be arbitrary composite. If the modulus is a multiple of the integer determinant, the intege Smith form is obtained. Determinant plus ilio may be best for smaller matrices. This example was used during the design process of the adaptive algorithm. */ #include #include #include #include #include using namespace std; #include #include #include #include #include #include #include #include #include using namespace LinBox; // #ifndef BIG template void Mat(DenseMatrix& M, PIR& R, int n, string src, string file, string format); template void distinct (I1 a, I1 b, Lp& c); template void display(I b, I e); int main(int argc, char* argv[]) { typedef PIRModular PIR; if (argc < 5) { cout << "usage: " << argv[0] << " alg m n source format \n" << endl; cout << "alg = `adaptive', `ilio', `local', or `2local', \n" << "m is modulus (ignored by 2local, adaptive), " << "n is matrix order, \n" << "source is `random', `random-rough', `fib', `tref', or a filename \n" << "format is `dense' or `sparse' (if matrix from a file)\n" << "compile with -DBIG if you want big integers used.\n"; return 0; } string algo = argv[1]; unsigned long m = atoi(argv[2]); int n = atoi(argv[3]); string src = argv[4]; string file = src; string format = (argc >= 6 ? argv[5] : ""); UserTimer T; if (algo == "adaptive") { typedef Givaro::ZRing Ints; Ints Z; DenseMatrix M(Z); std::ifstream input (file); //MatrixStream ms(Z, input); M.read(input); //Mat(M, Z, n, src, file, format); DenseVector > v(Z,(size_t)n); T.start(); SmithFormAdaptive::smithForm(v, M); T.stop(); list > p; distinct(v.begin(), v.end(), p); cout << "#"; display(p.begin(), p.end()); cout << "# adaptive, Ints, n = " << n << endl; cout << "T" << n << "adaptive" << m << " := "; } else if (algo == "ilio") { PIR R( (int32_t)m); DenseMatrix M(R); Mat(M, R, n, src, file, format); T.start(); SmithFormIliopoulos::smithFormIn (M); T.stop(); typedef list< PIR::Element > List; List L; for (size_t i = 0; i < M.rowdim(); ++i) L.push_back(M[(size_t)i][(size_t)i]); list > p; distinct(L.begin(), L.end(), p); cout << "#"; display(p.begin(), p.end()); cout << "# ilio, PIR-Modular-int32_t(" << m << "), n = " << n << endl; cout << "T" << n << "ilio" << m << " := "; } else if (algo == "local") { // m must be a prime power if (format == "sparse" ) { typedef Givaro::Modular Field; Field F(m); std::ifstream input (argv[4]); if (!input) { std::cerr << "Error opening matrix file: " << argv[1] << std::endl; return -1; } MatrixStream ms( F, input ); SparseMatrix B (ms); std::cout << "B is " << B.rowdim() << " by " << B.coldim() << std::endl; if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(std::cout) << std::endl; Integer p(m), im(m); // Should better ask user to give the prime !!! Givaro::IntPrimeDom IPD; for(unsigned int k = 2; ( ( ! IPD.isprime(p) ) && (p > 1) ); ++k) Givaro::root( p, im, k ); // using Sparse Elimination LinBox::PowerGaussDomain< Field > PGD( F ); std::vector > local; PGD(local, B, (int32_t)m, (int32_t)p); typedef list< Field::Element > List; List L; for ( auto p_it = local.begin(); p_it != local.end(); ++p_it) { for(size_t i = 0; i < (size_t) p_it->first; ++i) L.push_back((Field::Element)p_it->second); } size_t M = (B.rowdim() > B.coldim() ? B.coldim() : B.rowdim()); for (size_t i = L.size(); i < M; ++i) L.push_back(0); list > pl; distinct(L.begin(), L.end(), pl); std::cout << "#"; //display(local.begin(), local.end()); display(pl.begin(), pl.end()); cout << "# local, PowerGaussDomain(" << M << "), n = " << n << endl; } else { PIR R( (int32_t)m); DenseMatrix M(R); Mat(M, R, n, src, file, format); typedef list< PIR::Element > List; List L; SmithFormLocal SmithForm; T.start(); SmithForm( L, M, R ); T.stop(); list > p; distinct(L.begin(), L.end(), p); cout << "#"; display(p.begin(), p.end()); cout << "# local, PIR-Modular-int32_t(" << m << "), n = " << n << endl; } cout << "T" << n << "local" << m << " := "; } else if (algo == "2local") { Local2_32 R; DenseMatrix M(R); Mat(M, R, n, src, file, format); typedef list< Local2_32::Element > List; List L; SmithFormLocal SmithForm; T.start(); SmithForm( L, M, R ); T.stop(); list > p; distinct(L.begin(), L.end(), p); cout << "#"; display(p.begin(), p.end()); cout << "# 2local, Local2_32, n = " << n << endl; cout << "T" << n << "local2_32 := "; } else { printf ("Unknown algorithms\n"); exit (-1); } T.print(cout); cout << ";" << endl; return 0 ; } template < class Ring > void scramble(DenseMatrix& M) { Ring R = M.field(); int N,n = (int)M.rowdim(); // number of random basic row and col ops. N = n; for (int k = 0; k < N; ++k) { int i = rand()%(int)M.rowdim(); int j = rand()%(int)M.coldim(); if (i == j) continue; // M*i += alpha M*j and Mi* += beta Mj //int a = rand()%2; int a = 0; for (size_t l = 0; l < M.rowdim(); ++l) { if (a) R.subin(M[(size_t)l][(size_t)i], M[(size_t)l][(size_t)j]); else R.addin(M[(size_t)l][(size_t)i], M[(size_t)l][(size_t)j]); //K.axpy(c, M.getEntry(l, i), x, M.getEntry(l, j)); //M.setEntry(l, i, c); } //a = rand()%2; for (size_t l = 0; l < M.coldim(); ++l) { if (a) R.subin(M[(size_t)i][l], M[(size_t)j][l]); else R.addin(M[(size_t)i][l], M[(size_t)j][l]); } } std::ofstream out("matrix", std::ios::out); out << n << " " << n << "\n"; for (int i = 0; i < n; ++ i) { for ( int j = 0; j < n; ++ j) { R. write(out, M[(size_t)i][(size_t)j]); out << " "; } out << "\n"; } //} } // This mat will have s, near sqrt(n), distinct invariant factors, // each repeated twice), involving the s primes 101, 103, ... template void RandomRoughMat(DenseMatrix& M, PIR& R, int n) { M.resize((size_t)n, (size_t)n, R.zero); if (n > 10000) {cerr << "n too big" << endl; exit(-1);} int jth_factor[130] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733}; for (int j= 0, i = 0 ; i < n; ++j) { typename PIR::Element v; R.init(v, jth_factor[25+j]); for (int k = j ; k > 0 && i < n ; --k) { M[(size_t)i][(size_t)i] = v; ++i; if (i < n) {M[(size_t)i][(size_t)i] = v; ++i;} } } scramble(M); } // This mat will have the same nontrivial invariant factors as // diag(1,2,3,5,8, ... 999, 0, 1, 2, ...). template void RandomFromDiagMat(DenseMatrix& M, PIR& R, int n) { M.resize((size_t)n,(size_t) n, R.zero); for (int i= 0 ; i < n; ++i) R.init(M[(size_t)i][(size_t)i], i % 1000 + 1); scramble(M); } // This mat will have the same nontrivial invariant factors as // diag(1,2,3,5,8, ... fib(k)), where k is about sqrt(n). // The basic matrix is block diagonal with i-th block of order i and // being a tridiagonal {-1,0,1} matrix whose snf = diag(i-1 1's, fib(i)), // where fib(1) = 1, fib(2) = 2. But note that, depending on n, // the last block may be truncated, thus repeating an earlier fibonacci number. template void RandomFibMat(DenseMatrix& M, PIR& R, int n) { M.resize((size_t)n,(size_t) n, R.zero); typename PIR::Element pmone; R.assign(pmone, R.one); for (int i= 0 ; i < n; ++i) M[(size_t)i][(size_t)i] = R.one; int j = 1, k = 0; for (int i= 0 ; i < n-1; ++i) { if ( i == k) { M[(size_t)i][(size_t)i+1] = R.zero; k += ++j; } else { M[(size_t)i][(size_t)i+1] = pmone; R.negin(pmone); } R.neg(M[(size_t)i+1][(size_t)i], M[(size_t)i][(size_t)i+1]); } scramble(M); } ////////////////////////////////// // special mats tref and krat // Trefethen's challenge #7 mat (primes on diag, 1's on 2^e bands). template void TrefMat(DenseMatrix& M, PIR& R, int n) { M.resize((size_t)n, (size_t)n, R.zero); std::vector power2; int i = 1; do { power2. push_back(i); i *= 2; } while (i < n); std::ifstream in ("prime", std::ios::in); for ( i = 0; i < n; ++ i) in >> M[(size_t)i][(size_t)i]; std::vector::iterator p; for ( i = 0; i < n; ++ i) { for ( p = power2. begin(); (p != power2. end()) && (*p <= i); ++ p) M[(size_t)i][(size_t)(i - *p)] = 1; for ( p = power2. begin(); (p != power2. end()) && (*p < n - i); ++ p) M[(size_t)i][(size_t)(i + *p)] = 1; } } //// end tref /////// begin krat ///////////////////////////// struct pwrlist { vector m; pwrlist(integer q) { m.push_back(1); m.push_back(q); //cout << "pwrlist " << m[0] << " " << m[1] << endl; } integer operator[](int e) { for (int i = (int)m.size(); i <= e; ++i) m.push_back(m[1]*m[(size_t)i-1]); return m[(size_t)e]; } }; // Read "1" or "q" or "q^e", for some (small) exponent e. // Return value of the power of q at q = _q. template num& qread(num& Val, pwrlist& M, istream& in) { char c; in >> c; // next nonwhitespace if (c == '0') return Val = 0; if (c == '1') return Val = 1; if (c != 'p' && c != 'q') { cout << "exiting due to unknown char " << c << endl; exit(-1);} in.get(c); if (c !='^') {in.putback(c); return Val = M[1];} else { int expt; in >> expt; return Val = M[expt]; }; } template void KratMat(DenseMatrix& M, PIR& R, int q, istream& in) { pwrlist pwrs(q); for (unsigned int i = 0; i < M.rowdim(); ++ i) for ( unsigned int j = 0; j < M.coldim(); ++ j) { int Val; qread(Val, pwrs, in); R. init (M[(size_t)i][(size_t)j], Val); } } ///// end krat //////////////////////////// //! @bug this already exists elsewhere template void distinct (I1 a, I1 b, Lp& c) { typename iterator_traits::value_type e; size_t count = 0; if (a != b) {e = *a; ++a; count = 1;} else return; while (a != b) { if (*a == e) ++count; else { c.push_back(typename Lp::value_type(e, count)); e = *a; count = 1; } ++a; } c.push_back(typename Lp::value_type(e, count)); return; } template void display(I b, I e) { cout << "("; for (I p = b; p != e; ++p) cout << p->first << " " << p->second << ", "; cout << ")" << endl; } /** Output matrix is determined by src which may be: "random-rough" This mat will have s, near sqrt(n), distinct invariant factors, each repeated twice), involving the s primes 101, 103, ... "random" This mat will have the same nontrivial invariant factors as diag(1,2,3,5,8, ... 999, 0, 1, 2, ...). "fib" This mat will have the same nontrivial invariant factors as diag(1,2,3,5,8, ... fib(k)), where k is about sqrt(n). The basic matrix is block diagonal with i-th block of order i and being a tridiagonal {-1,0,1} matrix whose snf = diag(i-1 1's, fib(i)), where fib(1) = 1, fib(2) = 2. But note that, depending on n, the last block may be truncated, thus repeating an earlier fibonacci number. "file" (or any other string) mat read from named file with format "sparse" or "dense". Also "tref" and file with format "kdense" */ template void Mat(DenseMatrix& M, PIR& R, int n, string src, string file, string format) { if (src == "random-rough") RandomRoughMat(M, R, n); else if (src == "random") RandomFromDiagMat(M, R, n); else if (src == "fib") RandomFibMat(M, R, n); else if (src == "tref") TrefMat(M, R, n); else // from file { int rdim, cdim; std::ifstream in (file.c_str(), std::ios::in); if (! in) { cerr << "error: unable to open file" << endl; exit(-1); } in >> rdim >> cdim; M. resize ((size_t)rdim, (size_t)cdim); integer Val; if (format == "dense" ) { for (int i = 0; i < rdim; ++ i) for ( int j = 0; j < cdim; ++ j) { in >> Val; R. init (M[(size_t)i][(size_t)j], Val); } } else if (format == "sparse") { int i, j; char mark; in >> mark; LinBox::integer val; do { in >> i >> j; in. ignore (1); in >> val; if ( i == 0) break; R. init (M[(size_t)i-1][(size_t)j-1], val); } while (true); } //Krattenthaler's q^e matrices, given by exponent else if (format == "kdense") KratMat(M, R, n, in); else { cout << "Format: " << format << " Unknown\n"; exit (-1); } } /*show some entries for (int k = 0; k < 10; ++k) cout << M.getEntry(0,k) << " " << M.getEntry(M.rowdim()-1, M.coldim()-1 - k) << endl; cout << endl << M.rowdim() << " " << M.coldim() << endl; */ /* some row ops and some col ops */ } // Mat //@} // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/smithvalence.C000066400000000000000000000147271274717217100174410ustar00rootroot00000000000000/* * examples/smithvalence.C * * Copyright (C) 2010 J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/smithvalence.C * @example examples/smithvalence.C \brief Valence of sparse matrix over Z or Zp. \ingroup examples */ #include #include #include "smithvalence.h" using namespace LinBox; int main (int argc, char **argv) { commentator().setMaxDetailLevel (-1); commentator().setMaxDepth (-1); commentator().setReportStream (std::cerr); if (argc < 2 || argc > 4) { std::cerr << "Usage: smithvalence [-ata|-aat|valence] [coprime]" << std::endl; std::cerr << " Optional parameters valence and coprime are integers." << std::endl; std::cerr << " Prime factors of valence will be used for local computation." << std::endl; std::cerr << " coprime will be used for overall rank computation." << std::endl; return -1; } std::ifstream input (argv[1]); if (!input) { std::cerr << "Error opening matrix file " << argv[1] << std::endl; return -1; } Givaro::ZRing ZZ; MatrixStream< Givaro::ZRing > ms( ZZ, input ); typedef SparseMatrix > Blackbox; Blackbox A (ms); input.close(); std::cout << "A is " << A.rowdim() << " by " << A.coldim() << std::endl; Givaro::ZRing::Element val_A; Givaro::Timer chrono; chrono.start(); if (argc >= 3) { Transpose T(&A); if (strcmp(argv[2],"-ata") == 0) { Compose< Transpose, Blackbox > C (&T, &A); std::cout << "A^T A is " << C.rowdim() << " by " << C.coldim() << std::endl; valence(val_A, C); } else if (strcmp(argv[2],"-aat") == 0) { Compose< Blackbox, Transpose > C (&A, &T); std::cout << "A A^T is " << C.rowdim() << " by " << C.coldim() << std::endl; valence(val_A, C); } else { std::cout << "Suppose primes are contained in " << argv[2] << std::endl; val_A = integer(argv[2]); } } else { if (A.rowdim() != A.coldim()) { std::cerr << "Valence works only on square matrices, try either to change the dimension in the matrix file, or to compute the valence of A A^T or A^T A, via the -aat or -ata options." << std::endl; exit(0); } else valence (val_A, A); } std::cout << "Valence is " << val_A << std::endl; std::vector Moduli; std::vector exponents; Givaro::IntFactorDom<> FTD; typedef std::pair PairIntRk; std::vector< PairIntRk > smith; integer coprimeV=2; if (argc >= 4) { coprimeV = integer(argv[3]); } while ( gcd(val_A,coprimeV) > 1 ) { FTD.nextprimein(coprimeV); } if (argc >= 4) { std::cout << "Suppose " << argv[3] << " is coprime with Smith form" << std::endl; } std::cout << "integer rank: " << std::endl; unsigned long coprimeR; LRank(coprimeR, argv[1], coprimeV); smith.push_back(PairIntRk(coprimeV, coprimeR)); // std::cerr << "Rank mod " << coprimeV << " is " << coprimeR << std::endl; std::cout << "Some factors (5000 factoring loop bound): "; FTD.set(Moduli, exponents, val_A, 5000); std::vector::const_iterator eit=exponents.begin(); for(std::vector::const_iterator mit=Moduli.begin(); mit != Moduli.end(); ++mit,++eit) std::cout << *mit << '^' << *eit << ' '; std::cout << std::endl; std::vector SmithDiagonal(coprimeR,integer(1)); for(std::vector::const_iterator mit=Moduli.begin(); mit != Moduli.end(); ++mit) { unsigned long r; LRank(r, argv[1], *mit); // std::cerr << "Rank mod " << *mit << " is " << r << std::endl; smith.push_back(PairIntRk(*mit, r)); for(size_t i=r; i < coprimeR; ++i) SmithDiagonal[i] *= *mit; } eit=exponents.begin(); std::vector::const_iterator sit=smith.begin(); for( ++sit; sit != smith.end(); ++sit, ++eit) { if (sit->second != coprimeR) { std::vector ranks; ranks.push_back(sit->second); size_t effexp; if (*eit > 1) { PRank(ranks, effexp, argv[1], sit->first, *eit, coprimeR); } else { PRank(ranks, effexp, argv[1], sit->first, 2, coprimeR); } if (ranks.size() == 1) ranks.push_back(coprimeR); if (effexp < *eit) { for(size_t expo = effexp<<1; ranks.back() < coprimeR; expo<<=1) { PRankInteger(ranks, argv[1], sit->first, expo, coprimeR); } } else { for(size_t expo = (*eit)<<1; ranks.back() < coprimeR; expo<<=1) { PRank(ranks, effexp, argv[1], sit->first, expo, coprimeR); if (ranks.size() < expo) { std::cerr << "It seems we need a larger prime power, it will take longer ..." << std::endl; // break; PRankInteger(ranks, argv[1], sit->first, expo, coprimeR); } } } std::vector::const_iterator rit=ranks.begin(); // unsigned long modrank = *rit; for(++rit; rit!= ranks.end(); ++rit) { if ((*rit)>= coprimeR) break; for(size_t i=(*rit); i < coprimeR; ++i) SmithDiagonal[i] *= sit->first; // modrank = *rit; } } } integer si=1; size_t num=0; for( std::vector::const_iterator dit=SmithDiagonal.begin(); dit != SmithDiagonal.end(); ++dit) { if (*dit == si) ++num; else { if (num > 0) std::cerr << '[' << si << ',' << num << "] "; num=1; si = *dit; } } std::cerr << '[' << si << ',' << num << "] " << std::endl; chrono.stop(); std::cerr << chrono << std::endl; return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/smithvalence.h000066400000000000000000000176441274717217100175070ustar00rootroot00000000000000/* * examples/smithvalence.h * Copyright (c) Linbox * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/smithvalence.h * @example examples/smithvalence.h \brief Valence of sparse matrix over Z or Zp. \ingroup examples */ #include #include #include #include #include #include #include #include #include #include #include #include #include template unsigned long& TempLRank(unsigned long& r, char * filename, const Field& F) { std::ifstream input(filename); LinBox::MatrixStream< Field > msf( F, input ); LinBox::SparseMatrix FA(msf); input.close(); LinBox::Timer tim; tim.start(); LinBox::rankin(r, FA); tim.stop(); F.write(std::cerr << "Rank over ") << " is " << r << ' ' << tim << std::endl; return r; } unsigned long& TempLRank(unsigned long& r, char * filename, const LinBox::GF2& F2) { std::ifstream input(filename); LinBox::ZeroOne A; A.read(input); input.close(); LinBox::Timer tim; tim.start(); LinBox::rankin(r, A, LinBox::Method::SparseElimination() ); tim.stop(); F2.write(std::cerr << "Rank over ") << " is " << r << ' ' << tim << std::endl; return r; } unsigned long& LRank(unsigned long& r, char * filename,Givaro::Integer p) { Givaro::Integer maxmod16; LinBox::FieldTraits >::maxModulus(maxmod16); Givaro::Integer maxmod32; LinBox::FieldTraits >::maxModulus(maxmod32); Givaro::Integer maxmod53; LinBox::FieldTraits >::maxModulus(maxmod53); Givaro::Integer maxmod64; LinBox::FieldTraits >::maxModulus(maxmod64); if (p == 2) { LinBox::GF2 F2; return TempLRank(r, filename, F2); } else if (p <= maxmod16) { typedef Givaro::Modular Field; Field F(p); return TempLRank(r, filename, F); } else if (p <= maxmod32) { typedef Givaro::Modular Field; Field F(p); return TempLRank(r, filename, F); } else if (p <= maxmod53) { typedef Givaro::Modular Field; Field F(p); return TempLRank(r, filename, F); } else if (p <= maxmod64) { typedef Givaro::Modular Field; Field F(p); return TempLRank(r, filename, F); } else { typedef Givaro::Modular Field; Field F(p); return TempLRank(r, filename, F); } return r; } std::vector& PRank(std::vector& ranks, size_t& effective_exponent, char * filename,Givaro::Integer p, size_t e, size_t intr) { effective_exponent = e; Givaro::Integer maxmod; LinBox::FieldTraits >::maxModulus(maxmod); if (p <= maxmod) { typedef Givaro::Modular Ring; int64_t lp(p); Givaro::Integer q = pow(p,uint64_t(e)); int64_t lq(q); if (q >Givaro::Integer(lq)) { std::cerr << "Power rank might need extra large composite (" << p << '^' << e << ")." << std::endl; q = p; for(effective_exponent=1; q <= Ring::maxCardinality(); ++effective_exponent) { q *= p; } q/=p; --effective_exponent; lq = (int64_t)q; std::cerr << "First trying: " << lq << " (=" << p << '^' << effective_exponent << ", without further warning this will be sufficient)." << std::endl; } Ring F(lq); std::ifstream input(filename); LinBox::MatrixStream ms( F, input ); LinBox::SparseMatrix A (ms); input.close(); LinBox::PowerGaussDomain< Ring > PGD( F ); LinBox::Timer tim; tim.clear(); tim.start(); PGD.prime_power_rankin( lq, lp, ranks, A, A.rowdim(), A.coldim(), std::vector()); tim.stop(); F.write(std::cerr << "Ranks over ") << " are " ; for(std::vector::const_iterator rit=ranks.begin(); rit != ranks.end(); ++rit) std::cerr << *rit << ' '; std::cerr << ' ' << tim << std::endl; } else { std::cerr << "*** WARNING *** Sorry power rank mod large composite not yet implemented" << std::endl; std::cerr << "*** WARNING *** Assuming integer rank, extra factors in the Smith form could be missing" << std::endl; ranks.resize(0); ranks.push_back(intr); } return ranks; } #include std::vector& PRankPowerOfTwo(std::vector& ranks, size_t& effective_exponent, char * filename, size_t e, size_t intr) { effective_exponent = e; if (e > 63) { std::cerr << "Power rank power of two might need extra large composite (2^" << e << ")." << std::endl; std::cerr << "First trying: 63, without further warning this will be sufficient)." << std::endl; effective_exponent = 63; } std::ifstream input(filename); typedef Givaro::ZRing Ring; Ring F; LinBox::MatrixStream ms( F, input ); LinBox::SparseMatrix A (ms); input.close(); LinBox::PowerGaussDomainPowerOfTwo< uint64_t > PGD; LinBox::Timer tim; tim.clear(); tim.start(); PGD.prime_power_rankin( effective_exponent, ranks, A, A.rowdim(), A.coldim(), std::vector()); tim.stop(); std::cerr << "Ranks over 2^" << effective_exponent << " are " ; for(std::vector::const_iterator rit=ranks.begin(); rit != ranks.end(); ++rit) std::cerr << *rit << ' '; std::cerr << ' ' << tim << std::endl; return ranks; } std::vector& PRankInteger(std::vector& ranks, char * filename,Givaro::Integer p, size_t e, size_t intr) { typedef Givaro::Modular Ring; Givaro::Integer q = pow(p,uint64_t(e)); Ring F(q); std::ifstream input(filename); LinBox::MatrixStream ms( F, input ); LinBox::SparseMatrix A (ms); input.close(); LinBox::PowerGaussDomain< Ring > PGD( F ); LinBox::Timer tim; tim.clear(); tim.start(); PGD.prime_power_rankin( q, p, ranks, A, A.rowdim(), A.coldim(), std::vector()); tim.stop(); F.write(std::cerr << "Ranks over ") << " are " ; for(std::vector::const_iterator rit=ranks.begin(); rit != ranks.end(); ++rit) std::cerr << *rit << ' '; std::cerr << ' ' << tim << std::endl; return ranks; } std::vector& PRankIntegerPowerOfTwo(std::vector& ranks, char * filename, size_t e, size_t intr) { typedef Givaro::ZRing Ring; Ring ZZ; std::ifstream input(filename); LinBox::MatrixStream ms( ZZ, input ); LinBox::SparseMatrix A (ms); input.close(); LinBox::PowerGaussDomainPowerOfTwo< Givaro::Integer > PGD; LinBox::Timer tim; tim.clear(); tim.start(); PGD.prime_power_rankin( e, ranks, A, A.rowdim(), A.coldim(), std::vector()); tim.stop(); std::cerr << "Ranks over 2^" << e << " are " ; for(std::vector::const_iterator rit=ranks.begin(); rit != ranks.end(); ++rit) std::cerr << *rit << ' '; std::cerr << ' ' << tim << std::endl; return ranks; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/solve.C000066400000000000000000000077761274717217100161150ustar00rootroot00000000000000/* * examples/solve.C * * Copyright (C) 2005, 2010 J-G Dumas, D. Saunders, P. Giorgi * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** @file examples/solve.C * @ingroup examples * @brief Blackbox solvers. * @warning some are commented out... * @example examples/solve.C */ #include #include #include #include #include #include using namespace LinBox; using namespace std; int main (int argc, char **argv) { if (argc != 4) { cerr << "Usage: solve

" << endl; return 0; } srand48( BaseTimer::seed() ); std::ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file " << argv[1] << endl; return -1; } std::ofstream nsb; nsb.open (argv[2], std::ofstream::out); if (!nsb) { cerr << "Error opening nullspace output file " << argv[2] << endl; return -1; } cout<<"Computation is done over Z/("< Field; double q = atof(argv[3]); typedef DenseVector DenseVector ; Field F(q); MatrixStream< Field > ms ( F, input ); SparseMatrix A (ms); // A.write(std::cout); cout << "A is " << A.rowdim() << " by " << A.coldim() << endl; if (A.rowdim() <= 20 && A.coldim() <= 20) A.write(std::cerr << "A:=",Tag::FileFormat::Maple) << ';' << std::endl; DenseMatrix N(F, A.rowdim(), 15); Timer chrono; // Sparse Elimination chrono.clear(); chrono.start(); GaussDomain GD ( A.field() ); GD.nullspacebasisin(N, A); chrono.stop(); N.write(nsb) << std::endl; std::cout << "CPU time (seconds): " << chrono.usertime() << std::endl<s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/solver/000077500000000000000000000000001274717217100161525ustar00rootroot00000000000000linbox-1.4.2/examples/solver/Makefile.am000066400000000000000000000024601274717217100202100ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # This file is part of LinBox # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ INCLUDES=-I$(top_srcdir) AM_CPPFLAGS=-g $(NTL_CFLAGS) $(ATLAS_CFLAGS) LDADD = $(top_builddir)/linbox/liblinbox.la $(NTL_LIBS) $(ATLAS_LIBS) $(LDFLAGS) EXTRA_PROGRAMS=t-rdisolve t_rdisolve_SOURCES = \ t-rdisolve.C # no /bin if LinBox is uncompiled #LINBOX_BIN=$(LINBOX)/bin LINBOX_BIN=$(bindir) # for compilation of new examples %:%.C $(CXX) $(CPPFLAGS) $*.C -o $* $(shell $(LINBOX_BIN)/linbox-config --cflags --libs) $(LDADD) linbox-1.4.2/examples/solver/t-rdisolve.C000066400000000000000000000375521274717217100203620ustar00rootroot00000000000000/* * examples/solver/t-rdisolve.C * * Copyright (C) 2004, 2005, 2010 D. Pritchard, P. Giorgi * * This file is part of LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 2 of * the License, or (at your option) any later version. * * LinBox 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with LinBox. If not, see * . */ /* linbox/examples/solver/t-rdisolve.C * demo, testing, time-comparison of certified rational/diophantine system solver * * Written by David Pritchard * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #define LIFTING_PROGRESS #define RSTIMING #include "givaro/modular.h" #include "givaro/zring.h" #include "linbox/blackbox/diagonal.h" #include "linbox/algorithms/rational-solver.h" #include "linbox/algorithms/vector-fraction.h" #include "linbox/algorithms/diophantine-solver.h" #include #include #include "linbox/randiter/random-prime.h" #include "linbox/field/unparametric.h" #include "givaro/zring.h" #include "linbox/field/ntl.h" #include "linbox/field/archetype.h" //#include "linbox/field/givaro.h" #include "linbox/vector/vector-domain.h" #include #include "linbox/field/archetype.h" #include "linbox/vector/vector-domain.h" // #include "linbox/../tests/test-common.C" using namespace std; using namespace LinBox; #define random_01() ((double)rand() / ((double)(RAND_MAX)+1)) int n = 5; int c = 5; int defaultPrime = 0; int primeBits = 14; // note: should be <= 15 to use Givaro::Modular int numPrimes = 1; bool useDeterm = true; bool useRandom = false; bool useDiophantine = false; int printStuff = 0; int showTiming = 0; bool useFiles = false; bool sparseMatrix = false; integer eBoundCmd = 1000; double singularProportion = 0; bool inconsistent = false; int useTimer = true; int entrySeed = 12345; int trials = 1; int destroyColumns = 0; bool testPidDouble = false; int levelAsInt = (int)SL_CERTIFIED; static Argument args[] = { { 'n', 0, "Row dimension of test matrix", TYPE_INT, &n }, { 'c', 0, "Column dimension of test matrix (c<=0 => c=n)", TYPE_INT, &c }, { 'm', 0, "Try solving with up to m primes", TYPE_INT, &numPrimes }, { 'q', 0, "Solve first over the field Z/qZ (0: pick randomly)", TYPE_INT, &defaultPrime }, { 'g', 0, "Subsequently generate primes that are g bits long", TYPE_INT, &primeBits }, { 'r', 0, "Set random solving on/off", TYPE_BOOL, &useRandom }, { 'd', 0, "Set deterministic solving on/off", TYPE_BOOL, &useDeterm }, { 'z', 0, "Set diophantine solving on/off", TYPE_BOOL, &useDiophantine }, { 'p', 0, "Print lots of detail, tree levels (0,1,2,3)", TYPE_INT, &printStuff }, { 'f', 0, "Read space-separated data from files td-{A, b}.txt?", TYPE_BOOL, &useFiles}, { 's', 0, "(If f=0N) Say td-A.txt is in sparse format", TYPE_BOOL, &sparseMatrix}, { 'b', 0, "(If f=OFF) Entry bound is (-b, b]", TYPE_INTEGER, &eBoundCmd}, { 'x', 0, "(If f=OFF) Make roughly x*n dependant rows", TYPE_DOUBLE, &singularProportion}, { 'i', 0, "(If f=OFF) Force inconsistent system", TYPE_BOOL, &inconsistent}, { 't', 0, "(If f=OFF) Randomize with timer?", TYPE_BOOL, &useTimer}, { 'w', 0, "(If f=OFF, t=OFF) Randomize with seed w", TYPE_INT, &entrySeed}, { 'e', 0, "Test PID_double", TYPE_BOOL, &testPidDouble}, { 'k', 0, "Repeat trials k times", TYPE_INT, &trials}, { 'l', 0, "Level: 0=Monte Carlo, 1=Las Vegas, 2=Certified", TYPE_INT, &levelAsInt}, { 'o', 0, "Set o columns to zero at random", TYPE_INT, &destroyColumns} }; // 7 more options (yu vs jah) and the whole alphabet is covered int trialCount=0; integer* Aentries; integer* bentries; template int test() { trialCount++; typedef typename Ring::Element RingElement; Ring R; VectorDomain VD (R); typedef typename Vector::Dense Vector; typedef DenseMatrix Matrix; Matrix A(R, n, c); MatrixDomain MD(R); typedef typename Ring::Element Integer; Vector b(n); if (sparseMatrix) { // reading A from td-A.txt file ifstream inA, inb; inA.open("td-A.txt"); A.read(inA); cout << "Matrix is sparse with n="<> b[i]; inb.close(); } else { // reading A from Aentrie vector for (int i=0; i2)) {cout << "b:\n"; VD.write(cout, b);} if (trialCount==1 && (printStuff>2)) {cout << "\nA:\n"; A.write(cout);} Field F(defaultPrime>0 ? defaultPrime : 2); cout << "Testing with Z of type '"; R.write(cout); cout<<"' and Z/pZ of type '"; F.write(cout)<<"'"< QSolver; typedef DiophantineSolver ZSolver; //typedef std::vector > FractionVector; typedef VectorFraction FractionVector; FractionVector x(R,c); int result=0; SolverLevel level = (SolverLevel)levelAsInt; for (int iteration=0; iteration<3; iteration++) { if (iteration==0 && !useDeterm) continue; if (iteration==1 && !useRandom) continue; if (iteration==2 && !useDiophantine) continue; // no more cleaning #if 0 //clear x for (FractionVector::Dense::iterator i=x.begin(); i!=x.end(); i++) { R.assign(i->first, R.zero); R.assign(i->second, R.zero); } #endif QSolver* rsolver; if (defaultPrime == 0) rsolver = new QSolver(R, LinBox::RandomPrime(primeBits)); else rsolver = new QSolver(defaultPrime, R, LinBox::RandomPrime(primeBits)); ZSolver zsolver(*rsolver); SolverReturnStatus s; if (iteration==0) { cout << "Solving deterministically.\n"; s = zsolver.solve(x.numer, x.denom, A, b, numPrimes, level); } else if (iteration==1) { cout << "Solving randomly.\n"; s = zsolver.randomSolve(x.numer, x.denom, A, b, numPrimes, level); } else { cout << "Solving diophantically.\n"; s = zsolver.diophantineSolve(x.numer, x.denom, A, b, numPrimes, level); } cout << "solverReturnStatus: " << solverReturnString[(int)s] << "\n"; #ifdef RSTIMING rsolver->reportTimes(cout); #endif if (s == SS_OK) { VectorFraction red(x); if (printStuff > 0) { if (useDiophantine){ cout<<"Number of system solved : "< tmp.bitsize() ? maxbits: tmp.bitsize()); } R.convert(tmp,x.denom); cout<<"numerators hold over "< 1) { if (useFiles){ ofstream out("td-x.txt"); out<< "Reduced solution: "; red.write(out) << "\n"; out.close(); } else{ cout << "Reduced solution: "; red.write(cout) << "\n"; } } Vector LHS(n), RHS(b); // check that Ax = b, if it thought it was okay MD.vectorMul(LHS, A, red.numer); VD.mulin(RHS, red.denom); if (VD.areEqual(LHS, RHS)) cout << "Ax=b : Yes" << endl; else { cout << "Ax=b : No" << endl; if (level >= SL_LASVEGAS) cout << "ERROR: Las Vegas or Certified solver should never return wrong answer" << endl; } if (iteration==2 && level == SL_CERTIFIED) { // check certificate of minimality z // should satisfy that zA is integral, and den(z.b) == den(y) Integer dp, tmp, denzb; VectorFraction z(zsolver.lastCertificate); R.assign(dp, R.zero); typename Vector::iterator zi = z.numer.begin(); typename Vector::iterator bi = b.begin(); for (; bi != b.end(); bi++, zi++) R.addin(dp, R.mul(tmp, *bi, *zi)); R.gcd(denzb, dp, z.denom); R.div(denzb, z.denom, denzb); VectorFraction tmpvf(x); bool certified = R.areEqual(denzb, tmpvf.denom); if (!certified) cout << "ERROR Failed den(z.b) == den(y)" << endl; bool certified2 = true; Integer* nza = new Integer[c]; //z.numer * A for (int i=0; i cert(zsolver.lastCertificate); if (printStuff > 1) { cout << ": "; cert.write(cout); } cout << endl; std::vector certA(c); if (R.isZero(cert.denom)) cout << "ERROR: Zero denom in inc-certificate. May not have been generated." << endl; Integer certb, tmp; for (int i=0; i int fieldTest() { return 0 //+test() +test, Field>() //+(testPidDouble?test():0) // */ ; }; void testAllFields() { //fieldTest >(); //fieldTest(); //fieldTest >(); //fieldTest >(); fieldTest >(); //fieldTest >(); //broken? //fieldTest >(); //broken? //fieldTest(); //broken? //fieldTest(); // appears to be broken in current build //fieldTest(); // appears to be broken in current build //fieldTest >(); // */ // this takes a long time to compile with all fields // so comment out unused ones when debugging } void genTestData() { bool* auxRow = new bool[n]; int auxRows = 0; for (int i=0; i 0 && auxRows < n) eBound /= (n-auxRows); if (eBound == 0) { cout << "WARNING: 'b' dropped to 0. Changed to 1, try increasing 'b'." << endl; eBound = 1; } Givaro::ZRing Z; Givaro::ZRing::RandIter ri(Z, 2*eBound,entrySeed); //for some reason this iterator tends to give numbers with //large common factors, so we perturb the data a bit bool notRandomEnough = (eBound >> 64) > 0; double bigStuff = ((long long)1)<<25; for (int i=0; i((random_01()-0.5)*bigStuff); } for (int i=0; i((random_01()-0.5)*bigStuff); } int whichInconsistent = (int)(random_01()*auxRows); //make singular rows for (int i=0; i c) { cout << "WARNING, o > c. Lowering o." << endl; columnsToDestroy = c; } for (int i=0; i(time(NULL)); useTimer = false; } writeCommandString (cout, args, argv[0]); if (c <= 0) c += n; if (c <= 0) { cout << "WARNING, c <= -n; resulting column dimension changed from nonpositive value to 1" << endl; c = 1; } if (!sparseMatrix) cout << "Matrix is dense with n="<> bentries[i]; in.close(); in2.open("td-A.txt"); for (int i=0; i> Aentries[i]; in2.close(); } for (int j=0; j < trials; j++) { if (!useFiles) genTestData(); testAllFields(); cout << "finished trial " << (j+1) << " of " << trials << endl; } delete[] Aentries; delete[] bentries; return 0; } //! @todo come up with better test data, so can have a big singular matrix of all 0..9 //! @todo change "probability of dependence" to "set X dependent rows" //! @bug fixme : seems to not work for n >= 10000 // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/sparseelimdet.C000066400000000000000000000061471274717217100176150ustar00rootroot00000000000000/* * examples/sparseelimdet.C * * Copyright (C) 2006, 2010 J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/sparseelimdet.C * @example examples/sparseelimdet.C \brief Gaussian elimination determinant of sparse matrix over Z or Zp. \ingroup examples */ #include #include #include #include #include #include #include #include #include #include using namespace LinBox; using namespace std; int main (int argc, char **argv) { commentator().setMaxDetailLevel (-1); commentator().setMaxDepth (-1); commentator().setReportStream (std::cerr); if (argc < 2 || argc > 3) { cerr << "Usage: sparseelimdet [

]" << endl; return -1; } ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file: " << argv[1] << endl; return -1; } Method::SparseElimination SE; if (argc == 2) { // determinant over the integers. Givaro::ZRing ZZ; SparseMatrix > A ( ZZ ); A.read(input); cout << "A is " << A.rowdim() << " by " << A.coldim() << endl; SE.strategy(Specifier::PIVOT_LINEAR); Givaro::ZRing::Element d; det (d, A, SE); ZZ.write(cout << "Determinant is ", d) << endl; } if (argc == 3) { // determinant over a finite field typedef Givaro::Modular Field; double q = atof(argv[2]); Field F(q); SparseMatrix B (F); B.read(input); cout << "B is " << B.rowdim() << " by " << B.coldim() << endl; if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(cout) << endl; // using Sparse Elimination SE.strategy(Specifier::PIVOT_NONE); Field::Element d; det (d, B, SE); if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(cout) << endl; F.write(cout << "Determinant is ", d) << endl; // using Sparse Elimination with reordering SE.strategy(Specifier::PIVOT_LINEAR); detin (d, B, SE); if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(cout) << endl; F.write(cout << "Determinant is ", d) << endl; } return 0; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/examples/sparseelimrank.C000066400000000000000000000072601274717217100177710ustar00rootroot00000000000000/* * examples/sparseelimrank.C * * Copyright (C) 2006, 2010 J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \file examples/sparseelimrank.C * @example examples/sparseelimrank.C \brief Gaussian elimination Rank of sparse matrix over Z or Zp. \ingroup examples */ #include #include #include #include #include #include #include #include #include #include #include #include using namespace LinBox; using namespace std; int main (int argc, char **argv) { commentator().setMaxDetailLevel (-1); commentator().setMaxDepth (-1); commentator().setReportStream (std::cerr); commentator().setBriefReportStream (std::cout); if (argc < 2 || argc > 3) { cerr << "Usage: rank [

]" << endl; return -1; } ifstream input (argv[1]); if (!input) { cerr << "Error opening matrix file: " << argv[1] << endl; return -1; } long unsigned int r; if (argc == 2) { // rank over the integers. /* We could pick a random prime and work mod that prime, But the point here is that the rank function in solutions/ handles that issue. Our matrix here is an integer matrix and our concept is that we are getting the rank of that matrix by some blackbox magic inside linbox. */ Givaro::QField QQ; MatrixStream> ms( QQ, input ); SparseMatrix, SparseMatrixFormat::SparseSeq > A ( ms ); if (A.rowdim() <= 20 && A.coldim() <= 20) A.write(std::cerr << "A:=",Tag::FileFormat::Maple) << ';' << std::endl; cout << "A is " << A.rowdim() << " by " << A.coldim() << endl; LinBox::rank (r, A, Method::SparseElimination() ); cout << "Z Rank is " << r << endl; } if (argc == 3) { double q = atof(argv[2]); typedef Givaro::Modular Field; Field F(q); MatrixStream ms( F, input ); SparseMatrix B (ms); cout << "B is " << B.rowdim() << " by " << B.coldim() << endl; if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(cout) << endl; Method::SparseElimination SE; // SE.strategy(Specifier::PIVOT_NONE); // // using Sparse Elimination // LinBox::rank (r, B, SE); // if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(cout) << endl; // cout << "Rank is " << r << endl; SE.strategy(Specifier::PIVOT_LINEAR); // using Sparse Elimination LinBox::rankin (r, B, SE); if (B.rowdim() <= 20 && B.coldim() <= 20) B.write(cout) << endl; F.write(cout << "Rank is " << r << " over ") << endl; } return 0; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/examples/test.sh000077500000000000000000000015241274717217100161600ustar00rootroot00000000000000#!/bin/bash # written by Brice Boyer (briceboyer) # part of LinBox, see COPYING SED="sed" case "`uname`" in Darwin*) SED="gsed" ;; esac set -o nounset # Treat unset variables as an error fail() { echo "fail" } success() { echo "ok" } pass="true" echo -n "check rank ... " rank_cmd="Rank\sis\s" ./rank data/test.matrix 7 > linbox-tmp.data result=`cat linbox-tmp.data | grep ${rank_cmd} | $SED 's/'"$rank_cmd"'\([0-9]*\).*/\1/'` [ "$result" -eq "9" ] && success || { fail ; pass="false" ; } echo -n "check rank ... " ./rank data/test.matrix > linbox-tmp.data result=`cat linbox-tmp.data | grep ${rank_cmd} | $SED 's/'"$rank_cmd"'\([0-9]*\).*/\1/'` [ "$result" -eq "10" ] && success || { fail ; pass="false" ; } [ "$pass" == "true" ] && { success ; exit 0 ;} || { fail ; exit 1 ;}; linbox-1.4.2/examples/valence.C000066400000000000000000000056601274717217100163700ustar00rootroot00000000000000/* * examples/valence.C * * Copyright (C) 2005, 2010 J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file examples/valence.C * \brief Valence of sparse matrix over Z or Zp. * \ingroup examples * @example examples/valence.C */ #include #include #include #include #include #include #include #include using namespace LinBox; int main (int argc, char **argv) { commentator().setMaxDetailLevel (-1); commentator().setMaxDepth (-1); commentator().setReportStream (std::cerr); if (argc < 2 || argc > 3) { std::cerr << "Usage: valence [-ata|-aat]" << std::endl; return -1; } std::ifstream input (argv[1]); if (!input) { std::cerr << "Error opening matrix file " << argv[1] << std::endl; return -1; } Givaro::ZRing ZZ; MatrixStream< Givaro::ZRing > ms( ZZ, input ); typedef SparseMatrix > Blackbox; Blackbox A (ms); std::cout << "A is " << A.rowdim() << " by " << A.coldim() << std::endl; Givaro::ZRing::Element val_A; if (argc == 3) { Transpose T(&A); if (strcmp(argv[2],"-aat")) { Compose< Transpose, Blackbox > C (&T, &A); std::cout << "A^T A is " << C.rowdim() << " by " << C.coldim() << std::endl; valence(val_A, C); } else { Compose< Blackbox, Transpose > C (&A, &T); std::cout << "A A^T is " << C.rowdim() << " by " << C.coldim() << std::endl; valence(val_A, C); } } else { if (A.rowdim() != A.coldim()) { std::cerr << "Valence works only on square matrices, try either to change the dimension in the matrix file, or to compute the valence of A A^T or A^T A, via the -aat or -ata options." << std::endl; exit(0); } else valence (val_A, A); } std::cout << "Valence is " << val_A << std::endl; return 0; } // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/incremente-versions000077500000000000000000000063551274717217100167600ustar00rootroot00000000000000#!/bin/csh -f # Copyright(c) 2011 LinBox # Copyright(c)'1994-2009 by The Givaro group # Imported and modified from Givaro's by Brice Boyer (briceboyer) # see the COPYING file for more details. set conf = configure.ac set ver = Makefile.am #verbatim second argument of AC_INIT set verb = `grep ^AC_INIT $conf | cut -d',' -f2` #removes spaces and brackets set vern = `echo "$verb" | sed 's/ //g;s/\[//;s/\]//'` echo "Current version is $vern." echo -n "Increment library version ? (y/n)" set answ = $< if ("$answ" == "y") then set line = `fgrep -n ^AC_INIT $conf | cut -d':' -f1` #gets the line set macro = `echo "$vern" | cut -d'.' -f1` #a version number is macro.minor.micro set minor = `echo "$vern" | cut -d'.' -f2` set micro = `echo "$vern" | cut -d'.' -f3` set tmpfile = `mktemp` #tempfile set sedfile = `mktemp` #temp sed file set pmicro = `echo $micro` @ pmicro ++ set pminor = `echo $minor` @ pminor ++ set pmacro = `echo $macro` @ pmacro ++ echo "Increment micro revision number ($vern -> $macro.$minor.$pmicro) ? press '0' " echo "Increment minor revision number ($vern -> $macro.$pminor.0) ? press '1' " echo -n "Increment macro revision number ($vern -> $pmacro.0.0) ? press '2' " set increm = $< switch ($increm) case 0: set newv = "[$macro.$minor.$pmicro]" breaksw case 1: set newv = "[$macro.$pminor.0]" breaksw case 2: set newv = "[$pmacro.0.0]" breaksw default: set newv = "$verb" echo "'$increm' read. Not incrementing anything." breaksw endsw #replacing [ ] and . with escaped version for sed would understand them as 'operators' echo "$line s/$verb/$newv/" | sed 's/\./\\\./g;s/\[/\\\[/g;s/\]/\\\]/g' > $sedfile sed -f $sedfile $conf > $tmpfile #clean up \rm -f $sedfile #diff for changes diff -u0 $conf $tmpfile #if something was changed, confirm incrementation : if ("$newv" != "$verb") then echo -n "Confirmation of incrementation ? (yes/no)" set answ = $< set backupconf = $conf.back$$ if ("$answ" == "yes") then \cp -p $conf $backupconf echo "Back-up of $conf made in $backupconf. Now overwriting $conf." \mv -f $tmpfile $conf else echo "'$answ' read. Not incrementing anything." \rm -f $tmpfile exit 0 ; endif #now change Makefile accordingly echo -n "Incrementing Makefile revision accordingly" set tmpfile = `mktemp` #tempfile set sedfile = `mktemp` #tempfile switch ($increm) case 0: echo -n "s/VERSION.*/VERSION=$macro.$minor.$pmicro/" >> $sedfile breaksw case 1: echo "s/VERSION.*/VERSION=$macro.$pminor.0/" > $sedfile breaksw case 2: echo "s/VERSION.*/VERSION=$pmacro.0.0/" > $sedfile breaksw default: echo "Something abnormal happened" exit 1 breaksw endsw sed -f $sedfile $ver > $tmpfile \rm -f $sedfile diff -u0 $ver $tmpfile echo -n "Confirmation of incrementation ? (yes/no) " set answ = $< if ("$answ" == "yes") then \mv -f $tmpfile $ver echo " your old $conf is destroyed..." \rm -f $backupconf else echo "'$answ' read. Not incrementing anything." echo " your old $conf is restored..." \rm -f $tmpfile \mv -f $backupconf $conf exit 0 endif endif else echo "'$answ' read. Not doing anything." endif exit 0 linbox-1.4.2/interfaces/000077500000000000000000000000001274717217100151455ustar00rootroot00000000000000linbox-1.4.2/interfaces/Makefile.am000066400000000000000000000016001274717217100171760ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== SUBDIRS=driver kaapi maple sage linbox-1.4.2/interfaces/driver/000077500000000000000000000000001274717217100164405ustar00rootroot00000000000000linbox-1.4.2/interfaces/driver/Makefile.am000066400000000000000000000050441274717217100204770ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group #========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== if LINBOX_COMPILE_DRIVERS pkgincludesubdir=$(includedir)/interfaces/driver AM_CPPFLAGS=-I$(top_srcdir) -I. -I../../linbox AM_CXXFLAGS = @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR #ifdef HAVE_NTL AM_CXXFLAGS +=$(NTL_CFLAGS) #endif #LDADD= $(GMP_LIBS) $(NTL_LIBS) $(MAPLE_LIBS) "../../linbox/liblinbox.la -z muldefs" lib_LTLIBRARIES=liblbdriver.la liblbdriver_la_SOURCES= lb-element.C \ lb-domain.C \ lb-vector.C \ lb-polynomial.C \ lb-det.C \ lb-rank.C \ lb-garbage.C \ lb-minpoly.C \ lb-blackbox.C \ lb-charpoly.C # \ # lb-solve.C liblbdriver_la_LDFLAGS= $(NTL_LIBS) $(LDFLAGS) $(top_srcdir)/linbox/liblinbox.la -Wl,-zmuldefs pkginclude_HEADERS=\ lb-driver.h \ lb-blackbox-abstract.h \ lb-blackbox-type.h \ lb-domain-function.h \ lb-element-collection.h \ lb-polynomial.h \ lb-vector-data.h \ lb-blackbox-collection.h \ lb-charpoly.h \ lb-domain-functor.h \ lb-element-data.h \ lb-rank.h \ lb-vector-function.h \ lb-blackbox-data.h \ lb-det.h \ lb-domain.h \ lb-element.h \ lb-solve.h \ lb-vector-functor.h \ lb-blackbox-function.h \ lb-domain-abstract.h \ lb-domain-type.h \ lb-garbage.h \ lb-utilities.h \ lb-vector.h \ lb-blackbox-functor.h \ lb-domain-collection.h \ lb-interface.h \ lb-vector-abstract.h \ lb-vector-type.h \ lb-blackbox.h \ lb-domain-data.h \ lb-element-abstract.h \ lb-minpoly.h \ lb-vector-collection.h endif linbox-1.4.2/interfaces/driver/compile-readme.txt000066400000000000000000000002321274717217100220610ustar00rootroot00000000000000CAREFUL with IA64, all libraries used in the link edition need to be compiled with the option -fPIC -DPIC this is mandatory to provide a dynamic library.linbox-1.4.2/interfaces/driver/lb-blackbox-abstract.h000066400000000000000000000034401274717217100225730ustar00rootroot00000000000000/* lb-blackbox-abstract.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_blackbox_abstract_H #define __LINBOX_lb_blackbox_abstract_H #include #include /******************************** * Abstract object for Blackbox * ********************************/ class BlackboxAbstract : public LinBoxBaseVisitable{ public: virtual ~BlackboxAbstract(){}; virtual BlackboxAbstract* clone() const =0; virtual void* getPtr() const =0; virtual const DomainKey& getDomainKey() const =0; virtual const char* info() const =0; virtual void rebind(const DomainKey&) =0; LINBOX_VISITABLE(); }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-blackbox-collection.h000066400000000000000000000032371274717217100231270ustar00rootroot00000000000000/* lb-blackbox-collection.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_blackbox_collection_H #define __LINBOX_lb_blackbox_collection_H #include #include /************************** * Collection of Blackbox * **************************/ // definition of a key typedef size_t BlackboxKey; // comparison functor on key struct BlackboxKeyLessThan{ bool operator()(const BlackboxKey& k1, const BlackboxKey &k2) {return (k1 < k2);} }; // definition of a hash table type typedef std::map BlackboxTable; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-blackbox-data.h000066400000000000000000000206121274717217100217010ustar00rootroot00000000000000/* lb-blackbox-data.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_blackbox_data_H #define __LINBOX_lb_blackbox_data_H #include "linbox/matrix/sparse-matrix.h" #include "linbox/util/matrix-stream.h" #include #include #include #include #include #include #include extern BlackboxTable blackbox_hashtable; /****************************************************** * Functor to determine domain in Abstract Blackboxes * ******************************************************/ template class Blackbox, class Functor> class BlackboxSpecFunctor{ const Functor & fct; void *ptr; public: BlackboxSpecFunctor(const Functor &f, void *p) : fct(f), ptr(p) {} template void operator()(Result &res, Domain *d) const { Blackbox * b= static_cast*> (ptr); fct(res, b); } }; /******************************************** * Factory to construct Abstract Blackboxes * ********************************************/ class Blackbox_Factory { public: typedef BlackboxAbstract* (*createBlackbox_1_CallBack)(const DomainKey &, size_t, size_t, const char*); typedef BlackboxAbstract* (*createBlackbox_2_CallBack)(const DomainKey &, std::istream&, const char*); typedef std::map , ltstr> CallBackMap; bool add(const char *name, std::pair createD){ return _callback.insert(CallBackMap::value_type(name, createD)).second; } bool remove(const char *name){return _callback.erase(name) == 1;} BlackboxAbstract* create(const char *name, const DomainKey &k, size_t m, size_t n){ CallBackMap::iterator it = _callback.find(name); if (it != _callback.end()){ return it->second.first(k, m, m,name); } else { std::string mes("LinBox ERROR: you are trying to construct a non defined blackbox << "); mes+= std::string(name); mes+= std::string(" >>\n"); throw lb_runtime_error(mes.c_str());// throw an exception } } BlackboxAbstract* create(const char *name, const DomainKey &k, std::istream &is){ CallBackMap::iterator it = _callback.find(name); if (it != _callback.end()){ return it->second.second(k, is, name); } else { std::string mes("LinBox ERROR: you are trying to construct a non defined blackbox << "); mes+= std::string(name); mes+= std::string(" >>\n"); throw lb_runtime_error(mes.c_str());// throw an exception } } size_t size() { return _callback.size(); } private: CallBackMap _callback; }; /****************************** * Functor to copy Blackboxes * ******************************/ class CopyBlackboxFunctor { public: template void operator()(void *&res, Blackbox *B) const { res= new Blackbox(static_cast(*B)); } }; /********************************* * Functors to rebind Blackboxes * *********************************/ template class Blackbox> class RebindBlackboxFunctor{ void *&ptr; public: RebindBlackboxFunctor(void *&p) : ptr(p) {} template void operator()(const DomainKey &key, Domain *D) const { RebindBlackboxFunctor fct(ptr); DomainFunction::call(*D, key, fct); } template void operator()(DomainSource &res, DomainTarget *D) const { Blackbox *B_source= static_cast * > (ptr); Blackbox *B_target = NULL; /* was not init't */ // typename Blackbox::template rebind()(*B_target, *B_source, *D); typename Blackbox::template rebind()(*B_target, *B_source); delete B_source; ptr = B_target; } }; /************************************************************ * Blackbox Envelope to be compliant with Blackbox Abstract * ************************************************************/ template class Blackbox> class BlackboxEnvelope : public BlackboxAbstract{ protected: void *ptr; DomainKey key; const char* _info; public: BlackboxEnvelope(void *p, const DomainKey &k, const char *Info) : ptr(p), key(k, true), _info(Info) {} ~BlackboxEnvelope(){} BlackboxAbstract* clone() const { CopyBlackboxFunctor Fct; void *b; launch(b, Fct); return new BlackboxEnvelope(b, key, _info); } void * getPtr() const { return ptr;} virtual const DomainKey& getDomainKey() const { return key; } LINBOX_VISITABLE(); template void launch (Result &res, const Functor &fct) const { BlackboxSpecFunctor bbs(fct, ptr); DomainFunction::call(res, key, bbs); } const char* info() const { std::string msg= "[ LinBox Blackbox (storage = "; msg+= std::string(_info); msg+= std::string(", domain = [LinBox Domain (type = "); msg+= std::string(key.Type()); msg+= std::string(", charact = "); msg+= std::string(key.Characteristic()); msg+= std::string(")] )]\n"); return msg.c_str(); } void rebind(const DomainKey &k) { RebindBlackboxFunctor Fct(ptr); DomainFunction::call(k, key, Fct); key = k; key.set_autogc(); } }; /********************************** * Functors to construct Blackbox * **********************************/ template class Blackbox> class CreateBlackboxFunctor{ size_t &_row; size_t &_col; public: CreateBlackboxFunctor(size_t &m, size_t &n) : _row(m), _col(n) {} template void operator()(void *&res, Domain *D) const { res = new Blackbox(*D, _row, _col); } }; template class Blackbox> class CreateBlackboxFromStreamFunctor{ std::istream ∈ public: CreateBlackboxFromStreamFunctor(std::istream &i) : in(i) {} template void operator()(void *&res, Domain *D) const { LinBox::MatrixStream ms(*D, in); res = new Blackbox(ms); } }; /****************************************************** * Blackbox construction function used in the Factory * ******************************************************/ template class Blackbox> BlackboxAbstract* constructBlackbox_from_size(const DomainKey &k, size_t m, size_t n, const char* info){ CreateBlackboxFunctor fct(m,n); void *bb; DomainFunction::call(bb, k, fct); BlackboxEnvelope *bbe = new BlackboxEnvelope (bb, k, info); return bbe; } template class Blackbox> BlackboxAbstract* constructBlackbox_from_stream (const DomainKey &k, std::istream &in, const char *info){ CreateBlackboxFromStreamFunctor fct(in); void *bb; DomainFunction::call(bb, k, fct); BlackboxEnvelope *bbe = new BlackboxEnvelope (bb, k, info); return bbe; } /************************************************************ * Function to add an abstract blackbox in linbox hashtable * ************************************************************/ const BlackboxKey& addBlackbox(BlackboxAbstract * v){ std::pair status; status = blackbox_hashtable.insert(std::pair (BlackboxKey(v), v)); if (status.second) return status.first->first; else throw lb_runtime_error("LinBox ERROR: blackbox creation failed \n");// throw an exception } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-blackbox-function.h000066400000000000000000000052761274717217100226260ustar00rootroot00000000000000/* lb-blackbox-function.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_blackbox_function_H #define __LINBOX_lb_blackbox_function_H #include #include /*********************************************************** * API to launch a generic function over a linbox blackbox * **********************************************************/ class BlackboxFunction { public: // call a functor over a blackbox from the hashtable, result is given through 1st parameter template static void call(Result &res, const std::pair &blackbox, const Functor &functor){ ApplyBlackboxFunctor Ap(res, functor); (blackbox.second)->Accept(Ap); } // call a functor over a blackbox from the hashtable, no result template static void call(const std::pair &v, const Functor &f){ void *dumbresult; call(dumbresult,v,f); } // call a functor over a blackbox from its key, result is given through 1st parameter template static void call(Result &res, const BlackboxKey &key, const Functor &functor){ BlackboxTable::const_iterator it = blackbox_hashtable.find(key); if (it != blackbox_hashtable.end()) BlackboxFunction::call(res, *it, functor); else throw lb_runtime_error("LinBox ERROR: use of a non allocated blackbox \n");// throw an exception } // call a functor over a blackbox from its key, no result template static void call(const BlackboxKey &k, const Functor &f) { void *dumbresult; call(dumbresult,k,f); } }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-blackbox-functor.h000066400000000000000000000064111274717217100224510ustar00rootroot00000000000000/* lb-blackbox-functor.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_blackbox_functor_H #define __LINBOX_lb_blackbox_functor_H #include #include #include /************************************************************************* * Base class for apply functor over a blackbox (used for code generation) * *************************************************************************/ template class ApplyBlackboxFunctorBase { protected: Result *res; const Functor *fct; public: ApplyBlackboxFunctorBase(){} template void apply(const Blackbox &b){ b.launch(*res, *fct); } }; /*************************************** * Macro for automatic code generation * ***************************************/ #define LB_BLACKBOX_VISIT(B) \ void visit(const B &d){this->apply(d);} /********************************************************************************** * Generate automatically the visitors for all Blackbox in the blackbox type list * **********************************************************************************/ template class LinBoxBlackboxVisitor; template class LinBoxBlackboxVisitor{}; template class LinBoxBlackboxVisitor, Functor, Result> : public LinBoxVisitor , public ApplyBlackboxFunctorBase { public: LB_BLACKBOX_VISIT(T); }; template class LinBoxBlackboxVisitor, Functor, Result > : public LinBoxVisitor , public LinBoxBlackboxVisitor { public: LB_BLACKBOX_VISIT(Head); }; /**************************************************** * functionalities to apply functor over a blackbox * ****************************************************/ template class ApplyBlackboxFunctor : public LinBoxBlackboxVisitor { public: ApplyBlackboxFunctor(Result &r, const Functor &f) { this->res = &r; this->fct = &f; } }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-blackbox-type.h000066400000000000000000000046571274717217100217640ustar00rootroot00000000000000/* lb-blackbox-type.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_blackbox_type_H #define __LINBOX_lb_blackbox_type_H #include /**************************************** * Define the list of all Blackbox Type * ****************************************/ // (NEED TO USE ENVELOPE TO DEFINE A CONCRETE TYPE) typedef LinBoxTypelist < BlackboxEnvelope< LinBox::BlasMatrix > , LinBoxDumbType> BL1; //typedef LinBoxTypelist < BlackboxEnvelope< LinBox::SparseMatrix > , BL1> BL2; // define the blackbox typelist typedef BL1 BlackboxList; /********************************************* * Update the Factory with all blackbox type * *********************************************/ extern Blackbox_Factory linbox_blackbox; void UpdateBlackbox() { // linbox_blackbox.add("linbox_sparse", // Blackbox_Factory::CallBackMap::value_type::second_type( // constructBlackbox_from_size, constructBlackbox_from_stream )); linbox_blackbox.add("linbox_dense", Blackbox_Factory::CallBackMap::value_type::second_type( constructBlackbox_from_size, constructBlackbox_from_stream )); } /***************************** * Default type for blackbox * *****************************/ // definition of the default type blackbox #define default_blackbox "linbox_dense" #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-blackbox.C000066400000000000000000000157611274717217100207360ustar00rootroot00000000000000/* lb-blackbox.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_blackbox_C #define __LINBOX_lb_blackbox_C #include "linbox/linbox-config.h" #include #include #include //#include "linbox/matrix/matrix-category.h" /******************************** * Allocate the global variable * ********************************/ // global hashtable for the allocated blackbox BlackboxTable blackbox_hashtable; // global variable for the blackbox factory Blackbox_Factory linbox_blackbox; // global variable for current blackbox type const char* current_blackbox = default_blackbox; /******************************************************* * API to contruct a m x n zero blackbox over a domain * *******************************************************/ const BlackboxKey& createBlackbox(const DomainKey &k, size_t m, size_t n, const char* name){ const char* type = name; if (type == NULL) type = current_blackbox; BlackboxAbstract* bb = linbox_blackbox.create(type, k, m , n); return addBlackbox(bb); } /********************************************************** * API to contruct a blackbox over a domain from a stream * **********************************************************/ const BlackboxKey& createBlackbox(const DomainKey &k, std::istream &in, const char *name){ const char* type = name; if (type == NULL) type = current_blackbox; BlackboxAbstract* bb = linbox_blackbox.create(type, k, in); return addBlackbox(bb); } /************************************ * API to copy an existing blackbox * ************************************/ const BlackboxKey& copyBlackbox(const BlackboxKey &k){ BlackboxTable::iterator it = blackbox_hashtable.find(k); if (it == blackbox_hashtable.end()) throw lb_runtime_error("LinBox ERROR: blackbox does not exist (copying impossible)\n"); BlackboxAbstract *v = it->second->clone(); return addBlackbox(v); } /******************************************** * API to get the dimensions of a blackbox * ********************************************/ class BlackboxDimensionFunctor{ public: template void operator()(BlackboxDimension &dim, Blackbox *B) const{ dim.first = B->rowdim(); dim.second = B->coldim(); } }; BlackboxDimension getBlackboxDimension(const BlackboxKey &key){ std::pair dim; BlackboxDimensionFunctor Fct; BlackboxFunction::call(dim, key, Fct); return dim; } /******************************************* * API to set a blackbox with random value * *******************************************/ template class RandomBlackbox{ public: template void operator()(Blackbox *V, Domain *D) { throw lb_runtime_error("LinBox ERROR: incompatible blackbox type and domain type (set random value impossible)\n"); } }; template class RandomBlackbox{ public: template void operator()(Blackbox *V, Domain *D) { throw lb_runtime_error("LinBox ERROR: impossible to set random value (storage is a real blackbox)\n"); } }; template class RandomBlackbox{ public: template void operator()(Blackbox *B, Domain *D) { typename Domain::RandIter G(*D); for (size_t i=0; i< B->coldim();++i) for (size_t j=0;j< B->coldim();++j) G.random(B->refEntry(i,j)); } }; template class BlackboxAtRandomFunctorSpec{ protected: Blackbox *vect; public: BlackboxAtRandomFunctorSpec(Blackbox *V) : vect(V) {} template void operator()(void *, Domain *D) const { RandomBlackbox::Type>()(vect, D); } }; class BlackboxAtRandomFunctor{ protected: const BlackboxKey key; public: BlackboxAtRandomFunctor(const BlackboxKey &k) : key(k) {} template void operator()(void*, Blackbox *V) const { BlackboxTable::iterator it = blackbox_hashtable.find(key); if ( it == blackbox_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid blackbox (set random value impossible)"); BlackboxAtRandomFunctorSpec Fct(V); DomainFunction::call(it->second->getDomainKey(), Fct); } }; void setBlackboxAtRandom(const BlackboxKey &k){ BlackboxAtRandomFunctor Fct(k); BlackboxFunction::call(k, Fct); } /********************************************** * API to rebind a blackbox over a new domain * **********************************************/ void rebindBlackbox(const BlackboxKey &Vkey, const DomainKey &Dkey){ BlackboxTable::iterator it = blackbox_hashtable.find(Vkey); if ( it == blackbox_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid blackbox (rebinding to another domain impossible)"); it->second->rebind(Dkey); } /************************************************* * API to write a blackbox over an output stream * *************************************************/ class WriteBlackboxFunctor{ std::ostream &os; public: WriteBlackboxFunctor(std::ostream &o) : os(o) {} template void operator() (void*, Blackbox *B) const { B->write(os); } }; void writeBlackbox (const BlackboxKey &key, std::ostream &os){ WriteBlackboxFunctor Fct(os); BlackboxFunction::call(key, Fct); } /******************************************* * API to modify the current blackbox type * *******************************************/ void setBlackbox(const char* t){ current_blackbox= t; } /************************************ * API to write info on a blackbox * ************************************/ void writeBlackboxInfo(const BlackboxKey &k, std::ostream& os){ BlackboxTable::const_iterator it= blackbox_hashtable.find(k); if ( it == blackbox_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid blackbox (writing blackbox information impossible)"); os<second->info(); } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-blackbox.h000066400000000000000000000063571274717217100210040ustar00rootroot00000000000000/* lb-blackbox.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_blackbox_H #define __LINBOX_lb_blackbox_H #include #include /*************************** * Initializer of Blackbox * ***************************/ void UpdateBlackbox(); /******************************************************* * API to contruct a m x n zero blackbox over a domain * *******************************************************/ const BlackboxKey& createBlackbox(const DomainKey &k, size_t m, size_t n, const char* name=NULL); /********************************************************** * API to contruct a blackbox over a domain from a stream * **********************************************************/ const BlackboxKey& createBlackbox(const DomainKey &k, std::istream &is, const char *name=NULL); /************************************ * API to copy an existing blackbox * ************************************/ const BlackboxKey& copyBlackbox(const BlackboxKey &k); /******************************************** * API to get the dimensions of a blackbox * ********************************************/ typedef std::pair BlackboxDimension; BlackboxDimension getBlackboxDimension(const BlackboxKey &key); /******************************************* * API to write a blackbox over an ostream * *******************************************/ void writeBlackbox (const BlackboxKey &key, std::ostream &os); /******************************************* * API to set a blackbox with random value * *******************************************/ void setBlackboxAtRandom(const BlackboxKey &k); /********************************************** * API to rebind a blackbox over a new domain * **********************************************/ void rebindBlackbox(const BlackboxKey &Vkey, const DomainKey &Dkey); /******************************************* * API to modify the current blackbox type * *******************************************/ void setBlackbox(const char* t); /************************************ * API to write info on a blackbox * ************************************/ void writeBlackboxInfo(const BlackboxKey &k, std::ostream& os); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-charpoly.C000066400000000000000000000070241274717217100207630ustar00rootroot00000000000000/* lb-charpoly.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_charpoly_C #define __LINBOX_lb_charpoly_C #include "linbox/solutions/charpoly.h" #include "linbox/ring/givaro-polynomial.h" #include #include #include extern BlackboxTable blackbox_hashtable; extern VectorTable vector_hashtable; /************************************* * Characteristic Polynomial Functor * *************************************/ template class CharpolyFunctor{ protected: Method meth; public: CharpolyFunctor(Method m= Method()) : meth(m) {} template void operator() (Result &res, Blackbox *B) const { typedef typename Blackbox::Field Field; typedef typename Field::Element Element; // use givpolynomial du to non genericity of charpoly over integer typename LinBox::GivPolynomialRing::Element pol; LinBox::charpoly(pol, *B, meth); // convert back the result to std::vector std::vector *phi = static_cast*> (res); phi->resize(pol.size()); for (size_t i=0; i< pol.size(); ++i) B->field().assign((*phi)[i], pol[i]); } }; /******************************************************************** * API for characteristic polynomial computation * * characteristic polynomial is returned through a given vector key * ********************************************************************/ void lb_charpoly(const VectorKey &res, const BlackboxKey& key) { VectorTable::iterator it = vector_hashtable.find(res); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: result polynomial does not exist (charpoly computation impossible)\n"); CharpolyFunctor<> fct; void *ret = it->second->getPtr(); BlackboxFunction::call(ret, key, fct); } /************************************************************** * API for characteristic polynomial computation * * characteristic polynomial is returned through a vector key * **************************************************************/ const VectorKey& lb_charpoly(const BlackboxKey& key) { BlackboxTable::iterator it = blackbox_hashtable.find(key); if ( it == blackbox_hashtable.end()) throw lb_runtime_error("LinBox ERROR: blackbox is not defined (charpoly computation impossible)"); const VectorKey *res = & createVector(it->second->getDomainKey(), 0, "linbox_dense"); lb_charpoly(*res, key); return *res; } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-charpoly.h000066400000000000000000000036031274717217100210270ustar00rootroot00000000000000/* lb-charpoly.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_charpoly_H #define __LINBOX_lb_charpoly_H #include #include /******************************************************************** * API for characteristic polynomial computation * * characteristic polynomial is returned through a given vector key * ********************************************************************/ void lb_charpoly(const VectorKey &res, const BlackboxKey& key); /************************************************************** * API for characteristic polynomial computation * * characteristic polynomial is returned through a vector key * **************************************************************/ const VectorKey& lb_charpoly(const BlackboxKey& key); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-det.C000066400000000000000000000066361274717217100177260ustar00rootroot00000000000000/* lb-det.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_det_C #define __LINBOX_lb_det_C #include "linbox/linbox-config.h" #include "linbox/solutions/det.h" #include #include #include #include extern BlackboxTable blackbox_hashtable; extern DomainTable domain_hashtable; /******************************************************** * list of available method for determinant computation * ********************************************************/ const char* lb_determinant_methods(); /*********************** * Determinant Functor * ***********************/ template class DeterminantFunctor{ private: Method meth; public: DeterminantFunctor(Method m = Method()) : meth(m) {} template void operator() (EltAbstract *&res, Blackbox *B) const { typedef typename Blackbox::Field::Element Element; if (Element *d = (dynamic_cast*>(res))->getElement()) LinBox::det(*d, *B, meth); else throw lb_runtime_error("LinBox ERROR: incompatible blackbox and element type (determinant computation impossible)"); } }; /******************************************************* * API for determinant computation * * determinant is returned through a given element key * *******************************************************/ void lb_determinant(const EltKey& Ekey, const BlackboxKey& Bkey, const char* method) { EltTable::iterator it = element_hashtable.find(Ekey); if ( it == element_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid element (determinant computation impossible)"); DeterminantFunctor<> fct; BlackboxFunction::call(it->second, Bkey, fct); } /************************************************** * API for determinant computation * * determinant is returned through an element key * **************************************************/ const EltKey& lb_determinant(const BlackboxKey& key, const char *method) { BlackboxTable::iterator it = blackbox_hashtable.find(key); if (it == blackbox_hashtable.end()) throw lb_runtime_error("LinBox ERROR: blackbox does not exist (determinant computation impossible)\n"); const DomainKey *d = &(it->second->getDomainKey()); const EltKey *e = &createElement(*d); lb_determinant(*e, key, method); return *e; } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-det.h000066400000000000000000000040641274717217100177640ustar00rootroot00000000000000/* lb-det.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_det_H #define __LINBOX_lb_det_H #include #include /******************************************************* * API for determinant computation * * determinant is returned through a given element key * *******************************************************/ void lb_determinant(const EltKey &Ekey, const BlackboxKey &Bkey, const char *method="hybrid"); /************************************************** * API for determinant computation * * determinant is returned through an element key * **************************************************/ const EltKey& lb_determinant(const BlackboxKey &key, const char *method="hybrid"); /************************************************************* * API to print available method for determinant computation * *************************************************************/ const char* lb_determinant_methods(); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-domain-abstract.h000066400000000000000000000030161274717217100222540ustar00rootroot00000000000000/* lb-domain-abstract.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_domain_abstract_H #define __LINBOX_lb_domain_abstract_H #include /****************************** * Abstract object for Domains * *******************************/ class DomainAbstract : public LinBoxBaseVisitable { public: virtual ~DomainAbstract() {} //virtual const char* info() const =0; virtual DomainAbstract* clone() const =0; LINBOX_VISITABLE(); }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-domain-collection.h000066400000000000000000000064731274717217100226160ustar00rootroot00000000000000/* lb-domain-collection.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_domain_collection_H #define __LINBOX_lb_domain_collection_H #include "linbox/integer.h" #include #include /************************* * Collection of Domains * *************************/ // definition of a unique key (using embedded reference counting to manage domain) class DomainKey { private: LinBox::integer *pfirst; const char **psecond; size_t *counter; mutable bool autogc; public: DomainKey(const LinBox::integer &p, const char* name) : pfirst(new LinBox::integer(p)), psecond(new const char*(name)), counter(new size_t(0)), autogc(false) {} DomainKey(const DomainKey &k, bool gc = false) : pfirst(k.pfirst), psecond(k.psecond), counter(k.counter), autogc(gc) {(*counter)++;} ~DomainKey() { if (autogc){ extern void deleteDomain(const DomainKey &key); if ((*counter) == 0) deleteDomain(*this); else (*counter)--; } else{ if ((*counter) == 0) { delete counter; delete pfirst; delete psecond;} else (*counter)--; } } const DomainKey& operator= (const DomainKey &k) { if (autogc){ extern void deleteDomain(const DomainKey &key); if ((*counter) == 0) deleteDomain(*this); else (*counter)--; } else{ if ((*counter) == 0) { delete counter; delete pfirst; delete psecond;} else (*counter)--; } pfirst = k.pfirst; psecond = k.psecond; counter = k.counter; autogc = k.autogc; (*counter)++; return *this; } bool free() const {return ((*counter) == 0);} void dispose() const { (*counter)--; } void copy() const { (*counter)++; } void set_autogc() const {autogc=true;} bool lessThan(const DomainKey &k) const { return (strcmp(*psecond, *(k.psecond))<0) || ((strcmp(*psecond, *(k.psecond))==0) && ( *pfirst < *(k.pfirst ))); } LinBox::integer Characteristic() const {return *pfirst;} const char* Type() const {return *psecond;} size_t getcounter() const {return *counter;} }; // comparison functor on key struct DomainKeyLessThan{ bool operator()(const DomainKey& k1, const DomainKey &k2) { return k1.lessThan(k2);} }; // definition of a hash table type typedef std::map DomainTable; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-domain-data.h000066400000000000000000000114031274717217100213610ustar00rootroot00000000000000/* lb-domain-data.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_domain_data_H #define __LINBOX_lb_domain_data_H #include "linbox/linbox-config.h" #include "linbox/integer.h" #include "linbox/field/field-traits.h" #include #include #include #include #include #include extern DomainTable domain_hashtable; /***************************************** * Factory to construct Abstract Domains * *****************************************/ class Domain_Factory { public: typedef DomainAbstract* (*createDomainCallBack)(const LinBox::integer &); private: typedef std::map CallBackMap; CallBackMap _callback; public: bool add(const char *name, createDomainCallBack createD){ return _callback.insert(CallBackMap::value_type(name, createD)).second; } bool remove(const char *name){ return _callback.erase(name) == 1; } DomainAbstract* create(const char *name, const LinBox::integer &p){ CallBackMap::iterator it = _callback.find(name); if (it != _callback.end()){ return it->second(p); } else{ std::string mes("LinBox ERROR: you are trying to construct a non defined domain << "); mes+= std::string(name); mes+= std::string(" >>\n"); mes+= std::string(LinBox::integer(_callback.size())); throw lb_runtime_error(mes.c_str());// throw an exception } } size_t size() { return _callback.size(); } }; /********************************************************* * Specific Domain constructor according to the category * *********************************************************/ template class constructDomainFunctor { public: Domain* operator()(const LinBox::integer &p, Category){ throw lb_runtime_error("LinBox ERROR: try to construct a Domain of unknown category\n"); } }; template class constructDomainFunctor { public: Domain* operator()(const LinBox::integer &p, LinBox::RingCategories::ModularTag t) { return new Domain(p); } }; template class constructDomainFunctor { public: Domain* operator()(const LinBox::integer &p, LinBox::RingCategories::IntegerTag t) { return new Domain(); } }; template class constructDomainFunctor { public: Domain* operator()(const LinBox::integer &p, LinBox::RingCategories::RationalTag t) { return new Domain(); } }; /******************************************************** * Domain Envelope to be compliant with Domain Abstract * ********************************************************/ template class DomainEnvelope : public DomainAbstract { Domain *ptr; DomainEnvelope (Domain *D) : ptr(D) {} public: typedef Domain Self_t; typedef typename LinBox::FieldTraits::categoryTag categoryTag; DomainEnvelope() {} DomainEnvelope(const LinBox::integer &p) { ptr = constructDomainFunctor ()(p, categoryTag()); } ~DomainEnvelope() {delete ptr;} DomainAbstract* clone() const { return new DomainEnvelope (new Domain(*ptr)); } LINBOX_VISITABLE(); Domain *getDomain() const {return ptr;} }; /**************************************************** * Domain construction function used in the Factory * ****************************************************/ template DomainAbstract* constructDomain(const LinBox::integer &p) { //return constructDomainFunctor::categoryTag>()(p, typename LinBox::FieldTraits::categoryTag()); return static_cast(new DomainEnvelope(p)); } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-domain-function.h000066400000000000000000000052641274717217100223050ustar00rootroot00000000000000/* lb-domain-function.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_domain_function_H #define __LINBOX_lb_domain_function_H #include #include /********************************************************* * API to launch a generic function over a linbox domain * *********************************************************/ extern DomainTable domain_hashtable; class DomainFunction { public: // call a functor over a domain from the hashtable, result is given through 1st parameter template static void call (Result &res, const std::pair &domain, const Functor &functor){ ApplyDomainFunctor Ap(res, functor); (domain.second)->Accept(Ap); } // call a functor over a domain from the hashtable, no result template static void call (const std::pair& k, const Functor& f){ void *dumbresult; call(dumbresult, k, f); } // call a functor over a domain from its key, result is given through 1st parameter template static void call (Result &res, const DomainKey &key, const Functor &functor){ DomainTable::iterator it = domain_hashtable.find(key); if (it != domain_hashtable.end()) DomainFunction::call(res, *it, functor); else throw lb_runtime_error("LinBox ERROR: use of a non allocated domain\n");// throw an exception } // call a functor over a domain from its key, no result template static void call (const DomainKey &k, const Functor &f){ void *dumbresult; call(dumbresult, k, f); } }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-domain-functor.h000066400000000000000000000064021274717217100221330ustar00rootroot00000000000000/* lb-domain-functor.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_domain_functor_H #define __LINBOX_lb_domain_functor_H #include #include #include /************************************************************************* * Base class for apply functor over a domain (used for code generation) * *************************************************************************/ template class ApplyDomainFunctorBase { protected: Result *res; const Functor *fct; public: ApplyDomainFunctorBase(){} template void apply(const Domain &d){ (*fct)(*res, d.getDomain()); } }; /*************************************** * Macro for automatic code generation * ***************************************/ #define LB_DOMAIN_VISIT(D) \ void visit(const DomainEnvelope &d){this->apply(d);} /******************************************************************************* * Generate automatically the visitors for all domains in the domain type list * *******************************************************************************/ template class LinBoxDomainVisitor; template class LinBoxDomainVisitor{}; template class LinBoxDomainVisitor, Functor, Result> : public LinBoxVisitor >, public ApplyDomainFunctorBase { public: LB_DOMAIN_VISIT(T); }; template class LinBoxDomainVisitor, Functor, Result > : public LinBoxVisitor > , public LinBoxDomainVisitor { public: LB_DOMAIN_VISIT(Head); }; /************************************************** * functionalities to apply functor over a domain * **************************************************/ template class ApplyDomainFunctor : public LinBoxDomainVisitor { public: ApplyDomainFunctor(Result &r, const Functor &f) { this->res=&r; this->fct=&f; } }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-domain-type.h000066400000000000000000000111631274717217100214340ustar00rootroot00000000000000/* lb-domain-type.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_domain_type_H #define __LINBOX_lb_domain_type_H #include "linbox/ring/modular.h" #include "givaro/zring.h" #include "linbox/field/gmp-rational.h" #include "linbox/field/givaro.h" #ifdef __LINBOX_HAVE_NTL #include "linbox/ring/ntl.h" #endif /************************************** * Define the list of all Domain Type * **************************************/ #define __LINBOX_MINIMIZE_DOMAIN #define __LINBOX_DOMAIN_ONLY typedef LinBoxTypelist < Givaro::Modular , LinBoxDumbType> DL1; typedef LinBoxTypelist < LinBox::Givaro::ZRing , DL1> DL2; typedef LinBoxTypelist < LinBox::GMPRationalField , DL2> DL3; typedef LinBoxTypelist < Givaro::Modular , DL3> DL4; typedef LinBoxTypelist < LinBox::Givaro::Modular , DL4> DL5; typedef LinBoxTypelist < Givaro::Modular , DL5> DL6; #ifdef __LINBOX_MINIMIZE_DOMAIN typedef DL3 linbox_domain_list; #else typedef DL6 linbox_domain_list; #endif #ifdef __LINBOX_HAVE_NTL typedef LinBoxTypelist < LinBox::NTL_ZZ_p, LinBoxDumbType> DN1; typedef LinBoxTypelist < LinBox::NTL_zz_p, DN1> DN2; typedef LinBoxTypelist < LinBox::NTL_ZZ , DN2> DN3; #ifdef __LINBOX_MINIMIZE_DOMAIN typedef DN1 ntl_domain_list; #else typedef DN3 ntl_domain_list; #endif #else typedef LinBoxDumbType ntl_domain_list; #endif typedef LinBoxTypelist < LinBox::Givaro::GFq, LinBoxDumbType> DG1; typedef LinBoxTypelist < Givaro::Modular< int32_t>, DG1> DG2; #ifdef __LINBOX_MINIMIZE_DOMAIN typedef DG1 givaro_domain_list; #else typedef DG2 givaro_domain_list; #endif // define DomainList to be the list of all domains #ifdef __LINBOX_DOMAIN_ONLY typedef linbox_domain_list DomainList; #else typedef LinBoxTL::Append< linbox_domain_list, LinBoxTL::Append< ntl_domain_list, givaro_domain_list>::Result>::Result DomainList; #endif /******************************************* * Update the Factory with all domain type * *******************************************/ extern Domain_Factory linbox_domain; void UpdateDomain(){ linbox_domain.add("linbox_field_dbl" , constructDomain >); linbox_domain.add("linbox_field_rational" , constructDomain); linbox_domain.add("linbox_ring_integer" , constructDomain >); #ifndef __LINBOX_MINIMIZE_DOMAIN linbox_domain.add("linbox_field_32" , constructDomain >); linbox_domain.add("linbox_field_64" , constructDomain >); linbox_domain.add("linbox_field_mp" , constructDomain >); #endif #ifdef __LINBOX_HAVE_NTL linbox_domain.add("ntl_field_ZZ_p" , constructDomain); #ifndef __LINBOX_MINIMIZE_DOMAIN linbox_domain.add("ntl_field_zz_p" , constructDomain); linbox_domain.add("ntl_ring_integer" , constructDomain); #endif #endif linbox_domain.add("givaro_field_gfq" , constructDomain); #ifndef __LINBOX_MINIMIZE_DOMAIN linbox_domain.add("givaro_field_32" , constructDomain >); #endif } /**************************** * Default type for Domains * ****************************/ // definition of the default type for prime field #define default_prime_field "linbox_field_dbl" // definition of the default type for rational field #define default_rational_field "linbox_field_rational" // definition of the default type for integer ring #define default_integer_ring "linbox_ring_integer" #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-domain.C000066400000000000000000000074411274717217100204140ustar00rootroot00000000000000/* lb-domain.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_domain_C #define __LINBOX_lb_domain_C #include #include /**************************** * Allocate global variable * ****************************/ // global hash table for allocated domains DomainTable domain_hashtable; // global variable for the factory Domain_Factory linbox_domain; // global variable for current prime field type const char* current_prime_field = default_prime_field; // global variable for current rational field type const char* current_rational_field = default_rational_field; // global variable for current integer ring type const char* current_integer_ring = default_integer_ring; /**************************** * API to contruct domains * ****************************/ const DomainKey& createDomain( const LinBox::integer characteristic, const char *name){ const char* type=name; if (name == NULL){ if (characteristic == 0) type = current_integer_ring; else type = current_prime_field; } DomainKey key(characteristic, type); // check if the domain is already constructed in domain hashtable // if so return the pointer to the domain DomainTable::const_iterator it= domain_hashtable.find(key) ; if (it != domain_hashtable.end()){ it->first.copy(); return it->first; } // need to create a new field DomainAbstract *domain = linbox_domain.create(type, characteristic); std::pair status= domain_hashtable.insert(std::pair (key, domain)); if (status.second) return status.first->first; else throw lb_runtime_error("LinBox ERROR: domain creation failed \n");// throw an exception } /************************ * API to copy domains * ************************/ const DomainKey copyDomain( const DomainKey &k){ return k; } /********************************************** * API to modify the current prime field type * **********************************************/ void setPrimeField(const char* t){ current_prime_field= t; } /************************************************* * API to modify the current rational field type * *************************************************/ void setRationalField(const char* t){ current_rational_field= t; } /*********************************************** * API to modify the current integer ring type * ***********************************************/ void setIntegerRing(const char* t){ current_integer_ring= t; } /********************************* * API to write info on a domain * *********************************/ void writeDomainInfo(const DomainKey &key, std::ostream& os){ os<<"[LinBox Domain (type = "<s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-domain.h000066400000000000000000000045511274717217100204600ustar00rootroot00000000000000/* lb-domain.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_domain_H #define __LINBOX_lb_domain_H #include #include "linbox/integer.h" /************************* * Initializer of Domain * *************************/ void UpdateDomain(); /**************************** * API to contruct domains * ****************************/ const DomainKey& createDomain( const LinBox::integer characteristic, const char *name=NULL); /************************ * API to copy domains * ************************/ const DomainKey copyDomain( const DomainKey &k); /********************************************** * API to modify the current prime field type * **********************************************/ void setPrimeField(const char* t); /************************************************* * API to modify the current rational field type * *************************************************/ void setRationalField(const char* t); /*********************************************** * API to modify the current integer ring type * ***********************************************/ void setIntegerRing(const char* t); /********************************* * API to write info on a domain * *********************************/ void writeDomainInfo(const DomainKey &k, std::ostream& os); #endif // end of file // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-driver.h000066400000000000000000000052561274717217100205070ustar00rootroot00000000000000/* lb-driver.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_driver_H #define __LINBOX_lb_driver_H #include #include #include #include #include #include #include #include #include //problem with givaro-extension (UTT type is not always consistent) disabled in the code #include #include #include // overload PreconditionFailed to be a real exception std::ostringstream PrecondStream; void initException(){ LinBox::PreconditionFailed::setErrorStream(PrecondStream); } /*********************************** * Initialization of LinBox driver * ***********************************/ int LinBoxInit(){ initException(); UpdateDomain(); UpdateBlackbox(); UpdateVector(); return 0; } /*************************** * Close the LinBox Driver * ***************************/ int LinBoxEnd(){ LinBoxCollect(); return 0; } /****************************************** * Give info on LinBox driver active data * ******************************************/ void LinBoxDataInfo(std::ostringstream &out){ extern DomainTable domain_hashtable; extern BlackboxTable blackbox_hashtable; extern VectorTable vector_hashtable; extern EltTable element_hashtable; out<<"LinBox Driver active Data:\n" <<" - Domain : "<s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-element-abstract.h000066400000000000000000000031051274717217100224350ustar00rootroot00000000000000/* lb-element-abstract.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_element_abstract_H #define __LINBOX_lb_element_abstract_H #include #include /******************************** * Abstract object for Elements * ********************************/ class EltAbstract { public: virtual ~EltAbstract(){} virtual EltAbstract* clone() const =0; virtual const DomainKey& getDomainKey() const =0; //virtual const char* info() const =0; }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-element-collection.h000066400000000000000000000033301274717217100227650ustar00rootroot00000000000000/* lb-element-collection.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_collection_H #define __LINBOX_lb_collection_H #include #include /************************** * Collection of Elements * **************************/ // definition of a unique key typedef size_t EltKey; // comparison functor on key struct EltKeyLessThan{ bool operator()(const EltKey& k1, const EltKey &k2) { return (k1 < k2);} }; // definition of a hash table type typedef std::map EltTable; // definition of a serial element struct SerialElement { const char* type; std::list list; }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-element-data.h000066400000000000000000000047231274717217100215520ustar00rootroot00000000000000/* lb-element.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_element_data_H #define __LINBOX_lb_element_data_H #include #include #include #include extern EltTable element_hashtable; /********************************************************** * Element Envelope to be compliant with Element Abstract * **********************************************************/ template class EltEnvelope : public EltAbstract { DomainKey key; Element *ptr; public: EltEnvelope(const DomainKey &k, Element* e) : key(k, true), ptr(e) {} ~EltEnvelope() {delete ptr;} Element *getElement() const {return ptr;} const DomainKey& getDomainKey() const { return key;} EltAbstract* clone() const { return new EltEnvelope(key, new Element(*ptr));} }; /***************************************** * construction of Element from a Domain * *****************************************/ class CreateEltFunctor{ protected: const DomainKey &key; public: CreateEltFunctor(const DomainKey &k) : key(k) {} template void operator()(EltAbstract *& e, Domain *D) const{ e = new EltEnvelope (key, new typename Domain::Element()); } }; EltAbstract* constructElt(const DomainKey &key){ EltAbstract *e; CreateEltFunctor Fct(key); DomainFunction::call(e, key, Fct); return e; } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-element.C000066400000000000000000000105061274717217100205720ustar00rootroot00000000000000/* lb-element.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_element_C #define __LINBOX_lb_element_C #include #include /******************************** * Allocate all global variable * ********************************/ // global hash table for allocated elements EltTable element_hashtable; /******************************************* * API to contruct a element over a domain * *******************************************/ const EltKey& createElement(const DomainKey &key) { EltAbstract *e = constructElt(key); std::pair status; status = element_hashtable.insert(std::pair (EltKey(e), e)); if (status.second) return status.first->first; else throw lb_runtime_error("LinBox ERROR: element creation failed \n");// throw an exception } /********************************************* * API to write an a element over its domain * *********************************************/ class WriteElementFunctor{ protected: std::ostream &os; EltAbstract *elt; public: WriteElementFunctor(std::ostream &o, EltAbstract* e) : os(o), elt(e) {} template void operator() (void*, Domain *D) const { if (EltEnvelope *ptr = dynamic_cast*>(elt)) D->write(os, *(ptr->getElement()))<<"\n"; else throw lb_runtime_error("LinBox ERROR: incompatible domain and element type (element writing impossible)"); } }; void writeElement (const EltKey &key, std::ostream &os){ EltTable::iterator it = element_hashtable.find(key); if ( it == element_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid element (writing impossible)"); WriteElementFunctor Fct(os, it->second); DomainFunction::call(it->second->getDomainKey(), Fct); } /******************************* * API to serialize an element * *******************************/ template void ToSerialElement (SerialElement& s, typename Domain::Element &e, const Domain &D, Category cat){ s.type ="integer"; LinBox::integer elt; D.convert(elt, e); s.list.push_back(elt); } template void ToSerialElement (SerialElement& s, typename Domain::Element &e, const Domain &D, LinBox::RingCategories::RationalTag cat){ s.type ="rational"; LinBox::integer num, den; D.get_num(num, e); D.get_den(den, e); s.list.push_back(num); s.list.push_back(den); } class SerializeElementFunctor{ protected: EltAbstract *elt; public: SerializeElementFunctor(EltAbstract *e) : elt(e) {} template void operator() (SerialElement &s, Domain *D) const { if (EltEnvelope *ptr = dynamic_cast*>(elt)){ ToSerialElement(s, *(ptr->getElement()), *D, typename LinBox::FieldTraits::categoryTag()); } else throw lb_runtime_error("LinBox ERROR: incompatible domain and element type (element writing impossible)"); } }; void SerializeElement (SerialElement &s, const EltKey &key) { EltTable::iterator it = element_hashtable.find(key); if ( it == element_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid element (serializing impossible)"); SerializeElementFunctor Fct(it->second); DomainFunction::call(s, it->second->getDomainKey(), Fct); } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-element.h000066400000000000000000000034251274717217100206410ustar00rootroot00000000000000/* lb-element.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_element_H #define __LINBOX_lb_element_H #include #include /******************************************* * API to contruct a element over a domain * *******************************************/ const EltKey& createElement(const DomainKey &key); /********************************************* * API to write an a element over its domain * *********************************************/ void writeElement (const EltKey &key, std::ostream &os); /******************************* * API to serialize an element * *******************************/ void SerializeElement (SerialElement &s, const EltKey &key); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-garbage.C000066400000000000000000000143501274717217100205320ustar00rootroot00000000000000/* lb-garbage.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_garbage_C #define __LINBOX_lb_garbage_C #include #include #include #include #include #define __LINBOX_NO_GC_EXCEPTION /*************************************** * API to delete a domain from ist key * ***************************************/ class DeleteElementFunctor{ protected: EltAbstract *elt; public: DeleteElementFunctor(EltAbstract *e) : elt(e) {} template void operator() (void *, Domain *D) const { if (EltEnvelope *ptr = dynamic_cast*>(elt)) delete ptr; else throw lb_runtime_error("LinBox ERROR: incompatible domain and element type (freeing element impossible)"); } }; void deleteElement(const EltKey &key){ EltTable::iterator it = element_hashtable.find(key); if ( it == element_hashtable.end()){ #ifndef __LINBOX_NO_GC_EXCEPTION throw lb_runtime_error("LinBox ERROR: invalid element (freeing impossible)"); #endif } else { DeleteElementFunctor Fct(it->second); #ifdef __LINBOX_NO_GC_EXCEPTION try { #endif DomainFunction::call(it->second->getDomainKey(), Fct); #ifdef __LINBOX_NO_GC_EXCEPTION } catch(lb_runtime_error &t){std::cout<<"LinBox exception catched\n"; exit(0);} #endif element_hashtable.erase(it); } } /***************************** * API to collect all domain * *****************************/ void collectElement(){ EltTable::iterator it = element_hashtable.begin(); for (;it != element_hashtable.end(); ++it){ delete it->second; element_hashtable.erase(it); } } /*************************************** * API to delete a domain from its key * ***************************************/ void deleteDomain(const DomainKey &key) { if (key.free()){ DomainTable::iterator it= domain_hashtable.find(key); delete it->second; domain_hashtable.erase(it); } else{ key.dispose(); } } /***************************** * API to collect all domain * *****************************/ void collectDomain(){ DomainTable::iterator it= domain_hashtable.begin(); for (; it != domain_hashtable.end(); ++it){ delete it->second; domain_hashtable.erase(it); } } /***************************************** * API to delete a blackbox from its key * *****************************************/ class DeleteBlackboxFunctor{ public: template void operator() (void *, Blackbox *B) const { delete B; } }; void deleteBlackbox (const BlackboxKey &key){ BlackboxTable::iterator it = blackbox_hashtable.find(key); if ( it == blackbox_hashtable.end()){ #ifndef __LINBOX_NO_GC_EXCEPTION throw lb_runtime_error("LinBox ERROR: invalid blackbox (freeing impossible)\n"); #else std::cout<<"LinBox ERROR: invalid blackbox (freeing impossible)\n"; #endif } else { DeleteBlackboxFunctor Fct; #ifdef __LINBOX_NO_GC_EXCEPTION try { #endif BlackboxFunction::call(key, Fct); #ifdef __LINBOX_NO_GC_EXCEPTION } catch (lb_runtime_error &t) {std::cout<<"LinBox exception catched: "<second; blackbox_hashtable.erase(it); } } /******************************* * API to collect all blackbox * *******************************/ void collectBlackbox(){ DeleteBlackboxFunctor Fct; BlackboxTable::iterator it= blackbox_hashtable.begin(); for (; it != blackbox_hashtable.end(); ++it){std::cout<<"bb to delete: "<second->info()<<"\n"; #ifdef __LINBOX_NO_GC_EXCEPTION try{ #endif BlackboxFunction::call(*it, Fct); #ifdef __LINBOX_NO_GC_EXCEPTION } catch (lb_runtime_error &t) {std::cout<<"LinBox exception catched\n"; exit(0);} #endif delete it->second; blackbox_hashtable.erase(it); } } /*************************************** * API to delete a vector from its key * ***************************************/ class DeleteVectorFunctor{ public: template void operator() (void*, Vector *V) const { delete V; } }; void deleteVector (const VectorKey &key){ VectorTable::iterator it = vector_hashtable.find(key); if ( it == vector_hashtable.end()){ #ifndef __LINBOX_NO_GC_EXCEPTION throw lb_runtime_error("LinBox ERROR: invalid vector (freeing impossible)"); #endif } else { DeleteVectorFunctor Fct; #ifdef __LINBOX_NO_GC_EXCEPTION try{ #endif VectorFunction::call(key, Fct); #ifdef __LINBOX_NO_GC_EXCEPTION } catch(lb_runtime_error &t) {exit(0);} #endif delete it->second; vector_hashtable.erase(it); } } /***************************** * API to collect all vector * *****************************/ void collectVector(){ DeleteVectorFunctor Fct; VectorTable::iterator it= vector_hashtable.begin(); for (; it != vector_hashtable.end(); ++it){ #ifdef __LINBOX_NO_GC_EXCEPTION try{ #endif VectorFunction::call(*it, Fct); #ifdef __LINBOX_NO_GC_EXCEPTION } catch (lb_runtime_error &t) {std::cout<<"LinBox exception catched\n"; exit(0);} #endif delete it->second; vector_hashtable.erase(it); } } /*********************************************** * API to collect all data allocated by LinBox * **********************************************/ void LinBoxCollect(){ collectVector(); collectBlackbox(); collectElement(); collectDomain(); } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-garbage.h000066400000000000000000000051331274717217100205760ustar00rootroot00000000000000/* lb-garbage.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_garbage_H #define __LINBOX_lb_garbage_H #include #include #include #include /*************************************** * API to delete a domain from ist key * ***************************************/ void deleteElement(const EltKey &key); /***************************** * API to collect all domain * *****************************/ void collectElement(); /*************************************** * API to delete a domain from ist key * ***************************************/ void deleteDomain(const DomainKey &key); /***************************** * API to collect all domain * *****************************/ void collectDomain(); /***************************************** * API to delete a blackbox from its key * *****************************************/ void deleteBlackbox (const BlackboxKey &key); /******************************* * API to collect all blackbox * *******************************/ void collectBlackbox(); /*************************************** * API to delete a vector from its key * ***************************************/ void deleteVector (const VectorKey &key); /***************************** * API to collect all vector * *****************************/ void collectVector(); /*********************************************** * API to collect all data allocated by LinBox * **********************************************/ void LinBoxCollect(); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-interface.h000066400000000000000000000037241274717217100211520ustar00rootroot00000000000000/* lb-interface.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include #include #include #include #include #include #include #include #include //problem with givaro-extension (UTT type is not always consistent) disabled in the code #include #include #include // overload PreconditionFailed to be a real exception std::ostringstream PrecondStream; void initException(){ LinBox::PreconditionFailed::setErrorStream(PrecondStream); } /*********************************** * Initialization of LinBox driver * ***********************************/ void LinBoxInit(){ initException(); UpdateDomain(); UpdateBlackbox(); UpdateVector(); } /*************************** * Close the LinBox Driver * ***************************/ void LinBoxEnd(){ LinBoxCollect(); } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-minpoly.C000066400000000000000000000061221274717217100206270ustar00rootroot00000000000000/* lb-minpoly.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_minpoly_C #define __LINBOX_lb_minpoly_C #include "linbox/solutions/minpoly.h" #include #include #include extern BlackboxTable blackbox_hashtable; extern VectorTable vector_hashtable; /****************************** * Mininal Polynomial Functor * ******************************/ template class MinpolyFunctor{ protected: Method meth; public: MinpolyFunctor(Method m= Method()) : meth(m) {} template void operator() (Result &res, Blackbox *B) const { typedef typename Blackbox::Field::Element Element; std::vector * phi = static_cast*>(res); LinBox::minpoly(*phi, *B, meth); res = phi; } }; /************************************************************* * API for minimal polynomial computation * * minimal polynomial is returned through a given vector key * *************************************************************/ void lb_minpoly(const VectorKey &res, const BlackboxKey& key) { MinpolyFunctor<> fct; VectorTable::iterator it = vector_hashtable.find(res); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: result polynomial does not exist (minpoly computation impossible)\n"); void *ret = it->second->getPtr(); BlackboxFunction::call(ret, key, fct); } /******************************************************* * API for minimal polynomial computation * * minimal polynomial is returned through a vector key * *******************************************************/ const VectorKey& lb_minpoly(const BlackboxKey& key) { BlackboxTable::iterator it = blackbox_hashtable.find(key); if ( it == blackbox_hashtable.end()) throw lb_runtime_error("LinBox ERROR: blackbox is not defined (minpoly computation impossible)"); const VectorKey *res = & createVector(it->second->getDomainKey(), 0, "linbox_dense"); lb_minpoly(*res, key); return *res; } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-minpoly.h000066400000000000000000000035051274717217100206760ustar00rootroot00000000000000/* lb-minpoly.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_minpoly_H #define __LINBOX_lb_minpoly_H #include #include /************************************************************* * API for minimal polynomial computation * * minimal polynomial is returned through a given vector key * *************************************************************/ void lb_minpoly(const VectorKey &res, const BlackboxKey& key); /******************************************************* * API for minimal polynomial computation * * minimal polynomial is returned through a vector key * *******************************************************/ const VectorKey& lb_minpoly(const BlackboxKey& key); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-polynomial.C000066400000000000000000000126671274717217100213360ustar00rootroot00000000000000/* lb-polynomial.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_polynomial_C #define __LINBOX_lb_polynomial_C #include #include #include #include #include /*********************************************** * Polynomial are handled through dense vector * ***********************************************/ // nothing to do at this stage /************************************************************* * API to write a polynomial over the standard output stream * *************************************************************/ template class PrintPoly{ public: template< class Domain, class Poly> void operator()(Domain *D, Poly *poly, std::ostream &os){ throw lb_runtime_error("LinBox ERROR: incompatible type (polynomial writing impossible)\n"); } }; template class PrintPoly { public: template< class Domain, class Poly, class Out> void operator()(Domain *D, Poly *poly, Out &os){ size_t deg=poly->size()-1; while (D->isZero((*poly)[deg])) --deg; D->write(os,(*poly)[deg])<<".x^"< 1 ; --i) { if (!D->isZero((*poly)[i])){os<<" + ";D->write(os, (*poly)[i])<<".x^"< 1) if (!D->isZero((*poly)[1])){os<<" + ";D->write(os,(*poly)[1])<<".x";} if (deg > 0) if (!D->isZero((*poly)[0])){os<<" + ";D->write(os,(*poly)[0]);} os<<"\n"; } }; template class WritePolynomialSpecFunctor{ protected: std::ostream &os; Polynomial *poly; public: WritePolynomialSpecFunctor(std::ostream &o, Polynomial *P) : os(o), poly(P){} template void operator()(void *&, Domain *D) const { PrintPoly ()(D, poly, os); } }; class WritePolynomialFunctor{ protected: std::ostream &os; const PolynomialKey &key; public: WritePolynomialFunctor(std::ostream &o, const PolynomialKey &k) : os(o), key(k) {} template void operator() (void*, Polynomial *P) const { VectorTable::iterator it = vector_hashtable.find(key); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid polynomial (writing impossible)"); WritePolynomialSpecFunctor Fct(os,P); DomainFunction::call(it->second->getDomainKey(), Fct); } }; void writePolynomial (const PolynomialKey &key, std::ostream &os){ WritePolynomialFunctor Fct(os, key); VectorFunction::call(key, Fct); } /********************************** * API to serialize a polynomial * **********************************/ template class ToSerialPolynomial { public: template inline void operator()(SerialPolynomial &s, Domain *D, Polynomial *poly){ throw lb_runtime_error("LinBox ERROR: incompatible type (polynomial writing impossible)\n"); } }; template class ToSerialPolynomial{ public: template inline void operator()(SerialPolynomial &s, Domain *D, Polynomial *poly){ s.type = "integer"; s.list.resize(poly->size()); typename Polynomial::const_iterator it_P= poly->begin(); std::vector::iterator it_s= s.list.begin(); for (; it_P != poly->end(); ++it_P, ++it_s) D->convert(*it_s, *it_P); } }; template class SerializePolynomialSpecFunctor{ protected: Polynomial *poly; public: SerializePolynomialSpecFunctor(Polynomial *P) : poly(P){} template void operator()(SerialPolynomial &s, Domain *D) const { ToSerialPolynomial()(s, D, poly); } }; class SerializePolynomialFunctor{ protected: const PolynomialKey &key; public: SerializePolynomialFunctor(const PolynomialKey &k) : key(k) {} template void operator() (SerialPolynomial& s, Polynomial *P) const { VectorTable::iterator it = vector_hashtable.find(key); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid polynomial (serializing impossible)"); SerializePolynomialSpecFunctor Fct(P); DomainFunction::call(s, it->second->getDomainKey(), Fct); } }; void SerializePolynomial (SerialPolynomial &s, const PolynomialKey &key) { SerializePolynomialFunctor Fct(key); VectorFunction::call(s, key, Fct); } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-polynomial.h000066400000000000000000000037211274717217100213720ustar00rootroot00000000000000/* lb-polynomial.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_polynomial_H #define __LINBOX_lb_polynomial_H #include /*********************************************** * Polynomial are handled through dense vector * ***********************************************/ typedef VectorKey PolynomialKey; // nothing to do at this stage (no creation available) /************************************************************* * API to write a polynomial over the standard output stream * *************************************************************/ void writePolynomial (const PolynomialKey &key, std::ostream &os); /********************************** * API to serialize a polynomial * **********************************/ struct SerialPolynomial{ const char *type; std::vector list; }; void SerializePolynomial (SerialPolynomial &s, const PolynomialKey &key); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-rank.C000066400000000000000000000044241274717217100200760ustar00rootroot00000000000000/* lb-rank.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_rank_C #define __LINBOX_lb_rank_C #include "linbox/solutions/rank.h" #include #include extern BlackboxTable blackbox_hashtable; /**************** * Rank Functor * ****************/ template class RankFunctor{ private: Method meth; public: RankFunctor(Method m = Method()) : meth(m) {} template void operator() (unsigned long &res, Blackbox *B) const { LinBox::rank(res, *B, meth); } }; /********************************************************** * API for rank computation * * rank is returned through a given unsigned long integer * **********************************************************/ void lb_rank(unsigned long &res, const BlackboxKey& key){ RankFunctor<> fct; BlackboxFunction::call(res, key, fct); } /***************************************************** * API for rank computation * * rank is returned through an unsigned long integer * *****************************************************/ unsigned long lb_rank(const BlackboxKey& key){ unsigned long r; lb_rank(r, key); return r; } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-rank.h000066400000000000000000000037101274717217100201400ustar00rootroot00000000000000/* lb-rank.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_rank_H #define __LINBOX_lb_rank_H #include /********************************************************** * API for rank computation * * rank is returned through a given unsigned long integer * **********************************************************/ void lb_rank(unsigned long &res, const BlackboxKey& key); /***************************************************** * API for rank computation * * rank is returned through an unsigned long integer * *****************************************************/ unsigned long lb_rank(const BlackboxKey& key); /****************************************************** * API to print available method for rank computation * ******************************************************/ const char* lb_rank_methods(); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-solve.C000066400000000000000000000170761274717217100203020ustar00rootroot00000000000000/* lb-solve.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_solve_C #define __LINBOX_lb_solve_C #include "linbox/solutions/solve.h" #include #include #include #include #include #include #include extern BlackboxTable blackbox_hashtable; extern VectorTable vector_hashtable; extern const char* current_rational_field; /**************************************************************** * Functor interface to launch LinBox solving * * deal with different API and avoid different type compilation * ****************************************************************/ // generic version to handle different type compilation template class LaunchSolveFunctor { public: template inline void operator()(Result &s, Blackbox *B, Vector *v, const Method &m) const { throw lb_runtime_error("LinBox ERROR: incompatible domain in solving");// throw an exception for incompatible data type } }; // specialization to launch LinBox solving using standard API template class LaunchSolveFunctor{ public: template inline void operator()(Result &s, Blackbox *B, Vector *v, const Method &m) const { LinBox::solve(s, *B, *v, m); } }; // specialization to launch LinBox solving using integer solving API (output is a GMPRational) template class LaunchSolveFunctor{ public: template inline void operator()(Result &s, Blackbox *B, Vector *v, const Method &m) const { //LinBox::solve(s, *B, *v, m); //not yet handled throw lb_runtime_error("LinBox ERROR: integer system solving with same vector type is not yet handled"); } }; // specialization to launch LinBox solving using integer solving API (output is a GMPRational) template class LaunchSolveFunctor{ public: template inline void operator()(Result &s, Blackbox *B, Vector *v, const Method &m) const { LinBox::solve(s, *B, *v, m); } }; /********************************************************************** * Partial Solving linear system Functor according to a blackbox type * **********************************************************************/ template class SolvePartialFunctor{ protected: Blackbox *_BB; const Method &meth; public: SolvePartialFunctor (Blackbox *B, const Method &m) : _BB(B), meth(m) {} template void operator()(const VectorKey& Vkey, Vector *res) const { VectorTable::iterator it = vector_hashtable.find(Vkey); if (it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: right hand side vector does not exist (solving impossible)\n"); SolvePartialFunctor fct(_BB, meth); VectorFunction::call(*res, Vkey, fct); } template void operator() (Result &res, Vector *v) const { typedef typename Blackbox::Field::Element BElement; typedef typename Vector::value_type VElement; typedef typename Result::value_type RElement; typedef typename LinBox::FieldTraits::categoryTag categoryTag; LaunchSolveFunctor()(res, _BB, v, meth); } }; /********************************************************** * Modify the vector Result if it is integer computation * * and vector result is not define over a rational domain * **********************************************************/ template class MutateVector{ public: void operator()(VectorAbstract *v){} }; template<> class MutateVector{ public: void operator()(VectorAbstract *v){ const DomainKey *k= &createDomain(0, current_rational_field); v->rebind(*k); deleteDomain(*k); } }; class MutateVectorFunctor{ public: template void operator()(VectorAbstract *&v, Domain *D) const { MutateVector::categoryTag>()(v); } }; void modifyResultVector(const VectorKey &key){ VectorTable::iterator it = vector_hashtable.find(key); if (it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: result vector does not exist (solving impossible)\n"); const DomainKey *Dkey = &(it->second->getDomainKey()); MutateVectorFunctor Fct; DomainFunction::call(it->second, *Dkey, Fct); } /***************************************** * Generic Solving linear system Functor * *****************************************/ template class SolveFunctor{ protected: const VectorKey &_Vkey; Method meth; public: SolveFunctor(const VectorKey &Vkey, Method m =Method()) : _Vkey(Vkey), meth(m) {} template inline void operator()(Result &res, Blackbox *B) const { SolvePartialFunctor fct(B, meth); VectorFunction::call(res, _Vkey, fct); } }; /*********************************************************** * API for solving linear systems * * vector solution is returned through a given vector key * ***********************************************************/ void lb_solve(const VectorKey &res, const BlackboxKey &Bkey, const VectorKey &Vkey) { SolveFunctor<> fct(res); modifyResultVector(res); BlackboxFunction::call(Vkey, Bkey, fct); } /***************************************************** * API for solving linear systems * * vector solution is returned through a vector key * *****************************************************/ const VectorKey& lb_solve(const BlackboxKey &Bkey, const VectorKey &Vkey) { BlackboxTable::iterator it = blackbox_hashtable.find(Bkey); if (it == blackbox_hashtable.end()) throw lb_runtime_error("LinBox ERROR: blackbox does not exist (solving impossible)\n"); const DomainKey *Dkey = &it->second->getDomainKey(); std::pair dim; dim = getBlackboxDimension(Bkey); size_t coldim = dim.second; //const VectorKey *res = ©Vector(Vkey); const VectorKey *res = &createVector(*Dkey, coldim); lb_solve(*res, Bkey, Vkey); return *res; } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-solve.h000066400000000000000000000035361274717217100203430ustar00rootroot00000000000000/* lb-solve.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_solve_H #define __LINBOX_lb_solve_H #include #include /*********************************************************** * API for solving linear systems * * vector solution is returned through a given vector key * ***********************************************************/ void lb_solve(const VectorKey &res, const BlackboxKey &Bkey, const VectorKey &Vkey); /***************************************************** * API for solving linear systems * * vector solution is returned through a vector key * *****************************************************/ const VectorKey& lb_solve(const BlackboxKey &Bkey, const VectorKey &Vkey); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-utilities.h000066400000000000000000000071241274717217100212230ustar00rootroot00000000000000/* lb-utilities.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_utilities_H #define __LINBOX_lb_utilities_H #include "linbox/util/error.h" #include "linbox/util/debug.h" #include #include /************************************** * definition of LinBox's exceptions * **************************************/ typedef LinBox::LinboxError lb_runtime_error; /************************************************ * definition of a functor to compare two char* * ************************************************/ struct ltstr { bool operator()(const char* s1, const char* s2) const {return strcmp(s1, s2) < 0;} }; /***************************************** * definition of LinBox's object visitor * *****************************************/ class LinBoxBaseVisitor { public: virtual ~LinBoxBaseVisitor() {} }; template class LinBoxVisitor : public virtual LinBoxBaseVisitor { public: virtual void visit(const T&) = 0; }; class LinBoxBaseVisitable { public: virtual ~LinBoxBaseVisitable(){} virtual void Accept(LinBoxBaseVisitor&) = 0; protected: template static void AcceptImpl(const T& visited, LinBoxBaseVisitor &guest){ if (LinBoxVisitor* ptr = dynamic_cast*> (&guest)) ptr->visit(visited); else throw lb_runtime_error("LinBox ERROR: no visitor found (check that all the type are defined in their corresponding type list)\n "); } }; #define LINBOX_VISITABLE() \ virtual void Accept(LinBoxBaseVisitor &guest) \ { AcceptImpl(*this, guest);} /******************************************* * definition of LinBox's object type list * *******************************************/ template struct LinBoxTypelist { typedef T Head; typedef U Tail; }; // Dumb type for ending a type list struct LinBoxDumbType{}; /************************************************* * function to append LinBox's object type list * *************************************************/ namespace LinBoxTL{ template struct Append; template <> struct Append { typedef LinBoxDumbType Result; }; template struct Append { typedef LinBoxTypelist Result; }; template struct Append > { typedef LinBoxTypelist Result; }; template struct Append , T > { typedef LinBoxTypelist::Result> Result; }; } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-vector-abstract.h000066400000000000000000000034261274717217100223140ustar00rootroot00000000000000/* lb-vector-abstract.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_vector_abstract_H #define __LINBOX_lb_vector_abstract_H #include #include /******************************* * Abstract object for Vectors * *******************************/ class VectorAbstract : public LinBoxBaseVisitable { public: virtual ~VectorAbstract(){} virtual VectorAbstract* clone() const =0; virtual void* getPtr() const =0; virtual const DomainKey& getDomainKey() const =0; virtual const char* info() const =0; virtual void rebind(const DomainKey&) =0; LINBOX_VISITABLE(); }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-vector-collection.h000066400000000000000000000033621274717217100226430ustar00rootroot00000000000000/* lb-vector-collection.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_vector_collection_H #define __LINBOX_lb_vector_collection_H #include #include /************************* * Collection of Vectors * *************************/ // definition of a key typedef size_t VectorKey; // comparison functor on key struct VectorKeyLessThan{ bool operator()(const VectorKey& k1, const VectorKey &k2) { return (k1 < k2);}}; // definition of a hash table type typedef std::map VectorTable; // definition of a serial vector struct SerialVector { const char* type; std::vector list; }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-vector-data.h000066400000000000000000000205231274717217100214170ustar00rootroot00000000000000/* lb-vector-data.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_vector_data_H #define __LINBOX_lb_vector_data_H #include #include "linbox/field/hom.h" #include #include #include #include #include #include extern VectorTable vector_hashtable; /*************************************************** * Functor to determine domain in Abstract Vectors * ***************************************************/ template class Vector, class Functor, template class Alloc=std::allocator> class VectorSpecFunctor{ const Functor &fct; void *ptr; public: VectorSpecFunctor(const Functor &f, void *p) : fct(f), ptr(p) {} template void operator() (Result& res, Domain *d) const { fct(res, static_cast >*> (ptr)); } }; /***************************************** * Factory to construct Abstract Vectors * *****************************************/ class Vector_Factory { public: typedef VectorAbstract* (*createVector_1_CallBack)(const DomainKey &, size_t, const char*); typedef VectorAbstract* (*createVector_2_CallBack)(const DomainKey &, std::istream&, const char*); typedef std::map , ltstr> CallBackMap; bool add(const char *name, std::pair createD){ return _callback.insert(CallBackMap::value_type(name, createD)).second; } bool remove(const char *name){ return _callback.erase(name) == 1; } VectorAbstract* create(const char *name, const DomainKey &k, size_t n){ CallBackMap::iterator it = _callback.find(name); if (it != _callback.end()){ return it->second.first(k, n, name); } else { std::string mes("LinBox ERROR: you are trying to construct a non defined vector << "); mes+= std::string(name); mes+= std::string(" >>\n"); throw lb_runtime_error(mes.c_str());// throw an exception } } VectorAbstract* create(const char *name, const DomainKey &k, std::istream &is){ CallBackMap::iterator it = _callback.find(name); if (it != _callback.end()){ return it->second.second(k, is, name); } else { std::string mes("LinBox ERROR: you are trying to construct a non defined vector << "); mes+= std::string(name); mes+= std::string(" >>\n"); throw lb_runtime_error(mes.c_str());// throw an exception } } size_t size() { return _callback.size(); } private: CallBackMap _callback; }; /*************************** * Functor to copy Vectors * ***************************/ class CopyVectorFunctor { public: template void operator()(void *&res, Vector *V) const { res= new Vector(*V); } }; /****************************** * Functors to rebind Vectors * ******************************/ template class Vector, template class Alloc=std::allocator> class RebindVectorFunctor{ void *&ptr; public: RebindVectorFunctor(void *&p) : ptr(p) {} template void operator()(const DomainKey &key, Domain *D) const { RebindVectorFunctor fct(ptr); DomainFunction::call(*D, key, fct); } template void operator()(DomainSource &res, DomainTarget *D) const { Vector > *v_source= static_cast > * > (ptr); Vector > *v_target= new Vector >(v_source->size()); LinBox::Hom hom(res, *D); for (size_t i=0;isize();++i) hom.image((*v_target)[i], (*v_source)[i]); delete v_source; ptr = v_target; } }; /******************************************************** * Vector Envelope to be compliant with Vector Abstract * ********************************************************/ template > class Vector> class VectorEnvelope : public VectorAbstract { protected: void *ptr; DomainKey key; const char* _info; public: VectorEnvelope(void* p, const DomainKey &k, const char* Info) : ptr(p), key(k, true), _info(Info) {} ~VectorEnvelope() {} LINBOX_VISITABLE(); template void launch (Result &res, const Functor &fct) const { VectorSpecFunctor vs(fct, ptr); DomainFunction::call(res, key, vs); } VectorAbstract* clone() const { CopyVectorFunctor Fct; void *v; launch(v, Fct); return new VectorEnvelope(v, key, _info); } void * getPtr() const { return ptr;} const DomainKey& getDomainKey() const {return key;} const char* info() const { std::string msg= "[ LinBox Vector (storage = "; msg+= std::string(_info); msg+= std::string(", domain = [LinBox Domain (type = "); msg+= std::string(key.Type()); msg+= std::string(", charact = "); msg+= std::string(key.Characteristic()); msg+= std::string(")] )]\n"); return msg.c_str(); } void rebind(const DomainKey &k) { RebindVectorFunctor Fct(ptr); DomainFunction::call(k, key, Fct); key = k; key.set_autogc(); } }; /********************************* * Functors to construct Vectors * *********************************/ template class Vector, template class Alloc=std::allocator> class CreateVectorFunctor{ size_t &_dim; public: CreateVectorFunctor( size_t &n) : _dim(n) {} template void operator()(void *&res, Domain *D) const { res = new Vector >(_dim, D->zero); } }; template class Vector, template class Alloc=std::allocator> class CreateVectorFromStreamFunctor{ std::istream ∈ public: CreateVectorFromStreamFunctor(std::istream &i) : in(i) {} template void operator()(void *&res, Domain *D) const { size_t n; LinBox::integer tmp; in>>n; Vector > * v = new Vector >(n); typename Vector >::iterator it = v->begin(); for (; it != v->end(); ++it){ in>>tmp; D->init(*it, tmp); } res =v; } }; /****************************************************** * Vector construction function used in the Factory * ******************************************************/ template > class Vector> VectorAbstract* constructVector_from_size(const DomainKey &k, size_t n, const char* info){ CreateVectorFunctor fct(n); void *bb; DomainFunction::call(bb, k, fct); VectorEnvelope *bbe = new VectorEnvelope (bb, k, info); return bbe; } template > class Vector> VectorAbstract* constructVector_from_stream (const DomainKey &k, std::istream &in, const char *info){ CreateVectorFromStreamFunctor fct(in); void *v; DomainFunction::call(v, k, fct); VectorEnvelope *ve = new VectorEnvelope (v, k, info); return ve; } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-vector-function.h000066400000000000000000000052071274717217100223350ustar00rootroot00000000000000/* lb-vector-function.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_vector_function_H #define __LINBOX_lb_vector_function_H #include #include /********************************************************* * API to launch a generic function over a linbox vector * *********************************************************/ class VectorFunction { public: // call a functor over a vector from the hashtable, result is given through 1st parameter template static void call(Result &res, const std::pair &vector, const Functor &functor){ ApplyVectorFunctor Ap(res, functor); (vector.second)->Accept(Ap); } // call a functor over a vector from the hashtable, no result template static void call(const std::pair &v, const Functor &f){ void *dumbresult; call(dumbresult,v,f); } // call a functor over a vector from its key, result is given through 1st parameter template static void call(Result &res, const VectorKey &key, const Functor &functor){ VectorTable::const_iterator it = vector_hashtable.find(key); if (it != vector_hashtable.end()) VectorFunction::call(res, *it, functor); else throw lb_runtime_error("LinBox ERROR: use of a non allocated vector\n");// throw an exception } // call a functor over a vector from its key, no result template static void call(const VectorKey &k, const Functor &f) { void *dumbresult; call(dumbresult,k,f); } }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-vector-functor.h000066400000000000000000000063411274717217100221700ustar00rootroot00000000000000/* lb-vector-functor.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. du -h tes * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_vector_functor_H #define __LINBOX_lb_vector_functor_H #include #include #include /************************************************************************* * Base class for apply functor over a vector (used for code generation) * *************************************************************************/ template class ApplyVectorFunctorBase { protected: Result *res; const Functor *fct; public: ApplyVectorFunctorBase(){} template void apply(const Vector &b){ b.launch(*res, *fct); } }; /*************************************** * Macro for automatic code generation * ***************************************/ #define LB_VECTOR_VISIT(B) \ void visit(const B &d){this->apply(d);} /********************************************************************************** * Generate automatically the visitors for all Vector in the vector type list * **********************************************************************************/ template class LinBoxVectorVisitor; template class LinBoxVectorVisitor{}; template class LinBoxVectorVisitor, Functor, Result> : public LinBoxVisitor , public ApplyVectorFunctorBase { public: LB_VECTOR_VISIT(T); }; template class LinBoxVectorVisitor, Functor, Result > : public LinBoxVisitor , public LinBoxVectorVisitor { public: LB_VECTOR_VISIT(Head); }; /**************************************************** * functionalities to apply functor over a vector * ****************************************************/ template class ApplyVectorFunctor : public LinBoxVectorVisitor { public: ApplyVectorFunctor(Result &r, const Functor &f) { this->res = &r; this->fct = &f; } }; #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-vector-type.h000066400000000000000000000040261274717217100214670ustar00rootroot00000000000000/* lb-vector-type.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_vector_type_H #define __LINBOX_lb_vector_type_H /************************************** * Define the list of all Vector Type * **************************************/ // (NEED TO USE ENVELOPE TO DEFINE A CONCRETE TYPE) typedef LinBoxTypelist < VectorEnvelope< std::vector > , LinBoxDumbType> VL1; // define the vector typelist typedef VL1 VectorList; /******************************************* * Update the Factory with all vector type * *******************************************/ extern Vector_Factory linbox_vector; void UpdateVector() { linbox_vector.add("linbox_dense", Vector_Factory::CallBackMap::value_type::second_type( constructVector_from_size, constructVector_from_stream )); } /*************************** * Default type for vector * ***************************/ // definition of the default type vector #define default_vector "linbox_dense" #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-vector.C000066400000000000000000000242301274717217100204420ustar00rootroot00000000000000/* lb-vector.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_vector_C #define __LINBOX_lb_vector_C #include "linbox/linbox-config.h" #include #include #include /*\************************** * Allocate global variable * ****************************/ // global hash table for allocated vector VectorTable vector_hashtable; // global variable for the factory Vector_Factory linbox_vector; // global variable for current vector type const char* current_vector = default_vector; /********************************************************** * function to add an abstract vector in linbox hashtable * **********************************************************/ const VectorKey& addVector(VectorAbstract * v){ std::pair status; status = vector_hashtable.insert(std::pair (VectorKey(v), v)); if (status.second) return status.first->first; else throw lb_runtime_error("LinBox ERROR: vector creation failed \n");// throw an exception } /********************************************************* * API to contruct a n dimensional vector over a domain * *********************************************************/ const VectorKey& createVector(const DomainKey &k, size_t n, const char *name){ const char *type=name; if (type == NULL) type= current_vector; VectorAbstract *v = linbox_vector.create(type, k, n); return addVector(v); } /****************************************** * API to contruct a vector from a stream * ******************************************/ const VectorKey& createVector(const DomainKey &k, std::istream &in, const char *name){ const char *type=name; if (type == NULL) type= current_vector; VectorAbstract *v = linbox_vector.create(type, k, in); return addVector(v); } /********************************** * API to copy an existing vector * **********************************/ const VectorKey& copyVector(const VectorKey &k){ VectorTable::iterator it = vector_hashtable.find(k); if (it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: vector does not exist (copying impossible)\n"); VectorAbstract *v = it->second->clone(); return addVector(v); } /****************************************** * API to get the dimensions of a vector * ******************************************/ class VectorDimensionFunctor{ public: template void operator()(size_t &dim, Vector *V) const{ dim = V->size(); } }; size_t getVectorDimension(const VectorKey &key){ size_t dim; VectorDimensionFunctor Fct; VectorFunction::call(dim, key, Fct); return dim; } /***************************************** * API to set a vector with random value * *****************************************/ template class RandomVector{ public: template void operator()(Vector *V, Domain *D) { throw lb_runtime_error("LinBox ERROR: incompatible type (vector writing impossible)\n"); } }; template class RandomVector{ public: template void operator()(Vector *V, Domain *D) { typename Domain::RandIter G(*D); for (size_t i=0; i< V->size();++i) G.random((*V)[i]); } }; template class VectorAtRandomFunctorSpec{ protected: Vector *vect; public: VectorAtRandomFunctorSpec(Vector *V) : vect(V) {} template void operator()(void *, Domain *D) const { RandomVector()(vect, D); } }; class VectorAtRandomFunctor{ protected: const VectorKey key; public: VectorAtRandomFunctor(const VectorKey &k) : key(k) {} template void operator()(void*, Vector *V) const { VectorTable::iterator it = vector_hashtable.find(key); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid vector (set random value impossible)"); VectorAtRandomFunctorSpec Fct(V); DomainFunction::call(it->second->getDomainKey(), Fct); } }; void setVectorAtRandom(const VectorKey &k){ VectorAtRandomFunctor Fct(k); VectorFunction::call(k, Fct); } /******************************************** * API to rebind a vector over a new domain * ********************************************/ void rebindVector(const VectorKey &Vkey, const DomainKey &Dkey){ VectorTable::iterator it = vector_hashtable.find(Vkey); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid vector (rebinding to another domain impossible)"); it->second->rebind(Dkey); } /***************************************** * API to write a vector over an ostream * *****************************************/ template class PrintVector{ public: template< class Domain, class Poly, class Out> void operator()(Domain *D, Poly *poly, Out &os){ throw lb_runtime_error("LinBox ERROR: incompatible type (vector writing impossible)\n"); } }; template class PrintVector { public: template< class Domain, class Vector, class Out> void operator()(Domain *D, Vector *vect, Out &os){ os<<" [ "; for (size_t i=0; isize()-1; ++i){ D->write(os, (*vect)[i])<<" , "; } D->write(os, (*vect)[vect->size()-1]); os<<" ]\n"; } }; template class WriteVectorSpecFunctor{ protected: std::ostream &os; Vector *vect; public: WriteVectorSpecFunctor(std::ostream &o, Vector *V) : os(o), vect(V){} template void operator()(void *&, Domain *D) const { PrintVector ()(D, vect, os); } }; class WriteVectorFunctor{ protected: std::ostream &os; const VectorKey &key; public: WriteVectorFunctor(std::ostream &o, const VectorKey &k) : os(o), key(k) {} template void operator() (void*, Vector *V) const { VectorTable::iterator it = vector_hashtable.find(key); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid vector (writing impossible)"); WriteVectorSpecFunctor Fct(os,V); DomainFunction::call(it->second->getDomainKey(), Fct); } }; void writeVector (const VectorKey &key, std::ostream &os){ WriteVectorFunctor Fct(os, key); VectorFunction::call(key, Fct); } /******************************************* * API to modify the current vector type * *******************************************/ void setVector(const char* t){ current_vector= t; } /********************************* * API to write info on a vector * *********************************/ void writeVectorInfo(const VectorKey &key, std::ostream& os){ VectorTable::iterator it = vector_hashtable.find(key); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid vector (writing vector info impossible)"); os<second->info(); } /********************************** * API to serialize a vector * **********************************/ template class ToSerialVector { public: template inline void operator()(SerialVector &s, Domain *D, Vector *poly){ throw lb_runtime_error("LinBox ERROR: incompatible type (vector writing impossible)\n"); } }; template class ToSerialVector{ public: template inline void operator()(SerialVector &s, Domain *D, Vector *poly){ s.type = "integer"; s.list.resize(poly->size()); typename Vector::const_iterator it_P= poly->begin(); std::vector::iterator it_s= s.list.begin(); for (; it_P != poly->end(); ++it_P, ++it_s) D->convert(*it_s, *it_P); } }; template class ToSerialVector{ public: template inline void operator()(SerialVector &s, Domain *D, Vector *poly){ s.type = "rational"; s.list.resize(2*poly->size()); typename Vector::const_iterator it_P= poly->begin(); std::vector::iterator it_s= s.list.begin(); for (; it_P != poly->end(); ++it_P, ++it_s){ D->get_num(*it_s, *it_P); ++it_s; D->get_den(*it_s, *it_P); } } }; template class SerializeVectorSpecFunctor{ protected: Vector *poly; public: SerializeVectorSpecFunctor(Vector *P) : poly(P){} template void operator()(SerialVector &s, Domain *D) const { ToSerialVector::categoryTag>()(s, D, poly); } }; class SerializeVectorFunctor{ protected: const VectorKey &key; public: SerializeVectorFunctor(const VectorKey &k) : key(k) {} template void operator() (SerialVector& s, Vector *P) const { VectorTable::iterator it = vector_hashtable.find(key); if ( it == vector_hashtable.end()) throw lb_runtime_error("LinBox ERROR: invalid vector (serializing impossible)"); SerializeVectorSpecFunctor Fct(P); DomainFunction::call(s, it->second->getDomainKey(), Fct); } }; void SerializeVector (SerialVector &s, const VectorKey &key) { SerializeVectorFunctor Fct(key); VectorFunction::call(s, key, Fct); } #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/driver/lb-vector.h000066400000000000000000000062731274717217100205160ustar00rootroot00000000000000/* lb-vector.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_vector_H #define __LINBOX_lb_vector_H #include #include /************************* * Initializer of Vector * *************************/ void UpdateVector(); /********************************************************* * API to contruct a n dimensional vector over a domain * *********************************************************/ const VectorKey& createVector(const DomainKey &k, size_t n, const char *name=NULL); /****************************************** * API to contruct a vector from a stream * ******************************************/ const VectorKey& createVector(const DomainKey &k, std::istream &in, const char *name=NULL); /********************************** * API to copy an existing vector * **********************************/ const VectorKey& copyVector(const VectorKey &k); /****************************************** * API to get the dimensions of a vector * ******************************************/ size_t getVectorDimension(const VectorKey &key); /***************************************** * API to set a vector with random value * *****************************************/ void setVectorAtRandom(const VectorKey &k); /******************************************** * API to rebind a vector over a new domain * ********************************************/ void rebindVector(const VectorKey &Vkey, const DomainKey &Dkey); /**************************************** * API to write a vector over an stream * ****************************************/ void writeVector (const VectorKey &key, std::ostream &os); /******************************************* * API to modify the current vector type * *******************************************/ void setVector(const char* t); /********************************* * API to write info on a vector * *********************************/ void writeVectorInfo(const VectorKey &k, std::ostream& os); /****************************** * API to serialize a vector * ******************************/ void SerializeVector (SerialVector &s, const VectorKey &key); #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/kaapi/000077500000000000000000000000001274717217100162325ustar00rootroot00000000000000linbox-1.4.2/interfaces/kaapi/Makefile.am000066400000000000000000000016561274717217100202760ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== pkgincludesubdir=$(pkgincludedir)/kaapi pkgincludesub_HEADERS = \ communicate.h linbox-1.4.2/interfaces/kaapi/communicate.h000066400000000000000000000050071274717217100207110ustar00rootroot00000000000000/* Copyright (C) LinBox * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_kaapi_communicate_H #define __LINBOX_kaapi_communicate_H #include #include "linbox/integer.h" #include "linbox/ring/modular-double.h" #include "linbox/matrix/sparse-matrix.h" /* * gmp integers */ a1::OStream& operator<<( a1::OStream& out, const Integer& x ) { std::ostringstream oss; oss << x; return out << oss.str(); } a1::IStream& operator>>( a1::IStream& in, Integer& x ) { std::string is; in >> is; std::istringstream iss(is); iss >> x; return in; } /* * modular double * we first inherit from them to access protected memebers */ /// limited doc so far. namespace kaapi { template struct Modular; /* * double specialization */ template <> struct Givaro::Modular : Givaro::Modular { const double& get_modulus() const { return this->modulus; } const unsigned long& get_lmodulus() const { return this->lmodulus; } double& get_modulus() { return this->modulus; } unsigned long& get_lmodulus() { return this->lmodulus; } }; } //namespace a1::OStream& operator<<( a1::OStream& out, const Givaro::Modular& m) { const kaapi::Modular* m_tmp = static_cast*>(&m); return out << m_tmp->get_modulus() << m_tmp->get_lmodulus() ; } a1::IStream& operator>>( a1::IStream& in, Givaro::Modular& m) { kaapi::Modular* m_tmp = static_cast*>(&m); return in >> m_tmp->get_modulus() >> m_tmp->get_lmodulus() ; } #endif //__LINBOX_kaapi_communicate_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/maple-old/000077500000000000000000000000001274717217100170175ustar00rootroot00000000000000linbox-1.4.2/interfaces/maple-old/Makefile.am000066400000000000000000000026441274717217100210610ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== INCLUDES=-I$(top_srcdir) AM_CPPFLAGS= $(NTL_CFLAGS) $(ATLAS_CFLAGS) $(MAPLE_CFLAGS) EXTRA_DIST = lbmaple.C lbmaple.mpl.head lbmaple.mpl.tail Makefile.in.1 Makefile.in.2 demonstration.mws lib_LTLIBRARIES=liblbmaple.la liblbmapleffpack.la liblbmaple_la_SOURCES=lbmaple.C liblbmaple_la_LDFLAGS=$(top_builddir)/linbox/liblinbox.la $(NTL_LIBS) $(MAPLE_LIBS) liblbmapleffpack_la_SOURCES=lbmaple-ffpack.C liblbmapleffpack_la_LDFLAGS=$(top_builddir)/linbox/liblinbox.la $(ATLAS_LIBS) $(NTL_LIBS) $(MAPLE_LIBS) install-data-local: $(INSTALL_DATA) lbmaple.mpl $(libdir)/lbmaple.mpl linbox-1.4.2/interfaces/maple-old/Makefile.in.1000066400000000000000000000134371274717217100212330ustar00rootroot00000000000000# Makefile.in generated automatically by automake 1.5 from Makefile.am. # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # This Makefile.in 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. @SET_MAKE@ SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ AMTAR = @AMTAR@ AS = @AS@ AWK = @AWK@ CC = @CC@ CXX = @CXX@ CXXFLAGS = @CXXFLAGS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOCPLUSPLUS_SUBDIRS = @DOCPLUSPLUS_SUBDIRS@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GIVARO_CFLAGS = @GIVARO_CFLAGS@ GIVARO_LIBS = @GIVARO_LIBS@ GMP_CFLAGS = @GMP_CFLAGS@ GMP_LIBS = @GMP_LIBS@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBTOOL = @LIBTOOL@ LIDIA_CFLAGS = @LIDIA_CFLAGS@ LIDIA_LIBS = @LIDIA_LIBS@ LN_S = @LN_S@ MAINT = @MAINT@ MAPLE_BUILD_LOC = @MAPLE_BUILD_LOC@ MAPLE_INCLUDES = @MAPLE_INCLUDES@ MAPLE_LIBS = @MAPLE_LIBS@ NTL_CFLAGS = @NTL_CFLAGS@ NTL_LIBS = @NTL_LIBS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SACLIB_CFLAGS = @SACLIB_CFLAGS@ SACLIB_LIBS = @SACLIB_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ am__include = @am__include@ am__quote = @am__quote@ install_sh = @install_sh@ INCLUDES = -I$(top_srcdir) AM_CPPFLAGS = $(GMP_CFLAGS) $(NTL_CFLAGS) @MAPLE_INCLUDES@ LDADD = $(top_builddir)/linbox/liblinbox.la $(GMP_LIBS) $(NTL_LIBS) EXTRA_DIST = lbmaple.C lbmaple.mpl.head lbmaple.mpl.tail Makefile.in.1 Makefile.in.2 \ demonstration.mws subdir = interfaces/maple mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/linbox-config.h CONFIG_CLEAN_FILES = DIST_SOURCES = DIST_COMMON = Makefile.am Makefile.in all: all-am .SUFFIXES: mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu interfaces/maple/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && \ CONFIG_HEADERS= CONFIG_LINKS= \ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status uninstall-info-am: tags: TAGS TAGS: DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @for file in $(DISTFILES); do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ $(mkinstalldirs) "$(distdir)/$$dir"; \ fi; \ if test -d $$d/$$file; then \ cp -pR $$d/$$file $(distdir) \ || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool uninstall-am: uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool uninstall uninstall-am uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linbox-1.4.2/interfaces/maple-old/Makefile.in.2000066400000000000000000000255461274717217100212400ustar00rootroot00000000000000# Makefile.in generated by automake 1.6.3 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in 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. @SET_MAKE@ SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ EXEEXT = @EXEEXT@ OBJEXT = @OBJEXT@ PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AS = @AS@ AWK = @AWK@ CC = @CC@ CXX = @CXX@ CXXFLAGS = @CXXFLAGS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOCPLUSPLUS_SUBDIRS = @DOCPLUSPLUS_SUBDIRS@ ECHO = @ECHO@ GIVARO_CFLAGS = @GIVARO_CFLAGS@ GIVARO_LIBS = @GIVARO_LIBS@ GMP_CFLAGS = @GMP_CFLAGS@ GMP_LIBS = @GMP_LIBS@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LB_LOC = @LB_LOC@ LIBTOOL = @LIBTOOL@ LIDIA_CFLAGS = @LIDIA_CFLAGS@ LIDIA_LIBS = @LIDIA_LIBS@ LN_S = @LN_S@ MAINT = @MAINT@ MAPLE_INCLUDES = @MAPLE_INCLUDES@ MAPLE_LIBS = @MAPLE_LIBS@ NTL_CFLAGS = @NTL_CFLAGS@ NTL_LIBS = @NTL_LIBS@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SACLIB_CFLAGS = @SACLIB_CFLAGS@ SACLIB_LIBS = @SACLIB_LIBS@ STRIP = @STRIP@ TEX_SUBDIRS = @TEX_SUBDIRS@ VERSION = @VERSION@ am__include = @am__include@ am__quote = @am__quote@ install_sh = @install_sh@ INCLUDES = -I$(top_srcdir) AM_CPPFLAGS = $(GMP_CFLAGS) $(NTL_CFLAGS) @MAPLE_INCLUDES@ LDADD = $(top_builddir)/linbox/liblinbox.la $(GMP_LIBS) $(NTL_LIBS) EXTRA_DIST = lbmaple.C lbmaple.mpl.head lbmaple.mpl.tail Makefile.in.1 Makefile.in.2 \ demonstration.mws mapledir = $(libdir) maple_LTLIBRARIES = liblbmaple.la liblbmaple_la_SOURCES = lbmaple.C liblbmaple_la_INCLUDES = @LB_LOC@/linbox/blackbox/triplesbb.h liblbmaple_la_LDFLAGS = @MAPLE_LIBS@ -module subdir = interfaces/maple mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/linbox-config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(maple_LTLIBRARIES) liblbmaple_la_LIBADD = am_liblbmaple_la_OBJECTS = lbmaple.lo liblbmaple_la_OBJECTS = $(am_liblbmaple_la_OBJECTS) DEFS = @DEFS@ DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/lbmaple.Plo CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ DIST_SOURCES = $(liblbmaple_la_SOURCES) DIST_COMMON = Makefile.am Makefile.in SOURCES = $(liblbmaple_la_SOURCES) all: all-am .SUFFIXES: .SUFFIXES: .C .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu interfaces/maple/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) mapleLTLIBRARIES_INSTALL = $(INSTALL) install-mapleLTLIBRARIES: $(maple_LTLIBRARIES) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(mapledir) @list='$(maple_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(LIBTOOL) --mode=install $(mapleLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(mapledir)/$$f"; \ $(LIBTOOL) --mode=install $(mapleLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(mapledir)/$$f; \ else :; fi; \ done uninstall-mapleLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(maple_LTLIBRARIES)'; for p in $$list; do \ p="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(mapledir)/$$p"; \ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(mapledir)/$$p; \ done clean-mapleLTLIBRARIES: -test -z "$(maple_LTLIBRARIES)" || rm -f $(maple_LTLIBRARIES) @list='$(maple_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test -z "$dir" && dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done liblbmaple.la: $(liblbmaple_la_OBJECTS) $(liblbmaple_la_DEPENDENCIES) $(CXXLINK) -rpath $(mapledir) $(liblbmaple_la_LDFLAGS) $(liblbmaple_la_OBJECTS) $(liblbmaple_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lbmaple.Plo@am__quote@ distclean-depend: -rm -rf ./$(DEPDIR) .C.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .C.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXXCOMPILE) -c -o $@ `cygpath -w $<` .C.lo: @AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< CXXDEPMODE = @CXXDEPMODE@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: ETAGS = etags ETAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @list='$(DISTFILES)'; for file in $$list; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: $(mkinstalldirs) $(DESTDIR)$(mapledir) install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-mapleLTLIBRARIES \ mostlyclean-am distclean: distclean-am distclean-am: clean-am distclean-compile distclean-depend \ distclean-generic distclean-libtool distclean-tags dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-mapleLTLIBRARIES install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool uninstall-am: uninstall-info-am uninstall-mapleLTLIBRARIES .PHONY: GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-mapleLTLIBRARIES distclean \ distclean-compile distclean-depend distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am info \ info-am install install-am install-data install-data-am \ install-exec install-exec-am install-info install-info-am \ install-man install-mapleLTLIBRARIES install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool tags uninstall \ uninstall-am uninstall-info-am uninstall-mapleLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linbox-1.4.2/interfaces/maple-old/README000066400000000000000000000060271274717217100177040ustar00rootroot00000000000000LinBox/Maple Interface - version 1.0 2-3-2003 1. What is it: This is an interface between the LinBox library of functions and utilities for the Maple computer algebra system. It allows you to call LinBox functions from a Maple session. It is currently under development by Rich Seagraves at the University of Delaware. Any ideas or suggestions are more than welcome. The package is made up of a small library that wraps LinBox functions, and a Maple module called LinBox that contains all procedures and external calling definitions. 2. Requirements: The interface requires the following packges: I. Maple v6.0 or greater II. LinBox III. GMP v3.2 or greater (for LinBox) IV. unix make utility V. A UNIX other than Solaris (see "But I have Solaris you insensitive CLOD!!!!" below). It is recommended you have the following I. Maple v7.0 or later II. g++ 3.0 or later (compiler on which this library was tested). III. GNU make utility (gmake). 3. Availability: The interface is currently distributed as part of the LinBox package, available through CVS. Please goto http://www.linalg.org/developer.html for information about getting the latest version of LinBox. (Note - at present, the Maple interface is not available through the latest LinBox beta release, v0.3b. It should be available when the next beta release of LinBox comes out. Stay on the look-out and keep your fingers crossed!) The interface is available in the interfaces/maple directory of the LinBox distribution. 4. But I have Solaris you insensitive CLOD!!!! At the moment, the package has been tested under Linux and theoretically will work on other Unix variant systems. Both LinBox and this interface has had some trouble building on Solaris, and at present Solaris doesnot support a build feature that this interface needs. If someone has had extensive experience with Solaris and would like to help out with this, I'd be more than happy toi recieve that help. 5. Installation: The interface consists of a shared object file and a plain text script defining a module called LinBox. To create the Maple interface to LinBox, re-run LinBox's configure script with the following additional arguements: --with-maple-prefix=MPFX --enable-shared where MPFX is the directory of a working maple installation. Then rebuild LinBox with make; make install and the interface will be built in LinBox's lib/ directory. 6. Usage: The build system will compile a shared object generate is called lbmaple.mpl. In Maple, type 'read("/directory/you/install/to/lib/lbmaple.mpl");' (where /directory/you/install/to is LinBox's installation path) to get the module. Also, in the interfaces/maple directory in LinBox is a file called demonstration.mws which contains a demonstrational maple worksheet. 7. Wow, this interface is horrible. What's wrong with you? :-) If you really think it's that bad, why not email me and show me how it's done right? I always love help. 8. Contact You can contact the author, Rich Seagraves, at linbox-1.4.2/interfaces/maple-old/demonstration.mws000066400000000000000000000477421274717217100224530ustar00rootroot00000000000000{VERSION 5 0 "IBM INTEL LINUX" "5.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 256 "itc avant garde" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 257 "lucida bright" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 258 "interface user" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 259 "screen" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE " " -1 260 "terminal" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 261 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 264 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 265 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 266 "" 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 268 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 269 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 270 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 271 "" 0 24 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 272 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 273 "" 1 18 0 0 0 0 0 2 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 274 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 275 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 276 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 277 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 278 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 279 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 280 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal " -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Title" 0 18 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 1 0 0 0 0 0 0 0 }3 0 0 -1 12 12 0 0 0 0 0 0 19 0 }{PSTYLE "Author" 0 19 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 8 8 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 256 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 18 "" 0 "" {TEXT -1 0 "" }{TEXT 256 28 "Maple Lin Box Interface, v0.5" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 19 "" 0 " " {TEXT -1 17 "by Rich Seagraves" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 271 "This interface is the fruits of a summer research project. It is meant to demonstrate a practical application of the LinBox suite of u tilities and functions. It is currently distributed as an extra compo nent of the LinBox development package. Please see http://www.lin" } {TEXT 264 0 "" }{TEXT -1 65 "alg.org to find out how to get a copy of \+ this package using CVS " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 259 "LinB ox is a set of libraries meant to provide fast symbolic solutions to p roblems in Linear Algebra. Currently it provides solutions to 3 class es of problems: Rank calculations, Determinant calculations, and the \+ computation of a Matrix's Minimal Polynomial." }{TEXT 257 0 "" }{TEXT 258 0 "" }{TEXT 259 0 "" }{TEXT 260 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 261 31 "Installing the LinBox interface" }}{PARA 0 "" 0 "" {TEXT -1 335 "The interface is composed of a comiled library of code that wraps linbox code, and a maple script that provides Mapl e access to this code. To compile the library and create the script, \+ the linbox package must be compiled with the maple option activated. \+ For information on this, see the README file in the interfaces/maple \+ directory" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 262 0 "" } {TEXT -1 0 "" }{TEXT 263 24 "Activating the interface" }}{PARA 0 "" 0 "" {TEXT -1 353 "Once installation is complete, the shared object \"li blbmaple.so\" and the maple script \"lbmaple.mpl\" will be in the $pre fix/lib directory, where $prefix is the prefix you specified when you \+ installed LinBox . If you want to move the interface to a different d irectory, the lbmaple.mpl file will need to be edited. Instructions f or this are in the file." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 145 "To activate the interface, read in the script usi ng the following command (change $dir to the directory the interface i s currently installed in):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "read(\"$dir/lbmaple.mpl\");" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7)% (LBapplyG%1LBapplyTransposeG%&LBdetG%*LBminpolyG%'LBrankG%)LinBoxBBG%( LinBoxVG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "The module LinBox sho uld be activated. " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 265 0 "" }{TEXT 266 0 "" }{TEXT 267 19 "Using the interface" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 48 "The LinBox interface defines tw o new data types:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "LinBox BB();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "LinBoxV();" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 228 "LinBoxBB is a Matrix BlackBox typ e, while LinBoxV is a vector type. They can be initialized with: \n \+ 1) A ready made Matrix or Vector\n \+ 2) Dimensions and an initalization procedure" }}{PARA 0 " " 0 "" {TEXT -1 54 " 3) A list (LinBoxV type o nly)" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 238 " For these data types, matrix or vector data is stored in the external code so that multiple data conversions between Maple data types and e xternal code types are un-necessary. Each object stores a handle to a particular external type. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 45 "The interface also defines several functions:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "LBrank();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "LBdet();" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 12 "LBminpoly();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "LBapply();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "LBapp lyTranspose();" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 175 "By default, th ese functions expect to take the LinBox BlackBox and Vector types as i nput. They can take native Maple types, but convert these two the Lin Box types on the fly." }}}{EXCHG {PARA 0 "" 0 "" {TEXT 269 0 "" } {TEXT 268 27 "Creating a BlackBox object\n" }{TEXT -1 214 "The easiest way to declare a BlackBox matrix is to give the matrix a procedure an d dimensions. Here is a simple procedure that puts 1's on every \"eve n\" diagonal ( abs( i-j) = 0 mod 2), and i+1 on the main diagonal" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "f := proc(i,j)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 30 " if abs(i-j) mod 2 = 0 then 1" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 8 " else 0" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " \+ fi;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "end proc;" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%\"fGf*6$%\"iG%\"jG6\"F)F)@%/-%$modG6$-%$absG6#,&9$ \"\"\"9%!\"\"\"\"#\"\"!F4F8F)F)F)" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 171 "Say we want to create a 500x500 BlackBox matrix with this form. \+ For this test, let's say we use the 30th prime. To create the Blackbo x, we would make the following call:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "Diag1s := LinBoxBB(ithprime(30),500,500,f);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%'Diag1sG`6$%*getMatrixG%$keyGb6#%+thismodu leG6#%)destructG6#/%'unloadGF-6$%*getMatrixG%$keyG6\"6#QDMaple~Contain er~for~LinBox~blackboxF4F46*%\"kG%\"kG%(ExToMapG%(ExToMapG%-lbXgetMatr ixG%-lbXgetMatrixG%.lbXkillMatrixG%.lbXkillMatrixG%,_m145668688G6#%)de structG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 148 "Diag1s becomes a LinB oxBB. If you wanted to get a copy of the Matrix stored within the ext ernal code, you can call the LinBoxBB method getMatrix()." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "M := Diag1s:-getMatrix();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"MG-%'RTABLEG6*\"*g%R\\8%)anythingG%'Matr ixG%.Fortran_orderG7\"\"\"#;\"\"\"\"$+&F." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 118 "Notice that you can also create a LinBoxBB object from a pre-created Matrix. In this case, let's use the 60th, prime:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "Diag2s := LinBoxBB(ithprime( 60), M);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%'Diag2sG`6$%*getMatrixG% $keyGb6#%+thismoduleG6#%)destructG6#/%'unloadGF-6$%*getMatrixG%$keyG6 \"6#QDMaple~Container~for~LinBox~blackboxF4F46*%\"kG%\"kG%(ExToMapG%(E xToMapG%-lbXgetMatrixG%-lbXgetMatrixG%.lbXkillMatrixG%.lbXkillMatrixG6 \"6#%)destructG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 2 "or" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 69 "Diag3s := LinBoxBB(ithprime(60), Ma trix(500,500, f, storage=sparse));" }}{PARA 12 "" 1 "" {XPPMATH 20 "6# >%'Diag3sG`6$%*getMatrixG%$keyGb6#%+thismoduleG6#%)destructG6#/%'unloa dGF-6$%*getMatrixG%$keyG6\"6#QDMaple~Container~for~LinBox~blackboxF4F4 6*%\"kG%\"kG%(ExToMapG%(ExToMapG%-lbXgetMatrixG%-lbXgetMatrixG%.lbXkil lMatrixG%.lbXkillMatrixG6\"6#%)destructG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 348 "Notice that the Matrix used to initalize Diag3s had the \+ option \"storage=sparse\" set. This is a requirement of all Maple Mat rix's used to create LinBox Blackbox types (and in general a good idea , as LinBox works best with Sparse Matrices. Note that any Maple Matr ix returned by the getMatrix() method is declared to have sparse stora ge by default." }}}{EXCHG {PARA 256 "" 0 "" {TEXT -1 0 "" }{TEXT 270 0 "" }{TEXT 271 56 "LinBox Algorithm functions - LBrank, LBdet and LBm inpoly" }}{PARA 0 "" 0 "" {TEXT -1 410 "Now that we've demonstrated th e basic blackbox type, we can call LinBox functions on them. At the p resent, the LinBox project supports fast, probabilistic computation of three aspects of a Matrix: it's Rank, it's Determinant, and it's Min imal Polynomial.\n\nLet's say I wanted to calculate the rank of the di agonal Matrix I created in the previous section. To do so, I would us e the LBrank command as follows:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "LinBox[LBrank](Diag1s);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"#" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 73 "Let's compare that to the rank computed b y Maple's LinearAlgebra package:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 76 "LinearAlgebra[Rank](Matrix(500,500,f, storage=sparse, datatype=integer[4]));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"#" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 199 "The same result. Notice that bot h functions gave the same result, as the rank of a Matrix is independa nt of the entries the field over which the Matrix's entries are. Noti ce the timing differece - " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "time(LBrank(Diag1s));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"$2\"! \"$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 61 "M := Matrix(500,500, f, storage=sparse, datatype=integer[4]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"MG-%'RTABLEG6+\"*[XuX\"&%(integerG6#\"\"%%'MatrixG% 'sparseG%.Fortran_orderG7\"\"\"#;\"\"\"\"$+&F2" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 29 "time(LinearAlgebra[Rank](M));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"'X%R(!\"$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 105 "Now let's look at computing the Determinant of a Matrix. This is done with the LBdet command as follows:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "LBdet(Diag1s);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\" \"!" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 74 "Compare that to the Determ inant computed by Maple's LinearAlgebra package:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "LinearAlgebra[Determinant](M);" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#\"\"!" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 289 "N otice that though they both return the same number, they haven't retur ned the same answer. While the LinearAlgebra package's Determinant fu nction returns the absolute Determinant, LinBox's determinant function returns the Givaro::Modular Determinant. The same is true of the Minimal Pol ynomial:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "LBminpoly(Diag1 s,x);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,&*&\"#*)\"\"\"%\"xGF&F&*$)F' \"\"#F&F&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 76 "LinearAlgebra[ MinimalPolynomial](M,x); # best leave this running over-night\n" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 142 "You can also call LBminpoly witho ut a symbolic argument, in which case you will recieve a Maple list of the coefficients, lowest degree first:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "LBminpoly(Diag1s);\n" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7%\"\"!\"#*)\"\"\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 137 "Notice \+ that the LinBox functions can be called on Maple Matrix types as well. When doing so, you provide the prime specifying the field:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "LBrank(ithprime(30), M);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"#" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "LBdet(ithprime(30), M);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"!" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "LBminpoly(it hprime(30), M);" }{TEXT -1 0 "" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7%\" \"!\"#*)\"\"\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 103 "In these cases , a blackbox type is created in the background and used without return ing a handle to it." }}}{EXCHG {PARA 257 "" 0 "" {TEXT -1 0 "" }{TEXT 272 20 "Using LinBox Vectors" }{TEXT 273 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 274 0 "" }{TEXT -1 138 "Just as a type is given to hand le Blackbox matrices, a type has also been given to handle external Ve ctor types. This is the LinBoV type:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 54 "V := LinBoxV(500, i-> if isprime(i) then 1 else 0 fi) ;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"VG`6$%*getVectorG%$keyGb6#%+t hismoduleG6#%)destructG6#/%'unloadGF-6$%*getVectorG%$keyG6\"6#QBMaple~ container~for~LinBox~VectorF4F46*%\"kG%\"kG%.lbXkillVectorG%.lbXkillVe ctorG%(ExToMapG%(ExToMapG%-lbXgetVectorG%-lbXgetVectorG%,_m135564960G6 #%)destructG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 146 "These vectors ar e stored in external code and accessed via a key stored in the LinBoxV type. The LinBoxV type can be created using the following:" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 44 "A length variable and procedure (s ee above)," }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 18 "A ready-made list: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "f := i -> if isprime(i) then 1 else 0 fi;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"fGf*6#%\"iG6 \"6$%)operatorG%&arrowGF(@%-%(isprimeG6#9$\"\"\"\"\"!F(F(F(" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "V := LinBoxV([seq(f(i), i=1. .500)]);" }{TEXT -1 0 "" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"VG`6$%* getVectorG%$keyGb6#%+thismoduleG6#%)destructG6#/%'unloadGF-6$%*getVect orG%$keyG6\"6#QBMaple~container~for~LinBox~VectorF4F46*%\"kG%\"kG%.lbX killVectorG%.lbXkillVectorG%(ExToMapG%(ExToMapG%-lbXgetVectorG%-lbXget VectorG6\"6#%)destructG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 35 "and A \+ ready-made Maple Vector type:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 83 "V := LinBoxV(Vector(500, i-> if isprime(i) then 1 else 0 fi, dat atype=integer[4]));" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"VG`6$%*getV ectorG%$keyGb6#%+thismoduleG6#%)destructG6#/%'unloadGF-6$%*getVectorG% $keyG6\"6#QBMaple~container~for~LinBox~VectorF4F46*%\"kG%\"kG%.lbXkill VectorG%.lbXkillVectorG%(ExToMapG%(ExToMapG%-lbXgetVectorG%-lbXgetVect orG%,_m135778512G6#%)destructG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 167 "Notice in the last it is required that datatype=integer[4] be spe cified. The LinBoxV type includes a method that returns a ready made \+ Maple Vector called getVector():" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "x := V:-getVector();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"xG-%'RTABLEG6*\"*Cb5N\"%)anythingG&%'VectorG6#%'columnG%,rectan gularG%.Fortran_orderG7\"\"\"\";F1\"$+&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 45 "x can now be used to check the contents of V;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 275 0 "" }{TEXT 276 28 "LBapply a nd LBapplyTranspose" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 277 0 "" } {TEXT -1 227 "The LBapply and LBapplyTranspose functions can be used t o apply a Blackbox Matrix to an external Vector. LBapply and LBapplyT ranpose corresponds to the apply and applyTranspose functions in the B lackboxArchetype. For example:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "V1 := LBapply(Diag1s, V);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#> %#V1G`6$%*getVectorG%$keyGb6#%+thismoduleG6#%)destructG6#/%'unloadGF-6 $%*getVectorG%$keyG6\"6#QBMaple~container~for~LinBox~VectorF4F46*%\"kG %\"kG%.lbXkillVectorG%.lbXkillVectorG%(ExToMapG%(ExToMapG%-lbXgetVecto rG%-lbXgetVectorG%,_m135779332G6#%)destructG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "V1T := LBapplyTranspose(Diag1s, V);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%$V1TG`6$%*getVectorG%$keyGb6#%+thismoduleG6#% )destructG6#/%'unloadGF-6$%*getVectorG%$keyG6\"6#QBMaple~container~for ~LinBox~VectorF4F46*%\"kG%\"kG%.lbXkillVectorG%.lbXkillVectorG%(ExToMa pG%(ExToMapG%-lbXgetVectorG%-lbXgetVectorG%-_m1095974244G6#%)destructG " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 243 "As you can see, these functi ons return another LinBoxV type. As with the other functions in the L inBox interface, LBapply and LBapplyTranspose can take Maple Matrix an d Vector types (or a mix of LinBox and Maple types) as input. For exa mple:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "V2 := LBapply(ithp rime(30), M, V);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%#V2G`6$%*getVect orG%$keyGb6#%+thismoduleG6#%)destructG6#/%'unloadGF-6$%*getVectorG%$ke yG6\"6#QBMaple~container~for~LinBox~VectorF4F46*%\"kG%\"kG%.lbXkillVec torG%.lbXkillVectorG%(ExToMapG%(ExToMapG%-lbXgetVectorG%-lbXgetVectorG %-_m1095975044G6#%)destructG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 102 "V3 := LBapplyTranspose(Diag1s, Vector(500, i -> if isprime(i) t hen 1 else 0 fi, datatype=integer[4]));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#V3G-%'RTABLEG6*\"*OECN\"%)anythingG&%'VectorG6#%'columnG%,rec tangularG%.Fortran_orderG7\"\"\"\";F1\"$+&" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 76 "vm := Vector(500, i -> if isprime(i) then 1 else 0 \+ fi, datatype=integer[4]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#vmG-%' RTABLEG6*\"*O5CN\"&%(integerG6#\"\"%&%'VectorG6#%'columnG%,rectangular G%.Fortran_orderG7\"\"\"\";F4\"$+&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "V4 := LBapplyTranspose(ithprime(30), M, vm);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%#V4G-%'RTABLEG6*\"*#*pLN\"%)anything G&%'VectorG6#%'columnG%,rectangularG%.Fortran_orderG7\"\"\"\";F1\"$+& " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 221 "Notice in the last example, \+ the answer comes back as a Maple Vector rather than a LinBoxV type. F Or the LBApply and LBApplyTranspose functions, if all the inputs are M aple types, all the outputs will also be Maple types." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 226 "As always, when using a Maple Matrix wit h a LinBox function, firsty give a prime that specifies the field of t he Matrix. These functions could be used to create low-level LinBox p rocedures in Maple, were the user so inclined." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 278 0 "" }{TEXT 279 19 "Further Development " }{TEXT 280 0 "" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 186 "As wi th all aspects of the LinBox project, this module is currently under d evelopment. To aide in the development of LinBox algorithms in Maple, under works are the following functions:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 96 "LBdiag(prime, n) - Returns a blackbox object representing a diagonal Matrix with random entries." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 89 "LBcompose(M1, M2) - Returns a blackbox object represeting the composition of two Matrices" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 82 "LBtranspose(M1) - Returns a blackbox object representing the trans pose of a Matrix" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 256 "The develope r is currently accepting ideas, suggestions and angry flames. If you \+ have any constructive criticism, you can reach Rich Seagraves at seagr ave@cis.udel.edu. Otherwise, messages pointed to /dev/null will be ju st fine :-). Thank you very much." }}}}{MARK "5 0 0" 10 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 } linbox-1.4.2/interfaces/maple-old/lbffpack.mpl000066400000000000000000000100421274717217100212760ustar00rootroot00000000000000FFPACK:=module() export LBMultiply,LBAddMultiply,LSPFactor,LQUPFactor,LBRank,LBDeterminant,LBInverse; local fgemm,lsp,lbrank,lbdeterminant,lbinverse,create,libname; option package, load=create, unload=gc; description "Maple interface to FFPACK package"; create := proc() libname :="/home/pgiorgi/Library/src/linbox/interfaces/maple/.libs/liblbmapleffpack.so"; fgemm:=define_external('fgemm',MAPLE,LIB=libname); lsp:=define_external('lsp',MAPLE,LIB=libname); lbrank:=define_external('rank',MAPLE,LIB=libname); lbdeterminant:=define_external('determinant',MAPLE,LIB=libname); lbinverse:=define_external('inverse',MAPLE,LIB=libname); end proc; create(); LBMultiply:=proc() # calls are : # LBMultiply(p,A,B) -> return A*B mod p # LBMultiply(p,alpha,A,B) -> return alpha.A*B mod p # LBMultiply(p,A,B,C) -> return C:= A*B mod p # LBMultiply(p,alpha,A,B,C) -> return C:= alpha.A*B mod p local m,n,k1,k2,alpha,C,a,b; if (type(args[2],Matrix)) then alpha:=1; m,k1 := LinearAlgebra:-Dimension(args[2]); k2,n := LinearAlgebra:-Dimension(args[3]); a:=2;b:=3; elif (type(args[2],numeric)) then alpha:=args[2]; m,k1 := LinearAlgebra:-Dimension(args[3]); k2,n := LinearAlgebra:-Dimension(args[4]); a:=3:b:=4; else error " 2nd argument should be either a Matrix or a numeric value"; end if; if (k1<> k2) then error "Dimensions don't match",k1,k2; end if; if (nargs return C:= beta.C+alpha.A*B mod p local m,n,k1,k2,m1,n1; m,k1:= LinearAlgebra:-Dimension(args[3]); k2,n:= LinearAlgebra:-Dimension(args[4]); m1,n1:= LinearAlgebra:-Dimension(args[6]); if ((k1<>k2) or ( m1<> m) or (n1 <> n)) then error "Dimensions don't match"; end if; fgemm(args[1],m,n,k1,args[2],args[3],args[4],args[5],args[6]); end proc; LSPFactor:=proc() # calls are: # LSPFactor(p,A) -> return A,P ; A:=[LSP] mod p (L is lower part of A , S is upper part of A) # LSPFactor(p,A,perm) -> return A,perm; A:=[LSP],perm:=P local m,n,P; m,n:= LinearAlgebra:-Dimension(args[2]); if (nargs <3) then P:=rtable(1..n,subtype=Vector[column],datatype=integer[4],order=C_order); #P:=Vector[column](1..n); lsp(args[1],m,n,args[2],P,1); return args[2],P; else lsp(args[1],m,n,args[2],args[3],1); return args[2],args[3]; end if; end proc; LQUPFactor:=proc() # calls are: # LQUPFactor(p,A) -> return A,Q,P ; A:=[LQUP] mod p (L is lower part of A in compress form, U is upper part of A) # LQUPFactor(p,A,perm1,perm2) -> return A,perm1,perm2; A:=[LSP],perm:=P local m,n,P,Q; m,n:= LinearAlgebra:-Dimension(args[2]); if (nargs <3) then Q:=rtable(1..m,subtype=Vector[column],datatype=integer[4],order=C_order); P:=rtable(1..n,subtype=Vector[column],datatype=integer[4],order=C_order); lsp(args[1],m,n,args[2],P,2,Q); return args[2],P,Q; else lsp(args[1],m,n,args[2],args[3],2,args[4]); return args[2],args[3],args[4]; end if; end proc; LBRank:=proc() # calls are: # LBRank(p,A) return rank(A mod p) local m,n; m,n:= LinearAlgebra:-Dimension(args[2]); lbrank(args[1],m,n,args[2]); end proc; LBDeterminant:=proc() # calls are: # LBDeterminant(p,A) return determinant(A) mod p local m,n; m,n:= LinearAlgebra:-Dimension(args[2]); lbdeterminant(args[1],m,n,args[2]); end proc; LBInverse:=proc() # calls are: # LBInverse(p,A) return A^(-1) mod p # LBInverse(p,A,X) return X:=A^(-1) mod p local m,n,X; m,n:= LinearAlgebra:-Dimension(args[2]); if (m<>n) then error "matrix should be square"; end if; if (nargs <3) then X:=LinearAlgebra:-Modular:-Create(args[1],m,m,float[8]); lbinverse(args[1],m,args[2],X); else lbinverse(args[1],m,args[2],args[3]); end if; end proc; end module; linbox-1.4.2/interfaces/maple-old/lbmaple-ffpack.C000066400000000000000000000252031274717217100217710ustar00rootroot00000000000000/* Copyright (C) LinBox * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ //#define DEBUG 3 #include "linbox/field/modular.h" #include "linbox/field/givaro-zpz.h" #include "fflas-ffpack/fflas/fflas.h" #include "fflas-ffpack/ffpack/ffpack.h" #include "maplec.h" using namespace LinBox; typedef Givaro::Modular Field; //typedef Givaro::Modular Field; typedef Field::Element Element; extern "C" { ALGEB fgemm(MKernelVector kv, ALGEB* argv ) { /* expect arguments in following order: 1- p (int prime) 2- m (int) 3- n (int) 4- k (int) 5- alpha (int) 6- A (matrix) 7- B (matrix) 8- beta (int) 9- C (matrix) */ //MaplePrintf(kv,"Givaro::Modular Matrix Mutiplication using LinBox library\n"); int p,m,n,k,alpha,beta; p = MapleToInteger32(kv,(ALGEB)argv[1]); m = MapleToInteger32(kv,(ALGEB)argv[2]); n = MapleToInteger32(kv,(ALGEB)argv[3]); k = MapleToInteger32(kv,(ALGEB)argv[4]); alpha = MapleToInteger32(kv,(ALGEB)argv[5]); beta = MapleToInteger32(kv,(ALGEB)argv[8]); Field F(p); Element a,b; F.init(a,alpha); F.init(b,beta); Element *A, *B, *C; ALGEB Matrix; RTableSettings settings; // Check that argument 6,7,9 are float[8] rtable and return a pointer on it Matrix = (ALGEB)argv[6]; RTableGetSettings(kv,&settings,Matrix); if( settings.data_type != RTABLE_FLOAT64 || settings.storage != RTABLE_RECT || !IsMapleNULL(kv,settings.index_functions) ) { MaplePrintf(kv,"Making a copy \n"); /* not the format we wanted -- make a copy */ settings.data_type = RTABLE_FLOAT64; settings.storage = RTABLE_RECT; settings.index_functions = ToMapleNULL(kv); settings.foreign = FALSE; Matrix = RTableCopy(kv,&settings,Matrix); } A = (Element*)RTableDataBlock(kv,Matrix); //Ae=new Element[m*k]; //for (int i=0;i LSP : k=2 -> LQUP) 7- Q (vector) only needed when k=2 */ int p=MapleToInteger32(kv,argv[1]); int m,n,k; m=MapleToInteger32(kv,(ALGEB)argv[2]); n=MapleToInteger32(kv,(ALGEB)argv[3]); k=MapleToInteger32(kv,(ALGEB)argv[6]); Field F(p); ALGEB Matrix,OutMatrix,Perm1,Perm2; RTableSettings settings,oldsettings; Matrix = (ALGEB)argv[4]; RTableGetSettings(kv,&settings,Matrix); if( settings.data_type != RTABLE_FLOAT64 || settings.storage != RTABLE_RECT || !IsMapleNULL(kv,settings.index_functions) ) { RTableGetSettings(kv,&oldsettings,Matrix); MaplePrintf(kv,"Making a copy \n"); /* not the format we wanted -- make a copy */ settings.data_type = RTABLE_FLOAT64; settings.storage = RTABLE_RECT; settings.index_functions = ToMapleNULL(kv); settings.foreign = FALSE; Matrix = RTableCopy(kv,&settings,Matrix); } Element *TMP1= (Element*) RTableDataBlock(kv,Matrix); Perm1= (ALGEB)argv[5]; RTableGetSettings(kv,&settings,Perm1); size_t *TMP2= (size_t*) RTableDataBlock(kv,Perm1); if (k == 2) { Perm2= (ALGEB) argv[7]; size_t *TMP3= (size_t*) RTableDataBlock(kv,Perm2); FFPACK::LUdivine( F, FFLAS::FflasNonUnit, m, n, TMP1, n, TMP2, FFPACK::FfpackLQUP,TMP3); } else{ FFPACK::LUdivine( F, FFLAS::FflasNonUnit, m, n, TMP1, n, TMP2, FFPACK::FfpackLSP); } OutMatrix = (ALGEB)argv[4]; switch (settings.data_type) { case RTABLE_FLOAT64: OutMatrix=Matrix; break; case RTABLE_INTEGER32: MaplePrintf(kv,"Converting the result to int[4]\n"); OutMatrix = RTableCopy(kv,&oldsettings,Matrix); break; case RTABLE_DAG: MaplePrintf(kv,"Converting the result to maple int\n"); OutMatrix = RTableCopy(kv,&oldsettings,Matrix); break; } return OutMatrix; } } extern "C" { ALGEB rank(MKernelVector kv, ALGEB* argv ) { /* expect arguments in following order: 1- p (int prime) 2- m (int) 3- n (int) 4- A (matrix) */ int p=MapleToInteger32(kv,argv[1]); int m,n; m=MapleToInteger32(kv,(ALGEB)argv[2]); n=MapleToInteger32(kv,(ALGEB)argv[3]); Field F(p); Element *A; RTableSettings settings; ALGEB Matrix = (ALGEB)argv[4]; RTableGetSettings(kv,&settings,Matrix); if( settings.data_type != RTABLE_FLOAT64 || settings.storage != RTABLE_RECT || !IsMapleNULL(kv,settings.index_functions) ) { MaplePrintf(kv,"Making a copy \n"); /* not the format we wanted -- make a copy */ settings.data_type = RTABLE_FLOAT64; settings.storage = RTABLE_RECT; settings.index_functions = ToMapleNULL(kv); settings.foreign = FALSE; Matrix = RTableCopy(kv,&settings,Matrix); } A= (Element*) RTableDataBlock(kv,Matrix); int rank=FFPACK::Rank(F,m,n,A,n); return ToMapleInteger(kv,rank); } } extern "C" { ALGEB determinant(MKernelVector kv, ALGEB* argv ) { /* expect arguments in following order: 1- p (int prime) 2- m (int) 3- n (int) 4- A (matrix) */ int p=MapleToInteger32(kv,argv[1]); int m,n; m=MapleToInteger32(kv,(ALGEB)argv[2]); n=MapleToInteger32(kv,(ALGEB)argv[3]); Field F(p); Element *A; RTableSettings settings; ALGEB Matrix = (ALGEB)argv[4]; RTableGetSettings(kv,&settings,Matrix); if( settings.data_type != RTABLE_FLOAT64 || settings.storage != RTABLE_RECT || !IsMapleNULL(kv,settings.index_functions) ) { MaplePrintf(kv,"Making a copy \n"); /* not the format we wanted -- make a copy */ settings.data_type = RTABLE_FLOAT64; settings.storage = RTABLE_RECT; settings.index_functions = ToMapleNULL(kv); settings.foreign = FALSE; Matrix = RTableCopy(kv,&settings,Matrix); } A= (Element*) RTableDataBlock(kv,Matrix); Element d=FFPACK::Det(F,m,n,A,n); return ToMapleInteger(kv,long(d)); } } extern "C" { ALGEB inverse(MKernelVector kv, ALGEB* argv ) { /* expect arguments in following order: 1- p (int prime) 2- m (int) 3- A (matrix) 4- X (matrix) */ int p=MapleToInteger32(kv,argv[1]); int m; m=MapleToInteger32(kv,(ALGEB)argv[2]); Field F(p); Element *A,*X; RTableSettings settings; ALGEB Matrix; Matrix= (ALGEB)argv[3]; RTableGetSettings(kv,&settings,Matrix); if( settings.data_type != RTABLE_FLOAT64 || settings.storage != RTABLE_RECT || !IsMapleNULL(kv,settings.index_functions) ) { MaplePrintf(kv,"Making a copy \n"); /* not the format we wanted -- make a copy */ settings.data_type = RTABLE_FLOAT64; settings.storage = RTABLE_RECT; settings.index_functions = ToMapleNULL(kv); settings.foreign = FALSE; Matrix = RTableCopy(kv,&settings,Matrix); } A= (Element*) RTableDataBlock(kv,Matrix); Matrix= (ALGEB)argv[4]; RTableGetSettings(kv,&settings,Matrix); if( settings.data_type != RTABLE_FLOAT64 || settings.storage != RTABLE_RECT || !IsMapleNULL(kv,settings.index_functions) ) { MaplePrintf(kv,"Making a copy \n"); /* not the format we wanted -- make a copy */ settings.data_type = RTABLE_FLOAT64; settings.storage = RTABLE_RECT; settings.index_functions = ToMapleNULL(kv); settings.foreign = FALSE; Matrix = RTableCopy(kv,&settings,Matrix); } X= (Element*) RTableDataBlock(kv,Matrix); FFPACK::Invert(F,m,A,m,X,m); Matrix = (ALGEB)argv[4]; RTableGetSettings(kv,&settings,Matrix); switch (settings.data_type) { case RTABLE_FLOAT64: break; case RTABLE_INTEGER32: MaplePrintf(kv,"Converting the result to int[4]\n"); int* Ae; Ae= (int *)RTableDataBlock(kv,Matrix); for (int i=0;is,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/maple-old/lbmaple.C000066400000000000000000001321231274717217100205410ustar00rootroot00000000000000/* Copyright (C) LinBox * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include "linbox/field/modular.h" #include "linbox/integer.h" // <- Wrapper for gmp BIG int support // #include "linbox/field/integer.h" <- When linbox supports computations // over the whole integers #include "linbox/blackbox/triplesbb.h" // Special blackbox for this interface #include "linbox/solutions/rank.h" #include "linbox/solutions/det.h" #include "linbox/solutions/minpoly.h" // #include "linbox/solutions/ssolve.h" <- When linbox supports System solver #include #include #include #include #include #include "maplec.h" using LinBox::integer; typedef std::vector Vectorl; typedef std::vector VectorI; typedef LinBox::TriplesBB > TriplesBBi; typedef LinBox::TriplesBB > TriplesBBI; /* Type references: Used to identify the type of object pointed to by * elements in the hash table. * Types: BlackBoxi - Black Box matrix, single-word size entries * Class: LinBox::TriplesBB, std::vector > (TriplesBBi) * BlackBoxI - Black Box matrix, multi-word size entries * Class: LinBox::TriplesBB, std::vector > (TriplesBBI) * SmallV - STL vector, single-word size entries * Class: std::vector (Vectorl) * LargeV - STL vector, multi-word size entries * Class: std::vector (VectorI) */ const int BlackBoxi = 1; const int BlackBoxI = 2; const int SmallV = 3; const int LargeV = 4; extern "C" { ALGEB End(MKernelVector kv, ALGEB* args); ALGEB initBB(MKernelVector kv, ALGEB* args); ALGEB getMatrix(MKernelVector kv, ALGEB* args); ALGEB killMatrix(MKernelVector kv, ALGEB* args); ALGEB initV(MKernelVector kv, ALGEB* args); ALGEB getVector(MKernelVector kv, ALGEB* args); ALGEB killVector(MKernelVector kv, ALGEB* args); ALGEB apply(MKernelVector kv, ALGEB* args); ALGEB applyT(MKernelVector kv, ALGEB* args); ALGEB rank(MKernelVector kv, ALGEB* args); ALGEB det(MKernelVector kv, ALGEB* args); ALGEB minpoly(MKernelVector kv, ALGEB* args); // ALGEB ssolve(MKernelVector kv, ALGEB* args); } ALGEB & LiToM(MKernelVector &, const integer &, ALGEB &); integer & MtoLI(MKernelVector &, integer &, const ALGEB &); std::map hashTable; std::map typeTable; /* End -- LBmaple back-end module "destructor". Cleans up all external data * when the LBmaple module goes out of scope and is garbage collected. * Pre-Condition: attached maple module has gone out of scope and is * garbage collected. * Post-Condition: all dynamically allocated data is freed */ extern "C" { ALGEB End(MKernelVector kv, ALGEB* args) { /* Four types of objects stored in memory */ TriplesBBi* BBip; TriplesBBI* BBIp; Vectorl* Vip; VectorI* VIp; std::map::iterator f_i; std::map::iterator h_i; // For each object in the hashTable . . . for( h_i = hashTable.begin(); h_i != hashTable.end(); ++h_i) { // Find the objects type and switch appropriately. . . f_i = typeTable.find(h_i->first); switch( f_i->second ) { // In each case, delete the object pointed to case BlackBoxi: BBip = (TriplesBBi*) h_i->second; delete BBip; break; case BlackBoxI: BBIp = (TriplesBBI*) h_i->second; delete BBIp; break; case SmallV: Vip = (std::vector *) h_i->second; delete Vip; break; case LargeV: VIp = ( std::vector *) h_i->second; delete VIp; break; /* Of course there are more cases to follow */ } } // When all objects are deleted, return return ToMapleNULL(kv); } } /* initBB - Backend "constructor" for Maple BlackBox objects. Takes as input 3 types of objects * from Maple: A Maple NAG sparse Matrix, 3 vectors defining a word-size entry matrix, or * 3 vectors defining a multi-word size entry matrix * Declares the object in dynamic memory and hashes into hashTable and typeTable * using the key supplied by Maple. * Pre-Condition: Called from Maple to create blackbox type * Post-Condition: Blackbox object exists in dynamic memory, can be called upon with key * supplied by Maple */ extern "C" { ALGEB initBB(MKernelVector kv, ALGEB* args) { // First get flag and key // IN this c int flag = MapleToInteger32(kv,args[1]), key = MapleToInteger32(kv,args[2]); size_t m, n, nonzeros, i; // perform an intial search to see if the key is stored in memory. If so, return the key, // the object already exists // Otherwise, switch on the type switch(flag) { // The first type is the Maple NAG sparse matrix. It is passed straight into the routine // the prime is passed first, then the object. All pertinant data can be lifted using // Maple's extensive rtable API case 1: { long p; int *data; NAG_INT *rowP, *colP; TriplesBBi* In; p = MapleToInteger32(kv, args[3]); m = RTableUpperBound(kv, args[4], 1); n = RTableUpperBound(kv, args[4], 2); nonzeros = RTableNumElements(kv, args[4]); // Get pointers to the data rowP = RTableSparseIndexRow(kv,args[4],1); colP = RTableSparseIndexRow(kv, args[4],2); data = (int*) RTableDataBlock(kv,args[4]); // Declare a new object on the heap Givaro::Modular modF(p); In = new TriplesBBi(modF, m, n, nonzeros); // Add each entry for(i = 0; i < nonzeros; ++i) { In->addEntry( data[i], rowP[i], colP[i]); } // hash the pointer into the hasTable, the type into the typeTable using the key hashTable.insert(std::pair(key, In)); typeTable.insert(std::pair( key, BlackBoxi )); } break; // In the second case, the user either A) Created a BlackBox from an existing sparse // matrix in Maple, or created a Matrix by passing in parameters and a procedure // In either case, the data is formatted in Maple, and a number of parameters are passed // to this routine. // First is the prime, then the row list, then the column list, the entry list, followed // by the rows, columns, and number of non-zero entries. case 2: { long p; TriplesBBi* In; p = MapleToInteger32(kv, args[3]); m = (size_t) MapleToInteger32(kv,args[7]); n = (size_t) MapleToInteger32(kv,args[8]); nonzeros = (size_t) MapleToInteger32(kv,args[9]); // Declares field and blackbox Givaro::Modular modF(p); In = new TriplesBBi(modF, m, n, nonzeros); // Populates blackbox w/ entries for(i = 1; i <= nonzeros; i++) { In->addEntry( MapleToInteger32(kv, MapleListSelect(kv, args[4], i)), MapleToInteger32(kv, MapleListSelect(kv, args[5], i)), MapleToInteger32(kv, MapleListSelect(kv, args[6], i))); } hashTable.insert(std::pair(key, (void*) In)); typeTable.insert(std::pair(key, BlackBoxi)); } break; // In this case, a sparse Matrix was input, or a matrix was created w/ a procedure, but // the matrix is defined by a multi-word size prime. Data is passed in the order // mentioned for case #2 above. Notice that the function calls the MtoLI function // to convert into a gmp integer case 3:{ integer blank, iPrime; VectorI Elements; TriplesBBI* In; iPrime = MtoLI(kv, iPrime, args[3]); m = (size_t) MapleToInteger32(kv,args[7]); n = (size_t) MapleToInteger32(kv,args[8]); nonzeros = (size_t) MapleToInteger32(kv,args[9]); // Declare Field and blackbox Givaro::Modular modF(iPrime); In = new TriplesBBI(modF, m, n, nonzeros); for(i = 1; i <= nonzeros; i++) { In->addEntry( MtoLI(kv, blank, MapleListSelect(kv, args[4],i)), MapleToInteger32(kv, MapleListSelect(kv, args[5], i)), MapleToInteger32(kv, MapleListSelect(kv, args[6], i))); } hashTable.insert(std::pair(key, In)); typeTable.insert(std::pair(key,BlackBoxI)); } break; // In case some weird operation is requested, just bail. default: MapleRaiseError(kv, "ERROR! Confused by request. No action performed."); break; } return ToMapleNULL(kv); } } /* initV - Backend "constructor" for LBmaple vector type. * Can create either a wordsize entry * vector, or a multi-precision vector (distinction made by entry size flag passed * from Maple). Declares the object in dynamic memory and hashes into hashTable and typeTable * using the key supplied by Maple. * Pre-Condition: Called from Maple with initialized data in a correct format * Post-Condition: Blackbox object exists in dynamic memory, can be called upon with key * supplied by Maple */ extern "C" { ALGEB initV(MKernelVector kv, ALGEB* args) { // First get the flag and key to use. The flag indicates what type of object was passed in // the key what key it should be hashed against int flag = MapleToInteger32(kv,args[1]), key = MapleToInteger32(kv,args[2]), length, index, i, j, L; std::vector* vP; std::vector* VP; integer blank; // Performs a quick table check to see if the Vector has already been // created. If so, simply return it std::map::iterator h_i = hashTable.find(key); if( h_i != hashTable.end() ) { return ToMapleInteger(kv, (long) key); } // A few good choices switch( flag ) { // For this case, a complete maple list of single-word size entries is passed // in that will be translated (1-1) into an STL vector and hased in. case 1: // First get the vector length length = MapleToInteger32(kv, args[4]); // dynamically allocate the new object, and reserve space in memory for savings vP = new std::vector; vP->reserve(length); // initialize entries and hash into hashTable for(i = 1; i <= length; i++) { vP->push_back( MapleToInteger32(kv, MapleListSelect(kv, args[3], (M_INT) i))); } hashTable.insert(std::pair(key, vP)); break; // For thsi case, a complete maple list of multi-word sized entries is passed // in that will be translate (1-1) into an STL vector and hashed in. case 2: length = MapleToInteger32(kv, args[4]); VP = new std::vector; VP->reserve(length); for(i = 1; i <= length; i++) { VP->push_back( MtoLI(kv, blank, MapleListSelect(kv, args[3], (M_INT) i))); } hashTable.insert(std::pair(key, VP)); break; // In this case, the vector passed in was parsed into a two lists, the first containing // the data entries, the second containing the indice in which this entry goes. Each of // these entries are single word integers case SmallV: // Initialzie variables, get length and first indice i = 1; j = 1; length = MapleToInteger32(kv, args[5]); L = MapleToInteger32(kv, args[6]); // For speed, ensures only 1 memory management adjustment in creation vP = new std::vector; vP->reserve(L); for( ; i <= length; ++i) { index = MapleToInteger32(kv, MapleListSelect(kv, args[3], i)); // All lists are passed back in sparse form, so just add zeros // until you get to the correct index while(j < index) { vP->push_back(0L); ++j; } // Add the nonzero entry vP->push_back( (long) MapleToInteger32(kv,MapleListSelect(kv,args[4], i))); // ++index ++j; } // Now populate the rest of V with 0's for(i = index + 1 ; i <= L; ++i) vP->push_back( 0L ); hashTable.insert(std::pair(key, vP)); break; // Multi-word integer case. As above, 2 sparse lists are passed in. The first contains // all the non-zero entries. The second contains the indice of each element. case LargeV: i = 1; j = 1; length = MapleToInteger32(kv,args[5]); L = MapleToInteger32(kv, args[6]); VP = new std::vector; VP->reserve(L ); for( ; i <= length; ++i ) { index = MapleToInteger32(kv, MapleListSelect(kv, args[3], i)); while(j < index) { VP->push_back( integer(0) ); ++j; } // Add a nonzero entry VP->push_back( MtoLI(kv, blank, MapleListSelect(kv,args[4], i) )); ++j; // ++index :-) index = MapleToInteger32(kv,MapleListSelect(kv,args[3],i)); } for( ; i <= L; ++i) VP->push_back( integer(0) ); hashTable.insert(std::pair(key, VP)); break; // In case a weird action is performed, just bail out default: MapleRaiseError(kv,"ERROR! Confused by request. Bailing out."); } // Corrects for list cases. Ensures that the "flag" variable is either 3 or 4, so it will // properly correspond to the type settings in the type table // insert the type in the typeTable if(flag < 3) flag += 2; typeTable.insert(std::pair(key,flag)); return ToMapleNULL(kv); } } /* killMatrix - BackEnd "destructor" for a Maple blackbox element that goes out of scope. * Deletes the blackbox. * Pre-condition: The object hashed to by key is an active BlackBox matrix. * Post-condition: The BlackBox matrix hashed to by key is freed */ extern "C" { ALGEB killMatrix(MKernelVector kv, ALGEB* args) { char err[] = "ERROR! Associated blackbox object does not exist!"; int key = MapleToInteger32(kv,args[1]), flag; // Gets the type in question std::map::iterator i = typeTable.find(key); // If the associated object code is not there, we have a problem. Bail. if( i == typeTable.end() ) MapleRaiseError(kv,err); // Otherwise we're good flag = i->second; // Erase the entry from the typeTable typeTable.erase(key); // hash out the pointer std::map::iterator h_i = hashTable.find(key); if( h_i != hashTable.end() ) { switch( flag ) { // Free the data, whatever it is case BlackBoxi:{ TriplesBBi* ptr = (TriplesBBi*) h_i->second; delete ptr; } break; case BlackBoxI: { TriplesBBI* ptr = (TriplesBBI*) h_i->second; delete ptr; } break; } // remove the pointer and bail hashTable.erase(key); } return ToMapleNULL(kv); } } /* killVector - Backend "destructor" for a linbox vector object in Maple. Takes as input a key to the * data. Frees up dynamic memory and removes the object from the hash tables * Pre-Condition: key is a key to a valid vector object * Post-Condition: Dynamic memory is freed and the object is removed from the hash tables. */ extern "C" { ALGEB killVector(MKernelVector kv, ALGEB* args) { // Gets the key int key = MapleToInteger32(kv, args[1]), flag; char err[] = "ERROR! Associated Vector object does not exist!"; // Checks to see if the object is there. If not, bail std::map::iterator f_i = typeTable.find(key); if( f_i == typeTable.end() ) MapleRaiseError( kv, err); // We're good otherwise flag = f_i->second; // In case the flag is there but the data isn't typeTable.erase(key); // Get ahold of the data std::map::iterator h_i = hashTable.find(key); if( h_i != hashTable.end() ) { // Switch according to the vector type, small or large switch( flag) { case SmallV: { Vectorl* ptr = (Vectorl*) h_i->second; delete ptr; } break; case LargeV: { VectorI* ptr = (VectorI*) h_i->second; delete ptr; } break; } hashTable.erase(key); } // Do nothing if it isn't in there return ToMapleNULL(kv); } } /* getMatrix - Returns an rtable object initialized with the data from the blackbox. This is a bit * of a hack, as the differences between Maple versions becomes an issue. There are two methods: * 1) (if using Maple 7) use string tools to build a string that embodies the proper command to * declare an rtable object, and invoke this command with the MapleEvalStatement() function, or * 2) use Maple's RTable API to create a new RTable object (this works in Maple 8, and I'm * presuming Maple 6 and 5. Special thanks to tech support at Maple Soft for informing me that in * maple 7, the RTableCreate() function has been disabled). * Pre-Condition: The key provided by the call hashes to a valid BlackBox object * Post-Condition: An RTable object initialized with the entries of the Black Box is returned to Maple */ extern "C" { ALGEB getMatrix(MKernelVector kv, ALGEB* args) { // Get the key int key = MapleToInteger32(kv,args[1]), flag; char err[] = "ERROR! The associated BlackBox object does not exist!"; M_INT index[2], bound[4]; RTableData d; ALGEB rtable, blank; RTableSettings s; std::vector Row, Col; std::vector::const_iterator r_i, c_i; char MapleStatement[100] = "rtable(1.."; // Get the data type of the blackbox std::map::iterator f_i = typeTable.find(key); if( f_i == typeTable.end() ) // In case the blackbox isn't there MapleRaiseError(kv,err); flag = f_i->second; // Otherwise, get the blackbox type // Check that the data is there std::map::iterator h_i = hashTable.find(key); if(h_i != hashTable.end() ) { // Switch according to mode - regular or "special fix" mode switch( MapleToInteger32(kv, args[3])) { case 1: // This is the Maple 7 case, "special fix" mode // Use the EvalMapleStatement() to call the rtable constructor in the // Maple environment // Switch according to the type switch(flag) { case BlackBoxi:{ // For single word entry matrices // Extract the necessary data TriplesBBi* BB = (TriplesBBi*) h_i->second; Vectorl Data = BB->getData(); Row = BB->getRows(); Col = BB->getCols(); Vectorl::const_iterator d_i; // Builds the statement that will be used in the Maple 7 callback sprintf(MapleStatement + strlen(MapleStatement), "%d", BB->rowdim() ); strcat(MapleStatement, ",1.."); sprintf(MapleStatement + strlen(MapleStatement), "%d", BB->coldim() ); strcat(MapleStatement, ", subtype=Matrix, storage=sparse);"); // Perform the callback rtable = kv->evalMapleStatement(MapleStatement); // Insert each non-zero entry for(d_i = Data.begin(), r_i = Row.begin(), c_i = Col.begin(); r_i != Row.end(); ++d_i, ++c_i, ++r_i) { index[0] = *r_i; index[1] = *c_i; d.dag = ToMapleInteger(kv, *d_i); // d is a union, dag is the // ALGEB union field RTableAssign(kv, rtable, index, d); } } break; case BlackBoxI: { // For multi-word size matrix types TriplesBBI* BB = (TriplesBBI*) h_i->second; VectorI Data = BB->getData(); VectorI::const_iterator d_i; // Build and execute the Maple callback sprintf(MapleStatement + strlen(MapleStatement), "%d", BB->rowdim() ); strcat(MapleStatement, ", 1.."); sprintf(MapleStatement + strlen(MapleStatement), "%d", BB->coldim() ); strcat(MapleStatement, ", subtype=Matrix, storage=sparse);"); rtable = kv->evalMapleStatement(MapleStatement); for(d_i = Data.begin(), r_i = Row.begin(), c_i = Col.begin(); r_i != Row.end(); ++d_i, ++r_i, ++c_i) { index[0] = *r_i; index[1] = *c_i; // * Okay, here's how this line works. Basically, // * in order to set the entries of this RTable to // * multi-precision integers, I have to first use my own conversion // * method, LiToM, to convert the integer entry to a ALGEB structure, // * then do a callback into Maple that calls the ExToM procedure, // * which converts the results of LiToM into a Maple multi-precision // * integer. At the moment, this is the best idea I've got as to // * how to convert a GMP integer into a Maple representation in one shot. // * d.dag = EvalMapleProc(kv,args[2],1,LiToM(kv, *d_i, blank)); RTableAssign(kv, rtable, index, d); } } break; // In this case the object is not a BlackBox type default: MapleRaiseError(kv,err); break; } break; case 2: // Okay, here is the normal case. // Use RTableCreate to create a Maple rtable object kv->rtableGetDefaults(&s); // Get default settings - set datatype to Maple, // DAGTAG to anything s.subtype = RTABLE_MATRIX; // Subtype set to Matrix s.storage = RTABLE_SPARSE; // Storage set to sparse s.num_dimensions = 2; // What do you think this means :-) bound[0] = bound[2] = 1; // Set the lower bounds of each dimension to 0, which for maple is 1 switch(flag) { // Switch on data type case BlackBoxi:{ // word size entry Matrix TriplesBBi* BB = (TriplesBBi*) h_i->second; Vectorl Data = BB->getData(); Row = BB->getRows(); Col = BB->getCols(); Vectorl::const_iterator d_i; bound[1] = BB->rowdim(); bound[3] = BB->coldim(); rtable = kv->rtableCreate(&s, NULL, bound); // This is the RTableCreate function, it's // just the one that works // Assign all the non-zero rows for( d_i = Data.begin(), r_i = Row.begin(), c_i = Col.begin(); r_i != Row.end(); ++d_i, ++c_i, ++r_i) { index[0] = *r_i; index[1] = *c_i; d.dag = ToMapleInteger(kv, *d_i); // d is a union, dag is the // ALGEB union field RTableAssign(kv, rtable, index, d); } } break; case BlackBoxI: { // For multi-word entry Matrices TriplesBBI* BB = (TriplesBBI*) h_i->second; VectorI Data = BB->getData(); // Setup the Create() call VectorI::const_iterator d_i; Row = BB->getRows(); Col = BB->getCols(); bound[1] = BB->rowdim(); bound[3] = BB->coldim(); rtable = kv->rtableCreate(&s, NULL, bound); // Create an empty RTable // Populate the RTable using the callback method described below for(d_i = Data.begin(), r_i = Row.begin(), c_i = Col.begin(); r_i != Row.end(); ++d_i, ++r_i, ++c_i) { index[0] = *r_i; index[1] = *c_i; // * Okay, here's how this line works. Basically, // * in order to set the entries of this RTable to // * multi-precision integers, I have to first use my own conversion // * method, LiToM, to convert the integer entry to a ALGEB structure, // * then do a callback into Maple that calls the ExToM procedure, // * which converts the results of LiToM into a Maple multi-precision // * integer. At the moment, this is the best idea I've got as to // * how to convert a GMP integer into a Maple representation in one shot. d.dag = EvalMapleProc(kv,args[2],1,LiToM(kv, *d_i, blank)); RTableAssign(kv, rtable, index, d); } } break; } } } else MapleRaiseError(kv,err); return rtable; } } /* getVector - Returns a Maple vector initalized with the data from the LinBox vector. As above, * is a hack in order to support two differing versions in Maple. Normally, would use the RTableCreate() * function to properly create the Vector, but in Maple7 this isn't supported. The code is essentially * the same as above, accept that we are building a vector rather than a Matrix * Pre-Condition: the key provided hashes to a viable vector object in the hashTable * Post-Condition: A properly initalized vector object is returned to maple */ extern "C" { ALGEB getVector(MKernelVector kv, ALGEB* args) { // Get the key, declare variables int key = MapleToInteger32(kv,args[1]), flag; char err[] = "ERROR! The associated Vector object does not exist!"; M_INT index, bound[2]; RTableData d; RTableSettings s; ALGEB rtable, blank; char MapleStatement[100] = "rtable(1.."; // Check to see if the object pointed to by key is in the type table. If not, panic std::map::iterator f_i = typeTable.find(key); if(f_i == typeTable.end() ) { MapleRaiseError(kv, err); } // Otherwise, we have our object flag = f_i->second; // Get a pointer to the actual data std::map::iterator h_i = hashTable.find(key); if(h_i != hashTable.end() ) { // Diverge over whether we are using maple 7 or 8 ( and 5 & 6) // in Maple, arg 3 is a flag indicating which method to use switch( MapleToInteger32(kv, args[3])) { // In this case, Maple 7 is being used, we have to construct a call using "EvalMapleStatement()" // to call the RTable constructor case 1: switch(flag) { case SmallV:{ // Get the vector Vectorl* V = (Vectorl*) h_i->second; Vectorl::const_iterator V_i; // Create the Maple object sprintf(MapleStatement + strlen(MapleStatement), "%d", V->size() ); strcat(MapleStatement, ", subtype=Vector[column], storage=sparse)"); rtable = kv->evalMapleStatement(MapleStatement); // populate the Maple vector w/ the entries from V above for(index = 1, V_i = V->begin(); V_i != V->end(); ++V_i, ++index) { d.dag = ToMapleInteger(kv, *V_i); // d is a union, dag is the // ALGEB union field RTableAssign(kv, rtable, &index, d); } } break; case LargeV: { // This part works the same way as above VectorI* V = (VectorI*) h_i->second; VectorI::const_iterator V_i; sprintf(MapleStatement + strlen(MapleStatement), "%d", V->size() ); strcat(MapleStatement, ",subtype=Vector[column], storage=sparse)"); rtable = kv->evalMapleStatement(MapleStatement); // Use maple callback to call the procedure from Maple that translates a gmp integer // into a large maple integer. Then put this into the Maple vector for(index = 1, V_i = V->begin(); V_i != V->end(); ++V_i, ++index) { /* Okay, here's how this line works. Basically, * in order to set the entries of this RTable to * multi-precision integers, I have to first use my own conversion * method, LiToM, to convert the integer entry to a ALGEB structure, * then do a callback into Maple that calls the ExToM procedure, * which converts the results of LiToM into a Maple multi-precision * integer. At the moment, this is the best idea I've got as to * how to convert a GMP integer into a Maple representation in one shot. */ d.dag = EvalMapleProc(kv,args[2],1,LiToM(kv, *V_i, blank)); RTableAssign(kv, rtable, &index, d); } } break; default: MapleRaiseError(kv, err); break; } break; // In this case, use the simpler RTableCreate function, rather than building a string // that must be parsed by maple case 2: kv->rtableGetDefaults(&s); // Get default settings - set datatype to Maple, // DAGTAG to anything s.subtype = 2; // Subtype set to column vector s.storage = 4; // Storage set to rectangular s.num_dimensions = 1; // What do you think this means :-) bound[0] = 1; // Set the lower bounds of each dimension to 0 switch(flag) {// Switch on data type of vector case SmallV:{ // single word integer entry vector Vectorl* V = (Vectorl*) h_i->second; Vectorl::const_iterator V_i; bound[1] = V->size(); rtable = kv->rtableCreate(&s, NULL, bound); // Create the Maple vector for(index = 1, V_i = V->begin(); V_i != V->end(); ++V_i, ++index) { d.dag = ToMapleInteger(kv, *V_i); // d is a union, dag is the // ALGEB union field RTableAssign(kv, rtable, &index, d); } } break; case LargeV: { // Same as above for multi-word integer entry vector VectorI* V = (VectorI*) h_i->second; VectorI::const_iterator V_i; bound[1] = V->size(); rtable = kv->rtableCreate(&s, NULL, bound); for(index = 1, V_i = V->begin(); V_i != V->end(); ++V_i, ++index) { /* Okay, here's how this line works. Basically, * in order to set the entries of this RTable to * multi-precision integers, I have to first use my own conversion * method, LiToM, to convert the integer entry to a ALGEB structure, * then do a callback into Maple that calls the ExToM procedure, * which converts the results of LiToM into a Maple multi-precision * integer. At the moment, this is the best idea I've got as to * how to convert a GMP integer into a Maple representation in one shot. */ d.dag = EvalMapleProc(kv,args[2],1,LiToM(kv, *V_i, blank)); RTableAssign(kv, rtable, &index, d); } } break; default: MapleRaiseError(kv, err); break; } break; // breaks case 2. // This was causing a wicked error :-) default: MapleRaiseError(kv, err); break; } } else { MapleRaiseError(kv, err); } return rtable; } } /* apply - Application function, Takes a Blackbox A and Vector X and performs the apply Ax. * There's alot of code here that essentially leads to simply calling the BlackBox's apply routine, * but there is alot that can go wrong with this call. * Pre-Condition: BlackBox & Vector objects exist in the hashtable; Blackbox data-type can handle * size of vector (ie - not trying to apply a large entry vector to a small entry Matrix * Post-Condition: New Vector is produced, put into hash table for future calls, access key returned * to Maple */ extern "C" { ALGEB apply(MKernelVector kv, ALGEB* args) { // There are probably a million better random number generators, but for the moment I use this one int BBKey = MapleToInteger32(kv,args[1]), VKey = MapleToInteger32(kv,args[2]), bflag, vflag, nKey; VectorI *tempIV, newV; Vectorl *tempiV, *vp; char MisMatchErr[] = "ERROR! The Vector elements are not in the field of the Matrix!"; char BBnoFind[] = "ERROR! The associated Blackbox object does not exist!"; char VectnoFind[] = "ERROR! The associated Vector object does not exist!"; std::map::iterator f_i; std::map::iterator h_i; // Get the random key from Maple nKey = MapleToInteger32(kv, args[3]); // Hash out the blackbox type f_i = typeTable.find(BBKey); if( f_i == typeTable.end() ) MapleRaiseError(kv, BBnoFind); else bflag = f_i->second; // Hash out the vector type f_i = typeTable.find(VKey); if( f_i == typeTable.end() ) MapleRaiseError(kv, VectnoFind); else vflag = f_i->second; // check that there isn't a type mismatch if( bflag == BlackBoxi && vflag == LargeV) // If this comes up, it means we have a large int vector, and a small int blackbox. Bad MapleRaiseError(kv, MisMatchErr); else if( bflag == BlackBoxI && vflag == SmallV) { // If this comes up, it means we have a small int vector, and a large int blackbox. Not fatal. h_i = hashTable.find(BBKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, BBnoFind); TriplesBBI* BB = (TriplesBBI*) h_i->second; h_i = hashTable.find(VKey); if(h_i == hashTable.end() ) MapleRaiseError(kv, VectnoFind); vp = (Vectorl*) h_i->second; // Converts the small vector into a large vector // Note, the reserve ensures there will only be at most one reallocation neccessary newV.reserve(vp->size() ); for(Vectorl::iterator i = vp->begin(); i != vp->end(); ++i) newV.push_back(integer(*i)); // Puts tempIV on the stack, so that it will persist. Also, set the correct size tempIV = new VectorI; tempIV->resize( BB->coldim() ); // Perform the apply BB->apply( *tempIV, newV); hashTable.insert(std::pair(nKey, tempIV)); typeTable.insert(std::pair(nKey, LargeV)); } else { // In this case, the types match (single word integer matrix w/ single word integer vector, // or multi-word entry w/ multi-word entry. This simplifies the code a good bit switch( bflag) { case BlackBoxi: { // Get the BlackBox h_i = hashTable.find(BBKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, BBnoFind); TriplesBBi* BB = (TriplesBBi*) h_i->second; // Get the Vector h_i = hashTable.find(VKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, VectnoFind); vp = (Vectorl*) h_i->second; // Perform the apply. Note, sets the temp vector's size to the columnar dimension tempiV = new Vectorl; tempiV->resize( BB->coldim() ); BB->apply(*tempiV, *vp); // Hash the results hashTable.insert(std::pair(nKey, tempiV)); typeTable.insert(std::pair(nKey,SmallV)); } break; case BlackBoxI: { // Get the BlackBox h_i = hashTable.find(BBKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, BBnoFind ); TriplesBBI* BB = (TriplesBBI*) h_i->second; // Get the vector h_i = hashTable.find(VKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, VectnoFind ); VectorI* Vp = (VectorI*) h_i->second; // Perform the apply tempIV = new VectorI; tempIV->resize( BB->coldim() ); BB->apply( *tempIV, *Vp); // Hash in the results hashTable.insert(std::pair(nKey, tempIV)); typeTable.insert(std::pair(nKey,LargeV)); } break; } } // If you get to this point, something has been hashed in, so return the key return ToMapleInteger(kv, (long) nKey); } } /* applyT - Application function. Takes a Blackbox A and Vector X and performs the transpose apply, * Atx. There's alot of code here that essentially leads to simply calling the BlackBox's apply routine, * but there is alot that can go wrong with this call. * Pre-Condition: BlackBox & Vector objects exist in the hashtable; Blackbox data-type can handle * size of vector (ie - not trying to apply a large entry vector to a small entry Matrix * Post-Condition: New Vector is produced, put into hash table for future calls, access key returned * to Maple */ extern "C" { ALGEB applyT(MKernelVector kv, ALGEB* args) { int BBKey = MapleToInteger32(kv,args[1]), VKey = MapleToInteger32(kv,args[2]), bflag, vflag, nKey; char misMatchErr[] = "ERROR! Vector not in field of blackbox!"; char BBnoFindErr[] = "ERROR! The associated blackbox object does not exist!"; char VectNoFindErr[] = "ERROR! The associated vector object does not exist!"; VectorI *tempIV, newV; Vectorl *tempiV, *vp; std::map::iterator f_i; std::map::iterator h_i; // Creates the new key nKey = MapleToInteger32(kv, args[3]); // Hash out the blackbox type f_i = typeTable.find(BBKey); if( f_i == typeTable.end() ) MapleRaiseError(kv,BBnoFindErr); else bflag = f_i->second; // Hash out the vector type f_i = typeTable.find(VKey); if( f_i == typeTable.end() ) MapleRaiseError(kv,VectNoFindErr); else vflag = f_i->second; // check that there isn't a type mismatch if( bflag == BlackBoxi && vflag == LargeV) // If this comes up, it means we have a large int vector, and a small int blackbox. Bad MapleRaiseError(kv, misMatchErr); else if( bflag == BlackBoxI && vflag == SmallV) { // If this comes up, it means we have a small int vector, and a large int blackbox. Not fatal. // Bail if data can't be found h_i = hashTable.find(BBKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, BBnoFindErr); TriplesBBI* BB = (TriplesBBI*) h_i->second; h_i = hashTable.find(VKey); if(h_i == hashTable.end() ) MapleRaiseError(kv, VectNoFindErr); // Build a large entry vector and populate it with the converted data from the small entry vector vp = (Vectorl*) h_i->second; newV.reserve( vp->size() ); for(Vectorl::iterator i = vp->begin(); i != vp->end(); ++i) newV.push_back(integer(*i)); // Puts tempIV on the stack, so that it will persist tempIV = new VectorI; tempIV->resize( BB->rowdim() ); // Perform the apply BB->applyTranspose( *tempIV, newV); hashTable.insert(std::pair(nKey, tempIV)); typeTable.insert(std::pair(nKey, LargeV)); } else { // For types that match (small Blackbox w/ small Vector or large blackbox w/ large vector) switch( bflag) { case BlackBoxi: { // Get the BlackBox h_i = hashTable.find(BBKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, BBnoFindErr); TriplesBBi* BB = (TriplesBBi*) h_i->second; // Get the Vector h_i = hashTable.find(VKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, VectNoFindErr); vp = (Vectorl*) h_i->second; // Perform the apply tempiV = new Vectorl; tempiV->resize( BB->rowdim() ); BB->applyTranspose( *tempiV, *vp); // Hash the results hashTable.insert(std::pair(nKey, tempiV)); typeTable.insert(std::pair(nKey,SmallV)); } break; case BlackBoxI: { // Get the BlackBox h_i = hashTable.find(BBKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, BBnoFindErr); TriplesBBI* BB = (TriplesBBI*) h_i->second; // Get the vector h_i = hashTable.find(VKey); if( h_i == hashTable.end() ) MapleRaiseError(kv, VectNoFindErr); VectorI* Vp = (VectorI*) h_i->second; // Perform the apply tempIV = new VectorI; tempIV->resize( BB->rowdim() ); BB->applyTranspose( *tempIV, *Vp); // Hash in the results hashTable.insert(std::pair(nKey, tempIV)); typeTable.insert(std::pair(nKey,LargeV)); } break; } } // If you get to this point, something has been hashed in, so return the key return ToMapleInteger(kv, (long) nKey); } } /* rank - one of the three main "solution" functions, computes the rank of a BlackBox in the hash table * Rank is computed using the rank function from the linbox repository * Pre-Condition: key provided hashes to a valid blackbox object * Post-Condition: the rank is returned to maple as an int */ extern "C" { ALGEB rank(MKernelVector kv, ALGEB* args) { int key = MapleToInteger32(kv,args[1]), flag; unsigned long result; char err[] = "ERROR! Associated blackbox object does not exist!"; TriplesBBi* BBi; TriplesBBI* BBI; std::map::iterator f_i = typeTable.find(key); std::map::iterator h_i; if(f_i == typeTable.end() ) MapleRaiseError(kv,err); else flag = f_i->second; h_i = hashTable.find(key); if( h_i != hashTable.end() ) { switch( flag ) { case BlackBoxi: BBi = (TriplesBBi*) h_i->second; return ToMapleInteger(kv, LinBox::rank(result, *BBi, BBi->field() ) ); // <- actual computation starts break; // here :-) case BlackBoxI: BBI = (TriplesBBI*) h_i->second; return ToMapleInteger(kv,LinBox::rank(result, *BBI, BBI->field() )); break; } } else MapleRaiseError(kv,err); } } /* det - Another major "application" function, this computes the determinant of the blackbox mod the * prime using the LinBox determinant methods, of which I know very little. Look at the * documentation in the solutions directory for more details. * Pre-condition: Key hashes to a valid BlackBox object * Post-condition: The modular determinant of the blackbox is returned as a maple integer */ extern "C" { ALGEB det(MKernelVector kv, ALGEB* args) { char err[] = "ERROR! Associated blackbox object does not exist!"; int key = MapleToInteger32(kv,args[1]), flag; std::map::iterator f_i; std::map::iterator h_i; long resulti; integer resultI; ALGEB blank; TriplesBBi *BBi; TriplesBBI *BBI; // Get the blackbox f_i = typeTable.find(key); if( f_i == typeTable.end() ) MapleRaiseError(kv,err); else flag = f_i->second; // If it's there h_i = hashTable.find(key); if( h_i != hashTable.end() ) { switch( flag ) { // switch on the type case BlackBoxi: BBi = (TriplesBBi*) h_i->second; return ToMapleInteger(kv, LinBox::det(resulti, *BBi, BBi->field() ) ); break; case BlackBoxI: BBI = (TriplesBBI*) h_i->second; return LiToM(kv, LinBox::det(resultI, *BBI, BBI->field() ), blank); break; } } else MapleRaiseError(kv, err); } } /* minpoly - Compute the minimal polynomial of the BlackBox matrix using linbox's minpoly solution. * I have no clue how it works, just that it does. This one is slightly more complicated than the * other two above * Pre-condition: Key maps to a valid BlackBox object in the hashTable * Post-condition: A Maple list of the polynomial coefficients, lowest degree first, is returned */ extern "C" { ALGEB minpoly(MKernelVector kv, ALGEB* args) { int i; ALGEB retlist, blank; char err[] = "ERROR! Associated blackbox object does not exist!"; int key = MapleToInteger32(kv,args[1]), flag; std::map::iterator f_i; std::map::iterator h_i; // Get the data from the hash table f_i = typeTable.find(key); if( f_i == typeTable.end() ) MapleRaiseError(kv,err); else flag = f_i->second; h_i = hashTable.find(key); if(h_i != hashTable.end() ) { // We've got data switch( flag ) { // Getting the minimal polynomial is rather complicated, so both instances of this code were // wrapped up inside a block, to cut down at the clutter at the top of this function. // First declares a vector of the proper type and casts the pointer. Then computes the minimal // polynomial. It then builds the proper Maple list structure for this application. case BlackBoxi: { Vectorl mpreturn; Vectorl::iterator mp_i; TriplesBBi* BB = (TriplesBBi*) h_i->second; LinBox::minpoly( mpreturn, *BB, BB->field() ); retlist = MapleListAlloc(kv, mpreturn.size() ); for(i = 1, mp_i = mpreturn.begin(); mp_i != mpreturn.end(); ++mp_i, ++i) MapleListAssign(kv, retlist, i, ToMapleInteger(kv, *mp_i)); } break; case BlackBoxI: { VectorI mpreturn; VectorI::iterator mp_i; TriplesBBI* BB = (TriplesBBI*) h_i->second; LinBox::minpoly( mpreturn, *BB, BB->field() ); retlist = MapleListAlloc(kv, mpreturn.size()); for(i = 1, mp_i = mpreturn.begin(); mp_i != mpreturn.end(); ++mp_i, ++i) MapleListAssign(kv, retlist, i, LiToM(kv, *mp_i, blank)); } break; } } else MapleRaiseError(kv,err); return retlist; } } /* LiToM - Converts from a GMP integer to a Maple list of word-size chunks * these chunks are passed back into Maple and converted by into maple represented integers * Pre-Condition: In is an initialized GMP number, Out can be initialized (or re-initialized) * Post-Condition: Out is an initalized maple integer containing the value of In */ ALGEB & LiToM(MKernelVector & kv, const integer & In, ALGEB & Out) { // If we get lucky, this thing fits in one word, which is good, so we just // straight convert it if(In.size() == 1) Out = ToMapleInteger(kv, Integer2long(In) ); else { // Otherwise, create a list, and for each entry, add a word-sized chunk. Out = MapleListAlloc(kv, In.size() ); for(size_t i = 1; i <= In.size(); ++i) MapleListAssign(kv,Out,i,ToMapleInteger(kv,In[i-1])); } // Return the result for redundancy return Out; } /* MtoLI - conversion between long integers passed from maple into gmp integers * Uses Horners method. * Pre-Condition: Out is un-initialized (or can be re-initialized), In is either an int or a * list * Post-Condition: Out contains a GMP version of In. */ integer & MtoLI(MKernelVector & kv, integer & Out, const ALGEB &In) { // We just need 1 base. By default, Maple breaks all integers of a certain size up into // mod 10000 chunks. The chunks are put into a maple list, and then passed into code static integer base(10000); int num, i; // This could be an int if( IsMapleInteger32(kv,In) ) // if so, just convert it Out = integer(MapleToInteger32(kv, In)); else { // else, get the number of chunks, and convert the highest chunk of In num = MapleToInteger32(kv, MapleListSelect(kv, In, 1) ); Out = integer(MapleToInteger32(kv, MapleListSelect(kv,In, num) ) ); for(i = num - 1; i > 1; --i) { // For each additional chunk, multiply Out by the base, and add in the new chunk Out *= base; Out += MapleToInteger32(kv, MapleListSelect( kv, In, i)); } } // redundant return Out; } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/maple-old/lbmaple.mpl.head000066400000000000000000000010701274717217100220430ustar00rootroot00000000000000module LinBox() local create, destroy, lbXapply, lbXapplyT, lbXinitBB, lbXinitV, lbXrank, lbXdet, lbXmp, lbXssolve, lbXstart1, lbXstart2, lbXend, lbXgetMatrix, lbXkillMatrix, lbXgetVector, lbXkillVector, lbXgetEntryVector, lbXgetEntryMatrix, ExToMap, MapToEx, libname, ObjKeyCount; export LinBoxBB, LBrank, LBdet, LBminpoly, LBapply, LBapplyTranspose, LinBoxV; # LBDiag, LBSolve; option package, load=create, unload=destroy; description "Maple interface to LinBox methods & functions"; create := proc() global `type/LinBoxBB`, `type/LinBoxV`; libname :=linbox-1.4.2/interfaces/maple-old/lbmaple.mpl.tail000066400000000000000000000225301274717217100220770ustar00rootroot00000000000000 lbXend := define_external('End', MAPLE,LIB=libname); lbXapply := define_external('apply', MAPLE,LIB=libname); lbXapplyT := define_external('applyT', MAPLE,LIB=libname); lbXinitV := define_external('initV', MAPLE,LIB=libname); # lbXdiag := define_external('diag', MAPLE,LIB=libname); lbXinitBB := define_external('initBB', MAPLE,LIB=libname); lbXrank := define_external('rank',MAPLE,LIB=libname); lbXdet := define_external('det', MAPLE,LIB=libname); lbXmp := define_external('minpoly', MAPLE,LIB=libname); # lbXssolve := define_external('ssolve', MAPLE,LIB=libname); lbXgetMatrix := define_external('getMatrix', MAPLE,LIB=libname); lbXgetVector := define_external('getVector',MAPLE,LIB=libname); lbXkillMatrix := define_external('killMatrix', MAPLE,LIB=libname); lbXkillVector := define_external('killVector', MAPLE,LIB=libname); # lbXgetEntryVector := define_external('getEntryVector',MAPLE,LIB=libname); # lbXgetEntryMatrix := define_external('getEntryMatrix',MAPLE,LIB=libname); `type/LinBoxBB` := `module`(getMatrix) ; `type/LinBoxV` := `module`(getVector) ; ObjKeyCount := 0; end proc; create(); destroy := proc() lbXend(); end proc; ExToMap := proc() local b0, s, r, A, i; if type(args[1], integer) then args[1]; else A := args[1]; s := A[nops(A)]; b0 := 2^kernelopts(wordsize); for i from nops(A) - 1 to 1 do s := s * b0 + A[i]; od; s fi; end proc; MapToEx := proc(num::integer) local r; if num < kernelopts(maximmediate) then num; else r := [disassemble(addressof(num))]; subsop(1=nops(r),r); fi; end proc; LinBoxBB := proc( ) local k, f, D, R, C, rows, cols, s, nnz, M, p, check; if type(args[1], posint) then if nargs = 1 then k := args[1]; elif type(args[2], posint) and type(args[3], posint) and type(args[4], procedure) then p := args[1]; rows := args[2]; cols := args[3]; ObjKeyCount := ObjKeyCount + 1; k := ObjKeyCount; check := x -> evalb(rhs(x) <> 0); s := select(check, {seq(seq( (i,j)=apply(args[4],i,j), i=1..rows),j=1..cols)} ); # Pick out all the non-zero's nnz := nops(s); D := [seq(rhs(s[i]),i=1..nnz)]; R := [seq(lhs(s[i])[1], i=1..nnz)]; C := [seq(lhs(s[i])[2], i=1..nnz)]; lbXinitBB(2, k, p, D, R, C, rows, cols, nnz); elif type(args[2], Matrix) then ObjKeyCount := ObjKeyCount + 1; k := ObjKeyCount; M := args[2]; p := args[1]; # if p = 0 then # ... insert special code for integer ring # computation, as opposed to finite field computation if op(3,M)[1] = 'datatype=integer[4]' then lbXinitBB(1, k, p, M); elif p < kernelopts(maximmediate) then s := op(2,M); nnz := nops(s); rows := op(1,M)[1]; cols := op(1,M)[2]; D := [seq(rhs(s[i]),i=1..nnz)]; R := [seq(lhs(s[i])[1],i=1..nnz)]; C := [seq(lhs(s[i])[2],i=1..nnz)]; lbXinitBB(2, k, p, D, R, C, rows, cols, nnz); else s := op(2,M); nnz := nops(s); rows := op(1,M)[1]; cols := op(1,M)[2]; D := [seq(MapToEx(rhs(s[i])),i=1..nnz)]; R := [seq(lhs(s[i])[1],i=1..nnz)]; C := [seq(lhs(s[i])[2],i=1..nnz)]; lbXinitBB(3, k, MapToEx(p), D, R, C, rows, cols, nnz); fi; else error "Wrong number or type of parameters!"; fi; else error "Wrong number or type of parameters!"; fi; module() local destruct; export getMatrix, key; # getEntry option unload = destruct; description "Maple Container for LinBox blackbox"; key := k; getMatrix := proc() # Implents difference between Maple 7 & 6(8) # Many thanks to MapleSoft for pointing out the need for a workaround # for Maple v7 # If you are running v7, run the "exceptional" function # otherwise, run the normal function if `Maple 7` = substring(kernelopts(version),1..7) then lbXgetMatrix(k, ExToMap , 1); else lbXgetMatrix(k, ExToMap , 2); fi; end proc; # getEntry := proc(i::posint, j::posint) # lbXgetEntryMatrix(key, i, j); # end proc; destruct := proc() lbXkillMatrix(k): end proc; end module end proc; LinBoxV := proc() local k, index, L, mode, V, p, t, i, f; if type(args[1], posint) then # two possibilities: Vector from # a existing vector (key), or # build one from a proc if nargs = 1 then k := args[1]; elif type(args[2], 'procedure') then ObjKeyCount := ObjKeyCount + 1; k := ObjKeyCount; mode := 1; f := args[2]; p := proc(n) local r; r := MapToEx(apply(f, n)); if type(r, list) then mode := 2; fi; r end proc; L := [seq(p(t), t=1..args[1])]; lbXinitV(mode, k, L, args[1]); else error "Wrong number or type of parameters!"; end if; elif type(args[1], Vector) then # No key, we're translating from a vector ObjKeyCount := ObjKeyCount + 1; k := ObjKeyCount; V := args[1]; p := proc(n) local r; r := MapToEx(rhs(n)); if type(r,list) then mode := 4; fi; r end proc; mode := 3; t := sort(op(table(op(2,V))), (x,y)->( lhs(x) < lhs(y) ) ); index := map(lhs, t); L := map(p, t); lbXinitV(mode, k, index, L, nops(index), op(1,V) ); elif type( args[1], list) then ObjKeyCount := ObjKeyCount + 1; k := ObjKeyCount; lbXinitV(1,k, args[1], nops(args[1]) ); else error "Wrong number or type of parameters!"; fi; module() local destruct; export getVector, key; #getEntry description "Maple container for LinBox Vector"; option unload = destruct; key := k; destruct := proc() lbXkillVector(key); end proc; # getEntry := proc(i::posint) # lbXgetEntryVector(key, i); # end proc; getVector := proc() # Once again, split b/c of difference between Maple 7 and 6(8) # For maple 7, run the special getMatrix function # otherwise, run the normal function if `Maple 7` = substring(kernelopts(version),1..7) then lbXgetVector(key, ExToMap, 1); else lbXgetVector(key, ExToMap, 2); fi; end proc; end module end proc; LBapply := proc() local M, V, R, f; # if Matrix is not LinBox BB, make it so if type(args[1], posint) and type(args[2], Matrix) then if type(args[3], Vector) then M := LinBoxBB(args[1], args[2]); V := LinBoxV(args[3]); f := 1; elif type(args[3], LinBoxV) then M := LinBoxBB(args[1], args[2]); V := args[3]; f := 2; else error "Wrong number or type of parameters!"; fi; elif type(args[1], LinBoxBB) then M := args[1]; if type(args[2], Vector) then V := LinBoxV(args[2]); f := 1; elif type(args[2], LinBoxV) then V := args[2]; f := 2; fi; else error "Wrong number or type of parameters!"; fi; ObjKeyCount := ObjKeyCount + 1; lbXapply(M:-key, V:-key, ObjKeyCount ); if f = 1 then # if the user sends the vector # as a maple type, return # as that type R := LinBoxV(ObjKeyCount); R:-getVector() else LinBoxV(ObjKeyCount) end if; end proc; LBapplyTranspose := proc() local M, V, R, f; if type(args[1], posint) and type(args[2], Matrix) then if type(args[3], Vector) then M := LinBoxBB(args[1], args[2]); V := LinBoxV(args[3]); f := 1; elif type(args[3], LinBoxV) then M := LinBoxBB(args[1], args[2]); V := args[3]; f := 2; else error "Wrong number or type of parameters!"; fi; elif type(args[1], LinBoxBB) then M := args[1]; if type(args[2], Vector) then V := LinBoxV(args[2]); f := 1; elif type(args[2], LinBoxV) then V := args[2]; f := 2; else error "Wrong number or type of parameters!"; fi; else error "Wrong number or type of paramters!"; fi; ObjKeyCount := ObjKeyCount + 1; lbXapplyT(M:-key, V:-key, ObjKeyCount ); if f = 1 then # if the user sends the vector # as a maple type, return # as that type R := LinBoxV(ObjKeyCount); R:-getVector(); else LinBoxV(ObjKeyCount); fi; end proc; LBrank := proc() local M; if type(args[1], LinBoxBB) then M := args[1]; elif type(args[1], posint) and type(args[2], Matrix) then M := LinBoxBB(args[1], args[2]); else error "Wrong number or type of parameters!"; fi; lbXrank(M:-key); end proc; LBdet := proc() local M; if type(args[1], LinBoxBB) then M := args[1]; elif type(args[1], posint) and type(args[2], Matrix) then M := LinBoxBB(args[1], args[2]); else error "Wrong number or type of parameters!"; fi; lbXdet(M:-key); end proc; # minpoly function. If no variable name is given, then a list # containg the coefficients in sorted order, from degree lowest to # highest is returned (note this is a dense coefficient vector, there # are zeros here LBminpoly := proc() local L, i, x, M; if type(args[1], LinBoxBB) then M := args[1]; if nargs = 1 then x := true; elif nargs = 2 and type(args[2],name) then x := args[2]; else error "Wrong number or type of parameters!"; fi; elif type(args[1],posint) and type(args[2], Matrix) then M := LinBoxBB(args[1], args[2]); if nargs = 2 then x := true; elif nargs = 3 and type(args[3], name) then x := args[3]; else error "Wrong number or type of parameters!"; fi; else error "Wrong number or type of parameters!"; fi; L := lbXmp(M:-key); L := [seq(ExToMap(L[i]),i=1..nops(L))]; if type(x, boolean) then L else add(ExToMap(L[i])*x^(i-1),i=1..nops(L)) end if; end proc; end module: with(LinBox); linbox-1.4.2/interfaces/maple/000077500000000000000000000000001274717217100162435ustar00rootroot00000000000000linbox-1.4.2/interfaces/maple/Makefile.am000066400000000000000000000030111274717217100202720ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== if LINBOX_HAVE_MAPLE pkgincludesubdir=$(includedir)/interfaces/maple/new AM_CPPFLAGS =-I$(top_srcdir) -I. -I../../linbox AM_CXXFLAGS = @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR -I../driver $(NTL_CFLAGS) $(MAPLE_CFLAGS) lib_LTLIBRARIES=liblbmaple.la liblbmaple_la_SOURCES= lb-maple.C liblbmaple_la_LDFLAGS= $(NTL_LIBS) $(MAPLE_LIBS) $(top_srcdir)/interfaces/driver/liblbdriver.la -Wl,-zmuldefs $(LDFLAGS) pkginclude_HEADERS =lb-maple.h lb-maple-utilities.h install-data-local: sh lb-maple-path.sh "$(libdir)/liblbmaple.so" $(INSTALL_DATA) lb-maple.mpl $(libdir)/lb-maple.mpl install-data-hook: cd $(libdir) && \ $(MAPLE_HOME)/bin/maple lb-maple.mpl 2>&1 > /dev/null endif linbox-1.4.2/interfaces/maple/lb-maple-path.pl000066400000000000000000000000741274717217100212240ustar00rootroot00000000000000#!/usr/bin/perl $sentence= s/lbpathvalue/lbpath:=$ARGV[1];linbox-1.4.2/interfaces/maple/lb-maple-path.sh000066400000000000000000000002311274717217100212160ustar00rootroot00000000000000#!/usr/bin/sh if test -r "lb-maple.mpl.bak"; then mv lb-maple.mpl.bak lb-maple.mpl fi sed -e "s|lbpathvalue|lbpath:=\"$1\";|" -i.bak lb-maple.mpl linbox-1.4.2/interfaces/maple/lb-maple-utilities.h000066400000000000000000000472331274717217100221270ustar00rootroot00000000000000/* lb-maple-utilities.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_maple_utilities_H #define __LINBOX_lb_maple_utilities_H #include "linbox/linbox-config.h" #include extern "C" { #include #include #include "mpltable.h" } //#define __LB_PRINT_GC #define __LINBOX_GC extern "C" { #ifdef __LINBOX_MAPLE_GMP_ACCESS extern void * (*__gmp_allocate_func)(size_t); extern void * (*__gmp_reallocate_func)(void*, size_t,size_t); extern void (*__gmp_free_func)(void*, size_t); static void * (*LB_GMP_ALLOC)(size_t) = __gmp_allocate_func; static void * (*LB_GMP_REALLOC)(void*,size_t,size_t) = __gmp_reallocate_func; static void (*LB_GMP_FREE)(void*,size_t) = __gmp_free_func; #endif void LB_GMP_SET(){ #ifdef __LINBOX_MAPLE_GMP_ACCESS mp_set_memory_functions(NULL,NULL,NULL); #endif } void LB_GMP_RESTORE() { #ifdef __LINBOX_MAPLE_GMP_ACCESS mp_set_memory_functions(LB_GMP_ALLOC,LB_GMP_REALLOC, LB_GMP_FREE); #endif } /********************************* * Raising LinBox error in Maple * *********************************/ static void lbRaiseError(MKernelVector kv, lb_runtime_error &t){ std::ostringstream out; out<s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/maple/lb-maple.C000066400000000000000000000760321274717217100200500ustar00rootroot00000000000000/* lb-maple.C * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_maple_C #define __LINBOX_lb_maple_C #include #include #include #include #include "linbox/util/timer.h" extern "C"{ #include } extern "C" { /*********************************** * Initializer of LinBox interface * ***********************************/ ALGEB lbStart (MKernelVector kv, ALGEB *argv){ //MaplePrintf(kv, "LinBox driver initialization...\n"); try {LinBoxInit();} catch(lb_runtime_error &t){lbRaiseError(kv, t);} lb_kv = kv; return ToMapleNULL(kv); } ALGEB lbStop (MKernelVector kv, ALGEB *argv){ //MaplePrintf(kv, "LinBox driver termination..."); std::cout<<"terminating LinBox..."; //try{LinBoxEnd();} //catch(lb_runtime_error &t){lbRaiseError(kv, t);} std::cout<<"done\n"; return ToMapleNULL(kv); } /************************************** * Information from the LinBox driver * **************************************/ ALGEB lbDataInfo (MKernelVector kv, ALGEB *argv){ std::ostringstream out; LinBoxDataInfo(out); size_t l=out.str().length(); char* msg = new char[l]; strncpy(msg, out.str().c_str(), l); MaplePrintf(kv, msg); delete msg; return ToMapleNULL(kv); } /****************************************** ****************************************** *** Function to create LinBox's object *** ****************************************** ******************************************/ /********************************** * Interface to create an element * **********************************/ ALGEB lbCreateElement (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); if (argc != 1){ MapleRaiseError(kv, "wrong number of arguments"); return ToMapleNULL(kv); } const DomainKey *key = &MapleToDomainKey(kv, argv[1]); try { LB_GMP_SET(); const EltKey *k = &createElement(*key); LB_GMP_RESTORE(); return ElementKeyToMaple(kv, *k); } catch ( lb_runtime_error &t ) { lbRaiseError(kv, t); return ToMapleNULL(kv); } } /******************************** * Interface to create a domain * ********************************/ ALGEB lbCreateDomain (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); const DomainKey *key; try { if (argc < 1){ LB_GMP_SET(); key = &createDomain(0); LB_GMP_RESTORE(); return DomainKeyToMaple(kv, *key); } //LinBox::integer *p = GMPMapleToLinBox(kv, argv[1]); LinBox::integer p; GMPMapleToLinBox(p, kv, argv[1]); if (argc == 1){ LB_GMP_SET(); key = &createDomain(p); LB_GMP_RESTORE(); return DomainKeyToMaple(kv, *key); } if (argc == 2){ LB_GMP_SET(); key = &createDomain(p, MapleToString(kv, argv[2])); LB_GMP_RESTORE(); return DomainKeyToMaple(kv, *key); } if (argc > 2){ MapleRaiseError(kv, "wrong number of argument"); return ToMapleNULL(kv); } } catch ( lb_runtime_error &t ) { lbRaiseError(kv, t); return ToMapleNULL(kv);} return ToMapleNULL(kv); } /********************************** * Interface to create a blackbox * **********************************/ ALGEB lbCreateBlackboxFromMatrix(MKernelVector kv, ALGEB A, const LinBox::integer &p){ RTableSettings setting; RTableGetSettings(kv,&setting,A); size_t m,n; m = RTableUpperBound(kv, A, 1); n = RTableUpperBound(kv, A, 2); std::stringstream *buffer= new std::stringstream();//std::string(buffer_data, m*n)); //Timer chrono; //chrono.start(); if (setting.storage == RTABLE_RECT) DenseMatrixToBuffer(kv, A, *buffer, m, n, setting); else if (setting.storage == RTABLE_SPARSE) SparseMatrixToBuffer(kv, A, *buffer, m, n, setting); else MapleRaiseError(kv, "Matrix storage must be either dense or sparse"); //chrono.stop(); //std::ofstream FILE("MAPLE_FILE.TXT"); //FILE<str()<<"\n"; //FILE.close(); //std::cout<<"buffering in <- : "< : "< 4)){ MapleRaiseError(kv, "wrong number of arguments"); return ToMapleNULL(kv); } try { if (argc == 1){ if (IsMapleRTable(kv, argv[1])) return lbCreateBlackboxFromMatrix(kv, argv[1], LinBox::integer(0)); } if (argc == 2){ if (IsMapleInteger(kv, argv[1]) && IsMapleRTable(kv, argv[2])){ //LinBox::integer *p = GMPMapleToLinBox(kv, argv[1]); LinBox::integer p; GMPMapleToLinBox(p, kv, argv[1]); LB_GMP_SET(); ALGEB ret = lbCreateBlackboxFromMatrix(kv, argv[2], p); LB_GMP_RESTORE(); return ret; } if (IsMapleDomainKey(kv, argv[1]) && IsMapleString(kv, argv[2])) { const DomainKey *k = &MapleToDomainKey(kv, argv[1]); std::ifstream in(MapleToString(kv, argv[2])); LB_GMP_SET(); key = &createBlackbox(*k, in); LB_GMP_RESTORE(); return BlackboxKeyToMaple(kv, *key); } } if (argc == 3){ if (IsMapleDomainKey(kv, argv[1])){ const DomainKey *k = &MapleToDomainKey(kv, argv[1]); if (IsMapleInteger(kv, argv[2])){ LB_GMP_SET(); key = &createBlackbox(*k, MapleToInteger32(kv, argv[2]), MapleToInteger32(kv, argv[3])); LB_GMP_RESTORE(); } else { std::ifstream in( MapleToString(kv, argv[2])); LB_GMP_SET(); key = &createBlackbox(*k, in, MapleToString(kv, argv[3])); LB_GMP_RESTORE(); } return BlackboxKeyToMaple(kv, *key); } } if (argc == 4){ if (IsMapleDomainKey(kv, argv[1])) { const DomainKey *k = &MapleToDomainKey(kv, argv[1]); LB_GMP_SET(); key = &createBlackbox(*k, MapleToInteger32(kv, argv[2]), MapleToInteger32(kv, argv[3]), MapleToString(kv, argv[4])); LB_GMP_RESTORE(); return BlackboxKeyToMaple(kv, *key); } } MapleRaiseError(kv, "wrong types of arguments"); } catch ( lb_runtime_error &t ) { lbRaiseError(kv, t); } return ToMapleNULL(kv); } /******************************** * Interface to create a vector * ********************************/ ALGEB lbCreateVectorFromVector(MKernelVector kv, ALGEB V, const LinBox::integer &p){ LB_GMP_SET(); const DomainKey *Dkey = &createDomain(p); LB_GMP_RESTORE(); std::stringstream buffer; RTableSettings setting; RTableData tmp; RTableGetSettings(kv,&setting,V); size_t n; n = RTableUpperBound(kv, V, 1); buffer< 4)){ MapleRaiseError(kv, "wrong number of arguments"); return ToMapleNULL(kv); } try { if (argc == 1){ if (IsMapleRTable(kv, argv[1])) return lbCreateVectorFromVector(kv, argv[1], LinBox::integer(0)); } if (argc == 2){ if (IsMapleInteger(kv, argv[1]) && IsMapleRTable(kv, argv[2])){ //LinBox::integer *p = GMPMapleToLinBox(kv, argv[1]); LinBox::integer p; GMPMapleToLinBox(p, kv, argv[1]); LB_GMP_SET(); ALGEB ret = lbCreateVectorFromVector(kv, argv[2], p); LB_GMP_RESTORE(); return ret; } if ( IsMapleDomainKey(kv, argv[1]) && IsMapleInteger(kv, argv[2])) { const DomainKey *k = &MapleToDomainKey(kv, argv[1]); LB_GMP_SET(); key = &createVector(*k, MapleToInteger32(kv, argv[2])); LB_GMP_RESTORE(); return VectorKeyToMaple(kv, *key); } } if (argc == 3){ if ( IsMapleDomainKey(kv, argv[1]) && IsMapleInteger(kv, argv[2]) && IsMapleString(kv, argv[3])){ const DomainKey *k = &MapleToDomainKey(kv, argv[1]); LB_GMP_SET(); key = &createVector(*k, MapleToInteger32(kv, argv[2]), MapleToString(kv, argv[3])); LB_GMP_RESTORE(); return VectorKeyToMaple(kv, *key); } } MapleRaiseError(kv, "wrong types of arguments"); } catch ( lb_runtime_error &t ) { lbRaiseError(kv, t); } return ToMapleNULL(kv); } /*************************** *************************** *** Domain's Functions **** *************************** ***************************/ /****************************** * Interface to copy a Domain * *****************************/ ALGEB lbCopyDomain (MKernelVector kv, ALGEB *argv){ try { const DomainKey *key = &MapleToDomainKey(kv, argv[1]); return DomainKeyToMaple(kv, copyDomain(*key)); } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /***************************************************** * Interface to change globally the prime field type * *****************************************************/ ALGEB lbSetPrimeField (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); if (argc != 1){ MapleRaiseError(kv, "wrong number of arguments"); return ToMapleNULL(kv); } if (!IsMapleString(kv, argv[1])){ MapleRaiseError(kv, "String expected for 1st argument"); return ToMapleNULL(kv); } setPrimeField(MapleToString(kv, argv[1])); return ToMapleNULL(kv); } /******************************************************** * Interface to change globally the rational field type * ********************************************************/ ALGEB lbSetRationalField (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); if (argc != 1){ MapleRaiseError(kv, "wrong number of arguments"); return ToMapleNULL(kv); } if (!IsMapleString(kv, argv[1])){ MapleRaiseError(kv, "String expected for 1s argument"); return ToMapleNULL(kv); } setRationalField(MapleToString(kv, argv[1])); return ToMapleNULL(kv); } /****************************************************** * Interface to change globally the integer ring type * ******************************************************/ ALGEB lbSetIntegerRing (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); if (argc != 1){ MapleRaiseError(kv, "wrong number of arguments"); return ToMapleNULL(kv); } if (!IsMapleString(kv, argv[1])){ MapleRaiseError(kv, "String expected for 1s argument"); return ToMapleNULL(kv); } setIntegerRing(MapleToString(kv, argv[1])); return ToMapleNULL(kv); } /***************************** ***************************** *** Blackbox's Functions **** ***************************** *****************************/ /******************************** * Interface to copy a blackbox * ********************************/ ALGEB lbCopyBlackbox (MKernelVector kv, ALGEB *argv){ try { const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[1]); return BlackboxKeyToMaple(kv, copyBlackbox(*key)); } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /************************************************ * Interface to get the dimension of a blackbox * ************************************************/ ALGEB lbGetBlackboxDimension (MKernelVector kv, ALGEB *argv){ // not yet : pb with return value ? return ToMapleNULL(kv); } /******************************************* * Interface to write a blackbox in a file * *******************************************/ ALGEB lbWriteBlackbox (MKernelVector kv, ALGEB *argv){ try { std::ofstream os(MapleToString(kv, argv[2])); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[1]); writeBlackbox(*key, os); return ToMapleNULL(kv); } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /************************************************** * Interface to fill a blackbox with random value * **************************************************/ ALGEB lbSetBlackboxAtRandom (MKernelVector kv, ALGEB *argv){ try { const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[1]); setBlackboxAtRandom(*key); return argv[1]; } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /****************************************************** * Interface to rebind a blackbox over another domain * ******************************************************/ ALGEB lbRebindBlackbox (MKernelVector kv, ALGEB *argv){ try { const DomainKey *Dkey = &MapleToDomainKey(kv, argv[1]);; const BlackboxKey *Bkey = &MapleToBlackboxKey(kv, argv[2]); rebindBlackbox(*Bkey, *Dkey); return ToMapleNULL(kv); } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /************************************************** * Interface to change globally the blackbox type * **************************************************/ ALGEB lbSetBlackbox (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); if (argc != 1){ MapleRaiseError(kv, "wrong number of parameter in lbSetBlackbox"); return ToMapleNULL(kv); } if (!IsMapleString(kv, argv[1])){ MapleRaiseError(kv, "lbSetBlackbox expects a string as parameter"); return ToMapleNULL(kv); } setBlackbox(MapleToString(kv, argv[1])); return ToMapleNULL(kv); } /*************************** *************************** *** Vector's Functions **** *************************** ***************************/ /****************************** * Interface to copy a vector * ******************************/ ALGEB lbCopyVector (MKernelVector kv, ALGEB *argv){ try { const VectorKey *key = &MapleToVectorKey(kv, argv[1]); return VectorKeyToMaple(kv, copyVector(*key)); } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /********************************************** * Interface to get the dimension of a vector * **********************************************/ ALGEB lbGetVectorDimension (MKernelVector kv, ALGEB *argv){ try { const VectorKey *key = &MapleToVectorKey(kv, argv[1]); size_t n = getVectorDimension(*key); return ToMapleInteger(kv, n); } catch (lb_runtime_error &t) {lbRaiseError(kv, t);} return ToMapleNULL(kv); } /***************************************** * Interface to write a vector in a file * *****************************************/ ALGEB lbWriteVector (MKernelVector kv, ALGEB *argv){ try { std::ofstream os(MapleToString(kv, argv[2])); const VectorKey *key = &MapleToVectorKey(kv, argv[1]); writeVector(*key, os); return ToMapleNULL(kv); } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /************************************************ * Interface to fill a vector with random value * ************************************************/ ALGEB lbSetVectorAtRandom (MKernelVector kv, ALGEB *argv){ try { const VectorKey *key = &MapleToVectorKey(kv, argv[1]); setVectorAtRandom(*key); return argv[1]; } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /****************************************************** * Interface to rebind a vector over another domain * ******************************************************/ ALGEB lbRebindVector (MKernelVector kv, ALGEB *argv){ try { const DomainKey *Dkey = &MapleToDomainKey(kv, argv[1]);; const VectorKey *Bkey = &MapleToVectorKey(kv, argv[2]); rebindVector(*Bkey, *Dkey); return argv[2]; } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /************************************************ * Interface to change globally the vector type * ************************************************/ ALGEB lbSetVector (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); if (argc != 1){ MapleRaiseError(kv, "wrong number of arguments"); return ToMapleNULL(kv); } if (!IsMapleString(kv, argv[1])){ MapleRaiseError(kv, "String expected as 1st argument"); return ToMapleNULL(kv); } setVector(MapleToString(kv, argv[1])); return ToMapleNULL(kv); } /******************************* ******************************* *** Polynomial's Functions **** ******************************* *******************************/ /*********************************** * Interface to write a polynomial * ***********************************/ ALGEB lbWritePolynomial (MKernelVector kv, ALGEB *argv){ try { std::ofstream os(MapleToString(kv, argv[2])); const VectorKey *key = &MapleToVectorKey(kv, argv[1]); writePolynomial(*key, os); return ToMapleNULL(kv); } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /********************************* ********************************* **** list of LinBox solutions *** ********************************* *********************************/ /****************************************************** * Interface to compute the determinant of a blackbox * ******************************************************/ ALGEB lbDeterminant (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); try{ if (argc == 1){ LB_GMP_SET(); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[1]); const EltKey *k = &lb_determinant(*key); LB_GMP_RESTORE(); return ElementKeyToMaple(kv, *k); } if (argc == 2){ LB_GMP_SET(); const EltKey *k = &MapleToElementKey(kv, argv[1]); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[2]); lb_determinant(*k, *key); LB_GMP_RESTORE(); return ToMapleNULL(kv); } } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /*********************************************** * Interface to compute the rank of a blackbox * ***********************************************/ ALGEB lbRank (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); try{ if (argc == 1){ LB_GMP_SET(); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[1]); size_t r = lb_rank(*key); LB_GMP_RESTORE(); return ToMapleInteger(kv, r); } if (argc == 2){ LB_GMP_SET(); size_t *r = (size_t*) MapleToPointer(kv, argv[1]); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[2]); lb_determinant(*r, *key); LB_GMP_RESTORE(); return ToMapleNULL(kv); } } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /************************************************************* * Interface to compute the minimal polynomial of a blackbox * *************************************************************/ ALGEB lbMinpoly (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); try{ if (argc == 1){ LB_GMP_SET(); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[1]); const PolynomialKey *k = &lb_minpoly(*key); LB_GMP_RESTORE(); return PolynomialKeyToMaple(kv, *k); } if (argc == 2){ LB_GMP_SET(); const PolynomialKey *k = &MapleToPolynomialKey(kv, argv[1]); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[2]); lb_minpoly(*k, *key); LB_GMP_RESTORE(); return ToMapleNULL(kv); } } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /******************************************************************** * Interface to compute the characteristic polynomial of a blackbox * ********************************************************************/ ALGEB lbCharpoly (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); try{ if (argc == 1){ LB_GMP_SET(); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[1]); const PolynomialKey *k = &lb_charpoly(*key); LB_GMP_RESTORE(); return PolynomialKeyToMaple(kv, *k); } if (argc == 2){ LB_GMP_SET(); const PolynomialKey *k = &MapleToPolynomialKey(kv, argv[1]); const BlackboxKey *key = &MapleToBlackboxKey(kv, argv[2]); lb_charpoly(*k, *key); LB_GMP_RESTORE(); return ToMapleNULL(kv); } } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /************************************** * Interface to solve a linear system * **************************************/ ALGEB lbSolve (MKernelVector kv, ALGEB *argv){ M_INT argc = MapleNumArgs(kv, (ALGEB) argv); try{ if (argc == 2){ LB_GMP_SET(); const BlackboxKey *Bkey = &MapleToBlackboxKey(kv, argv[1]); const VectorKey *Vkey = &MapleToVectorKey(kv, argv[2]); const VectorKey *Rkey = &lb_solve(*Bkey, *Vkey); LB_GMP_RESTORE(); return VectorKeyToMaple(kv, *Rkey); } if (argc == 3){ LB_GMP_SET(); const VectorKey *Rkey = &MapleToVectorKey(kv, argv[1]); const BlackboxKey *Bkey = &MapleToBlackboxKey(kv, argv[2]); const VectorKey *Vkey = &MapleToVectorKey(kv, argv[3]); lb_solve(*Rkey, *Bkey, *Vkey); LB_GMP_RESTORE(); return ToMapleNULL(kv); } } catch (lb_runtime_error &t) { lbRaiseError(kv, t);} return ToMapleNULL(kv); } /******************************************* ******************************************* **** Conversion from LinBox to Maple **** ******************************************* *******************************************/ /*********************************************************** * API to convert a domain element to its Maple equivalent * ***********************************************************/ ALGEB lbConvertElement (MKernelVector kv, ALGEB *argv){ try { const EltKey *k = &MapleToElementKey(kv, argv[1]); SerialElement s; SerializeElement(s, *k); if (strcmp(s.type, "integer")==0) return LinBoxToGMPMaple(kv, s.list.front()); else if (strcmp(s.type,"rational")==0){ ALGEB n,d,f; n = LinBoxToGMPMaple(kv, s.list.front()); d = LinBoxToGMPMaple(kv, s.list.back()); f = EvalMapleStatement(kv,"Fraction:"); return EvalMapleProc(kv, f, 2, n, d); } else MapleRaiseError(kv, "LinBox internal error (serializing element problem)"); } catch (lb_runtime_error &t) {lbRaiseError(kv, t);} return ToMapleNULL(kv); } /***************************************************** * API to convert a blackbox to its Maple equivalent * *****************************************************/ ALGEB lbConvertBlackbox (MKernelVector kv, ALGEB *argv){ return ToMapleNULL(kv); } /*************************************************** * API to convert a Vector to its Maple equivalent * ***************************************************/ ALGEB lbConvertVector (MKernelVector kv, ALGEB *argv){ try { const VectorKey *k = &MapleToVectorKey(kv, argv[1]); SerialVector s; SerializeVector(s, *k); if (strcmp(s.type, "integer")==0){ size_t n = s.list.size(); RTableSettings setting; M_INT bounds[2];bounds[0]=1;bounds[1]=n; RTableGetDefaults(kv, &setting); setting.num_dimensions=1; setting.subtype=RTABLE_COLUMN; setting.data_type=RTABLE_DAG; ALGEB vector = RTableCreate(kv, &setting, NULL, bounds); M_INT index[1]; RTableData tmp; for (size_t i=1; i>1; RTableSettings setting; M_INT bounds[2];bounds[0]=1;bounds[1]=n; RTableGetDefaults(kv, &setting); setting.num_dimensions=1; setting.subtype=RTABLE_COLUMN; setting.data_type=RTABLE_DAG; ALGEB vector = RTableCreate(kv, &setting, NULL, bounds); ALGEB f = EvalMapleStatement(kv,"Fraction:"); M_INT index[1]; RTableData tmp; for (size_t i=1; is,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/maple/lb-maple.h000066400000000000000000000074031274717217100201110ustar00rootroot00000000000000/* lb-maple.h * Copyright (C) 2005 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_lb_maple_H #define __LINBOX_lb_maple_H #include #include extern "C" { /*********************************** * Initializer of LinBox interface * ***********************************/ ALGEB lbStart (MKernelVector kv, ALGEB *argv); ALGEB lbStop (MKernelVector kv, ALGEB *argv); /************************************** * Information from the LinBox driver * **************************************/ ALGEB lbDataInfo (MKernelVector kv, ALGEB *argv); /************************************** * Function to create LinBox's object * **************************************/ ALGEB lbCreateElement (MKernelVector kv, ALGEB *argv); ALGEB lbCreateDomain (MKernelVector kv, ALGEB *argv); ALGEB lbCreateBlackbox (MKernelVector kv, ALGEB *argv); ALGEB lbCreateVector (MKernelVector kv, ALGEB *argv); /********************** * Domain's Functions * **********************/ ALGEB lbSetPrimeField (MKernelVector kv, ALGEB *argv); ALGEB lbSetRationalField (MKernelVector kv, ALGEB *argv); ALGEB lbSetIntegerRing (MKernelVector kv, ALGEB *argv); /************************ * Blackbox's Functions * ************************/ ALGEB lbCopyBlackbox (MKernelVector kv, ALGEB *argv); ALGEB lbGetBlackboxDimension (MKernelVector kv, ALGEB *argv); ALGEB lbSetBlackboxAtRandom (MKernelVector kv, ALGEB *argv); ALGEB lbRebindBlackbox (MKernelVector kv, ALGEB *argv); ALGEB lbWriteBlackbox (MKernelVector kv, ALGEB *argv); ALGEB lbSetBlackbox (MKernelVector kv, ALGEB *argv); /************************ * Vector's Functions * ************************/ ALGEB lbCopyVector (MKernelVector kv, ALGEB *argv); ALGEB lbGetVectorDimension (MKernelVector kv, ALGEB *argv); ALGEB lbSetVectorAtRandom (MKernelVector kv, ALGEB *argv); ALGEB lbRebindVector (MKernelVector kv, ALGEB *argv); ALGEB lbWriteVector (MKernelVector kv, ALGEB *argv); ALGEB lbSetVector (MKernelVector kv, ALGEB *argv); /************************** * Polynomial's Functions * **************************/ ALGEB lbWritePolynomial (MKernelVector kv, ALGEB *argv); /****************************** * LinBox available solutions * ******************************/ ALGEB lbDeterminant (MKernelVector kv, ALGEB *argv); ALGEB lbRank (MKernelVector kv, ALGEB *argv); ALGEB lbMinpoly (MKernelVector kv, ALGEB *argv); ALGEB lbCharpoly (MKernelVector kv, ALGEB *argv); ALGEB lbSolve (MKernelVector kv, ALGEB *argv); } // end of extern "C" #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/maple/lb-maple.mpl.bak000077500000000000000000000302151274717217100212060ustar00rootroot00000000000000LinBox:= module() description "Maple interface for LinBox library version 1.0 by Pascal Giorgi (LinBox project - www.linal.org)"; local lbpath, lbInit, lbEnd, lbStart, lbStop: export lbDeterminant, lbRank, lbMinpoly, lbCharpoly, lbSolve, Dev: option package, load=lbInit, unload=lbEnd: lbpathvalue ############################################################# # Function to initialize LinBox driver and LinBox interface # ############################################################# lbStart := define_external('lbStart' , MAPLE, LIB=lbpath); lbStop := define_external('lbStop' , MAPLE, LIB=lbpath); lbInit := proc() printf(" LinBox/Maple Interface Package beta version 1.0 \n by Pascal Giorgi (pascal.giorgi@univ-perp.fr)\n"); lbStart(); end proc; lbEnd := proc() end proc;#lbStop();end proc; ##################################################################### ############# Definition of the low level submodule ################ ##################################################################### Dev:= module() description "low level interface for direct LinBox object manipulation"; local lbInit, lbEnd; export lbDataInfo,lbStart, lbStop, lbElement, lbDomain, lbBlackbox, lbVector, lbSetPrimeField, lbSetRationalField, lbSetIntegerRing, lbCopyBlackbox, lbBlackboxDimension, lbSetBlackboxAtRandom, lbRebindBlackbox, lbWriteBlackbox, lbSetBlackbox, lbCopyVector, lbVectorDimension, lbSetVectorAtRandom, lbRebindVector, lbWriteVector, lbSetVector, lbWritePolynomial, lbDeterminant, lbRank, lbMinpoly, lbCharpoly, lbSolve, lbConvertElement, lbConvertBlackbox, lbConvertVector, lbConvertPolynomial, lbCopy, lbWrite, lbDimension, lbRebind, lbRandom: option package, load=lbInit, unload=lbEnd: ############################################################# # Function to initialize LinBox driver and LinBox interface # ############################################################# lbStart := define_external('lbStart' , MAPLE, LIB=lbpath); lbStop := define_external('lbStop' , MAPLE, LIB=lbpath); ###################################################### # Function to get information from the LinBox driver # ###################################################### lbDataInfo := define_external('lbDataInfo', MAPLE, LIB=lbpath); ######################################## # Function to set the LinBox data type # ######################################## lbSetPrimeField := define_external('lbSetPrimeField' , MAPLE, LIB=lbpath); lbSetRationalField := define_external('lbSetRationalField' , MAPLE, LIB=lbpath); lbSetIntegerRing := define_external('lbSetIntegerRing' , MAPLE, LIB=lbpath); lbSetBlackbox := define_external('lbSetBlackbox' , MAPLE, LIB=lbpath); lbSetVector := define_external('lbSetVector' , MAPLE, LIB=lbpath); ############################################### # Function to create LinBox object from Maple # ############################################### lbElement := define_external('lbCreateElement' , MAPLE, LIB=lbpath); lbDomain := define_external('lbCreateDomain' , MAPLE, LIB=lbpath); lbBlackbox := define_external('lbCreateBlackbox' , MAPLE, LIB=lbpath); lbVector := define_external('lbCreateVector' , MAPLE, LIB=lbpath); ####################################### # Function for LinBox blackbox object # ####################################### lbCopyBlackbox := define_external('lbCopyBlackbox' , MAPLE, LIB=lbpath); lbBlackboxDimension := define_external('lbGetBlackboxDimension' , MAPLE, LIB=lbpath); lbSetBlackboxAtRandom := define_external('lbSetBlackboxAtRandom' , MAPLE, LIB=lbpath); lbRebindBlackbox := define_external('lbRebindBlackbox' , MAPLE, LIB=lbpath); lbWriteBlackbox := define_external('lbWriteBlackbox' , MAPLE, LIB=lbpath); ##################################### # Function for LinBox vector object # ##################################### lbCopyVector := define_external('lbCopyVector' , MAPLE, LIB=lbpath); lbVectorDimension := define_external('lbGetVectorDimension' , MAPLE, LIB=lbpath); lbSetVectorAtRandom := define_external('lbSetVectorAtRandom' , MAPLE, LIB=lbpath); lbRebindVector := define_external('lbRebindVector' , MAPLE, LIB=lbpath); lbWriteVector := define_external('lbWriteVector' , MAPLE, LIB=lbpath); ######################################### # Function for LinBox polynomial object # ######################################### lbWritePolynomial := define_external('lbWritePolynomial' , MAPLE, LIB=lbpath); ############################## # Available LinBox solutions # ############################## lbDeterminant := define_external('lbDeterminant' , MAPLE, LIB=lbpath); lbRank := define_external('lbRank' , MAPLE, LIB=lbpath); lbMinpoly := define_external('lbMinpoly' , MAPLE, LIB=lbpath); lbCharpoly := define_external('lbCharpoly' , MAPLE, LIB=lbpath); lbSolve := define_external('lbSolve' , MAPLE, LIB=lbpath); ################################################## # Conversion from LinBox object to Maple Objects # ################################################## lbConvertElement := define_external('lbConvertElement' , MAPLE, LIB=lbpath); lbConvertBlackbox := define_external('lbConvertBlackbox' , MAPLE, LIB=lbpath); lbConvertVector := define_external('lbConvertVector' , MAPLE, LIB=lbpath); lbConvertPolynomial := define_external('lbConvertPolynomial' , MAPLE, LIB=lbpath); #################### # Higher level API # #################### lbCopy := define_external('lbCopy' , MAPLE, LIB=lbpath); lbWrite := define_external('lbWrite' , MAPLE, LIB=lbpath); lbDimension := define_external('lbDimension' , MAPLE, LIB=lbpath); lbRebind := define_external('lbRebind' , MAPLE, LIB=lbpath); lbRandom := define_external('lbRandom' , MAPLE, LIB=lbpath); end module: ############################################################## ############# end of the low level submodule ################ ############################################################## ################################################################### ############# definition of the high level module ################ ################################################################### ################################################ # Determinant computation from a Maple Matrix # ################################################ lbDeterminant := proc() local d, A, det, t; if (type(args[1], integer)) then if (type(args[2], Matrix)) then t := time(); A := Dev:-lbBlackbox(args[1], args[2]); t:= time()-t; else error("invalid argument",args[2], "must be a Matrix"); end if; elif (type(args[1], Matrix)) then t := time(); A := Dev:-lbBlackbox(args[1]); t:= time()-t; else error("invalid argument",args[1], "must be a Matrix"); end if; d := Dev:-lbDeterminant(A); det := Dev:-lbConvertElement(d); if (printlevel>1) then print("conversion time:",t); end if; return det; end; ######################################## # Rank computation from a Maple matrix # ######################################## lbRank := proc() local A,t; if (type(args[1], integer)) then if (type(args[2], Matrix)) then t := time(); A:=Dev:-lbBlackbox(args[1], args[2]); t:=time()-t; else error("invalid argument",args[2], "must be a Matrix"); end if; elif (type(args[1], Matrix)) then t := time(); A := Dev:-lbBlackbox(args[1]); t:=time()-t; else error("invalid argument",args[1], "must be a Matrix"); end if; if (printlevel>1) then print("conversion time:",t); end if; return Dev:-lbRank(A); end; ###################################################### # Minimal polynomial computation from a Maple matrix # ###################################################### lbMinpoly := proc() local A, p, symb,t; if (type(args[1], integer)) then if (type(args[2], Matrix)) then if (type(args[3], name)) then t:=time(); A:=Dev:-lbBlackbox(args[1], args[2]); t:=time()-t; symb:=args[3]; else error("invalid argument",args[3], "must be a name"); end if; else error("invalid argument",args[2], "must be a Matrix"); end if; elif (type(args[1], Matrix)) then if (type(args[2], name)) then t:=time(); A := Dev:-lbBlackbox(args[1]); t:=time()-t; symb:=args[2]; else error("invalid argument",args[2], "must be a name"); end if else error("invalid argument",args[1], "must be a Matrix"); end if; p:= Dev:-lbMinpoly(A); if (printlevel>1) then print("conversion time:",t); end if; return Dev:-lbConvertPolynomial(p,symb); end; ############################################################# # Characteristic polynomial computation from a Maple matrix # ############################################################# lbCharpoly := proc() local A, p, symb,t; if (type(args[1], integer)) then if (type(args[2], Matrix)) then if (type(args[3], name)) then t:=time(); A:=Dev:-lbBlackbox(args[1], args[2]); t:=time()-t; symb:=args[3]; else error("invalid argument",args[3], "must be a name"); end if; else error("invalid argument",args[2], "must be a Matrix"); end if; elif (type(args[1], Matrix)) then if (type(args[2], name)) then t:=time(); A := Dev:-lbBlackbox(args[1]); t:=time()-t; symb:=args[2]; else error("invalid argument",args[2], "must be a name"); end if else error("invalid argument",args[1], "must be a Matrix"); end if; p:= Dev:-lbCharpoly(A); if (printlevel>1) then print("conversion time:",t); end if; return Dev:-lbConvertPolynomial(p,symb); end; ############################################################# # Linear system solving from Maple matrix and Maple Vector # ############################################################# lbSolve := proc() local A,b,x,y,t; if (type(args[1], integer)) then if (type(args[2], Matrix)) then if (type(args[3], Vector)) then t:=time(); A:=Dev:-lbBlackbox(args[1], args[2]); b:=Dev:-lbVector(args[1], args[3]); t:=time()-t; else error("invalid argument",args[3], "must be a Vector"); fi; else error("invalid argument",args[2], "must be a Matrix"); fi; elif (type(args[1], Matrix)) then if (type(args[2], Vector)) then t:=time(); A:=Dev:-lbBlackbox(args[1]); b:=Dev:-lbVector(args[2]); t:=time()-t; else error("invalid argument",args[2], "must be a Vector"); fi; else error("invalid argument",args[1], "must be a Matrix"); fi; x:= Dev:-lbSolve(A,b); y:=Dev:-lbConvertVector(x); if (printlevel>1) then print("conversion time:",t); end if; return y; end; end module: save_linbox:=proc(repo) global savelibname,libname: if (FileTools[Exists](cat(repo,"/maple.lib"))) then fremove(cat(repo,"/maple.lib")); fremove(cat(repo,"/maple.ind")); # fremove(cat(repo,"/maple.hdb")); rmdir(repo); fi: if (not(FileTools[Exists](repo))) then mkdir(repo);fi: march( 'create',repo, 1000 ): savelibname := repo: libname := savelibname, libname: savelib('LinBox'): end: save_linbox("LinBoxMaple"); linbox-1.4.2/interfaces/maple/linbox-demonstration-good.mw000077500000000000000000022521611274717217100237310ustar00rootroot00000000000000 LinBox Interface beta version 0.1 demonstration by Pascal Giorgi restart;

<Text-field style="Heading 1" layout="Heading 1">Available through Maple module</Text-field> with(LinBox); LinBox/Maple Interface Package beta version 0.1 by Pascal Giorgi (pgiorgi@uwaterloo.ca) NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2LS1JI21pR0YlNjlRJERldkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZTLyUlYm9sZEdGOC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdGVi8lK2JhY2tncm91bmRHRlkvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjUvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGUC8lKm1hdGhjb2xvckdGVi8lL21hdGhiYWNrZ3JvdW5kR0ZZLyUrZm9udGZhbWlseUdGXG8vJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRlMtRi02M1EiLEYoL0YxUSZpbmZpeEYoL0Y0RjgvRjdGNS9GOlEkMGVtRigvRj1RM3Zlcnl0aGlja21hdGhzcGFjZUYoL0Y/RjhGQEZCRkVGSEZKRkxGTkZRRlRGVy1GZ242OVErbGJDaGFycG9seUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US5sYkRldGVybWluYW50RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKmxiTWlucG9seUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USdsYlJhbmtGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEobGJTb2x2ZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxLUYtNjNRIl1GKC9GMVEocG9zdGZpeEYoRjNGNkY5L0Y9UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRj5GQEZCRkVGSEZKRkxGTkZRRlRGVzcjNyhJJERldkdGKEkrbGJDaGFycG9seUdGKEkubGJEZXRlcm1pbmFudEdGKEkqbGJNaW5wb2x5R0YoSSdsYlJhbmtHRihJKGxiU29sdmVHRig= comparison with LinearAlgebra package with(LinearAlgebra); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Z3ktSSNtaUdGJTY5USMmeEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZTLyUlYm9sZEdGOC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdGVi8lK2JhY2tncm91bmRHRlkvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjUvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGUC8lKm1hdGhjb2xvckdGVi8lL21hdGhiYWNrZ3JvdW5kR0ZZLyUrZm9udGZhbWlseUdGXG8vJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRlMtRi02M1EiLEYoL0YxUSZpbmZpeEYoL0Y0RjgvRjdGNS9GOlEkMGVtRigvRj1RM3Zlcnl0aGlja21hdGhzcGFjZUYoL0Y/RjhGQEZCRkVGSEZKRkxGTkZRRlRGVy1GZ242OVEkQWRkRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKEFkam9pbnRGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEzQmFja3dhcmRTdWJzdGl0dXRlRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK0JhbmRNYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEmQmFzaXNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtQmV6b3V0TWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL0JpZGlhZ29uYWxGb3JtRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLUJpbGluZWFyRm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTVDaGFyYWN0ZXJpc3RpY01hdHJpeEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTlDaGFyYWN0ZXJpc3RpY1BvbHlub21pYWxGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEnQ29sdW1uRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMENvbHVtbkRpbWVuc2lvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTBDb2x1bW5PcGVyYXRpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEsQ29sdW1uU3BhY2VGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEwQ29tcGFuaW9uTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMENvbmRpdGlvbk51bWJlckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US9Db25zdGFudE1hdHJpeEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US9Db25zdGFudFZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USVDb3B5RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMkNyZWF0ZVBlcm11dGF0aW9uRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLUNyb3NzUHJvZHVjdEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US1EZWxldGVDb2x1bW5GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqRGVsZXRlUm93RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLERldGVybWluYW50RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKURpYWdvbmFsRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL0RpYWdvbmFsTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKkRpbWVuc2lvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UStEaW1lbnNpb25zRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK0RvdFByb2R1Y3RGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE2RWlnZW5Db25kaXRpb25OdW1iZXJzRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLEVpZ2VudmFsdWVzRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLUVpZ2VudmVjdG9yc0YoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USZFcXVhbEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTJGb3J3YXJkU3Vic3RpdHV0ZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US5Gcm9iZW5pdXNGb3JtRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRNEdhdXNzaWFuRWxpbWluYXRpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEyR2VuZXJhdGVFcXVhdGlvbnNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEvR2VuZXJhdGVNYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEyR2V0UmVzdWx0RGF0YVR5cGVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEvR2V0UmVzdWx0U2hhcGVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE1R2l2ZW5zUm90YXRpb25NYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEsR3JhbVNjaG1pZHRGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtSGFua2VsTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLEhlcm1pdGVGb3JtRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRM0hlcm1pdGlhblRyYW5zcG9zZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US9IZXNzZW5iZXJnRm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US5IaWxiZXJ0TWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMkhvdXNlaG9sZGVyTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL0lkZW50aXR5TWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMkludGVyc2VjdGlvbkJhc2lzRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK0lzRGVmaW5pdGVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtSXNPcnRob2dvbmFsRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKklzU2ltaWxhckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpJc1VuaXRhcnlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEySm9yZGFuQmxvY2tNYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVErSm9yZGFuRm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UShMQV9NYWluRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMExVRGVjb21wb3NpdGlvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US1MZWFzdFNxdWFyZXNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEsTGluZWFyU29sdmVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEkTWFwRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJU1hcDJGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqTWF0cml4QWRkRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMk1hdHJpeEV4cG9uZW50aWFsRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL01hdHJpeEZ1bmN0aW9uRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLk1hdHJpeEludmVyc2VGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE1TWF0cml4TWF0cml4TXVsdGlwbHlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVErTWF0cml4Tm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USxNYXRyaXhQb3dlckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTVNYXRyaXhTY2FsYXJNdWx0aXBseUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTVNYXRyaXhWZWN0b3JNdWx0aXBseUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTJNaW5pbWFsUG9seW5vbWlhbEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USZNaW5vckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UShNb2R1bGFyRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKU11bHRpcGx5RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLE5vVXNlclZhbHVlRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJU5vcm1GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqTm9ybWFsaXplRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKk51bGxTcGFjZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTNPdXRlclByb2R1Y3RNYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqUGVybWFuZW50RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJlBpdm90RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKlBvcG92Rm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTBRUkRlY29tcG9zaXRpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtUmFuZG9tTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLVJhbmRvbVZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USVSYW5rRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRNlJhdGlvbmFsQ2Fub25pY2FsRm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTZSZWR1Y2VkUm93RWNoZWxvbkZvcm1GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEkUm93RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLVJvd0RpbWVuc2lvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US1Sb3dPcGVyYXRpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEpUm93U3BhY2VGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtU2NhbGFyTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL1NjYWxhck11bHRpcGx5RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLVNjYWxhclZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpTY2h1ckZvcm1GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEvU2luZ3VsYXJWYWx1ZXNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqU21pdGhGb3JtRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKlN1Yk1hdHJpeEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpTdWJWZWN0b3JGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEpU3VtQmFzaXNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEwU3lsdmVzdGVyTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL1RvZXBsaXR6TWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJlRyYWNlRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKlRyYW5zcG9zZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTBUcmlkaWFnb25hbEZvcm1GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVErVW5pdFZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTJWYW5kZXJtb25kZU1hdHJpeEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpWZWN0b3JBZGRGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEsVmVjdG9yQW5nbGVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE1VmVjdG9yTWF0cml4TXVsdGlwbHlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVErVmVjdG9yTm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTVWZWN0b3JTY2FsYXJNdWx0aXBseUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UStaZXJvTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK1plcm9WZWN0b3JGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEkWmlwRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnEtRi02M1EiXUYoL0YxUShwb3N0Zml4RihGM0Y2RjkvRj1RMnZlcnl0aGlubWF0aHNwYWNlRihGPkZARkJGRUZIRkpGTEZORlFGVEZXNyM3YnJJIyZ4R0YoSSRBZGRHNiQlKnByb3RlY3RlZEdGKkkoQWRqb2ludEdGKEkzQmFja3dhcmRTdWJzdGl0dXRlR0YoSStCYW5kTWF0cml4R0YoSSZCYXNpc0dGKEktQmV6b3V0TWF0cml4R0YoSS9CaWRpYWdvbmFsRm9ybUdGKEktQmlsaW5lYXJGb3JtR0YoSTVDaGFyYWN0ZXJpc3RpY01hdHJpeEdGKEk5Q2hhcmFjdGVyaXN0aWNQb2x5bm9taWFsR0YoSSdDb2x1bW5HRihJMENvbHVtbkRpbWVuc2lvbkdGKEkwQ29sdW1uT3BlcmF0aW9uR0YoSSxDb2x1bW5TcGFjZUdGKEkwQ29tcGFuaW9uTWF0cml4R0YoSTBDb25kaXRpb25OdW1iZXJHRihJL0NvbnN0YW50TWF0cml4R0YoSS9Db25zdGFudFZlY3RvckdGKEklQ29weUdGKEkyQ3JlYXRlUGVybXV0YXRpb25HRihJLUNyb3NzUHJvZHVjdEdGKEktRGVsZXRlQ29sdW1uR0YoSSpEZWxldGVSb3dHRihJLERldGVybWluYW50R0YoSSlEaWFnb25hbEdGKEkvRGlhZ29uYWxNYXRyaXhHRihJKkRpbWVuc2lvbkdGKEkrRGltZW5zaW9uc0dGKEkrRG90UHJvZHVjdEdGKEk2RWlnZW5Db25kaXRpb25OdW1iZXJzR0YoSSxFaWdlbnZhbHVlc0dGKEktRWlnZW52ZWN0b3JzR0YoSSZFcXVhbEdGKEkyRm9yd2FyZFN1YnN0aXR1dGVHRihJLkZyb2Jlbml1c0Zvcm1HRihJNEdhdXNzaWFuRWxpbWluYXRpb25HRihJMkdlbmVyYXRlRXF1YXRpb25zR0YoSS9HZW5lcmF0ZU1hdHJpeEdGKEkyR2V0UmVzdWx0RGF0YVR5cGVHRihJL0dldFJlc3VsdFNoYXBlR0YoSTVHaXZlbnNSb3RhdGlvbk1hdHJpeEdGKEksR3JhbVNjaG1pZHRHRihJLUhhbmtlbE1hdHJpeEdGKEksSGVybWl0ZUZvcm1HRihJM0hlcm1pdGlhblRyYW5zcG9zZUdGKEkvSGVzc2VuYmVyZ0Zvcm1HRihJLkhpbGJlcnRNYXRyaXhHRihJMkhvdXNlaG9sZGVyTWF0cml4R0YoSS9JZGVudGl0eU1hdHJpeEdGKEkySW50ZXJzZWN0aW9uQmFzaXNHRihJK0lzRGVmaW5pdGVHRihJLUlzT3J0aG9nb25hbEdGKEkqSXNTaW1pbGFyR0YoSSpJc1VuaXRhcnlHRihJMkpvcmRhbkJsb2NrTWF0cml4R0YoSStKb3JkYW5Gb3JtR0YoSShMQV9NYWluR0YoSTBMVURlY29tcG9zaXRpb25HRihJLUxlYXN0U3F1YXJlc0dGKEksTGluZWFyU29sdmVHRihJJE1hcEdGKEklTWFwMkdGKEkqTWF0cml4QWRkR0YoSTJNYXRyaXhFeHBvbmVudGlhbEdGKEkvTWF0cml4RnVuY3Rpb25HRihJLk1hdHJpeEludmVyc2VHRihJNU1hdHJpeE1hdHJpeE11bHRpcGx5R0YoSStNYXRyaXhOb3JtR0YoSSxNYXRyaXhQb3dlckdGKEk1TWF0cml4U2NhbGFyTXVsdGlwbHlHRihJNU1hdHJpeFZlY3Rvck11bHRpcGx5R0YoSTJNaW5pbWFsUG9seW5vbWlhbEdGKEkmTWlub3JHRihJKE1vZHVsYXJHRihJKU11bHRpcGx5R0ZeaWxJLE5vVXNlclZhbHVlR0YoSSVOb3JtR0ZeaWxJKk5vcm1hbGl6ZUdGKEkqTnVsbFNwYWNlR0YoSTNPdXRlclByb2R1Y3RNYXRyaXhHRihJKlBlcm1hbmVudEdGKEkmUGl2b3RHRihJKlBvcG92Rm9ybUdGKEkwUVJEZWNvbXBvc2l0aW9uR0YoSS1SYW5kb21NYXRyaXhHRihJLVJhbmRvbVZlY3RvckdGKEklUmFua0dGKEk2UmF0aW9uYWxDYW5vbmljYWxGb3JtR0YoSTZSZWR1Y2VkUm93RWNoZWxvbkZvcm1HRihJJFJvd0dGKEktUm93RGltZW5zaW9uR0YoSS1Sb3dPcGVyYXRpb25HRihJKVJvd1NwYWNlR0YoSS1TY2FsYXJNYXRyaXhHRihJL1NjYWxhck11bHRpcGx5R0YoSS1TY2FsYXJWZWN0b3JHRihJKlNjaHVyRm9ybUdGKEkvU2luZ3VsYXJWYWx1ZXNHRihJKlNtaXRoRm9ybUdGKEkqU3ViTWF0cml4R0YoSSpTdWJWZWN0b3JHRihJKVN1bUJhc2lzR0YoSTBTeWx2ZXN0ZXJNYXRyaXhHRihJL1RvZXBsaXR6TWF0cml4R0YoSSZUcmFjZUdGXmlsSSpUcmFuc3Bvc2VHRihJMFRyaWRpYWdvbmFsRm9ybUdGKEkrVW5pdFZlY3RvckdGKEkyVmFuZGVybW9uZGVNYXRyaXhHRihJKlZlY3RvckFkZEdGKEksVmVjdG9yQW5nbGVHRihJNVZlY3Rvck1hdHJpeE11bHRpcGx5R0YoSStWZWN0b3JOb3JtR0YoSTVWZWN0b3JTY2FsYXJNdWx0aXBseUdGKEkrWmVyb01hdHJpeEdGKEkrWmVyb1ZlY3RvckdGKEkkWmlwR0Yo
<Text-field style="Heading 1" layout="Heading 1">High level of the interface </Text-field> Call LinBox functionnalities directly on Maple objects.
<Text-field style="Heading 2" layout="Heading 2">Computation over the integers</Text-field>
<Text-field style="Heading 3" layout="Heading 3">Determinant</Text-field> n:=100;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQxMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4xMDB+eH4xMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple determinant Determinant(A); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UV1zMTMxNTQyMTA5NjUyNDk5ODEwNDIyNzczOTQ5NjE2NjQzMzE5MTU2Mzc3NzMzNjAxNzQ5ODU1OTgzNzk3NDY0Njk1MTI3MTQ5NDk4NDIzMTg4MTg1ODgyMTI3Mzg0MzE3NzgwMDI3MDA2NDUzODIxMTk4NzYxNTc2Mzc4NDY1NTY4MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIl1zI29iWXlqZGgoKT5AUVgxcS0heTxWUUZAKWU9KT1CJSlcXHI3JnBrdXokKWYmKVw8Z0x4UGMiPkxrOydcUnhBLyIpKlxfJzRAYUoi LinBox determinant lbDeterminant(A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA0NEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjVyEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UV1zMTMxNTQyMTA5NjUyNDk5ODEwNDIyNzczOTQ5NjE2NjQzMzE5MTU2Mzc3NzMzNjAxNzQ5ODU1OTgzNzk3NDY0Njk1MTI3MTQ5NDk4NDIzMTg4MTg1ODgyMTI3Mzg0MzE3NzgwMDI3MDA2NDUzODIxMTk4NzYxNTc2Mzc4NDY1NTY4MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIl1zI29iWXlqZGgoKT5AUVgxcS0heTxWUUZAKWU9KT1CJSlcXHI3JnBrdXokKWYmKVw8Z0x4UGMiPkxrOydcUnhBLyIpKlxfJzRAYUoi Timing comparison t1:=time(Determinant(A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS4yMzBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJUk3ISIkNyNGZXI= t2:=time(lbDeterminant(A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA0N0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjWiEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4xNjdGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJG4iISIkNyNGZXI= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USw3LjM2NTI2OTQ2MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIraCVwX08oISIq B:=Matrix(200,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= t1:=time(Determinant(B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEnMTMuMTQ2RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjdDFHRigkIiZZSiIhIiQ3I0Zlcg== t2:=time(lbDeterminant(B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjE3NEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkdSIhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC45MTJGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJDcqISIkNyNGZXI= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxNC40MTQ0NzM2OEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrb3RXVDkhIik=
<Text-field style="Heading 3" layout="Heading 3">Rank</Text-field> n:=100;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQxMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4xMDB+eH4xMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple rank Rank(A); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQxMDBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKyI= LinBox rank lbRank(A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjVCEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQxMDBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKyI= Timing comparison t1:=time(Rank(A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS4xMjdGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJUY2ISIkNyNGZXI= t2:=time(lbRank(A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAzNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjTyEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4wNDFGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiI1QhIiQ3I0Zlcg== t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwyNy40ODc4MDQ4OEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKVsheVtGISIp B:=Matrix(200,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= t1:=time(Rank(B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEnMTIuMzEzRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjdDFHRigkIiY4QiIhIiQ3I0Zlcg== t2:time(lbRank(B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI1N0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkZCMhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjMwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkKyQhIiQ= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwzMDAuMzE3MDczMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrSzI8LkkhIig=
<Text-field style="Heading 3" layout="Heading 3">Minimal Polynomial</Text-field> n:=20;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMyMEYoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JIm5HRigiIz83I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRKn4yMH54fjIwfkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnTWF0cml4RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn Maple minimal polynomial MinimalPolynomial(A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNkwtSSNtb0dGJTYzUSomdW1pbnVzMDtGKC8lJWZvcm1HUSdwcmVmaXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdGNS8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjUvJSpzeW1tZXRyaWNHRjUvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y1LyUubW92YWJsZWxpbWl0c0dGNS8lJ2FjY2VudEdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUlc2l6ZUdRIzEyRigvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLUkjbW5HRiU2OVE1NjMzODM2NTYzNDU2OTYzNDM4OTBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUi8lJWJvbGRHRjUvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHRlUvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHRk8vJSptYXRoY29sb3JHRlUvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRmluLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZSLUYtNjNRIitGKC9GMVEmaW5maXhGKEYzRjYvRjlRMG1lZGl1bW1hdGhzcGFjZUYoL0Y8RlxyRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVi1GJDYlLUZaNjlRNTE5Njk2MzM1NDY5NjkwNTY0MDE4RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHEtRi02M1ExJkludmlzaWJsZVRpbWVzO0YoRmlxRjNGNkY4RjtGPUY/RkFGREZHRklGS0ZNRlBGU0ZWLUkjbWlHRiU2OVEieEYoRmduRmpuRlxvL0Zfb0ZgcEZgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcS9GYnFRJ2l0YWxpY0YoRmRxLUYtNjNRKCZtaW51cztGKEZpcUYzRjZGW3JGXXJGPUY/RkFGREZHRklGS0ZNRlBGU0ZWLUYkNiUtRlo2OVE0MjExNDA1NDUwMTY0MDEyNTI4NUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUklbXN1cEdGJTYlRmZyLUZaNjlRIjJGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRihGZnEtRiQ2JS1GWjY5UTQyMTYxNTA3NDIyMjQyNzg2NTEwRihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGY3ItRmZzNiVGZnItRlo2OVEiM0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEyNDYxNTM1MTU5NzY5NTEyOTNGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI0RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UTIyOTA3MzI4MTc3OTgxNDkyNkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIjVGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRMTIyODIxNjMyNDE3ODIxMTFGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI2RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UTAzNTY0ODY3ODU2NjE4NzlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI3RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGXXMtRiQ2JS1GWjY5US8zOTg0MjM4MjIwOTk0NkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIjhGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRLjY5NDg2MjQ5OTQ0MzlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI5RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5US0xMzk1ODE2MDA1MjJGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxMEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEsMzE2Mjg5OTE3OTVGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxMUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVErNDg5NTg1Nzc3OEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzEyRihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5USoxNjQwOTU3MjRGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxM0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEpMzk5NDg1MTlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxNEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEoNDgxNjE0M0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzE1RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UScyMjkxNTlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxNkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEmMjM1MzNGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxN0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEkMTc3RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGY3ItRmZzNiVGZnItRlo2OVEjMThGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRJDEwMUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzE5RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2Iy1GZnM2JUZmci1GWjY5USMyMEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0NyMsTCI1ISpRTSdwWGpsJFFqISIiKiYiNT1TYyFwcGFMJ3A+IiIiSSJ4R0YoRmVfbEZlX2wqJiI0JkdELGssWDA5QEZlX2wpRmZfbCIiI0ZlX2xGYl9sKiYiNDVseVVBVTI6OyNGZV9sKUZmX2wiIiRGZV9sRmVfbComIjIkSF5wKGZeYGglRmVfbClGZl9sIiIlRmVfbEZiX2wqJiIyRVwiKXo8R3QhSEZlX2wpRmZfbCIiJkZlX2xGZV9sKiYiMTZAeVRLOyNHI0ZlX2wpRmZfbCIiJ0ZlX2xGYl9sKiYiMHo9bSZ5J1tjJEZlX2wpRmZfbCIiKEZlX2xGZV9sKiYiL1kqNEFRVSlSRmVfbClGZl9sIiIpRmVfbEZiX2wqJiIuUlcqXGlbcEZlX2wpRmZfbCIiKkZlX2xGYl9sKiYiLUEwZyJlUiJGZV9sKUZmX2wiIzVGZV9sRmVfbComIiwmeiIqKkc7JEZlX2wpRmZfbCIjNkZlX2xGZV9sKiYiK3l4JmUqW0ZlX2wpRmZfbCIjN0ZlX2xGZV9sKiYiKkNkNGsiRmVfbClGZl9sIiM4RmVfbEZlX2wqJiIpPiZbKlJGZV9sKUZmX2wiIzlGZV9sRmJfbComIihWaCJbRmVfbClGZl9sIiM6RmVfbEZiX2wqJiInZiJII0ZlX2wpRmZfbCIjO0ZlX2xGZV9sKiYiJkxOI0ZlX2wpRmZfbCIjPEZlX2xGZV9sKiYiJHgiRmVfbClGZl9sIiM9RmVfbEZlX2wqJiIkLCJGZV9sKUZmX2wiIz5GZV9sRmJfbCokKUZmX2wiIz9GZV9sRmVfbA== LinBox minimal polynomial lbMinpoly(A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiIiEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNkwtSSNtb0dGJTYzUSomdW1pbnVzMDtGKC8lJWZvcm1HUSdwcmVmaXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdGNS8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjUvJSpzeW1tZXRyaWNHRjUvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y1LyUubW92YWJsZWxpbWl0c0dGNS8lJ2FjY2VudEdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUlc2l6ZUdRIzEyRigvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLUkjbW5HRiU2OVE1NjMzODM2NTYzNDU2OTYzNDM4OTBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUi8lJWJvbGRHRjUvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHRlUvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHRk8vJSptYXRoY29sb3JHRlUvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRmluLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZSLUYtNjNRIitGKC9GMVEmaW5maXhGKEYzRjYvRjlRMG1lZGl1bW1hdGhzcGFjZUYoL0Y8RlxyRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVi1GJDYlLUZaNjlRNTE5Njk2MzM1NDY5NjkwNTY0MDE4RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHEtRi02M1ExJkludmlzaWJsZVRpbWVzO0YoRmlxRjNGNkY4RjtGPUY/RkFGREZHRklGS0ZNRlBGU0ZWLUkjbWlHRiU2OVEieEYoRmduRmpuRlxvL0Zfb0ZgcEZgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcS9GYnFRJ2l0YWxpY0YoRmRxLUYtNjNRKCZtaW51cztGKEZpcUYzRjZGW3JGXXJGPUY/RkFGREZHRklGS0ZNRlBGU0ZWLUYkNiUtRlo2OVE0MjExNDA1NDUwMTY0MDEyNTI4NUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUklbXN1cEdGJTYlRmZyLUZaNjlRIjJGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRihGZnEtRiQ2JS1GWjY5UTQyMTYxNTA3NDIyMjQyNzg2NTEwRihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGY3ItRmZzNiVGZnItRlo2OVEiM0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEyNDYxNTM1MTU5NzY5NTEyOTNGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI0RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UTIyOTA3MzI4MTc3OTgxNDkyNkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIjVGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRMTIyODIxNjMyNDE3ODIxMTFGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI2RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UTAzNTY0ODY3ODU2NjE4NzlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI3RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGXXMtRiQ2JS1GWjY5US8zOTg0MjM4MjIwOTk0NkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIjhGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRLjY5NDg2MjQ5OTQ0MzlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI5RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5US0xMzk1ODE2MDA1MjJGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxMEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEsMzE2Mjg5OTE3OTVGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxMUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVErNDg5NTg1Nzc3OEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzEyRihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5USoxNjQwOTU3MjRGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxM0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEpMzk5NDg1MTlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxNEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEoNDgxNjE0M0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzE1RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UScyMjkxNTlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxNkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEmMjM1MzNGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxN0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEkMTc3RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGY3ItRmZzNiVGZnItRlo2OVEjMThGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRJDEwMUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzE5RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2Iy1GZnM2JUZmci1GWjY5USMyMEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0NyMsTCI1ISpRTSdwWGpsJFFqISIiKiYiNT1TYyFwcGFMJ3A+IiIiSSJ4R0YoRmVfbEZlX2wqJiI0JkdELGssWDA5QEZlX2wpRmZfbCIiI0ZlX2xGYl9sKiYiNDVseVVBVTI6OyNGZV9sKUZmX2wiIiRGZV9sRmVfbComIjIkSF5wKGZeYGglRmVfbClGZl9sIiIlRmVfbEZiX2wqJiIyRVwiKXo8R3QhSEZlX2wpRmZfbCIiJkZlX2xGZV9sKiYiMTZAeVRLOyNHI0ZlX2wpRmZfbCIiJ0ZlX2xGYl9sKiYiMHo9bSZ5J1tjJEZlX2wpRmZfbCIiKEZlX2xGZV9sKiYiL1kqNEFRVSlSRmVfbClGZl9sIiIpRmVfbEZiX2wqJiIuUlcqXGlbcEZlX2wpRmZfbCIiKkZlX2xGYl9sKiYiLUEwZyJlUiJGZV9sKUZmX2wiIzVGZV9sRmVfbComIiwmeiIqKkc7JEZlX2wpRmZfbCIjNkZlX2xGZV9sKiYiK3l4JmUqW0ZlX2wpRmZfbCIjN0ZlX2xGZV9sKiYiKkNkNGsiRmVfbClGZl9sIiM4RmVfbEZlX2wqJiIpPiZbKlJGZV9sKUZmX2wiIzlGZV9sRmJfbComIihWaCJbRmVfbClGZl9sIiM6RmVfbEZiX2wqJiInZiJII0ZlX2wpRmZfbCIjO0ZlX2xGZV9sKiYiJkxOI0ZlX2wpRmZfbCIjPEZlX2xGZV9sKiYiJHgiRmVfbClGZl9sIiM9RmVfbEZlX2wqJiIkLCJGZV9sKUZmX2wiIz5GZV9sRmJfbCokKUZmX2wiIz9GZV9sRmVfbA== Timing comparison t1:=time(MinimalPolynomial(A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS45MjZGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJUU+ISIkNyNGZXI= t2:time(lbMinpoly(A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwNEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiJSEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjAwN0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIiKCEiJA== t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USw0Ni45NzU2MDk3NkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrdzRjKHAlISIp
<Text-field style="Heading 3" layout="Heading 3">Characteristic Polynomial</Text-field> n:=20;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMyMEYoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JIm5HRigiIz83I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRKn4yMH54fjIwfkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnTWF0cml4RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn Maple characteristic polynomial CharacteristicPolynomial(A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNkstRiQ2Iy1JJW1zdXBHRiU2JS1JI21pR0YlNjlRInhGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGPS8lKnN1YnNjcmlwdEdGPS8lLHN1cGVyc2NyaXB0R0Y9LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGPS8lK2V4ZWN1dGFibGVHRj0vJSlyZWFkb25seUdGQC8lKWNvbXBvc2VkR0Y9LyUqY29udmVydGVkR0Y9LyUraW1zZWxlY3RlZEdGPS8lLHBsYWNlaG9sZGVyR0Y9LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkkvJS9tYXRoYmFja2dyb3VuZEdGTC8lK2ZvbnRmYW1pbHlHRjcvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjotSSNtbkdGJTY5USMyMEYoRjVGOEY7L0Y/Rj1GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG8vRl9vUSdub3JtYWxGKEZhby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtSSNtb0dGJTYzUSgmbWludXM7RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y9LyUqc2VwYXJhdG9yR0Y9LyUnbHNwYWNlR1EwbWVkaXVtbWF0aHNwYWNlRigvJSdyc3BhY2VHRmpwLyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lMGZvbnRfc3R5bGVfbmFtZUdGZ24vJSVzaXplR0Y6LyUrZm9yZWdyb3VuZEdGSS8lK2JhY2tncm91bmRHRkwtRiQ2JS1GZG82OVEjOTNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhby1GXnA2M1ExJkludmlzaWJsZVRpbWVzO0YoRmFwRmRwRmZwL0ZpcFEkMGVtRigvRlxxRl5zRl1xRl9xRmFxRmRxRmdxRmlxRltyRl1yRl9yRmFyRmNyLUYvNiVGMS1GZG82OVEjMTlGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5USQyODFGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIzE4RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam8tRl5wNjNRIitGKEZhcEZkcEZmcEZocEZbcUZdcUZfcUZhcUZkcUZncUZpcUZbckZdckZfckZhckZjci1GJDYlLUZkbzY5USU4NzkwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxN0YoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRJzMyODM0NUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTZGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5USgyMjA0NTUzRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxNUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl90LUYkNiUtRmRvNjlRKTMxNTkzMDI4RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxNEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRKjcxMzQ3MDMyMkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5USs0NTc5NDc5OTcyRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxMkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl90LUYkNiUtRmRvNjlRLDU1NjA1OTQ2NDcwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxMUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRLTYyNzE1NTAxODUxNkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTBGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5US4yMDM2NTk5MjU2MzYwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USI5RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GX3QtRiQ2JS1GZG82OVEvNDI3ODg0MDEyODQ2MTVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjhGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTA0NTQ5OTA2MDE4MTc5ODlGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjdGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTEyMDA5MDE1MTUwMTk1NzE5RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USI2RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GX3QtRiQ2JS1GZG82OVEyNDEzNTkxOTI0MzU4OTg0MjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5UTIyODc5MDg0NDMyNzA2NDIzOUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEiNEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRNDE3NjgxNzQ3NTU4MDU1MDE2MDhGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTQzOTQyNDY2MjUxMzI0MTkyODM3RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USIyRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GXXAtRiQ2JS1GZG82OVE1MTM4MDkxOTE3MDcyMzE0MjAyMTJGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0ZqckYxRl90LUZkbzY5UTUyODc2ODgyMDg3NjQ1NTAzMDAwOEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvNyMsTCokKUkieEdGKCIjPyIiIkZgX2wqJiIjJCpGYF9sKUZeX2wiIz5GYF9sISIiKiYiJCJHRmBfbClGXl9sIiM9RmBfbEZlX2wqJiIlIXopRmBfbClGXl9sIiM8RmBfbEZgX2wqJiInWCRHJEZgX2wpRl5fbCIjO0ZgX2xGZV9sKiYiKGBYPyNGYF9sKUZeX2wiIzpGYF9sRmBfbComIilHSWZKRmBfbClGXl9sIiM5RmBfbEZgX2wqJiIqQS5aOChGYF9sKUZeX2wiIzhGYF9sRmVfbComIitzKnolelhGYF9sKUZeX2wiIzdGYF9sRmBfbComIixxayVmZ2JGYF9sKUZeX2wiIzZGYF9sRmBfbComIi07Jj1dOkYnRmBfbClGXl9sIiM1RmBfbEZlX2wqJiIuZ2pEKmZPP0ZgX2wpRl5fbCIiKkZgX2xGYF9sKiYiLzpZRywlKXlVRmBfbClGXl9sIiIpRmBfbEZgX2wqJiIwKil6Ij1nISpcWEZgX2wpRl5fbCIiKEZgX2xGZV9sKiYiMT5kPl1eLDQ/RmBfbClGXl9sIiInRmBfbEZlX2wqJiIyRCUpKmVWIz5mOCVGYF9sKUZeX2wiIiZGYF9sRmBfbComIjJSVTFGViUzekdGYF9sKUZeX2wiIiVGYF9sRmBfbComIjQzO10wZXZ1Im88RmBfbClGXl9sIiIkRmBfbEZlX2wqJiI0UEc+QzhEbUMlUkZgX2wpRl5fbCIiI0ZgX2xGZV9sKiYiNTctVUpzcSI+NFEiRmBfbEZeX2xGYF9sRmVfbCI1MysuYmsoMyMpbyhHRmBfbA== LinBox characteristic polynomial lbCharpoly(A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiIyEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNkstRiQ2Iy1JJW1zdXBHRiU2JS1JI21pR0YlNjlRInhGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGPS8lKnN1YnNjcmlwdEdGPS8lLHN1cGVyc2NyaXB0R0Y9LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGPS8lK2V4ZWN1dGFibGVHRj0vJSlyZWFkb25seUdGQC8lKWNvbXBvc2VkR0Y9LyUqY29udmVydGVkR0Y9LyUraW1zZWxlY3RlZEdGPS8lLHBsYWNlaG9sZGVyR0Y9LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkkvJS9tYXRoYmFja2dyb3VuZEdGTC8lK2ZvbnRmYW1pbHlHRjcvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjotSSNtbkdGJTY5USMyMEYoRjVGOEY7L0Y/Rj1GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG8vRl9vUSdub3JtYWxGKEZhby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtSSNtb0dGJTYzUSgmbWludXM7RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y9LyUqc2VwYXJhdG9yR0Y9LyUnbHNwYWNlR1EwbWVkaXVtbWF0aHNwYWNlRigvJSdyc3BhY2VHRmpwLyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lMGZvbnRfc3R5bGVfbmFtZUdGZ24vJSVzaXplR0Y6LyUrZm9yZWdyb3VuZEdGSS8lK2JhY2tncm91bmRHRkwtRiQ2JS1GZG82OVEjOTNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhby1GXnA2M1ExJkludmlzaWJsZVRpbWVzO0YoRmFwRmRwRmZwL0ZpcFEkMGVtRigvRlxxRl5zRl1xRl9xRmFxRmRxRmdxRmlxRltyRl1yRl9yRmFyRmNyLUYvNiVGMS1GZG82OVEjMTlGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5USQyODFGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIzE4RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam8tRl5wNjNRIitGKEZhcEZkcEZmcEZocEZbcUZdcUZfcUZhcUZkcUZncUZpcUZbckZdckZfckZhckZjci1GJDYlLUZkbzY5USU4NzkwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxN0YoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRJzMyODM0NUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTZGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5USgyMjA0NTUzRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxNUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl90LUYkNiUtRmRvNjlRKTMxNTkzMDI4RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxNEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRKjcxMzQ3MDMyMkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5USs0NTc5NDc5OTcyRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxMkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl90LUYkNiUtRmRvNjlRLDU1NjA1OTQ2NDcwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxMUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRLTYyNzE1NTAxODUxNkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTBGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5US4yMDM2NTk5MjU2MzYwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USI5RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GX3QtRiQ2JS1GZG82OVEvNDI3ODg0MDEyODQ2MTVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjhGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTA0NTQ5OTA2MDE4MTc5ODlGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjdGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTEyMDA5MDE1MTUwMTk1NzE5RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USI2RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GX3QtRiQ2JS1GZG82OVEyNDEzNTkxOTI0MzU4OTg0MjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5UTIyODc5MDg0NDMyNzA2NDIzOUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEiNEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRNDE3NjgxNzQ3NTU4MDU1MDE2MDhGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTQzOTQyNDY2MjUxMzI0MTkyODM3RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USIyRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GXXAtRiQ2JS1GZG82OVE1MTM4MDkxOTE3MDcyMzE0MjAyMTJGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0ZqckYxRl90LUZkbzY5UTUyODc2ODgyMDg3NjQ1NTAzMDAwOEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvNyMsTCokKUkieEdGKCIjPyIiIkZgX2wqJiIjJCpGYF9sKUZeX2wiIz5GYF9sISIiKiYiJCJHRmBfbClGXl9sIiM9RmBfbEZlX2wqJiIlIXopRmBfbClGXl9sIiM8RmBfbEZgX2wqJiInWCRHJEZgX2wpRl5fbCIjO0ZgX2xGZV9sKiYiKGBYPyNGYF9sKUZeX2wiIzpGYF9sRmBfbComIilHSWZKRmBfbClGXl9sIiM5RmBfbEZgX2wqJiIqQS5aOChGYF9sKUZeX2wiIzhGYF9sRmVfbComIitzKnolelhGYF9sKUZeX2wiIzdGYF9sRmBfbComIixxayVmZ2JGYF9sKUZeX2wiIzZGYF9sRmBfbComIi07Jj1dOkYnRmBfbClGXl9sIiM1RmBfbEZlX2wqJiIuZ2pEKmZPP0ZgX2wpRl5fbCIiKkZgX2xGYF9sKiYiLzpZRywlKXlVRmBfbClGXl9sIiIpRmBfbEZgX2wqJiIwKil6Ij1nISpcWEZgX2wpRl5fbCIiKEZgX2xGZV9sKiYiMT5kPl1eLDQ/RmBfbClGXl9sIiInRmBfbEZlX2wqJiIyRCUpKmVWIz5mOCVGYF9sKUZeX2wiIiZGYF9sRmBfbComIjJSVTFGViUzekdGYF9sKUZeX2wiIiVGYF9sRmBfbComIjQzO10wZXZ1Im88RmBfbClGXl9sIiIkRmBfbEZlX2wqJiI0UEc+QzhEbUMlUkZgX2wpRl5fbCIiI0ZgX2xGZV9sKiYiNTctVUpzcSI+NFEiRmBfbEZeX2xGYF9sRmVfbCI1MysuYmsoMyMpbyhHRmBfbA== Timing comparison t1:=time(CharacteristicPolynomial(A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4xMDJGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJC0iISIkNyNGZXI= t2:=time(lbCharpoly(A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiIiEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4wMDZGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiIichIiQ3I0Zlcg== t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxNy4wMDAwMDAwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKysrKzwhIik= B:=Matrix(50,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRKn41MH54fjUwfkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnTWF0cml4RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn CharacteristicPolynomial(B,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNmJxLUkjbW9HRiU2M1EqJnVtaW51czA7RigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJmZhbHNlRigvJSpzZXBhcmF0b3JHRjUvJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGOi8lKXN0cmV0Y2h5R0Y1LyUqc3ltbWV0cmljR0Y1LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGNS8lLm1vdmFibGVsaW1pdHNHRjUvJSdhY2NlbnRHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lJXNpemVHUSMxMkYoLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC1GJDYlLUkjbW5HRiU2OVFlbjI0NjUwODEyMzA2NjEwMDk4NzYyOTQ3NjQxODMzNTY0MjA0MjI5MTIwOTQ5OTAzNTkxNDkzMDc3NDRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUi8lJWJvbGRHRjUvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHRlUvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHRk8vJSptYXRoY29sb3JHRlUvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRltvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZSLUYtNjNRMSZJbnZpc2libGVUaW1lcztGKC9GMVEmaW5maXhGKEYzRjZGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZQRlNGVi1JI21pR0YlNjlRInhGKEZpbkZcb0Zeby9GYW9GYnBGYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXEvRmRxUSdpdGFsaWNGKEZmcS1GLTYzUSIrRihGW3JGM0Y2L0Y5UTBtZWRpdW1tYXRoc3BhY2VGKC9GPEZockY9Rj9GQUZERkdGSUZLRk1GUEZTRlYtRiQ2Iy1JJW1zdXBHRiU2JUZdci1GZm42OVEjNTBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRi02M1EoJm1pbnVzO0YoRltyRjNGNkZnckZpckY9Rj9GQUZERkdGSUZLRk1GUEZTRlYtRiQ2JS1GZm42OVEkMjY2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVElNDAyMUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0OEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRJjI4MDA5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRmZuNjlRZW4zOTU4NjI4NTQzNTY2Mzk0NDMzODA1NjI1NjM0OTE3NDU2NjM5MTM4ODU2MzA2MTc2MzM5MjU0OTQ0RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGZHItRiQ2JS1GZm42OVEnODQ3NzgzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVEpMzk0NjY5NTNGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjNDVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5USo1MzUxMDg3NThGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjNDRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5USs4NDU2OTUzNTU2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVEtMjQ5MjA4MTk1MzQ4RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVEuMjIwNDUxMjU3MjI2N0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0MUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRMDI0NTEyNDY2NTY2OTAyNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0MEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRMTMwNzY4NDk2MDkwNTA5MjZGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMzlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UTIyNTg1NzQ0MzAwNjY0ODE0MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRMzIwNDg5NDIzNzg1NDU4OTIwOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRNTM3MDQ5OTEwNDIyOTYwNDIwOTMyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzM2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVE2MjA0MDc5Nzg5NzI2MDQ3NTg5NjM4RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzM1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVE3MzQ1MjcyMTM5NjM5NDMyNTIyMjUxOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRODk0Mzg3NTE1MzY0NTQzMDY0MjA3NTk1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzMzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVE5ODAxOTkyOTAwODk4MzY0MDg5MjcxMDYwRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzMyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVE7MTI4MjA5OTc2ODc4MjM3NTA2NDg2MzEyNzRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMzFGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UTsxNzYyNzQyNTk3OTExMzgxODQwMTc5OTQ0NkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRPTk5ODEwNjY1NzIxMjM2NDgyMzU1MTAyNDcxNzVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMjlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UT4zMjM2NDcwMTc4MzQ0NTc1NTUyMTk4Njg0ODM0N0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRPzcwMjA4OTc4Mzk5MTA2Nzg5NjIxNTk3NTU1MDM1OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRQTEyMjA0ODczNjYwMjk3MTgzMTAwMjQ0MzI0Mzg0NzE3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzI2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFCNTAwMDk5MzQ2MjQ0MjYzNjg5Mzc1MDM0MzUwNjk4MjkzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzI1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFDNjEwOTExODkwMjI2NjY2MDc4MDMyODk2MjAxNjM4MDI1MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRRTI4NDIxNjQ0NjkwMTk3ODY4MjQwNTEyNzI5ODA3MTU0Njc1OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyM0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRRjEwMzUxNjcwMzI5OTQ0NjA0NjUwMTM5ODY2NTM4NzY1ODE1MzlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMjJGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UUczMzAyMzMyNzc3NTk4ODcxMDM5NDQ0NzQ0MjEyNjc2MTIwMTA3OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyMUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRSDEwMDQ4NDAzNzA1MTM2NjYzNTA3MzYwODE1MDgxNDA2MzIzMjY3MEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRSTg4NjUyNTMzOTc3OTQ0NDg3MjI5NDg0MzkxNTcxNzY2NTkyMTgxNzJGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UUoyMDAyODA4ODI2NzcwODc0NzQ3Njk2NDkzOTkzNDIxOTYzMzcxNjk0MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRSzQ1MDUzNjgwOTUyMzA4NzkyOTQ3ODU4MDAyMzk1OTc1MDk3NDI0NDczN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRTTE0MzkwMTk5MzAxNTgxNzIyNDg2NDI3MTE0Mzk5NzAyODk1MDc1NTE1Njc2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzE2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFNNzEyODMwODY1MTgxNjYyNjY3NTIxNTk3Mzk2MTcwMzIwOTUwMzUxMDQ2MzFGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UU4zMzg0NDgzNDI5ODMxMjg2OTA0NzIxNzkxNTg0NTc1ODI4ODI5NjU3NDUxNDhGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UVAxMTY4Mzk1NzU5MTQwOTg4NDE5OTk5ODcyNjUyNTYzNzYxOTU2MzQ4MDI1NzEzNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxM0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRUDExMTAxNzQwMDU3NzQ3MTA0ODAyMTA4MDIxMjU3OTE4MjE2MzA3OTQ3ODk4NjY1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzEyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFRNzU3NzU0NTAxMDEzNzI4Njc0MjY5NjQ2NTUzNTEzMjU5NjA1NzIyODQ4MTc5OTU2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzExRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFSNTkzMzg4ODYxNTYyMzE2MTI5MDk4Mjk2MjU4ODAzODEzMDEzMDYzNTEzOTcwMzcwMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRUzQ0MjAwMzk4MDUxODA3NTM4NzMxNDM0NTE1MTYyNTY4ODQ1MzEzODI2MjQxNjAyOTQ0RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIjlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UVQyMzAyMTA3NDY3MDI0NDY4ODEwOTg0OTI1MTQ1MDI2Mzg5Njk4Nzc3MTg3NDYzMTcwNjBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRVDgzNDIzNDUzNjk1NTU3MzI2MzQzODI1NzA1NTk2NjI5OTk4NTYzNjQ4MTg5MDM5NzEwN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USI3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFWNjgwNzc4MjQ1NDc4NzE5MzQ2ODAxMzIxNDg1MzIwNDIyMzYxNjAxMDYwMDMzNTgyNjE2MjBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiNkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRVzQyOTUwMTEwODk3NDUwMjg1MzczNTQzOTU4NTIxNDUwODM4OTcyMTYxNjU5NzYxNTg2OTU3NUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USI1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFXMTY3NDkxMjI5NDE1MzY1NzUzMTc5MDg5MTYwMzE4MjAxOTM1Mjg2MjU5NDcwMDY3MTk5NDM5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIjRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UVk2MDIyOTQ5MTYzNjY0MDgwOTYzODEzNTY4NTU4NDAwMjY1MTAyNDQ3MjQ0NTc1NDg1MjgzMDUyN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USIzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFZODY5OTY4NzA4MDkwNDgxNTE3MTE5MjM3NDc2NjkwMDk4NzQ2MTAzMTY0MzUyMjAxNTA1OTQ4NTRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiMkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzNyMsYnEqJiJlbld4SVwiZi4qXDQ3SFU/a04kPWtaSHcpNDVtSTczbEMiIiJJInhHRihGX2JtISIiKiQpRmBibSIjXUZfYm1GX2JtKiYiJG0jRl9ibSlGYGJtIiNcRl9ibUZhYm0qJiIlQFNGX2JtKUZgYm0iI1tGX2JtRl9ibSomIiY0IUdGX2JtKUZgYm0iI1pGX2JtRl9ibSJlbldcRFJqPDFqJilRIlJtWDxcakRjIVFWJVJtTmFHJ2VSRl9ibSomIickeVopRl9ibSlGYGJtIiNZRl9ibUZfYm0qJiIpYHBZUkZfYm0pRmBibSIjWEZfYm1GYWJtKiYiKmUoM15gRl9ibSlGYGJtIiNXRl9ibUZfYm0qJiIrY04mcFgpRl9ibSlGYGJtIiNWRl9ibUZfYm0qJiItW2A+MyNcI0ZfYm0pRmBibSIjVUZfYm1GX2JtKiYiLm5BZDdYPyNGX2JtKUZgYm0iI1RGX2JtRmFibSomIjBDIXBjbUNeQ0ZfYm0pRmBibSIjU0ZfYm1GYWJtKiYiMUU0MDQnXG8yJEZfYm0pRmBibSIjUkZfYm1GX2JtKiYiMlUiW20rVnUmZSNGX2JtKUZgYm0iI1FGX2JtRl9ibSomIjMzIyplYXlCJSpbP0ZfYm0pRmBibSIjUEZfYm1GYWJtKiYiNUs0VWdIVTUqXHEkRl9ibSlGYGJtIiNPRl9ibUZhYm0qJiI2UScqZVpncyp5elM/Rl9ibSlGYGJtIiNORl9ibUZfYm0qJiI3PURBRFZSJ1JARlgkRl9ibSlGYGJtIiNNRl9ibUZfYm0qJiI4JmYyVTFWWE86dlElKkZfYm0pRmBibSIjTEZfYm1GYWJtKiYiOWc1RiozayQpKjMhSCo+ISlGX2JtKUZgYm0iI0tGX2JtRmFibSomIjt1N2pbMXZCeW8oKjQjRyJGX2JtKUZgYm0iI0pGX2JtRmFibSomIjtZJSp6LCU9UTZ6ZlVGdyJGX2JtKUZgYm0iI0lGX2JtRmFibSomIj12ckM1YkJbTzdzbDEiKSoqRl9ibSlGYGJtIiNIRl9ibUZhYm0qJiI+WiRbbyk+X2JkVyR5LFpPS0ZfYm0pRmBibSIjR0ZfYm1GX2JtKiYiP2YuYnZmQCcqeTEiKlJ5KjMtKEZfYm0pRmBibSIjRkZfYm1GX2JtKiYiQTxaUUNWQytKPShIZ08oWz83Rl9ibSlGYGJtIiNFRl9ibUZfYm0qJiJCJEgpcF1WLnYkKm9qVUNZJCo0KyZGX2JtKUZgYm0iI0RGX2JtRl9ibSomIkNfLVE7PycqRy55Z21FLSo9IjRoRl9ibSlGYGJtIiNDRl9ibUZfYm0qJiJFZm5hciEpSEZeUyNveT4hcFc7VUdGX2JtKUZgYm0iI0JGX2JtRmFibSomIkZSOmV3UWwnKVIsbC9ZJSpILm5eLiJGX2JtKUZgYm0iI0FGX2JtRmFibSomIkd6NT9objdVdVclUjUoKSlmeEZMLUxGX2JtKUZgYm0iI0BGX2JtRl9ibSomIkhxRUJqUyIzOjNPMk5tT15xLiVbKyJGX2JtKUZgYm0iIz9GX2JtRmFibSomIklzIj0jZm08ZCJSJVtIc1tXeihSYF8nKSlGX2JtKUZgYm0iIz5GX2JtRmFibSomIkpVcHJMJz5VJCpSXCdwWlooM3hFKTNHKyNGX2JtKUZgYm0iIz1GX2JtRl9ibSomIktQWkN1NHZmUi0hZXklSHozQiY0b2BdJUZfYm0pRmBibSIjPEZfYm1GX2JtKiYiTXdjXnZdKkdxKlI5clUnW0E8ZSwkKj4hUjlGX2JtKUZgYm0iIztGX2JtRmFibSomIk1KWTVOXTRLcWhSKGZAdm1pOz1sMyRHckZfYm0pRmBibSIjOkZfYm1GYWJtKiYiTltedWxIKUdlZCVlInpAWiFwR0opSE1bJVEkRl9ibSlGYGJtIiM5Rl9ibUZhYm0qJiJQTXJEIVtqJj53akRscykqKio+JSkpNDlmZFJvNkZfYm0pRmBibSIjOEZfYm1GYWJtKiYiUGwnKSp5JXpJOyM9ekRAITNAIVs1WngwUzw1NkZfYm0pRmBibSIjN0ZfYm1GX2JtKiYiUWMqeiJbR3MwJ2ZLXmBsa3BVbkdQLCxYdmQoRl9ibSlGYGJtIiM2Rl9ibUZhYm0qJiJSK1BxUl5qSSw4USEpZWlIKTRIaEppOicpKVEkZkZfYm0pRmBibSIjNUZfYm1GYWJtKiYiU1dIZ1RpI1FKWClvRDs6WFZKKFF2IT0wKVIrVSVGX2JtKUZgYm0iIipGX2JtRl9ibSomIlRncUpZKD14KClwKlFFXTlEXCk0IilvVy1udTUtQkZfYm0pRmBibSIiKUZfYm1GX2JtKiYiVDJyUiEqPVtPYykqKkhtZjBkI1FNRXRiJnBgTVUkKUZfYm0pRmBibSIiKEZfYm1GYWJtKiYiVj87RWVMKzEsO09BL0smW0A4IW9NPih5YUN5Mm9GX2JtKUZgYm0iIidGX2JtRmFibSomIld2JnBlaChmOztzKlEzWEAmZVJhdGBHXXUqMzZdSCVGX2JtKUZgYm0iIiZGX2JtRl9ibSomIldSJSo+bitaZmlHTj4/PS47KjN6SnZsYFRIN1xuIkZfYm0pRmBibSIiJUZfYm1GX2JtKiYiWUYwJEcmW3ZYQ1pDNWwtU2Umb04iUSc0M2tPO1xILSdGX2JtKUZgYm0iIiRGX2JtRl9ibSomIllhW2ZdLEFOa0o1WSgpNCFwd3VCPnJeIlshNDMobypwKUZfYm0pRmBibSIiI0ZfYm1GX2Jt lbCharpoly(B,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiJyEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNmJxLUkjbW9HRiU2M1EqJnVtaW51czA7RigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJmZhbHNlRigvJSpzZXBhcmF0b3JHRjUvJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGOi8lKXN0cmV0Y2h5R0Y1LyUqc3ltbWV0cmljR0Y1LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGNS8lLm1vdmFibGVsaW1pdHNHRjUvJSdhY2NlbnRHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lJXNpemVHUSMxMkYoLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC1GJDYlLUkjbW5HRiU2OVFlbjI0NjUwODEyMzA2NjEwMDk4NzYyOTQ3NjQxODMzNTY0MjA0MjI5MTIwOTQ5OTAzNTkxNDkzMDc3NDRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUi8lJWJvbGRHRjUvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHRlUvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHRk8vJSptYXRoY29sb3JHRlUvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRltvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZSLUYtNjNRMSZJbnZpc2libGVUaW1lcztGKC9GMVEmaW5maXhGKEYzRjZGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZQRlNGVi1JI21pR0YlNjlRInhGKEZpbkZcb0Zeby9GYW9GYnBGYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXEvRmRxUSdpdGFsaWNGKEZmcS1GLTYzUSIrRihGW3JGM0Y2L0Y5UTBtZWRpdW1tYXRoc3BhY2VGKC9GPEZockY9Rj9GQUZERkdGSUZLRk1GUEZTRlYtRiQ2Iy1JJW1zdXBHRiU2JUZdci1GZm42OVEjNTBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRi02M1EoJm1pbnVzO0YoRltyRjNGNkZnckZpckY9Rj9GQUZERkdGSUZLRk1GUEZTRlYtRiQ2JS1GZm42OVEkMjY2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVElNDAyMUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0OEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRJjI4MDA5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRmZuNjlRZW4zOTU4NjI4NTQzNTY2Mzk0NDMzODA1NjI1NjM0OTE3NDU2NjM5MTM4ODU2MzA2MTc2MzM5MjU0OTQ0RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGZHItRiQ2JS1GZm42OVEnODQ3NzgzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVEpMzk0NjY5NTNGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjNDVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5USo1MzUxMDg3NThGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjNDRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5USs4NDU2OTUzNTU2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVEtMjQ5MjA4MTk1MzQ4RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVEuMjIwNDUxMjU3MjI2N0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0MUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRMDI0NTEyNDY2NTY2OTAyNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0MEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRMTMwNzY4NDk2MDkwNTA5MjZGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMzlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UTIyNTg1NzQ0MzAwNjY0ODE0MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRMzIwNDg5NDIzNzg1NDU4OTIwOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRNTM3MDQ5OTEwNDIyOTYwNDIwOTMyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzM2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVE2MjA0MDc5Nzg5NzI2MDQ3NTg5NjM4RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzM1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVE3MzQ1MjcyMTM5NjM5NDMyNTIyMjUxOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRODk0Mzg3NTE1MzY0NTQzMDY0MjA3NTk1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzMzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVE5ODAxOTkyOTAwODk4MzY0MDg5MjcxMDYwRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzMyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVE7MTI4MjA5OTc2ODc4MjM3NTA2NDg2MzEyNzRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMzFGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UTsxNzYyNzQyNTk3OTExMzgxODQwMTc5OTQ0NkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRPTk5ODEwNjY1NzIxMjM2NDgyMzU1MTAyNDcxNzVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMjlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UT4zMjM2NDcwMTc4MzQ0NTc1NTUyMTk4Njg0ODM0N0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRPzcwMjA4OTc4Mzk5MTA2Nzg5NjIxNTk3NTU1MDM1OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRQTEyMjA0ODczNjYwMjk3MTgzMTAwMjQ0MzI0Mzg0NzE3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzI2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFCNTAwMDk5MzQ2MjQ0MjYzNjg5Mzc1MDM0MzUwNjk4MjkzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzI1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFDNjEwOTExODkwMjI2NjY2MDc4MDMyODk2MjAxNjM4MDI1MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRRTI4NDIxNjQ0NjkwMTk3ODY4MjQwNTEyNzI5ODA3MTU0Njc1OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyM0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRRjEwMzUxNjcwMzI5OTQ0NjA0NjUwMTM5ODY2NTM4NzY1ODE1MzlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMjJGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UUczMzAyMzMyNzc3NTk4ODcxMDM5NDQ0NzQ0MjEyNjc2MTIwMTA3OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyMUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRSDEwMDQ4NDAzNzA1MTM2NjYzNTA3MzYwODE1MDgxNDA2MzIzMjY3MEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRSTg4NjUyNTMzOTc3OTQ0NDg3MjI5NDg0MzkxNTcxNzY2NTkyMTgxNzJGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UUoyMDAyODA4ODI2NzcwODc0NzQ3Njk2NDkzOTkzNDIxOTYzMzcxNjk0MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRSzQ1MDUzNjgwOTUyMzA4NzkyOTQ3ODU4MDAyMzk1OTc1MDk3NDI0NDczN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRTTE0MzkwMTk5MzAxNTgxNzIyNDg2NDI3MTE0Mzk5NzAyODk1MDc1NTE1Njc2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzE2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFNNzEyODMwODY1MTgxNjYyNjY3NTIxNTk3Mzk2MTcwMzIwOTUwMzUxMDQ2MzFGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UU4zMzg0NDgzNDI5ODMxMjg2OTA0NzIxNzkxNTg0NTc1ODI4ODI5NjU3NDUxNDhGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UVAxMTY4Mzk1NzU5MTQwOTg4NDE5OTk5ODcyNjUyNTYzNzYxOTU2MzQ4MDI1NzEzNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxM0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRUDExMTAxNzQwMDU3NzQ3MTA0ODAyMTA4MDIxMjU3OTE4MjE2MzA3OTQ3ODk4NjY1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzEyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFRNzU3NzU0NTAxMDEzNzI4Njc0MjY5NjQ2NTUzNTEzMjU5NjA1NzIyODQ4MTc5OTU2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzExRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFSNTkzMzg4ODYxNTYyMzE2MTI5MDk4Mjk2MjU4ODAzODEzMDEzMDYzNTEzOTcwMzcwMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRUzQ0MjAwMzk4MDUxODA3NTM4NzMxNDM0NTE1MTYyNTY4ODQ1MzEzODI2MjQxNjAyOTQ0RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIjlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UVQyMzAyMTA3NDY3MDI0NDY4ODEwOTg0OTI1MTQ1MDI2Mzg5Njk4Nzc3MTg3NDYzMTcwNjBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRVDgzNDIzNDUzNjk1NTU3MzI2MzQzODI1NzA1NTk2NjI5OTk4NTYzNjQ4MTg5MDM5NzEwN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USI3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFWNjgwNzc4MjQ1NDc4NzE5MzQ2ODAxMzIxNDg1MzIwNDIyMzYxNjAxMDYwMDMzNTgyNjE2MjBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiNkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRVzQyOTUwMTEwODk3NDUwMjg1MzczNTQzOTU4NTIxNDUwODM4OTcyMTYxNjU5NzYxNTg2OTU3NUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USI1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFXMTY3NDkxMjI5NDE1MzY1NzUzMTc5MDg5MTYwMzE4MjAxOTM1Mjg2MjU5NDcwMDY3MTk5NDM5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIjRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UVk2MDIyOTQ5MTYzNjY0MDgwOTYzODEzNTY4NTU4NDAwMjY1MTAyNDQ3MjQ0NTc1NDg1MjgzMDUyN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USIzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFZODY5OTY4NzA4MDkwNDgxNTE3MTE5MjM3NDc2NjkwMDk4NzQ2MTAzMTY0MzUyMjAxNTA1OTQ4NTRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiMkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzNyMsYnEqJiJlbld4SVwiZi4qXDQ3SFU/a04kPWtaSHcpNDVtSTczbEMiIiJJInhHRihGX2JtISIiKiQpRmBibSIjXUZfYm1GX2JtKiYiJG0jRl9ibSlGYGJtIiNcRl9ibUZhYm0qJiIlQFNGX2JtKUZgYm0iI1tGX2JtRl9ibSomIiY0IUdGX2JtKUZgYm0iI1pGX2JtRl9ibSJlbldcRFJqPDFqJilRIlJtWDxcakRjIVFWJVJtTmFHJ2VSRl9ibSomIickeVopRl9ibSlGYGJtIiNZRl9ibUZfYm0qJiIpYHBZUkZfYm0pRmBibSIjWEZfYm1GYWJtKiYiKmUoM15gRl9ibSlGYGJtIiNXRl9ibUZfYm0qJiIrY04mcFgpRl9ibSlGYGJtIiNWRl9ibUZfYm0qJiItW2A+MyNcI0ZfYm0pRmBibSIjVUZfYm1GX2JtKiYiLm5BZDdYPyNGX2JtKUZgYm0iI1RGX2JtRmFibSomIjBDIXBjbUNeQ0ZfYm0pRmBibSIjU0ZfYm1GYWJtKiYiMUU0MDQnXG8yJEZfYm0pRmBibSIjUkZfYm1GX2JtKiYiMlUiW20rVnUmZSNGX2JtKUZgYm0iI1FGX2JtRl9ibSomIjMzIyplYXlCJSpbP0ZfYm0pRmBibSIjUEZfYm1GYWJtKiYiNUs0VWdIVTUqXHEkRl9ibSlGYGJtIiNPRl9ibUZhYm0qJiI2UScqZVpncyp5elM/Rl9ibSlGYGJtIiNORl9ibUZfYm0qJiI3PURBRFZSJ1JARlgkRl9ibSlGYGJtIiNNRl9ibUZfYm0qJiI4JmYyVTFWWE86dlElKkZfYm0pRmBibSIjTEZfYm1GYWJtKiYiOWc1RiozayQpKjMhSCo+ISlGX2JtKUZgYm0iI0tGX2JtRmFibSomIjt1N2pbMXZCeW8oKjQjRyJGX2JtKUZgYm0iI0pGX2JtRmFibSomIjtZJSp6LCU9UTZ6ZlVGdyJGX2JtKUZgYm0iI0lGX2JtRmFibSomIj12ckM1YkJbTzdzbDEiKSoqRl9ibSlGYGJtIiNIRl9ibUZhYm0qJiI+WiRbbyk+X2JkVyR5LFpPS0ZfYm0pRmBibSIjR0ZfYm1GX2JtKiYiP2YuYnZmQCcqeTEiKlJ5KjMtKEZfYm0pRmBibSIjRkZfYm1GX2JtKiYiQTxaUUNWQytKPShIZ08oWz83Rl9ibSlGYGJtIiNFRl9ibUZfYm0qJiJCJEgpcF1WLnYkKm9qVUNZJCo0KyZGX2JtKUZgYm0iI0RGX2JtRl9ibSomIkNfLVE7PycqRy55Z21FLSo9IjRoRl9ibSlGYGJtIiNDRl9ibUZfYm0qJiJFZm5hciEpSEZeUyNveT4hcFc7VUdGX2JtKUZgYm0iI0JGX2JtRmFibSomIkZSOmV3UWwnKVIsbC9ZJSpILm5eLiJGX2JtKUZgYm0iI0FGX2JtRmFibSomIkd6NT9objdVdVclUjUoKSlmeEZMLUxGX2JtKUZgYm0iI0BGX2JtRl9ibSomIkhxRUJqUyIzOjNPMk5tT15xLiVbKyJGX2JtKUZgYm0iIz9GX2JtRmFibSomIklzIj0jZm08ZCJSJVtIc1tXeihSYF8nKSlGX2JtKUZgYm0iIz5GX2JtRmFibSomIkpVcHJMJz5VJCpSXCdwWlooM3hFKTNHKyNGX2JtKUZgYm0iIz1GX2JtRl9ibSomIktQWkN1NHZmUi0hZXklSHozQiY0b2BdJUZfYm0pRmBibSIjPEZfYm1GX2JtKiYiTXdjXnZdKkdxKlI5clUnW0E8ZSwkKj4hUjlGX2JtKUZgYm0iIztGX2JtRmFibSomIk1KWTVOXTRLcWhSKGZAdm1pOz1sMyRHckZfYm0pRmBibSIjOkZfYm1GYWJtKiYiTltedWxIKUdlZCVlInpAWiFwR0opSE1bJVEkRl9ibSlGYGJtIiM5Rl9ibUZhYm0qJiJQTXJEIVtqJj53akRscykqKio+JSkpNDlmZFJvNkZfYm0pRmBibSIjOEZfYm1GYWJtKiYiUGwnKSp5JXpJOyM9ekRAITNAIVs1WngwUzw1NkZfYm0pRmBibSIjN0ZfYm1GX2JtKiYiUWMqeiJbR3MwJ2ZLXmBsa3BVbkdQLCxYdmQoRl9ibSlGYGJtIiM2Rl9ibUZhYm0qJiJSK1BxUl5qSSw4USEpZWlIKTRIaEppOicpKVEkZkZfYm0pRmBibSIjNUZfYm1GYWJtKiYiU1dIZ1RpI1FKWClvRDs6WFZKKFF2IT0wKVIrVSVGX2JtKUZgYm0iIipGX2JtRl9ibSomIlRncUpZKD14KClwKlFFXTlEXCk0IilvVy1udTUtQkZfYm0pRmBibSIiKUZfYm1GX2JtKiYiVDJyUiEqPVtPYykqKkhtZjBkI1FNRXRiJnBgTVUkKUZfYm0pRmBibSIiKEZfYm1GYWJtKiYiVj87RWVMKzEsO09BL0smW0A4IW9NPih5YUN5Mm9GX2JtKUZgYm0iIidGX2JtRmFibSomIld2JnBlaChmOztzKlEzWEAmZVJhdGBHXXUqMzZdSCVGX2JtKUZgYm0iIiZGX2JtRl9ibSomIldSJSo+bitaZmlHTj4/PS47KjN6SnZsYFRIN1xuIkZfYm0pRmBibSIiJUZfYm1GX2JtKiYiWUYwJEcmW3ZYQ1pDNWwtU2Umb04iUSc0M2tPO1xILSdGX2JtKUZgYm0iIiRGX2JtRl9ibSomIllhW2ZdLEFOa0o1WSgpNCFwd3VCPnJeIlshNDMobypwKUZfYm0pRmBibSIiI0ZfYm1GX2Jt t1:=time(CharacteristicPolynomial(B,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmNC42NTlGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJWZZISIkNyNGZXI= t2:time(lbCharpoly(B,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA0N0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjWiEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjA4MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIjIykhIiQ= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USw3NzYuNTAwMDAwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKysrbHghIig=
<Text-field style="Heading 3" layout="Heading 3">Linear System Solving</Text-field> n:=200;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQyMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIzcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen);b:=Vector(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiYkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjIwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn Maple linear system solving x1:=LinearSolve(A,b, method=modular);x1[1]; LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjeDFGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USt+MX4uLn4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USdWZWN0b3JGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtRiw2OVEnY29sdW1uRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLyUscGxhY2Vob2xkZXJHRjctRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEpYW55dGhpbmdGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== NiQtSSZtZnJhY0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDYqLUkjbW5HRiU2OVFhXWwmbWludXM7NTI3NDE2MTU0NzUxOTUxMDIzMTE3MTU1OTY4NjczNTQ2NDg0MjE2MzA0MTM3MTk5MjE2OTM0MDkxODcxNTUxMTg3Mjg4MjA0MDg4NjE5MjIwNDczNjMxNDQ1NTEwOTI5ODE4MDU0NzM3MDg3Mjc4NTk3MDUzNzYxNzg3MTQ3ODU1MjQxNTM2NzU0NDYxMTE1MTE1OTgxOTMxNzM5NzU4MTk3MTkwNDYxNjAzNDAxMDA4MzEzNjI4MDkyNTQzOTg0MjY0MzY3NTEyNjA0Mzg4NDk5NDM4ODU0Mjc5MzY4NDExNDU0NzM5MTAxODA1MjYyMzgxNjI0Mjk5NDYyMTI2NzA4NjQ1MDQxMjU0NDgzNzE2MTk0MTg2NzU3NDEwNjlGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGOC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjUtRi02OVFpXGwzOTc3OTY3NDIxODI4ODU1MzcwNDAwODQ3NDkyMzA2MDk1OTYyMjczNTkwMTYwMjM2NDAyNzcwMTM4NzU4NjY0MTcyOTQyMTQzNTI2MjkxMjM4MzgzNjI3MTk5NjcxMDY3MzU3ODE2ODUyNjUyMTkzMTM5MDc0OTA1MTAyNzg2OTg0ODY0NTA2NTY0OTc3MzU2NjM3MzgzOTIyNjU3Nzk2NzMwNzY4ODExNTgwMDQ2OTMzMTg4MTQ2MjI2OTg3NTY0MzI2MDE5MDk4MjIwMjQwOTIzNDU0Mzg5NjQwMDI1NjAwNDY3MTMxOTM2NjA5NzY2MTkyNzY5MzY5MjQyMDQ5NDI3NzIyNTczODkyMDk3NDYwMTM3ODU0Njk5OTAzRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8vJS5saW5ldGhpY2tuZXNzR1EiMUYoLyUrZGVub21hbGlnbkdRJ2NlbnRlckYoLyUpbnVtYWxpZ25HRmZvLyUpYmV2ZWxsZWRHRjgvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRjcjIyFqXGxwNXV2Jz0lPjtQW2E3L1gnM243aSUqSEM7UWlfIT01UlpYNiVvJHpVJilRJSpcKVEvRV5uVkUlKVJhIzRHT0ozNVMuO1khPig+ZShSPCQ+KWY2OjZZYW5gVF8meTkoeWhQMChmeXMzUFowPSlINF5YOWp0L0E+JykzLyMpRyg9XjooPTRNcEAqPlBUSTtVW1lObm9mOjxKLV4+dmFoVEYmImlcbC4qKnBheThndTQjKlFkQXhVXD9DcCRwRj5tKDRtJD44bi9nRCtrKlFhTSM0Qz8jKTQ+Z0trdilwQVkiKT1McC8hZTYpbzJ0J3pkRSNSUVBtTnhcYzFYJ1spcHktXiFcMlJKPl9FJm8ieU5uNW4qPkZPUVE3SEVOOVVIPGsnZShRLHgta0JnLGZ0QSdmNDFCXFozU3FgJilHPVVueihS LinBox linear system solving x2:=lbSolve(A,b);x2[1]; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI2OEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkbyMhIiQ= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjeDJGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USt+MX4uLn4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USdWZWN0b3JGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtRiw2OVEnY29sdW1uRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLyUscGxhY2Vob2xkZXJHRjctRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEpYW55dGhpbmdGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== NiQtSSZtZnJhY0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDYqLUkjbW5HRiU2OVFhXWwmbWludXM7NTI3NDE2MTU0NzUxOTUxMDIzMTE3MTU1OTY4NjczNTQ2NDg0MjE2MzA0MTM3MTk5MjE2OTM0MDkxODcxNTUxMTg3Mjg4MjA0MDg4NjE5MjIwNDczNjMxNDQ1NTEwOTI5ODE4MDU0NzM3MDg3Mjc4NTk3MDUzNzYxNzg3MTQ3ODU1MjQxNTM2NzU0NDYxMTE1MTE1OTgxOTMxNzM5NzU4MTk3MTkwNDYxNjAzNDAxMDA4MzEzNjI4MDkyNTQzOTg0MjY0MzY3NTEyNjA0Mzg4NDk5NDM4ODU0Mjc5MzY4NDExNDU0NzM5MTAxODA1MjYyMzgxNjI0Mjk5NDYyMTI2NzA4NjQ1MDQxMjU0NDgzNzE2MTk0MTg2NzU3NDEwNjlGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGOC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjUtRi02OVFpXGwzOTc3OTY3NDIxODI4ODU1MzcwNDAwODQ3NDkyMzA2MDk1OTYyMjczNTkwMTYwMjM2NDAyNzcwMTM4NzU4NjY0MTcyOTQyMTQzNTI2MjkxMjM4MzgzNjI3MTk5NjcxMDY3MzU3ODE2ODUyNjUyMTkzMTM5MDc0OTA1MTAyNzg2OTg0ODY0NTA2NTY0OTc3MzU2NjM3MzgzOTIyNjU3Nzk2NzMwNzY4ODExNTgwMDQ2OTMzMTg4MTQ2MjI2OTg3NTY0MzI2MDE5MDk4MjIwMjQwOTIzNDU0Mzg5NjQwMDI1NjAwNDY3MTMxOTM2NjA5NzY2MTkyNzY5MzY5MjQyMDQ5NDI3NzIyNTczODkyMDk3NDYwMTM3ODU0Njk5OTAzRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8vJS5saW5ldGhpY2tuZXNzR1EiMUYoLyUrZGVub21hbGlnbkdRJ2NlbnRlckYoLyUpbnVtYWxpZ25HRmZvLyUpYmV2ZWxsZWRHRjgvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRjcjIyFqXGxwNXV2Jz0lPjtQW2E3L1gnM243aSUqSEM7UWlfIT01UlpYNiVvJHpVJilRJSpcKVEvRV5uVkUlKVJhIzRHT0ozNVMuO1khPig+ZShSPCQ+KWY2OjZZYW5gVF8meTkoeWhQMChmeXMzUFowPSlINF5YOWp0L0E+JykzLyMpRyg9XjooPTRNcEAqPlBUSTtVW1lObm9mOjxKLV4+dmFoVEYmImlcbC4qKnBheThndTQjKlFkQXhVXD9DcCRwRj5tKDRtJD44bi9nRCtrKlFhTSM0Qz8jKTQ+Z0trdilwQVkiKT1McC8hZTYpbzJ0J3pkRSNSUVBtTnhcYzFYJ1spcHktXiFcMlJKPl9FJm8ieU5uNW4qPkZPUVE3SEVOOVVIPGsnZShRLHgta0JnLGZ0QSdmNDFCXFozU3FgJilHPVVueihS Timing comparison t1:=time(LinearSolve(A,b,method=modular)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmNC42MTNGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJThZISIkNyNGZXI= t2:=time(lbSolve(A,b)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjE2OEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkbyIhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4zMjNGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJEIkISIkNyNGZXI= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxNC4yODE3MzM3NUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrdkw8RzkhIik= n:=300;B:=Matrix(n,gen);b1:=Vector(n,gen); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQzMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrJDcjRmVy LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4zMDB+eH4zMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjYjFGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USt+MX4uLn4zMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USdWZWN0b3JGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtRiw2OVEnY29sdW1uRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLyUscGxhY2Vob2xkZXJHRjctRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEpYW55dGhpbmdGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== t1:=time(LinearSolve(B,b1, method=modular)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEnMTQuMDEwRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjdDFHRigkIiY1UyIhIiQ3I0Zlcg== t2:time(lbSolve(B,b1)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjMxOUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkPiQhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjgwNUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkMCkhIiQ= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USw0My4zNzQ2MTMwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKzhZUFYhIik=
<Text-field style="Heading 2" layout="Heading 2">Computation over finite fields</Text-field> restart():with(LinBox):with(LinearAlgebra):
<Text-field style="Heading 3" layout="Heading 3">Determinant</Text-field> n:=1000;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USUxMDAwRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkibkdGKCIlKzU3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]);B:=Modular:-Mod(p,A, integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLn4xMDAwfnh+MTAwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRJ01hdHJpeEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSVtc3ViR0YkNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLn4xMDAwfnh+MTAwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRJ01hdHJpeEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSVtc3ViR0YkNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5UShDX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== Maple determinant Modular:-Determinant(p,B); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMxMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM3 Determinant(A,method=modular[p]); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMxMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM3 LinBox determinant lbDeterminant(p, A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjk5MEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkISoqISIk NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMxMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM3 Timing comparison t1:=time(Modular:-Determinant(p,B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMi4xMDZGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJTFAISIkNyNGZXI= t2:=time(Determinant(A,method=modular[p])); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMy4xODRGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJSU9JCEiJDcjRmVy t3:=time(lbDeterminant(p,A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYxLjA0OUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIlXDUhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0M0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS41MjBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0M0dGKCQiJT86ISIkNyNGZXI= t1/t3;t2/t3; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxLjM4NTUyNjMxNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrO2pfJlEiISIq NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwyLjA5NDczNjg0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrVW90JTQjISIq
<Text-field style="Heading 3" layout="Heading 3">Rank</Text-field> restart():with(LinBox):with(LinearAlgebra): n:=1000;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USUxMDAwRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkibkdGKCIlKzU3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]);B:=Modular:-Mod(p,A, integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLn4xMDAwfnh+MTAwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRJ01hdHJpeEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSVtc3ViR0YkNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLn4xMDAwfnh+MTAwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRJ01hdHJpeEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSVtc3ViR0YkNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5UShDX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== Maple rank Modular:-Rank(p,B); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USUxMDAwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiJSs1 LinBox rank lbRank(p, A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYxLjA2NUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIlbDUhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USUxMDAwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiJSs1 Timing comparison t1:=time(Modular:-Rank(p,B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS44MDhGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJTM9ISIkNyNGZXI= t2:=time(lbRank(p,A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYxLjIzNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIlTzchIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMi4wOTNGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJSQ0IyEiJDcjRmVy t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5US0wLjg2MzgzMTgyMDRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyQiKy8jPSRRJykhIzU=
<Text-field style="Heading 3" layout="Heading 3">Minimal Polynomial</Text-field> restart():with(LinBox):with(LinearAlgebra): n:=500;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQ1MDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrJjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH41MDB+eH41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple minimal polynomial doesn't exist in Givaro::Modular Package LinBox minimal polynomial lbMinpoly(p,A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI4MEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkIUchIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNl9mbi1GJDYlLUkjbW5HRiU2OVEiNUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y6LyUqdW5kZXJsaW5lR0Y6LyUqc3Vic2NyaXB0R0Y6LyUsc3VwZXJzY3JpcHRHRjovJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRS8lL21hdGhiYWNrZ3JvdW5kR0ZILyUrZm9udGZhbWlseUdGNC8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGNy1JI21vR0YlNjNRMSZJbnZpc2libGVUaW1lcztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjovJSpzZXBhcmF0b3JHRjovJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGXXAvJSlzdHJldGNoeUdGOi8lKnN5bW1ldHJpY0dGOi8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjovJS5tb3ZhYmxlbGltaXRzR0Y6LyUnYWNjZW50R0Y6LyUwZm9udF9zdHlsZV9uYW1lR0ZaLyUlc2l6ZUdGNy8lK2ZvcmVncm91bmRHRkUvJStiYWNrZ3JvdW5kR0ZILUklbXN1cEdGJTYlLUkjbWlHRiU2OVEieEYoRjJGNUY4L0Y8Rk9GPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbi9GXG9RJ2l0YWxpY0YoRl5vLUYvNjlRJDI0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRmFvNjNRIitGKEZkb0Znb0Zpby9GXHBRMG1lZGl1bW1hdGhzcGFjZUYoL0ZfcEZcc0ZgcEZicEZkcEZncEZqcEZccUZecUZgcUZicUZkcUZmcS1GJDYlLUYvNjlRIjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMjQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEjMTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMjQyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEjMTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMjQzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMjQ1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USI5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDI0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMjQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USMxMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQyNTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDI1MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMzg1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMzg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQzODdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USMxNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQzODhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoeEZgby1GaXE2JUZbci1GLzY5USQzOTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDM5MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDM5MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmN6RmBvLUZpcTYlRltyLUYvNjlRJDM5M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzEwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDM5NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDQyMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDQyMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDIzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDI0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDI1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzNDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USMxMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USM0OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjNTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USM1MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDExOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQxMjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMTIyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMTIzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQxMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMTI1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQxMjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USM3MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRIzcxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRIzcyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQxNTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQxNThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQxNTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USMxM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQxNjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQxNTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQzNDFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoeEZgby1GaXE2JUZbci1GLzY5USQzNDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkMzQwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkNDA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQ0MTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USQ0MTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkNDEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMzUyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDM1M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzMDlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMzEwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMzExRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMzEyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMzEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDMxNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQzOTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMzk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDM5N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMzk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDQ1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQ0NTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQ0NTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkNDU4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDQ1OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDU0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkNDQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyRlx2RmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3JGaVxsRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3JGZ3dGZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyRl1gbEZlckZoci1GJDYlRmN6RmBvLUZpcTYlRltyRmNnbEZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbckZqc0ZlckZoci1GJDYjLUZpcTYlRltyRmN6RmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEjMTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USMxOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USMxOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USMyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USMyMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRIzIyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEjMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEjMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USMyNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USMyNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRIzI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEjMjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEjMjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USMzMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USMzMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USMzMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRIzM0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEjMzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USMzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRIzM3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEjMzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USM0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDM3MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQzNzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQzNzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQxNDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USM2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USM2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USM2NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USM2N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRIzY4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRIzY5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyRmR0RmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkNDgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQ4MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDQ4MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvRltyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkNTAwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQ5OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRJDQ5OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDQ5N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USQ0OTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkNDk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDk0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHNGYG8tRmlxNiVGW3ItRi82OVEkNDkzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHNGYG8tRmlxNiVGW3ItRi82OVEkNDkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkNDkxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDg5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0ODhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkNDg3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHNGYG8tRmlxNiVGW3ItRi82OVEkNDg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkNDg1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkNDg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMzQ4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMzQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDQ5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzMzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMzM0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQ0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQ0NTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkNDUxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkNDUyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDUzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEjOTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USM5N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRIzk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRIzk5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDEwMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDEwMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDMwMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDMwM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMzA0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzA1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMzA2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMzA3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMzA4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEjOTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZkdEZgby1GaXE2JUZbci1GLzY5USM5MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRIzkzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQxNDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USQyODFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQyODJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZkdEZgby1GaXE2JUZbci1GLzY5USQyODNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQyODRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USQyODVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDI4OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMzE2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHNGYG8tRmlxNiVGW3ItRi82OVEkMzE3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMzE4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMzE5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDMyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDE5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxOTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMTkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDE5NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMTk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMTk3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMTk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDE4OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDM1OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQzNjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMzYyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDE0NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRJDE0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzNjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQzNzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkMzcxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDQ3OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDIyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDIyMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDIyMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USQyMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQyMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQyMjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDIyNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQyMjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQyMjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMjE5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDExMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxMTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMTEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMTE0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMTE1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDExNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDExN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTE4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMTA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkNDczRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkNDc0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDQ3NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQ0NzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkNDc3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0NzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQxNTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQxNTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQxNTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQxNTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkNDE2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDE3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkNDE4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkNDE5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkNDIwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMjA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMjEwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyMTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQyMTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMjEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDIxNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQyMTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDIxNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDIxN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDIxOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRJDMzNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQzMzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQzMzdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQyMjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMjMwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMjMxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjMyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyMzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQyMzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjM1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDIzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMjM3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMjM4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyMzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMjk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyOTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjk3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMjk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjk5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzAwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDMwMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRIzUyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEjNTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEjNTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USM1N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USM1OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRIzU5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkNDExRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDMyOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDMzMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDMzMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDMzMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDQwNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDQwN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRJDQwOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRIzc0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzQ0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDM1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzNTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQzNTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQxNDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMTQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzNjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQzNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQzNjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkNDQyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDQzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0NDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkNDQ1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkNDQ2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDQ0N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzNjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQzNjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMzY1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMTgyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMTgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDE4NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxODVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQxODZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMTg3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMTg4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMzk5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDAwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDAxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDAyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDAzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDM1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDE3NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxNzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USQxNzdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMTc4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMTc5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkMTgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMTgxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDEyOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDEyOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxMzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQxMzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQxMzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMTMzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMTM0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEjNDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USM0NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRIzQ1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDE2OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USQxNjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQxNzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDE3MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDE3MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDE3M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDE3NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQzN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDQzOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDQzOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQ0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQ0NDFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQzMzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkMzM5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQzMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQ0MzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDQzM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQzNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDM2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMjcyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMjc0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMjc1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjc3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMjc4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQyODBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMjczRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkNDI2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDQyOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQyOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDQzMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDI2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDI2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDI2NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQyNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQyNjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQyNjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjcwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMjcxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEjOTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USM5NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRIzgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEjODRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USM4NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjODZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEjODdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEjODhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USM4OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USM5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmN6RmBvLUZpcTYlRltyLUYvNjlRJDEwM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQxMDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQxMDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQxMDZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQxMDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQxMDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQxMDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEjNDFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkMzgxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkMzgyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMzgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQ2NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDQ2N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDQ2OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USQ0NjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQ0NzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZkdEZgby1GaXE2JUZbci1GLzY5USQ0NzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQ0NzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USM2MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRIzYxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRIzYyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRIzYzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDI4OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmN6RmBvLUZpcTYlRltyLUYvNjlRJDI5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQyOTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMjkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjkzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMjk0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMjU0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDI1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDI1NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDI1N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDI1OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQyNTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDI2MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQyNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoeEZgby1GaXE2JUZbci1GLzY5USQyNjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDI2M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQyNTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQzNTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQzNThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDEzNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDEzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDEzOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDEzOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDM3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDM3OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDM3OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzODBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMzc2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMzIxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzMjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQzMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQzMjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMTQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDE0OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDE1MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRIzc1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRIzc2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRIzc3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEjNzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USM3OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USM4MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USM4MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USM4MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRIzQ2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEjNDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEjNDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMzI2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMzI4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkNDYwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDYxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDQ2MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDQ2M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQ2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDQ2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyRl9kbEZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbckZmdkZlckZoci1GJDYjLUZpcTYlRltyRmh4RmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3JGLkZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbckZgc0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyRmBqbEZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbckZpeUZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDM0NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDM0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDM1MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQzNTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMTYxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMTYyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMTY0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMTY1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMTY2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDE2N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQxOTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjAwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDIwMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQyMDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQyMDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMjA1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjA2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMjA3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDIwOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQ0MDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXI3IyxgZm4qJiIiJiIiIilJInhHRigiJFMjRmVheEZlYXgqJiIiJ0ZlYXgpRmdheCIkVCNGZWF4RmVheComIiM5RmVheClGZ2F4IiRVI0ZlYXhGZWF4KiYiIzpGZWF4KUZnYXgiJFYjRmVheEZlYXgqJClGZ2F4IiRYI0ZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRaI0ZlYXhGZWF4KiYiIipGZWF4KUZnYXgiJFsjRmVheEZlYXgqJiIiJEZlYXgpRmdheCIkXCNGZWF4RmVheComRmRheEZlYXgpRmdheCIkXSNGZWF4RmVheComIiM2RmVheClGZ2F4IiReI0ZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRfI0ZlYXhGZWF4KiYiIiVGZWF4KUZnYXgiJCZRRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCdRRmVheEZlYXgqJiIiKUZlYXgpRmdheCIkKFFGZWF4RmVheComIiM7RmVheClGZ2F4IiQpUUZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQhUkZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiQiUkZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiQjUkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQkUkZlYXhGZWF4KiYiIzVGZWF4KUZnYXgiJCVSRmVheEZlYXgqJClGZ2F4IiRAJUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRBJUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRCJUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRDJUZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiREJUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRWJEZlYXhGZWF4KiYiIzdGZWF4KUZnYXgiI1xGZWF4RmVheComRmRheEZlYXgpRmdheCIjXUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiNeRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJD4iRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiJD8iRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJEEiRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJEIiRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJEMiRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJEQiRmVheEZlYXgqJiIiI0ZlYXgpRmdheCIkRiJGZWF4RmVheComRmlkeEZlYXgpRmdheCIjcUZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiNyRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiI3NGZWF4RmVheComRmRheEZlYXgpRmdheCIkZCJGZWF4RmVheComRl5ieEZlYXgpRmdheCIkZSJGZWF4RmVheComRmlkeEZlYXgpRmdheCIkZiJGZWF4RmVheComIiM4RmVheClGZ2F4IiRnIkZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRjIkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiRUJEZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRVJEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRTJEZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiQ0JUZlYXhGZWF4KiYiIihGZWF4KUZnYXgiJDUlRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJDclRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJDglRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJF8kRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJGAkRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiJDQkRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJDUkRmVheEZlYXgqJClGZ2F4IiQ2JEZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiQ3JEZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiQ4JEZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiQ6JEZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQmUkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQnUkZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiQoUkZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiQpUkZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiRiJUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRjJUZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRkJUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiRlJUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiRmJUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRhJUZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiRcJUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4RlxjeEZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4RmlleEZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4RmdjeEZlYXhGZWF4KiZGZGF4RmVheClGZ2F4Rl9neEZlYXhGZWF4KiZGaWR4RmVheClGZ2F4RmFqeEZlYXhGZWF4KiZGYWp4RmVheClGZ2F4Rl5ieEZlYXhGZWF4KiQpRmdheEZpZHhGZWF4RmVheComRmBjeEZlYXgpRmdheCIjPEZlYXhGZWF4KiQpRmdheCIjPUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiM+RmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiIz9GZWF4RmVheComRmlleEZlYXgpRmdheCIjQEZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiNBRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiI0JGZWF4RmVheComRmFqeEZlYXgpRmdheCIjQ0ZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiNERmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiI0VGZWF4RmVheComRl5ieEZlYXgpRmdheCIjRkZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiNHRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiI0hGZWF4RmVheComRlxjeEZlYXgpRmdheCIjSUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiNKRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiI0tGZWF4RmVheComRmJieEZlYXgpRmdheCIjTUZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiNORmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiI09GZWF4RmVheComRlxjeEZlYXgpRmdheCIjUEZlYXhGZWF4KiQpRmdheCIjUkZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiNTRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJHMkRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJHUkRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJHYkRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJFUiRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiI2tGZWF4RmVheComRmRbeUZlYXgpRmdheCIjbEZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiNtRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiI25GZWF4RmVheComRmJieEZlYXgpRmdheCIjb0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiNwRmVheEZlYXhGYmJ4RmVheComRmJieEZlYXgpRmdheCIkIVtGZWF4RmVheComRmRbeUZlYXgpRmdheCIkI1tGZWF4RmVheComRmBjeEZlYXgpRmdheCIkIltGZWF4RmVheComRmJieEZlYXhGZ2F4RmVheEZlYXgqJClGZ2F4IiQrJkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQqXEZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiQpXEZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiQoXEZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiQnXEZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQmXEZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQlXEZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiQkXEZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiQjXEZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiQiXEZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiQqW0ZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiQpW0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiQoW0ZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiQnW0ZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQmW0ZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiQlW0ZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiQkW0ZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRaJEZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiRbJEZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRcJEZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiQhXEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRMJEZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRNJEZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiRbJUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiRdJUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiReJUZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRfJUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRgJUZlYXhGZWF4KiQpRmdheCIjJypGZWF4RmVheComRmVkeEZlYXgpRmdheCIjKCpGZWF4RmVheCokKUZnYXgiIykqRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiIyoqRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJCsiRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCwiRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJC0kRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJC4kRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJC8kRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJDAkRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJDEkRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJDIkRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJDMkRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiIyIqRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiIyMqRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiIyQqRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJFciRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJCJHRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCNHRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJCRHRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCVHRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJCZHRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJCdHRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJClHRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJDskRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJDwkRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJD0kRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiJD4kRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJD8kRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJCE+RmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJCI+RmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJCM+RmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJCU+RmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJCY+RmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJCc+RmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCg+RmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJCk+RmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiJCo9RmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJGYkRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJGckRmVheEZlYXgqJClGZ2F4IiRoJEZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiRpJEZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRYIkZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiRZIkZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRwJEZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiRxJEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRyJEZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiR6JUZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiQ/I0ZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRAI0ZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRBI0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiRCI0ZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRDI0ZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiREI0ZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRFI0ZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRGI0ZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiRHI0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiQ+I0ZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiQ2IkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQ3IkZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiQ4IkZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQ5IkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQ6IkZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiQ7IkZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiQ8IkZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiQ9IkZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQ0IkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiR0JUZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiR1JUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiR2JUZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiR3JUZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiR4JUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiR5JUZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiReIkZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiRfIkZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiRgIkZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiRhIkZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiQ7JUZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQ8JUZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiQ9JUZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQ+JUZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiQ/JUZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiQ0I0ZlYXhGZWF4KiQpRmdheCIkNSNGZWF4RmVheComRmRheEZlYXgpRmdheCIkNiNGZWF4RmVheComRmVkeEZlYXgpRmdheCIkNyNGZWF4RmVheComRmRbeUZlYXgpRmdheCIkOCNGZWF4RmVheComRmFqeEZlYXgpRmdheCIkOSNGZWF4RmVheComRmRbeUZlYXgpRmdheCIkOiNGZWF4RmVheComRmRheEZlYXgpRmdheCIkOyNGZWF4RmVheComRmBjeEZlYXgpRmdheCIkPCNGZWF4RmVheComRl5ieEZlYXgpRmdheCIkPSNGZWF4RmVheComRmJieEZlYXgpRmdheCIkTiRGZWF4RmVheComRltpeEZlYXgpRmdheCIkTyRGZWF4RmVheComRmdjeEZlYXgpRmdheCIkUCRGZWF4RmVheComRmlkeEZlYXgpRmdheCIkSCNGZWF4RmVheComRltpeEZlYXgpRmdheCIkSSNGZWF4RmVheComRmVkeEZlYXgpRmdheCIkSiNGZWF4RmVheComRmlkeEZlYXgpRmdheCIkSyNGZWF4RmVheComRmRheEZlYXgpRmdheCIkTCNGZWF4RmVheCokKUZnYXgiJE0jRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJE4jRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJE8jRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJFAjRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJFEjRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJFIjRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJCZIRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJCdIRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJChIRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJClIRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJCpIRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJCskRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJCwkRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiI19GZWF4RmVheComRlxjeEZlYXgpRmdheCIjYUZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiNiRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiI2RGZWF4RmVheComRltpeEZlYXgpRmdheCIjZUZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiNmRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJDYlRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJEgkRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJEkkRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJEokRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJEskRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJDElRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJDIlRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJDMlRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiI3VGZWF4RmVheComRl5keEZlYXgpRmdheCIkVyRGZWF4RmVheComRl9neEZlYXgpRmdheCIkYiRGZWF4RmVheComRmlleEZlYXgpRmdheCIkYyRGZWF4RmVheComRl5ieEZlYXgpRmdheCIkYSRGZWF4RmVheComRmlkeEZlYXgpRmdheCIkUyJGZWF4RmVheComRltpeEZlYXgpRmdheCIkVCJGZWF4RmVheComRmRheEZlYXgpRmdheCIkbSRGZWF4RmVheComRmBjeEZlYXgpRmdheCIkbiRGZWF4RmVheComRmdjeEZlYXgpRmdheCIkbyRGZWF4RmVheComRmlleEZlYXgpRmdheCIkVSVGZWF4RmVheComRmBjeEZlYXgpRmdheCIkViVGZWF4RmVheComRmRheEZlYXgpRmdheCIkVyVGZWF4RmVheComRmlleEZlYXgpRmdheCIkWCVGZWF4RmVheComRl5ieEZlYXgpRmdheCIkWSVGZWF4RmVheComRltpeEZlYXgpRmdheCIkWiVGZWF4RmVheComRmlleEZlYXgpRmdheCIkaiRGZWF4RmVheComRmpheEZlYXgpRmdheCIkayRGZWF4RmVheComRl9neEZlYXgpRmdheCIkbCRGZWF4RmVheComRmVkeEZlYXgpRmdheCIkIz1GZWF4RmVheComRmdjeEZlYXgpRmdheCIkJD1GZWF4RmVheComRmRbeUZlYXgpRmdheCIkJT1GZWF4RmVheComRmRbeUZlYXgpRmdheCIkJj1GZWF4RmVheComRmVkeEZlYXgpRmdheCIkJz1GZWF4RmVheComRmRbeUZlYXgpRmdheCIkKD1GZWF4RmVheComRl5ieEZlYXgpRmdheCIkKT1GZWF4RmVheCokKUZnYXgiJCpSRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJCslRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCwlRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJC0lRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJC4lRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJE4lRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJHYiRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJHciRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJHgiRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJHkiRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJHoiRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJCE9RmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCI9RmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJEciRmVheEZlYXgqJClGZ2F4IiRIIkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiRJIkZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRKIkZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRLIkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiRMIkZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRNIkZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiNWRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiI1dGZWF4RmVheComRlxjeEZlYXgpRmdheCIjWEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRvIkZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiRwIkZlYXhGZWF4KiQpRmdheCIkcSJGZWF4RmVheComRmRheEZlYXgpRmdheCIkciJGZWF4RmVheComRlxjeEZlYXgpRmdheCIkcyJGZWF4RmVheComRmpheEZlYXgpRmdheCIkdCJGZWF4RmVheComRmVkeEZlYXgpRmdheCIkdSJGZWF4RmVheComRmpheEZlYXgpRmdheCIkUCVGZWF4RmVheComRmVkeEZlYXgpRmdheCIkUSVGZWF4RmVheComRl5ieEZlYXgpRmdheCIkUiVGZWF4RmVheComRmpheEZlYXgpRmdheCIkUyVGZWF4RmVheComRltpeEZlYXgpRmdheCIkVCVGZWF4RmVheComRmVkeEZlYXgpRmdheCIkUSRGZWF4RmVheComRmlleEZlYXgpRmdheCIkUiRGZWF4RmVheComRmRbeUZlYXgpRmdheCIkSiVGZWF4RmVheComRmlleEZlYXgpRmdheCIkSyVGZWF4RmVheComRmRheEZlYXgpRmdheCIkTCVGZWF4RmVheComRmpheEZlYXgpRmdheCIkTSVGZWF4RmVheComRmRheEZlYXgpRmdheCIkTyVGZWF4RmVheCokKUZnYXgiJHMjRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJHUjRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJHYjRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJHgjRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJHkjRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJHojRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJCFHRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJHQjRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJEUlRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJEYlRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJEclRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJEglRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJEklRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJGsjRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJGwjRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJG0jRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJG4jRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJG8jRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJHAjRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJHEjRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJHIjRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiIyYqRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiIyUqRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiIyQpRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiIyUpRmVheEZlYXgqJClGZ2F4IiMmKUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiMnKUZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiMoKUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiMpKUZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiMqKUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiMhKkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQuIkZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiQvIkZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiQwIkZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiQxIkZlYXhGZWF4KiQpRmdheCIkMiJGZWF4RmVheComRmVkeEZlYXgpRmdheCIkMyJGZWF4RmVheComRmlkeEZlYXgpRmdheCIkLSJGZWF4RmVheComRltpeEZlYXgpRmdheCIjVEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiQiUUZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiQjUUZlYXhGZWF4KiQpRmdheCIkJFFGZWF4RmVheComRl5keEZlYXgpRmdheCIkJVFGZWF4RmVheComRmRbeUZlYXgpRmdheCIkbSVGZWF4RmVheComRlxjeEZlYXgpRmdheCIkbiVGZWF4RmVheComRlxjeEZlYXgpRmdheCIkbyVGZWF4RmVheComRmFqeEZlYXgpRmdheCIkcCVGZWF4RmVheComRmBjeEZlYXgpRmdheCIkcSVGZWF4RmVheComRmJieEZlYXgpRmdheCIkciVGZWF4RmVheComRmVkeEZlYXgpRmdheCIkcyVGZWF4RmVheComRlxjeEZlYXgpRmdheCIjZ0ZlYXhGZWF4KiQpRmdheCIjaEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiNpRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiI2pGZWF4RmVheComRmlleEZlYXgpRmdheCIkKkdGZWF4RmVheComRmlkeEZlYXgpRmdheCIkIUhGZWF4RmVheComRltpeEZlYXgpRmdheCIkIkhGZWF4RmVheComRmRbeUZlYXgpRmdheCIkI0hGZWF4RmVheComRmlkeEZlYXgpRmdheCIkJEhGZWF4RmVheComRl5keEZlYXgpRmdheCIkJUhGZWF4RmVheComRl5keEZlYXgpRmdheCIkYSNGZWF4RmVheComRmlleEZlYXgpRmdheCIkYiNGZWF4RmVheComRmBjeEZlYXgpRmdheCIkYyNGZWF4RmVheCokKUZnYXgiJGQjRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiJGUjRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJGYjRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJGcjRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJGgjRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJGkjRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJGojRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJGAjRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJGQkRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJGUkRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJE4iRmVheEZlYXgqJClGZ2F4IiRPIkZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiRRIkZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRSIkZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiR4JEZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiR5JEZlYXhGZWF4KiQpRmdheCIkeiRGZWF4RmVheComRmlleEZlYXgpRmdheCIkIVFGZWF4RmVheComRltpeEZlYXgpRmdheCIkdyRGZWF4RmVheComRmJieEZlYXgpRmdheCIkQCRGZWF4RmVheComRmRheEZlYXgpRmdheCIkQSRGZWF4RmVheComRmBjeEZlYXgpRmdheCIkQiRGZWF4RmVheCokKUZnYXgiJEMkRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJEQkRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJFoiRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiJFwiRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJF0iRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiI3ZGZWF4RmVheComRmRbeUZlYXgpRmdheCIjd0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiN4RmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiI3lGZWF4RmVheComRmdjeEZlYXgpRmdheCIjekZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiMhKUZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiMiKUZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiMjKUZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiNZRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiI1pGZWF4RmVheComRl9neEZlYXgpRmdheCIjW0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiRFJEZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRGJEZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRHJEZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRnJUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRoJUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRpJUZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRqJUZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiRrJUZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRsJUZlYXhGZWF4KiZGYGN4RmVheClGZ2F4RltpeEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4RmBjeEZlYXhGZWF4KiQpRmdheEZeZHhGZWF4RmVheComRmJieEZlYXgpRmdheEZkYXhGZWF4RmVheComRmRbeUZlYXgpRmdheEZqYXhGZWF4RmVheComRl5keEZlYXgpRmdheEZkW3lGZWF4RmVheComRmRbeUZlYXgpRmdheEZlZHhGZWF4RmVheComRmdjeEZlYXgpRmdheCIkWCRGZWF4RmVheComRmpheEZlYXgpRmdheCIkWSRGZWF4RmVheComRmBjeEZlYXgpRmdheCIkXSRGZWF4RmVheComRl9neEZlYXgpRmdheCIkXiRGZWF4RmVheComRmRbeUZlYXgpRmdheCIkaCJGZWF4RmVheComRl5keEZlYXgpRmdheCIkaSJGZWF4RmVheComRl5ieEZlYXgpRmdheCIkayJGZWF4RmVheComRmBjeEZlYXgpRmdheCIkbCJGZWF4RmVheComRmVkeEZlYXgpRmdheCIkbSJGZWF4RmVheComRmFqeEZlYXgpRmdheCIkbiJGZWF4RmVheComRl9neEZlYXgpRmdheCIkKj5GZWF4RmVheComRl9neEZlYXgpRmdheCIkKyNGZWF4RmVheComRltpeEZlYXgpRmdheCIkLSNGZWF4RmVheComRmRbeUZlYXgpRmdheCIkLiNGZWF4RmVheComRmpheEZlYXgpRmdheCIkLyNGZWF4RmVheComRltpeEZlYXgpRmdheCIkMCNGZWF4RmVheComRmlkeEZlYXgpRmdheCIkMSNGZWF4RmVheComRmdjeEZlYXgpRmdheCIkMiNGZWF4RmVheComRmFqeEZlYXgpRmdheCIkMyNGZWF4RmVheComRl9neEZlYXgpRmdheCIkLyVGZWF4RmVheA== Timing time(lbMinpoly(p,A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjIyN0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkRiMhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjcwNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkMSghIiQ=
<Text-field style="Heading 3" layout="Heading 3">Characteristic Polynomial</Text-field> restart():with(LinBox):with(LinearAlgebra): n:=500;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQ1MDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrJjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH41MDB+eH41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple Characteristic polynomial doesn't exist in Givaro::Modular package LinBox Characteristic polynomial lbCharpoly(p,A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjQ1M0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkYCUhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNl1nbi1GJDYlLUkjbW5HRiU2OVEiN0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y6LyUqdW5kZXJsaW5lR0Y6LyUqc3Vic2NyaXB0R0Y6LyUsc3VwZXJzY3JpcHRHRjovJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRS8lL21hdGhiYWNrZ3JvdW5kR0ZILyUrZm9udGZhbWlseUdGNC8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGNy1JI21vR0YlNjNRMSZJbnZpc2libGVUaW1lcztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjovJSpzZXBhcmF0b3JHRjovJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGXXAvJSlzdHJldGNoeUdGOi8lKnN5bW1ldHJpY0dGOi8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjovJS5tb3ZhYmxlbGltaXRzR0Y6LyUnYWNjZW50R0Y6LyUwZm9udF9zdHlsZV9uYW1lR0ZaLyUlc2l6ZUdGNy8lK2ZvcmVncm91bmRHRkUvJStiYWNrZ3JvdW5kR0ZILUklbXN1cEdGJTYlLUkjbWlHRiU2OVEieEYoRjJGNUY4L0Y8Rk9GPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbi9GXG9RJ2l0YWxpY0YoRl5vLUYvNjlRJDM5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRmFvNjNRIitGKEZkb0Znb0Zpby9GXHBRMG1lZGl1bW1hdGhzcGFjZUYoL0ZfcEZcc0ZgcEZicEZkcEZncEZqcEZccUZecUZgcUZicUZkcUZmcS1GJDYjLUZpcTYlRltyLUYvNjlRJDM5MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMzkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEjMTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMzkzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQxMDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USI2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDEwNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzE1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDM4N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDM4OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDM4OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMTAyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTAzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTA0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjOTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQxMDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USI5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDEwMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzEyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDQzNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDQzNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzExRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRIzk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXZGYG8tRmlxNiVGW3ItRi82OVEjOTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USM5OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjOTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USM5NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRIzk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USM5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRIzkxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEjOTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkNDgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkNDg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQ0ODVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMzg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzg1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzODZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkNDExRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkNDEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEjMTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEjODdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USM4OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRIzg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW1xsRmBvLUZpcTYlRltyLUYvNjlRIzg1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRIzg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEjODFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USM4M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQzODFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDM4MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDM4M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USM3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzE0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRIzc4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USM4MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USM3NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRIzc2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRIzcyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjNzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEjNzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQzMjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQ0MzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEjNjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USM3MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjNzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQzNzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMzc5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW1xsRmBvLUZpcTYlRltyLUYvNjlRIzY3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USM2OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZockZpdkZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDQ4N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDQ4OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQ0ODlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQ0OTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkNDkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkNDk0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDQzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDQzN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDQzOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQ0OTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQzOTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQzOTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgb0ZbckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQxMTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQxMTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQxMTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQxMDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMTA4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMTA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEkMTM2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMTM3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDEzOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQxMzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDEzM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDEzNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQxMzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQ0OTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMTMwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEkMTMxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQxMjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxMjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxMjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQxMjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQ1MDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQxMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxMjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQxMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQxMjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDEyMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDEyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDExOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDExOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDExN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQ0OTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkNDk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDQ5NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQxMTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQxMTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQxMTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQxMTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMTcyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMTczRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDE3NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDE2OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDE3MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQxNzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQxNjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQxNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQxNjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQxNjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQxNjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEkMTY1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDE2MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDE2MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDE2MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDM5N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMzk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDM5OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDE1N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDE1OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDE1OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDE1NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDE1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDE1NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDE1MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQxNTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxNTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USM0N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDE0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkMTUwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDE0NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDE0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDE0MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDE0M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQxNDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkMTM5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTQwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkMTQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMjEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDIxNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDIxNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDIxMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDIxMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDIxMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDE1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDQxNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQyMDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQyMDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEkMjA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyMDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQyMDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQyMDZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQyMDFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkMjAyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDIwM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQxOThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoXmxGYG8tRmlxNiVGW3ItRi82OVEkMTk5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDIwMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDE5M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQxOTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQxOTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQxOTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQxOTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxOTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMTkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTg3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMTg4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMTg5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMTg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDE4NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDE4NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlt1RmBvLUZpcTYlRltyLUYvNjlRJDE4MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDE4MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDE4M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTc4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTc5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkMTgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMTc1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDE3NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDE3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQ0NDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkNDQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkNDQyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDIyNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQyMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQyMjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQyMjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQyMjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMjE4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDIxOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlt1RmBvLUZpcTYlRltyLUYvNjlRJDIxN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDI0MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDI0MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDI0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQyMzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQyMzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQyMzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoXmxGYG8tRmlxNiVGW3ItRi82OVEkMjMzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW1xsRmBvLUZpcTYlRltyLUYvNjlRJDIzNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQyMzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQ0MDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkNDAxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDIzMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDIzMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDIzMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDIyOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMjI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQyNjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQyNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQyNjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQyNjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMjY0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkNDQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDQ0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQyNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQyNThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMjU2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMjU3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMjU1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDI1M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDI1NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQyNTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDQxN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQ0MThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQ0MTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQ0NDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQ0NDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQ0NDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQ0NDZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQyNTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQyNTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQyNDlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMjQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDI0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDI0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDI0NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDI0NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQyNDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMjgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXZGYG8tRmlxNiVGW3ItRi82OVEkMjgxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMjgyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDI3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQyNzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQyNzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQyNzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDI3NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDI3NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDI3MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDI3MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDI3M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQ0MDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEkNDA0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkNDA1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMjY4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjY5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjcwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjg5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjkwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMjkxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDI4N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMjg4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW1xsRmBvLUZpcTYlRltyLUYvNjlRJDI4M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQyODRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQyODVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQzMjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDQ4MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDQwNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQ0MDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQyOTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQyOTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQyOTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQ0MjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQ0MjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQ0MjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMjI1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMjk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMjk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMjk3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDMwMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQzMDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQyOTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQ0NTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQ0NTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQ0NTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQyMjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkMzA2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzMDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQzMDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzMDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQzMDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMzA1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDMwOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDMxMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQzMTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQzMTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMzE0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMzE1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMzEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkNDUzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEkNDU0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXZGYG8tRmlxNiVGW3ItRi82OVEkNDU2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMzE5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzIwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkMzIxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkNDU3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0NThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQ0NTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQzMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQzMjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbckZnc0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbckZldUZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyRi5GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3JGaF5sRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3JGXmFsRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbckZbdUZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDMyOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQzMjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQzMzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQzMjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbckZqd0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbckZhdEZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbckZgekZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQ0MjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQ0MjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3JGW1xsRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMzAxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyRmp6RmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3JGaXZGZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzMzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQzMzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQzMzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDQ2MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDQ2MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDQ2MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDM0NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQzNDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQzNDZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkMzQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDM0MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQzNDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoXmxGYG8tRmlxNiVGW3ItRi82OVEkMzM4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMzM5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzQwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzM1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMzM2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzMzdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQ0MDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USMyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USMyMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRIzIyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMzU1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMzU2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzU0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0NjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoXmxGYG8tRmlxNiVGW3ItRi82OVEkNDY4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkNDY5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkNDcwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjMTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USMxOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbckZbaWxGZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbckZfdkZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyRltkbEZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDQ2M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDQ2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDQ2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQ0NjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEkMzUwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDM1MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDM1M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDM0N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDM0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQzNTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzNjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQzNTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkNDI2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkNDI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjMjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRIzI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEjMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USMyNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USMyNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDMxN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQzMThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USMyOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRIzI5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEjMzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQzNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQzNjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQzNjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkNDI4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkNDI5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkNDMwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRIzM0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEjMzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEjMzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRIzMyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXZGYG8tRmlxNiVGW3ItRi82OVEjMzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMzMxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkNDI1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDM2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQzNjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQzNjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USMzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USMzN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRIzM4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkNDcxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDQ3MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlt1RmBvLUZpcTYlRltyLUYvNjlRJDQ3M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQ0MTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQzNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQzNjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDM3MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USMzOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USM0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USM0MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDM3M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQzNzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQzNzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQ0MDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQ0MDlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQ0MTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzNzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQzNzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDM3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRIzQyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRIzQzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEkNDc0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkNDc1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDQ3NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USM0NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRIzQ1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USM0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDMxNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USM0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRIzQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEjNTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USM1MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USM1MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRIzUzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjNTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USM1N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USM1OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjNTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USM1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USM1NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDQ3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDQ3OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDQ3OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRIzYwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEjNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USM2MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlt1RmBvLUZpcTYlRltyLUYvNjlRIzYzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEjNjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USM2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USM2NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQ0MzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkNDMyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkNDMzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkNDgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkNDgyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyNyMsXmduKiYiIigiIiIpSSJ4R0YoIiQhUkZjZHhGY2R4KiQpRmVkeCIkIlJGY2R4RmNkeComIiImRmNkeClGZWR4IiQjUkZjZHhGY2R4KiYiIzVGY2R4KUZlZHgiJCRSRmNkeEZjZHgqJiIiJUZjZHgpRmVkeCIkMCJGY2R4RmNkeComIiInRmNkeClGZWR4IiQxIkZjZHhGY2R4KiYiIzpGY2R4KUZlZHgiJChRRmNkeEZjZHgqJiIjOEZjZHgpRmVkeCIkKVFGY2R4RmNkeComRltleEZjZHgpRmVkeCIkKlFGY2R4RmNkeComIiIpRmNkeClGZWR4IiQtIkZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQuIkZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQvIkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiMqKkZjZHhGY2R4KiQpRmVkeCIkKyJGY2R4RmNkeComIiIqRmNkeClGZWR4IiQsIkZjZHhGY2R4KiYiIzdGY2R4KUZlZHgiJE0lRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiJE4lRmNkeEZjZHgqJiIjNkZjZHgpRmVkeCIjJypGY2R4RmNkeComRl9meEZjZHgpRmVkeCIjKCpGY2R4RmNkeComRmNleEZjZHgpRmVkeCIjKSpGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIjJCpGY2R4RmNkeCokKUZlZHgiIyUqRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiIyYqRmNkeEZjZHgqJiIiI0ZjZHgpRmVkeCIjISpGY2R4RmNkeComRltleEZjZHgpRmVkeCIjIipGY2R4RmNkeComRmdleEZjZHgpRmVkeCIjIypGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkJFtGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkJVtGY2R4RmNkeComIiIkRmNkeClGZWR4IiQmW0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQlUUZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiQmUUZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiQnUUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQ2JUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiQ4JUZjZHhGY2R4KiYiIztGY2R4KUZlZHgiIygpRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiIykpRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiIyUpRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiIyYpRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiIycpRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiIyIpRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiIyQpRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJCJRRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiJCNRRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJCRRRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI3hGY2R4RmNkeComIiM5RmNkeClGZWR4IiN5RmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiIyEpRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiI3ZGY2R4RmNkeComRmpneEZjZHgpRmVkeCIjd0ZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiNzRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiI3RGY2R4RmNkeComRmldeUZjZHgpRmVkeCIjdUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiREJEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRSJUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiNwRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiI3FGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIjckZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiR5JEZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiR6JEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiQhUUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiNuRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiI29GY2R4RmNkeEZfZnhGY2R4KiZGZ2V4RmNkeClGZWR4IiQoW0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQpW0ZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiQqW0ZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiQkXEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiQjXEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiQlXEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRPJUZjZHhGY2R4KiQpRmVkeCIkUCVGY2R4RmNkeComRltleEZjZHgpRmVkeCIkUSVGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkIVxGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkJVJGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkJlJGY2R4RmNkeComRltleEZjZHhGZWR4RmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJDUiRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHgiJDYiRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJDciRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJDIiRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiJDMiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJDQiRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJE8iRmNkeEZjZHgqJClGZWR4IiRQIkZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRRIkZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiROIkZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRMIkZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRNIkZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRLIkZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQqXEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRJIkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRKIkZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRIIkZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRGIkZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRHIkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRFIkZjZHhGY2R4KiQpRmVkeCIkKyZGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkQyJGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkRCJGY2R4RmNkeComRltleEZjZHgpRmVkeCIkQiJGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkQCJGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkQSJGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkPyJGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkJ1xGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkPSJGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkPiJGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkPCJGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkKFxGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkKVxGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkJlxGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkOCJGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkOSJGY2R4RmNkeCokKUZlZHgiJDoiRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJDsiRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiJHMiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJHQiRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJHUiRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJHAiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJHEiRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiJHIiRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJG0iRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJG4iRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHgiJG8iRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJGoiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJGsiRmNkeEZjZHgqJkZpXXlGY2R4KUZlZHgiJGwiRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJGciRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJGgiRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJGkiRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiJChSRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiJClSRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJCpSRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJGQiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJGUiRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJGYiRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJGEiRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJGIiRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJGMiRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJF4iRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJF8iRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiJGAiRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiI1pGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkWyJGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkXCJGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkXSJGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkWCJGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkWSJGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkWiJGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkVSJGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkViJGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkVyJGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkUiJGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkUyJGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkVCJGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkOCNGY2R4RmNkeComRmRpeEZjZHgpRmVkeCIkOSNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkOiNGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkNSNGY2R4RmNkeComRltleEZjZHgpRmVkeCIkNiNGY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkNyNGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkOiVGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkOyVGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkMiNGY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkMyNGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkNCNGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkLyNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkMCNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkMSNGY2R4RmNkeCokKUZlZHgiJCwjRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJC0jRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJC4jRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJCk+RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJCo+RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJCsjRmNkeEZjZHgqJClGZWR4IiQkPkZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiQmPkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQoPkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQlPkZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQhPkZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiQiPkZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiQjPkZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQoPUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiQpPUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiQqPUZjZHhGY2R4KiQpRmVkeCIkJT1GY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkJj1GY2R4RmNkeComRltleEZjZHgpRmVkeCIkJz1GY2R4RmNkeComRmNleEZjZHgpRmVkeCIkIj1GY2R4RmNkeComRl9leEZjZHgpRmVkeCIkIz1GY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkJD1GY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkeSJGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkeiJGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkIT1GY2R4RmNkeComRmpneEZjZHgpRmVkeCIkdiJGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkdyJGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkeCJGY2R4RmNkeComRmRpeEZjZHgpRmVkeCIkUyVGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkVCVGY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkVSVGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkQyNGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkQiNGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkQCNGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkQSNGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkPyNGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkPSNGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkPiNGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkPCNGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkVCNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkVSNGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkUyNGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkTyNGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkUSNGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkUiNGY2R4RmNkeComRmRpeEZjZHgpRmVkeCIkTCNGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkTSNGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkTiNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkKyVGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkLCVGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkSSNGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkSiNGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkSyNGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkSCNGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkRiNGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkbCNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkbSNGY2R4RmNkeComRltleEZjZHgpRmVkeCIkbiNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkaSNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkaiNGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkayNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkWiVGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkWyVGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkXCVGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkZyNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkaCNGY2R4RmNkeCokKUZlZHgiJGUjRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiJGMjRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJGQjRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJGIjRmNkeEZjZHgqJkZpXXlGY2R4KUZlZHgiJGAjRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJGEjRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJF8jRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiJDwlRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJD0lRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJD4lRmNkeEZjZHgqJClGZWR4IiRWJUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRXJUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRYJUZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiRZJUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRdI0ZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiReI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRcI0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiRaI0ZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRbI0ZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRZI0ZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRXI0ZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRYI0ZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRWI0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQhR0ZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiQiR0ZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiQjR0ZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiR4I0ZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiR5I0ZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiR6I0ZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiR1I0ZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiR2I0ZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiR3I0ZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiRyI0ZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiRzI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiR0I0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQuJUZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiQvJUZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQwJUZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRvI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRwI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRxI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQqR0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQhSEZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiQiSEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQnR0ZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiQoR0ZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiQpR0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQkR0ZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiQlR0ZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiQmR0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRBJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiQiW0ZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiQxJUZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiQyJUZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiQjSEZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiQkSEZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiQlSEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQ/JUZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiRAJUZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRBJUZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiREI0ZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiQmSEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiQnSEZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQoSEZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiQrJEZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQtJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQqSEZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRdJUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiReJUZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRfJUZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRHI0ZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiQxJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiQyJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQzJEZjZHhGY2R4KiQpRmVkeCIkLiRGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkLyRGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkMCRGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkNCRGY2R4RmNkeCokKUZlZHgiJDUkRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJDYkRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJDckRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJDkkRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJDokRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJDgkRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiJGAlRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJGElRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJGMlRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJD4kRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJD8kRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiJEAkRmNkeEZjZHgqJClGZWR4IiRkJUZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRlJUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRmJUZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRDJEZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRFJEZjZHhGY2R4KiQpRmVkeCIkQiRGY2R4RmNkeComRmZmeEZjZHgpRmVkeEZbZXhGY2R4RmNkeComRmdbeUZjZHgpRmVkeEZnZXhGY2R4RmNkeComRltmeEZjZHgpRmVkeEZiZHhGY2R4RmNkeComRmldeUZjZHgpRmVkeEZkaXhGY2R4RmNkeComRmZneEZjZHgpRmVkeEZkanhGY2R4RmNkeComRmJkeEZjZHgpRmVkeEZjZXhGY2R4RmNkeCokKUZlZHgiJEckRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJEgkRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJEkkRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJEYkRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHhGZmZ4RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHhGX2V4RmNkeEZjZHgqJkZnW3lGY2R4KUZlZHhGZmd4RmNkeEZjZHgqJkZpXXlGY2R4KUZlZHgiJEIlRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJEMlRmNkeEZjZHgqJkZkanhGY2R4KUZlZHhGYWh4RmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJCwkRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHhGamd4RmNkeEZjZHgqJkZbZXhGY2R4KUZlZHhGX2Z4RmNkeEZjZHgqJClGZWR4IiRLJEZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRMJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRNJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRnJUZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRoJUZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiRpJUZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiRXJEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiRYJEZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiRZJEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiRUJEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRVJEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiRWJEZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRRJEZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiRSJEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRTJEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiROJEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRPJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRQJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQtJUZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiM/RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI0BGY2R4RmNkeComRmpneEZjZHgpRmVkeCIjQUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRiJEZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRjJEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRhJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRuJUZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRvJUZjZHhGY2R4KiQpRmVkeCIkcCVGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkcSVGY2R4RmNkeComRltleEZjZHgpRmVkeCIjPEZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiM9RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHhGaV15RmNkeEZjZHgqJkZbZnhGY2R4KUZlZHhGW2Z4RmNkeEZjZHgqJkZbZXhGY2R4KUZlZHhGZ1t5RmNkeEZjZHgqJClGZWR4IiRqJUZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRrJUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRsJUZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRtJUZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiRdJEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRfJEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRgJEZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRaJEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRbJEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRmJEZjZHhGY2R4KiQpRmVkeCIkZyRGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkZCRGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkRSVGY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkRiVGY2R4RmNkeComRltleEZjZHgpRmVkeCIjRUZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiNGRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiI0JGY2R4RmNkeComRltmeEZjZHgpRmVkeCIjQ0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiNERmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJDwkRmNkeEZjZHgqJkZpXXlGY2R4KUZlZHgiJD0kRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiI0dGY2R4RmNkeComRltleEZjZHgpRmVkeCIjSEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiNJRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiJGgkRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHgiJGkkRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJGokRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJEclRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJEglRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiJEklRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI01GY2R4RmNkeComRl9leEZjZHgpRmVkeCIjTkZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiNKRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiI0tGY2R4RmNkeComRl9meEZjZHgpRmVkeCIjTEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRKJEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiREJUZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiRrJEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiRsJEZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiRtJEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiNPRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI1BGY2R4RmNkeComRltmeEZjZHgpRmVkeCIjUUZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRyJUZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRzJUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiR0JUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQ5JUZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiRuJEZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiRvJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRxJEZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiNSRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI1NGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIjVEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiR0JEZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiR1JEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRyJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQzJUZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiQ0JUZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiQ1JUZjZHhGY2R4KiQpRmVkeCIkdiRGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkdyRGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkeCRGY2R4RmNkeComRmZneEZjZHgpRmVkeCIjVUZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiNWRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJHUlRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJHYlRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJHclRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI1dGY2R4RmNkeCokKUZlZHgiI1hGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIjWUZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiQ7JEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiNbRmNkeEZjZHgqJClGZWR4IiNcRmNkeEZjZHgqJClGZWR4IiNdRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiI15GY2R4RmNkeComRmdbeUZjZHgpRmVkeCIjX0ZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiNgRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiI2FGY2R4RmNkeComRmZneEZjZHgpRmVkeCIjZEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiNlRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiI2ZGY2R4RmNkeComRmpneEZjZHgpRmVkeCIjYkZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiNjRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJHglRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJHklRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJHolRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiI2dGY2R4RmNkeCokKUZlZHgiI2hGY2R4RmNkeComRmZneEZjZHgpRmVkeCIjaUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiNqRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHgiI2tGY2R4RmNkeCokKUZlZHgiI2xGY2R4RmNkeComRmRpeEZjZHgpRmVkeCIjbUZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRKJUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiRLJUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRMJUZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQhW0ZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQjW0ZjZHhGY2R4 Timing time(lbCharpoly(p,A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI2M0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkaiMhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjY1N0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkZCchIiQ=
<Text-field style="Heading 3" layout="Heading 3">Linear System Solving</Text-field> restart():with(LinBox):with(LinearAlgebra): n:=500;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQ1MDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrJjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]);b:=Vector(n,gen,datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH41MDB+eH41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiYkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjUwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GY3M2Ji1GLDY5UShpbnRlZ2VyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GIzYjLUkjbW5HRiQ2OVEiNEYnRi9GMkY1L0Y5RjdGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm4vRmluUSdub3JtYWxGJ0Zbb0ZddEZgdC1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple linear system solving no native solution available B:=Modular:-Mod(p,A,integer[4]);b1:=Modular:-Mod(p,b,integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH41MDB+eH41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEoQ19vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjYjFGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USt+MX4uLn41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USdWZWN0b3JGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtRiw2OVEnY29sdW1uRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLyUscGxhY2Vob2xkZXJHRjctRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmNzNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW29GXXRGYHQtRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKENfb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn pv:=Vector(n-1):Modular:-LUDecomposition(p,B,pv,0); Modular:-LUApply(p,B,pv,b1);b1[1..10]; LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbW9HRiQ2M1EiW0YnLyUlZm9ybUdRJ3ByZWZpeEYnLyUmZmVuY2VHUSV0cnVlRicvJSpzZXBhcmF0b3JHUSZmYWxzZUYnLyUnbHNwYWNlR1EudGhpbm1hdGhzcGFjZUYnLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjQvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYnLyUlc2l6ZUdRIzEyRicvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLUYjNiMtSSdtdGFibGVHRiQ2LC1JJG10ckdGJDYjLUkkbXRkR0YkNiMtSSNtbkdGJDY5USIzRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHRlIvJSVib2xkR0Y3LyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR0ZVLyUrYmFja2dyb3VuZEdGWC8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNC8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZPLyUqbWF0aGNvbG9yR0ZVLyUvbWF0aGJhY2tncm91bmRHRlgvJStmb250ZmFtaWx5R0Zkby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSltYXRoc2l6ZUdGUi1GaW42Iy1GXG82Iy1GX282OVEiMEYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USMxMkYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USMxNUYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USI0RidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRmluNiMtRlxvNiMtRl9vNjlRIzExRidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnJGZ3ItRmluNiMtRlxvNiMtRl9vNjlRIjlGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeckZcdC1GaW42Iy1GXG82Iy1GX282OVEiN0YnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUYsNjNRIl1GJy9GMFEocG9zdGZpeEYnRjJGNUY4L0Y8UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVg== LinBox linear system solving x:=lbSolve(p,A,b);x[1..10]; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI5M0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkJEghIiQ= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEieEYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjUwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbW9HRiQ2M1EiW0YnLyUlZm9ybUdRJ3ByZWZpeEYnLyUmZmVuY2VHUSV0cnVlRicvJSpzZXBhcmF0b3JHUSZmYWxzZUYnLyUnbHNwYWNlR1EudGhpbm1hdGhzcGFjZUYnLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjQvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYnLyUlc2l6ZUdRIzEyRicvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLUYjNiMtSSdtdGFibGVHRiQ2LC1JJG10ckdGJDYjLUkkbXRkR0YkNiMtSSNtbkdGJDY5USIzRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHRlIvJSVib2xkR0Y3LyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR0ZVLyUrYmFja2dyb3VuZEdGWC8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNC8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZPLyUqbWF0aGNvbG9yR0ZVLyUvbWF0aGJhY2tncm91bmRHRlgvJStmb250ZmFtaWx5R0Zkby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSltYXRoc2l6ZUdGUi1GaW42Iy1GXG82Iy1GX282OVEiMEYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USMxMkYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USMxNUYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USI0RidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRmluNiMtRlxvNiMtRl9vNjlRIzExRidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnJGZ3ItRmluNiMtRlxvNiMtRl9vNjlRIjlGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeckZcdC1GaW42Iy1GXG82Iy1GX282OVEiN0YnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUYsNjNRIl1GJy9GMFEocG9zdGZpeEYnRjJGNUY4L0Y8UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVg== Timing comparison B:=Modular:-Mod(p,A,integer[4]):b1:=Modular:-Mod(p,b,integer[4]):pv:=Vector(n-1): t1:=time(Modular:-LUDecomposition(p,B,pv,0))+time(Modular:-LUApply(p,B,pv,b1)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4yNThGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJGUjISIkNyNGZXI= t2:=time(lbSolve(p,A,b)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI3NEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkdSMhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC40MzVGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJE4lISIkNyNGZXI= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5US0wLjU5MzEwMzQ0ODNGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyQiKyRbTTUkZiEjNQ== Singular system n:=100; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQxMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIjcjRmVy A:=Matrix(n,n,gen,datatype=integer[4]):c:=Vector(n,gen,datatype=integer[4]):c[n]:=0: A[1..n,n]:=A.c; LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYmLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y6LyUqc3Vic2NyaXB0R0Y6LyUsc3VwZXJzY3JpcHRHRjovJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R0Y9LyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGRi8lL21hdGhiYWNrZ3JvdW5kR0ZJLyUrZm9udGZhbWlseUdGNC8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNy1GIzYlLUYjNiUtSSNtbkdGJDY5USIxRidGMkY1RjgvRjxGOkY+RkBGQkZERkdGSkZMRk5GUEZSRlRGVkZYRmVuRmduRmluL0Zcb1Enbm9ybWFsRidGXm8tSSNtb0dGJDYzUSMuLkYnLyUlZm9ybUdRKHBvc3RmaXhGJy8lJmZlbmNlR0Y6LyUqc2VwYXJhdG9yR0Y6LyUnbHNwYWNlR1EwbWVkaXVtbWF0aHNwYWNlRicvJSdyc3BhY2VHUSQwZW1GJy8lKXN0cmV0Y2h5R0Y6LyUqc3ltbWV0cmljR0Y6LyUobWF4c2l6ZUdRKWluZmluaXR5RicvJShtaW5zaXplR0Znby8lKGxhcmdlb3BHRjovJS5tb3ZhYmxlbGltaXRzR0Y6LyUnYWNjZW50R0Y6LyUwZm9udF9zdHlsZV9uYW1lR0ZaLyUlc2l6ZUdGNy8lK2ZvcmVncm91bmRHRkYvJStiYWNrZ3JvdW5kR0ZJLUZlbzY5USQxMDBGJ0YyRjVGOEZob0Y+RkBGQkZERkdGSkZMRk5GUEZSRlRGVkZYRmVuRmduRmluRmlvRl5vLUZccDYzUSIsRicvRmBwUSZpbmZpeEYnRmJwL0ZlcEY9L0ZncEZbcS9GanBRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlxxRl5xRmBxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmFyRmNyLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGOi1GXHA2M1EjOj1GJ0ZpckZicEZkcC9GZ3BRL3RoaWNrbWF0aHNwYWNlRicvRmpwRmhzRlxxRl5xRmBxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmFyLUkobWFjdGlvbkdGJDYkLUYjNiUtRlxwNjNRIltGJy9GYHBRJ3ByZWZpeEYnL0ZjcEY9RmRwL0ZncFEudGhpbm1hdGhzcGFjZUYnL0ZqcEZmdC9GXXFGPUZecUZgcUZjcUZlcUZncUZpcUZbckZdckZfckZhci1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYvNjlRK34xfi4ufjEwMH5GJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRiw2Ji1GLzY5USdWZWN0b3JGJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRiM2Iy1GLzY5USdjb2x1bW5GJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GX3NGYnMtRl11NiMtRmB1NiMtRiM2JC1GLzY5USxEYXRhflR5cGU6fkYnRjJGNUY4RjtGPkZARkJGREZHRkpGTEZORlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeby1GLDYmLUYvNjlRKGludGVnZXJGJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRiM2Iy1GZW82OVEiNEYnRjJGNUY4RmhvRj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GaW9GXm9GX3NGYnMtRl11NiMtRmB1NiMtRiM2JC1GLzY5USpTdG9yYWdlOn5GJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRi82OVEscmVjdGFuZ3VsYXJGJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRl11NiMtRmB1NiMtRiM2JC1GLzY5UShPcmRlcjp+RidGMkY1RjhGO0Y+RkBGQkZERkdGSkZMRk5GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vLUYvNjlRLkZvcnRyYW5fb3JkZXJGJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRlxwNjNRIl1GJ0ZfcEZkdEZkcEZldC9GanBRMnZlcnl0aGlubWF0aHNwYWNlRidGaHRGXnFGYHFGY3FGZXFGZ3FGaXFGW3JGXXJGX3JGYXIvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= lbRank(A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAxMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjNSEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USM5OUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiMqKg== pv:=Vector(n-1):Modular:-LUDecomposition(p,A,pv,0); Error, (in LinearAlgebra:-Modular:-LUDecomposition) matrix is singular x:=lbSolve(p,A,c):x[1..10]; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAxNEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjOSEiJA== LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbW9HRiQ2M1EiW0YnLyUlZm9ybUdRJ3ByZWZpeEYnLyUmZmVuY2VHUSV0cnVlRicvJSpzZXBhcmF0b3JHUSZmYWxzZUYnLyUnbHNwYWNlR1EudGhpbm1hdGhzcGFjZUYnLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjQvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYnLyUlc2l6ZUdRIzEyRicvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLUYjNiMtSSdtdGFibGVHRiQ2LC1JJG10ckdGJDYjLUkkbXRkR0YkNiMtSSNtbkdGJDY5USIzRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHRlIvJSVib2xkR0Y3LyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR0ZVLyUrYmFja2dyb3VuZEdGWC8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNC8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZPLyUqbWF0aGNvbG9yR0ZVLyUvbWF0aGJhY2tncm91bmRHRlgvJStmb250ZmFtaWx5R0Zkby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSltYXRoc2l6ZUdGUi1GaW42Iy1GXG82Iy1GX282OUZGRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USI3RidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRmluNiMtRlxvNiMtRl9vNjlRIjBGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeckZdcy1GaW42Iy1GXG82Iy1GX282OVEjMTFGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeci1GaW42Iy1GXG82Iy1GX282OVEjMTVGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeckZbdC1GaW42Iy1GXG82Iy1GX282OVEiOEYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yRmJ0LUYsNjNRIl1GJy9GMFEocG9zdGZpeEYnRjJGNUY4L0Y8UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVg== Norm(map(modp,A.x-c,p)); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USIwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiIiE= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2OVEhRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUlYm9sZEdRJmZhbHNlRicvJSdpdGFsaWNHUSV0cnVlRicvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHUShbMCwwLDBdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSkyRH5JbnB1dEYnLyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkYvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy8lKW1hdGhzaXplR0Y0
<Text-field style="Heading 2" layout="Heading 2">Benefits in practice</Text-field> Sometime numerical computation is not satisfying and exact computation becomes mandatory with(LinearAlgebra):
<Text-field style="Heading 3" layout="Heading 3">Very bad conditionned matrix</Text-field> Moler:=proc(n) local i,j,Moler; Moler:=Matrix(n); for i from 1 to n do for j from 1 to (i-1) do Moler[i,j]:=j-2; end do; Moler[i,i]:=i; for j from (i+1) to n do Moler[i,j]:=i-2; end do; end do; return Moler; end proc: Redheffer:=proc(n) local i,j,Redheffer; Redheffer:=Matrix(n); for i from 1 to n do Redheffer[i,1]:=1; for j from 2 to n do if (j mod i = 0) then Redheffer[i,j]:=1; else Redheffer[i,j]:=0; end if; end do; end do: return Redheffer; end proc: Moler(10),Redheffer(10); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUYjNiUtSSNtb0dGJDYzUSJbRicvJSVmb3JtR1EncHJlZml4RicvJSZmZW5jZUdRJXRydWVGJy8lKnNlcGFyYXRvckdRJmZhbHNlRicvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRicvJSdyc3BhY2VHRjwvJSlzdHJldGNoeUdGNi8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSVzaXplR1EjMTJGJy8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GJy8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRictRiM2Iy1JJ210YWJsZUdGJDYsLUkkbXRyR0YkNiwtSSRtdGRHRiQ2Iy1JI21uR0YkNjlGSC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdGVC8lJWJvbGRHRjkvJSdpdGFsaWNHRjkvJSp1bmRlcmxpbmVHRjkvJSpzdWJzY3JpcHRHRjkvJSxzdXBlcnNjcmlwdEdGOS8lK2ZvcmVncm91bmRHRlcvJStiYWNrZ3JvdW5kR0ZaLyUnb3BhcXVlR0Y5LyUrZXhlY3V0YWJsZUdGOS8lKXJlYWRvbmx5R0Y2LyUpY29tcG9zZWRHRjkvJSpjb252ZXJ0ZWRHRjkvJStpbXNlbGVjdGVkR0Y5LyUscGxhY2Vob2xkZXJHRjkvJTBmb250X3N0eWxlX25hbWVHRlEvJSptYXRoY29sb3JHRlcvJS9tYXRoYmFja2dyb3VuZEdGWi8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lKW1hdGhzaXplR0ZULUZebzYjLUZhbzY5USkmbWludXM7MUYnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRmFyRmFyRmFyRmFyRmFyRmFyRmFyRmFyLUZbbzYsRmFyLUZebzYjLUZhbzY5USIyRidGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl5vNiMtRmFvNjlRIjBGJ0Zjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZdc0Zdc0Zdc0Zdc0Zdc0Zdc0Zdcy1GW282LEZhckZdcy1GXm82Iy1GYW82OVEiM0YnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRl1vRl1vRl1vRl1vRl1vRl1vRl1vLUZbbzYsRmFyRl1zRl1vLUZebzYjLUZhbzY5USI0RidGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3JGaHJGaHJGaHJGaHJGaHJGaHItRltvNixGYXJGXXNGXW9GaHItRl5vNiMtRmFvNjlRIjVGJ0Zjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZkc0Zkc0Zkc0Zkc0Zkcy1GW282LEZhckZdc0Zdb0ZockZkcy1GXm82Iy1GYW82OVEiNkYnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRlt0Rlt0Rlt0Rlt0LUZbbzYsRmFyRl1zRl1vRmhyRmRzRlt0LUZebzYjLUZhbzY5USI3RidGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3JGYnRGYnRGYnQtRltvNixGYXJGXXNGXW9GaHJGZHNGW3RGYnQtRl5vNiMtRmFvNjlRIjhGJ0Zjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZpdEZpdC1GW282LEZhckZdc0Zdb0ZockZkc0ZbdEZidEZpdC1GXm82Iy1GYW82OVEiOUYnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRmB1LUZbbzYsRmFyRl1zRl1vRmhyRmRzRlt0RmJ0Rml0RmB1LUZebzYjLUZhbzY5USMxMEYnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUYuNjNRIl1GJy9GMlEocG9zdGZpeEYnRjRGN0Y6L0Y+UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRj9GQUZDRkZGSUZLRk1GT0ZSRlVGWC1GLjYzUSIsRicvRjJRJmluZml4RicvRjVGOS9GOEY2L0Y7USQwZW1GJy9GPlEzdmVyeXRoaWNrbWF0aHNwYWNlRicvRkBGOUZBRkNGRkZJRktGTUZPRlJGVUZYLUYjNiVGLS1GIzYjLUZobjYsLUZbbzYsRl1vRl1vRl1vRl1vRl1vRl1vRl1vRl1vRl1vRl1vLUZbbzYsRl1vRl1vRl1zRl1vRl1zRl1vRl1zRl1vRl1zRl1vLUZbbzYsRl1vRl1zRl1vRl1zRl1zRl1vRl1zRl1zRl1vRl1zLUZbbzYsRl1vRl1zRl1zRl1vRl1zRl1zRl1zRl1vRl1zRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1vRl1zRl1zRl1zRl1zRl1vLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1vRl1zRl1zRl1zRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1zRl1vRl1zRl1zRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1zRl1zRl1vRl1zRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1zRl1zRl1zRl1vRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1zRl1zRl1zRl1zRl1vRmp2 n:=200; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQyMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIzcjRmVy M:=1.*Moler(n):R:=1.*Redheffer(n):MR:=M.R; LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjTVJGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USx+MjAwfnh+MjAwfkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnTWF0cml4RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USZmbG9hdEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjhGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== ConditionNumber(M); ConditionNumber(R); ConditionNumber(MR); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtbkdGJTY5USw4LjQ4MDEwODYwMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y4LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRMSZJbnZpc2libGVUaW1lcztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUklbXN1cEdGJTYlLUYtNjlRIzEwRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRi02OVEkMTIzRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8vJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYoNyMkIissJzMsWykiJDki NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxMTI1MC4wMDAwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKysrRDYhIiY= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtbkdGJTY5USwyLjUyNzg2NTk5MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y4LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRMSZJbnZpc2libGVUaW1lcztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUklbXN1cEdGJTYlLUYtNjlRIzEwRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRi02OVEjMjBGKEYwRjNGNkY5RjtGPUY/RkFGREZHRklGS0ZORlBGUkZURlZGWUZlbkZnbkZpbkZcby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRig3IyQiKyMqZid5XyMiIzY= Solving a linear system b:=1.*Vector(n,rand(-1..1)); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiYkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjIwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GY3M2Ji1GLDY5USZmbG9hdEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjhGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW29GXXRGYHQtRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn Digits:=14; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USdEaWdpdHNGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1JI21uR0YlNjlRIzE0RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkknRGlnaXRzR0YoIiM5NyNGZXI= t:=time():x:=LinearSolve(MR,b,method=hybrid):time()-t; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjAwOUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIiKiEiJA== Norm(MR.x-b); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UTQyMzcuMTE3MTg3NTAwMDAwMDAwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMkIjMrKysrdj08ckIhIzo= A:=Matrix(MR,datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= t:=time():y:=lbSolve(A,b):time()-t; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA2MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjaSEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjMwN0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkMiQhIiQ= Norm(A.y-b); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMwLkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIiIUZdbw==
<Text-field style="Heading 3" layout="Heading 3">High precision results</Text-field> Tref:=ImportMatrix("tref200.dat",format=entries); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVElVHJlZkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnc3BhcnNlRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn b:=Vector(200,rand(-1..1),datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiYkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjIwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GY3M2Ji1GLDY5UShpbnRlZ2VyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GIzYjLUkjbW5HRiQ2OVEiNEYnRi9GMkY1L0Y5RjdGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm4vRmluUSdub3JtYWxGJ0Zbb0ZddEZgdC1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Digits:=14; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USdEaWdpdHNGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1JI21uR0YlNjlRIzE0RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkknRGlnaXRzR0YoIiM5NyNGZXI= t:=time():x:=LinearSolve(1.*Tref,1.*b):time()-t; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjA2NUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIjbCEiJA== Norm(Tref.x-b); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtbkdGJTY5UTQyLjMxNzMxMzQzNjQ2MDc1NzgyRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkYvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1ExJkludmlzaWJsZVRpbWVzO0YoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGQy8lK2JhY2tncm91bmRHRkYtSSVtc3VwR0YlNiUtRi02OVEjMTBGKEYwRjNGNkY5RjtGPUY/RkFGREZHRklGS0ZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GLTY5USMtN0YoRjBGM0Y2RjlGO0Y9Rj9GQUZERkdGSUZLRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGKDcjJCIzI3l2Z2tWOHRKIyEjQw== t:=time():y:=lbSolve(Tref,b):time()-t; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjEyNUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkRCIhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjM3MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkcyQhIiQ= Norm(Tref.y-b); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USIwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiIiE= Bug in Maple Determinant(Tref);Rank(Tref); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USIwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiIiE= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQxOTlGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKj4= Digits:=14; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USdEaWdpdHNGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1JI21uR0YlNjlRIzE0RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkknRGlnaXRzR0YoIiM5NyNGZXI= Determinant(1.*Tref);Rank(1.*Tref); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtbkdGJTY5UTAyLjQwODQ1MTkyNTQ4MDVGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGOC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUTEmSW52aXNpYmxlVGltZXM7RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EkMGVtRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JJW1zdXBHRiU2JS1GLTY5USMxMEYoRjBGM0Y2RjlGO0Y9Rj9GQUZERkdGSUZLRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUYtNjlRJDUxMkYoRjBGM0Y2RjlGO0Y9Rj9GQUZERkdGSUZLRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGKDcjJCIvMFtEPlgzQyIkKlw= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQyMDBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKyM= lbDeterminant(Tref);lbRank(Tref); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjEzNUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkTiIhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UVxbbTI0MDg0NTE5MjU0ODAyNzQzMTkzNTM5MjE0MTY1NjUwNzE0MDcxODM4ODg4OTI4ODk5NjM4MDgxMzEzMjU2MjE0MjAxMDk4MTY2MDQyMzgyMTg3MDYwNDE4MDEzMTA5MzQ5NzE1NjMzNzYyNDgzNDY1ODIzMjM4NTEyNTU5ODQwNjk4OTQ4OTY0MDE1NjUwNDExMzc4MjU1NDYxMzU2OTYyODg4NzMwMjgwNjEwMzQ0MTc2MzU1NDEyMjQ4OTk4MDc1NDE0NjYzMTcxNzUxOTYyMTQyMzA3OTQ3MjE4NTE3NDkyNzAzNzI4OTg2NDMzNDU1MzAzOTc1NTM4MjczNDQ3NTc2NzY2NTQ2OTE0MDkyMTEwNzcxMzg1NTM2NDkyMzk4Mzk0OTQ1MDMxODUyMjU1NjYwMDgzOTU0NjAwODY1Mzg2OTMwMDM3Nzg4OTk4NDYwMTE4NjcwNjc2MDM5MzMwMjQzOTgxNjAyMjI5MDc3MzYxMzIzODAzNjQ0NTU2NzY0NDkxMzg4MDQzNTQyODAzNTkyOTc0NTYxMjM0MDM5NjI1ODAzNTg3OTI2OTYwNjI0ODYxOTk0NzE4OTQ4ODI3MTczMTU4Nzc2Mzg5OTAxMzUwNDUzOTMzNDM5NTE4MzA4OTgwNDQ3NzY2NDUxODE4NDg4MzcxMDE2Njg2MzQyOEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIlxbbUdNJ287NVApWz09WG14VyEpKjMkPSZSTSRSWF04ISoqUXcoZUo8RilbKj1aKj4nW2lncCN6ZS5laVJTQmhYKEhmLkdhViEpUSJca25iV08hUUtodDJIQWciKVJDSSRSZ25xJz0sWSkqKil5UCskcFFsM2dhUjNnY0RfPS5YXFIpUiNcT2JRcjI2IzQ5cGFtbmRaTUZRYihSSWJNVicpKkdQcSNcPCY9cyV6SVVAJz52ckptOWEyKSoqW0FUYmo8Vy5oIUdJKCkpRydwTmhhRHk4VF1jLGsqWyopcFMpZkReUUsjZVkkW2lQajooXCQ0Siw9LzEoPSNRVWc7KTQsVUBjS0oiM1EnKiopRyopKSlRPTI5MmxsVEBSTj5WRiFbRD5YM0M= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjIzNEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkTSMhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQyMDBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKyM= Determinant(Matrix(Tref,storage=rectangular)); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UVxbbTI0MDg0NTE5MjU0ODAyNzQzMTkzNTM5MjE0MTY1NjUwNzE0MDcxODM4ODg4OTI4ODk5NjM4MDgxMzEzMjU2MjE0MjAxMDk4MTY2MDQyMzgyMTg3MDYwNDE4MDEzMTA5MzQ5NzE1NjMzNzYyNDgzNDY1ODIzMjM4NTEyNTU5ODQwNjk4OTQ4OTY0MDE1NjUwNDExMzc4MjU1NDYxMzU2OTYyODg4NzMwMjgwNjEwMzQ0MTc2MzU1NDEyMjQ4OTk4MDc1NDE0NjYzMTcxNzUxOTYyMTQyMzA3OTQ3MjE4NTE3NDkyNzAzNzI4OTg2NDMzNDU1MzAzOTc1NTM4MjczNDQ3NTc2NzY2NTQ2OTE0MDkyMTEwNzcxMzg1NTM2NDkyMzk4Mzk0OTQ1MDMxODUyMjU1NjYwMDgzOTU0NjAwODY1Mzg2OTMwMDM3Nzg4OTk4NDYwMTE4NjcwNjc2MDM5MzMwMjQzOTgxNjAyMjI5MDc3MzYxMzIzODAzNjQ0NTU2NzY0NDkxMzg4MDQzNTQyODAzNTkyOTc0NTYxMjM0MDM5NjI1ODAzNTg3OTI2OTYwNjI0ODYxOTk0NzE4OTQ4ODI3MTczMTU4Nzc2Mzg5OTAxMzUwNDUzOTMzNDM5NTE4MzA4OTgwNDQ3NzY2NDUxODE4NDg4MzcxMDE2Njg2MzQyOEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIlxbbUdNJ287NVApWz09WG14VyEpKjMkPSZSTSRSWF04ISoqUXcoZUo8RilbKj1aKj4nW2lncCN6ZS5laVJTQmhYKEhmLkdhViEpUSJca25iV08hUUtodDJIQWciKVJDSSRSZ25xJz0sWSkqKil5UCskcFFsM2dhUjNnY0RfPS5YXFIpUiNcT2JRcjI2IzQ5cGFtbmRaTUZRYihSSWJNVicpKkdQcSNcPCY9cyV6SVVAJz52ckptOWEyKSoqW0FUYmo8Vy5oIUdJKCkpRydwTmhhRHk4VF1jLGsqWyopcFMpZkReUUsjZVkkW2lQajooXCQ0Siw9LzEoPSNRVWc7KTQsVUBjS0oiM1EnKiopRyopKSlRPTI5MmxsVEBSTj5WRiFbRD5YM0M=
<Text-field style="Heading 1" layout="Heading 1">Low level of the interface</Text-field> restart; p:=17; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg==
<Text-field style="Heading 2" layout="Heading 2">Submodule of module LinBox</Text-field> with(LinBox:-Dev); LinBox/Maple Interface Package beta version 0.1 by Pascal Giorgi (pgiorgi@uwaterloo.ca) NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2ZW8tSSNtaUdGJTY5UStsYkJsYWNrYm94RigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHRlMvJSVib2xkR0Y4LyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR0ZWLyUrYmFja2dyb3VuZEdGWS8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGNS8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZQLyUqbWF0aGNvbG9yR0ZWLyUvbWF0aGJhY2tncm91bmRHRlkvJStmb250ZmFtaWx5R0Zcby8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGUy1GLTYzUSIsRigvRjFRJmluZml4RigvRjRGOC9GN0Y1L0Y6USQwZW1GKC9GPVEzdmVyeXRoaWNrbWF0aHNwYWNlRigvRj9GOEZARkJGRUZIRkpGTEZORlFGVEZXLUZnbjY5UTRsYkJsYWNrYm94RGltZW5zaW9uRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK2xiQ2hhcnBvbHlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEybGJDb252ZXJ0QmxhY2tib3hGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVExbGJDb252ZXJ0RWxlbWVudEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTRsYkNvbnZlcnRQb2x5bm9taWFsRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMGxiQ29udmVydFZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USdsYkNvcHlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEvbGJDb3B5QmxhY2tib3hGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtbGJDb3B5VmVjdG9yRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK2xiRGF0YUluZm9GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEubGJEZXRlcm1pbmFudEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USxsYkRpbWVuc2lvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USlsYkRvbWFpbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpsYkVsZW1lbnRGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqbGJNaW5wb2x5RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKWxiUmFuZG9tRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJ2xiUmFua0YoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USlsYlJlYmluZEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTFsYlJlYmluZEJsYWNrYm94RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL2xiUmViaW5kVmVjdG9yRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLmxiU2V0QmxhY2tib3hGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE2bGJTZXRCbGFja2JveEF0UmFuZG9tRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMWxiU2V0SW50ZWdlclJpbmdGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEwbGJTZXRQcmltZUZpZWxkRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRM2xiU2V0UmF0aW9uYWxGaWVsZEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USxsYlNldFZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTRsYlNldFZlY3RvckF0UmFuZG9tRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKGxiU29sdmVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEobGJTdGFydEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USdsYlN0b3BGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEpbGJWZWN0b3JGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEybGJWZWN0b3JEaW1lbnNpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEobGJXcml0ZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTBsYldyaXRlQmxhY2tib3hGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEybGJXcml0ZVBvbHlub21pYWxGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEubGJXcml0ZVZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxLUYtNjNRIl1GKC9GMVEocG9zdGZpeEYoRjNGNkY5L0Y9UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRj5GQEZCRkVGSEZKRkxGTkZRRlRGVzcjN0dJK2xiQmxhY2tib3hHRihJNGxiQmxhY2tib3hEaW1lbnNpb25HRihJK2xiQ2hhcnBvbHlHRihJMmxiQ29udmVydEJsYWNrYm94R0YoSTFsYkNvbnZlcnRFbGVtZW50R0YoSTRsYkNvbnZlcnRQb2x5bm9taWFsR0YoSTBsYkNvbnZlcnRWZWN0b3JHRihJJ2xiQ29weUdGKEkvbGJDb3B5QmxhY2tib3hHRihJLWxiQ29weVZlY3RvckdGKEkrbGJEYXRhSW5mb0dGKEkubGJEZXRlcm1pbmFudEdGKEksbGJEaW1lbnNpb25HRihJKWxiRG9tYWluR0YoSSpsYkVsZW1lbnRHRihJKmxiTWlucG9seUdGKEkpbGJSYW5kb21HRihJJ2xiUmFua0dGKEkpbGJSZWJpbmRHRihJMWxiUmViaW5kQmxhY2tib3hHRihJL2xiUmViaW5kVmVjdG9yR0YoSS5sYlNldEJsYWNrYm94R0YoSTZsYlNldEJsYWNrYm94QXRSYW5kb21HRihJMWxiU2V0SW50ZWdlclJpbmdHRihJMGxiU2V0UHJpbWVGaWVsZEdGKEkzbGJTZXRSYXRpb25hbEZpZWxkR0YoSSxsYlNldFZlY3RvckdGKEk0bGJTZXRWZWN0b3JBdFJhbmRvbUdGKEkobGJTb2x2ZUdGKEkobGJTdGFydEdGKEknbGJTdG9wR0YoSSlsYlZlY3RvckdGKEkybGJWZWN0b3JEaW1lbnNpb25HRihJKGxiV3JpdGVHRihJMGxiV3JpdGVCbGFja2JveEdGKEkybGJXcml0ZVBvbHlub21pYWxHRihJLmxiV3JpdGVWZWN0b3JHRig=
<Text-field style="Heading 2" layout="Heading 2">Creation of Domain</Text-field> Integers Domain Z:=lbDomain(0,"linbox_ring_integer"); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJaRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFlbltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X3JpbmdfaW50ZWdlcix+Y2hhcmFjdH49fjApXXwrRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JIlpHRihJZW5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV18K0dGKDcjRmFy Z:=lbDomain(); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJaRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFlbltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X3JpbmdfaW50ZWdlcix+Y2hhcmFjdH49fjApXXwrRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JIlpHRihJZW5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV18K0dGKDcjRmFy Finite fields domain Zp:=lbDomain(p,"linbox_field_dbl"); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNacEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRWVtMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNacEdGKElZW0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXXwrR0YoNyNGYXI= Zp:=lbDomain(p); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNacEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRWVtMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNacEdGKElZW0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXXwrR0YoNyNGYXI= Use of global default type lbSetIntegerRing("linbox_ring_integer"); lbSetPrimeField("linbox_field_dbl"); Z1:=lbDomain(); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNaMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRZW5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNaMUdGKEllbltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X3JpbmdfaW50ZWdlcix+Y2hhcmFjdH49fjApXXwrR0YoNyNGYXI= Zp2:=lbDomain(p); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRacDJGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GLTY5UVlbTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9maWVsZF9kYmwsfmNoYXJhY3R+PX4xNyldfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkkWnAyR0YoSVlbTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9maWVsZF9kYmwsfmNoYXJhY3R+PX4xNyldfCtHRig3I0Zhcg==
<Text-field style="Heading 2" layout="Heading 2">Using Blackbox (Matrix)</Text-field> A:=lbBlackbox(Z,10,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJBRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFcclt+TGluQm94fkJsYWNrYm94fihzdG9yYWdlfj1+bGluYm94X2RlbnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJBR0YoSVxyW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X3JpbmdfaW50ZWdlcix+Y2hhcmFjdH49fjApXX4pXXwrR0YoNyNGYXI= Ap:=lbBlackbox(Zp,10,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNBcEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRanFbfkxpbkJveH5CbGFja2JveH4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXX4pXXwrRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JI0FwR0YoSWpxW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0dGKDcjRmFy Use of global default type lbSetBlackbox("linbox_sparse"); A:=lbBlackbox(Z,10,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJBRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFdclt+TGluQm94fkJsYWNrYm94fihzdG9yYWdlfj1+bGluYm94X3NwYXJzZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfcmluZ19pbnRlZ2VyLH5jaGFyYWN0fj1+MCldfildfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkiQUdGKEldclt+TGluQm94fkJsYWNrYm94fihzdG9yYWdlfj1+bGluYm94X3NwYXJzZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfcmluZ19pbnRlZ2VyLH5jaGFyYWN0fj1+MCldfildfCtHRig3I0Zhcg== Set entries at random over the domain lbRandom(A); NiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UV1yW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfc3BhcnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R0Y4LyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQS8lL21hdGhiYWNrZ3JvdW5kR0ZELyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGMjcjSV1yW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfc3BhcnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0dGKA== lbRandom(Ap); NiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UWpxW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R0Y4LyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQS8lL21hdGhiYWNrZ3JvdW5kR0ZELyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGMjcjSWpxW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0dGKA== Computation without specifying the domain Over the integers d1:=lbDeterminant(A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNkMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRaXAzMTE2Mjc5NjIyMjgzNDUzMDgyMjk4NjI2NDEyNzc2NjE2NzM5NDcwODUwOTA5NDU4ODgyODI3NjcxNDMyNjI5MDAwOTI1MTE3MjU0MjAwNzQ4MTM1MjMyNjU0OTZ8K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNkMUdGKElpcDMxMTYyNzk2MjIyODM0NTMwODIyOTg2MjY0MTI3NzY2MTY3Mzk0NzA4NTA5MDk0NTg4ODI4Mjc2NzE0MzI2MjkwMDA5MjUxMTcyNTQyMDA3NDgxMzUyMzI2NTQ5NnwrR0YoNyNGYXI= Over a finite field d2:=lbDeterminant(Ap); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNkMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRJDExfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjZDJHRihJJDExfCtHRig3I0Zhcg== Converting data lbConvertElement(d1); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UWhwMzExNjI3OTYyMjI4MzQ1MzA4MjI5ODYyNjQxMjc3NjYxNjczOTQ3MDg1MDkwOTQ1ODg4MjgyNzY3MTQzMjYyOTAwMDkyNTExNzI1NDIwMDc0ODEzNTIzMjY1NDk2RigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiaHAnXGxLXzhbMj9hczZENCtIRVZydyNHKSllJTQ0JjNaUm5od0ZURScpSCMzYE1HQSd6aTYk lbConvertElement(d2); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMxMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM2
<Text-field style="Heading 2" layout="Heading 2">using Vector</Text-field> construction over the integers V:=lbVector(Z,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJWRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFqcVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfcmluZ19pbnRlZ2VyLH5jaGFyYWN0fj1+MCldfildfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkiVkdGKElqcVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfcmluZ19pbnRlZ2VyLH5jaGFyYWN0fj1+MCldfildfCtHRig3I0Zhcg== construction over finite field Vp:=lbVector(Zp,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNWcEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRaHFbfkxpbkJveH5WZWN0b3J+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNWcEdGKElocVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXX4pXXwrR0YoNyNGYXI= Use of global default type lbSetVector("linbox_dense"); Set entries at random over the domain lbRandom(V); NiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UWpxW35MaW5Cb3h+VmVjdG9yfihzdG9yYWdlfj1+bGluYm94X2RlbnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R0Y4LyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQS8lL21hdGhiYWNrZ3JvdW5kR0ZELyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGMjcjSWpxW35MaW5Cb3h+VmVjdG9yfihzdG9yYWdlfj1+bGluYm94X2RlbnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0dGKA== lbRandom(Vp); NiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UWhxW35MaW5Cb3h+VmVjdG9yfihzdG9yYWdlfj1+bGluYm94X2RlbnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9maWVsZF9kYmwsfmNoYXJhY3R+PX4xNyldfildfCtGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdGOC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkEvJS9tYXRoYmFja2dyb3VuZEdGRC8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjI3I0locVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXX4pXXwrR0Yo Computation without specifying the domain Over the integers x1:=lbSolve(A,V); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN4MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRXHJbfkxpbkJveH5WZWN0b3J+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX3JhdGlvbmFsLH5jaGFyYWN0fj1+MCldfildfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjeDFHRihJXHJbfkxpbkJveH5WZWN0b3J+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX3JhdGlvbmFsLH5jaGFyYWN0fj1+MCldfildfCtHRig3I0Zhcg== x2:=lbSolve(Ap,Vp); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN4MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRaHFbfkxpbkJveH5WZWN0b3J+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN4MkdGKElocVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXX4pXXwrR0YoNyNGYXI= Converting data lbConvertVector(x1);lbConvertVector(x2); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYsLUkkbXRyR0YlNiMtSSRtdGRHRiU2Iy1JJm1mcmFjR0YlNiotSSNtbkdGJTY5UV5xJm1pbnVzOzg3NzQxNTkzMDY1NTUyMTYyMDA1MjQzNDAwNDI3Nzg2ODc3NDE4NDk0MDU0ODI1MzUwNTA0OTc5NjA1OTg3MjYxMzA3Mzg3Mjk0NDM0MzYwNTY3NzA3OTU5NDIzRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHRlMvJSVib2xkR0Y4LyUnaXRhbGljR0Y4LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR0ZWLyUrYmFja2dyb3VuZEdGWS8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGNS8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZQLyUqbWF0aGNvbG9yR0ZWLyUvbWF0aGJhY2tncm91bmRHRlkvJStmb250ZmFtaWx5R0Zoby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGUy1GY282OVFocDE1NTgxMzk4MTExNDE3MjY1NDExNDkzMTMyMDYzODgzMDgzNjk3MzU0MjU0NTQ3Mjk0NDE0MTM4MzU3MTYzMTQ1MDA0NjI1NTg2MjcxMDAzNzQwNjc2MTYzMjc0OEYoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyLyUubGluZXRoaWNrbmVzc0dRIjFGKC8lK2Rlbm9tYWxpZ25HUSdjZW50ZXJGKC8lKW51bWFsaWduR0Zccy8lKWJldmVsbGVkR0Y4RlRGVy1Gam42Iy1GXW82Iy1GYG82Ki1GY282OVFfcSZtaW51czsxMDUwMTA3NDMwMjE2NTM2Mjc0NTA4NzE0MzkwODg5NzczMzY0NzE4NDc0MzQzNDM1ODc2MTc0NjkwMjUyNzU4MzA5MjU1OTU0Njg1NTQ5MDE3NjM2NzE2NTE4OTVGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZkckZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRXXEmbWludXM7NDM2MTM1MjEzNTA1NTczMTI3MjA4ODY5MTE4MDYyOTg5ODAxNzkxMjUxODEzNzU2OTE5OTI3NDMzMTgyODU3NzQzMzczNzE0MTMzNDU2MTg0MDUzMzE5NjYyOUYoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyLUZjbzY5UWdwNzc5MDY5OTA1NTcwODYzMjcwNTc0NjU2NjAzMTk0MTU0MTg0ODY3NzEyNzI3MzY0NzIwNzA2OTE3ODU4MTU3MjUwMjMxMjc5MzEzNTUwMTg3MDMzODA4MTYzNzRGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRXnEmbWludXM7NDAwNTI3NzA3NDI1NTU0MDg5OTM0NDU1MDczNDc1MTUyMzAxNzMxODU4MjA4MzU3NTM1NzI5Mzg2MjgyMTQ4MjQyODM1NzI5MDcwODg2MTE0MjY3ODE1NjQ0MTlGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZkckZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRaHAxNDc0NDk4NDgwODIwOTczNzU3MTA5NTI5NTg3Nzc2MTkxMzg2NDQ0NjY4NTE4NTE2MTQxNTM5OTQ2MTU0MDI1NTgyMzc1MjkzMjc2OTQ0MDQ1ODQ0MTk2MzU4MzFGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZkckZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRZ3AxMzkxMzY5MjQ0MTgwMzMzNDIwMzE1Nzc4NzY0MDM3OTk5NTY3MjQwNDI0NjIwNDEzMDg5MjE1ODA0MjUxMDMzNTkwMjIwOTY2NzM5OTQ3OTI3NDEyMDU5MzkzOUYoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyRmN0RmdyRmpyRl1zRl9zRlRGVy1Gam42Iy1GXW82Iy1GYG82Ki1GY282OVFncDgyNjUyOTU1Mjg0ODY3MTE0OTMxMjgyMTgxODQ2NDkxMDA0MTU4NTg0MjM0NzY4OTIzODUyODIzMTM3NzIxODg2NzQyMjA4ODUyODY2ODk4Mjc0MDAwMzk5MjA1RihGZm9GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXXJGX3JGYnJGZHJGZ3JGanJGXXNGX3NGVEZXLUZqbjYjLUZdbzYjLUZgbzYqLUZjbzY5UWdwMjg0NTcxODMyMDk2MDExMTk5OTAzMjM0Mjg2NTY1MDUxNTA1Njk4MzQ5NTIyMjYxNDIzMjkzMDQ0MjY1MTA4OTI3NDM2NDAzMjYxNjEwNjEwNDkxMzkxOTE2NDlGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZjdEZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRZ3A4NzEyMzcyNDgwNjAwMDA3NDEzMTQ5MzE2MzA3OTc2ODY0OTIyNjkxNDAyMTI1MzAyNzk3NTUxMjg2NDAwOTU3MjYzMjUzODQxOTczMDg2NzgwMTY5NTMzMTkxMUYoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyRmRyRmdyRmpyRl1zRl9zRlRGVy1Gam42Iy1GXW82Iy1GYG82Ki1GY282OVFncDI3NTMzMjc4OTY5MTU2Njc3MjgxMTEzMTY1Njg1Mzc4MTM3NjI0MDYxOTczMzg4NjI3MDcyNzQzNzEyNTUzMjYyNTk2ODUyMDU5MzU1NjE2OTAzOTc2MjU3NTQ5RihGZm9GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXXJGX3JGYnItRmNvNjlRZ3AzODk1MzQ5NTI3ODU0MzE2MzUyODczMjgzMDE1OTcwNzcwOTI0MzM4NTYzNjM2ODIzNjAzNTM0NTg5MjkwNzg2MjUxMTU2Mzk2NTY3NzUwOTM1MTY5MDQwODE4N0YoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyRmdyRmpyRl1zRl9zRlRGVy1GLTYzUSJdRigvRjFRKHBvc3RmaXhGKEYzRjZGOS9GPVEydmVyeXRoaW5tYXRoc3BhY2VGKEY+RkBGQkZFRkhGSkZMRk5GUUZURlc3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iy1JJ1JUQUJMRUdGKDYlIiorIykpcDgtSSdNQVRSSVhHRig2IzcsNyMjIWdwQiVmenFuME9NV0goUTI4RSgpZmd6XF1dYCNbMCVcPXUob3lGL1NWXytpQGJsSWZUeCkiaHBbRmpoblNQK3JpZURZK1hKO2QkUVRUJUhaWERhdHAkMyQpUTFLSlw2YUU8OTYpUiJlOjcjIyFocCYqPWxyT3csXGJvYWZENCRlRkQhcHVoKGVWVlZaPVpPdCgqKTNSOSgzWEZPbEBJdTVdNUZgejcjIyFmcEhtPkwwJT1jTTg5UFBWeCZHPUx1Iyo+cHY4PUQieiwpKilIMT0icCkzczd0Yl04XzhPJSJncHVqIjNRLig9XU5KejdCXXM6ZXkicHE/Wk9GRnJuWz1hVD4ubWx1MEZqM2QwKnAheig3IyMhZ3A+V2MieUU5aCkzMkhkJEdDW0BHJ1FIZGBkJDMjZT10LEI6dk0yYlckKiozYWJVMnhfKyVGYHo3IyMiaHBKZWo+V2UvV3BGJEh2QmVEUzpZKlI6OTsmPSZvWVcnUSI+d3hlSCY0cnZ0NCMzWylcdTlGYHo3IyMiZ3BSUmY/VEZ6JSpSbic0QSFmTDVEL2VAKjM4L2lDL0NuJioqei5rKHlkSj9NTCE9VyNwOFIiRmd6NyMjImdwMCMqUitTRikqbydHJikzQXUnKT1zUEojRyZRIypvWkIlZWVUKyJcWT09I0dKXDZuW0diSGwjKUZgejcjIyJncFw7PlIiXDUxaGhLU091IyozXkVXSUhCOUVBJlwkKXAwOjBsbEdNSyEqKj42ZzRLPWQlR0ZnejcjIyJncDY+TCZwLHknM3Q+JVFEanMmNFMnR152ei1gNy05cEFcJ28oekk7JFxKVDIrZyFbc0JyKUZgejcjIyJncFx2RHdSIXBoYiRmPyZvZmlLYjdQdXNxaSlRdD4xQ3c4eWBvbEo2Ikd4bTpwKnlLYEYiZ3AoPTMvcF4kNHZubFJjNkQneSFIKmVNTmdCb2pqJlFWIzR4cWYsJEd0R047ViZ5X1xgKlEmSSdWZWN0b3JHNiQlKnByb3RlY3RlZEdGKjYjSSdjb2x1bW5HRig3Iy1GXlxsNiMvSSQlaWRHRihGaHk= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYsLUkkbXRyR0YlNiMtSSRtdGRHRiU2Iy1JI21uR0YlNjlRIjRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZTLUZqbjYjLUZdbzYjLUZgbzY5USIzRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRmpuNiMtRl1vNiMtRmBvNjlRIjlGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZoci1Gam42Iy1GXW82Iy1GYG82OVEjMTJGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZhckZfc0ZpbkZpbkZpbi1GLTYzUSJdRigvRjFRKHBvc3RmaXhGKEYzRjZGOS9GPVEydmVyeXRoaW5tYXRoc3BhY2VGKEY+RkBGQkZFRkhGSkZMRk5GUUZURlc3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iy1JJ1JUQUJMRUdGKDYlIipLUkhRIi1JJ01BVFJJWEdGKDYjNyw3IyIiJTcjIiIkNyMiIipGX3U3IyIjN0ZddUZhdUZbdUZbdUZbdSZJJ1ZlY3Rvckc2JCUqcHJvdGVjdGVkR0YqNiNJJ2NvbHVtbkdGKDcjLUZjdTYjL0kkJWlkR0YoRmZ0
<Text-field style="Heading 2" layout="Heading 2">Example of use</Text-field>
<Text-field style="Heading 3" layout="Heading 3">Highly efficient user's solution</Text-field> Compute the determinant of a matrix read from a file myDeterminant:=proc(p, file) local Zp,B,d; Zp:=lbDomain(p); B:=lbBlackbox(Zp,file); d:=lbElement(Zp); lbDeterminant(d,B); return lbConvertElement(d); end; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5US5teURldGVybWluYW50RigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRiQ2KS1GX282M1ElcHJvY0YoL0Zjb1EhRihGZW9GZ28vRmpvUSQwZW1GKC9GXXBGXnJGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2JS1GX282M1EiKEYoL0Zjb1EncHJlZml4RigvRmZvRjtGZ28vRmpvUS50aGlubWF0aHNwYWNlRigvRl1wRmlyL0ZfcEY7RmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiUtRi02OVEicEYoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIsRihGYm9GZW8vRmhvRjtGXXIvRl1wUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGKEZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GLTY5USVmaWxlRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRl9vNjNRIilGKC9GY29RKHBvc3RmaXhGKEZnckZnb0Zoci9GXXBRMnZlcnl0aGlubWF0aHNwYWNlRihGW3NGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtSSdtc3BhY2VHRiU2Ji8lJ2hlaWdodEdRJzAuMH5leEYoLyUmd2lkdGhHUScwLjN+ZW1GKC8lJmRlcHRoR0ZmdC8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGKC1GJDYmLUZfbzYzUSZsb2NhbEYoRltyRmVvRmdvRl1yL0ZdcFEwbWVkaXVtbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Jy1GLTY5USNacEYoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvRmFzLUYtNjlRIkJGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcb0Zhcy1GLTY5USJkRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRl9vNjNRIjtGKEZib0Zlb0Zkc0ZdckZccEZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZhdC1GJDYnLUYkNiUtRiQ2JUZodUZeby1GJDYlLUYkNiVGYnItRiQ2JS1GLTY5US5gTGluQm94Oi1EZXZgRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRl9vNjNRIzotRihGW3JGZW9GZ29GXXJGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRi02OVEpbGJEb21haW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcb0Zqcy1GX282M1EwJkFwcGx5RnVuY3Rpb247RihGYm9GZW9GZ29GXXJGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2JUZici1GJDYjRl5zRmpzRmF2RmF0LUYkNiUtRiQ2JUZbdkZeby1GJDYlLUYkNiVGYnItRiQ2JUZgd0Zjdy1GLTY5UStsYkJsYWNrYm94RihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG9GanNGaXctRiQ2JUZici1GJDYlRmh1RmFzRmdzRmpzRmF2RmF0LUYkNiUtRiQ2JUZedkZeby1GJDYlLUYkNiVGYnItRiQ2JUZgd0Zjdy1GLTY5USpsYkVsZW1lbnRGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcb0Zqc0Zpdy1GJDYlRmJyLUYkNiNGaHVGanNGYXZGYXQtRiQ2JS1GJDYlLUYkNiVGYnItRiQ2JUZgd0Zjdy1GLTY5US5sYkRldGVybWluYW50RihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG9GanNGaXctRiQ2JUZici1GJDYlRl52RmFzRlt2RmpzRmF2RmF0LUYkNiQtRl9vNjNRJ3JldHVybkYoRltyRmVvRmdvRl1yRmR1Rl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiUtRiQ2JUZici1GJDYlRmB3RmN3LUYtNjlRMWxiQ29udmVydEVsZW1lbnRGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcb0Zqc0Zpdy1GJDYlRmJyLUYkNiNGXnZGanMtRmJ0NiZGZHQvRmh0UScwLjB+ZW1GKEZqdC9GXXVRNmRlY3JlYXNlaW5kZW50bmV3bGluZUYoLUZfbzYzUSllbmR+cHJvY0YoRltyRmVvRmdvL0Zqb0ZldUZfckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcTcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkubXlEZXRlcm1pbmFudEdGKGYqNiRJInBHRihJJWZpbGVHRig2JUkjWnBHRihJIkJHRihJImRHRihGKEYoQyc+RmpdbC1fSSREZXZHNiQlKnByb3RlY3RlZEcvRidJJ0xpbkJveEdGKEkpbGJEb21haW5HRig2I0ZnXWw+RltebC1fRmFebEkrbGJCbGFja2JveEdGKDYkRmpdbEZoXWw+RlxebC1fRmFebEkqbGJFbGVtZW50R0YoNiNGal1sLV9GYV5sSS5sYkRldGVybWluYW50R0YoNiRGXF5sRltebE8tX0ZhXmxJMWxiQ29udmVydEVsZW1lbnRHRig2I0ZcXmxGKEYoRig3I0ZlXWw= myDeterminant(1009, "trefethen_200.sms"); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQzNDZGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkWSQ= myDeterminant(0, "trefethen_200.sms"); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UVxbbTI0MDg0NTE5MjU0ODAyNzQzMTkzNTM5MjE0MTY1NjUwNzE0MDcxODM4ODg4OTI4ODk5NjM4MDgxMzEzMjU2MjE0MjAxMDk4MTY2MDQyMzgyMTg3MDYwNDE4MDEzMTA5MzQ5NzE1NjMzNzYyNDgzNDY1ODIzMjM4NTEyNTU5ODQwNjk4OTQ4OTY0MDE1NjUwNDExMzc4MjU1NDYxMzU2OTYyODg4NzMwMjgwNjEwMzQ0MTc2MzU1NDEyMjQ4OTk4MDc1NDE0NjYzMTcxNzUxOTYyMTQyMzA3OTQ3MjE4NTE3NDkyNzAzNzI4OTg2NDMzNDU1MzAzOTc1NTM4MjczNDQ3NTc2NzY2NTQ2OTE0MDkyMTEwNzcxMzg1NTM2NDkyMzk4Mzk0OTQ1MDMxODUyMjU1NjYwMDgzOTU0NjAwODY1Mzg2OTMwMDM3Nzg4OTk4NDYwMTE4NjcwNjc2MDM5MzMwMjQzOTgxNjAyMjI5MDc3MzYxMzIzODAzNjQ0NTU2NzY0NDkxMzg4MDQzNTQyODAzNTkyOTc0NTYxMjM0MDM5NjI1ODAzNTg3OTI2OTYwNjI0ODYxOTk0NzE4OTQ4ODI3MTczMTU4Nzc2Mzg5OTAxMzUwNDUzOTMzNDM5NTE4MzA4OTgwNDQ3NzY2NDUxODE4NDg4MzcxMDE2Njg2MzQyOEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIlxbbUdNJ287NVApWz09WG14VyEpKjMkPSZSTSRSWF04ISoqUXcoZUo8RilbKj1aKj4nW2lncCN6ZS5laVJTQmhYKEhmLkdhViEpUSJca25iV08hUUtodDJIQWciKVJDSSRSZ25xJz0sWSkqKil5UCskcFFsM2dhUjNnY0RfPS5YXFIpUiNcT2JRcjI2IzQ5cGFtbmRaTUZRYihSSWJNVicpKkdQcSNcPCY9cyV6SVVAJz52ckptOWEyKSoqW0FUYmo8Vy5oIUdJKCkpRydwTmhhRHk4VF1jLGsqWyopcFMpZkReUUsjZVkkW2lQajooXCQ0Siw9LzEoPSNRVWc7KTQsVUBjS0oiM1EnKiopRyopKSlRPTI5MmxsVEBSTj5WRiFbRD5YM0M=
<Text-field style="Heading 2" layout="Heading 2">To continue ...</Text-field>
linbox-1.4.2/interfaces/maple/linbox-demonstration.mw000077500000000000000000022521611274717217100230030ustar00rootroot00000000000000 LinBox Interface beta version 0.1 demonstration by Pascal Giorgi restart;
<Text-field style="Heading 1" layout="Heading 1">Available through Maple module</Text-field> with(LinBox); LinBox/Maple Interface Package beta version 0.1 by Pascal Giorgi (pgiorgi@uwaterloo.ca) NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2LS1JI21pR0YlNjlRJERldkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZTLyUlYm9sZEdGOC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdGVi8lK2JhY2tncm91bmRHRlkvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjUvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGUC8lKm1hdGhjb2xvckdGVi8lL21hdGhiYWNrZ3JvdW5kR0ZZLyUrZm9udGZhbWlseUdGXG8vJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRlMtRi02M1EiLEYoL0YxUSZpbmZpeEYoL0Y0RjgvRjdGNS9GOlEkMGVtRigvRj1RM3Zlcnl0aGlja21hdGhzcGFjZUYoL0Y/RjhGQEZCRkVGSEZKRkxGTkZRRlRGVy1GZ242OVErbGJDaGFycG9seUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US5sYkRldGVybWluYW50RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKmxiTWlucG9seUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USdsYlJhbmtGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEobGJTb2x2ZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxLUYtNjNRIl1GKC9GMVEocG9zdGZpeEYoRjNGNkY5L0Y9UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRj5GQEZCRkVGSEZKRkxGTkZRRlRGVzcjNyhJJERldkdGKEkrbGJDaGFycG9seUdGKEkubGJEZXRlcm1pbmFudEdGKEkqbGJNaW5wb2x5R0YoSSdsYlJhbmtHRihJKGxiU29sdmVHRig= comparison with LinearAlgebra package with(LinearAlgebra); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Z3ktSSNtaUdGJTY5USMmeEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZTLyUlYm9sZEdGOC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdGVi8lK2JhY2tncm91bmRHRlkvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjUvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGUC8lKm1hdGhjb2xvckdGVi8lL21hdGhiYWNrZ3JvdW5kR0ZZLyUrZm9udGZhbWlseUdGXG8vJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRlMtRi02M1EiLEYoL0YxUSZpbmZpeEYoL0Y0RjgvRjdGNS9GOlEkMGVtRigvRj1RM3Zlcnl0aGlja21hdGhzcGFjZUYoL0Y/RjhGQEZCRkVGSEZKRkxGTkZRRlRGVy1GZ242OVEkQWRkRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKEFkam9pbnRGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEzQmFja3dhcmRTdWJzdGl0dXRlRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK0JhbmRNYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEmQmFzaXNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtQmV6b3V0TWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL0JpZGlhZ29uYWxGb3JtRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLUJpbGluZWFyRm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTVDaGFyYWN0ZXJpc3RpY01hdHJpeEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTlDaGFyYWN0ZXJpc3RpY1BvbHlub21pYWxGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEnQ29sdW1uRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMENvbHVtbkRpbWVuc2lvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTBDb2x1bW5PcGVyYXRpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEsQ29sdW1uU3BhY2VGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEwQ29tcGFuaW9uTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMENvbmRpdGlvbk51bWJlckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US9Db25zdGFudE1hdHJpeEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US9Db25zdGFudFZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USVDb3B5RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMkNyZWF0ZVBlcm11dGF0aW9uRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLUNyb3NzUHJvZHVjdEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US1EZWxldGVDb2x1bW5GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqRGVsZXRlUm93RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLERldGVybWluYW50RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKURpYWdvbmFsRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL0RpYWdvbmFsTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKkRpbWVuc2lvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UStEaW1lbnNpb25zRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK0RvdFByb2R1Y3RGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE2RWlnZW5Db25kaXRpb25OdW1iZXJzRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLEVpZ2VudmFsdWVzRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLUVpZ2VudmVjdG9yc0YoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USZFcXVhbEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTJGb3J3YXJkU3Vic3RpdHV0ZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US5Gcm9iZW5pdXNGb3JtRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRNEdhdXNzaWFuRWxpbWluYXRpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEyR2VuZXJhdGVFcXVhdGlvbnNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEvR2VuZXJhdGVNYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEyR2V0UmVzdWx0RGF0YVR5cGVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEvR2V0UmVzdWx0U2hhcGVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE1R2l2ZW5zUm90YXRpb25NYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEsR3JhbVNjaG1pZHRGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtSGFua2VsTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLEhlcm1pdGVGb3JtRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRM0hlcm1pdGlhblRyYW5zcG9zZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US9IZXNzZW5iZXJnRm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US5IaWxiZXJ0TWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMkhvdXNlaG9sZGVyTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL0lkZW50aXR5TWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMkludGVyc2VjdGlvbkJhc2lzRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK0lzRGVmaW5pdGVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtSXNPcnRob2dvbmFsRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKklzU2ltaWxhckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpJc1VuaXRhcnlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEySm9yZGFuQmxvY2tNYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVErSm9yZGFuRm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UShMQV9NYWluRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMExVRGVjb21wb3NpdGlvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US1MZWFzdFNxdWFyZXNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEsTGluZWFyU29sdmVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEkTWFwRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJU1hcDJGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqTWF0cml4QWRkRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMk1hdHJpeEV4cG9uZW50aWFsRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL01hdHJpeEZ1bmN0aW9uRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLk1hdHJpeEludmVyc2VGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE1TWF0cml4TWF0cml4TXVsdGlwbHlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVErTWF0cml4Tm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USxNYXRyaXhQb3dlckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTVNYXRyaXhTY2FsYXJNdWx0aXBseUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTVNYXRyaXhWZWN0b3JNdWx0aXBseUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTJNaW5pbWFsUG9seW5vbWlhbEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USZNaW5vckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UShNb2R1bGFyRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKU11bHRpcGx5RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLE5vVXNlclZhbHVlRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJU5vcm1GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqTm9ybWFsaXplRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKk51bGxTcGFjZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTNPdXRlclByb2R1Y3RNYXRyaXhGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqUGVybWFuZW50RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJlBpdm90RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKlBvcG92Rm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTBRUkRlY29tcG9zaXRpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtUmFuZG9tTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLVJhbmRvbVZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USVSYW5rRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRNlJhdGlvbmFsQ2Fub25pY2FsRm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTZSZWR1Y2VkUm93RWNoZWxvbkZvcm1GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEkUm93RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLVJvd0RpbWVuc2lvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5US1Sb3dPcGVyYXRpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEpUm93U3BhY2VGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtU2NhbGFyTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL1NjYWxhck11bHRpcGx5RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLVNjYWxhclZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpTY2h1ckZvcm1GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEvU2luZ3VsYXJWYWx1ZXNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqU21pdGhGb3JtRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKlN1Yk1hdHJpeEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpTdWJWZWN0b3JGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEpU3VtQmFzaXNGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEwU3lsdmVzdGVyTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL1RvZXBsaXR6TWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJlRyYWNlRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKlRyYW5zcG9zZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTBUcmlkaWFnb25hbEZvcm1GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVErVW5pdFZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTJWYW5kZXJtb25kZU1hdHJpeEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpWZWN0b3JBZGRGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEsVmVjdG9yQW5nbGVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE1VmVjdG9yTWF0cml4TXVsdGlwbHlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVErVmVjdG9yTm9ybUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTVWZWN0b3JTY2FsYXJNdWx0aXBseUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UStaZXJvTWF0cml4RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK1plcm9WZWN0b3JGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEkWmlwRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnEtRi02M1EiXUYoL0YxUShwb3N0Zml4RihGM0Y2RjkvRj1RMnZlcnl0aGlubWF0aHNwYWNlRihGPkZARkJGRUZIRkpGTEZORlFGVEZXNyM3YnJJIyZ4R0YoSSRBZGRHNiQlKnByb3RlY3RlZEdGKkkoQWRqb2ludEdGKEkzQmFja3dhcmRTdWJzdGl0dXRlR0YoSStCYW5kTWF0cml4R0YoSSZCYXNpc0dGKEktQmV6b3V0TWF0cml4R0YoSS9CaWRpYWdvbmFsRm9ybUdGKEktQmlsaW5lYXJGb3JtR0YoSTVDaGFyYWN0ZXJpc3RpY01hdHJpeEdGKEk5Q2hhcmFjdGVyaXN0aWNQb2x5bm9taWFsR0YoSSdDb2x1bW5HRihJMENvbHVtbkRpbWVuc2lvbkdGKEkwQ29sdW1uT3BlcmF0aW9uR0YoSSxDb2x1bW5TcGFjZUdGKEkwQ29tcGFuaW9uTWF0cml4R0YoSTBDb25kaXRpb25OdW1iZXJHRihJL0NvbnN0YW50TWF0cml4R0YoSS9Db25zdGFudFZlY3RvckdGKEklQ29weUdGKEkyQ3JlYXRlUGVybXV0YXRpb25HRihJLUNyb3NzUHJvZHVjdEdGKEktRGVsZXRlQ29sdW1uR0YoSSpEZWxldGVSb3dHRihJLERldGVybWluYW50R0YoSSlEaWFnb25hbEdGKEkvRGlhZ29uYWxNYXRyaXhHRihJKkRpbWVuc2lvbkdGKEkrRGltZW5zaW9uc0dGKEkrRG90UHJvZHVjdEdGKEk2RWlnZW5Db25kaXRpb25OdW1iZXJzR0YoSSxFaWdlbnZhbHVlc0dGKEktRWlnZW52ZWN0b3JzR0YoSSZFcXVhbEdGKEkyRm9yd2FyZFN1YnN0aXR1dGVHRihJLkZyb2Jlbml1c0Zvcm1HRihJNEdhdXNzaWFuRWxpbWluYXRpb25HRihJMkdlbmVyYXRlRXF1YXRpb25zR0YoSS9HZW5lcmF0ZU1hdHJpeEdGKEkyR2V0UmVzdWx0RGF0YVR5cGVHRihJL0dldFJlc3VsdFNoYXBlR0YoSTVHaXZlbnNSb3RhdGlvbk1hdHJpeEdGKEksR3JhbVNjaG1pZHRHRihJLUhhbmtlbE1hdHJpeEdGKEksSGVybWl0ZUZvcm1HRihJM0hlcm1pdGlhblRyYW5zcG9zZUdGKEkvSGVzc2VuYmVyZ0Zvcm1HRihJLkhpbGJlcnRNYXRyaXhHRihJMkhvdXNlaG9sZGVyTWF0cml4R0YoSS9JZGVudGl0eU1hdHJpeEdGKEkySW50ZXJzZWN0aW9uQmFzaXNHRihJK0lzRGVmaW5pdGVHRihJLUlzT3J0aG9nb25hbEdGKEkqSXNTaW1pbGFyR0YoSSpJc1VuaXRhcnlHRihJMkpvcmRhbkJsb2NrTWF0cml4R0YoSStKb3JkYW5Gb3JtR0YoSShMQV9NYWluR0YoSTBMVURlY29tcG9zaXRpb25HRihJLUxlYXN0U3F1YXJlc0dGKEksTGluZWFyU29sdmVHRihJJE1hcEdGKEklTWFwMkdGKEkqTWF0cml4QWRkR0YoSTJNYXRyaXhFeHBvbmVudGlhbEdGKEkvTWF0cml4RnVuY3Rpb25HRihJLk1hdHJpeEludmVyc2VHRihJNU1hdHJpeE1hdHJpeE11bHRpcGx5R0YoSStNYXRyaXhOb3JtR0YoSSxNYXRyaXhQb3dlckdGKEk1TWF0cml4U2NhbGFyTXVsdGlwbHlHRihJNU1hdHJpeFZlY3Rvck11bHRpcGx5R0YoSTJNaW5pbWFsUG9seW5vbWlhbEdGKEkmTWlub3JHRihJKE1vZHVsYXJHRihJKU11bHRpcGx5R0ZeaWxJLE5vVXNlclZhbHVlR0YoSSVOb3JtR0ZeaWxJKk5vcm1hbGl6ZUdGKEkqTnVsbFNwYWNlR0YoSTNPdXRlclByb2R1Y3RNYXRyaXhHRihJKlBlcm1hbmVudEdGKEkmUGl2b3RHRihJKlBvcG92Rm9ybUdGKEkwUVJEZWNvbXBvc2l0aW9uR0YoSS1SYW5kb21NYXRyaXhHRihJLVJhbmRvbVZlY3RvckdGKEklUmFua0dGKEk2UmF0aW9uYWxDYW5vbmljYWxGb3JtR0YoSTZSZWR1Y2VkUm93RWNoZWxvbkZvcm1HRihJJFJvd0dGKEktUm93RGltZW5zaW9uR0YoSS1Sb3dPcGVyYXRpb25HRihJKVJvd1NwYWNlR0YoSS1TY2FsYXJNYXRyaXhHRihJL1NjYWxhck11bHRpcGx5R0YoSS1TY2FsYXJWZWN0b3JHRihJKlNjaHVyRm9ybUdGKEkvU2luZ3VsYXJWYWx1ZXNHRihJKlNtaXRoRm9ybUdGKEkqU3ViTWF0cml4R0YoSSpTdWJWZWN0b3JHRihJKVN1bUJhc2lzR0YoSTBTeWx2ZXN0ZXJNYXRyaXhHRihJL1RvZXBsaXR6TWF0cml4R0YoSSZUcmFjZUdGXmlsSSpUcmFuc3Bvc2VHRihJMFRyaWRpYWdvbmFsRm9ybUdGKEkrVW5pdFZlY3RvckdGKEkyVmFuZGVybW9uZGVNYXRyaXhHRihJKlZlY3RvckFkZEdGKEksVmVjdG9yQW5nbGVHRihJNVZlY3Rvck1hdHJpeE11bHRpcGx5R0YoSStWZWN0b3JOb3JtR0YoSTVWZWN0b3JTY2FsYXJNdWx0aXBseUdGKEkrWmVyb01hdHJpeEdGKEkrWmVyb1ZlY3RvckdGKEkkWmlwR0Yo
<Text-field style="Heading 1" layout="Heading 1">High level of the interface </Text-field> Call LinBox functionnalities directly on Maple objects.
<Text-field style="Heading 2" layout="Heading 2">Computation over the integers</Text-field>
<Text-field style="Heading 3" layout="Heading 3">Determinant</Text-field> n:=100;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQxMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4xMDB+eH4xMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple determinant Determinant(A); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UV1zMTMxNTQyMTA5NjUyNDk5ODEwNDIyNzczOTQ5NjE2NjQzMzE5MTU2Mzc3NzMzNjAxNzQ5ODU1OTgzNzk3NDY0Njk1MTI3MTQ5NDk4NDIzMTg4MTg1ODgyMTI3Mzg0MzE3NzgwMDI3MDA2NDUzODIxMTk4NzYxNTc2Mzc4NDY1NTY4MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIl1zI29iWXlqZGgoKT5AUVgxcS0heTxWUUZAKWU9KT1CJSlcXHI3JnBrdXokKWYmKVw8Z0x4UGMiPkxrOydcUnhBLyIpKlxfJzRAYUoi LinBox determinant lbDeterminant(A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA0NEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjVyEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UV1zMTMxNTQyMTA5NjUyNDk5ODEwNDIyNzczOTQ5NjE2NjQzMzE5MTU2Mzc3NzMzNjAxNzQ5ODU1OTgzNzk3NDY0Njk1MTI3MTQ5NDk4NDIzMTg4MTg1ODgyMTI3Mzg0MzE3NzgwMDI3MDA2NDUzODIxMTk4NzYxNTc2Mzc4NDY1NTY4MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIl1zI29iWXlqZGgoKT5AUVgxcS0heTxWUUZAKWU9KT1CJSlcXHI3JnBrdXokKWYmKVw8Z0x4UGMiPkxrOydcUnhBLyIpKlxfJzRAYUoi Timing comparison t1:=time(Determinant(A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS4yMzBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJUk3ISIkNyNGZXI= t2:=time(lbDeterminant(A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA0N0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjWiEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4xNjdGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJG4iISIkNyNGZXI= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USw3LjM2NTI2OTQ2MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIraCVwX08oISIq B:=Matrix(200,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= t1:=time(Determinant(B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEnMTMuMTQ2RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjdDFHRigkIiZZSiIhIiQ3I0Zlcg== t2:=time(lbDeterminant(B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjE3NEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkdSIhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC45MTJGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJDcqISIkNyNGZXI= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxNC40MTQ0NzM2OEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrb3RXVDkhIik=
<Text-field style="Heading 3" layout="Heading 3">Rank</Text-field> n:=100;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQxMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4xMDB+eH4xMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple rank Rank(A); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQxMDBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKyI= LinBox rank lbRank(A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjVCEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQxMDBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKyI= Timing comparison t1:=time(Rank(A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS4xMjdGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJUY2ISIkNyNGZXI= t2:=time(lbRank(A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAzNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjTyEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4wNDFGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiI1QhIiQ3I0Zlcg== t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwyNy40ODc4MDQ4OEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKVsheVtGISIp B:=Matrix(200,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= t1:=time(Rank(B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEnMTIuMzEzRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjdDFHRigkIiY4QiIhIiQ3I0Zlcg== t2:time(lbRank(B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI1N0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkZCMhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjMwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkKyQhIiQ= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwzMDAuMzE3MDczMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrSzI8LkkhIig=
<Text-field style="Heading 3" layout="Heading 3">Minimal Polynomial</Text-field> n:=20;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMyMEYoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JIm5HRigiIz83I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRKn4yMH54fjIwfkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnTWF0cml4RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn Maple minimal polynomial MinimalPolynomial(A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNkwtSSNtb0dGJTYzUSomdW1pbnVzMDtGKC8lJWZvcm1HUSdwcmVmaXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdGNS8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjUvJSpzeW1tZXRyaWNHRjUvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y1LyUubW92YWJsZWxpbWl0c0dGNS8lJ2FjY2VudEdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUlc2l6ZUdRIzEyRigvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLUkjbW5HRiU2OVE1NjMzODM2NTYzNDU2OTYzNDM4OTBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUi8lJWJvbGRHRjUvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHRlUvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHRk8vJSptYXRoY29sb3JHRlUvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRmluLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZSLUYtNjNRIitGKC9GMVEmaW5maXhGKEYzRjYvRjlRMG1lZGl1bW1hdGhzcGFjZUYoL0Y8RlxyRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVi1GJDYlLUZaNjlRNTE5Njk2MzM1NDY5NjkwNTY0MDE4RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHEtRi02M1ExJkludmlzaWJsZVRpbWVzO0YoRmlxRjNGNkY4RjtGPUY/RkFGREZHRklGS0ZNRlBGU0ZWLUkjbWlHRiU2OVEieEYoRmduRmpuRlxvL0Zfb0ZgcEZgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcS9GYnFRJ2l0YWxpY0YoRmRxLUYtNjNRKCZtaW51cztGKEZpcUYzRjZGW3JGXXJGPUY/RkFGREZHRklGS0ZNRlBGU0ZWLUYkNiUtRlo2OVE0MjExNDA1NDUwMTY0MDEyNTI4NUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUklbXN1cEdGJTYlRmZyLUZaNjlRIjJGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRihGZnEtRiQ2JS1GWjY5UTQyMTYxNTA3NDIyMjQyNzg2NTEwRihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGY3ItRmZzNiVGZnItRlo2OVEiM0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEyNDYxNTM1MTU5NzY5NTEyOTNGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI0RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UTIyOTA3MzI4MTc3OTgxNDkyNkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIjVGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRMTIyODIxNjMyNDE3ODIxMTFGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI2RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UTAzNTY0ODY3ODU2NjE4NzlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI3RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGXXMtRiQ2JS1GWjY5US8zOTg0MjM4MjIwOTk0NkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIjhGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRLjY5NDg2MjQ5OTQ0MzlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI5RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5US0xMzk1ODE2MDA1MjJGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxMEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEsMzE2Mjg5OTE3OTVGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxMUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVErNDg5NTg1Nzc3OEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzEyRihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5USoxNjQwOTU3MjRGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxM0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEpMzk5NDg1MTlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxNEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEoNDgxNjE0M0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzE1RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UScyMjkxNTlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxNkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEmMjM1MzNGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxN0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEkMTc3RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGY3ItRmZzNiVGZnItRlo2OVEjMThGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRJDEwMUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzE5RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2Iy1GZnM2JUZmci1GWjY5USMyMEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0NyMsTCI1ISpRTSdwWGpsJFFqISIiKiYiNT1TYyFwcGFMJ3A+IiIiSSJ4R0YoRmVfbEZlX2wqJiI0JkdELGssWDA5QEZlX2wpRmZfbCIiI0ZlX2xGYl9sKiYiNDVseVVBVTI6OyNGZV9sKUZmX2wiIiRGZV9sRmVfbComIjIkSF5wKGZeYGglRmVfbClGZl9sIiIlRmVfbEZiX2wqJiIyRVwiKXo8R3QhSEZlX2wpRmZfbCIiJkZlX2xGZV9sKiYiMTZAeVRLOyNHI0ZlX2wpRmZfbCIiJ0ZlX2xGYl9sKiYiMHo9bSZ5J1tjJEZlX2wpRmZfbCIiKEZlX2xGZV9sKiYiL1kqNEFRVSlSRmVfbClGZl9sIiIpRmVfbEZiX2wqJiIuUlcqXGlbcEZlX2wpRmZfbCIiKkZlX2xGYl9sKiYiLUEwZyJlUiJGZV9sKUZmX2wiIzVGZV9sRmVfbComIiwmeiIqKkc7JEZlX2wpRmZfbCIjNkZlX2xGZV9sKiYiK3l4JmUqW0ZlX2wpRmZfbCIjN0ZlX2xGZV9sKiYiKkNkNGsiRmVfbClGZl9sIiM4RmVfbEZlX2wqJiIpPiZbKlJGZV9sKUZmX2wiIzlGZV9sRmJfbComIihWaCJbRmVfbClGZl9sIiM6RmVfbEZiX2wqJiInZiJII0ZlX2wpRmZfbCIjO0ZlX2xGZV9sKiYiJkxOI0ZlX2wpRmZfbCIjPEZlX2xGZV9sKiYiJHgiRmVfbClGZl9sIiM9RmVfbEZlX2wqJiIkLCJGZV9sKUZmX2wiIz5GZV9sRmJfbCokKUZmX2wiIz9GZV9sRmVfbA== LinBox minimal polynomial lbMinpoly(A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiIiEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNkwtSSNtb0dGJTYzUSomdW1pbnVzMDtGKC8lJWZvcm1HUSdwcmVmaXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdGNS8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjUvJSpzeW1tZXRyaWNHRjUvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y1LyUubW92YWJsZWxpbWl0c0dGNS8lJ2FjY2VudEdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUlc2l6ZUdRIzEyRigvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLUkjbW5HRiU2OVE1NjMzODM2NTYzNDU2OTYzNDM4OTBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUi8lJWJvbGRHRjUvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHRlUvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHRk8vJSptYXRoY29sb3JHRlUvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRmluLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZSLUYtNjNRIitGKC9GMVEmaW5maXhGKEYzRjYvRjlRMG1lZGl1bW1hdGhzcGFjZUYoL0Y8RlxyRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVi1GJDYlLUZaNjlRNTE5Njk2MzM1NDY5NjkwNTY0MDE4RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHEtRi02M1ExJkludmlzaWJsZVRpbWVzO0YoRmlxRjNGNkY4RjtGPUY/RkFGREZHRklGS0ZNRlBGU0ZWLUkjbWlHRiU2OVEieEYoRmduRmpuRlxvL0Zfb0ZgcEZgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcS9GYnFRJ2l0YWxpY0YoRmRxLUYtNjNRKCZtaW51cztGKEZpcUYzRjZGW3JGXXJGPUY/RkFGREZHRklGS0ZNRlBGU0ZWLUYkNiUtRlo2OVE0MjExNDA1NDUwMTY0MDEyNTI4NUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUklbXN1cEdGJTYlRmZyLUZaNjlRIjJGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRihGZnEtRiQ2JS1GWjY5UTQyMTYxNTA3NDIyMjQyNzg2NTEwRihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGY3ItRmZzNiVGZnItRlo2OVEiM0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEyNDYxNTM1MTU5NzY5NTEyOTNGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI0RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UTIyOTA3MzI4MTc3OTgxNDkyNkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIjVGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRMTIyODIxNjMyNDE3ODIxMTFGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI2RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UTAzNTY0ODY3ODU2NjE4NzlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI3RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGXXMtRiQ2JS1GWjY5US8zOTg0MjM4MjIwOTk0NkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIjhGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRLjY5NDg2MjQ5OTQ0MzlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USI5RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5US0xMzk1ODE2MDA1MjJGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxMEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEsMzE2Mjg5OTE3OTVGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxMUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVErNDg5NTg1Nzc3OEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzEyRihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5USoxNjQwOTU3MjRGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxM0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEpMzk5NDg1MTlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxNEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0Rl1zLUYkNiUtRlo2OVEoNDgxNjE0M0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzE1RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2JS1GWjY5UScyMjkxNTlGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxNkYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEmMjM1MzNGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZjci1GZnM2JUZmci1GWjY5USMxN0YoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0RmZxLUYkNiUtRlo2OVEkMTc3RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGY3ItRmZzNiVGZnItRlo2OVEjMThGKEZnbkZqbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZkcUZbdEZdcy1GJDYlLUZaNjlRJDEwMUYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRmNyLUZmczYlRmZyLUZaNjlRIzE5RihGZ25Gam5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGZHFGW3RGZnEtRiQ2Iy1GZnM2JUZmci1GWjY5USMyMEYoRmduRmpuRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmRxRlt0NyMsTCI1ISpRTSdwWGpsJFFqISIiKiYiNT1TYyFwcGFMJ3A+IiIiSSJ4R0YoRmVfbEZlX2wqJiI0JkdELGssWDA5QEZlX2wpRmZfbCIiI0ZlX2xGYl9sKiYiNDVseVVBVTI6OyNGZV9sKUZmX2wiIiRGZV9sRmVfbComIjIkSF5wKGZeYGglRmVfbClGZl9sIiIlRmVfbEZiX2wqJiIyRVwiKXo8R3QhSEZlX2wpRmZfbCIiJkZlX2xGZV9sKiYiMTZAeVRLOyNHI0ZlX2wpRmZfbCIiJ0ZlX2xGYl9sKiYiMHo9bSZ5J1tjJEZlX2wpRmZfbCIiKEZlX2xGZV9sKiYiL1kqNEFRVSlSRmVfbClGZl9sIiIpRmVfbEZiX2wqJiIuUlcqXGlbcEZlX2wpRmZfbCIiKkZlX2xGYl9sKiYiLUEwZyJlUiJGZV9sKUZmX2wiIzVGZV9sRmVfbComIiwmeiIqKkc7JEZlX2wpRmZfbCIjNkZlX2xGZV9sKiYiK3l4JmUqW0ZlX2wpRmZfbCIjN0ZlX2xGZV9sKiYiKkNkNGsiRmVfbClGZl9sIiM4RmVfbEZlX2wqJiIpPiZbKlJGZV9sKUZmX2wiIzlGZV9sRmJfbComIihWaCJbRmVfbClGZl9sIiM6RmVfbEZiX2wqJiInZiJII0ZlX2wpRmZfbCIjO0ZlX2xGZV9sKiYiJkxOI0ZlX2wpRmZfbCIjPEZlX2xGZV9sKiYiJHgiRmVfbClGZl9sIiM9RmVfbEZlX2wqJiIkLCJGZV9sKUZmX2wiIz5GZV9sRmJfbCokKUZmX2wiIz9GZV9sRmVfbA== Timing comparison t1:=time(MinimalPolynomial(A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS45MjZGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJUU+ISIkNyNGZXI= t2:time(lbMinpoly(A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwNEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiJSEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjAwN0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIiKCEiJA== t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USw0Ni45NzU2MDk3NkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrdzRjKHAlISIp
<Text-field style="Heading 3" layout="Heading 3">Characteristic Polynomial</Text-field> n:=20;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMyMEYoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JIm5HRigiIz83I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRKn4yMH54fjIwfkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnTWF0cml4RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn Maple characteristic polynomial CharacteristicPolynomial(A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNkstRiQ2Iy1JJW1zdXBHRiU2JS1JI21pR0YlNjlRInhGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGPS8lKnN1YnNjcmlwdEdGPS8lLHN1cGVyc2NyaXB0R0Y9LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGPS8lK2V4ZWN1dGFibGVHRj0vJSlyZWFkb25seUdGQC8lKWNvbXBvc2VkR0Y9LyUqY29udmVydGVkR0Y9LyUraW1zZWxlY3RlZEdGPS8lLHBsYWNlaG9sZGVyR0Y9LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkkvJS9tYXRoYmFja2dyb3VuZEdGTC8lK2ZvbnRmYW1pbHlHRjcvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjotSSNtbkdGJTY5USMyMEYoRjVGOEY7L0Y/Rj1GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG8vRl9vUSdub3JtYWxGKEZhby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtSSNtb0dGJTYzUSgmbWludXM7RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y9LyUqc2VwYXJhdG9yR0Y9LyUnbHNwYWNlR1EwbWVkaXVtbWF0aHNwYWNlRigvJSdyc3BhY2VHRmpwLyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lMGZvbnRfc3R5bGVfbmFtZUdGZ24vJSVzaXplR0Y6LyUrZm9yZWdyb3VuZEdGSS8lK2JhY2tncm91bmRHRkwtRiQ2JS1GZG82OVEjOTNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhby1GXnA2M1ExJkludmlzaWJsZVRpbWVzO0YoRmFwRmRwRmZwL0ZpcFEkMGVtRigvRlxxRl5zRl1xRl9xRmFxRmRxRmdxRmlxRltyRl1yRl9yRmFyRmNyLUYvNiVGMS1GZG82OVEjMTlGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5USQyODFGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIzE4RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam8tRl5wNjNRIitGKEZhcEZkcEZmcEZocEZbcUZdcUZfcUZhcUZkcUZncUZpcUZbckZdckZfckZhckZjci1GJDYlLUZkbzY5USU4NzkwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxN0YoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRJzMyODM0NUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTZGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5USgyMjA0NTUzRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxNUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl90LUYkNiUtRmRvNjlRKTMxNTkzMDI4RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxNEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRKjcxMzQ3MDMyMkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5USs0NTc5NDc5OTcyRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxMkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl90LUYkNiUtRmRvNjlRLDU1NjA1OTQ2NDcwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxMUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRLTYyNzE1NTAxODUxNkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTBGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5US4yMDM2NTk5MjU2MzYwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USI5RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GX3QtRiQ2JS1GZG82OVEvNDI3ODg0MDEyODQ2MTVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjhGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTA0NTQ5OTA2MDE4MTc5ODlGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjdGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTEyMDA5MDE1MTUwMTk1NzE5RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USI2RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GX3QtRiQ2JS1GZG82OVEyNDEzNTkxOTI0MzU4OTg0MjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5UTIyODc5MDg0NDMyNzA2NDIzOUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEiNEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRNDE3NjgxNzQ3NTU4MDU1MDE2MDhGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTQzOTQyNDY2MjUxMzI0MTkyODM3RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USIyRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GXXAtRiQ2JS1GZG82OVE1MTM4MDkxOTE3MDcyMzE0MjAyMTJGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0ZqckYxRl90LUZkbzY5UTUyODc2ODgyMDg3NjQ1NTAzMDAwOEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvNyMsTCokKUkieEdGKCIjPyIiIkZgX2wqJiIjJCpGYF9sKUZeX2wiIz5GYF9sISIiKiYiJCJHRmBfbClGXl9sIiM9RmBfbEZlX2wqJiIlIXopRmBfbClGXl9sIiM8RmBfbEZgX2wqJiInWCRHJEZgX2wpRl5fbCIjO0ZgX2xGZV9sKiYiKGBYPyNGYF9sKUZeX2wiIzpGYF9sRmBfbComIilHSWZKRmBfbClGXl9sIiM5RmBfbEZgX2wqJiIqQS5aOChGYF9sKUZeX2wiIzhGYF9sRmVfbComIitzKnolelhGYF9sKUZeX2wiIzdGYF9sRmBfbComIixxayVmZ2JGYF9sKUZeX2wiIzZGYF9sRmBfbComIi07Jj1dOkYnRmBfbClGXl9sIiM1RmBfbEZlX2wqJiIuZ2pEKmZPP0ZgX2wpRl5fbCIiKkZgX2xGYF9sKiYiLzpZRywlKXlVRmBfbClGXl9sIiIpRmBfbEZgX2wqJiIwKil6Ij1nISpcWEZgX2wpRl5fbCIiKEZgX2xGZV9sKiYiMT5kPl1eLDQ/RmBfbClGXl9sIiInRmBfbEZlX2wqJiIyRCUpKmVWIz5mOCVGYF9sKUZeX2wiIiZGYF9sRmBfbComIjJSVTFGViUzekdGYF9sKUZeX2wiIiVGYF9sRmBfbComIjQzO10wZXZ1Im88RmBfbClGXl9sIiIkRmBfbEZlX2wqJiI0UEc+QzhEbUMlUkZgX2wpRl5fbCIiI0ZgX2xGZV9sKiYiNTctVUpzcSI+NFEiRmBfbEZeX2xGYF9sRmVfbCI1MysuYmsoMyMpbyhHRmBfbA== LinBox characteristic polynomial lbCharpoly(A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiIyEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNkstRiQ2Iy1JJW1zdXBHRiU2JS1JI21pR0YlNjlRInhGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGPS8lKnN1YnNjcmlwdEdGPS8lLHN1cGVyc2NyaXB0R0Y9LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGPS8lK2V4ZWN1dGFibGVHRj0vJSlyZWFkb25seUdGQC8lKWNvbXBvc2VkR0Y9LyUqY29udmVydGVkR0Y9LyUraW1zZWxlY3RlZEdGPS8lLHBsYWNlaG9sZGVyR0Y9LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkkvJS9tYXRoYmFja2dyb3VuZEdGTC8lK2ZvbnRmYW1pbHlHRjcvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjotSSNtbkdGJTY5USMyMEYoRjVGOEY7L0Y/Rj1GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG8vRl9vUSdub3JtYWxGKEZhby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtSSNtb0dGJTYzUSgmbWludXM7RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y9LyUqc2VwYXJhdG9yR0Y9LyUnbHNwYWNlR1EwbWVkaXVtbWF0aHNwYWNlRigvJSdyc3BhY2VHRmpwLyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lMGZvbnRfc3R5bGVfbmFtZUdGZ24vJSVzaXplR0Y6LyUrZm9yZWdyb3VuZEdGSS8lK2JhY2tncm91bmRHRkwtRiQ2JS1GZG82OVEjOTNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhby1GXnA2M1ExJkludmlzaWJsZVRpbWVzO0YoRmFwRmRwRmZwL0ZpcFEkMGVtRigvRlxxRl5zRl1xRl9xRmFxRmRxRmdxRmlxRltyRl1yRl9yRmFyRmNyLUYvNiVGMS1GZG82OVEjMTlGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5USQyODFGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIzE4RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam8tRl5wNjNRIitGKEZhcEZkcEZmcEZocEZbcUZdcUZfcUZhcUZkcUZncUZpcUZbckZdckZfckZhckZjci1GJDYlLUZkbzY5USU4NzkwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxN0YoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRJzMyODM0NUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTZGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5USgyMjA0NTUzRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxNUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl90LUYkNiUtRmRvNjlRKTMxNTkzMDI4RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxNEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRKjcxMzQ3MDMyMkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5USs0NTc5NDc5OTcyRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxMkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl90LUYkNiUtRmRvNjlRLDU1NjA1OTQ2NDcwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USMxMUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRLTYyNzE1NTAxODUxNkYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEjMTBGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5US4yMDM2NTk5MjU2MzYwRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USI5RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GX3QtRiQ2JS1GZG82OVEvNDI3ODg0MDEyODQ2MTVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjhGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTA0NTQ5OTA2MDE4MTc5ODlGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjdGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTEyMDA5MDE1MTUwMTk1NzE5RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USI2RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GX3QtRiQ2JS1GZG82OVEyNDEzNTkxOTI0MzU4OTg0MjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZfdC1GJDYlLUZkbzY5UTIyODc5MDg0NDMyNzA2NDIzOUYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpyLUYvNiVGMS1GZG82OVEiNEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvRmpvRl1wLUYkNiUtRmRvNjlRNDE3NjgxNzQ3NTU4MDU1MDE2MDhGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqci1GLzYlRjEtRmRvNjlRIjNGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqb0ZdcC1GJDYlLUZkbzY5UTQzOTQyNDY2MjUxMzI0MTkyODM3RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9GanItRi82JUYxLUZkbzY5USIyRihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW9Gam9GXXAtRiQ2JS1GZG82OVE1MTM4MDkxOTE3MDcyMzE0MjAyMTJGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0ZqckYxRl90LUZkbzY5UTUyODc2ODgyMDg3NjQ1NTAzMDAwOEYoRjVGOEY7RmdvRkFGQ0ZFRkdGSkZNRk9GUUZTRlVGV0ZZRmVuRmhuRmpuRlxvRmhvRmFvNyMsTCokKUkieEdGKCIjPyIiIkZgX2wqJiIjJCpGYF9sKUZeX2wiIz5GYF9sISIiKiYiJCJHRmBfbClGXl9sIiM9RmBfbEZlX2wqJiIlIXopRmBfbClGXl9sIiM8RmBfbEZgX2wqJiInWCRHJEZgX2wpRl5fbCIjO0ZgX2xGZV9sKiYiKGBYPyNGYF9sKUZeX2wiIzpGYF9sRmBfbComIilHSWZKRmBfbClGXl9sIiM5RmBfbEZgX2wqJiIqQS5aOChGYF9sKUZeX2wiIzhGYF9sRmVfbComIitzKnolelhGYF9sKUZeX2wiIzdGYF9sRmBfbComIixxayVmZ2JGYF9sKUZeX2wiIzZGYF9sRmBfbComIi07Jj1dOkYnRmBfbClGXl9sIiM1RmBfbEZlX2wqJiIuZ2pEKmZPP0ZgX2wpRl5fbCIiKkZgX2xGYF9sKiYiLzpZRywlKXlVRmBfbClGXl9sIiIpRmBfbEZgX2wqJiIwKil6Ij1nISpcWEZgX2wpRl5fbCIiKEZgX2xGZV9sKiYiMT5kPl1eLDQ/RmBfbClGXl9sIiInRmBfbEZlX2wqJiIyRCUpKmVWIz5mOCVGYF9sKUZeX2wiIiZGYF9sRmBfbComIjJSVTFGViUzekdGYF9sKUZeX2wiIiVGYF9sRmBfbComIjQzO10wZXZ1Im88RmBfbClGXl9sIiIkRmBfbEZlX2wqJiI0UEc+QzhEbUMlUkZgX2wpRl5fbCIiI0ZgX2xGZV9sKiYiNTctVUpzcSI+NFEiRmBfbEZeX2xGYF9sRmVfbCI1MysuYmsoMyMpbyhHRmBfbA== Timing comparison t1:=time(CharacteristicPolynomial(A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4xMDJGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJC0iISIkNyNGZXI= t2:=time(lbCharpoly(A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiIiEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4wMDZGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiIichIiQ3I0Zlcg== t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxNy4wMDAwMDAwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKysrKzwhIik= B:=Matrix(50,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRKn41MH54fjUwfkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnTWF0cml4RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn CharacteristicPolynomial(B,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNmJxLUkjbW9HRiU2M1EqJnVtaW51czA7RigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJmZhbHNlRigvJSpzZXBhcmF0b3JHRjUvJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGOi8lKXN0cmV0Y2h5R0Y1LyUqc3ltbWV0cmljR0Y1LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGNS8lLm1vdmFibGVsaW1pdHNHRjUvJSdhY2NlbnRHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lJXNpemVHUSMxMkYoLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC1GJDYlLUkjbW5HRiU2OVFlbjI0NjUwODEyMzA2NjEwMDk4NzYyOTQ3NjQxODMzNTY0MjA0MjI5MTIwOTQ5OTAzNTkxNDkzMDc3NDRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUi8lJWJvbGRHRjUvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHRlUvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHRk8vJSptYXRoY29sb3JHRlUvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRltvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZSLUYtNjNRMSZJbnZpc2libGVUaW1lcztGKC9GMVEmaW5maXhGKEYzRjZGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZQRlNGVi1JI21pR0YlNjlRInhGKEZpbkZcb0Zeby9GYW9GYnBGYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXEvRmRxUSdpdGFsaWNGKEZmcS1GLTYzUSIrRihGW3JGM0Y2L0Y5UTBtZWRpdW1tYXRoc3BhY2VGKC9GPEZockY9Rj9GQUZERkdGSUZLRk1GUEZTRlYtRiQ2Iy1JJW1zdXBHRiU2JUZdci1GZm42OVEjNTBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRi02M1EoJm1pbnVzO0YoRltyRjNGNkZnckZpckY9Rj9GQUZERkdGSUZLRk1GUEZTRlYtRiQ2JS1GZm42OVEkMjY2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVElNDAyMUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0OEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRJjI4MDA5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRmZuNjlRZW4zOTU4NjI4NTQzNTY2Mzk0NDMzODA1NjI1NjM0OTE3NDU2NjM5MTM4ODU2MzA2MTc2MzM5MjU0OTQ0RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGZHItRiQ2JS1GZm42OVEnODQ3NzgzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVEpMzk0NjY5NTNGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjNDVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5USo1MzUxMDg3NThGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjNDRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5USs4NDU2OTUzNTU2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVEtMjQ5MjA4MTk1MzQ4RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVEuMjIwNDUxMjU3MjI2N0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0MUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRMDI0NTEyNDY2NTY2OTAyNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0MEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRMTMwNzY4NDk2MDkwNTA5MjZGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMzlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UTIyNTg1NzQ0MzAwNjY0ODE0MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRMzIwNDg5NDIzNzg1NDU4OTIwOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRNTM3MDQ5OTEwNDIyOTYwNDIwOTMyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzM2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVE2MjA0MDc5Nzg5NzI2MDQ3NTg5NjM4RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzM1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVE3MzQ1MjcyMTM5NjM5NDMyNTIyMjUxOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRODk0Mzg3NTE1MzY0NTQzMDY0MjA3NTk1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzMzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVE5ODAxOTkyOTAwODk4MzY0MDg5MjcxMDYwRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzMyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVE7MTI4MjA5OTc2ODc4MjM3NTA2NDg2MzEyNzRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMzFGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UTsxNzYyNzQyNTk3OTExMzgxODQwMTc5OTQ0NkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRPTk5ODEwNjY1NzIxMjM2NDgyMzU1MTAyNDcxNzVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMjlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UT4zMjM2NDcwMTc4MzQ0NTc1NTUyMTk4Njg0ODM0N0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRPzcwMjA4OTc4Mzk5MTA2Nzg5NjIxNTk3NTU1MDM1OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRQTEyMjA0ODczNjYwMjk3MTgzMTAwMjQ0MzI0Mzg0NzE3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzI2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFCNTAwMDk5MzQ2MjQ0MjYzNjg5Mzc1MDM0MzUwNjk4MjkzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzI1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFDNjEwOTExODkwMjI2NjY2MDc4MDMyODk2MjAxNjM4MDI1MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRRTI4NDIxNjQ0NjkwMTk3ODY4MjQwNTEyNzI5ODA3MTU0Njc1OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyM0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRRjEwMzUxNjcwMzI5OTQ0NjA0NjUwMTM5ODY2NTM4NzY1ODE1MzlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMjJGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UUczMzAyMzMyNzc3NTk4ODcxMDM5NDQ0NzQ0MjEyNjc2MTIwMTA3OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyMUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRSDEwMDQ4NDAzNzA1MTM2NjYzNTA3MzYwODE1MDgxNDA2MzIzMjY3MEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRSTg4NjUyNTMzOTc3OTQ0NDg3MjI5NDg0MzkxNTcxNzY2NTkyMTgxNzJGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UUoyMDAyODA4ODI2NzcwODc0NzQ3Njk2NDkzOTkzNDIxOTYzMzcxNjk0MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRSzQ1MDUzNjgwOTUyMzA4NzkyOTQ3ODU4MDAyMzk1OTc1MDk3NDI0NDczN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRTTE0MzkwMTk5MzAxNTgxNzIyNDg2NDI3MTE0Mzk5NzAyODk1MDc1NTE1Njc2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzE2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFNNzEyODMwODY1MTgxNjYyNjY3NTIxNTk3Mzk2MTcwMzIwOTUwMzUxMDQ2MzFGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UU4zMzg0NDgzNDI5ODMxMjg2OTA0NzIxNzkxNTg0NTc1ODI4ODI5NjU3NDUxNDhGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UVAxMTY4Mzk1NzU5MTQwOTg4NDE5OTk5ODcyNjUyNTYzNzYxOTU2MzQ4MDI1NzEzNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxM0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRUDExMTAxNzQwMDU3NzQ3MTA0ODAyMTA4MDIxMjU3OTE4MjE2MzA3OTQ3ODk4NjY1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzEyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFRNzU3NzU0NTAxMDEzNzI4Njc0MjY5NjQ2NTUzNTEzMjU5NjA1NzIyODQ4MTc5OTU2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzExRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFSNTkzMzg4ODYxNTYyMzE2MTI5MDk4Mjk2MjU4ODAzODEzMDEzMDYzNTEzOTcwMzcwMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRUzQ0MjAwMzk4MDUxODA3NTM4NzMxNDM0NTE1MTYyNTY4ODQ1MzEzODI2MjQxNjAyOTQ0RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIjlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UVQyMzAyMTA3NDY3MDI0NDY4ODEwOTg0OTI1MTQ1MDI2Mzg5Njk4Nzc3MTg3NDYzMTcwNjBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRVDgzNDIzNDUzNjk1NTU3MzI2MzQzODI1NzA1NTk2NjI5OTk4NTYzNjQ4MTg5MDM5NzEwN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USI3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFWNjgwNzc4MjQ1NDc4NzE5MzQ2ODAxMzIxNDg1MzIwNDIyMzYxNjAxMDYwMDMzNTgyNjE2MjBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiNkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRVzQyOTUwMTEwODk3NDUwMjg1MzczNTQzOTU4NTIxNDUwODM4OTcyMTYxNjU5NzYxNTg2OTU3NUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USI1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFXMTY3NDkxMjI5NDE1MzY1NzUzMTc5MDg5MTYwMzE4MjAxOTM1Mjg2MjU5NDcwMDY3MTk5NDM5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIjRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UVk2MDIyOTQ5MTYzNjY0MDgwOTYzODEzNTY4NTU4NDAwMjY1MTAyNDQ3MjQ0NTc1NDg1MjgzMDUyN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USIzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFZODY5OTY4NzA4MDkwNDgxNTE3MTE5MjM3NDc2NjkwMDk4NzQ2MTAzMTY0MzUyMjAxNTA1OTQ4NTRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiMkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzNyMsYnEqJiJlbld4SVwiZi4qXDQ3SFU/a04kPWtaSHcpNDVtSTczbEMiIiJJInhHRihGX2JtISIiKiQpRmBibSIjXUZfYm1GX2JtKiYiJG0jRl9ibSlGYGJtIiNcRl9ibUZhYm0qJiIlQFNGX2JtKUZgYm0iI1tGX2JtRl9ibSomIiY0IUdGX2JtKUZgYm0iI1pGX2JtRl9ibSJlbldcRFJqPDFqJilRIlJtWDxcakRjIVFWJVJtTmFHJ2VSRl9ibSomIickeVopRl9ibSlGYGJtIiNZRl9ibUZfYm0qJiIpYHBZUkZfYm0pRmBibSIjWEZfYm1GYWJtKiYiKmUoM15gRl9ibSlGYGJtIiNXRl9ibUZfYm0qJiIrY04mcFgpRl9ibSlGYGJtIiNWRl9ibUZfYm0qJiItW2A+MyNcI0ZfYm0pRmBibSIjVUZfYm1GX2JtKiYiLm5BZDdYPyNGX2JtKUZgYm0iI1RGX2JtRmFibSomIjBDIXBjbUNeQ0ZfYm0pRmBibSIjU0ZfYm1GYWJtKiYiMUU0MDQnXG8yJEZfYm0pRmBibSIjUkZfYm1GX2JtKiYiMlUiW20rVnUmZSNGX2JtKUZgYm0iI1FGX2JtRl9ibSomIjMzIyplYXlCJSpbP0ZfYm0pRmBibSIjUEZfYm1GYWJtKiYiNUs0VWdIVTUqXHEkRl9ibSlGYGJtIiNPRl9ibUZhYm0qJiI2UScqZVpncyp5elM/Rl9ibSlGYGJtIiNORl9ibUZfYm0qJiI3PURBRFZSJ1JARlgkRl9ibSlGYGJtIiNNRl9ibUZfYm0qJiI4JmYyVTFWWE86dlElKkZfYm0pRmBibSIjTEZfYm1GYWJtKiYiOWc1RiozayQpKjMhSCo+ISlGX2JtKUZgYm0iI0tGX2JtRmFibSomIjt1N2pbMXZCeW8oKjQjRyJGX2JtKUZgYm0iI0pGX2JtRmFibSomIjtZJSp6LCU9UTZ6ZlVGdyJGX2JtKUZgYm0iI0lGX2JtRmFibSomIj12ckM1YkJbTzdzbDEiKSoqRl9ibSlGYGJtIiNIRl9ibUZhYm0qJiI+WiRbbyk+X2JkVyR5LFpPS0ZfYm0pRmBibSIjR0ZfYm1GX2JtKiYiP2YuYnZmQCcqeTEiKlJ5KjMtKEZfYm0pRmBibSIjRkZfYm1GX2JtKiYiQTxaUUNWQytKPShIZ08oWz83Rl9ibSlGYGJtIiNFRl9ibUZfYm0qJiJCJEgpcF1WLnYkKm9qVUNZJCo0KyZGX2JtKUZgYm0iI0RGX2JtRl9ibSomIkNfLVE7PycqRy55Z21FLSo9IjRoRl9ibSlGYGJtIiNDRl9ibUZfYm0qJiJFZm5hciEpSEZeUyNveT4hcFc7VUdGX2JtKUZgYm0iI0JGX2JtRmFibSomIkZSOmV3UWwnKVIsbC9ZJSpILm5eLiJGX2JtKUZgYm0iI0FGX2JtRmFibSomIkd6NT9objdVdVclUjUoKSlmeEZMLUxGX2JtKUZgYm0iI0BGX2JtRl9ibSomIkhxRUJqUyIzOjNPMk5tT15xLiVbKyJGX2JtKUZgYm0iIz9GX2JtRmFibSomIklzIj0jZm08ZCJSJVtIc1tXeihSYF8nKSlGX2JtKUZgYm0iIz5GX2JtRmFibSomIkpVcHJMJz5VJCpSXCdwWlooM3hFKTNHKyNGX2JtKUZgYm0iIz1GX2JtRl9ibSomIktQWkN1NHZmUi0hZXklSHozQiY0b2BdJUZfYm0pRmBibSIjPEZfYm1GX2JtKiYiTXdjXnZdKkdxKlI5clUnW0E8ZSwkKj4hUjlGX2JtKUZgYm0iIztGX2JtRmFibSomIk1KWTVOXTRLcWhSKGZAdm1pOz1sMyRHckZfYm0pRmBibSIjOkZfYm1GYWJtKiYiTltedWxIKUdlZCVlInpAWiFwR0opSE1bJVEkRl9ibSlGYGJtIiM5Rl9ibUZhYm0qJiJQTXJEIVtqJj53akRscykqKio+JSkpNDlmZFJvNkZfYm0pRmBibSIjOEZfYm1GYWJtKiYiUGwnKSp5JXpJOyM9ekRAITNAIVs1WngwUzw1NkZfYm0pRmBibSIjN0ZfYm1GX2JtKiYiUWMqeiJbR3MwJ2ZLXmBsa3BVbkdQLCxYdmQoRl9ibSlGYGJtIiM2Rl9ibUZhYm0qJiJSK1BxUl5qSSw4USEpZWlIKTRIaEppOicpKVEkZkZfYm0pRmBibSIjNUZfYm1GYWJtKiYiU1dIZ1RpI1FKWClvRDs6WFZKKFF2IT0wKVIrVSVGX2JtKUZgYm0iIipGX2JtRl9ibSomIlRncUpZKD14KClwKlFFXTlEXCk0IilvVy1udTUtQkZfYm0pRmBibSIiKUZfYm1GX2JtKiYiVDJyUiEqPVtPYykqKkhtZjBkI1FNRXRiJnBgTVUkKUZfYm0pRmBibSIiKEZfYm1GYWJtKiYiVj87RWVMKzEsO09BL0smW0A4IW9NPih5YUN5Mm9GX2JtKUZgYm0iIidGX2JtRmFibSomIld2JnBlaChmOztzKlEzWEAmZVJhdGBHXXUqMzZdSCVGX2JtKUZgYm0iIiZGX2JtRl9ibSomIldSJSo+bitaZmlHTj4/PS47KjN6SnZsYFRIN1xuIkZfYm0pRmBibSIiJUZfYm1GX2JtKiYiWUYwJEcmW3ZYQ1pDNWwtU2Umb04iUSc0M2tPO1xILSdGX2JtKUZgYm0iIiRGX2JtRl9ibSomIllhW2ZdLEFOa0o1WSgpNCFwd3VCPnJeIlshNDMobypwKUZfYm0pRmBibSIiI0ZfYm1GX2Jt lbCharpoly(B,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAwNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIiJyEiJA== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNmJxLUkjbW9HRiU2M1EqJnVtaW51czA7RigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJmZhbHNlRigvJSpzZXBhcmF0b3JHRjUvJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGOi8lKXN0cmV0Y2h5R0Y1LyUqc3ltbWV0cmljR0Y1LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGNS8lLm1vdmFibGVsaW1pdHNHRjUvJSdhY2NlbnRHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lJXNpemVHUSMxMkYoLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC1GJDYlLUkjbW5HRiU2OVFlbjI0NjUwODEyMzA2NjEwMDk4NzYyOTQ3NjQxODMzNTY0MjA0MjI5MTIwOTQ5OTAzNTkxNDkzMDc3NDRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUi8lJWJvbGRHRjUvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHRlUvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHRk8vJSptYXRoY29sb3JHRlUvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRltvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZSLUYtNjNRMSZJbnZpc2libGVUaW1lcztGKC9GMVEmaW5maXhGKEYzRjZGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZQRlNGVi1JI21pR0YlNjlRInhGKEZpbkZcb0Zeby9GYW9GYnBGYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXEvRmRxUSdpdGFsaWNGKEZmcS1GLTYzUSIrRihGW3JGM0Y2L0Y5UTBtZWRpdW1tYXRoc3BhY2VGKC9GPEZockY9Rj9GQUZERkdGSUZLRk1GUEZTRlYtRiQ2Iy1JJW1zdXBHRiU2JUZdci1GZm42OVEjNTBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRi02M1EoJm1pbnVzO0YoRltyRjNGNkZnckZpckY9Rj9GQUZERkdGSUZLRk1GUEZTRlYtRiQ2JS1GZm42OVEkMjY2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVElNDAyMUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0OEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRJjI4MDA5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRmZuNjlRZW4zOTU4NjI4NTQzNTY2Mzk0NDMzODA1NjI1NjM0OTE3NDU2NjM5MTM4ODU2MzA2MTc2MzM5MjU0OTQ0RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGZHItRiQ2JS1GZm42OVEnODQ3NzgzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQ2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVEpMzk0NjY5NTNGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjNDVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5USo1MzUxMDg3NThGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjNDRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5USs4NDU2OTUzNTU2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVEtMjQ5MjA4MTk1MzQ4RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzQyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVEuMjIwNDUxMjU3MjI2N0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0MUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRMDI0NTEyNDY2NTY2OTAyNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USM0MEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRMTMwNzY4NDk2MDkwNTA5MjZGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMzlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UTIyNTg1NzQ0MzAwNjY0ODE0MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRMzIwNDg5NDIzNzg1NDU4OTIwOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRNTM3MDQ5OTEwNDIyOTYwNDIwOTMyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzM2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVE2MjA0MDc5Nzg5NzI2MDQ3NTg5NjM4RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzM1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVE3MzQ1MjcyMTM5NjM5NDMyNTIyMjUxOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRODk0Mzg3NTE1MzY0NTQzMDY0MjA3NTk1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzMzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVE5ODAxOTkyOTAwODk4MzY0MDg5MjcxMDYwRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzMyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVE7MTI4MjA5OTc2ODc4MjM3NTA2NDg2MzEyNzRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMzFGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UTsxNzYyNzQyNTk3OTExMzgxODQwMTc5OTQ0NkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMzMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRPTk5ODEwNjY1NzIxMjM2NDgyMzU1MTAyNDcxNzVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMjlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UT4zMjM2NDcwMTc4MzQ0NTc1NTUyMTk4Njg0ODM0N0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRPzcwMjA4OTc4Mzk5MTA2Nzg5NjIxNTk3NTU1MDM1OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRQTEyMjA0ODczNjYwMjk3MTgzMTAwMjQ0MzI0Mzg0NzE3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzI2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFCNTAwMDk5MzQ2MjQ0MjYzNjg5Mzc1MDM0MzUwNjk4MjkzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzI1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFDNjEwOTExODkwMjI2NjY2MDc4MDMyODk2MjAxNjM4MDI1MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRRTI4NDIxNjQ0NjkwMTk3ODY4MjQwNTEyNzI5ODA3MTU0Njc1OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyM0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRRjEwMzUxNjcwMzI5OTQ0NjA0NjUwMTM5ODY2NTM4NzY1ODE1MzlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMjJGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UUczMzAyMzMyNzc3NTk4ODcxMDM5NDQ0NzQ0MjEyNjc2MTIwMTA3OUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyMUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRSDEwMDQ4NDAzNzA1MTM2NjYzNTA3MzYwODE1MDgxNDA2MzIzMjY3MEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMyMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRSTg4NjUyNTMzOTc3OTQ0NDg3MjI5NDg0MzkxNTcxNzY2NTkyMTgxNzJGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UUoyMDAyODA4ODI2NzcwODc0NzQ3Njk2NDkzOTkzNDIxOTYzMzcxNjk0MkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRSzQ1MDUzNjgwOTUyMzA4NzkyOTQ3ODU4MDAyMzk1OTc1MDk3NDI0NDczN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRTTE0MzkwMTk5MzAxNTgxNzIyNDg2NDI3MTE0Mzk5NzAyODk1MDc1NTE1Njc2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzE2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFNNzEyODMwODY1MTgxNjYyNjY3NTIxNTk3Mzk2MTcwMzIwOTUwMzUxMDQ2MzFGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTVGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UU4zMzg0NDgzNDI5ODMxMjg2OTA0NzIxNzkxNTg0NTc1ODI4ODI5NjU3NDUxNDhGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEjMTRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zlcy1GJDYlLUZmbjY5UVAxMTY4Mzk1NzU5MTQwOTg4NDE5OTk5ODcyNjUyNTYzNzYxOTU2MzQ4MDI1NzEzNEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxM0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRUDExMTAxNzQwMDU3NzQ3MTA0ODAyMTA4MDIxMjU3OTE4MjE2MzA3OTQ3ODk4NjY1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzEyRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFRNzU3NzU0NTAxMDEzNzI4Njc0MjY5NjQ2NTUzNTEzMjU5NjA1NzIyODQ4MTc5OTU2RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIzExRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFSNTkzMzg4ODYxNTYyMzE2MTI5MDk4Mjk2MjU4ODAzODEzMDEzMDYzNTEzOTcwMzcwMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USMxMEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRUzQ0MjAwMzk4MDUxODA3NTM4NzMxNDM0NTE1MTYyNTY4ODQ1MzEzODI2MjQxNjAyOTQ0RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIjlGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UVQyMzAyMTA3NDY3MDI0NDY4ODEwOTg0OTI1MTQ1MDI2Mzg5Njk4Nzc3MTg3NDYzMTcwNjBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiOEYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmVzLUYkNiUtRmZuNjlRVDgzNDIzNDUzNjk1NTU3MzI2MzQzODI1NzA1NTk2NjI5OTk4NTYzNjQ4MTg5MDM5NzEwN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USI3RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZXMtRiQ2JS1GZm42OVFWNjgwNzc4MjQ1NDc4NzE5MzQ2ODAxMzIxNDg1MzIwNDIyMzYxNjAxMDYwMDMzNTgyNjE2MjBGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiNkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzRmRyLUYkNiUtRmZuNjlRVzQyOTUwMTEwODk3NDUwMjg1MzczNTQzOTU4NTIxNDUwODM4OTcyMTYxNjU5NzYxNTg2OTU3NUYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USI1RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFXMTY3NDkxMjI5NDE1MzY1NzUzMTc5MDg5MTYwMzE4MjAxOTM1Mjg2MjU5NDcwMDY3MTk5NDM5RihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRl1zNiVGXXItRmZuNjlRIjRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZic0Zkci1GJDYlLUZmbjY5UVk2MDIyOTQ5MTYzNjY0MDgwOTYzODEzNTY4NTU4NDAwMjY1MTAyNDQ3MjQ0NTc1NDg1MjgzMDUyN0YoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZdczYlRl1yLUZmbjY5USIzRihGaW5GXG9GXm9GYG9GYm9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGYnNGZHItRiQ2JS1GZm42OVFZODY5OTY4NzA4MDkwNDgxNTE3MTE5MjM3NDc2NjkwMDk4NzQ2MTAzMTY0MzUyMjAxNTA1OTQ4NTRGKEZpbkZcb0Zeb0Zgb0Zib0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GXXM2JUZdci1GZm42OVEiMkYoRmluRlxvRl5vRmBvRmJvRmRvRmZvRmhvRmpvRlxwRl5wRmBwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmJzNyMsYnEqJiJlbld4SVwiZi4qXDQ3SFU/a04kPWtaSHcpNDVtSTczbEMiIiJJInhHRihGX2JtISIiKiQpRmBibSIjXUZfYm1GX2JtKiYiJG0jRl9ibSlGYGJtIiNcRl9ibUZhYm0qJiIlQFNGX2JtKUZgYm0iI1tGX2JtRl9ibSomIiY0IUdGX2JtKUZgYm0iI1pGX2JtRl9ibSJlbldcRFJqPDFqJilRIlJtWDxcakRjIVFWJVJtTmFHJ2VSRl9ibSomIickeVopRl9ibSlGYGJtIiNZRl9ibUZfYm0qJiIpYHBZUkZfYm0pRmBibSIjWEZfYm1GYWJtKiYiKmUoM15gRl9ibSlGYGJtIiNXRl9ibUZfYm0qJiIrY04mcFgpRl9ibSlGYGJtIiNWRl9ibUZfYm0qJiItW2A+MyNcI0ZfYm0pRmBibSIjVUZfYm1GX2JtKiYiLm5BZDdYPyNGX2JtKUZgYm0iI1RGX2JtRmFibSomIjBDIXBjbUNeQ0ZfYm0pRmBibSIjU0ZfYm1GYWJtKiYiMUU0MDQnXG8yJEZfYm0pRmBibSIjUkZfYm1GX2JtKiYiMlUiW20rVnUmZSNGX2JtKUZgYm0iI1FGX2JtRl9ibSomIjMzIyplYXlCJSpbP0ZfYm0pRmBibSIjUEZfYm1GYWJtKiYiNUs0VWdIVTUqXHEkRl9ibSlGYGJtIiNPRl9ibUZhYm0qJiI2UScqZVpncyp5elM/Rl9ibSlGYGJtIiNORl9ibUZfYm0qJiI3PURBRFZSJ1JARlgkRl9ibSlGYGJtIiNNRl9ibUZfYm0qJiI4JmYyVTFWWE86dlElKkZfYm0pRmBibSIjTEZfYm1GYWJtKiYiOWc1RiozayQpKjMhSCo+ISlGX2JtKUZgYm0iI0tGX2JtRmFibSomIjt1N2pbMXZCeW8oKjQjRyJGX2JtKUZgYm0iI0pGX2JtRmFibSomIjtZJSp6LCU9UTZ6ZlVGdyJGX2JtKUZgYm0iI0lGX2JtRmFibSomIj12ckM1YkJbTzdzbDEiKSoqRl9ibSlGYGJtIiNIRl9ibUZhYm0qJiI+WiRbbyk+X2JkVyR5LFpPS0ZfYm0pRmBibSIjR0ZfYm1GX2JtKiYiP2YuYnZmQCcqeTEiKlJ5KjMtKEZfYm0pRmBibSIjRkZfYm1GX2JtKiYiQTxaUUNWQytKPShIZ08oWz83Rl9ibSlGYGJtIiNFRl9ibUZfYm0qJiJCJEgpcF1WLnYkKm9qVUNZJCo0KyZGX2JtKUZgYm0iI0RGX2JtRl9ibSomIkNfLVE7PycqRy55Z21FLSo9IjRoRl9ibSlGYGJtIiNDRl9ibUZfYm0qJiJFZm5hciEpSEZeUyNveT4hcFc7VUdGX2JtKUZgYm0iI0JGX2JtRmFibSomIkZSOmV3UWwnKVIsbC9ZJSpILm5eLiJGX2JtKUZgYm0iI0FGX2JtRmFibSomIkd6NT9objdVdVclUjUoKSlmeEZMLUxGX2JtKUZgYm0iI0BGX2JtRl9ibSomIkhxRUJqUyIzOjNPMk5tT15xLiVbKyJGX2JtKUZgYm0iIz9GX2JtRmFibSomIklzIj0jZm08ZCJSJVtIc1tXeihSYF8nKSlGX2JtKUZgYm0iIz5GX2JtRmFibSomIkpVcHJMJz5VJCpSXCdwWlooM3hFKTNHKyNGX2JtKUZgYm0iIz1GX2JtRl9ibSomIktQWkN1NHZmUi0hZXklSHozQiY0b2BdJUZfYm0pRmBibSIjPEZfYm1GX2JtKiYiTXdjXnZdKkdxKlI5clUnW0E8ZSwkKj4hUjlGX2JtKUZgYm0iIztGX2JtRmFibSomIk1KWTVOXTRLcWhSKGZAdm1pOz1sMyRHckZfYm0pRmBibSIjOkZfYm1GYWJtKiYiTltedWxIKUdlZCVlInpAWiFwR0opSE1bJVEkRl9ibSlGYGJtIiM5Rl9ibUZhYm0qJiJQTXJEIVtqJj53akRscykqKio+JSkpNDlmZFJvNkZfYm0pRmBibSIjOEZfYm1GYWJtKiYiUGwnKSp5JXpJOyM9ekRAITNAIVs1WngwUzw1NkZfYm0pRmBibSIjN0ZfYm1GX2JtKiYiUWMqeiJbR3MwJ2ZLXmBsa3BVbkdQLCxYdmQoRl9ibSlGYGJtIiM2Rl9ibUZhYm0qJiJSK1BxUl5qSSw4USEpZWlIKTRIaEppOicpKVEkZkZfYm0pRmBibSIjNUZfYm1GYWJtKiYiU1dIZ1RpI1FKWClvRDs6WFZKKFF2IT0wKVIrVSVGX2JtKUZgYm0iIipGX2JtRl9ibSomIlRncUpZKD14KClwKlFFXTlEXCk0IilvVy1udTUtQkZfYm0pRmBibSIiKUZfYm1GX2JtKiYiVDJyUiEqPVtPYykqKkhtZjBkI1FNRXRiJnBgTVUkKUZfYm0pRmBibSIiKEZfYm1GYWJtKiYiVj87RWVMKzEsO09BL0smW0A4IW9NPih5YUN5Mm9GX2JtKUZgYm0iIidGX2JtRmFibSomIld2JnBlaChmOztzKlEzWEAmZVJhdGBHXXUqMzZdSCVGX2JtKUZgYm0iIiZGX2JtRl9ibSomIldSJSo+bitaZmlHTj4/PS47KjN6SnZsYFRIN1xuIkZfYm0pRmBibSIiJUZfYm1GX2JtKiYiWUYwJEcmW3ZYQ1pDNWwtU2Umb04iUSc0M2tPO1xILSdGX2JtKUZgYm0iIiRGX2JtRl9ibSomIllhW2ZdLEFOa0o1WSgpNCFwd3VCPnJeIlshNDMobypwKUZfYm0pRmBibSIiI0ZfYm1GX2Jt t1:=time(CharacteristicPolynomial(B,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmNC42NTlGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJWZZISIkNyNGZXI= t2:time(lbCharpoly(B,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA0N0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjWiEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjA4MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIjIykhIiQ= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USw3NzYuNTAwMDAwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKysrbHghIig=
<Text-field style="Heading 3" layout="Heading 3">Linear System Solving</Text-field> n:=200;gen:=rand(0..10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQyMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIzcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzExRihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI0RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM2IiIlRihGKEYoNyNGXXk= A:=Matrix(n,gen);b:=Vector(n,gen); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiYkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjIwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn Maple linear system solving x1:=LinearSolve(A,b, method=modular);x1[1]; LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjeDFGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USt+MX4uLn4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USdWZWN0b3JGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtRiw2OVEnY29sdW1uRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLyUscGxhY2Vob2xkZXJHRjctRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEpYW55dGhpbmdGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== NiQtSSZtZnJhY0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDYqLUkjbW5HRiU2OVFhXWwmbWludXM7NTI3NDE2MTU0NzUxOTUxMDIzMTE3MTU1OTY4NjczNTQ2NDg0MjE2MzA0MTM3MTk5MjE2OTM0MDkxODcxNTUxMTg3Mjg4MjA0MDg4NjE5MjIwNDczNjMxNDQ1NTEwOTI5ODE4MDU0NzM3MDg3Mjc4NTk3MDUzNzYxNzg3MTQ3ODU1MjQxNTM2NzU0NDYxMTE1MTE1OTgxOTMxNzM5NzU4MTk3MTkwNDYxNjAzNDAxMDA4MzEzNjI4MDkyNTQzOTg0MjY0MzY3NTEyNjA0Mzg4NDk5NDM4ODU0Mjc5MzY4NDExNDU0NzM5MTAxODA1MjYyMzgxNjI0Mjk5NDYyMTI2NzA4NjQ1MDQxMjU0NDgzNzE2MTk0MTg2NzU3NDEwNjlGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGOC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjUtRi02OVFpXGwzOTc3OTY3NDIxODI4ODU1MzcwNDAwODQ3NDkyMzA2MDk1OTYyMjczNTkwMTYwMjM2NDAyNzcwMTM4NzU4NjY0MTcyOTQyMTQzNTI2MjkxMjM4MzgzNjI3MTk5NjcxMDY3MzU3ODE2ODUyNjUyMTkzMTM5MDc0OTA1MTAyNzg2OTg0ODY0NTA2NTY0OTc3MzU2NjM3MzgzOTIyNjU3Nzk2NzMwNzY4ODExNTgwMDQ2OTMzMTg4MTQ2MjI2OTg3NTY0MzI2MDE5MDk4MjIwMjQwOTIzNDU0Mzg5NjQwMDI1NjAwNDY3MTMxOTM2NjA5NzY2MTkyNzY5MzY5MjQyMDQ5NDI3NzIyNTczODkyMDk3NDYwMTM3ODU0Njk5OTAzRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8vJS5saW5ldGhpY2tuZXNzR1EiMUYoLyUrZGVub21hbGlnbkdRJ2NlbnRlckYoLyUpbnVtYWxpZ25HRmZvLyUpYmV2ZWxsZWRHRjgvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRjcjIyFqXGxwNXV2Jz0lPjtQW2E3L1gnM243aSUqSEM7UWlfIT01UlpYNiVvJHpVJilRJSpcKVEvRV5uVkUlKVJhIzRHT0ozNVMuO1khPig+ZShSPCQ+KWY2OjZZYW5gVF8meTkoeWhQMChmeXMzUFowPSlINF5YOWp0L0E+JykzLyMpRyg9XjooPTRNcEAqPlBUSTtVW1lObm9mOjxKLV4+dmFoVEYmImlcbC4qKnBheThndTQjKlFkQXhVXD9DcCRwRj5tKDRtJD44bi9nRCtrKlFhTSM0Qz8jKTQ+Z0trdilwQVkiKT1McC8hZTYpbzJ0J3pkRSNSUVBtTnhcYzFYJ1spcHktXiFcMlJKPl9FJm8ieU5uNW4qPkZPUVE3SEVOOVVIPGsnZShRLHgta0JnLGZ0QSdmNDFCXFozU3FgJilHPVVueihS LinBox linear system solving x2:=lbSolve(A,b);x2[1]; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI2OEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkbyMhIiQ= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjeDJGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USt+MX4uLn4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USdWZWN0b3JGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtRiw2OVEnY29sdW1uRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLyUscGxhY2Vob2xkZXJHRjctRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEpYW55dGhpbmdGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== NiQtSSZtZnJhY0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDYqLUkjbW5HRiU2OVFhXWwmbWludXM7NTI3NDE2MTU0NzUxOTUxMDIzMTE3MTU1OTY4NjczNTQ2NDg0MjE2MzA0MTM3MTk5MjE2OTM0MDkxODcxNTUxMTg3Mjg4MjA0MDg4NjE5MjIwNDczNjMxNDQ1NTEwOTI5ODE4MDU0NzM3MDg3Mjc4NTk3MDUzNzYxNzg3MTQ3ODU1MjQxNTM2NzU0NDYxMTE1MTE1OTgxOTMxNzM5NzU4MTk3MTkwNDYxNjAzNDAxMDA4MzEzNjI4MDkyNTQzOTg0MjY0MzY3NTEyNjA0Mzg4NDk5NDM4ODU0Mjc5MzY4NDExNDU0NzM5MTAxODA1MjYyMzgxNjI0Mjk5NDYyMTI2NzA4NjQ1MDQxMjU0NDgzNzE2MTk0MTg2NzU3NDEwNjlGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGOC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjUtRi02OVFpXGwzOTc3OTY3NDIxODI4ODU1MzcwNDAwODQ3NDkyMzA2MDk1OTYyMjczNTkwMTYwMjM2NDAyNzcwMTM4NzU4NjY0MTcyOTQyMTQzNTI2MjkxMjM4MzgzNjI3MTk5NjcxMDY3MzU3ODE2ODUyNjUyMTkzMTM5MDc0OTA1MTAyNzg2OTg0ODY0NTA2NTY0OTc3MzU2NjM3MzgzOTIyNjU3Nzk2NzMwNzY4ODExNTgwMDQ2OTMzMTg4MTQ2MjI2OTg3NTY0MzI2MDE5MDk4MjIwMjQwOTIzNDU0Mzg5NjQwMDI1NjAwNDY3MTMxOTM2NjA5NzY2MTkyNzY5MzY5MjQyMDQ5NDI3NzIyNTczODkyMDk3NDYwMTM3ODU0Njk5OTAzRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8vJS5saW5ldGhpY2tuZXNzR1EiMUYoLyUrZGVub21hbGlnbkdRJ2NlbnRlckYoLyUpbnVtYWxpZ25HRmZvLyUpYmV2ZWxsZWRHRjgvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRjcjIyFqXGxwNXV2Jz0lPjtQW2E3L1gnM243aSUqSEM7UWlfIT01UlpYNiVvJHpVJilRJSpcKVEvRV5uVkUlKVJhIzRHT0ozNVMuO1khPig+ZShSPCQ+KWY2OjZZYW5gVF8meTkoeWhQMChmeXMzUFowPSlINF5YOWp0L0E+JykzLyMpRyg9XjooPTRNcEAqPlBUSTtVW1lObm9mOjxKLV4+dmFoVEYmImlcbC4qKnBheThndTQjKlFkQXhVXD9DcCRwRj5tKDRtJD44bi9nRCtrKlFhTSM0Qz8jKTQ+Z0trdilwQVkiKT1McC8hZTYpbzJ0J3pkRSNSUVBtTnhcYzFYJ1spcHktXiFcMlJKPl9FJm8ieU5uNW4qPkZPUVE3SEVOOVVIPGsnZShRLHgta0JnLGZ0QSdmNDFCXFozU3FgJilHPVVueihS Timing comparison t1:=time(LinearSolve(A,b,method=modular)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmNC42MTNGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJThZISIkNyNGZXI= t2:=time(lbSolve(A,b)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjE2OEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkbyIhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4zMjNGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJEIkISIkNyNGZXI= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxNC4yODE3MzM3NUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrdkw8RzkhIik= n:=300;B:=Matrix(n,gen);b1:=Vector(n,gen); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQzMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrJDcjRmVy LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4zMDB+eH4zMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjYjFGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USt+MX4uLn4zMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USdWZWN0b3JGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtRiw2OVEnY29sdW1uRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLyUscGxhY2Vob2xkZXJHRjctRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEpYW55dGhpbmdGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== t1:=time(LinearSolve(B,b1, method=modular)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEnMTQuMDEwRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjdDFHRigkIiY1UyIhIiQ3I0Zlcg== t2:time(lbSolve(B,b1)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjMxOUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkPiQhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjgwNUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkMCkhIiQ= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USw0My4zNzQ2MTMwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKzhZUFYhIik=
<Text-field style="Heading 2" layout="Heading 2">Computation over finite fields</Text-field> restart():with(LinBox):with(LinearAlgebra):
<Text-field style="Heading 3" layout="Heading 3">Determinant</Text-field> n:=1000;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USUxMDAwRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkibkdGKCIlKzU3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]);B:=Modular:-Mod(p,A, integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLn4xMDAwfnh+MTAwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRJ01hdHJpeEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSVtc3ViR0YkNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLn4xMDAwfnh+MTAwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRJ01hdHJpeEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSVtc3ViR0YkNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5UShDX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== Maple determinant Modular:-Determinant(p,B); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMxMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM3 Determinant(A,method=modular[p]); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMxMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM3 LinBox determinant lbDeterminant(p, A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjk5MEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkISoqISIk NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMxMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM3 Timing comparison t1:=time(Modular:-Determinant(p,B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMi4xMDZGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJTFAISIkNyNGZXI= t2:=time(Determinant(A,method=modular[p])); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMy4xODRGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJSU9JCEiJDcjRmVy t3:=time(lbDeterminant(p,A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYxLjA0OUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIlXDUhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0M0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS41MjBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0M0dGKCQiJT86ISIkNyNGZXI= t1/t3;t2/t3; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxLjM4NTUyNjMxNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrO2pfJlEiISIq NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwyLjA5NDczNjg0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrVW90JTQjISIq
<Text-field style="Heading 3" layout="Heading 3">Rank</Text-field> restart():with(LinBox):with(LinearAlgebra): n:=1000;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USUxMDAwRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkibkdGKCIlKzU3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]);B:=Modular:-Mod(p,A, integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLn4xMDAwfnh+MTAwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRJ01hdHJpeEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSVtc3ViR0YkNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLn4xMDAwfnh+MTAwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRJ01hdHJpeEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSVtc3ViR0YkNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5UShDX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== Maple rank Modular:-Rank(p,B); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USUxMDAwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiJSs1 LinBox rank lbRank(p, A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYxLjA2NUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIlbDUhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USUxMDAwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiJSs1 Timing comparison t1:=time(Modular:-Rank(p,B)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMS44MDhGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJTM9ISIkNyNGZXI= t2:=time(lbRank(p,A)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYxLjIzNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIlTzchIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMi4wOTNGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJSQ0IyEiJDcjRmVy t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5US0wLjg2MzgzMTgyMDRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyQiKy8jPSRRJykhIzU=
<Text-field style="Heading 3" layout="Heading 3">Minimal Polynomial</Text-field> restart():with(LinBox):with(LinearAlgebra): n:=500;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQ1MDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrJjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH41MDB+eH41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple minimal polynomial doesn't exist in Givaro::Modular Package LinBox minimal polynomial lbMinpoly(p,A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI4MEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkIUchIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNl9mbi1GJDYlLUkjbW5HRiU2OVEiNUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y6LyUqdW5kZXJsaW5lR0Y6LyUqc3Vic2NyaXB0R0Y6LyUsc3VwZXJzY3JpcHRHRjovJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRS8lL21hdGhiYWNrZ3JvdW5kR0ZILyUrZm9udGZhbWlseUdGNC8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGNy1JI21vR0YlNjNRMSZJbnZpc2libGVUaW1lcztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjovJSpzZXBhcmF0b3JHRjovJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGXXAvJSlzdHJldGNoeUdGOi8lKnN5bW1ldHJpY0dGOi8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjovJS5tb3ZhYmxlbGltaXRzR0Y6LyUnYWNjZW50R0Y6LyUwZm9udF9zdHlsZV9uYW1lR0ZaLyUlc2l6ZUdGNy8lK2ZvcmVncm91bmRHRkUvJStiYWNrZ3JvdW5kR0ZILUklbXN1cEdGJTYlLUkjbWlHRiU2OVEieEYoRjJGNUY4L0Y8Rk9GPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbi9GXG9RJ2l0YWxpY0YoRl5vLUYvNjlRJDI0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRmFvNjNRIitGKEZkb0Znb0Zpby9GXHBRMG1lZGl1bW1hdGhzcGFjZUYoL0ZfcEZcc0ZgcEZicEZkcEZncEZqcEZccUZecUZgcUZicUZkcUZmcS1GJDYlLUYvNjlRIjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMjQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEjMTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMjQyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEjMTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMjQzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMjQ1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USI5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDI0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMjQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USMxMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQyNTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDI1MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMzg1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMzg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQzODdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USMxNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQzODhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoeEZgby1GaXE2JUZbci1GLzY5USQzOTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDM5MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDM5MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmN6RmBvLUZpcTYlRltyLUYvNjlRJDM5M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzEwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDM5NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDQyMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDQyMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDIzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDI0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDI1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzNDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USMxMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USM0OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjNTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USM1MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDExOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQxMjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMTIyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMTIzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQxMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMTI1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQxMjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USM3MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRIzcxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRIzcyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQxNTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQxNThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQxNTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USMxM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQxNjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQxNTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQzNDFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoeEZgby1GaXE2JUZbci1GLzY5USQzNDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkMzQwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkNDA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQ0MTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USQ0MTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkNDEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMzUyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDM1M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzMDlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMzEwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMzExRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMzEyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMzEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDMxNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQzOTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMzk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDM5N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMzk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDQ1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQ0NTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQ0NTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkNDU4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDQ1OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDU0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkNDQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyRlx2RmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3JGaVxsRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3JGZ3dGZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyRl1gbEZlckZoci1GJDYlRmN6RmBvLUZpcTYlRltyRmNnbEZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbckZqc0ZlckZoci1GJDYjLUZpcTYlRltyRmN6RmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEjMTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USMxOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USMxOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USMyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USMyMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRIzIyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEjMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEjMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USMyNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USMyNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRIzI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEjMjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEjMjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USMzMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USMzMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USMzMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRIzM0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEjMzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USMzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRIzM3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEjMzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USM0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDM3MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQzNzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQzNzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQxNDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USM2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USM2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USM2NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USM2N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRIzY4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRIzY5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyRmR0RmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkNDgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQ4MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDQ4MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvRltyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkNTAwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQ5OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRJDQ5OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDQ5N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USQ0OTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkNDk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDk0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHNGYG8tRmlxNiVGW3ItRi82OVEkNDkzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHNGYG8tRmlxNiVGW3ItRi82OVEkNDkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkNDkxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDg5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0ODhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkNDg3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHNGYG8tRmlxNiVGW3ItRi82OVEkNDg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkNDg1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkNDg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMzQ4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMzQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDQ5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzMzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMzM0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQ0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQ0NTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkNDUxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkNDUyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDUzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEjOTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USM5N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRIzk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRIzk5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDEwMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDEwMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDMwMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDMwM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMzA0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzA1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMzA2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMzA3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMzA4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEjOTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZkdEZgby1GaXE2JUZbci1GLzY5USM5MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRIzkzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQxNDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USQyODFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQyODJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZkdEZgby1GaXE2JUZbci1GLzY5USQyODNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQyODRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USQyODVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDI4OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMzE2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHNGYG8tRmlxNiVGW3ItRi82OVEkMzE3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMzE4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMzE5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDMyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDE5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxOTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMTkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDE5NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMTk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMTk3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMTk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDE4OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDM1OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQzNjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMzYyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDE0NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRJDE0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzNjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQzNzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkMzcxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDQ3OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDIyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDIyMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDIyMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USQyMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQyMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQyMjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDIyNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQyMjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQyMjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMjE5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDExMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxMTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMTEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMTE0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMTE1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDExNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDExN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTE4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMTA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkNDczRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkNDc0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDQ3NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQ0NzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkNDc3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0NzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQxNTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQxNTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQxNTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQxNTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkNDE2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDE3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkNDE4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkNDE5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkNDIwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMjA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMjEwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyMTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQyMTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMjEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDIxNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQyMTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDIxNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDIxN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDIxOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRJDMzNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQzMzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQzMzdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQyMjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMjMwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMjMxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjMyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyMzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQyMzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjM1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDIzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMjM3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMjM4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyMzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMjk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyOTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjk3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMjk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjk5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzAwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDMwMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRIzUyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEjNTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEjNTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USM1N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USM1OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRIzU5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkNDExRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDMyOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDMzMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDMzMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDMzMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDQwNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDQwN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmR0RmBvLUZpcTYlRltyLUYvNjlRJDQwOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRIzc0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzQ0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDM1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzNTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQzNTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQxNDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMTQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzNjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQzNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQzNjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkNDQyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDQzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0NDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkNDQ1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkNDQ2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDQ0N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzNjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQzNjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMzY1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMTgyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMTgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDE4NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxODVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQxODZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMTg3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMTg4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMzk5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDAwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkNDAxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDAyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDAzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDM1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDE3NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxNzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USQxNzdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMTc4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMTc5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkMTgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMTgxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXWBsRmBvLUZpcTYlRltyLUYvNjlRJDEyOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDEyOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQxMzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQxMzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQxMzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMTMzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMTM0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEjNDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USM0NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRIzQ1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDE2OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USQxNjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQxNzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDE3MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDE3MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDE3M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDE3NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQzN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDQzOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDQzOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQ0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQ0NDFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQzMzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkMzM5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQzMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQ0MzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDQzM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQzNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDM2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMjcyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMjc0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMjc1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjc3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMjc4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQyODBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMjczRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkNDI2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkNDI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDQyOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQyOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDQzMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDI2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDI2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDI2NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQyNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQyNjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQyNjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjcwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMjcxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEjOTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USM5NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRIzgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEjODRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USM4NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjODZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEjODdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEjODhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USM4OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USM5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmN6RmBvLUZpcTYlRltyLUYvNjlRJDEwM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQxMDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQxMDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqc0Zgby1GaXE2JUZbci1GLzY5USQxMDZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQxMDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQxMDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQxMDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEjNDFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpXGxGYG8tRmlxNiVGW3ItRi82OVEkMzgxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEkMzgyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMzgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRJDQ2NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDQ2N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDQ2OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USQ0NjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQ0NzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZkdEZgby1GaXE2JUZbci1GLzY5USQ0NzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpeUZgby1GaXE2JUZbci1GLzY5USQ0NzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZcdkZgby1GaXE2JUZbci1GLzY5USM2MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRIzYxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRIzYyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRIzYzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDI4OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmN6RmBvLUZpcTYlRltyLUYvNjlRJDI5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQyOTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMjkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjkzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMjk0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMjU0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDI1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDI1NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDI1N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRJDI1OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQyNTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDI2MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl9kbEZgby1GaXE2JUZbci1GLzY5USQyNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoeEZgby1GaXE2JUZbci1GLzY5USQyNjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDI2M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQyNTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USQzNTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjekZgby1GaXE2JUZbci1GLzY5USQzNThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDEzNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDEzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDEzOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDEzOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlx2RmBvLUZpcTYlRltyLUYvNjlRJDM3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDM3OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDM3OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USQzODBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMzc2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3ItRi82OVEkMzIxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzMjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZmdkZgby1GaXE2JUZbci1GLzY5USQzMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQzMjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMTQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaVxsRmBvLUZpcTYlRltyLUYvNjlRJDE0OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDE1MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml5RmBvLUZpcTYlRltyLUYvNjlRIzc1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYGpsRmBvLUZpcTYlRltyLUYvNjlRIzc2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRIzc3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEjNzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnd0Zgby1GaXE2JUZbci1GLzY5USM3OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USM4MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmNnbEZgby1GaXE2JUZbci1GLzY5USM4MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbci1GLzY5USM4MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRIzQ2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXHZGYG8tRmlxNiVGW3ItRi82OVEjNDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEjNDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZjZ2xGYG8tRmlxNiVGW3ItRi82OVEkMzI2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMzI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMzI4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkNDYwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkNDYxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDQ2MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyLUYvNjlRJDQ2M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDQ2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmpzRmBvLUZpcTYlRltyLUYvNjlRJDQ2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyRl9kbEZlckZoci1GJDYlRmlcbEZgby1GaXE2JUZbckZmdkZlckZoci1GJDYjLUZpcTYlRltyRmh4RmVyRmhyLUYkNiVGZHRGYG8tRmlxNiVGW3JGLkZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbckZgc0ZlckZoci1GJDYlRmh4RmBvLUZpcTYlRltyRmBqbEZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbckZpeUZlckZoci1GJDYlRmd3RmBvLUZpcTYlRltyLUYvNjlRJDM0NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBzRmBvLUZpcTYlRltyLUYvNjlRJDM0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmZ2RmBvLUZpcTYlRltyLUYvNjlRJDM1MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQzNTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgamxGYG8tRmlxNiVGW3ItRi82OVEkMTYxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaHhGYG8tRmlxNiVGW3ItRi82OVEkMTYyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanNGYG8tRmlxNiVGW3ItRi82OVEkMTY0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZnZGYG8tRmlxNiVGW3ItRi82OVEkMTY1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXlGYG8tRmlxNiVGW3ItRi82OVEkMTY2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDE2N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQxOTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZdYGxGYG8tRmlxNiVGW3ItRi82OVEkMjAwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX2RsRmBvLUZpcTYlRltyLUYvNjlRJDIwMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmBqbEZgby1GaXE2JUZbci1GLzY5USQyMDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgc0Zgby1GaXE2JUZbci1GLzY5USQyMDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfZGxGYG8tRmlxNiVGW3ItRi82OVEkMjA1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY3pGYG8tRmlxNiVGW3ItRi82OVEkMjA2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3dGYG8tRmlxNiVGW3ItRi82OVEkMjA3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGY2dsRmBvLUZpcTYlRltyLUYvNjlRJDIwOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl1gbEZgby1GaXE2JUZbci1GLzY5USQ0MDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXI3IyxgZm4qJiIiJiIiIilJInhHRigiJFMjRmVheEZlYXgqJiIiJ0ZlYXgpRmdheCIkVCNGZWF4RmVheComIiM5RmVheClGZ2F4IiRVI0ZlYXhGZWF4KiYiIzpGZWF4KUZnYXgiJFYjRmVheEZlYXgqJClGZ2F4IiRYI0ZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRaI0ZlYXhGZWF4KiYiIipGZWF4KUZnYXgiJFsjRmVheEZlYXgqJiIiJEZlYXgpRmdheCIkXCNGZWF4RmVheComRmRheEZlYXgpRmdheCIkXSNGZWF4RmVheComIiM2RmVheClGZ2F4IiReI0ZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRfI0ZlYXhGZWF4KiYiIiVGZWF4KUZnYXgiJCZRRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCdRRmVheEZlYXgqJiIiKUZlYXgpRmdheCIkKFFGZWF4RmVheComIiM7RmVheClGZ2F4IiQpUUZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQhUkZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiQiUkZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiQjUkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQkUkZlYXhGZWF4KiYiIzVGZWF4KUZnYXgiJCVSRmVheEZlYXgqJClGZ2F4IiRAJUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRBJUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRCJUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRDJUZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiREJUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRWJEZlYXhGZWF4KiYiIzdGZWF4KUZnYXgiI1xGZWF4RmVheComRmRheEZlYXgpRmdheCIjXUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiNeRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJD4iRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiJD8iRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJEEiRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJEIiRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJEMiRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJEQiRmVheEZlYXgqJiIiI0ZlYXgpRmdheCIkRiJGZWF4RmVheComRmlkeEZlYXgpRmdheCIjcUZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiNyRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiI3NGZWF4RmVheComRmRheEZlYXgpRmdheCIkZCJGZWF4RmVheComRl5ieEZlYXgpRmdheCIkZSJGZWF4RmVheComRmlkeEZlYXgpRmdheCIkZiJGZWF4RmVheComIiM4RmVheClGZ2F4IiRnIkZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRjIkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiRUJEZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRVJEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRTJEZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiQ0JUZlYXhGZWF4KiYiIihGZWF4KUZnYXgiJDUlRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJDclRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJDglRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJF8kRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJGAkRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiJDQkRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJDUkRmVheEZlYXgqJClGZ2F4IiQ2JEZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiQ3JEZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiQ4JEZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiQ6JEZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQmUkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQnUkZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiQoUkZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiQpUkZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiRiJUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRjJUZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRkJUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiRlJUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiRmJUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRhJUZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiRcJUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4RlxjeEZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4RmlleEZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4RmdjeEZlYXhGZWF4KiZGZGF4RmVheClGZ2F4Rl9neEZlYXhGZWF4KiZGaWR4RmVheClGZ2F4RmFqeEZlYXhGZWF4KiZGYWp4RmVheClGZ2F4Rl5ieEZlYXhGZWF4KiQpRmdheEZpZHhGZWF4RmVheComRmBjeEZlYXgpRmdheCIjPEZlYXhGZWF4KiQpRmdheCIjPUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiM+RmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiIz9GZWF4RmVheComRmlleEZlYXgpRmdheCIjQEZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiNBRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiI0JGZWF4RmVheComRmFqeEZlYXgpRmdheCIjQ0ZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiNERmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiI0VGZWF4RmVheComRl5ieEZlYXgpRmdheCIjRkZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiNHRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiI0hGZWF4RmVheComRlxjeEZlYXgpRmdheCIjSUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiNKRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiI0tGZWF4RmVheComRmJieEZlYXgpRmdheCIjTUZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiNORmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiI09GZWF4RmVheComRlxjeEZlYXgpRmdheCIjUEZlYXhGZWF4KiQpRmdheCIjUkZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiNTRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJHMkRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJHUkRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJHYkRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJFUiRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiI2tGZWF4RmVheComRmRbeUZlYXgpRmdheCIjbEZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiNtRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiI25GZWF4RmVheComRmJieEZlYXgpRmdheCIjb0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiNwRmVheEZlYXhGYmJ4RmVheComRmJieEZlYXgpRmdheCIkIVtGZWF4RmVheComRmRbeUZlYXgpRmdheCIkI1tGZWF4RmVheComRmBjeEZlYXgpRmdheCIkIltGZWF4RmVheComRmJieEZlYXhGZ2F4RmVheEZlYXgqJClGZ2F4IiQrJkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQqXEZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiQpXEZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiQoXEZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiQnXEZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQmXEZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQlXEZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiQkXEZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiQjXEZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiQiXEZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiQqW0ZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiQpW0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiQoW0ZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiQnW0ZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQmW0ZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiQlW0ZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiQkW0ZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRaJEZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiRbJEZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRcJEZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiQhXEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRMJEZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRNJEZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiRbJUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiRdJUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiReJUZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRfJUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRgJUZlYXhGZWF4KiQpRmdheCIjJypGZWF4RmVheComRmVkeEZlYXgpRmdheCIjKCpGZWF4RmVheCokKUZnYXgiIykqRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiIyoqRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJCsiRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCwiRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJC0kRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJC4kRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJC8kRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJDAkRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJDEkRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJDIkRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJDMkRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiIyIqRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiIyMqRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiIyQqRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJFciRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJCJHRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCNHRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJCRHRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCVHRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJCZHRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJCdHRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJClHRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJDskRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJDwkRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJD0kRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiJD4kRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJD8kRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJCE+RmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJCI+RmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJCM+RmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJCU+RmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJCY+RmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJCc+RmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCg+RmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJCk+RmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiJCo9RmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJGYkRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJGckRmVheEZlYXgqJClGZ2F4IiRoJEZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiRpJEZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRYIkZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiRZIkZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRwJEZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiRxJEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRyJEZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiR6JUZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiQ/I0ZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRAI0ZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRBI0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiRCI0ZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRDI0ZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiREI0ZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiRFI0ZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRGI0ZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiRHI0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiQ+I0ZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiQ2IkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiQ3IkZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiQ4IkZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQ5IkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQ6IkZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiQ7IkZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiQ8IkZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiQ9IkZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQ0IkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiR0JUZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiR1JUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiR2JUZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiR3JUZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiR4JUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiR5JUZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiReIkZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiRfIkZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiRgIkZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiRhIkZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiQ7JUZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiQ8JUZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiQ9JUZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQ+JUZlYXhGZWF4KiZGYmJ4RmVheClGZ2F4IiQ/JUZlYXhGZWF4KiZGYGN4RmVheClGZ2F4IiQ0I0ZlYXhGZWF4KiQpRmdheCIkNSNGZWF4RmVheComRmRheEZlYXgpRmdheCIkNiNGZWF4RmVheComRmVkeEZlYXgpRmdheCIkNyNGZWF4RmVheComRmRbeUZlYXgpRmdheCIkOCNGZWF4RmVheComRmFqeEZlYXgpRmdheCIkOSNGZWF4RmVheComRmRbeUZlYXgpRmdheCIkOiNGZWF4RmVheComRmRheEZlYXgpRmdheCIkOyNGZWF4RmVheComRmBjeEZlYXgpRmdheCIkPCNGZWF4RmVheComRl5ieEZlYXgpRmdheCIkPSNGZWF4RmVheComRmJieEZlYXgpRmdheCIkTiRGZWF4RmVheComRltpeEZlYXgpRmdheCIkTyRGZWF4RmVheComRmdjeEZlYXgpRmdheCIkUCRGZWF4RmVheComRmlkeEZlYXgpRmdheCIkSCNGZWF4RmVheComRltpeEZlYXgpRmdheCIkSSNGZWF4RmVheComRmVkeEZlYXgpRmdheCIkSiNGZWF4RmVheComRmlkeEZlYXgpRmdheCIkSyNGZWF4RmVheComRmRheEZlYXgpRmdheCIkTCNGZWF4RmVheCokKUZnYXgiJE0jRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJE4jRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJE8jRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJFAjRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJFEjRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJFIjRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJCZIRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJCdIRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJChIRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJClIRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJCpIRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJCskRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJCwkRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiI19GZWF4RmVheComRlxjeEZlYXgpRmdheCIjYUZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiNiRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiI2RGZWF4RmVheComRltpeEZlYXgpRmdheCIjZUZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiNmRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJDYlRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJEgkRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJEkkRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJEokRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJEskRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJDElRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJDIlRmVheEZlYXgqJkZiYnhGZWF4KUZnYXgiJDMlRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiI3VGZWF4RmVheComRl5keEZlYXgpRmdheCIkVyRGZWF4RmVheComRl9neEZlYXgpRmdheCIkYiRGZWF4RmVheComRmlleEZlYXgpRmdheCIkYyRGZWF4RmVheComRl5ieEZlYXgpRmdheCIkYSRGZWF4RmVheComRmlkeEZlYXgpRmdheCIkUyJGZWF4RmVheComRltpeEZlYXgpRmdheCIkVCJGZWF4RmVheComRmRheEZlYXgpRmdheCIkbSRGZWF4RmVheComRmBjeEZlYXgpRmdheCIkbiRGZWF4RmVheComRmdjeEZlYXgpRmdheCIkbyRGZWF4RmVheComRmlleEZlYXgpRmdheCIkVSVGZWF4RmVheComRmBjeEZlYXgpRmdheCIkViVGZWF4RmVheComRmRheEZlYXgpRmdheCIkVyVGZWF4RmVheComRmlleEZlYXgpRmdheCIkWCVGZWF4RmVheComRl5ieEZlYXgpRmdheCIkWSVGZWF4RmVheComRltpeEZlYXgpRmdheCIkWiVGZWF4RmVheComRmlleEZlYXgpRmdheCIkaiRGZWF4RmVheComRmpheEZlYXgpRmdheCIkayRGZWF4RmVheComRl9neEZlYXgpRmdheCIkbCRGZWF4RmVheComRmVkeEZlYXgpRmdheCIkIz1GZWF4RmVheComRmdjeEZlYXgpRmdheCIkJD1GZWF4RmVheComRmRbeUZlYXgpRmdheCIkJT1GZWF4RmVheComRmRbeUZlYXgpRmdheCIkJj1GZWF4RmVheComRmVkeEZlYXgpRmdheCIkJz1GZWF4RmVheComRmRbeUZlYXgpRmdheCIkKD1GZWF4RmVheComRl5ieEZlYXgpRmdheCIkKT1GZWF4RmVheCokKUZnYXgiJCpSRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJCslRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCwlRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJC0lRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJC4lRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJE4lRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJHYiRmVheEZlYXgqJkZkW3lGZWF4KUZnYXgiJHciRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJHgiRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJHkiRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJHoiRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJCE9RmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJCI9RmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJEciRmVheEZlYXgqJClGZ2F4IiRIIkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiRJIkZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRKIkZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRLIkZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiRMIkZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRNIkZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiNWRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiI1dGZWF4RmVheComRlxjeEZlYXgpRmdheCIjWEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiRvIkZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiRwIkZlYXhGZWF4KiQpRmdheCIkcSJGZWF4RmVheComRmRheEZlYXgpRmdheCIkciJGZWF4RmVheComRlxjeEZlYXgpRmdheCIkcyJGZWF4RmVheComRmpheEZlYXgpRmdheCIkdCJGZWF4RmVheComRmVkeEZlYXgpRmdheCIkdSJGZWF4RmVheComRmpheEZlYXgpRmdheCIkUCVGZWF4RmVheComRmVkeEZlYXgpRmdheCIkUSVGZWF4RmVheComRl5ieEZlYXgpRmdheCIkUiVGZWF4RmVheComRmpheEZlYXgpRmdheCIkUyVGZWF4RmVheComRltpeEZlYXgpRmdheCIkVCVGZWF4RmVheComRmVkeEZlYXgpRmdheCIkUSRGZWF4RmVheComRmlleEZlYXgpRmdheCIkUiRGZWF4RmVheComRmRbeUZlYXgpRmdheCIkSiVGZWF4RmVheComRmlleEZlYXgpRmdheCIkSyVGZWF4RmVheComRmRheEZlYXgpRmdheCIkTCVGZWF4RmVheComRmpheEZlYXgpRmdheCIkTSVGZWF4RmVheComRmRheEZlYXgpRmdheCIkTyVGZWF4RmVheCokKUZnYXgiJHMjRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJHUjRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJHYjRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJHgjRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJHkjRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJHojRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJCFHRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJHQjRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJEUlRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJEYlRmVheEZlYXgqJkZhanhGZWF4KUZnYXgiJEclRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJEglRmVheEZlYXgqJkZgY3hGZWF4KUZnYXgiJEklRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJGsjRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiJGwjRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJG0jRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJG4jRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJG8jRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJHAjRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJHEjRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJHIjRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiIyYqRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiIyUqRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiIyQpRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiIyUpRmVheEZlYXgqJClGZ2F4IiMmKUZlYXhGZWF4KiZGZGF4RmVheClGZ2F4IiMnKUZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiMoKUZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiMpKUZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiMqKUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiMhKkZlYXhGZWF4KiZGaWR4RmVheClGZ2F4IiQuIkZlYXhGZWF4KiZGX2d4RmVheClGZ2F4IiQvIkZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiQwIkZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiQxIkZlYXhGZWF4KiQpRmdheCIkMiJGZWF4RmVheComRmVkeEZlYXgpRmdheCIkMyJGZWF4RmVheComRmlkeEZlYXgpRmdheCIkLSJGZWF4RmVheComRltpeEZlYXgpRmdheCIjVEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiQiUUZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiQjUUZlYXhGZWF4KiQpRmdheCIkJFFGZWF4RmVheComRl5keEZlYXgpRmdheCIkJVFGZWF4RmVheComRmRbeUZlYXgpRmdheCIkbSVGZWF4RmVheComRlxjeEZlYXgpRmdheCIkbiVGZWF4RmVheComRlxjeEZlYXgpRmdheCIkbyVGZWF4RmVheComRmFqeEZlYXgpRmdheCIkcCVGZWF4RmVheComRmBjeEZlYXgpRmdheCIkcSVGZWF4RmVheComRmJieEZlYXgpRmdheCIkciVGZWF4RmVheComRmVkeEZlYXgpRmdheCIkcyVGZWF4RmVheComRlxjeEZlYXgpRmdheCIjZ0ZlYXhGZWF4KiQpRmdheCIjaEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiNpRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiI2pGZWF4RmVheComRmlleEZlYXgpRmdheCIkKkdGZWF4RmVheComRmlkeEZlYXgpRmdheCIkIUhGZWF4RmVheComRltpeEZlYXgpRmdheCIkIkhGZWF4RmVheComRmRbeUZlYXgpRmdheCIkI0hGZWF4RmVheComRmlkeEZlYXgpRmdheCIkJEhGZWF4RmVheComRl5keEZlYXgpRmdheCIkJUhGZWF4RmVheComRl5keEZlYXgpRmdheCIkYSNGZWF4RmVheComRmlleEZlYXgpRmdheCIkYiNGZWF4RmVheComRmBjeEZlYXgpRmdheCIkYyNGZWF4RmVheCokKUZnYXgiJGQjRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiJGUjRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJGYjRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJGcjRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJGgjRmVheEZlYXgqJkZeZHhGZWF4KUZnYXgiJGkjRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJGojRmVheEZlYXgqJkZfZ3hGZWF4KUZnYXgiJGAjRmVheEZlYXgqJkZnY3hGZWF4KUZnYXgiJGQkRmVheEZlYXgqJkZpZHhGZWF4KUZnYXgiJGUkRmVheEZlYXgqJkZkYXhGZWF4KUZnYXgiJE4iRmVheEZlYXgqJClGZ2F4IiRPIkZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiRRIkZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRSIkZlYXhGZWF4KiZGXGN4RmVheClGZ2F4IiR4JEZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiR5JEZlYXhGZWF4KiQpRmdheCIkeiRGZWF4RmVheComRmlleEZlYXgpRmdheCIkIVFGZWF4RmVheComRltpeEZlYXgpRmdheCIkdyRGZWF4RmVheComRmJieEZlYXgpRmdheCIkQCRGZWF4RmVheComRmRheEZlYXgpRmdheCIkQSRGZWF4RmVheComRmBjeEZlYXgpRmdheCIkQiRGZWF4RmVheCokKUZnYXgiJEMkRmVheEZlYXgqJkZqYXhGZWF4KUZnYXgiJEQkRmVheEZlYXgqJkZbaXhGZWF4KUZnYXgiJFoiRmVheEZlYXgqJkZpZXhGZWF4KUZnYXgiJFwiRmVheEZlYXgqJkZeYnhGZWF4KUZnYXgiJF0iRmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiI3ZGZWF4RmVheComRmRbeUZlYXgpRmdheCIjd0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiN4RmVheEZlYXgqJkZlZHhGZWF4KUZnYXgiI3lGZWF4RmVheComRmdjeEZlYXgpRmdheCIjekZlYXhGZWF4KiZGZFt5RmVheClGZ2F4IiMhKUZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiMiKUZlYXhGZWF4KiZGaWV4RmVheClGZ2F4IiMjKUZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiNZRmVheEZlYXgqJkZcY3hGZWF4KUZnYXgiI1pGZWF4RmVheComRl9neEZlYXgpRmdheCIjW0ZlYXhGZWF4KiZGYWp4RmVheClGZ2F4IiRFJEZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRGJEZlYXhGZWF4KiZGZWR4RmVheClGZ2F4IiRHJEZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRnJUZlYXhGZWF4KiZGZ2N4RmVheClGZ2F4IiRoJUZlYXhGZWF4KiZGW2l4RmVheClGZ2F4IiRpJUZlYXhGZWF4KiZGXmR4RmVheClGZ2F4IiRqJUZlYXhGZWF4KiZGamF4RmVheClGZ2F4IiRrJUZlYXhGZWF4KiZGXmJ4RmVheClGZ2F4IiRsJUZlYXhGZWF4KiZGYGN4RmVheClGZ2F4RltpeEZlYXhGZWF4KiZGaWV4RmVheClGZ2F4RmBjeEZlYXhGZWF4KiQpRmdheEZeZHhGZWF4RmVheComRmJieEZlYXgpRmdheEZkYXhGZWF4RmVheComRmRbeUZlYXgpRmdheEZqYXhGZWF4RmVheComRl5keEZlYXgpRmdheEZkW3lGZWF4RmVheComRmRbeUZlYXgpRmdheEZlZHhGZWF4RmVheComRmdjeEZlYXgpRmdheCIkWCRGZWF4RmVheComRmpheEZlYXgpRmdheCIkWSRGZWF4RmVheComRmBjeEZlYXgpRmdheCIkXSRGZWF4RmVheComRl9neEZlYXgpRmdheCIkXiRGZWF4RmVheComRmRbeUZlYXgpRmdheCIkaCJGZWF4RmVheComRl5keEZlYXgpRmdheCIkaSJGZWF4RmVheComRl5ieEZlYXgpRmdheCIkayJGZWF4RmVheComRmBjeEZlYXgpRmdheCIkbCJGZWF4RmVheComRmVkeEZlYXgpRmdheCIkbSJGZWF4RmVheComRmFqeEZlYXgpRmdheCIkbiJGZWF4RmVheComRl9neEZlYXgpRmdheCIkKj5GZWF4RmVheComRl9neEZlYXgpRmdheCIkKyNGZWF4RmVheComRltpeEZlYXgpRmdheCIkLSNGZWF4RmVheComRmRbeUZlYXgpRmdheCIkLiNGZWF4RmVheComRmpheEZlYXgpRmdheCIkLyNGZWF4RmVheComRltpeEZlYXgpRmdheCIkMCNGZWF4RmVheComRmlkeEZlYXgpRmdheCIkMSNGZWF4RmVheComRmdjeEZlYXgpRmdheCIkMiNGZWF4RmVheComRmFqeEZlYXgpRmdheCIkMyNGZWF4RmVheComRl9neEZlYXgpRmdheCIkLyVGZWF4RmVheA== Timing time(lbMinpoly(p,A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjIyN0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkRiMhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjcwNkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkMSghIiQ=
<Text-field style="Heading 3" layout="Heading 3">Characteristic Polynomial</Text-field> restart():with(LinBox):with(LinearAlgebra): n:=500;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQ1MDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrJjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH41MDB+eH41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple Characteristic polynomial doesn't exist in Givaro::Modular package LinBox Characteristic polynomial lbCharpoly(p,A,'x'); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjQ1M0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkYCUhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNl1nbi1GJDYlLUkjbW5HRiU2OVEiN0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y6LyUqdW5kZXJsaW5lR0Y6LyUqc3Vic2NyaXB0R0Y6LyUsc3VwZXJzY3JpcHRHRjovJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRS8lL21hdGhiYWNrZ3JvdW5kR0ZILyUrZm9udGZhbWlseUdGNC8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGNy1JI21vR0YlNjNRMSZJbnZpc2libGVUaW1lcztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjovJSpzZXBhcmF0b3JHRjovJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGXXAvJSlzdHJldGNoeUdGOi8lKnN5bW1ldHJpY0dGOi8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjovJS5tb3ZhYmxlbGltaXRzR0Y6LyUnYWNjZW50R0Y6LyUwZm9udF9zdHlsZV9uYW1lR0ZaLyUlc2l6ZUdGNy8lK2ZvcmVncm91bmRHRkUvJStiYWNrZ3JvdW5kR0ZILUklbXN1cEdGJTYlLUkjbWlHRiU2OVEieEYoRjJGNUY4L0Y8Rk9GPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbi9GXG9RJ2l0YWxpY0YoRl5vLUYvNjlRJDM5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRmFvNjNRIitGKEZkb0Znb0Zpby9GXHBRMG1lZGl1bW1hdGhzcGFjZUYoL0ZfcEZcc0ZgcEZicEZkcEZncEZqcEZccUZecUZgcUZicUZkcUZmcS1GJDYjLUZpcTYlRltyLUYvNjlRJDM5MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMzkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEjMTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMzkzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQxMDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USI2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDEwNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzE1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDM4N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDM4OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDM4OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEkMTAyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTAzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTA0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjOTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQxMDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JS1GLzY5USI5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDEwMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzEyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRJDQzNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDQzNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzExRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRIzk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXZGYG8tRmlxNiVGW3ItRi82OVEjOTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USM5OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjOTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USM5NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRIzk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USM5MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRIzkxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEjOTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkNDgzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkNDg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEiM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0Zgby1GaXE2JUZbci1GLzY5USQ0ODVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMzg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzg1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzODZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkNDExRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkNDEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiUtRi82OVEjMTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GYG8tRmlxNiVGW3ItRi82OVEjODdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USM4OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRIzg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW1xsRmBvLUZpcTYlRltyLUYvNjlRIzg1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRIzg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEjODFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USM4M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQzODFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDM4MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDM4M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USM3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlLUYvNjlRIzE0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmBvLUZpcTYlRltyLUYvNjlRIzc4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USM4MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USM3NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRIzc2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRIzcyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjNzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEjNzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQzMjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQ0MzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEjNjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USM3MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjNzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQzNzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMzc5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW1xsRmBvLUZpcTYlRltyLUYvNjlRIzY3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USM2OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZockZpdkZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDQ4N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDQ4OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQ0ODlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQ0OTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkNDkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkNDk0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDQzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDQzN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDQzOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQ0OTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQzOTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQzOTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgb0ZbckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQxMTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQxMTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQxMTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQxMDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMTA4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMTA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEkMTM2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMTM3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDEzOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQxMzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDEzM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDEzNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQxMzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQ0OTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMTMwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEkMTMxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQxMjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxMjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxMjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQxMjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQ1MDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQxMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxMjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQxMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQxMjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDEyMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDEyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDExOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDExOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDExN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQ0OTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkNDk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDQ5NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQxMTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQxMTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQxMTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQxMTZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMTcyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMTczRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDE3NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDE2OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDE3MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQxNzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQxNjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQxNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQxNjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQxNjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQxNjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEkMTY1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDE2MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDE2MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDE2MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDM5N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMzk4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDM5OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDE1N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDE1OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDE1OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDE1NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDE1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDE1NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDE1MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQxNTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxNTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USM0N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDE0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkMTUwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDE0NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDE0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDE0MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDE0M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQxNDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkMTM5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTQwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkMTQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMjEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDIxNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDIxNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDIxMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDIxMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDIxMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDE1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDQxNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQyMDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQyMDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEkMjA5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyMDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQyMDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQyMDZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQyMDFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkMjAyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDIwM0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQxOThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoXmxGYG8tRmlxNiVGW3ItRi82OVEkMTk5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDIwMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDE5M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQxOTVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQxOTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQxOTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQxOTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQxOTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMTkyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTg3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMTg4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMTg5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkMTg0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDE4NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDE4NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlt1RmBvLUZpcTYlRltyLUYvNjlRJDE4MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDE4MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDE4M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMTc4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMTc5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkMTgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMTc1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDE3NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDE3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQ0NDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkNDQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkNDQyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDIyNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQyMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQyMjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQyMjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQyMjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMjE4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDIxOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlt1RmBvLUZpcTYlRltyLUYvNjlRJDIxN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDI0MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDI0MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDI0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQyMzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQyMzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQyMzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoXmxGYG8tRmlxNiVGW3ItRi82OVEkMjMzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW1xsRmBvLUZpcTYlRltyLUYvNjlRJDIzNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQyMzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQ0MDBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkNDAxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDIzMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDIzMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDIzMkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDIyOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMjI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQyNjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQyNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQyNjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQyNjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMjY0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkNDQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDQ0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkNDQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQyNjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQyNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQyNThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMjU2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMjU3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMjU1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDI1M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDI1NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQyNTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDQxN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQ0MThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQ0MTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQ0NDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQ0NDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQ0NDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQ0NDZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQyNTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQyNTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQyNDlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMjQ3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDI0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDI0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDI0NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDI0NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQyNDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkMjgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXZGYG8tRmlxNiVGW3ItRi82OVEkMjgxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMjgyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRJDI3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQyNzhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQyNzlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQyNzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDI3NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDI3NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDI3MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDI3MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDI3M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQ0MDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEkNDA0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkNDA1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMjY4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjY5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjcwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjg5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjkwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMjkxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMjg2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDI4N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEkMjg4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW1xsRmBvLUZpcTYlRltyLUYvNjlRJDI4M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQyODRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQyODVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQzMjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDQ4MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDQwNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQ0MDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQyOTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQyOTNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQyOTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQ0MjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQ0MjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQ0MjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMjI1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMjk1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMjk2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkMjk3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDMwMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQzMDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQyOTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQ0NTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQ0NTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQ0NTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQyMjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkMzA2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzMDdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQzMDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzMDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQzMDRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMzA1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDMwOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDMxMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQzMTFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQzMTJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMzE0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMzE1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMzEzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkNDUzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEkNDU0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXZGYG8tRmlxNiVGW3ItRi82OVEkNDU2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkMzE5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzIwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkMzIxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkNDU3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0NThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQ0NTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQzMjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQzMjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbckZnc0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbckZldUZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyRi5GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3JGaF5sRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3JGXmFsRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbckZbdUZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDMyOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQzMjlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQzMzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqd0Zgby1GaXE2JUZbci1GLzY5USQzMjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbckZqd0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbckZhdEZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbckZgekZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQ0MjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQ0MjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3JGW1xsRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMzAxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyRmp6RmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3JGaXZGZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzMzJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQzMzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQzMzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDQ2MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRJDQ2MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRJDQ2MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRml2RmBvLUZpcTYlRltyLUYvNjlRJDM0NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQzNDVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQzNDZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkMzQxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDM0MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQzNDNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoXmxGYG8tRmlxNiVGW3ItRi82OVEkMzM4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGanpGYG8tRmlxNiVGW3ItRi82OVEkMzM5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzQwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzM1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkMzM2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQzMzdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQ0MDJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USMyMEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USMyMUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRIzIyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMzU1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkMzU2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkMzU0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USQ0NjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZoXmxGYG8tRmlxNiVGW3ItRi82OVEkNDY4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEkNDY5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkNDcwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjMTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USMxOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbckZbaWxGZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbckZfdkZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyRltkbEZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRJDQ2M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDQ2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDQ2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USQ0NjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbaWxGYG8tRmlxNiVGW3ItRi82OVEkMzUwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDM1MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDM1M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRJDM0N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDM0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQzNTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzNjBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQzNTdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkNDI2RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkNDI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjMjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRIzI3RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEjMjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USMyNEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USMyNUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDMxN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USQzMThGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USMyOEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmdzRmBvLUZpcTYlRltyLUYvNjlRIzI5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEjMzBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbdUZgby1GaXE2JUZbci1GLzY5USQzNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USQzNjJGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQzNjNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZeYWxGYG8tRmlxNiVGW3ItRi82OVEkNDI4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkNDI5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW3VGYG8tRmlxNiVGW3ItRi82OVEkNDMwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRIzM0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEjMzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEjMzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRIzMyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaXZGYG8tRmlxNiVGW3ItRi82OVEjMzNGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbZGxGYG8tRmlxNiVGW3ItRi82OVEkMzMxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGandGYG8tRmlxNiVGW3ItRi82OVEkNDI1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2lsRmBvLUZpcTYlRltyLUYvNjlRJDM2NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USQzNjVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZpdkZgby1GaXE2JUZbci1GLzY5USQzNjZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USMzNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USMzN0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRIzM4RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkNDcxRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGW2RsRmBvLUZpcTYlRltyLUYvNjlRJDQ3MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlt1RmBvLUZpcTYlRltyLUYvNjlRJDQ3M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQ0MTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USQzNjdGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQzNjhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDM3MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USMzOUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USM0MEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USM0MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDM3M0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltcbEZgby1GaXE2JUZbci1GLzY5USQzNzRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQzNzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZnc0Zgby1GaXE2JUZbci1GLzY5USQ0MDhGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USQ0MDlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZhdEZgby1GaXE2JUZbci1GLzY5USQ0MTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USQzNzVGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZfdkZgby1GaXE2JUZbci1GLzY5USQzNzZGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUYuRmBvLUZpcTYlRltyLUYvNjlRJDM3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmB6RmBvLUZpcTYlRltyLUYvNjlRIzQyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGXmFsRmBvLUZpcTYlRltyLUYvNjlRIzQzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEkNDc0RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYXRGYG8tRmlxNiVGW3ItRi82OVEkNDc1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGaF5sRmBvLUZpcTYlRltyLUYvNjlRJDQ3NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USM0NEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRIzQ1RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGLkZgby1GaXE2JUZbci1GLzY5USM0NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRJDMxNkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USM0OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYjLUZpcTYlRltyLUYvNjlRIzQ5RihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEjNTBGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZldUZgby1GaXE2JUZbci1GLzY5USM1MUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USM1MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp6RmBvLUZpcTYlRltyLUYvNjlRIzUzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZ3NGYG8tRmlxNiVGW3ItRi82OVEjNTRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USM1N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl5hbEZgby1GaXE2JUZbci1GLzY5USM1OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRi5GYG8tRmlxNiVGW3ItRi82OVEjNTlGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZqekZgby1GaXE2JUZbci1GLzY5USM1NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltpbEZgby1GaXE2JUZbci1GLzY5USM1NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRl92RmBvLUZpcTYlRltyLUYvNjlRJDQ3N0YoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmF0RmBvLUZpcTYlRltyLUYvNjlRJDQ3OEYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmp3RmBvLUZpcTYlRltyLUYvNjlRJDQ3OUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmV1RmBvLUZpcTYlRltyLUYvNjlRIzYwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiMtRmlxNiVGW3ItRi82OVEjNjFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZgekZgby1GaXE2JUZbci1GLzY5USM2MkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRlt1RmBvLUZpcTYlRltyLUYvNjlRIzYzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEjNjRGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2Iy1GaXE2JUZbci1GLzY5USM2NUYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRmhebEZgby1GaXE2JUZbci1GLzY5USM2NkYoRjJGNUY4RjtGPUY/RkFGQ0ZGRklGS0ZNRlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeb0ZlckZoci1GJDYlRltkbEZgby1GaXE2JUZbci1GLzY5USQ0MzFGKEYyRjVGOEY7Rj1GP0ZBRkNGRkZJRktGTUZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GZXJGaHItRiQ2JUZbXGxGYG8tRmlxNiVGW3ItRi82OVEkNDMyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGYHpGYG8tRmlxNiVGW3ItRi82OVEkNDMzRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGX3ZGYG8tRmlxNiVGW3ItRi82OVEkNDgwRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyRmhyLUYkNiVGZXVGYG8tRmlxNiVGW3ItRi82OVEkNDgyRihGMkY1RjhGO0Y9Rj9GQUZDRkZGSUZLRk1GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vRmVyNyMsXmduKiYiIigiIiIpSSJ4R0YoIiQhUkZjZHhGY2R4KiQpRmVkeCIkIlJGY2R4RmNkeComIiImRmNkeClGZWR4IiQjUkZjZHhGY2R4KiYiIzVGY2R4KUZlZHgiJCRSRmNkeEZjZHgqJiIiJUZjZHgpRmVkeCIkMCJGY2R4RmNkeComIiInRmNkeClGZWR4IiQxIkZjZHhGY2R4KiYiIzpGY2R4KUZlZHgiJChRRmNkeEZjZHgqJiIjOEZjZHgpRmVkeCIkKVFGY2R4RmNkeComRltleEZjZHgpRmVkeCIkKlFGY2R4RmNkeComIiIpRmNkeClGZWR4IiQtIkZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQuIkZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQvIkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiMqKkZjZHhGY2R4KiQpRmVkeCIkKyJGY2R4RmNkeComIiIqRmNkeClGZWR4IiQsIkZjZHhGY2R4KiYiIzdGY2R4KUZlZHgiJE0lRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiJE4lRmNkeEZjZHgqJiIjNkZjZHgpRmVkeCIjJypGY2R4RmNkeComRl9meEZjZHgpRmVkeCIjKCpGY2R4RmNkeComRmNleEZjZHgpRmVkeCIjKSpGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIjJCpGY2R4RmNkeCokKUZlZHgiIyUqRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiIyYqRmNkeEZjZHgqJiIiI0ZjZHgpRmVkeCIjISpGY2R4RmNkeComRltleEZjZHgpRmVkeCIjIipGY2R4RmNkeComRmdleEZjZHgpRmVkeCIjIypGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkJFtGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkJVtGY2R4RmNkeComIiIkRmNkeClGZWR4IiQmW0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQlUUZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiQmUUZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiQnUUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQ2JUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiQ4JUZjZHhGY2R4KiYiIztGY2R4KUZlZHgiIygpRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiIykpRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiIyUpRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiIyYpRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiIycpRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiIyIpRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiIyQpRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJCJRRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiJCNRRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJCRRRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI3hGY2R4RmNkeComIiM5RmNkeClGZWR4IiN5RmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiIyEpRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiI3ZGY2R4RmNkeComRmpneEZjZHgpRmVkeCIjd0ZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiNzRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiI3RGY2R4RmNkeComRmldeUZjZHgpRmVkeCIjdUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiREJEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRSJUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiNwRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiI3FGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIjckZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiR5JEZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiR6JEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiQhUUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiNuRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiI29GY2R4RmNkeEZfZnhGY2R4KiZGZ2V4RmNkeClGZWR4IiQoW0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQpW0ZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiQqW0ZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiQkXEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiQjXEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiQlXEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRPJUZjZHhGY2R4KiQpRmVkeCIkUCVGY2R4RmNkeComRltleEZjZHgpRmVkeCIkUSVGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkIVxGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkJVJGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkJlJGY2R4RmNkeComRltleEZjZHhGZWR4RmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJDUiRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHgiJDYiRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJDciRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJDIiRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiJDMiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJDQiRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJE8iRmNkeEZjZHgqJClGZWR4IiRQIkZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRRIkZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiROIkZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRMIkZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRNIkZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRLIkZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQqXEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRJIkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRKIkZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRIIkZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRGIkZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRHIkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRFIkZjZHhGY2R4KiQpRmVkeCIkKyZGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkQyJGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkRCJGY2R4RmNkeComRltleEZjZHgpRmVkeCIkQiJGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkQCJGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkQSJGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkPyJGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkJ1xGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkPSJGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkPiJGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkPCJGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkKFxGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkKVxGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkJlxGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkOCJGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkOSJGY2R4RmNkeCokKUZlZHgiJDoiRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJDsiRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiJHMiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJHQiRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJHUiRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJHAiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJHEiRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiJHIiRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJG0iRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJG4iRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHgiJG8iRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJGoiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJGsiRmNkeEZjZHgqJkZpXXlGY2R4KUZlZHgiJGwiRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJGciRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJGgiRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJGkiRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiJChSRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiJClSRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJCpSRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJGQiRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJGUiRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJGYiRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJGEiRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJGIiRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJGMiRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJF4iRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJF8iRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiJGAiRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiI1pGY2R4RmNkeComRl9meEZjZHgpRmVkeCIkWyJGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkXCJGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkXSJGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkWCJGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkWSJGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkWiJGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkVSJGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkViJGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkVyJGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkUiJGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkUyJGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkVCJGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkOCNGY2R4RmNkeComRmRpeEZjZHgpRmVkeCIkOSNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkOiNGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkNSNGY2R4RmNkeComRltleEZjZHgpRmVkeCIkNiNGY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkNyNGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkOiVGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkOyVGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkMiNGY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkMyNGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkNCNGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkLyNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkMCNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkMSNGY2R4RmNkeCokKUZlZHgiJCwjRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJC0jRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJC4jRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJCk+RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJCo+RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJCsjRmNkeEZjZHgqJClGZWR4IiQkPkZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiQmPkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQoPkZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQlPkZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQhPkZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiQiPkZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiQjPkZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQoPUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiQpPUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiQqPUZjZHhGY2R4KiQpRmVkeCIkJT1GY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkJj1GY2R4RmNkeComRltleEZjZHgpRmVkeCIkJz1GY2R4RmNkeComRmNleEZjZHgpRmVkeCIkIj1GY2R4RmNkeComRl9leEZjZHgpRmVkeCIkIz1GY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkJD1GY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkeSJGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkeiJGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkIT1GY2R4RmNkeComRmpneEZjZHgpRmVkeCIkdiJGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkdyJGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkeCJGY2R4RmNkeComRmRpeEZjZHgpRmVkeCIkUyVGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkVCVGY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkVSVGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkQyNGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkQiNGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkQCNGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkQSNGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkPyNGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkPSNGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkPiNGY2R4RmNkeComRmNleEZjZHgpRmVkeCIkPCNGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkVCNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkVSNGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkUyNGY2R4RmNkeComRmRqeEZjZHgpRmVkeCIkTyNGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkUSNGY2R4RmNkeComRmpneEZjZHgpRmVkeCIkUiNGY2R4RmNkeComRmRpeEZjZHgpRmVkeCIkTCNGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkTSNGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkTiNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkKyVGY2R4RmNkeComRmFoeEZjZHgpRmVkeCIkLCVGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkSSNGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkSiNGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkSyNGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkSCNGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkRiNGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkbCNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkbSNGY2R4RmNkeComRltleEZjZHgpRmVkeCIkbiNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkaSNGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkaiNGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkayNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkWiVGY2R4RmNkeComRmldeUZjZHgpRmVkeCIkWyVGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkXCVGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkZyNGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkaCNGY2R4RmNkeCokKUZlZHgiJGUjRmNkeEZjZHgqJkZhaHhGY2R4KUZlZHgiJGMjRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJGQjRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJGIjRmNkeEZjZHgqJkZpXXlGY2R4KUZlZHgiJGAjRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJGEjRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJF8jRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiJDwlRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJD0lRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJD4lRmNkeEZjZHgqJClGZWR4IiRWJUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRXJUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRYJUZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiRZJUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRdI0ZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiReI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRcI0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiRaI0ZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRbI0ZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRZI0ZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRXI0ZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRYI0ZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRWI0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQhR0ZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiQiR0ZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiQjR0ZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiR4I0ZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiR5I0ZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiR6I0ZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiR1I0ZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiR2I0ZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiR3I0ZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiRyI0ZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiRzI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiR0I0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQuJUZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiQvJUZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQwJUZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRvI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRwI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRxI0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQqR0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQhSEZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiQiSEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQnR0ZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiQoR0ZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiQpR0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQkR0ZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiQlR0ZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiQmR0ZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRBJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiQiW0ZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiQxJUZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiQyJUZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiQjSEZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiQkSEZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiQlSEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQ/JUZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiRAJUZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRBJUZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiREI0ZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiQmSEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiQnSEZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQoSEZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiQrJEZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQtJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQqSEZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRdJUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiReJUZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRfJUZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRHI0ZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiQxJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiQyJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQzJEZjZHhGY2R4KiQpRmVkeCIkLiRGY2R4RmNkeComRmZneEZjZHgpRmVkeCIkLyRGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkMCRGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkNCRGY2R4RmNkeCokKUZlZHgiJDUkRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJDYkRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJDckRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHgiJDkkRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJDokRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJDgkRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiJGAlRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJGElRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiJGMlRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJD4kRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJD8kRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiJEAkRmNkeEZjZHgqJClGZWR4IiRkJUZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRlJUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRmJUZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRDJEZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRFJEZjZHhGY2R4KiQpRmVkeCIkQiRGY2R4RmNkeComRmZmeEZjZHgpRmVkeEZbZXhGY2R4RmNkeComRmdbeUZjZHgpRmVkeEZnZXhGY2R4RmNkeComRltmeEZjZHgpRmVkeEZiZHhGY2R4RmNkeComRmldeUZjZHgpRmVkeEZkaXhGY2R4RmNkeComRmZneEZjZHgpRmVkeEZkanhGY2R4RmNkeComRmJkeEZjZHgpRmVkeEZjZXhGY2R4RmNkeCokKUZlZHgiJEckRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJEgkRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJEkkRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJEYkRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHhGZmZ4RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHhGX2V4RmNkeEZjZHgqJkZnW3lGY2R4KUZlZHhGZmd4RmNkeEZjZHgqJkZpXXlGY2R4KUZlZHgiJEIlRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJEMlRmNkeEZjZHgqJkZkanhGY2R4KUZlZHhGYWh4RmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJCwkRmNkeEZjZHgqJkZnW3lGY2R4KUZlZHhGamd4RmNkeEZjZHgqJkZbZXhGY2R4KUZlZHhGX2Z4RmNkeEZjZHgqJClGZWR4IiRLJEZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiRMJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRNJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRnJUZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiRoJUZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiRpJUZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiRXJEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiRYJEZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiRZJEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiRUJEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRVJEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiRWJEZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRRJEZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiRSJEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRTJEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiROJEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRPJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRQJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQtJUZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiM/RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI0BGY2R4RmNkeComRmpneEZjZHgpRmVkeCIjQUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRiJEZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRjJEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiRhJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRuJUZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRvJUZjZHhGY2R4KiQpRmVkeCIkcCVGY2R4RmNkeComRl9leEZjZHgpRmVkeCIkcSVGY2R4RmNkeComRltleEZjZHgpRmVkeCIjPEZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiM9RmNkeEZjZHgqJkZkaXhGY2R4KUZlZHhGaV15RmNkeEZjZHgqJkZbZnhGY2R4KUZlZHhGW2Z4RmNkeEZjZHgqJkZbZXhGY2R4KUZlZHhGZ1t5RmNkeEZjZHgqJClGZWR4IiRqJUZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRrJUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRsJUZjZHhGY2R4KiZGZGl4RmNkeClGZWR4IiRtJUZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiRdJEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRfJEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRgJEZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRaJEZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiRbJEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRmJEZjZHhGY2R4KiQpRmVkeCIkZyRGY2R4RmNkeComRmdleEZjZHgpRmVkeCIkZCRGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIkRSVGY2R4RmNkeComRmZmeEZjZHgpRmVkeCIkRiVGY2R4RmNkeComRltleEZjZHgpRmVkeCIjRUZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiNGRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiI0JGY2R4RmNkeComRltmeEZjZHgpRmVkeCIjQ0ZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiNERmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJDwkRmNkeEZjZHgqJkZpXXlGY2R4KUZlZHgiJD0kRmNkeEZjZHgqJkZfZnhGY2R4KUZlZHgiI0dGY2R4RmNkeComRltleEZjZHgpRmVkeCIjSEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiNJRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiJGgkRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHgiJGkkRmNkeEZjZHgqJkZqZ3hGY2R4KUZlZHgiJGokRmNkeEZjZHgqJkZkanhGY2R4KUZlZHgiJEclRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJEglRmNkeEZjZHgqJkZjZXhGY2R4KUZlZHgiJEklRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI01GY2R4RmNkeComRl9leEZjZHgpRmVkeCIjTkZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiNKRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiI0tGY2R4RmNkeComRl9meEZjZHgpRmVkeCIjTEZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRKJEZjZHhGY2R4KiZGZmZ4RmNkeClGZWR4IiREJUZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiRrJEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiRsJEZjZHhGY2R4KiZGX2Z4RmNkeClGZWR4IiRtJEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiNPRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI1BGY2R4RmNkeComRltmeEZjZHgpRmVkeCIjUUZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRyJUZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRzJUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiR0JUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiQ5JUZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiRuJEZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiRvJEZjZHhGY2R4KiZGYmR4RmNkeClGZWR4IiRxJEZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiNSRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI1NGY2R4RmNkeComRmdbeUZjZHgpRmVkeCIjVEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiR0JEZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiR1JEZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiRyJEZjZHhGY2R4KiZGW2V4RmNkeClGZWR4IiQzJUZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiQ0JUZjZHhGY2R4KiZGX2V4RmNkeClGZWR4IiQ1JUZjZHhGY2R4KiQpRmVkeCIkdiRGY2R4RmNkeComRltmeEZjZHgpRmVkeCIkdyRGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIkeCRGY2R4RmNkeComRmZneEZjZHgpRmVkeCIjVUZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiNWRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiJHUlRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJHYlRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiJHclRmNkeEZjZHgqJkZkaXhGY2R4KUZlZHgiI1dGY2R4RmNkeCokKUZlZHgiI1hGY2R4RmNkeComRmJkeEZjZHgpRmVkeCIjWUZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiQ7JEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiNbRmNkeEZjZHgqJClGZWR4IiNcRmNkeEZjZHgqJClGZWR4IiNdRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiI15GY2R4RmNkeComRmdbeUZjZHgpRmVkeCIjX0ZjZHhGY2R4KiZGamd4RmNkeClGZWR4IiNgRmNkeEZjZHgqJkZbZXhGY2R4KUZlZHgiI2FGY2R4RmNkeComRmZneEZjZHgpRmVkeCIjZEZjZHhGY2R4KiZGZGp4RmNkeClGZWR4IiNlRmNkeEZjZHgqJkZiZHhGY2R4KUZlZHgiI2ZGY2R4RmNkeComRmpneEZjZHgpRmVkeCIjYkZjZHhGY2R4KiZGaV15RmNkeClGZWR4IiNjRmNkeEZjZHgqJkZbZnhGY2R4KUZlZHgiJHglRmNkeEZjZHgqJkZfZXhGY2R4KUZlZHgiJHklRmNkeEZjZHgqJkZmZnhGY2R4KUZlZHgiJHolRmNkeEZjZHgqJkZnZXhGY2R4KUZlZHgiI2dGY2R4RmNkeCokKUZlZHgiI2hGY2R4RmNkeComRmZneEZjZHgpRmVkeCIjaUZjZHhGY2R4KiZGY2V4RmNkeClGZWR4IiNqRmNkeEZjZHgqJkZmZ3hGY2R4KUZlZHgiI2tGY2R4RmNkeCokKUZlZHgiI2xGY2R4RmNkeComRmRpeEZjZHgpRmVkeCIjbUZjZHhGY2R4KiZGZ1t5RmNkeClGZWR4IiRKJUZjZHhGY2R4KiZGYWh4RmNkeClGZWR4IiRLJUZjZHhGY2R4KiZGZmd4RmNkeClGZWR4IiRMJUZjZHhGY2R4KiZGW2Z4RmNkeClGZWR4IiQhW0ZjZHhGY2R4KiZGZ2V4RmNkeClGZWR4IiQjW0ZjZHhGY2R4 Timing time(lbCharpoly(p,A,'x')); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI2M0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkaiMhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjY1N0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkZCchIiQ=
<Text-field style="Heading 3" layout="Heading 3">Linear System Solving</Text-field> restart():with(LinBox):with(LinearAlgebra): n:=500;p:=17;gen:=rand(0..p-1); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQ1MDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrJjcjRmVy NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg== NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRnZW5GKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GJDYoLUZfbzYzUSVwcm9jRigvRmNvUSFGKEZlb0Znby9Gam9RJDBlbUYoL0ZdcEZeckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZfbzYzUSIoRigvRmNvUSdwcmVmaXhGKC9GZm9GO0Znby9Gam9RLnRoaW5tYXRoc3BhY2VGKC9GXXBGaXIvRl9wRjtGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Iy1GLTY5RlxyRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIpRigvRmNvUShwb3N0Zml4RihGZ3JGZ29GaHIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRltzRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUknbXNwYWNlR0YlNiYvJSdoZWlnaHRHUScwLjB+ZXhGKC8lJndpZHRoR1EnMC4zfmVtRigvJSZkZXB0aEdGXHQvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRigtRiQ2JS1GJDYlRmJyLUYkNilGaHFGYHItRmhzNiZGanNGXXRGYHQvRmN0UTZpbmNyZWFzZWluZGVudG5ld2xpbmVGKC1GJDYmLUZfbzYzUSdvcHRpb25GKEZbckZlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZldUZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUYtNjlRKGJ1aWx0aW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GX282M1EiO0YoRmJvRmVvL0Zob0Y7Rl1yRlxwRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzLUkjbW5HRiU2OVEkMzkxRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GaHM2JkZqcy9GXnRRJzAuMH5lbUYoRmB0L0ZjdFE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRigtRl9vNjNRKWVuZH5wcm9jRihGW3JGZW9GZ29GZHVGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGYHMtRl9vNjNRMCZBcHBseUZ1bmN0aW9uO0YoRmJvRmVvRmdvRl1yRl9yRl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiVGYnItRiQ2Jy1GYXY2OVEiNkYoRjBGM0Y2RmR2RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZldkZcby1GX282M1EiLEYoRmJvRmVvRl92Rl1yL0ZdcFEzdmVyeXRoaWNrbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmF2NjlRIzE3RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmp3LUZhdjY5USI1RihGMEYzRjZGZHZGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmV2RlxvRmBzRmd2Rl13NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRnZW5HRihmKkYoRihGKEYoLWYqRihGKDYjSShidWlsdGluR0YoRigiJCJSRihGKEYoSSVGQUlMRyUqcHJvdGVjdGVkRzYlIiInIiM8IiImRihGKEYoNyNGXXk= A:=Matrix(n,gen,datatype=integer[4]);b:=Vector(n,gen,datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH41MDB+eH41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiYkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjUwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GY3M2Ji1GLDY5UShpbnRlZ2VyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GIzYjLUkjbW5HRiQ2OVEiNEYnRi9GMkY1L0Y5RjdGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm4vRmluUSdub3JtYWxGJ0Zbb0ZddEZgdC1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Maple linear system solving no native solution available B:=Modular:-Mod(p,A,integer[4]);b1:=Modular:-Mod(p,b,integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH41MDB+eH41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEoQ19vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjYjFGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USt+MX4uLn41MDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USdWZWN0b3JGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtRiw2OVEnY29sdW1uRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLyUscGxhY2Vob2xkZXJHRjctRmhyNiMtRltzNiMtRiM2JC1GLDY5USxEYXRhflR5cGU6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmNzNiYtRiw2OVEoaW50ZWdlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjRGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW29GXXRGYHQtRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKENfb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn pv:=Vector(n-1):Modular:-LUDecomposition(p,B,pv,0); Modular:-LUApply(p,B,pv,b1);b1[1..10]; LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbW9HRiQ2M1EiW0YnLyUlZm9ybUdRJ3ByZWZpeEYnLyUmZmVuY2VHUSV0cnVlRicvJSpzZXBhcmF0b3JHUSZmYWxzZUYnLyUnbHNwYWNlR1EudGhpbm1hdGhzcGFjZUYnLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjQvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYnLyUlc2l6ZUdRIzEyRicvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLUYjNiMtSSdtdGFibGVHRiQ2LC1JJG10ckdGJDYjLUkkbXRkR0YkNiMtSSNtbkdGJDY5USIzRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHRlIvJSVib2xkR0Y3LyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR0ZVLyUrYmFja2dyb3VuZEdGWC8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNC8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZPLyUqbWF0aGNvbG9yR0ZVLyUvbWF0aGJhY2tncm91bmRHRlgvJStmb250ZmFtaWx5R0Zkby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSltYXRoc2l6ZUdGUi1GaW42Iy1GXG82Iy1GX282OVEiMEYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USMxMkYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USMxNUYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USI0RidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRmluNiMtRlxvNiMtRl9vNjlRIzExRidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnJGZ3ItRmluNiMtRlxvNiMtRl9vNjlRIjlGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeckZcdC1GaW42Iy1GXG82Iy1GX282OVEiN0YnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUYsNjNRIl1GJy9GMFEocG9zdGZpeEYnRjJGNUY4L0Y8UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVg== LinBox linear system solving x:=lbSolve(p,A,b);x[1..10]; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI5M0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkJEghIiQ= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEieEYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjUwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USlhbnl0aGluZ0YnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbW9HRiQ2M1EiW0YnLyUlZm9ybUdRJ3ByZWZpeEYnLyUmZmVuY2VHUSV0cnVlRicvJSpzZXBhcmF0b3JHUSZmYWxzZUYnLyUnbHNwYWNlR1EudGhpbm1hdGhzcGFjZUYnLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjQvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYnLyUlc2l6ZUdRIzEyRicvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLUYjNiMtSSdtdGFibGVHRiQ2LC1JJG10ckdGJDYjLUkkbXRkR0YkNiMtSSNtbkdGJDY5USIzRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHRlIvJSVib2xkR0Y3LyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR0ZVLyUrYmFja2dyb3VuZEdGWC8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNC8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZPLyUqbWF0aGNvbG9yR0ZVLyUvbWF0aGJhY2tncm91bmRHRlgvJStmb250ZmFtaWx5R0Zkby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSltYXRoc2l6ZUdGUi1GaW42Iy1GXG82Iy1GX282OVEiMEYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USMxMkYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USMxNUYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USI0RidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRmluNiMtRlxvNiMtRl9vNjlRIzExRidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnJGZ3ItRmluNiMtRlxvNiMtRl9vNjlRIjlGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeckZcdC1GaW42Iy1GXG82Iy1GX282OVEiN0YnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUYsNjNRIl1GJy9GMFEocG9zdGZpeEYnRjJGNUY4L0Y8UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVg== Timing comparison B:=Modular:-Mod(p,A,integer[4]):b1:=Modular:-Mod(p,b,integer[4]):pv:=Vector(n-1): t1:=time(Modular:-LUDecomposition(p,B,pv,0))+time(Modular:-LUApply(p,B,pv,b1)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC4yNThGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MUdGKCQiJGUjISIkNyNGZXI= t2:=time(lbSolve(p,A,b)); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjI3NEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkdSMhIiQ= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN0MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUkjbW5HRiU2OVEmMC40MzVGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN0MkdGKCQiJE4lISIkNyNGZXI= t1/t2; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5US0wLjU5MzEwMzQ0ODNGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyQiKyRbTTUkZiEjNQ== Singular system n:=100; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQxMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIjcjRmVy A:=Matrix(n,n,gen,datatype=integer[4]):c:=Vector(n,gen,datatype=integer[4]):c[n]:=0: A[1..n,n]:=A.c; LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYmLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y6LyUqc3Vic2NyaXB0R0Y6LyUsc3VwZXJzY3JpcHRHRjovJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R0Y9LyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGRi8lL21hdGhiYWNrZ3JvdW5kR0ZJLyUrZm9udGZhbWlseUdGNC8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNy1GIzYlLUYjNiUtSSNtbkdGJDY5USIxRidGMkY1RjgvRjxGOkY+RkBGQkZERkdGSkZMRk5GUEZSRlRGVkZYRmVuRmduRmluL0Zcb1Enbm9ybWFsRidGXm8tSSNtb0dGJDYzUSMuLkYnLyUlZm9ybUdRKHBvc3RmaXhGJy8lJmZlbmNlR0Y6LyUqc2VwYXJhdG9yR0Y6LyUnbHNwYWNlR1EwbWVkaXVtbWF0aHNwYWNlRicvJSdyc3BhY2VHUSQwZW1GJy8lKXN0cmV0Y2h5R0Y6LyUqc3ltbWV0cmljR0Y6LyUobWF4c2l6ZUdRKWluZmluaXR5RicvJShtaW5zaXplR0Znby8lKGxhcmdlb3BHRjovJS5tb3ZhYmxlbGltaXRzR0Y6LyUnYWNjZW50R0Y6LyUwZm9udF9zdHlsZV9uYW1lR0ZaLyUlc2l6ZUdGNy8lK2ZvcmVncm91bmRHRkYvJStiYWNrZ3JvdW5kR0ZJLUZlbzY5USQxMDBGJ0YyRjVGOEZob0Y+RkBGQkZERkdGSkZMRk5GUEZSRlRGVkZYRmVuRmduRmluRmlvRl5vLUZccDYzUSIsRicvRmBwUSZpbmZpeEYnRmJwL0ZlcEY9L0ZncEZbcS9GanBRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlxxRl5xRmBxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmFyRmNyLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGOi1GXHA2M1EjOj1GJ0ZpckZicEZkcC9GZ3BRL3RoaWNrbWF0aHNwYWNlRicvRmpwRmhzRlxxRl5xRmBxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmFyLUkobWFjdGlvbkdGJDYkLUYjNiUtRlxwNjNRIltGJy9GYHBRJ3ByZWZpeEYnL0ZjcEY9RmRwL0ZncFEudGhpbm1hdGhzcGFjZUYnL0ZqcEZmdC9GXXFGPUZecUZgcUZjcUZlcUZncUZpcUZbckZdckZfckZhci1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYvNjlRK34xfi4ufjEwMH5GJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRiw2Ji1GLzY5USdWZWN0b3JGJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRiM2Iy1GLzY5USdjb2x1bW5GJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm9GX3NGYnMtRl11NiMtRmB1NiMtRiM2JC1GLzY5USxEYXRhflR5cGU6fkYnRjJGNUY4RjtGPkZARkJGREZHRkpGTEZORlBGUkZURlZGWEZlbkZnbkZpbkZbb0Zeby1GLDYmLUYvNjlRKGludGVnZXJGJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRiM2Iy1GZW82OVEiNEYnRjJGNUY4RmhvRj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GaW9GXm9GX3NGYnMtRl11NiMtRmB1NiMtRiM2JC1GLzY5USpTdG9yYWdlOn5GJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRi82OVEscmVjdGFuZ3VsYXJGJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRl11NiMtRmB1NiMtRiM2JC1GLzY5UShPcmRlcjp+RidGMkY1RjhGO0Y+RkBGQkZERkdGSkZMRk5GUEZSRlRGVkZYRmVuRmduRmluRltvRl5vLUYvNjlRLkZvcnRyYW5fb3JkZXJGJ0YyRjVGOEY7Rj5GQEZCRkRGR0ZKRkxGTkZQRlJGVEZWRlhGZW5GZ25GaW5GW29GXm8tRlxwNjNRIl1GJ0ZfcEZkdEZkcEZldC9GanBRMnZlcnl0aGlubWF0aHNwYWNlRidGaHRGXnFGYHFGY3FGZXFGZ3FGaXFGW3JGXXJGX3JGYXIvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= lbRank(A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAxMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjNSEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USM5OUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiMqKg== pv:=Vector(n-1):Modular:-LUDecomposition(p,A,pv,0); Error, (in LinearAlgebra:-Modular:-LUDecomposition) matrix is singular x:=lbSolve(p,A,c):x[1..10]; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjAxNEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjOSEiJA== LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbW9HRiQ2M1EiW0YnLyUlZm9ybUdRJ3ByZWZpeEYnLyUmZmVuY2VHUSV0cnVlRicvJSpzZXBhcmF0b3JHUSZmYWxzZUYnLyUnbHNwYWNlR1EudGhpbm1hdGhzcGFjZUYnLyUncnNwYWNlR0Y6LyUpc3RyZXRjaHlHRjQvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYnLyUlc2l6ZUdRIzEyRicvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLUYjNiMtSSdtdGFibGVHRiQ2LC1JJG10ckdGJDYjLUkkbXRkR0YkNiMtSSNtbkdGJDY5USIzRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHRlIvJSVib2xkR0Y3LyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR0ZVLyUrYmFja2dyb3VuZEdGWC8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNC8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZPLyUqbWF0aGNvbG9yR0ZVLyUvbWF0aGJhY2tncm91bmRHRlgvJStmb250ZmFtaWx5R0Zkby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSltYXRoc2l6ZUdGUi1GaW42Iy1GXG82Iy1GX282OUZGRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZpbjYjLUZcbzYjLUZfbzY5USI3RidGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRmluNiMtRlxvNiMtRl9vNjlRIjBGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeckZdcy1GaW42Iy1GXG82Iy1GX282OVEjMTFGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeci1GaW42Iy1GXG82Iy1GX282OVEjMTVGJ0Zib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeckZbdC1GaW42Iy1GXG82Iy1GX282OVEiOEYnRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yRmJ0LUYsNjNRIl1GJy9GMFEocG9zdGZpeEYnRjJGNUY4L0Y8UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRj1GP0ZBRkRGR0ZJRktGTUZQRlNGVg== Norm(map(modp,A.x-c,p)); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USIwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiIiE= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2OVEhRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUlYm9sZEdRJmZhbHNlRicvJSdpdGFsaWNHUSV0cnVlRicvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHUShbMCwwLDBdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSkyRH5JbnB1dEYnLyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkYvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy8lKW1hdGhzaXplR0Y0
<Text-field style="Heading 2" layout="Heading 2">Benefits in practice</Text-field> Sometime numerical computation is not satisfying and exact computation becomes mandatory with(LinearAlgebra):
<Text-field style="Heading 3" layout="Heading 3">Very bad conditionned matrix</Text-field> Moler:=proc(n) local i,j,Moler; Moler:=Matrix(n); for i from 1 to n do for j from 1 to (i-1) do Moler[i,j]:=j-2; end do; Moler[i,i]:=i; for j from (i+1) to n do Moler[i,j]:=i-2; end do; end do; return Moler; end proc: Redheffer:=proc(n) local i,j,Redheffer; Redheffer:=Matrix(n); for i from 1 to n do Redheffer[i,1]:=1; for j from 2 to n do if (j mod i = 0) then Redheffer[i,j]:=1; else Redheffer[i,j]:=0; end if; end do; end do: return Redheffer; end proc: Moler(10),Redheffer(10); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUYjNiUtSSNtb0dGJDYzUSJbRicvJSVmb3JtR1EncHJlZml4RicvJSZmZW5jZUdRJXRydWVGJy8lKnNlcGFyYXRvckdRJmZhbHNlRicvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRicvJSdyc3BhY2VHRjwvJSlzdHJldGNoeUdGNi8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSVzaXplR1EjMTJGJy8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GJy8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRictRiM2Iy1JJ210YWJsZUdGJDYsLUkkbXRyR0YkNiwtSSRtdGRHRiQ2Iy1JI21uR0YkNjlGSC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdGVC8lJWJvbGRHRjkvJSdpdGFsaWNHRjkvJSp1bmRlcmxpbmVHRjkvJSpzdWJzY3JpcHRHRjkvJSxzdXBlcnNjcmlwdEdGOS8lK2ZvcmVncm91bmRHRlcvJStiYWNrZ3JvdW5kR0ZaLyUnb3BhcXVlR0Y5LyUrZXhlY3V0YWJsZUdGOS8lKXJlYWRvbmx5R0Y2LyUpY29tcG9zZWRHRjkvJSpjb252ZXJ0ZWRHRjkvJStpbXNlbGVjdGVkR0Y5LyUscGxhY2Vob2xkZXJHRjkvJTBmb250X3N0eWxlX25hbWVHRlEvJSptYXRoY29sb3JHRlcvJS9tYXRoYmFja2dyb3VuZEdGWi8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lKW1hdGhzaXplR0ZULUZebzYjLUZhbzY5USkmbWludXM7MUYnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRmFyRmFyRmFyRmFyRmFyRmFyRmFyRmFyLUZbbzYsRmFyLUZebzYjLUZhbzY5USIyRidGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl5vNiMtRmFvNjlRIjBGJ0Zjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZdc0Zdc0Zdc0Zdc0Zdc0Zdc0Zdcy1GW282LEZhckZdcy1GXm82Iy1GYW82OVEiM0YnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRl1vRl1vRl1vRl1vRl1vRl1vRl1vLUZbbzYsRmFyRl1zRl1vLUZebzYjLUZhbzY5USI0RidGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3JGaHJGaHJGaHJGaHJGaHJGaHItRltvNixGYXJGXXNGXW9GaHItRl5vNiMtRmFvNjlRIjVGJ0Zjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZkc0Zkc0Zkc0Zkc0Zkcy1GW282LEZhckZdc0Zdb0ZockZkcy1GXm82Iy1GYW82OVEiNkYnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRlt0Rlt0Rlt0Rlt0LUZbbzYsRmFyRl1zRl1vRmhyRmRzRlt0LUZebzYjLUZhbzY5USI3RidGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3JGYnRGYnRGYnQtRltvNixGYXJGXXNGXW9GaHJGZHNGW3RGYnQtRl5vNiMtRmFvNjlRIjhGJ0Zjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZpdEZpdC1GW282LEZhckZdc0Zdb0ZockZkc0ZbdEZidEZpdC1GXm82Iy1GYW82OVEiOUYnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRmB1LUZbbzYsRmFyRl1zRl1vRmhyRmRzRlt0RmJ0Rml0RmB1LUZebzYjLUZhbzY5USMxMEYnRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUYuNjNRIl1GJy9GMlEocG9zdGZpeEYnRjRGN0Y6L0Y+UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRj9GQUZDRkZGSUZLRk1GT0ZSRlVGWC1GLjYzUSIsRicvRjJRJmluZml4RicvRjVGOS9GOEY2L0Y7USQwZW1GJy9GPlEzdmVyeXRoaWNrbWF0aHNwYWNlRicvRkBGOUZBRkNGRkZJRktGTUZPRlJGVUZYLUYjNiVGLS1GIzYjLUZobjYsLUZbbzYsRl1vRl1vRl1vRl1vRl1vRl1vRl1vRl1vRl1vRl1vLUZbbzYsRl1vRl1vRl1zRl1vRl1zRl1vRl1zRl1vRl1zRl1vLUZbbzYsRl1vRl1zRl1vRl1zRl1zRl1vRl1zRl1zRl1vRl1zLUZbbzYsRl1vRl1zRl1zRl1vRl1zRl1zRl1zRl1vRl1zRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1vRl1zRl1zRl1zRl1zRl1vLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1vRl1zRl1zRl1zRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1zRl1vRl1zRl1zRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1zRl1zRl1vRl1zRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1zRl1zRl1zRl1vRl1zLUZbbzYsRl1vRl1zRl1zRl1zRl1zRl1zRl1zRl1zRl1zRl1vRmp2 n:=200; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJuRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USQyMDBGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiQrIzcjRmVy M:=1.*Moler(n):R:=1.*Redheffer(n):MR:=M.R; LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEjTVJGJy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJSVib2xkR1EmZmFsc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lKnVuZGVybGluZUdGNy8lKnN1YnNjcmlwdEdGNy8lLHN1cGVyc2NyaXB0R0Y3LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGOi8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtb0dGJDYzUSM6PUYnLyUlZm9ybUdRJmluZml4RicvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRmpvLyUpc3RyZXRjaHlHRjcvJSpzeW1tZXRyaWNHRjcvJShtYXhzaXplR1EpaW5maW5pdHlGJy8lKG1pbnNpemVHUSIxRicvJShsYXJnZW9wR0Y3LyUubW92YWJsZWxpbWl0c0dGNy8lJ2FjY2VudEdGNy8lMGZvbnRfc3R5bGVfbmFtZUdGVy8lJXNpemVHRjQvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JKG1hY3Rpb25HRiQ2JC1GIzYlLUZebzYzUSJbRicvRmJvUSdwcmVmaXhGJy9GZW9GOkZmby9GaW9RLnRoaW5tYXRoc3BhY2VGJy9GXHBGYXIvRl5wRjpGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EtSSdtdGFibGVHRiQ2Ji1JJG10ckdGJDYjLUkkbXRkR0YkNiMtRiM2JC1GLDY5USx+MjAwfnh+MjAwfkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnTWF0cml4RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1JJW1zdWJHRiQ2Ji1GLDY5USZmbG9hdEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjhGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3LUZocjYjLUZbczYjLUYjNiQtRiw2OVEqU3RvcmFnZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USxyZWN0YW5ndWxhckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRmhyNiMtRltzNiMtRiM2JC1GLDY5UShPcmRlcjp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5US5Gb3J0cmFuX29yZGVyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GXm82M1EiXUYnL0Zib1EocG9zdGZpeEYnRl9yRmZvRmByL0ZccFEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZjckZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS8lK2FjdGlvbnR5cGVHUS1icm93c2VydGFibGVGJw== ConditionNumber(M); ConditionNumber(R); ConditionNumber(MR); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtbkdGJTY5USw4LjQ4MDEwODYwMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y4LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRMSZJbnZpc2libGVUaW1lcztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUklbXN1cEdGJTYlLUYtNjlRIzEwRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRi02OVEkMTIzRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8vJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYoNyMkIissJzMsWykiJDki NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USwxMTI1MC4wMDAwMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIrKysrRDYhIiY= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtbkdGJTY5USwyLjUyNzg2NTk5MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y4LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRMSZJbnZpc2libGVUaW1lcztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUSQwZW1GKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUklbXN1cEdGJTYlLUYtNjlRIzEwRihGMEYzRjZGOUY7Rj1GP0ZBRkRGR0ZJRktGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRi02OVEjMjBGKEYwRjNGNkY5RjtGPUY/RkFGREZHRklGS0ZORlBGUkZURlZGWUZlbkZnbkZpbkZcby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRig3IyQiKyMqZid5XyMiIzY= Solving a linear system b:=1.*Vector(n,rand(-1..1)); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiYkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjIwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GY3M2Ji1GLDY5USZmbG9hdEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1JI21uR0YkNjlRIjhGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuL0ZpblEnbm9ybWFsRidGW29GXXRGYHQtRmhyNiMtRltzNiMtRiM2JC1GLDY5USpTdG9yYWdlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLHJlY3Rhbmd1bGFyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn Digits:=14; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USdEaWdpdHNGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1JI21uR0YlNjlRIzE0RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkknRGlnaXRzR0YoIiM5NyNGZXI= t:=time():x:=LinearSolve(MR,b,method=hybrid):time()-t; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjAwOUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIiKiEiJA== Norm(MR.x-b); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UTQyMzcuMTE3MTg3NTAwMDAwMDAwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMkIjMrKysrdj08ckIhIzo= A:=Matrix(MR,datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiQUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRKGludGVnZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USI0RidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbi9GaW5RJ25vcm1hbEYnRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= t:=time():y:=lbSolve(A,b):time()-t; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjA2MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIjaSEiJA== NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjMwN0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkMiQhIiQ= Norm(A.y-b); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMwLkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIiIUZdbw==
<Text-field style="Heading 3" layout="Heading 3">High precision results</Text-field> Tref:=ImportMatrix("tref200.dat",format=entries); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVElVHJlZkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRLH4yMDB+eH4yMDB+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GLDY5USdNYXRyaXhGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEsRGF0YX5UeXBlOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRKWFueXRoaW5nRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEnc3BhcnNlRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKE9yZGVyOn5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUYsNjlRLkZvcnRyYW5fb3JkZXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZebzYzUSJdRicvRmJvUShwb3N0Zml4RidGX3JGZm9GYHIvRlxwUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRmNyRl9wRmFwRmRwRmdwRmlwRltxRl1xRl9xRmFxRmNxLyUrYWN0aW9udHlwZUdRLWJyb3dzZXJ0YWJsZUYn b:=Vector(200,rand(-1..1),datatype=integer[4]); LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEiYkYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y6LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JI21vR0YkNjNRIzo9RicvJSVmb3JtR1EmaW5maXhGJy8lJmZlbmNlR0Y3LyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGam8vJSlzdHJldGNoeUdGNy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRjcvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR0ZXLyUlc2l6ZUdGNC8lK2ZvcmVncm91bmRHRkMvJStiYWNrZ3JvdW5kR0ZGLUkobWFjdGlvbkdGJDYkLUYjNiUtRl5vNjNRIltGJy9GYm9RJ3ByZWZpeEYnL0Zlb0Y6RmZvL0Zpb1EudGhpbm1hdGhzcGFjZUYnL0ZccEZhci9GXnBGOkZfcEZhcEZkcEZncEZpcEZbcUZdcUZfcUZhcUZjcS1JJ210YWJsZUdGJDYmLUkkbXRyR0YkNiMtSSRtdGRHRiQ2Iy1GIzYkLUYsNjlRK34xfi4ufjIwMH5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUklbXN1YkdGJDYmLUYsNjlRJ1ZlY3RvckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiM2Iy1GLDY5USdjb2x1bW5GJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGNy1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRLERhdGF+VHlwZTp+RidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GY3M2Ji1GLDY5UShpbnRlZ2VyRidGL0YyRjVGOEY7Rj1GP0ZBRkRGR0ZJRktGTUZPRlFGU0ZVRlhGWkZmbkZobkZbby1GIzYjLUkjbW5HRiQ2OVEiNEYnRi9GMkY1L0Y5RjdGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm4vRmluUSdub3JtYWxGJ0Zbb0ZddEZgdC1GaHI2Iy1GW3M2Iy1GIzYkLUYsNjlRKlN0b3JhZ2U6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEscmVjdGFuZ3VsYXJGJ0YvRjJGNUY4RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGWEZaRmZuRmhuRltvLUZocjYjLUZbczYjLUYjNiQtRiw2OVEoT3JkZXI6fkYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRiw2OVEuRm9ydHJhbl9vcmRlckYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tRl5vNjNRIl1GJy9GYm9RKHBvc3RmaXhGJ0ZfckZmb0Zgci9GXHBRMnZlcnl0aGlubWF0aHNwYWNlRidGY3JGX3BGYXBGZHBGZ3BGaXBGW3FGXXFGX3FGYXFGY3EvJSthY3Rpb250eXBlR1EtYnJvd3NlcnRhYmxlRic= Digits:=14; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USdEaWdpdHNGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1JI21uR0YlNjlRIzE0RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkknRGlnaXRzR0YoIiM5NyNGZXI= t:=time():x:=LinearSolve(1.*Tref,1.*b):time()-t; NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjA2NUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIjbCEiJA== Norm(Tref.x-b); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtbkdGJTY5UTQyLjMxNzMxMzQzNjQ2MDc1NzgyRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkYvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1ExJkludmlzaWJsZVRpbWVzO0YoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGQy8lK2JhY2tncm91bmRHRkYtSSVtc3VwR0YlNiUtRi02OVEjMTBGKEYwRjNGNkY5RjtGPUY/RkFGREZHRklGS0ZORlBGUkZURlZGWUZlbkZnbkZpbkZcby1GLTY5USMtN0YoRjBGM0Y2RjlGO0Y9Rj9GQUZERkdGSUZLRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGKDcjJCIzI3l2Z2tWOHRKIyEjQw== t:=time():y:=lbSolve(Tref,b):time()-t; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjEyNUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkRCIhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USYwLjM3MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjJCIkcyQhIiQ= Norm(Tref.y-b); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USIwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiIiE= Bug in Maple Determinant(Tref);Rank(Tref); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USIwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiIiE= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQxOTlGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKj4= Digits:=14; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USdEaWdpdHNGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1JI21uR0YlNjlRIzE0RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkknRGlnaXRzR0YoIiM5NyNGZXI= Determinant(1.*Tref);Rank(1.*Tref); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtbkdGJTY5UTAyLjQwODQ1MTkyNTQ4MDVGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGOC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUTEmSW52aXNpYmxlVGltZXM7RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EkMGVtRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZDLyUrYmFja2dyb3VuZEdGRi1JJW1zdXBHRiU2JS1GLTY5USMxMEYoRjBGM0Y2RjlGO0Y9Rj9GQUZERkdGSUZLRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUYtNjlRJDUxMkYoRjBGM0Y2RjlGO0Y9Rj9GQUZERkdGSUZLRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGKDcjJCIvMFtEPlgzQyIkKlw= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQyMDBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKyM= lbDeterminant(Tref);lbRank(Tref); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjEzNUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkTiIhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UVxbbTI0MDg0NTE5MjU0ODAyNzQzMTkzNTM5MjE0MTY1NjUwNzE0MDcxODM4ODg4OTI4ODk5NjM4MDgxMzEzMjU2MjE0MjAxMDk4MTY2MDQyMzgyMTg3MDYwNDE4MDEzMTA5MzQ5NzE1NjMzNzYyNDgzNDY1ODIzMjM4NTEyNTU5ODQwNjk4OTQ4OTY0MDE1NjUwNDExMzc4MjU1NDYxMzU2OTYyODg4NzMwMjgwNjEwMzQ0MTc2MzU1NDEyMjQ4OTk4MDc1NDE0NjYzMTcxNzUxOTYyMTQyMzA3OTQ3MjE4NTE3NDkyNzAzNzI4OTg2NDMzNDU1MzAzOTc1NTM4MjczNDQ3NTc2NzY2NTQ2OTE0MDkyMTEwNzcxMzg1NTM2NDkyMzk4Mzk0OTQ1MDMxODUyMjU1NjYwMDgzOTU0NjAwODY1Mzg2OTMwMDM3Nzg4OTk4NDYwMTE4NjcwNjc2MDM5MzMwMjQzOTgxNjAyMjI5MDc3MzYxMzIzODAzNjQ0NTU2NzY0NDkxMzg4MDQzNTQyODAzNTkyOTc0NTYxMjM0MDM5NjI1ODAzNTg3OTI2OTYwNjI0ODYxOTk0NzE4OTQ4ODI3MTczMTU4Nzc2Mzg5OTAxMzUwNDUzOTMzNDM5NTE4MzA4OTgwNDQ3NzY2NDUxODE4NDg4MzcxMDE2Njg2MzQyOEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIlxbbUdNJ287NVApWz09WG14VyEpKjMkPSZSTSRSWF04ISoqUXcoZUo8RilbKj1aKj4nW2lncCN6ZS5laVJTQmhYKEhmLkdhViEpUSJca25iV08hUUtodDJIQWciKVJDSSRSZ25xJz0sWSkqKil5UCskcFFsM2dhUjNnY0RfPS5YXFIpUiNcT2JRcjI2IzQ5cGFtbmRaTUZRYihSSWJNVicpKkdQcSNcPCY9cyV6SVVAJz52ckptOWEyKSoqW0FUYmo8Vy5oIUdJKCkpRydwTmhhRHk4VF1jLGsqWyopcFMpZkReUUsjZVkkW2lQajooXCQ0Siw9LzEoPSNRVWc7KTQsVUBjS0oiM1EnKiopRyopKSlRPTI5MmxsVEBSTj5WRiFbRD5YM0M= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtc0dGJTYjUTFjb252ZXJzaW9ufnRpbWU6RigtSSNtb0dGJTYzUSIsRigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdRJXRydWVGKC8lJ2xzcGFjZUdRJDBlbUYoLyUncnNwYWNlR1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvJSlzdHJldGNoeUdGOS8lKnN5bW1ldHJpY0dGOS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjkvJS5tb3ZhYmxlbGltaXRzR0Y5LyUnYWNjZW50R0Y5LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtSSNtbkdGJTY5USYwLjIzNEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOS8lJ2l0YWxpY0dGOS8lKnVuZGVybGluZUdGOS8lKnN1YnNjcmlwdEdGOS8lLHN1cGVyc2NyaXB0R0Y5LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOS8lK2V4ZWN1dGFibGVHRjkvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y5LyUqY29udmVydGVkR0Y5LyUraW1zZWxlY3RlZEdGOS8lLHBsYWNlaG9sZGVyR0Y5LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRl9vLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYNyM2JEYvJCIkTSMhIiQ= NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQyMDBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkKyM= Determinant(Matrix(Tref,storage=rectangular)); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UVxbbTI0MDg0NTE5MjU0ODAyNzQzMTkzNTM5MjE0MTY1NjUwNzE0MDcxODM4ODg4OTI4ODk5NjM4MDgxMzEzMjU2MjE0MjAxMDk4MTY2MDQyMzgyMTg3MDYwNDE4MDEzMTA5MzQ5NzE1NjMzNzYyNDgzNDY1ODIzMjM4NTEyNTU5ODQwNjk4OTQ4OTY0MDE1NjUwNDExMzc4MjU1NDYxMzU2OTYyODg4NzMwMjgwNjEwMzQ0MTc2MzU1NDEyMjQ4OTk4MDc1NDE0NjYzMTcxNzUxOTYyMTQyMzA3OTQ3MjE4NTE3NDkyNzAzNzI4OTg2NDMzNDU1MzAzOTc1NTM4MjczNDQ3NTc2NzY2NTQ2OTE0MDkyMTEwNzcxMzg1NTM2NDkyMzk4Mzk0OTQ1MDMxODUyMjU1NjYwMDgzOTU0NjAwODY1Mzg2OTMwMDM3Nzg4OTk4NDYwMTE4NjcwNjc2MDM5MzMwMjQzOTgxNjAyMjI5MDc3MzYxMzIzODAzNjQ0NTU2NzY0NDkxMzg4MDQzNTQyODAzNTkyOTc0NTYxMjM0MDM5NjI1ODAzNTg3OTI2OTYwNjI0ODYxOTk0NzE4OTQ4ODI3MTczMTU4Nzc2Mzg5OTAxMzUwNDUzOTMzNDM5NTE4MzA4OTgwNDQ3NzY2NDUxODE4NDg4MzcxMDE2Njg2MzQyOEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIlxbbUdNJ287NVApWz09WG14VyEpKjMkPSZSTSRSWF04ISoqUXcoZUo8RilbKj1aKj4nW2lncCN6ZS5laVJTQmhYKEhmLkdhViEpUSJca25iV08hUUtodDJIQWciKVJDSSRSZ25xJz0sWSkqKil5UCskcFFsM2dhUjNnY0RfPS5YXFIpUiNcT2JRcjI2IzQ5cGFtbmRaTUZRYihSSWJNVicpKkdQcSNcPCY9cyV6SVVAJz52ckptOWEyKSoqW0FUYmo8Vy5oIUdJKCkpRydwTmhhRHk4VF1jLGsqWyopcFMpZkReUUsjZVkkW2lQajooXCQ0Siw9LzEoPSNRVWc7KTQsVUBjS0oiM1EnKiopRyopKSlRPTI5MmxsVEBSTj5WRiFbRD5YM0M=
<Text-field style="Heading 1" layout="Heading 1">Low level of the interface</Text-field> restart; p:=17; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctSSNtbkdGJTY5USMxN0YoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JInBHRigiIzw3I0Zlcg==
<Text-field style="Heading 2" layout="Heading 2">Submodule of module LinBox</Text-field> with(LinBox:-Dev); LinBox/Maple Interface Package beta version 0.1 by Pascal Giorgi (pgiorgi@uwaterloo.ca) NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2ZW8tSSNtaUdGJTY5UStsYkJsYWNrYm94RigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHRlMvJSVib2xkR0Y4LyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR0ZWLyUrYmFja2dyb3VuZEdGWS8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGNS8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZQLyUqbWF0aGNvbG9yR0ZWLyUvbWF0aGJhY2tncm91bmRHRlkvJStmb250ZmFtaWx5R0Zcby8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGUy1GLTYzUSIsRigvRjFRJmluZml4RigvRjRGOC9GN0Y1L0Y6USQwZW1GKC9GPVEzdmVyeXRoaWNrbWF0aHNwYWNlRigvRj9GOEZARkJGRUZIRkpGTEZORlFGVEZXLUZnbjY5UTRsYkJsYWNrYm94RGltZW5zaW9uRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK2xiQ2hhcnBvbHlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEybGJDb252ZXJ0QmxhY2tib3hGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVExbGJDb252ZXJ0RWxlbWVudEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTRsYkNvbnZlcnRQb2x5bm9taWFsRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMGxiQ29udmVydFZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USdsYkNvcHlGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEvbGJDb3B5QmxhY2tib3hGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEtbGJDb3B5VmVjdG9yRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRK2xiRGF0YUluZm9GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEubGJEZXRlcm1pbmFudEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USxsYkRpbWVuc2lvbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USlsYkRvbWFpbkYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USpsYkVsZW1lbnRGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEqbGJNaW5wb2x5RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKWxiUmFuZG9tRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRJ2xiUmFua0YoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USlsYlJlYmluZEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTFsYlJlYmluZEJsYWNrYm94RihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRL2xiUmViaW5kVmVjdG9yRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRLmxiU2V0QmxhY2tib3hGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVE2bGJTZXRCbGFja2JveEF0UmFuZG9tRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRMWxiU2V0SW50ZWdlclJpbmdGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEwbGJTZXRQcmltZUZpZWxkRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRM2xiU2V0UmF0aW9uYWxGaWVsZEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USxsYlNldFZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTRsYlNldFZlY3RvckF0UmFuZG9tRihGam5GXW9GX29GYW9GY29GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZnFGaHEtRmduNjlRKGxiU29sdmVGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEobGJTdGFydEYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5USdsYlN0b3BGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEpbGJWZWN0b3JGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEybGJWZWN0b3JEaW1lbnNpb25GKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEobGJXcml0ZUYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxRmhxLUZnbjY5UTBsYldyaXRlQmxhY2tib3hGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEybGJXcml0ZVBvbHlub21pYWxGKEZqbkZdb0Zfb0Zhb0Zjb0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZmcUZocS1GZ242OVEubGJXcml0ZVZlY3RvckYoRmpuRl1vRl9vRmFvRmNvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmZxLUYtNjNRIl1GKC9GMVEocG9zdGZpeEYoRjNGNkY5L0Y9UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRj5GQEZCRkVGSEZKRkxGTkZRRlRGVzcjN0dJK2xiQmxhY2tib3hHRihJNGxiQmxhY2tib3hEaW1lbnNpb25HRihJK2xiQ2hhcnBvbHlHRihJMmxiQ29udmVydEJsYWNrYm94R0YoSTFsYkNvbnZlcnRFbGVtZW50R0YoSTRsYkNvbnZlcnRQb2x5bm9taWFsR0YoSTBsYkNvbnZlcnRWZWN0b3JHRihJJ2xiQ29weUdGKEkvbGJDb3B5QmxhY2tib3hHRihJLWxiQ29weVZlY3RvckdGKEkrbGJEYXRhSW5mb0dGKEkubGJEZXRlcm1pbmFudEdGKEksbGJEaW1lbnNpb25HRihJKWxiRG9tYWluR0YoSSpsYkVsZW1lbnRHRihJKmxiTWlucG9seUdGKEkpbGJSYW5kb21HRihJJ2xiUmFua0dGKEkpbGJSZWJpbmRHRihJMWxiUmViaW5kQmxhY2tib3hHRihJL2xiUmViaW5kVmVjdG9yR0YoSS5sYlNldEJsYWNrYm94R0YoSTZsYlNldEJsYWNrYm94QXRSYW5kb21HRihJMWxiU2V0SW50ZWdlclJpbmdHRihJMGxiU2V0UHJpbWVGaWVsZEdGKEkzbGJTZXRSYXRpb25hbEZpZWxkR0YoSSxsYlNldFZlY3RvckdGKEk0bGJTZXRWZWN0b3JBdFJhbmRvbUdGKEkobGJTb2x2ZUdGKEkobGJTdGFydEdGKEknbGJTdG9wR0YoSSlsYlZlY3RvckdGKEkybGJWZWN0b3JEaW1lbnNpb25HRihJKGxiV3JpdGVHRihJMGxiV3JpdGVCbGFja2JveEdGKEkybGJXcml0ZVBvbHlub21pYWxHRihJLmxiV3JpdGVWZWN0b3JHRig=
<Text-field style="Heading 2" layout="Heading 2">Creation of Domain</Text-field> Integers Domain Z:=lbDomain(0,"linbox_ring_integer"); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJaRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFlbltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X3JpbmdfaW50ZWdlcix+Y2hhcmFjdH49fjApXXwrRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JIlpHRihJZW5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV18K0dGKDcjRmFy Z:=lbDomain(); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJaRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFlbltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X3JpbmdfaW50ZWdlcix+Y2hhcmFjdH49fjApXXwrRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JIlpHRihJZW5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV18K0dGKDcjRmFy Finite fields domain Zp:=lbDomain(p,"linbox_field_dbl"); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNacEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRWVtMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNacEdGKElZW0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXXwrR0YoNyNGYXI= Zp:=lbDomain(p); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNacEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRWVtMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNacEdGKElZW0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXXwrR0YoNyNGYXI= Use of global default type lbSetIntegerRing("linbox_ring_integer"); lbSetPrimeField("linbox_field_dbl"); Z1:=lbDomain(); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNaMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRZW5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNaMUdGKEllbltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X3JpbmdfaW50ZWdlcix+Y2hhcmFjdH49fjApXXwrR0YoNyNGYXI= Zp2:=lbDomain(p); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRacDJGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1GLTY5UVlbTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9maWVsZF9kYmwsfmNoYXJhY3R+PX4xNyldfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkkWnAyR0YoSVlbTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9maWVsZF9kYmwsfmNoYXJhY3R+PX4xNyldfCtHRig3I0Zhcg==
<Text-field style="Heading 2" layout="Heading 2">Using Blackbox (Matrix)</Text-field> A:=lbBlackbox(Z,10,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJBRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFcclt+TGluQm94fkJsYWNrYm94fihzdG9yYWdlfj1+bGluYm94X2RlbnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJBR0YoSVxyW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X3JpbmdfaW50ZWdlcix+Y2hhcmFjdH49fjApXX4pXXwrR0YoNyNGYXI= Ap:=lbBlackbox(Zp,10,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNBcEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRanFbfkxpbkJveH5CbGFja2JveH4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXX4pXXwrRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG83Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JI0FwR0YoSWpxW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0dGKDcjRmFy Use of global default type lbSetBlackbox("linbox_sparse"); A:=lbBlackbox(Z,10,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJBRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFdclt+TGluQm94fkJsYWNrYm94fihzdG9yYWdlfj1+bGluYm94X3NwYXJzZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfcmluZ19pbnRlZ2VyLH5jaGFyYWN0fj1+MCldfildfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkiQUdGKEldclt+TGluQm94fkJsYWNrYm94fihzdG9yYWdlfj1+bGluYm94X3NwYXJzZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfcmluZ19pbnRlZ2VyLH5jaGFyYWN0fj1+MCldfildfCtHRig3I0Zhcg== Set entries at random over the domain lbRandom(A); NiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UV1yW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfc3BhcnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R0Y4LyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQS8lL21hdGhiYWNrZ3JvdW5kR0ZELyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGMjcjSV1yW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfc3BhcnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0dGKA== lbRandom(Ap); NiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UWpxW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R0Y4LyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQS8lL21hdGhiYWNrZ3JvdW5kR0ZELyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGMjcjSWpxW35MaW5Cb3h+QmxhY2tib3h+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0dGKA== Computation without specifying the domain Over the integers d1:=lbDeterminant(A); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNkMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRaXAzMTE2Mjc5NjIyMjgzNDUzMDgyMjk4NjI2NDEyNzc2NjE2NzM5NDcwODUwOTA5NDU4ODgyODI3NjcxNDMyNjI5MDAwOTI1MTE3MjU0MjAwNzQ4MTM1MjMyNjU0OTZ8K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNkMUdGKElpcDMxMTYyNzk2MjIyODM0NTMwODIyOTg2MjY0MTI3NzY2MTY3Mzk0NzA4NTA5MDk0NTg4ODI4Mjc2NzE0MzI2MjkwMDA5MjUxMTcyNTQyMDA3NDgxMzUyMzI2NTQ5NnwrR0YoNyNGYXI= Over a finite field d2:=lbDeterminant(Ap); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNkMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRJDExfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjZDJHRihJJDExfCtHRig3I0Zhcg== Converting data lbConvertElement(d1); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UWhwMzExNjI3OTYyMjI4MzQ1MzA4MjI5ODYyNjQxMjc3NjYxNjczOTQ3MDg1MDkwOTQ1ODg4MjgyNzY3MTQzMjYyOTAwMDkyNTExNzI1NDIwMDc0ODEzNTIzMjY1NDk2RigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjUvJSpzdWJzY3JpcHRHRjUvJSxzdXBlcnNjcmlwdEdGNS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjUvJStleGVjdXRhYmxlR0Y1LyUpcmVhZG9ubHlHUSV0cnVlRigvJSljb21wb3NlZEdGNS8lKmNvbnZlcnRlZEdGNS8lK2ltc2VsZWN0ZWRHRjUvJSxwbGFjZWhvbGRlckdGNS8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZALyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0YyNyMiaHAnXGxLXzhbMj9hczZENCtIRVZydyNHKSllJTQ0JjNaUm5od0ZURScpSCMzYE1HQSd6aTYk lbConvertElement(d2); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMxMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM2
<Text-field style="Heading 2" layout="Heading 2">using Vector</Text-field> construction over the integers V:=lbVector(Z,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USJWRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRi02OVFqcVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfcmluZ19pbnRlZ2VyLH5jaGFyYWN0fj1+MCldfildfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkiVkdGKElqcVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfcmluZ19pbnRlZ2VyLH5jaGFyYWN0fj1+MCldfildfCtHRig3I0Zhcg== construction over finite field Vp:=lbVector(Zp,10); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNWcEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRaHFbfkxpbkJveH5WZWN0b3J+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNWcEdGKElocVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXX4pXXwrR0YoNyNGYXI= Use of global default type lbSetVector("linbox_dense"); Set entries at random over the domain lbRandom(V); NiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UWpxW35MaW5Cb3h+VmVjdG9yfihzdG9yYWdlfj1+bGluYm94X2RlbnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R0Y4LyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQS8lL21hdGhiYWNrZ3JvdW5kR0ZELyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGMjcjSWpxW35MaW5Cb3h+VmVjdG9yfihzdG9yYWdlfj1+bGluYm94X2RlbnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9yaW5nX2ludGVnZXIsfmNoYXJhY3R+PX4wKV1+KV18K0dGKA== lbRandom(Vp); NiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UWhxW35MaW5Cb3h+VmVjdG9yfihzdG9yYWdlfj1+bGluYm94X2RlbnNlLH5kb21haW5+PX5bTGluQm94fkRvbWFpbn4odHlwZX49fmxpbmJveF9maWVsZF9kYmwsfmNoYXJhY3R+PX4xNyldfildfCtGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdGOC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkEvJS9tYXRoYmFja2dyb3VuZEdGRC8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjI3I0locVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXX4pXXwrR0Yo Computation without specifying the domain Over the integers x1:=lbSolve(A,V); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN4MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRXHJbfkxpbkJveH5WZWN0b3J+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX3JhdGlvbmFsLH5jaGFyYWN0fj1+MCldfildfCtGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcbzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjeDFHRihJXHJbfkxpbkJveH5WZWN0b3J+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX3JhdGlvbmFsLH5jaGFyYWN0fj1+MCldfildfCtHRig3I0Zhcg== x2:=lbSolve(Ap,Vp); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USN4MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYtNjlRaHFbfkxpbkJveH5WZWN0b3J+KHN0b3JhZ2V+PX5saW5ib3hfZGVuc2UsfmRvbWFpbn49fltMaW5Cb3h+RG9tYWlufih0eXBlfj1+bGluYm94X2ZpZWxkX2RibCx+Y2hhcmFjdH49fjE3KV1+KV18K0YoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSN4MkdGKElocVt+TGluQm94flZlY3Rvcn4oc3RvcmFnZX49fmxpbmJveF9kZW5zZSx+ZG9tYWlufj1+W0xpbkJveH5Eb21haW5+KHR5cGV+PX5saW5ib3hfZmllbGRfZGJsLH5jaGFyYWN0fj1+MTcpXX4pXXwrR0YoNyNGYXI= Converting data lbConvertVector(x1);lbConvertVector(x2); NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYsLUkkbXRyR0YlNiMtSSRtdGRHRiU2Iy1JJm1mcmFjR0YlNiotSSNtbkdGJTY5UV5xJm1pbnVzOzg3NzQxNTkzMDY1NTUyMTYyMDA1MjQzNDAwNDI3Nzg2ODc3NDE4NDk0MDU0ODI1MzUwNTA0OTc5NjA1OTg3MjYxMzA3Mzg3Mjk0NDM0MzYwNTY3NzA3OTU5NDIzRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHRlMvJSVib2xkR0Y4LyUnaXRhbGljR0Y4LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR0ZWLyUrYmFja2dyb3VuZEdGWS8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGNS8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZQLyUqbWF0aGNvbG9yR0ZWLyUvbWF0aGJhY2tncm91bmRHRlkvJStmb250ZmFtaWx5R0Zoby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGUy1GY282OVFocDE1NTgxMzk4MTExNDE3MjY1NDExNDkzMTMyMDYzODgzMDgzNjk3MzU0MjU0NTQ3Mjk0NDE0MTM4MzU3MTYzMTQ1MDA0NjI1NTg2MjcxMDAzNzQwNjc2MTYzMjc0OEYoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyLyUubGluZXRoaWNrbmVzc0dRIjFGKC8lK2Rlbm9tYWxpZ25HUSdjZW50ZXJGKC8lKW51bWFsaWduR0Zccy8lKWJldmVsbGVkR0Y4RlRGVy1Gam42Iy1GXW82Iy1GYG82Ki1GY282OVFfcSZtaW51czsxMDUwMTA3NDMwMjE2NTM2Mjc0NTA4NzE0MzkwODg5NzczMzY0NzE4NDc0MzQzNDM1ODc2MTc0NjkwMjUyNzU4MzA5MjU1OTU0Njg1NTQ5MDE3NjM2NzE2NTE4OTVGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZkckZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRXXEmbWludXM7NDM2MTM1MjEzNTA1NTczMTI3MjA4ODY5MTE4MDYyOTg5ODAxNzkxMjUxODEzNzU2OTE5OTI3NDMzMTgyODU3NzQzMzczNzE0MTMzNDU2MTg0MDUzMzE5NjYyOUYoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyLUZjbzY5UWdwNzc5MDY5OTA1NTcwODYzMjcwNTc0NjU2NjAzMTk0MTU0MTg0ODY3NzEyNzI3MzY0NzIwNzA2OTE3ODU4MTU3MjUwMjMxMjc5MzEzNTUwMTg3MDMzODA4MTYzNzRGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRXnEmbWludXM7NDAwNTI3NzA3NDI1NTU0MDg5OTM0NDU1MDczNDc1MTUyMzAxNzMxODU4MjA4MzU3NTM1NzI5Mzg2MjgyMTQ4MjQyODM1NzI5MDcwODg2MTE0MjY3ODE1NjQ0MTlGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZkckZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRaHAxNDc0NDk4NDgwODIwOTczNzU3MTA5NTI5NTg3Nzc2MTkxMzg2NDQ0NjY4NTE4NTE2MTQxNTM5OTQ2MTU0MDI1NTgyMzc1MjkzMjc2OTQ0MDQ1ODQ0MTk2MzU4MzFGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZkckZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRZ3AxMzkxMzY5MjQ0MTgwMzMzNDIwMzE1Nzc4NzY0MDM3OTk5NTY3MjQwNDI0NjIwNDEzMDg5MjE1ODA0MjUxMDMzNTkwMjIwOTY2NzM5OTQ3OTI3NDEyMDU5MzkzOUYoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyRmN0RmdyRmpyRl1zRl9zRlRGVy1Gam42Iy1GXW82Iy1GYG82Ki1GY282OVFncDgyNjUyOTU1Mjg0ODY3MTE0OTMxMjgyMTgxODQ2NDkxMDA0MTU4NTg0MjM0NzY4OTIzODUyODIzMTM3NzIxODg2NzQyMjA4ODUyODY2ODk4Mjc0MDAwMzk5MjA1RihGZm9GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXXJGX3JGYnJGZHJGZ3JGanJGXXNGX3NGVEZXLUZqbjYjLUZdbzYjLUZgbzYqLUZjbzY5UWdwMjg0NTcxODMyMDk2MDExMTk5OTAzMjM0Mjg2NTY1MDUxNTA1Njk4MzQ5NTIyMjYxNDIzMjkzMDQ0MjY1MTA4OTI3NDM2NDAzMjYxNjEwNjEwNDkxMzkxOTE2NDlGKEZmb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZdckZfckZickZjdEZnckZqckZdc0Zfc0ZURlctRmpuNiMtRl1vNiMtRmBvNiotRmNvNjlRZ3A4NzEyMzcyNDgwNjAwMDA3NDEzMTQ5MzE2MzA3OTc2ODY0OTIyNjkxNDAyMTI1MzAyNzk3NTUxMjg2NDAwOTU3MjYzMjUzODQxOTczMDg2NzgwMTY5NTMzMTkxMUYoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyRmRyRmdyRmpyRl1zRl9zRlRGVy1Gam42Iy1GXW82Iy1GYG82Ki1GY282OVFncDI3NTMzMjc4OTY5MTU2Njc3MjgxMTEzMTY1Njg1Mzc4MTM3NjI0MDYxOTczMzg4NjI3MDcyNzQzNzEyNTUzMjYyNTk2ODUyMDU5MzU1NjE2OTAzOTc2MjU3NTQ5RihGZm9GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXXJGX3JGYnItRmNvNjlRZ3AzODk1MzQ5NTI3ODU0MzE2MzUyODczMjgzMDE1OTcwNzcwOTI0MzM4NTYzNjM2ODIzNjAzNTM0NTg5MjkwNzg2MjUxMTU2Mzk2NTY3NzUwOTM1MTY5MDQwODE4N0YoRmZvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRl9yRmJyRmdyRmpyRl1zRl9zRlRGVy1GLTYzUSJdRigvRjFRKHBvc3RmaXhGKEYzRjZGOS9GPVEydmVyeXRoaW5tYXRoc3BhY2VGKEY+RkBGQkZFRkhGSkZMRk5GUUZURlc3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iy1JJ1JUQUJMRUdGKDYlIiorIykpcDgtSSdNQVRSSVhHRig2IzcsNyMjIWdwQiVmenFuME9NV0goUTI4RSgpZmd6XF1dYCNbMCVcPXUob3lGL1NWXytpQGJsSWZUeCkiaHBbRmpoblNQK3JpZURZK1hKO2QkUVRUJUhaWERhdHAkMyQpUTFLSlw2YUU8OTYpUiJlOjcjIyFocCYqPWxyT3csXGJvYWZENCRlRkQhcHVoKGVWVlZaPVpPdCgqKTNSOSgzWEZPbEBJdTVdNUZgejcjIyFmcEhtPkwwJT1jTTg5UFBWeCZHPUx1Iyo+cHY4PUQieiwpKilIMT0icCkzczd0Yl04XzhPJSJncHVqIjNRLig9XU5KejdCXXM6ZXkicHE/Wk9GRnJuWz1hVD4ubWx1MEZqM2QwKnAheig3IyMhZ3A+V2MieUU5aCkzMkhkJEdDW0BHJ1FIZGBkJDMjZT10LEI6dk0yYlckKiozYWJVMnhfKyVGYHo3IyMiaHBKZWo+V2UvV3BGJEh2QmVEUzpZKlI6OTsmPSZvWVcnUSI+d3hlSCY0cnZ0NCMzWylcdTlGYHo3IyMiZ3BSUmY/VEZ6JSpSbic0QSFmTDVEL2VAKjM4L2lDL0NuJioqei5rKHlkSj9NTCE9VyNwOFIiRmd6NyMjImdwMCMqUitTRikqbydHJikzQXUnKT1zUEojRyZRIypvWkIlZWVUKyJcWT09I0dKXDZuW0diSGwjKUZgejcjIyJncFw7PlIiXDUxaGhLU091IyozXkVXSUhCOUVBJlwkKXAwOjBsbEdNSyEqKj42ZzRLPWQlR0ZnejcjIyJncDY+TCZwLHknM3Q+JVFEanMmNFMnR152ei1gNy05cEFcJ28oekk7JFxKVDIrZyFbc0JyKUZgejcjIyJncFx2RHdSIXBoYiRmPyZvZmlLYjdQdXNxaSlRdD4xQ3c4eWBvbEo2Ikd4bTpwKnlLYEYiZ3AoPTMvcF4kNHZubFJjNkQneSFIKmVNTmdCb2pqJlFWIzR4cWYsJEd0R047ViZ5X1xgKlEmSSdWZWN0b3JHNiQlKnByb3RlY3RlZEdGKjYjSSdjb2x1bW5HRig3Iy1GXlxsNiMvSSQlaWRHRihGaHk= NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYsLUkkbXRyR0YlNiMtSSRtdGRHRiU2Iy1JI21uR0YlNjlRIjRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZTLUZqbjYjLUZdbzYjLUZgbzY5USIzRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRmpuNiMtRl1vNiMtRmBvNjlRIjlGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZoci1Gam42Iy1GXW82Iy1GYG82OVEjMTJGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZhckZfc0ZpbkZpbkZpbi1GLTYzUSJdRigvRjFRKHBvc3RmaXhGKEYzRjZGOS9GPVEydmVyeXRoaW5tYXRoc3BhY2VGKEY+RkBGQkZFRkhGSkZMRk5GUUZURlc3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iy1JJ1JUQUJMRUdGKDYlIipLUkhRIi1JJ01BVFJJWEdGKDYjNyw3IyIiJTcjIiIkNyMiIipGX3U3IyIjN0ZddUZhdUZbdUZbdUZbdSZJJ1ZlY3Rvckc2JCUqcHJvdGVjdGVkR0YqNiNJJ2NvbHVtbkdGKDcjLUZjdTYjL0kkJWlkR0YoRmZ0
<Text-field style="Heading 2" layout="Heading 2">Example of use</Text-field>
<Text-field style="Heading 3" layout="Heading 3">Highly efficient user's solution</Text-field> Compute the determinant of a matrix read from a file myDeterminant:=proc(p, file) local Zp,B,d; Zp:=lbDomain(p); B:=lbBlackbox(Zp,file); d:=lbElement(Zp); lbDeterminant(d,B); return lbConvertElement(d); end; NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5US5teURldGVybWluYW50RigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHUSMxMkYoLyUlYm9sZEdRJmZhbHNlRigvJSdpdGFsaWNHUSV0cnVlRigvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjsvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdRKjJEfk91dHB1dEYoLyUqbWF0aGNvbG9yR0ZELyUvbWF0aGJhY2tncm91bmRHRkcvJStmb250ZmFtaWx5R0YyLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0Y1LUkjbW9HRiU2M1EjOj1GKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRjgvJSpzZXBhcmF0b3JHRjgvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYoLyUncnNwYWNlR0ZbcC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJTBmb250X3N0eWxlX25hbWVHRlgvJSVzaXplR0Y1LyUrZm9yZWdyb3VuZEdGRC8lK2JhY2tncm91bmRHRkctRiQ2KS1GX282M1ElcHJvY0YoL0Zjb1EhRihGZW9GZ28vRmpvUSQwZW1GKC9GXXBGXnJGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2JS1GX282M1EiKEYoL0Zjb1EncHJlZml4RigvRmZvRjtGZ28vRmpvUS50aGlubWF0aHNwYWNlRigvRl1wRmlyL0ZfcEY7RmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiUtRi02OVEicEYoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSIsRihGYm9GZW8vRmhvRjtGXXIvRl1wUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGKEZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GLTY5USVmaWxlRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRl9vNjNRIilGKC9GY29RKHBvc3RmaXhGKEZnckZnb0Zoci9GXXBRMnZlcnl0aGlubWF0aHNwYWNlRihGW3NGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtSSdtc3BhY2VHRiU2Ji8lJ2hlaWdodEdRJzAuMH5leEYoLyUmd2lkdGhHUScwLjN+ZW1GKC8lJmRlcHRoR0ZmdC8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGKC1GJDYmLUZfbzYzUSZsb2NhbEYoRltyRmVvRmdvRl1yL0ZdcFEwbWVkaXVtbWF0aHNwYWNlRihGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2Jy1GLTY5USNacEYoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvRmFzLUYtNjlRIkJGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcb0Zhcy1GLTY5USJkRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRl9vNjNRIjtGKEZib0Zlb0Zkc0ZdckZccEZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZhdC1GJDYnLUYkNiUtRiQ2JUZodUZeby1GJDYlLUYkNiVGYnItRiQ2JS1GLTY5US5gTGluQm94Oi1EZXZgRihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tRl9vNjNRIzotRihGW3JGZW9GZ29GXXJGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRi02OVEpbGJEb21haW5GKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcb0Zqcy1GX282M1EwJkFwcGx5RnVuY3Rpb247RihGYm9GZW9GZ29GXXJGX3JGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2JUZici1GJDYjRl5zRmpzRmF2RmF0LUYkNiUtRiQ2JUZbdkZeby1GJDYlLUYkNiVGYnItRiQ2JUZgd0Zjdy1GLTY5UStsYkJsYWNrYm94RihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG9GanNGaXctRiQ2JUZici1GJDYlRmh1RmFzRmdzRmpzRmF2RmF0LUYkNiUtRiQ2JUZedkZeby1GJDYlLUYkNiVGYnItRiQ2JUZgd0Zjdy1GLTY5USpsYkVsZW1lbnRGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcb0Zqc0Zpdy1GJDYlRmJyLUYkNiNGaHVGanNGYXZGYXQtRiQ2JS1GJDYlLUYkNiVGYnItRiQ2JUZgd0Zjdy1GLTY5US5sYkRldGVybWluYW50RihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG9GanNGaXctRiQ2JUZici1GJDYlRl52RmFzRlt2RmpzRmF2RmF0LUYkNiQtRl9vNjNRJ3JldHVybkYoRltyRmVvRmdvRl1yRmR1Rl5wRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiUtRiQ2JUZici1GJDYlRmB3RmN3LUYtNjlRMWxiQ29udmVydEVsZW1lbnRGKEYwRjNGNkY5RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZpbkZcb0Zqc0Zpdy1GJDYlRmJyLUYkNiNGXnZGanMtRmJ0NiZGZHQvRmh0UScwLjB+ZW1GKEZqdC9GXXVRNmRlY3JlYXNlaW5kZW50bmV3bGluZUYoLUZfbzYzUSllbmR+cHJvY0YoRltyRmVvRmdvL0Zqb0ZldUZfckZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcTcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkubXlEZXRlcm1pbmFudEdGKGYqNiRJInBHRihJJWZpbGVHRig2JUkjWnBHRihJIkJHRihJImRHRihGKEYoQyc+RmpdbC1fSSREZXZHNiQlKnByb3RlY3RlZEcvRidJJ0xpbkJveEdGKEkpbGJEb21haW5HRig2I0ZnXWw+RltebC1fRmFebEkrbGJCbGFja2JveEdGKDYkRmpdbEZoXWw+RlxebC1fRmFebEkqbGJFbGVtZW50R0YoNiNGal1sLV9GYV5sSS5sYkRldGVybWluYW50R0YoNiRGXF5sRltebE8tX0ZhXmxJMWxiQ29udmVydEVsZW1lbnRHRig2I0ZcXmxGKEYoRig3I0ZlXWw= myDeterminant(1009, "trefethen_200.sms"); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USQzNDZGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dGNS8lKnVuZGVybGluZUdGNS8lKnN1YnNjcmlwdEdGNS8lLHN1cGVyc2NyaXB0R0Y1LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGNS8lK2V4ZWN1dGFibGVHRjUvJSlyZWFkb25seUdRJXRydWVGKC8lKWNvbXBvc2VkR0Y1LyUqY29udmVydGVkR0Y1LyUraW1zZWxlY3RlZEdGNS8lLHBsYWNlaG9sZGVyR0Y1LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkAvJS9tYXRoYmFja2dyb3VuZEdGQy8lK2ZvbnRmYW1pbHlHRi8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRjI3IyIkWSQ= myDeterminant(0, "trefethen_200.sms"); NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5UVxbbTI0MDg0NTE5MjU0ODAyNzQzMTkzNTM5MjE0MTY1NjUwNzE0MDcxODM4ODg4OTI4ODk5NjM4MDgxMzEzMjU2MjE0MjAxMDk4MTY2MDQyMzgyMTg3MDYwNDE4MDEzMTA5MzQ5NzE1NjMzNzYyNDgzNDY1ODIzMjM4NTEyNTU5ODQwNjk4OTQ4OTY0MDE1NjUwNDExMzc4MjU1NDYxMzU2OTYyODg4NzMwMjgwNjEwMzQ0MTc2MzU1NDEyMjQ4OTk4MDc1NDE0NjYzMTcxNzUxOTYyMTQyMzA3OTQ3MjE4NTE3NDkyNzAzNzI4OTg2NDMzNDU1MzAzOTc1NTM4MjczNDQ3NTc2NzY2NTQ2OTE0MDkyMTEwNzcxMzg1NTM2NDkyMzk4Mzk0OTQ1MDMxODUyMjU1NjYwMDgzOTU0NjAwODY1Mzg2OTMwMDM3Nzg4OTk4NDYwMTE4NjcwNjc2MDM5MzMwMjQzOTgxNjAyMjI5MDc3MzYxMzIzODAzNjQ0NTU2NzY0NDkxMzg4MDQzNTQyODAzNTkyOTc0NTYxMjM0MDM5NjI1ODAzNTg3OTI2OTYwNjI0ODYxOTk0NzE4OTQ4ODI3MTczMTU4Nzc2Mzg5OTAxMzUwNDUzOTMzNDM5NTE4MzA4OTgwNDQ3NzY2NDUxODE4NDg4MzcxMDE2Njg2MzQyOEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIlxbbUdNJ287NVApWz09WG14VyEpKjMkPSZSTSRSWF04ISoqUXcoZUo8RilbKj1aKj4nW2lncCN6ZS5laVJTQmhYKEhmLkdhViEpUSJca25iV08hUUtodDJIQWciKVJDSSRSZ25xJz0sWSkqKil5UCskcFFsM2dhUjNnY0RfPS5YXFIpUiNcT2JRcjI2IzQ5cGFtbmRaTUZRYihSSWJNVicpKkdQcSNcPCY9cyV6SVVAJz52ckptOWEyKSoqW0FUYmo8Vy5oIUdJKCkpRydwTmhhRHk4VF1jLGsqWyopcFMpZkReUUsjZVkkW2lQajooXCQ0Siw9LzEoPSNRVWc7KTQsVUBjS0oiM1EnKiopRyopKSlRPTI5MmxsVEBSTj5WRiFbRD5YM0M=
<Text-field style="Heading 2" layout="Heading 2">To continue ...</Text-field>
linbox-1.4.2/interfaces/sage/000077500000000000000000000000001274717217100160645ustar00rootroot00000000000000linbox-1.4.2/interfaces/sage/Makefile.am000066400000000000000000000027431274717217100201260ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== if LINBOX_HAVE_SAGE #AM_CPPFLAGS=-I$(top_srcdir) -I. -I../../linbox AM_CPPFLAGS = -DDISABLE_COMMENTATOR -I$(top_srcdir)/linbox $(DEPS_CFLAGS) $(DEFAULT_CFLAGS) LDADD = $(DEPS_LIBS) $(LDFLAGS) #AM_CXXFLAGS = @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR $(NTL_CFLAGS) $(OPTFLAGS) $(PARFLAGS) lib_LTLIBRARIES = liblinboxsage.la liblinboxsage_la_SOURCES = linbox-sage.C pkginclude_HEADERS = linbox-sage.h #liblinboxsage_la_LIBADD = -llinbox #gentoo's linbox-1.1.6-fix-undefined-symbols.patch liblinboxsage_la_LIBADD = $(top_builddir)/linbox/liblinbox.la liblinboxsage_la_LDFLAGS = $(DEPS_LIBS) $(LDFLAGS) -version-info 0:0:0 #-Wl,-zmuldefs endif linbox-1.4.2/interfaces/sage/linbox-sage.C000066400000000000000000000510431274717217100204030ustar00rootroot00000000000000/* linbox-sage.C * Copyright (C) 2007 Martin Albrecht * 2008 Clement Pernet * * Written by Martin Albrecht * Clement Pernet * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include #include #include #include #include "linbox/linbox-config.h" #include "linbox/util/commentator.h" #include "linbox/matrix/sparse-matrix.h" //#include "linbox/element/givaro-polynomial.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/vector/sparse.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/algorithms/echelon-form.h" #include "linbox/algorithms/gauss.h" #include "linbox/algorithms/smith-form-adaptive.h" #include #include "linbox/solutions/rank.h" #include "linbox/solutions/det.h" #include "linbox/solutions/solve.h" #include "linbox/solutions/methods.h" #include "linbox/solutions/minpoly.h" #include "linbox/solutions/charpoly.h" #include "linbox/algorithms/double-det.h" #include "linbox/integer.h" #include "linbox/field/gmp-rational.h" #include "linbox/ring/givaro-polynomial.h" #include "givaro/modular.h" #include #include "linbox-sage.h" using namespace LinBox; /************************************************************************* dense modulo Z/nZ *************************************************************************/ //we are using Givaro::Modular here as it seems to be best supported /* NOTE: There are many echelon form functions, possible base rings, etc. Strangely, most don't build. This combination below does though. */ void linbox_modn_dense_delete_array_double(double * f) {delete[] f; } void linbox_modn_dense_delete_array_float(float * f) {delete[] f; } template unsigned long int linbox_modn_dense_echelonize (Element modulus, Element* matrix, size_t nrows, size_t ncols) { Givaro::Modular F(modulus); size_t * P=new size_t[ncols]; size_t * Q=new size_t[nrows]; size_t r = FFPACK::ReducedRowEchelonForm(F, nrows, ncols, matrix, ncols, P,Q); for (size_t i=0; i(modulus, matrix, nrows, ncols); } EXTERN unsigned long int linbox_modn_dense_echelonize_float (float modulus, float * matrix, size_t nrows, size_t ncols) { return (unsigned long) linbox_modn_dense_echelonize(modulus,matrix,nrows,ncols); } template unsigned long int linbox_modn_dense_rank (Element modulus, Element* matrix, size_t nrows, size_t ncols) { Givaro::Modular F (modulus); Element * Ad = new Element [nrows*ncols]; for (size_t i=0; i< nrows; ++i) for (size_t j = 0; j < ncols; ++j) *(Ad + i * ncols + j) = *(matrix + i*ncols + j); size_t r = FFPACK::Rank (F, nrows, ncols, Ad, ncols); delete[] Ad; return r; } EXTERN unsigned long int linbox_modn_dense_rank_double (double modulus, double* matrix, size_t nrows, size_t ncols) { return linbox_modn_dense_rank(modulus,matrix,nrows,ncols); } EXTERN unsigned long int linbox_modn_dense_rank_float (float modulus, float* matrix, size_t nrows, size_t ncols) { return linbox_modn_dense_rank(modulus,matrix,nrows,ncols); } template Element linbox_modn_dense_det(Element modulus,Element*matrix,size_t nrows,size_t ncols) { Givaro::Modular F (modulus); Element * Ad = new Element [nrows*ncols]; for (size_t i=0; i< nrows; ++i) for (size_t j = 0; j < ncols; ++j) *(Ad + i * ncols + j) = *(matrix+i*ncols+j); Element dd = FFPACK::Det (F, nrows, ncols, Ad, ncols); delete[] Ad; return dd; } EXTERN double linbox_modn_dense_det_double (double modulus, double* matrix, size_t nrows, size_t ncols) { return linbox_modn_dense_det(modulus,matrix,nrows,ncols); } EXTERN float linbox_modn_dense_det_float (float modulus, float* matrix, size_t nrows, size_t ncols) { return linbox_modn_dense_det(modulus,matrix,nrows,ncols); } template Element* linbox_modn_dense_minpoly (Element modulus, Element ** mp, size_t* degree, size_t n, Element *matrix) { typedef Givaro::Modular Field; typedef std::vector Polynomial; Givaro::Modular F(modulus); // Warning: super sketchy memory alloc here!!!! std::vector *minP=new std::vector(n); Element * X = new Element[n*(n+1)]; size_t * P = new size_t[n]; // FIXME: check the memory management: better to allocate mp in sage // FFPACK::MinPoly (F, *minP, n, matrix, n, X, n, P); FFPACK::MinPoly (F, *minP, n, matrix, n, X, n, P); *degree=minP->size()-1; *mp = &(*minP)[0]; delete[] P; delete[] X; return *mp; } EXTERN double* linbox_modn_dense_minpoly_double (double modulus, double ** mp, size_t* degree, size_t n, double*matrix) { return linbox_modn_dense_minpoly (modulus, mp, degree, n, matrix); } EXTERN float* linbox_modn_dense_minpoly_float (float modulus, float ** mp, size_t* degree, size_t n, float *matrix) { return linbox_modn_dense_minpoly (modulus, mp, degree, n, matrix); } template Polynomial & mulpoly(const Field& F, Polynomial &res, const Polynomial & P1, const Polynomial & P2) { size_t i,j; // Warning: assumes that res is allocated to the size of the product //res.resize(P1.size()+P2.size()-1); for (i=0;i Element* linbox_modn_dense_charpoly (Element modulus, Element *& cp, size_t n, Element *matrix) { Givaro::Modular F(modulus); // FIXME: check the memory management: better to allocate mp in sage std::list > P_list; FFPACK::CharPoly (F, P_list, n, matrix, n); std::vector* tmp = new std::vector (n+1); std::vector P; typename std::list >::const_iterator it; it = P_list.begin(); P = *(it++); while( it!=P_list.end() ){ ::mulpoly (F,*tmp, P, *it); P = *tmp; // delete &(*it); ++it; } return cp = &(*tmp)[0]; } EXTERN double* linbox_modn_dense_charpoly_double (double modulus, double ** cp, size_t n, double * matrix) { return linbox_modn_dense_charpoly(modulus,*cp,n,matrix); } EXTERN float* linbox_modn_dense_charpoly_float (float modulus, float ** cp, size_t n, float * matrix) { return linbox_modn_dense_charpoly(modulus,*cp,n,matrix); } template unsigned long linbox_modn_dense_col_rankprofile_submatrix_indices (Element modulus, Element* matrix, size_t ** row_idx, size_t ** col_idx, size_t* rank, size_t nrows, size_t ncols) { Givaro::Modular F (modulus); Element * Ad = new Element [nrows*ncols]; for (size_t i=0; i< nrows; ++i) for (size_t j = 0; j < ncols; ++j) *(Ad + i * ncols + j) = *(matrix +i*ncols + j); FFPACK::ColRankProfileSubmatrixIndices (F, nrows, ncols, Ad, ncols, *row_idx, *col_idx, *rank); delete[] Ad; return *rank; } EXTERN unsigned long linbox_modn_dense_col_rankprofile_submatrix_indices_double (double modulus, double* matrix, size_t ** row_idx, size_t ** col_idx, size_t * rank, size_t nrows, size_t ncols) { return linbox_modn_dense_col_rankprofile_submatrix_indices(modulus,matrix,row_idx,col_idx,rank,nrows,ncols); } EXTERN unsigned long linbox_modn_dense_col_rankprofile_submatrix_indices_float (float modulus, float* matrix, size_t ** row_idx, size_t ** col_idx, size_t * rank, size_t nrows,size_t ncols) { return linbox_modn_dense_col_rankprofile_submatrix_indices(modulus,matrix,row_idx,col_idx,rank,nrows,ncols); } template unsigned long linbox_modn_dense_col_rankprofile_submatrix (Element modulus, Element* matrix, Element* ans, size_t& rank, size_t nrows, size_t ncols) { Givaro::Modular F (modulus); //FIXME: check the memory managmenent Element * Ad = new Element [nrows*ncols]; for (size_t i=0; i< nrows; ++i) for (size_t j = 0; j < ncols; ++j) *(Ad + i * ncols + j) = *(matrix + i*ncols + j); size_t R = FFPACK::ColRankProfileSubmatrix (F, nrows, ncols, ans, ncols, ans, rank); delete[] Ad; return R; } EXTERN unsigned long linbox_modn_dense_col_rankprofile_submatrix_double (double modulus, double* matrix, double* out, size_t* rank, size_t nrows, size_t ncols) { return linbox_modn_dense_col_rankprofile_submatrix(modulus,matrix,out,*rank, nrows,ncols); } EXTERN unsigned long linbox_modn_dense_col_rankprofile_submatrix_float (float modulus, float* matrix, float* out, size_t* rank, size_t nrows, size_t ncols) { return linbox_modn_dense_col_rankprofile_submatrix(modulus,matrix,out,*rank,nrows,ncols); } template Element* linbox_modn_dense_matrix_matrix_multiply (Element modulus, Element *ans, Element *A, Element *B, size_t m, size_t n, size_t k) { Givaro::Modular F(modulus); FFLAS::fgemm (F, FFLAS::FflasNoTrans, FFLAS::FflasNoTrans, m,n,k, 1.0, A, k, B, n, 0.0, ans, n); return ans; } EXTERN double* linbox_modn_dense_matrix_matrix_multiply_double(double modulus, double * ans, double *A, double *B, size_t m,size_t n,size_t k) { return linbox_modn_dense_matrix_matrix_multiply(modulus,ans,A,B,m,n,k); } EXTERN float* linbox_modn_dense_matrix_matrix_multiply_float(float modulus, float * ans, float *A, float *B, size_t m,size_t n,size_t k) { return linbox_modn_dense_matrix_matrix_multiply(modulus,ans,A,B,m,n,k); } template Element * linbox_modn_dense_matrix_matrix_general_multiply(Element modulus, Element *ans, Element alpha, Element beta, Element *A, Element *B, size_t m, size_t n, size_t k) { Givaro::Modular F(modulus); FFLAS::fgemm (F, FFLAS::FflasNoTrans, FFLAS::FflasNoTrans, m,n,k, alpha, A, k, B, n, beta,ans, n); return ans; } EXTERN double* linbox_modn_dense_matrix_matrix_general_multiply_double (double modulus, double * ans, double alpha, double beta, double *A, double *B, size_t m, size_t n, size_t k) { return linbox_modn_dense_matrix_matrix_general_multiply(modulus,ans,alpha,beta,A,B,m,n,k); } EXTERN float* linbox_modn_dense_matrix_matrix_general_multiply_float (float modulus, float * ans, float alpha, float beta, float *A, float *B, size_t m, size_t n, size_t k) { return linbox_modn_dense_matrix_matrix_general_multiply(modulus,ans,alpha,beta,A,B,m,n,k); } /************************************************************************* dense over ZZ *************************************************************************/ typedef Givaro::ZRing IntegerRing; template void printPolynomial (const Field &F, const Polynomial &v) { for (int i = v.size () - 1; i >= 0; i--) { F.write (std::cout, v[i]); if (i > 0) std::cout << " x^" << i << " + "; } std::cout << std::endl; } SpyInteger spy; typedef GivPolynomialRing IntPolRing; void get_matrix(DenseMatrix &A, mpz_t** matrix) { size_t i, j; for (i=0; i < A.rowdim(); ++i) { for (j=0; j < A.coldim(); ++j) { IntegerRing::Element t; mpz_set(spy.get_mpz(t), matrix[i][j]); A.setEntry(i, j, t); } } } template void set_matrix(mpz_t** matrix, DenseMatrix& A) { size_t i, j; for (i=0; i < A.rowdim(); ++i) { for (j=0; j < A.coldim(); ++j) { mpz_set(matrix[i][j], spy.get_mpz(A.getEntry(i,j))); } } } // void linbox_integer_dense_minpoly_hacked(mpz_t* *mp, size_t* degree, size_t n, mpz_t** matrix, int do_minpoly) // { // /* We program around a bizarre bug in linbox, where minpoly doesn't work // on matrices that are n x n with n divisible by 4! // */ // size_t m; // if (n % 4 == 0 || !do_minpoly) { // m = n + 1; // } // else { // m = n; // } // IntegerRing ZZ; // DenseMatrix A(ZZ, m, m); // get_matrix(A, matrix); // // vector m_A; // IntPolRing::Element m_A; // if (do_minpoly) // minpoly(m_A, A); // else // charpoly(m_A, A); // if (n%4 == 0 || !do_minpoly) { // /* Program around the bug. // It is OK that this code is crappy and redundant, since it will get replaced // when linbox gets fixed. */ // int divide_by_x; // if (!do_minpoly) // divide_by_x = 1; // else { // long unsigned int r; // rank(r, A); // divide_by_x = (r==n); // } // if (divide_by_x) { // /* x was not a factor of the charpoly after all. */ // (*mp) = new mpz_t[m_A.size()-1]; // *degree = m_A.size() - 2; // for (size_t k=0; k <= *degree; ++k) { // mpz_init((*mp)[k]); // mpz_set((*mp)[k], spy.get_mpz(m_A[k+1])); // } // return; // } // } // (*mp) = new mpz_t[m_A.size()]; // *degree = m_A.size() - 1; // for (size_t k=0; k <= *degree; ++k) { // mpz_init((*mp)[k]); // mpz_set((*mp)[k], spy.get_mpz(m_A[k])); // } // } void linbox_integer_dense_charpoly(mpz_t* &mp, size_t& degree, size_t n, mpz_t** matrix) { IntegerRing ZZ; DenseMatrix A(ZZ, n, n); get_matrix(A, matrix); IntPolRing::Element m_A; charpoly(m_A, A); mp = new mpz_t[m_A.size()]; degree = m_A.size() - 1; for (size_t i=0; i <= degree; ++i) { mpz_init(mp[i]); mpz_set(mp[i], spy.get_mpz(m_A[i])); } } void linbox_integer_dense_minpoly(mpz_t* &mp, size_t& degree, size_t n, mpz_t** matrix) { IntegerRing ZZ; DenseMatrix A(ZZ, n, n); get_matrix(A, matrix); IntPolRing::Element m_A; minpoly(m_A, A); mp = new mpz_t[m_A.size()]; degree = m_A.size() - 1; for (size_t i=0; i <= degree; ++i) { mpz_init(mp[i]); mpz_set(mp[i], spy.get_mpz(m_A[i])); } } void linbox_integer_dense_delete_array(mpz_t* f) { delete[] f; } int linbox_integer_dense_matrix_matrix_multiply(mpz_t** ans, mpz_t **A, mpz_t **B, size_t A_nr, size_t A_nc,size_t B_nc) { IntegerRing ZZ; DenseMatrix AA(ZZ, A_nr, A_nc); DenseMatrix BB(ZZ, A_nc, B_nc); DenseMatrix CC(ZZ, A_nr, B_nc); get_matrix(AA, A); get_matrix(BB, B); MatrixDomain MD(ZZ); MD.mul(CC, AA, BB); set_matrix(ans, CC); return 0; } unsigned long linbox_integer_dense_rank(mpz_t** matrix, size_t nrows, size_t ncols) { IntegerRing ZZ; DenseMatrix A(ZZ, nrows, ncols); get_matrix(A, matrix); unsigned long r; rank(r, A); return r; } void linbox_integer_dense_det(mpz_t ans, mpz_t** matrix, size_t nrows, size_t ncols) { commentator().setMaxDetailLevel(0); commentator().setMaxDepth (0); IntegerRing ZZ; DenseMatrix A ( ZZ, nrows, ncols); get_matrix(A, matrix); IntegerRing::Element d; det(d, A); mpz_set(ans, spy.get_mpz(d)); } #ifdef __LINBOX_HAVE_NTL DenseMatrix new_matrix_integer_dense_ntl(mpz_t** matrix, size_t nrows, size_t ncols) { NTL_ZZ Z; DenseMatrix A (Z,nrows, ncols); size_t i, j; for (i=0; i < nrows; ++i) { for (j=0; j < ncols; ++j) { NTL_ZZ::Element t; Givaro::ZRing::Element s; mpz_set(spy.get_mpz(s), matrix[i][j]); Z.init(t, s); A.setEntry(i, j, t); } } return A; } #endif void linbox_integer_dense_double_det (mpz_t ans1, mpz_t ans2, mpz_t **a, mpz_t ** b, mpz_t **c, size_t n, int proof) { IntegerRing ZZ; DenseMatrix A(ZZ, n+1, n); size_t i, j; for (i=0; i < n-1; ++i) { for (j=0; j < n; ++j) { IntegerRing::Element t; mpz_set(spy.get_mpz(t), a[i][j]); A.setEntry(i, j, t); } } for (j=0; j < n; ++j) { Givaro::ZRing::Element t; mpz_set(spy.get_mpz(t), b[0][j]); A.setEntry (n-1, j, t); mpz_set (spy.get_mpz(t), c[0][j]); A.setEntry (n, j, t); } Givaro::ZRing::Element d1,d2; doubleDet (d1, d2, A, proof); mpz_set(ans1, spy.get_mpz(d1)); mpz_set(ans2, spy.get_mpz(d2)); } #if 0 /* This won't build on OS X PPC. */ #ifdef __LINBOX_HAVE_NTL void linbox_integer_dense_smithform(mpz_t **v, mpz_t **matrix, size_t nrows, size_t ncols) { typedef NTL_ZZ Ints; Ints Z; DenseMatrix M(new_matrix_integer_dense_ntl(matrix, nrows, ncols)); std::vector w(ncols); SmithFormAdaptive::smithForm(w, M); (*v) = new mpz_t[ncols]; for (size_t i=0; i < ncols; ++i) { mpz_init((*v)[i]); mpz_set((*v)[i], spy.get_mpz(w[i])); } } #endif #endif /************************************************************************* sparse modulo Z/nZ *************************************************************************/ struct c_vector_modint_linbox { // copy of the declaration in vector_modn_sparse.pxi int *entries; int p; size_t *positions; size_t degree; size_t num_nonzero; }; typedef unsigned int mod_int; typedef Givaro::Modular GFp; typedef GFp::Element GFpElement; typedef std::vector > SparseSeqVectorGFp; typedef SparseMatrix::SparseFormat> SparseMatrixGFp; SparseMatrixGFp* linbox_new_modn_sparse_matrix(mod_int modulus, size_t numrows, size_t numcols, void *rows) { GFp *F=new GFp(modulus); SparseMatrixGFp* M=new SparseMatrixGFp(*F, numrows, numcols); struct c_vector_modint_linbox *A = static_cast(rows); for(size_t i = 0; i < numrows; ++i) { for(size_t j = 0; j < A[i].num_nonzero; ++j) { M->setEntry(i, A[i].positions[j], A[i].entries[j]); } } return M; } void linbox_delete_modn_sparse_matrix (SparseMatrixGFp * A) { const GFp * F = &A->field(); delete A; delete F; } static std::vector linbox_new_modn_sparse_vector(mod_int modulus, size_t len, void *_vec) { std::vector A(len); if (_vec==NULL) { return A; } struct c_vector_modint_linbox *vec = static_cast(_vec); for(size_t i = 0; i < vec->num_nonzero; ++i) { A[vec->positions[i]] = vec->entries[i]; } return A; } unsigned long linbox_modn_sparse_matrix_rank(mod_int modulus, size_t numrows, size_t numcols, void *rows, int gauss) { unsigned long M_rank; GFpElement M_det; SparseMatrixGFp *M = linbox_new_modn_sparse_matrix(modulus, numrows, numcols, rows) ; const GFp &F = M->field(); GaussDomain dom(F); if(!gauss) { dom.InPlaceLinearPivoting(M_rank, M_det, *M, numrows, numcols); } else { dom.NoReordering(M_rank, M_det, *M, numrows, numcols); } //*pivots = (int*)calloc(sizeof(int), dom.pivots.size()); // int j=0; // for(std::vector::const_iterator i= dom.pivots.begin(); i!= dom.pivots.end(); ++i, ++j){ // (*pivots)[j] = *i; // } linbox_delete_modn_sparse_matrix(M); return M_rank; } std::vector linbox_modn_sparse_matrix_solve(mod_int p, size_t numrows, size_t numcols, void *_a, void *b, int method) { // solve ax = b, for x, a matrix, b vector, x vector SparseMatrixGFp *A =linbox_new_modn_sparse_matrix(p, numrows, numcols, _a); const GFp & F = A->field(); DenseVector X(F, numrows); DenseVector B(F, linbox_new_modn_sparse_vector(p, numcols, b) ); switch(method) { case 1: solve(X, *A, B, Method::BlasElimination()); break; case 2: solve(X, *A, B, Method::Blackbox()); break; case 3: solve(X, *A, B, Method::Wiedemann()); break; default: solve(X, *A, B); } linbox_delete_modn_sparse_matrix(A); return X.refRep(); } // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/interfaces/sage/linbox-sage.h000066400000000000000000000153631274717217100204550ustar00rootroot00000000000000/* linbox-sage.h * Copyright (C) 2007 Martin Albrecht * 2008 Clement Pernet * * Written by Martin Albrecht * Clement Pernet * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_sage_H #define __LINBOX_sage_H #include #include #include #ifdef __cplusplus #define EXTERN extern "C" #else #define EXTERN #endif /***************************************************************** Dense over Z/nZ. *****************************************************************/ // Element could be either double or float EXTERN void linbox_modn_dense_delete_array_double (double *f); EXTERN void linbox_modn_dense_delete_array_float (float *f); EXTERN unsigned long int linbox_modn_dense_echelonize_double (double modulus, double*matrix, size_t nrows, size_t ncols); EXTERN unsigned long int linbox_modn_dense_echelonize_float (float modulus, float * matrix,size_t nrows, size_t ncols); EXTERN unsigned long int linbox_modn_dense_rank_double (double modulus, double* matrix, size_t nrows, size_t ncols); EXTERN unsigned long int linbox_modn_dense_rank_float (float modulus, float* matrix, size_t nrows, size_t ncols); template Element linbox_modn_dense_det(Element modulus,Element*matrix,size_t nrows,size_t ncols); EXTERN double linbox_modn_dense_det_double (double modulus, double* matrix, size_t nrows, size_t ncols); EXTERN float linbox_modn_dense_det_float (float modulus, float* matrix, size_t nrows, size_t ncols); template Element * linbox_modn_dense_minpoly (Element modulus, Element ** mp, size_t* degree, size_t n, Element *matrix); EXTERN double* linbox_modn_dense_minpoly_double (double modulus, double ** mp, size_t* degree, size_t n, double*matrix); EXTERN float* linbox_modn_dense_minpoly_float (float modulus, float ** mp, size_t* degree, size_t n, float *matrix); template Element* linbox_modn_dense_charpoly (Element modulus, Element *& cp, size_t n, Element * matrix); EXTERN double* linbox_modn_dense_charpoly_double (double modulus, double ** cp, size_t n, double * matrix); EXTERN float* linbox_modn_dense_charpoly_float (float modulus, float ** cp, size_t n, float * matrix); template Element*linbox_modn_dense_matrix_matrix_multiply(Element modulus, Element * ans, Element *A, Element *B, size_t m,size_t n,size_t k); EXTERN double* linbox_modn_dense_matrix_matrix_multiply_double(double modulus, double * ans, double *A, double *B, size_t m,size_t n,size_t k); EXTERN float* linbox_modn_dense_matrix_matrix_multiply_float(float modulus, float * ans, float *A, float *B, size_t m,size_t n,size_t k); template Element * linbox_modn_dense_matrix_matrix_general_multiply (Element modulus, Element * ans,Element alpha, Element beta,Element *A, Element *B,size_t m, size_t n, size_t k); EXTERN double* linbox_modn_dense_matrix_matrix_general_multiply_double (double modulus, double * ans, double alpha, double beta, double *A, double *B, size_t m, size_t n, size_t k); EXTERN float* linbox_modn_dense_matrix_matrix_general_multiply_float (float modulus, float * ans, float alpha, float beta, float *A, float *B, size_t m, size_t n, size_t k); template unsigned long linbox_modn_dense_col_rankprofile_submatrix (Element modulus,Element* matrix, Element*out, size_t& rank, size_t nrows, size_t ncols); EXTERN unsigned long linbox_modn_dense_col_rankprofile_submatrix_double (double modulus, double* matrix, double* out, size_t* rank, size_t nrows, size_t ncols); EXTERN unsigned long linbox_modn_dense_col_rankprofile_submatrix_float (float modulus, float* matrix, float* out, size_t* rank, size_t nrows, size_t ncols); template unsigned long linbox_modn_dense_col_rankprofile_submatrix_indices(Element modulus,Element* matrix,size_t** row_idx, size_t** col_idx, size_t* rank, size_t nrows,size_t ncols); EXTERN unsigned long linbox_modn_dense_col_rankprofile_submatrix_indices_double (double modulus, double* matrix, size_t ** row_idx, size_t ** col_idx, size_t * rank, size_t nrows, size_t ncols); EXTERN unsigned long linbox_modn_dense_col_rankprofile_submatrix_indices_float (float modulus, float* matrix, size_t ** row_idx, size_t ** col_idx, size_t * rank, size_t nrows,size_t ncols); /***************************************************************** Dense over ZZ *****************************************************************/ /* linbox_minpoly allocates space for minpoly, so you have to call linbox_delete_array to free it up afterwards. */ void linbox_integer_dense_minpoly (mpz_t*& minpoly, size_t& degree, size_t n, mpz_t** matrix); void linbox_integer_dense_charpoly (mpz_t*& minpoly, size_t& degree, size_t n, mpz_t** matrix); void linbox_integer_dense_delete_array (mpz_t* f); /* ans must be a pre-allocated and pre-initialized array of GMP ints. */ int linbox_integer_dense_matrix_matrix_multiply (mpz_t** ans, mpz_t **A, mpz_t **B, size_t m, size_t n, size_t k); unsigned long linbox_integer_dense_rank(mpz_t** matrix, size_t nrows, size_t ncols); void linbox_integer_dense_det(mpz_t ans, mpz_t** matrix, size_t nrows, size_t ncols); void linbox_integer_dense_smithform(mpz_t *&v, mpz_t **matrix, size_t nrows, size_t ncols); void linbox_integer_dense_double_det (mpz_t ans1, mpz_t ans2, mpz_t **a, mpz_t ** b, mpz_t **c, size_t n, int proof); /***************************************************************** Sparse over Z/nZ *****************************************************************/ unsigned long linbox_modn_sparse_matrix_rank(unsigned int modulus, size_t numrows, size_t numcols, void *rows, int reorder); std::vector linbox_modn_sparse_matrix_solve (unsigned int modulus, size_t numrows, size_t numcols, void *a, void *b, int method); #endif // __LINBOX_SAGE_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox-config.in000066400000000000000000000031431274717217100161110ustar00rootroot00000000000000#! /bin/bash # Copyright (c) the LinBox group # This file is part of LinBox (and probably stolen here and there) # see COPYING for licence prefix=@prefix@ exec_prefix=@exec_prefix@ includedir=@includedir@ libdir=@libdir@ major=`echo @VERSION@ | cut -d'.' -f1` minor=`echo @VERSION@ | cut -d'.' -f2` micro=`echo @VERSION@ | cut -d'.' -f3` decvr=$((((($major*100)+$minor)*100)+$micro)) cflags=false libs=false usage() { cat <= 2.2.2 Libs: -L${libdir} -llinbox @LINBOXSAGE_LIBS@ @NTL_LIBS@ @MPFR_LIBS@ @FPLLL_LIBS@ @IML_LIBS@ @FLINT_LIBS@ @OCL_LIBS@ Cflags: @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR -I${includedir}/linbox @NTL_CFLAGS@ @MPFR_CFLAGS@ @FPLLL_CFLAGS@ @IML_CFLAGS@ @FLINT_CFLAGS@ \------------------------------------------------------- linbox-1.4.2/linbox/000077500000000000000000000000001274717217100143155ustar00rootroot00000000000000linbox-1.4.2/linbox/Makefile.am000066400000000000000000000041221274717217100163500ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # This file is part of LinBox # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ AM_CPPFLAGS= -I$(top_srcdir)/linbox $(DEPS_CFLAGS) $(DEFAULT_CFLAGS) LDADD = $(DEPS_LIBS) $(LDFLAGS) #AM_CPPFLAGS = -I@includedir@ -I$(top_srcdir)/linbox -I$(top_srcdir) $(DEFCPPFLAGS) $(OPTFLAGS) $(FFLAS_FFPACK_CFLAGS) $(NTL_CFLAGS) $(MPFR_CFLAGS) $(FPLLL_CFLAGS) $(IML_CFLAGS) $(FLINT_CFLAGS) $(PARFLAGS) #LDADD = $(FFLAS_FFPACK_LIBS) $(NTL_LIBS) $(MPFR_LIBS) $(FPLLL_LIBS) $(IML_LIBS) $(FLINT_LIBS) $(OCL_LIBS) SUBDIRS=util element field randiter vector matrix blackbox algorithms solutions ring BASIC_HDRS = \ linbox-config.h \ config.h \ config-blas.h \ integer.h \ linbox-tags.h NTL_HDRS = if LINBOX_HAVE_NTL USE_NTL_HDRS = $(NTL_HDRS) endif pkginclude_HEADERS = \ $(BASIC_HDRS) \ $(USE_NTL_HDRS) EXTRA_DIST = \ $(NTL_HDRS) \ linbox.doxy \ archetypes.doxy lib_LTLIBRARIES=liblinbox.la liblinbox_la_SOURCES = dummy.C liblinbox_la_LIBADD = \ util/libutil.la \ randiter/libranditer.la \ algorithms/libalgorithms.la \ $(MPFR_LIBS) $(IML_LIBS) $(OCL_LIBS) #Cygwin ? liblinbox_la_LDFLAGS = $(DEPS_LIBS) $(LDFLAGS) -no-undefined # $(top_srcdir)/benchmarks/libbenchmarks.la \ # linbox-1.4.2/linbox/algorithms/000077500000000000000000000000001274717217100164665ustar00rootroot00000000000000linbox-1.4.2/linbox/algorithms/Makefile.am000066400000000000000000000134321274717217100205250ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== pkgincludesubdir=$(pkgincludedir)/algorithms SUBDIRS=gauss opencl-kernels matrix-blas3 polynomial-matrix # IML noinst_LTLIBRARIES=libalgorithms.la libalgorithms_la_SOURCES= diophantine-solver.C # AM_CPPFLAGS= $(CBLAS_FLAG) $(GMP_CFLAGS) $(NTL_CFLAGS) AM_CPPFLAGS= -I$(top_srcdir)/linbox $(DEPS_CFLAGS) $(DEFAULT_CFLAGS) LDADD = $(DEPS_LIBS) $(LDFLAGS) #AM_CXXFLAGS = @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR $(NTL_CFLAGS) $(ATLAS_CFLAGS) $(FPLLL_CFLAGS) $(OCL_CFLAGS) $(OMPFLAGS) OCL_HDRS = \ opencl-resource-controller.h \ opencl-environ.h # if LINBOX_HAVE_OCL // we include them anyway. (for make dist when OCL not available) USE_OCL_HDRS = $(OCL_HDRS) # endif pkgincludesub_HEADERS = \ blackbox-container.h \ blackbox-container-symmetric.h \ blackbox-container-symmetrize.h \ blackbox-container-base.h \ bbsolve.h \ coppersmith.h \ double-det.h \ det-rational.h \ massey-domain.h \ wiedemann.h \ wiedemann.inl \ lanczos.h \ lanczos.inl \ block-lanczos.h \ block-lanczos.inl \ mg-block-lanczos.h \ mg-block-lanczos.inl \ la-block-lanczos.h \ la-block-lanczos.inl \ eliminator.h \ eliminator.inl \ gauss.h \ triangular-solve.h \ gauss-gf2.h \ triangular-solve-gf2.h \ dense-container.h \ cra-mpi.h \ cra-kaapi.h \ cra-domain.h \ cra-domain-seq.h \ cra-domain-omp.h \ cra-early-multip.h \ cra-early-single.h \ cra-full-multip.h \ cra-full-multip-fixed.h \ cra-givrnsfixed.h \ lazy-product.h \ rational-cra.h \ rational-cra2.h \ rational-cra-early-multip.h \ rational-cra-early-single.h \ rational-cra-full-multip.h \ bitonic-sort.h \ blackbox-block-container-base.h \ blackbox-block-container.h \ block-massey-domain.h \ block-wiedemann.h \ block-coppersmith-domain.h \ default.h \ signature.h \ smith-form-iliopoulos.h \ one-invariant-factor.h \ last-invariant-factor.h \ hybrid-det.h \ lifting-container.h \ smith-form-local.h \ smith-form-local2.inl \ smith-form-textbook.h \ smith-form-kannan-bachem.h \ matrix-inverse.h \ matrix-hom.h \ matrix-rank.h \ numeric-solver-lapack.h \ rational-solver-sn.h \ rational-solver-sn.inl \ dyadic-to-rational.h \ rational-reconstruction.h \ rational-reconstruction-base.h \ classic-rational-reconstruction.h \ fast-rational-reconstruction.h \ rational-solver.h \ rational-solver2.h \ rational-solver.inl \ diophantine-solver.h \ diophantine-solver.inl \ smith-form-binary.h \ smith-form-adaptive.h \ smith-form-adaptive.inl \ smith-form-sparseelim-local.h \ smith-form-sparseelim-poweroftwo.h \ rational-reconstruction2.h \ rational-solver-adaptive.h \ varprec-cra-early-single.h \ varprec-cra-early-multip.h \ vector-fraction.h \ whisart_trace.h \ cia.h \ lattice.h \ lattice.inl \ bbcharpoly.h \ charpoly-rational.h \ minpoly-integer.h \ minpoly-rational.h \ sigma-basis.h \ matpoly-mult.h \ echelon-form.h \ toeplitz-det.h \ dense-nullspace.h \ dense-nullspace.inl \ short-vector.h \ rns.h \ rns.inl \ invariant-factors.h \ smith-form-iliopoulos2.h \ $(USE_OCL_HDRS) # iml.h \ # EXTRA_DIST = \ algorithms.doxy \ cra.doxy \ iml.doxy \ wiedemann.doxy \ lanczos.doxy \ sigmabasis.doxy \ elimination.doxy \ lattice.doxy \ diophantine.doxy \ gauss.doxy linbox-1.4.2/linbox/algorithms/algorithms.doxy000066400000000000000000000060241274717217100215460ustar00rootroot00000000000000/* * Copyright (c) LinBox * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /** \ingroup linbox * \defgroup algorithms algorithms * * \brief The core linear algebra algorithms of LinBox. * * The codes here implement algorithms for linear algebra problems. The names * often reflect the authorship of the central algorithm (Lanczos, Wiedemann, * ...). In contrast, the "drivers" in the \ref solutions directory are named * for the problem solved (rank, det, ...). Those are generally wrappers of * algorithms from this directory. Their purpose is to give a simple and * direct user interface and sometimes to provide a solution strategy which is * a hybrid of algorithms from this directory. * * %Algorithm classes and functions generally have the field class as a * template parameter. Blackbox algorithms may have a BlackboxMatrix parameter * or allow a Blackbox class as template parameter. Elimination codes work * over DenseMatrix or SparseMatrix types with varying degrees of substitution * among the types possible. * */ //@{ /// @name Blackbox Algorithms //@{ //@Include: wiedemann.h //@Include: lanczos.h //@Include: blackbox-container.h //@Include: blackbox-container-base.h //@Include: blackbox-container-symmetric.h //@Include: blackbox-container-symmetrize.h //@Include: massey-domain.h //@Include: density.h //@} /// @name Blackbox Block Algorithms //@{ //@Include: blackbox-block-container-base.h //@Include: blackbox-block-container.h //@Include: block-massey-domain.h //@Include: block-lanczos.h //@Include: dense-container.h //@Include: blas-domain.h //@} /// @name Rational Solver //@{ //@Include: rational-solver.h //@Include: diophantine-solver.h //@Include: lifting-container.h //@Include: rational-reconstruction.h //@Include: matrix-inverse.h //@Include: matrix-mod.h //@Include: matrix-rank.h //@Include: vector-fraction.h //@} /// @name Smith Normal Form //@{ //@Include: smith-form.h //@Include: iliopoulos-elimination.h //@Include: ith-invariant-factor.h //@Include: last-invariant-factor.h //@Include: local-smith.h //@Include: 2local-smith.h //@Include: bitonic-sort.h //@Include: default.h //@} //@Include: gauss.h //@Include: cra.h //@} // vim:syn=doxygen linbox-1.4.2/linbox/algorithms/alt-blackbox-block-container.h000066400000000000000000000040541274717217100242550ustar00rootroot00000000000000// vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s #ifndef __LINBOX_alt_blackbox_block_container_H #define __LINBOX_alt_blackbox_block_container_H namespace LinBox { template class AltBlackboxBlockContainer { public: typedef typename MatrixDomain::OwnMatrix Block; AltBlackboxBlockContainer () {} /* AltBlackboxBlockContainer(const Blackbox *M, const Field &F, const Block &V) : U_(F,V.coldim(),M->rowdim()), V_(V), M_(M), F_(F), b_(V.coldim()) { } */ AltBlackboxBlockContainer(const Blackbox *M, const Field &F, const Block &U, const Block &V) : b_(V.coldim()), F_(&F), U_(U), V_(V), LastOdd_(F,V.rowdim(),V.coldim()), LastEven_(F,V.rowdim(),V.coldim()), val_(F,V.coldim(),V.coldim()), M_(M), MD_(F) {} class const_iterator { protected: AltBlackboxBlockContainer &c_; public: const_iterator () {} const_iterator(AltBlackboxBlockContainer &c) : c_(c) {} const_iterator& operator++() {c_.incr(); return *this;} const Value& operator*() {return c_.getValue();} }; const_iterator begin() { LastOdd_=V_; LastEven_=V_; isOdd_=true; return const_iterator(*this); } void incr() { Block result(*(const_cast(F_)),b_,b_); if (isOdd_) { M_->applyLeft(LastEven_,LastOdd_); MD_.mul(result,U_,LastEven_); } else { M_->applyLeft(LastOdd_,LastEven_); MD_.mul(result,U_,LastOdd_); } isOdd_=!isOdd_; for (size_t i=0;i MD_; }; } #endif linbox-1.4.2/linbox/algorithms/bbcharpoly.h000066400000000000000000000431221274717217100207660ustar00rootroot00000000000000/* linbox/algorithms/bbchapoly.h * Copyright(C) LinBox * Written * by Clement Pernet * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== *. */ /*! @file algorithms/bbcharpoly.h * @ingroup algorithms * @brief no doc. * */ #ifndef __LINBOX_bbcharpoly_H #define __LINBOX_bbcharpoly_H #define _LB_MAXITER 5 #include #include "linbox/blackbox/scalar-matrix.h" #include "linbox/blackbox/sum.h" #include "linbox/ring/modular.h" #include "linbox/field/field-traits.h" #include "linbox/solutions/det.h" #include "linbox/solutions/rank.h" #include "linbox/solutions/minpoly.h" #include "linbox/randiter/random-prime.h" #include "linbox/algorithms/matrix-hom.h" #include "linbox/blackbox/polynomial.h" #include #include namespace LinBox { /*! @internal * @ingroup charpoly * @brief BlackBox Characteristic Polynomial * @details NO DOC * @warning rebind comes from Givaro ! */ class BBcharpoly { template class FactorMult ; /*! @brief No doc */ template class FactorMult { public: FactorMult() : fieldP(NULL),intP(NULL) ,multiplicity(0),dep(NULL) {} FactorMult( FieldPoly* FP, IntPoly* IP, unsigned long m, FactorMult*d) : fieldP(FP), intP(IP), multiplicity(m), dep(d) {} FactorMult (const FactorMult& FM) : fieldP(FM.fieldP), intP(FM.intP), multiplicity(FM.multiplicity), dep(FM.dep) {} int update (const size_t n, int * goal) { if (dep->dep != NULL){ FactorMult*curr = dep; int k = dep->update (n,goal)+1; int d = ((int)dep->fieldP->size()-1)/k; int tmp = (int)(n-dep->multiplicity) / d; int i = k-1; while (curr->dep!=NULL){ curr = curr->dep; tmp-=i*(int)curr->multiplicity; --i; } tmp = tmp/k + (int)(multiplicity - dep->multiplicity) / d; dep->multiplicity =(size_t) tmp ; //std::cerr<<"Updating "<<*dep->fieldP<<" --> mul = "<fieldP->size()-1); return k; } else{ int tmp = (int)((n - 2 * dep->multiplicity + multiplicity) / (dep->fieldP->size()-1)); *goal -= tmp * ((int)dep->fieldP->size()-1); //std::cerr<<"Updating (leaf)"<<*dep->fieldP<<" --> mul = "<multiplicity = (size_t)tmp; return 1; } } FieldPoly *fieldP; IntPoly *intP; unsigned long multiplicity; FactorMult *dep; std::ostream& write(std::ostream& os) { return os<<" FieldPoly --> "< "< "< "< static Polynomial& blackboxcharpoly (Polynomial & P, const BlackBox & A, const Categorytag & tag, const Method::Blackbox & M); /** Algorithm computing the integer characteristic polynomial * of a blackbox. */ template < class BlackBox, class Polynomial > static Polynomial& blackboxcharpoly (Polynomial& P, const BlackBox & A, const RingCategories::IntegerTag & tag, const Method::Blackbox & M) { commentator().start ("Integer BlackBox Charpoly ", "IbbCharpoly"); typename BlackBox::Field intRing = A.field(); typedef Givaro::Modular Field; typedef typename BlackBox::template rebind::other FieldBlackBox; typedef Givaro::Poly1FactorDom IntPolyDom; typedef typename IntPolyDom::Element IntPoly; typedef Givaro::Poly1FactorDom::Element FieldPoly; // Set of factors-multiplicities sorted by degree typedef FactorMult FM; typedef std::multimap FactPoly; typedef typename FactPoly::iterator FactPolyIterator; std::multimap leadingBlocks; //typename std::multimap::iterator lead_it; FactPoly factCharPoly; size_t n = A.coldim(); IntPolyDom IPD(intRing); /* Computation of the integer minimal polynomial */ Polynomial intMinPoly(A.field()); minpoly (intMinPoly, A, M); if (intMinPoly.size() == n+1){ commentator().stop ("done", NULL, "IbbCharpoly"); return P = intMinPoly; } /* Factorization over the integers */ std::vector intFactors; std::vector exp; IPD.factor (intFactors, exp, IntPoly(intMinPoly.getRep().begin(),intMinPoly.getRep().end())); size_t factnum = intFactors.size(); /* Choose a modular prime field */ RandomPrimeIterator primeg (28); ++primeg; Field F(*primeg); /* Building the structure of factors */ int goal =(int) n; for (size_t i = 0; i < intFactors.size(); ++i) { uint64_t deg = (intFactors[i].size()-1); FactorMult* FFM=NULL; if (exp[i] > 1) { IntPoly *tmp = new IntPoly(intFactors[i]); FM* depend = NULL; for (size_t j = 1; j <= exp[i]; ++j){ IntPoly * tmp2 = new IntPoly(*tmp); FieldPoly *tmp2p = new FieldPoly(tmp2->size()); typename IntPoly::template rebind() (*tmp2p, *tmp2, F); FFM = new FM (tmp2p, tmp2, 0, depend); factCharPoly.insert (std::pair (deg, FFM)); ++factnum; depend = FFM; deg += intFactors[i].size()-1; if (j < exp[i]) IPD.mul (*tmp, *tmp2, intFactors[i]); } delete tmp; --factnum; FFM->multiplicity = 1; // The last factor is present in minpoly goal -= (int)deg-(int)intFactors[i].size()+1; leadingBlocks.insert (std::pair(FFM,false)); } else { FieldPoly* fp=new FieldPoly(intFactors[i].size()); typename IntPoly::template rebind() (*fp, (intFactors[i]), F); FFM = new FM (fp,&intFactors[i],1,NULL); factCharPoly.insert (std::pair (intFactors[i].size()-1, FFM)); leadingBlocks.insert (std::pair(FFM,false)); goal -= (int)deg; } } FieldBlackBox Ap(A, F); findMultiplicities (Ap, factCharPoly, leadingBlocks, goal, M); // Building the integer charpoly IntPoly intCharPoly (n+1); IntPoly tmpP; intRing.assign(intCharPoly[0], intRing.one); for (FactPolyIterator it_f = factCharPoly.begin(); it_f != factCharPoly.end(); ++it_f){ IPD.pow (tmpP, *it_f->second->intP, (long) it_f->second->multiplicity); IPD.mulin (intCharPoly, tmpP); delete it_f->second->intP; delete it_f->second->fieldP; delete it_f->second; } commentator().stop ("done", NULL, "IbbCharpoly"); return P = Polynomial(A.field(), typename Polynomial::Rep(intCharPoly.begin(),intCharPoly.end())); } /** Algorithm computing the characteristic polynomial * of a blackbox over a prime field. */ template < class BlackBox, class Polynomial > static Polynomial& blackboxcharpoly (Polynomial & P, const BlackBox & A, const RingCategories::ModularTag & tag, const Method::Blackbox & M) { commentator().start ("Givaro::Modular BlackBox Charpoly ", "MbbCharpoly"); typedef typename BlackBox::Field Field; typedef Givaro::Poly1FactorDom PolyDom; typedef typename PolyDom::Element FieldPoly; // Set of factors-multiplicities sorted by degree typedef std::multimap* > FactPoly; typedef typename FactPoly::iterator FactPolyIterator; std::multimap*,bool> leadingBlocks; //typename std::multimap*,bool>::iterator lead_it; Field F = A.field(); PolyDom PD (F); FactPoly factCharPoly; const size_t n = A.coldim(); /* Computation of the minimal polynomial */ Polynomial minPoly; minpoly (minPoly, A, M); //std::cerr<<"Minpoly = "< factors; std::vector exp; PD.factor (factors, exp, FieldPoly(minPoly.getRep().begin(),minPoly.getRep().end())); size_t factnum = factors.size(); /* Building the structure of factors */ int goal = (int)n; for (size_t i = 0; i < factors.size(); ++i) { uint64_t deg = (factors[i].size()-1); FactorMult* FFM=NULL; if (exp[i] > 1) { FieldPoly* tmp = new FieldPoly(factors[i]); FactorMult* depend = NULL; for (size_t j = 1; j <= exp[i]; ++j){ FieldPoly* tmp2 = new FieldPoly(*tmp); FFM = new FactorMult (tmp2, tmp2, 0, depend); // std::cerr<<"Inserting new factor (exp>1): "<<(*tmp2)<* > (deg, FFM)); ++factnum; depend = FFM; deg += factors[i].size()-1; if (j < exp[i]) PD.mul (*tmp, *tmp2, factors[i]); } delete tmp; --factnum; FFM->multiplicity = 1; // The last factor is present in minpoly goal -= (int)(deg-factors[i].size())+1; leadingBlocks.insert (std::pair*,bool>(FFM,false)); } else { FFM = new FactorMult (&factors[i],&factors[i],1U,NULL); //std::cerr<<"Inserting new factor : "<<*factors[i]<* > (factors[i].size()-1, FFM)); leadingBlocks.insert (std::pair*,bool>(FFM,false)); goal -= (int)deg; } } findMultiplicities ( A, factCharPoly, leadingBlocks, goal, M); // Building the product FieldPoly tmpP; F.assign(charPoly[0], F.one); for (FactPolyIterator it_f = factCharPoly.begin(); it_f != factCharPoly.end(); ++it_f){ PD.pow (tmpP, *it_f->second->fieldP,(long) it_f->second->multiplicity); PD.mulin (charPoly, tmpP); delete it_f->second->fieldP; delete it_f->second; } } commentator().stop ("done", NULL, "MbbCharpoly"); return P = Polynomial(A.field(), typename Polynomial::Rep(charPoly.begin(),charPoly.end())); } template < class FieldPoly,class IntPoly> static void trials( std::list > >& sols, const int goal, std::vector >& ufv, const int i0 ) { if ( !goal ){ sols.push_back( ufv); } else if ( goal > 0 ){ for (size_t i=(size_t)i0; isize()+1, ufv, (int)i ); ufv[i].multiplicity--; } } } template static void findMultiplicities( const BlackBox& A, std::multimap* >& factCharPoly, std::multimap*,bool>& leadingBlocks, int goal, const Method::Blackbox &M) { typedef std::multimap* > FactPoly; typedef typename BlackBox::Field Field; typedef Givaro::Poly1FactorDom PolyDom; typename FactPoly::iterator itf = factCharPoly.begin(); typename std::multimap*,bool>::iterator lead_it; Field F = A.field(); PolyDom PD(F); size_t factnum = factCharPoly.size(); size_t n = A.coldim(); /* Rank for the linear factors */ while ( ( factnum > 1 ) && ( itf->first == 1) ){ lead_it = leadingBlocks.find(itf->second); if ( lead_it != leadingBlocks.end()) lead_it->second = true; long unsigned int r; /* The matrix Pi (A) */ if (F.isZero (itf->second->fieldP->operator[](0))){ rank (r, A, M) ; } else { PolynomialBB PA (A, *itf->second->fieldP); rank (r, PA, M) ; } itf->second->multiplicity =(size_t) r; //std::cerr<<"Rank 1 : "<<*itf->second->fieldP<<" --> "< maxIter ){ lead_it = leadingBlocks.find (itf->second); if ( lead_it != leadingBlocks.end()) lead_it->second = true; PolynomialBB PA (A, *itf->second->fieldP); long unsigned int r; rank (r, PA, M); itf->second->multiplicity =(size_t)r; //std::cerr<<"Rank > 1 : "<<*itf->second->intP<<" --> "<* currFFM = lead_it->first; //std::cerr<<"Updating multiplicities of "<<*lead_it->first->fieldP<second){ // the leading block has not been computed // go to the last computed multiplicity of the sequence while (currFFM->dep!=NULL){ if (currFFM->dep->multiplicity != 0) break; currFFM = currFFM->dep; } if (currFFM->dep != NULL){ // Need one more computation: PolynomialBB PA (A, *currFFM->fieldP); long unsigned int r; rank (r, PA, M) ; //std::cerr<<"extra factor : "<<*currFFM->fieldP<<" --> "<multiplicity; currFFM->multiplicity =(size_t) r; currFFM->update (n,&goal); currFFM->multiplicity = (size_t)tmp; } } else { int lbm; if (currFFM->dep != NULL){ int k = currFFM->update (n,&goal)+1; int d = (int)(lead_it->first->fieldP->size()-1) / k; lbm = (int)(n-lead_it->first->multiplicity) / d; currFFM = currFFM->dep; do{ lbm -= (int)(currFFM->multiplicity * (currFFM->fieldP->size()-1)); currFFM = currFFM->dep; } while (currFFM!=NULL); lbm /= k; goal -= (lbm-1)*((int)lead_it->first->fieldP->size()-1); } else { lbm = (int)((int)(n-lead_it->first->multiplicity) / ((int)(lead_it->first->fieldP->size())-1)); goal -= (lbm-1)*((int)lead_it->first->fieldP->size()-1); } lead_it->first->multiplicity = (size_t)lbm; } } // Recursive search typename FactPoly::iterator firstUnknowFactor = itf; if ( factnum <= _LB_MAXITER ){ std::vector > unknownFact (factnum); for (size_t i = 0; i < factnum; ++i, ++itf){ unknownFact[i] = *itf->second; } std::list > > sols; trials (sols, goal,unknownFact, 0); typename std::list > >::iterator uf_it = sols.begin(); if (sols.size()>1){ // Evaluation of P in random gamma typename Field::Element d, gamma, mgamma, d2; typename Field::RandIter g(F); do g.random(gamma); while (F.isZero(gamma)); //Building the matrix A + gamma.Id mod p F.neg( mgamma, gamma ); ScalarMatrix gammaId( F, n, n, gamma ); Sum > Agamma(A, gammaId); // Compute det (A+gamma.Id) det (d, Agamma, M); if (A.rowdim()%2) F.negin(d); // Compute Prod(Pi(-gamma)^mi) typename Field::Element tmp, e; F.assign(d2,F.one); typename FactPoly::iterator it_f=factCharPoly.begin(); PolyDom PD_f (F); for (size_t i = 0; i < factCharPoly.size()-factnum; ++i, ++it_f){ PD_f.eval (tmp, *it_f->second->fieldP, mgamma); for (size_t j=0; j < it_f->second->multiplicity; ++j) F.mulin (d2, tmp); } while ( uf_it != sols.end() ){ F.assign (e,F.one); for (size_t i = 0; i < uf_it->size(); ++i){ PD_f.eval( tmp, *(*uf_it)[i].fieldP, mgamma ); for (size_t j=0; j < (*uf_it)[i].multiplicity; ++j) F.mulin( e, tmp ); } F.mulin( e, d2); if (F.areEqual(e,d)) break; ++uf_it; } if (uf_it == sols.end()) std::cerr<<"FAIL:: No solutions found in recursive seach"< >::iterator it_fm = (*uf_it).begin(); for (; it_f != factCharPoly.end(); ++it_f, ++it_fm) it_f->second->multiplicity = it_fm->multiplicity; } } }; } #undef _LB_MAXITER #endif // __BBCHARPOLY_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/bbsolve.h000066400000000000000000000254451274717217100203050ustar00rootroot00000000000000/* Copyright (c) LinBox * linbox/algorithms/bbsolve.h * (was linbox/solutions/solve.h) * written * by Bradford Hovinen * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== *. */ #ifndef __LINBOX_bbsolve_H #define __LINBOX_bbsolve_H #include // must fix this list... #include "linbox/algorithms/wiedemann.h" #include "linbox/algorithms/lanczos.h" #include "linbox/algorithms/mg-block-lanczos.h" #include "linbox/util/debug.h" #include "linbox/vector/vector-domain.h" #include "linbox/solutions/methods.h" namespace LinBox { #if 0 /** @name Solvers * @brief Solving linear system Ax = b over the field F. */ @{ #endif #if 0 // for specialization on method. template Vector& solve (const Blackbox&A, Vector &x, const Vector &b, const Field &F, const MyMethod & m ); #endif /** Solve Ax=b over field F using Wiedemann's method, with inconsistency certificate. * * This is a general interface for the linear system solving * capabilities of LinBox. If the system is nonsingular, it returns * the unique solution, storing it in the vector x. If the system is * consistent and singular, it returns a random solution. Repeated * calls to this function can give a complete description of the * solution manifold. If the system is inconsistent and the * \ref SolverTraits structure supplied requests certification of * inconsistency, it fills in the certificate of * inconsistency. Otherwise, it runs through the number of iterations * specified in \c traits and throws a \ref SolveFailed exception * if it cannot find a solution. * * This specialization uses Wiedemann's algorithm and is the default. * * @param A Black box matrix of the system * @param x Place to store solution vector * @param b Right-hand side * @param u Vector in which to store certificate of inconsistency, if required * @param F Field over which to perform computations * @param traits \ref SolverTraits structure with user-specified parameters * @return Reference to solution vector */ template typename WiedemannSolver::ReturnStatus solve (const Blackbox &A, Vector &x, const Vector &b, Vector &u, const Field &F, const WiedemannTraits &traits = WiedemannTraits ()) { WiedemannSolver solver (F, traits); return solver.solve (A, x, b, u); } /** Solve Ax=b over field F using the Wiedemann method. * * This version differs from the one above in that there is no extra * parameter for the certificate of inconsistency, and it throws * exceptions if the solution fails. It also returns a reference to * the solution vector. */ template Vector &solve (const Blackbox &A, Vector &x, const Vector &b, const Field &F, const WiedemannTraits &traits = WiedemannTraits ()) { Vector u(A.field()); WiedemannSolver solver (F, traits); VectorWrapper::ensureDim (u, A.rowdim ()); switch (solver.solve (A, x, b, u)) { case WiedemannSolver::OK: return x; case WiedemannSolver::FAILED: throw SolveFailed (); case WiedemannSolver::SINGULAR: throw SolveFailed (); case WiedemannSolver::INCONSISTENT: throw InconsistentSystem (u); default: throw LinboxError ("Bad return value from solve"); } } /** Solve Ax=b over field F using the Lanczos method. * * This is a general interface for the linear system solving capabilities of * LinBox. If the system is nonsingular, it returns the unique solution, storing * it in the vector x. If the system is consistent and singular, it returns a * random solution. Repeated calls to this function can give a complete * description of the solution manifold. If the system is inconsistent and the * \ref SolverTraits structure has result checking turned on, it runs through * the number of iterations specified in \c traits and throws a * \ref SolveFailed exception if it cannot find a solution. * * This specialization uses the Lanczos algorithm. * * @param A Black box matrix of the system * @param x Place to store solution vector * @param b Right-hand side * @param F Field over which to perform computations * @param traits \ref SolverTraits structure with user-specified parameters * @return Reference to solution vector */ template Vector &solve (const Blackbox &A, Vector &x, const Vector &b, const Field &F, const LanczosTraits &traits) { LanczosSolver solver (F, traits); return solver.solve (A, x, b); } /** Solve Ax=b over field F using the block Lanczos method. * * This is a general interface for the linear system solving capabilities of * LinBox. If the system is nonsingular, it returns the unique solution, storing * it in the vector x. If the system is consistent and singular, it returns a * random solution. Repeated calls to this function can give a complete * description of the solution manifold. If the system is inconsistent and the * \ref SolverTraits structure has result checking turned on, it runs through * the number of iterations specified in \c traits and throws a * \ref SolveFailed exception if it cannot find a solution. * * This specialization uses the block Lanczos algorithm. * * @param A Black box matrix of the system * @param x Place to store solution vector * @param b Right-hand side * @param F Field over which to perform computations * @param traits \ref SolverTraits structure with user-specified parameters * @return Reference to solution vector */ template Vector &solve (const Blackbox &A, Vector &x, const Vector &b, const Field &F, const BlockLanczosTraits &traits) { MGBlockLanczosSolver solver (F, traits); solver.solve (A, x, b); return x; } /** Solve Ax=b over field F using Gaussian elimination. * * This is a general interface for the linear system solving capabilities of * LinBox. If the system is nonsingular, it returns the unique solution, storing * it in the vector x. If the system is consistent and singular, it returns a * random solution. Repeated calls to this function can give a complete * description of the solution manifold. If the system is inconsistent and the * \ref SolverTraits structure supplied requests certification of * inconsistency, it throws an \ref InconsistentSystem exception, which * includes a certificate of inconsistency. Otherwise, it runs through the * number of iterations specified in \p traits and throws a * \ref SolveFailed exception if it cannot find a solution. * * @param A Black box matrix of the system * @param x Place to store solution vector * @param b Right-hand side * @param F Field over which to perform computations * @param traits \ref SolverTraits structure with user-specified parameters * @return Reference to solution vector */ template Vector &solve (const Matrix &A, Vector &x, const Vector &b, const Field &F, const BlasEliminationTraits &traits) { // N.B. This is a place holder; I am intending to fix this very shortly throw LinboxError ("Elimination-based solver not implemented"); return x; } /** Enumeration for results of next solver. * * SOLVE_SUCCESSFUL - System solution was succesful, \c x holds the solution * vector * SOLVE_INCONSISTENT - System was inconsistent, \c u holds the certificate * of inconsistency and \c x is untouched * SOLVE_FAILED - Neither a system solution nor a certificate of inconsistency * could be obtained before the maximum number of trials elapsed. Both \c x * and \c u are untouched. */ enum SolveResult { SOLVE_SUCCESSFUL, SOLVE_INCONSISTENT, SOLVE_FAILED }; /** Solve Ax=b over field F, returning consistency indicator * * This is a variant of \c solve that does not throw any exceptions unless * the user makes an error. It returns a \ref SolveResult enum indicating * whether the solve operation was successful, the system was inconsistent, or * the solve operation failed. The certificate of inconsistency, if requested, * is stored in a reference parameter supplied to this variant. * * @param A Black box matrix of the system * @param x Place to store solution vector * @param b Right-hand side * @param u Place to store certificate of inconsistency * @param F Field over which to perform computations * @param traits \ref SolverTraits structure with user-specified parameters * @return \ref SolveResult indicating whether the solve operation was * successful */ template SolveResult solve (const Blackbox &A, Vector &x, const Vector &b, const Field &F, Vector &u, const MethodTraits &traits = MethodTraits ()) { try { solve (A, x, b, F, traits); } catch (SolveFailed) { return SOLVE_FAILED; } catch (InconsistentSystem e) { VectorDomain VD (F); F.copy (u, e.certificate ()); return SOLVE_INCONSISTENT; } return SOLVE_SUCCESSFUL; } #if 0 @} #endif } #endif // __LINBOX_bbsolve_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/bitonic-sort.h000066400000000000000000000051201274717217100212510ustar00rootroot00000000000000/* Copyright (C) LinBox * Written by Zhendong Wan * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_bitonic_sort_H #define __LINBOX_bitonic_sort_H /*! @file algorithms/bitonic-sort.h * Implement bitonic sorting network */ #include namespace LinBox { /* end - begin must be a power of 2*/ template void bitonicSort(Iterator begin, Iterator end, const Comparator& comparator = Comparator()); /* end - begin must be a power of 2*/ template void bitonicMerge(Iterator begin, Iterator end, const Comparator& comparator = Comparator()); /// template void bitonicSort(Iterator begin, Iterator end, const Comparator& comparator) { if (end - begin >= 2) { Iterator mid = begin + (end - begin) / 2; // Sort the first half bitonicSort(begin, mid, comparator); // Sort the second half bitonicSort(mid, end, comparator); // reverse the order of second half std::reverse(mid, end); // Bitonic merge two halves bitonicMerge(begin, end, comparator); } } template void bitonicMerge(Iterator begin, Iterator end, const Comparator& comparator) { if (end - begin >= 2) { Iterator mid = begin + (end - begin) / 2; Iterator p1 = begin; Iterator p2 = mid; // Compare network for (p1 = begin, p2 = mid; p2 != end; ++ p1, ++ p2) comparator(*p1, *p2); // Bitonic Merge first half bitonicMerge(begin, mid, comparator); // Bitonic Merge second half bitonicMerge(mid, end, comparator); } } } #endif //__LINBOX_bitonic_sort_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/blackbox-block-container-base.h000066400000000000000000000167021274717217100244120ustar00rootroot00000000000000/* linbox/algorithms/blackbox-block-container-base.h * Copyright (C) 2002 Pascal Giorgi * * Written by Pascal Giorgi pascal.giorgi@ens-lyon.fr * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file algorithms/blackbox-block-container-base.h * @ingroup algorithms * @brief NO DOC */ #ifndef __LINBOX_blackbox_block_container_base_H #define __LINBOX_blackbox_block_container_base_H #include // for seeding #ifdef _OPENMP #include #endif #include "linbox/linbox-config.h" #include "linbox/util/debug.h" #include "linbox/blackbox/archetype.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/vector/vector-domain.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/matrix/matrix-domain.h" // #include "linbox/blackbox/triplesbb-omp.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/blackbox/pascal.h" namespace LinBox { //Temporary fix to deal with the fact that not all Blackboxes have applyLeft() template class MulHelper { public: template static void mul(const Field& F, Block &M1, const Blackbox &M2, const Block& M3) { linbox_check( M1.rowdim() == M2.rowdim()); linbox_check( M2.coldim() == M3.rowdim()); linbox_check( M1.coldim() == M3.coldim()); MatrixDomain MD(F); typename Block::ColIterator p1 = M1.colBegin(); typename Block::ConstColIterator p3 = M3.colBegin(); for (; p3 != M3.colEnd(); ++p1,++p3) { M2.apply(*p1,*p3); } } static void mul (const Field& F, Block &M1, const SparseMatrix &M2, const Block& M3) { M2.applyLeft(M1,M3); } static void mul (const Field& F, Block &M1, const SparseMatrix &M2, const Block& M3) { M2.applyLeft(M1,M3); } static void mul (const Field& F, Block &M1, const PascalBlackbox &M2, const Block& M3) { M2.applyLeft(M1,M3); } }; #ifndef MIN #define MIN(a,b) ((a)<(b)?(a):(b)) #endif /** \brief A base class for BlackboxBlockContainer. * The primary member function is \c begin(). * It returns an iterator which after i increments (++) dereferences to * \f$U A^i V\f$, for \f$U\f$ and \f$V\f$ determined by the init * function. It is designed to be used with implementations of Block * Berlekamp-Massey such as BlockMasseyDomain. * * Subclasses complete the implementation by defining \c _launch() and * \c _wait(). */ template class BlackboxBlockContainerBase { public: typedef _Field Field; typedef typename Field::Element Element; typedef _Blackbox Blackbox; typedef BlasMatrix Block; typedef BlasMatrix Value; // Default constructors BlackboxBlockContainerBase () {} // Sequence constructor from a blackbox and a field // cs set the size of the sequence BlackboxBlockContainerBase (const Blackbox *BD, const Field &F, size_t m, size_t n, size_t seed=(size_t)time(NULL)) : _field(&F) , _BB(BD), _size(BD->rowdim()/m + BD->coldim()/n +2) , _nn(BD->rowdim()), _m(m), _n(n) ,casenumber(0) ,_blockU(F,_m,_nn),_blockV(F,_nn,_n),_value(field(),m,n), _seed(seed) {} virtual ~BlackboxBlockContainerBase(){} // iterator of the sequence class const_iterator { protected: BlackboxBlockContainerBase &_c; public: const_iterator () {} const_iterator (BlackboxBlockContainerBase &C) : _c (C) {} const_iterator &operator ++ () { _c._launch (); return *this; } const Value &operator * () { _c._wait (); return _c.getvalue();} }; // begin of the sequence iterator const_iterator begin () { return const_iterator (*this); } // end of the sequence iterator const_iterator end () { return const_iterator (); } // size of the sequence size_t size() const { return _size; } // field of the sequence const Field &field () const { return *_field; } const Field &getField () const { return *_field; } // deprecated // blackbox of the sequence const Blackbox *getBB () const { return _BB; } // row dimension of the sequence element size_t rowdim() const { return _m; } // column dimension of the sequence element size_t coldim() const { return _n; } protected: friend class const_iterator; /** Launches a process to do the computation of the next sequence * value: \f$U A^{i+1} V\f$. ...or just does it. */ virtual void _launch() = 0; /** If a separate process is computing the next value of \f$U * A^{i+1} V\f$, \c _wait() blocks until the value is ready. */ virtual void _wait() = 0; //-------------- /// Members //-------------- const Field *_field; const Blackbox *_BB; size_t _size; // length of sequence size_t _nn; // _BB order (square mat) size_t _m; // block rows size_t _n; // block cols // BDS 22.03.03 long casenumber; Block _blockU; Block _blockV; Value _value; size_t _seed; const Value &getvalue() {return _value;} //-------------- /// Initializers //-------------- // Blackbox multiplication using apply function inline void Mul(Block &M1, const Blackbox &M2 , const Block& M3) { MulHelper::mul(field(),M1,M2,M3); } /// User Left and Right blocks void init (const Block& U, const Block& V) { linbox_check ( U.rowdim() == _m); linbox_check ( U.coldim() == _nn); linbox_check ( V.rowdim() == _nn); linbox_check ( V.coldim() == _n); casenumber = 1; _blockU = U; _blockV = V; _value = Value(*_field,_m,_n); BlasMatrixDomain BMD(*_field); BMD.mul(_value, _blockU, _blockV); } // Random Left Matrix and Right Matrix void init (size_t m, size_t n) { casenumber = 1; typename Field::RandIter G(*_field,0,_seed); Block U (m, _BB->rowdim()); _blockU =U; Block V(_BB->coldim(), n); _blockV =V; typename Block::Iterator iter_U = _blockU.Begin(); for (; iter_U != _blockU.End();++iter_U) G.random(*iter_U); typename Block::Iterator iter_V = _blockV.Begin(); for (; iter_V != _blockV.End();++iter_V) G.random(*iter_V); _value = Value(*_field,m,n); BlasMatrixDomain BMD(*_field); BMD.mul(_value, _blockU, _blockV); } }; } #endif // __LINBOX_blackbox_block_container_base_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/blackbox-block-container.h000066400000000000000000000331021274717217100234730ustar00rootroot00000000000000/* linbox/algorithms/blackbox-block-container.h * Copyright (C) 2002 Pascal Giorgi * * Written by Pascal Giorgi pascal.giorgi@ens-lyon.fr * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file algorithms/blackbox-block-container.h * @ingroup algorithms * @brief no doc. */ #ifndef __LINBOX_blackbox_block_container_H #define __LINBOX_blackbox_block_container_H #include "linbox/linbox-config.h" #include "linbox/util/debug.h" #include "linbox/algorithms/blackbox-block-container-base.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #define _BBC_TIMING #ifdef _BBC_TIMING #include #include "linbox/util/timer.h" #endif namespace LinBox { /*! @brief no doc. */ template class BlackboxBlockContainer : public BlackboxBlockContainerBase<_Field,_Blackbox> { public: typedef _Field Field; typedef typename Field::Element Element; typedef typename Field::RandIter RandIter; typedef BlasMatrix Block; typedef BlasMatrix Value; // Default constructor BlackboxBlockContainer () {} // constructor of the sequence from a blackbox, a field and one block projection BlackboxBlockContainer(const _Blackbox *D, const Field &F, const Block &U0) : BlackboxBlockContainerBase (D, F, U0.rowdim(), U0.coldim()) , _blockW(D->rowdim(), U0.coldim()), _BMD(F) { #ifdef _BBC_TIMING clearTimer(); tSequence.clear(); tSequence.start(); #endif this->init (U0, U0); #ifdef _BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif } // constructor of the sequence from a blackbox, a field and two blocks projection BlackboxBlockContainer(const _Blackbox *D, const Field &F, const Block &U0, const Block& V0) : BlackboxBlockContainerBase (D, F,U0.rowdim(), V0.coldim()) , _blockW(F,D->rowdim(), V0.coldim()), _BMD(F) { #ifdef _BBC_TIMING clearTimer(); tSequence.clear(); tSequence.start(); #endif this->init (U0, V0); #ifdef _BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif } // constructor of the sequence from a blackbox, a field and two blocks random projection BlackboxBlockContainer(const _Blackbox *D, const Field &F, size_t m, size_t n, size_t seed= (size_t)time(NULL)) : BlackboxBlockContainerBase (D, F, m, n,seed) , _blockW(F,D->rowdim(), n), _BMD(F) { #ifdef _BBC_TIMING clearTimer(); tSequence.clear(); tSequence.start(); #endif this->init (m, n); #ifdef _BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif } #ifdef _BBC_TIMING void clearTimer() { ttSequence.clear(); } void printTimer() { std::cout<<"Sequence Computation "< _BMD; #ifdef _BBC_TIMING Timer ttSequence, tSequence; #endif // launcher of the next sequence element computation void _launch () { #ifdef _BBC_TIMING tSequence.clear(); tSequence.start(); #endif if (this->casenumber) { this->Mul(_blockW,*this->_BB,this->_blockV); _BMD.mul(this->_value, this->_blockU, _blockW); this->casenumber = 0; } else { this->Mul(this->_blockV,*this->_BB,_blockW); _BMD.mul(this->_value, this->_blockU, this->_blockV); this->casenumber = 1; } #ifdef _BBC_TIMING tSequence.stop(); ttSequence +=tSequence; #endif } void _wait () {} }; /*! @brief no doc. */ template class BlackboxBlockContainerRecord : public BlackboxBlockContainerBase<_Field,_Blackbox> { public: typedef _Field Field; typedef typename Field::Element Element; typedef typename Field::RandIter RandIter; typedef BlasMatrix Block; typedef BlasMatrix Value; enum Launcher {RowUpdate=0, ColUpdate=1, Nothing=2}; // Default constructor BlackboxBlockContainerRecord () {} // constructor of the sequence from a blackbox, a field and one block projection BlackboxBlockContainerRecord(const _Blackbox *D, const Field &F, const Block &U0) : BlackboxBlockContainerBase (D, F, U0.rowdim(), U0.coldim()) , _blockW(F, D->rowdim(), U0.coldim()), _BMD(F), _launcher(Nothing), _iter(1) { this->init (U0, U0); _rep = std::vector (this->_size, Value(F)); _Vcopy = this->_blockV; for (size_t i=0;i< this->_size;++i){ _rep[i] = this->_value; _launch_record(); } this->_value=_rep[0]; } // constructor of the sequence from a blackbox, a field and two blocks projection BlackboxBlockContainerRecord(const _Blackbox *D, const Field &F, const Block &U0, const Block& V0, bool denseblock= true) : BlackboxBlockContainerBase (D, F,U0.rowdim(), V0.coldim()) , _blockW(F,D->rowdim(), V0.coldim()), _BMD(F), _launcher(Nothing), _iter(1) { #ifdef _BBC_TIMING clearTimer(); tSequence.clear(); tSequence.start(); #endif this->init (U0, V0); _rep = std::vector (this->_size, Value(F)); _Vcopy = this->_blockV; if (denseblock) { for (size_t i=0;i< this->_size;++i){ _rep[i] = this->_value; _launch_record(); } } else { _rep.resize(_rep.size()-3); size_t block= U0.rowdim(); size_t Nn = U0.coldim()/block; _Special_U.resize(block, std::vector(Nn)); for (size_t i=0;i_size-3;++i){ _launch_record_notdense(); _rep[i] = this->_value; } } this->_value=_rep[0]; #ifdef _BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif } // constructor of the sequence from a blackbox, a field and two blocks random projection BlackboxBlockContainerRecord(const _Blackbox *D, const Field &F, size_t m, size_t n, size_t seed= (size_t)time(NULL)) : BlackboxBlockContainerBase (D, F, m, n,seed), _blockW(D->rowdim(), n), _BMD(F), _launcher(Nothing), _iter(1) { #ifdef _BBC_TIMING clearTimer(); tSequence.clear(); tSequence.start(); #endif this->init (m,n); _rep = std::vector (this->_size); _Vcopy = this->_blockV; for (size_t i=0;i< this->_size;++i){ _rep[i] = this->_value; _launch_record(); } this->_value=_rep[0]; #ifdef _BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif } void setU (const std::vector &b, size_t k) { linbox_check( b.size() == this->_row); _launcher = RowUpdate; _upd_idx = k; _u = b; _w.resize(this->_row); _iter = 1; _case = 1; #ifdef _BBC_TIMING tSequence.clear(); tSequence.start(); #endif std::vector _row_value(this->_n); _BMD.mul(_row_value, b, _Vcopy); this->_value = _rep[0]; for (size_t j=0; j< this->_n; ++j) this->_value.setEntry(_upd_idx, j, _row_value[j]); #ifdef _BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif } void setV (const std::vector &b, size_t k) { linbox_check( b.size() == this->_col); _launcher = ColUpdate; _upd_idx = k; _u = b; _w.resize(this->_col); _iter = 1; _case = 1; #ifdef _BBC_TIMING tSequence.clear(); tSequence.start(); #endif std::vector _col_value(this->_m); _BMD.mul(_col_value, this->_blockU, b); this->_value = _rep[0]; for (size_t j=0; j< this->_m; ++j) this->_value.setEntry(j, _upd_idx, _col_value[j]); #ifdef __BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif } void recompute() { switch(_launcher) { case Nothing: this->_value=_rep[0]; _iter=1; break; case RowUpdate: #ifdef _BBC_TIMING tSequence.clear(); tSequence.start(); #endif for (size_t i=0;i< this->_size;++i){ _rep[i]=this->_value; _launch_record_row(); } _launcher=Nothing; this->_value=_rep[0]; _iter=1; #ifdef _BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif break; case ColUpdate: #ifdef _BBC_TIMING tSequence.clear(); tSequence.start(); #endif for (size_t i=0;i< this->_size;++i){ _rep[i]=this->_value; _launch_record_col(); } _launcher=Nothing; this->_value=_rep[0]; _iter=1; break; #ifdef _BBC_TIMING tSequence.stop(); ttSequence += tSequence; #endif default : throw LinboxError ("Bad argument in BlackboxBlockContainerRecord, _launch() function\n"); break; } } #ifdef _BBC_TIMING void clearTimer() { ttSequence.clear(); } void printTimer() { std::cout<<"Sequence Computation "<& getRep() const { return _rep;} protected: Block _blockW; Block _Vcopy; BlasMatrixDomain _BMD; std::vector _rep; size_t _upd_idx; std::vector _u; std::vector _w; Launcher _launcher; size_t _iter; size_t _case; std::vector > _Special_U; #ifdef _BBC_TIMING Timer ttSequence, tSequence; #endif // launcher of computation of sequence element void _launch_record () { if (this->casenumber) { Mul(_blockW,*this->_BB,this->_blockV); _BMD.mul(this->_value, this->_blockU, _blockW); this->casenumber = 0; } else { Mul(this->_blockV,*this->_BB,_blockW); _BMD.mul(this->_value, this->_blockU, this->_blockV); this->casenumber = 1; } } // launcher of computation of sequence element void _launch_record_notdense () { size_t block= this->_blockV.coldim(); size_t numblock=_Special_U[0].size(); if (this->casenumber) { Mul(_blockW,*this->_BB,this->_blockV); std::vector tmp(block); for (size_t i=0; i T(_blockW, i*numblock, 0, numblock, block); _BMD.mul(tmp, _Special_U[i], T); for (size_t j=0;jgetField()->assign(this->_value.refEntry(i,j), tmp[j]); } } this->casenumber = 0; } else { Mul(this->_blockV,*this->_BB,_blockW); std::vector tmp(block); for (size_t i=0; i< block; ++i){ BlasMatrix T(this->_blockV, i*numblock, 0, numblock, block); _BMD.mul(tmp, _Special_U[i], T); for (size_t j=0;jgetField().assign(this->_value.refEntry(i,j), tmp[j]); } this->casenumber = 1; } } // launcher of computation of sequence element // just update one row in the sequence element void _launch_record_row() { if ( _iter < this->_size) { if ( _case == 1) { this->_BB->applyTranspose(_w,_u); std::vector _row_value(this->_n); _BMD.mul(_row_value, _w, _Vcopy); this->_value = _rep[_iter]; for (size_t j=0; j< this->_n; ++j) this->_value.setEntry(_upd_idx, j, _row_value[j]); ++_iter; _case =0; } else { this->_BB->applyTranspose(_u,_w); std::vector _row_value(this->_n); _BMD.mul(_row_value, _u, _Vcopy); this->_value = _rep[_iter]; for (size_t j=0; j< this->_n; ++j) this->_value.setEntry(_upd_idx, j, _row_value[j]); ++_iter; _case =1; } } } // launcher of computation of sequence element // just update one col in the sequence element void _launch_record_col() { if ( _iter < this->_size) { if ( _case == 1) { this->_BB->apply(_w,_u); std::vector _col_value(this->_m); _BMD.mul(_col_value, this->_blockU, _w); this->_value = _rep[_iter]; for (size_t j=0; j< this->_m; ++j) this->_value.setEntry(j, _upd_idx, _col_value[j]); ++_iter; _case =0; } else { this->_BB->apply(_u,_w); std::vector _col_value(this->_m); _BMD.mul(_col_value, this->_blockU, _u); this->_value = _rep[_iter]; for (size_t j=0; j< this->_m; ++j) this->_value.setEntry(j, _upd_idx, _col_value[j]); ++_iter; _case =1; } } } // launcher which be used as iterator on the sequence void _launch() { switch (_launcher) { case Nothing: if (_iter < this->_size) this->_value = _rep[_iter]; ++_iter; break; case RowUpdate: _launch_record_row(); break; case ColUpdate: _launch_record_col(); break; default : throw LinboxError ("Bad argument in BlackboxBlockContainerRecord, _launch() function\n"); break; } } void _wait () {} }; } #undef _BBC_TIMING #endif // __LINBOX_blackbox_block_container_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/blackbox-container-base.h000066400000000000000000000122411274717217100233140ustar00rootroot00000000000000/* linbox/algorithms/blackbox-container.h * Copyright (C) 1999, 2001 Jean-Guillaume Dumas * * Written by Jean-Guillaume Dumas * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_blackbox_container_base_H #define __LINBOX_blackbox_container_base_H // ================================================================ // Base ForwardIterator wrapper for BlackBoxes // Have to be provided : // - launch : launches the following computation // - wait : waits for the end of the current computation // ================================================================ #include "linbox/vector/vector-domain.h" namespace LinBox { #ifndef MIN # define MIN(a,b) ((a)<(b)?(a):(b)) #endif /** \brief A base class for BlackboxContainer. * The primary member function is begin(). * It returns an iterator which after i increments (++) dereferences to * $v^T A^i u$, for $v$ and $u$ determined by the form of construction. * It is designed to be used with implementations of Berlekamp-Massey * such as MasseyDom. * * Subclasses complete the implementation by defining _launch() and _wait(). */ template class BlackboxContainerBase { public: typedef typename Field::Element Element; //-- Constructors //! @bug no need for F BlackboxContainerBase (const Blackbox *BB, const Field &F) : _field (&F), _VD (F), _BB (BB), _size ((long)MIN (BB->rowdim (), BB->coldim ())) ,casenumber(0) ,u(F),v(F) { _size <<= 1; } // Pascal Giorgi 16.02.2004 //! @bug no need for F BlackboxContainerBase (const Blackbox *BB, const Field &F, unsigned long Size) : _field (&F), _VD (F), _BB (BB), _size ((long)Size) ,casenumber(0) ,u(F),v(F) {} virtual ~BlackboxContainerBase () { //delete _BB; } class const_iterator { BlackboxContainerBase *_c; public: const_iterator () : _c(0){} // BB ?? const_iterator (BlackboxContainerBase &C) : _c (&C) {} const_iterator &operator ++ () { _c->_launch (); return *this; } const Element &operator * () { _c->_wait (); return _c->getvalue (); } }; const_iterator begin () { return const_iterator (*this); } const_iterator end () { return const_iterator (); } long size () const { return _size; } const Field &getField () const { return *_field; } // deprecated const Field &field () const { return *_field; } Blackbox *getBB () const { return _BB; } protected: friend class const_iterator; /** Launches a process to do the computation of the next sequence * value: $v^T A^{i+1} u$. ...or just does it. */ virtual void _launch() = 0; /** If a separate process is computing the next value of $v^T A^{i+1} u$, * _wait() blocks until the value is ready. */ virtual void _wait() = 0; //-------------- /// Members //-------------- const Field *_field; VectorDomain _VD; const Blackbox *_BB; long _size; // BDS 22.03.03 // bb : what is casenumber ? long casenumber; BlasVector u, v; Element _value; const Element &getvalue() { return _value; } //-------------- /// Initializers //-------------- /// User Left and Right vectors template Element &init (const Vector1& uu, const Vector2& vv) { casenumber = 1; u.resize(uu.size()); std::copy(uu.begin(),uu.end(),u.begin()); //u = uu; v.resize(vv.size()); std::copy(vv.begin(),vv.end(),v.begin()); //v = vv; // JGD 22.03.03 // return _VD.dot (_value, u, u); return _VD.dot (_value, u, v); } /// Random Left vectors, Zero Right vector template Element &init (RandIter& g) { casenumber = 1; u.resize (_BB->coldim ()); for (long i = (long)u.size (); i--;) g.random (u[(size_t)i]); v.resize (_BB->rowdim ()); return _VD.dot (_value, u, u); } /// User Left vectors, Zero Right vector template Element &init (const Vector& uu) { casenumber = 1; u.resize(uu.size()); std::copy(uu.begin,uu.end(),u.begin()); v.resize (_BB->rowdim ()); return _VD.dot (_value, u, u); } }; } #endif // __LINBOX_blackbox_container_base_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/blackbox-container-symmetric.h000066400000000000000000000070431274717217100244220ustar00rootroot00000000000000/* linbox/algorithms/blackbox-container.h * Copyright (C) 1999, 2001 Jean-Guillaume Dumas, Bradford Hovinen * * Written by Jean-Guillaume Dumas , * * ------------------------------------ * Bradford Hovinen * * Modifications to incorporate into linbox-new tree * ------------------------------------ * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== *. */ // ================================================================ // LinBox Project 1999 // Black Box iterator and container // For symmetric matrix with same left and right vector // the sequence is this->u^t this->v, this->u^t A this->v, ..., this->u^t A^n this->v, // Time-stamp: <25 Jan 02 16:04:24 Jean-Guillaume.Dumas@imag.fr> // ================================================================ #ifndef __LINBOX_blackbox_container_symmetric_H #define __LINBOX_blackbox_container_symmetric_H #include "linbox/randiter/archetype.h" #include "linbox/algorithms/blackbox-container.h" namespace LinBox { /// \brief See base class for doc. template class BlackboxContainerSymmetric : public BlackboxContainerBase { public: typedef _Blackbox Blackbox; BlackboxContainerSymmetric () {} template BlackboxContainerSymmetric (const Blackbox *D, const Field &F, const Vector &u0) : BlackboxContainerBase (D, F) { this->init (u0, u0); } BlackboxContainerSymmetric (const Blackbox *D, const Field &F, RandIter &g) : BlackboxContainerBase (D, F) { this->init (g); } protected: void _launch () { if (this->casenumber > 0) { if (this->casenumber == 1) { this->casenumber = 2; this->_BB->apply (this->v, this->u); // this->v <- B(B^i u_0) = B^(i+1) u_0 this->_VD.dot (this->_value, this->u, this->v); // t <- this->u^t this->v = u_0^t B^(2i+1) u_0 } else { this->casenumber = -1; this->_VD.dot (this->_value, this->v, this->v); // t <- this->v^t this->v = u_0^t B^(2i+2) u_0 } } else { if (this->casenumber == 0) { this->casenumber = 1; this->_VD.dot (this->_value, this->u, this->u); // t <- this->u^t this->u = u_0^t B^(2i+4) u_0 } else { this->casenumber = 0; this->_BB->apply (this->u, this->v); // this->u <- B(B^(i+1) u_0) = B^(i+2) u_0 this->_VD.dot (this->_value, this->v, this->u); // t <- this->v^t this->u = u_0^t B^(2i+3) u_0 } } } void _wait () {} }; } #endif // __LINBOX_blackbox_container_symmetric_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/blackbox-container-symmetrize.h000066400000000000000000000063701274717217100246200ustar00rootroot00000000000000/* linbox/algorithms/blackbox-container-symmetrize.h * Copyright (C) 1999, 2001 Jean-Guillaume Dumas * * Written by Jean-Guillaume Dumas , * * ------------------------------------ * Bradford Hovinen * * Ported to linbox-new framework; replaced use of DOTPROD, etc. with * VectorDomain * ------------------------------------ * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== *. */ /*! @internal * @file algorithms/blackbox-containter-symetrize.h * @ingroup algorithms * @brief Symmetrizing iterator for rank computations */ #ifndef __LINBOX_blackbox_container_symmetrize_H #define __LINBOX_blackbox_container_symmetrize_H #include "linbox/algorithms/blackbox-container-base.h" namespace LinBox { /** \brief Symmetrizing iterator (for rank computations). * @ingroup algorithms * * Symmetrizing iterator (for rank computations) * Same left and right vector * A is supposed to have tranpose-vector product * the sequence is * \code this->u^t this->u (A this->u)^t (A this->u) = this->u^t (A^t A) this->u (A^t (A this->u))^t (A^t (A this->u)) = this->u^t (A^t A)^2 this->u etc. \endcode */ template class BlackboxContainerSymmetrize : public BlackboxContainerBase { public: typedef _Blackbox Blackbox; BlackboxContainerSymmetrize () {} template BlackboxContainerSymmetrize (const Blackbox *D, const Field &F, const Vector &u0) : BlackboxContainerBase (D, F) { init (u0); } //BlackboxContainerSymmetrize (const Blackbox *D, const Field &F, RandIter &g = typename Field::RandIter(_field) ) BlackboxContainerSymmetrize (const Blackbox *D, const Field &F, RandIter &g = typename Field::RandIter() ) : BlackboxContainerBase (D, F) { init (g); } private: void _launch () { if (this->casenumber) { this->casenumber = 0; this->_BB->apply (this->v, this->u); this->_VD.dot (this->_value, this->v, this->v); } else { this->casenumber = 1; this->_BB->applyTranspose (this->u, this->v); this->_VD.dot (this->_value, this->u, this->u); } } void _wait () {} }; } #endif // __LINBOX_blackbox_container_symmetrize_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/blackbox-container.h000066400000000000000000000107421274717217100224100ustar00rootroot00000000000000/* linbox/algorithms/blackbox-container.h * Copyright (C) 1999, 2001 Jean-Guillaume Dumas, Bradford Hovinen * * Written by Jean-Guillaume Dumas , * Bradford Hovinen * * ------------------------------------ * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== *. */ #ifndef __LINBOX_blackbox_container_H #define __LINBOX_blackbox_container_H #include "linbox/randiter/archetype.h" #include "linbox/algorithms/blackbox-container-base.h" #include "linbox/util/timer.h" namespace LinBox { /// \brief Limited doc so far. template class BlackboxContainer : public BlackboxContainerBase { public: typedef _Blackbox Blackbox; // BlackboxContainer () { /*std::cerr << "BC def cstor" << std::endl;*/ } template BlackboxContainer(const Blackbox * D, const Field &F, const Vector &u0) : BlackboxContainerBase (D, F) ,w(F) { init (u0, u0); w = this->u; #ifdef INCLUDE_TIMING _applyTime = _dotTime = 0.0; #endif } // Pascal Giorgi 16.02.2004 template BlackboxContainer(const Blackbox * D, const Field &F, const Vector &u0, unsigned long size) : BlackboxContainerBase (D, F,size) ,w(F) { init (u0, u0); w = this->u; #ifdef INCLUDE_TIMING _applyTime = _dotTime = 0.0; #endif } template BlackboxContainer(const Blackbox * D, const Field &F, const Vector1 &u0, const Vector2& v0) : BlackboxContainerBase (D, F) ,w(F) { init (u0, v0); w = this->v; #ifdef INCLUDE_TIMING _applyTime = _dotTime = 0.0; #endif } BlackboxContainer(const Blackbox * D, const Field &F, RandIter &g) : BlackboxContainerBase (D, F) ,w(F) { this->casenumber = 1; this->u.resize (this->_BB->coldim ()); for (long i = (long)this->u.size (); i--;) g.random (this->u[(size_t)i]); this->w.resize (this->_BB->coldim ()); for (long i = (long)this->w.size (); i--;) g.random (this->w[(size_t)i]); this->v.resize (this->_BB->rowdim ()); this->_VD.dot (this->_value, this->u, this->w); #ifdef INCLUDE_TIMING _applyTime = _dotTime = 0.0; #endif } #ifdef INCLUDE_TIMING double applyTime () const { return _applyTime; } double dotTime () const { return _dotTime; } #endif // INCLUDE_TIMING protected: // std::vector w; BlasVector w ; #ifdef INCLUDE_TIMING Timer _timer; double _applyTime, _dotTime; #endif // INCLUDE_TIMING void _launch () { if (this->casenumber) { #ifdef INCLUDE_TIMING _timer.start (); #endif // INCLUDE_TIMING this->_BB->apply (this->v, w); // GV #ifdef INCLUDE_TIMING _timer.stop (); _applyTime += _timer.realtime (); _timer.start (); #endif // INCLUDE_TIMING this->_VD.dot (this->_value, this->u, this->v); // GV #ifdef INCLUDE_TIMING _timer.stop (); _dotTime += _timer.realtime (); #endif // INCLUDE_TIMING this->casenumber = 0; } else { #ifdef INCLUDE_TIMING _timer.start (); #endif // INCLUDE_TIMING this->_BB->apply (w, this->v); // GV #ifdef INCLUDE_TIMING _timer.stop (); _applyTime += _timer.realtime (); _timer.start (); #endif // INCLUDE_TIMING this->_VD.dot (this->_value, this->u, w); // GV #ifdef INCLUDE_TIMING _timer.stop (); _dotTime += _timer.realtime (); #endif // INCLUDE_TIMING this->casenumber = 1; } } void _wait () {} }; } #endif // __LINBOX_blackbox_container_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/block-coppersmith-domain.h000066400000000000000000000603421274717217100235360ustar00rootroot00000000000000/* linbox/algorithms/block-coppersmith-domain.h * Copyright (C) 2012 George Yuhasz * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_coppersmith_block_domain_H #define __LINBOX_coppersmith_block_domain_H #include #include #include #include #include "linbox/util/timer.h" #include "givaro/givtimer.h" #if defined(__LINBOX_USE_OPENMP) and defined(__GIVARO_USE_OPENMP) #include namespace LinBox { typedef Givaro::OMPTimer CTimer; } #else namespace LinBox { typedef Givaro::Timer CTimer; } #endif #include "linbox/util/commentator.h" #define DEFAULT_BLOCK_EARLY_TERM_THRESHOLD 10 //Preprocessor variables for the state of BM_iterators #define DeltaExceeded 4 #define SequenceExceeded 3 #define GeneratorFound 2 #define GeneratorUnconfirmed 1 namespace LinBox { double g_time1=0.0,g_time2=0.0,g_time3=0.0,g_time4=0.0; /** Compute the linear generator of a sequence of matrices. * * This class encapsulates the functionality required for computing * the block minimal polynomial of a matrix. * @bib * Yuhasz thesis ... */ template class BlockCoppersmithDomain { public: typedef _Domain Domain; typedef typename Domain::Field Field; typedef typename Domain::Element Element; typedef _Sequence Sequence; typedef typename Domain::OwnMatrix Coefficient; typedef typename Domain::Matrix Sub; protected: Sequence *_container; const Domain *_MD; unsigned long EARLY_TERM_THRESHOLD; public: BlockCoppersmithDomain (const BlockCoppersmithDomain &Mat, unsigned long ett_default = DEFAULT_BLOCK_EARLY_TERM_THRESHOLD) : _container(Mat._container), _MD(Mat._MD), EARLY_TERM_THRESHOLD (ett_default) {} BlockCoppersmithDomain (const Domain& MD, Sequence *D, unsigned long ett_default = DEFAULT_BLOCK_EARLY_TERM_THRESHOLD) : _container(D), _MD(&MD), EARLY_TERM_THRESHOLD (ett_default) {} //matrix domain const Domain &domain () const { return *_MD; } // field of the domain const Field &field () const { return domain().field(); } const Field &getField () const { return domain().field(); } // deprecated // sequence of the domain Sequence *getSequence () const { return _container; } // the principal function std::vector right_minpoly (std::vector &P); // left minimal generating polynomial of the sequence // This _MAY_ get defined eventually. std::vector & left_minpoly (std::vector &P); // { /* transpose seq and transpose result*/ } // For compatibility with massey-domain (element sequence case). std::vector /* & */ operator()(std::vector &P) { return right_minpoly(P); } private: // bm-seq.h stuff can go here. class BM_Seq { public: typedef typename std::list::const_iterator const_iterator; typedef int size_type; inline const Domain &domain() const { return *_MD;} inline const Field &field() const {return domain().field();} private: const Domain *_MD; std::list _seq; size_type _size; size_t _row, _col; public: BM_Seq(const Domain & MD, size_t r, size_t c) : _MD(&MD) { _row = r; _col = c; _size = 0; } BM_Seq(const Domain & MD, size_t r) : _MD(&MD) { _row = r; _col = r; _size = 0; } BM_Seq(const Domain &MD, int n, Coefficient& M) : _MD(&MD), _seq(n, M), _size(n) { _row = M.rowdim(); _col = M.coldim(); } BM_Seq() {} BM_Seq(const BM_Seq& S) : _MD(S._MD), _seq(S._seq), _size(S._size), _row(S._row), _col(S._col) {} BM_Seq & operator=(const BM_Seq& S) { if(this != &S){ (*this)._size = S._size; (*this)._row = S._row; (*this)._col = S._col; (*this)._MD = S._MD; _seq.clear(); for(typename std::list::const_iterator it = S._seq.begin(); it != S._seq.end(); ++it) _seq.push_back(*it); } return *this; } size_t rowdim() { return _row; } size_t coldim() { return _col; } const_iterator begin() const { return _seq.begin(); } const_iterator end() const { return _seq.end(); } void push_back(const Coefficient &M) { if(_row==M.rowdim() && _col==M.coldim()){ _seq.push_back(M); ++_size; } } bool operator==(const BM_Seq& l) { typename std::list::const_iterator it, lit; bool test = false; if(_size==l._size && _row==l._row && _col==l._col){ test = true; it = _seq.begin(); lit = l._seq.begin(); if(_size==0){ return test; } else{ while(test && it!=_seq.end()){ test = domain().areEqual(*it,*lit); ++it; ++lit; } } } return test; } bool operator!=(const BM_Seq& l) { return !(*this == l); } size_type size() { return _size; } class BM_iterator { public: typedef std::list value_type; private: const Domain *_MD; BM_Seq& _seq; typename BM_Seq::size_type _size; typename BM_Seq::size_type _t; typename BM_Seq::const_iterator _seqel; std::list _gen; std::vector _deg; size_t _delta; size_t _mu; size_t _beta; size_t _sigma; size_t _gensize; size_t _row, _col; size_t _ett; size_t _etc; public: // This is an enumeration class that tells what state the berlekamp/massey algoithm iterator is in. // The four states are: // DeltaExceeded = 4 // SequenceExceeded = 3 // GeneratorFound = 2 // GeneratorUnconfirmed = 1 class TerminationState{ private: int _state; friend class BM_iterator; TerminationState() : _state(GeneratorUnconfirmed) {} TerminationState(int m) : _state(m) {} public: TerminationState(const TerminationState& t) : _state(t._state) {} TerminationState & operator=(const TerminationState & t){ if(this != &t){ (*this)._state = t._state; } return *this; } bool IsGeneratorUnconfirmed(){ return _state==GeneratorUnconfirmed; } bool IsGeneratorFound() { return _state==GeneratorFound; } bool IsSequenceExceeded() { return _state==SequenceExceeded; } bool IsDeltaExceeded() { return _state==DeltaExceeded; } }; // TerminationState private: TerminationState _state; public: TerminationState state() const { return _state; } void setDelta(int d) { _delta=d; if((/* _delta < 0 ||*/ _beta < _delta - _sigma + _mu +1) && _state._state!=3){ if(_sigma <= _delta /*|| _delta < 0*/) _state._state = GeneratorUnconfirmed; else _state._state = DeltaExceeded; } else{ if(_sigma > _delta) _state._state = DeltaExceeded; else _state._state = GeneratorFound; } } //field and matrix domain functions inline const Domain &domain() const { return *_MD;} inline const Field &field() const { return domain().field();} //Constructor explicit BM_iterator(BM_Seq& s, unsigned long earlyTermThreshold=DEFAULT_BLOCK_EARLY_TERM_THRESHOLD, typename BM_Seq::size_type elinit=0) : _MD(&s.domain()), _seq(s) { _row = s.rowdim(); _col = s.coldim(); _size = _seq.size(); _t = elinit; _delta = (size_t)-1; // BB: is it meant ? _seqel = _seq.begin(); _deg = std::vector(_row+_col); _ett=earlyTermThreshold; _etc=0; for(size_t i = _col; i < _row+_col; ++i) _deg[i] = 1; Coefficient gen1(field(),_col,_row+_col); for(size_t i = 0; i<_col; ++i) gen1.setEntry(i,i,field().one); _gen.push_back(gen1); _gensize = 1; if(_size==0 || _t==_size) _state._state = SequenceExceeded; _sigma = 0; _mu = 0; _beta = 1; } //Copy constructor BM_iterator(const BM_Seq::BM_iterator & it) : _MD(&it.domain()), _seq(it._seq), _size(it._size), _t(it._t), _seqel(it._seqel), _gen(it._gen), _deg(it._deg), _delta(it._delta), _mu(it._mu), _beta(it._beta), _sigma(it._sigma), _gensize(it._gensize), _row(it._row), _col(it._col), _ett(it._ett), _etc(it._etc), _state(it._state) {} //Assignment operator not overloaded since BlasMatrix class has overloaded assignment error //Overloaded assignment operator BM_iterator& operator=(const typename BM_Seq::BM_iterator& it) { if(this != &it){ (*this)._MD = it._MD; (*this)._row = it._row; (*this)._col = it._col; (*this)._seq = it._seq; (*this)._size = it._size; (*this)._t = it._t; (*this)._seqel = it._seqel; (*this)._deg = it._deg; (*this)._gensize = it._gensize; (*this)._delta = it._delta; (*this)._mu = it._mu; (*this)._sigma = it._sigma; (*this)._beta = it._beta; (*this)._state = it._state; (*this)._ett = it._ett; (*this)._etc = it._etc; _gen.clear(); for(typename std::list::const_iterator git = it._gen.begin(); git != it._gen.end(); ++git) _seq.push_back(*git); } return (*this); } bool operator==(const BM_Seq::BM_iterator& it) { TerminationState check = it.state(); bool test1 = (_seq==it._seq); bool test2 = (_t==it._t); bool test3 = _delta==it._delta; bool test4 = (_state._state == check._state && _state.IsSequenceExceeded()); return (test1 && test2 && (test3 || test4)); } bool operator!=(const BM_iterator& it) { return !((*this) == it); } private: // Column Copy void ColumnCopy(Coefficient &M, Coefficient &A, size_t i) { size_t rowd = A.rowdim(); Sub MC(M,0,i,rowd,1); Sub AC(A,0,i,rowd,1); domain().copy(MC,AC); } // Column Swap void ColumnSwap(Coefficient &M, size_t i, size_t j) { size_t rowd = M.rowdim(); Sub Ci(M,0,i,rowd,1); Sub Cj(M,0,j,rowd,1); domain().swap(Ci,Cj); } // Column Operation void ColumnAdd(Coefficient &M, size_t i, size_t j, Element el) { size_t rowd = M.rowdim(); Coefficient temp(field(),rowd,1); Sub Ci(M,0,i,rowd,1); Sub Cj(M,0,j,rowd,1); domain().mul(temp,Cj,el); domain().addin(Ci,temp); } void Algorithm3dot2(Coefficient &tau, Coefficient &D, std::vector &d, size_t &mu, size_t &sigma, size_t &beta) { Element pivel; field().assign(pivel,field().zero); // Retrieve the row and column dimensions of the sequence and the dimension of the discrepancy size_t n = D.rowdim(); size_t nm = D.coldim(); size_t m = nm-n; //Initialize tau to the identity matrix for(size_t i = 0; i gen; typedef std::set::key_type index_type; for(index_type i=0; i pi; pi.insert(m+i); for(typename std::set::iterator genit = gen.begin(); genit != gen.end(); ++genit){ if(!field().isZero(D.getEntry(i,*genit))) pi.insert(*genit); } //Choose the pivot row with the smallest nominal degree index_type piv = m+i; for(std::set::iterator itpi = pi.begin(); itpi != pi.end(); ++itpi){ size_t j = *itpi; if(d[j] <= d[piv]){ if(d[j]==d[piv]){ if(piv < m+i){ if(j::iterator itpi = pi.begin(); itpi != pi.end(); ++itpi){ Element temp; field().assign(temp,D.getEntry(i, *itpi)); field().negin(temp); field().divin(temp,pivel); ColumnAdd(tau, *itpi, piv, temp); ColumnAdd(D, *itpi, piv, temp); } } else{ //Remove column index m+i and handle it separately pi.erase(m+i); //Eliminate nonzero discrepancies in generator columns for(typename std::set::iterator itpi = pi.begin(); itpi != pi.end(); ++itpi){ Element temp; field().assign(temp,D.getEntry(i, *itpi)); field().negin(temp); field().divin(temp,pivel); ColumnAdd(tau, *itpi, piv, temp); ColumnAdd(D, *itpi, piv, temp); } Element auxel; field().assign(auxel,D.getEntry(i,m+i)); //Perform a major change and update an initialized auxiliary column if(!field().isZero(auxel)){ Element temp; field().assign(temp,D.getEntry(i, m+i)); field().negin(temp); field().divin(temp,pivel); ColumnAdd(tau, m+i, piv, temp); ColumnAdd(D, m+i, piv, temp); ColumnSwap(tau,piv, m+i); ColumnSwap(D, piv, m+i); } else{ ColumnAdd(tau,m+i,piv,field().one); ColumnAdd(D,m+i,piv,field().one); gen.erase(piv); } size_t tempdeg = d[piv]; d[piv] = d[m+i]; d[m+i] = tempdeg; if(tempdeg < beta) beta = tempdeg; if(d[piv] > mu) mu = d[piv]; sigma = sigma - tempdeg + d[piv]; } } } public: BM_iterator& operator++() { //See if a matrix has been pushed on the sequence //if it has, then recompute the seqel since it may //have become corrupt. //Also reset the size to the correct size of the sequence if(_size < _seq.size()){ _seqel = _seq.begin(); for(int i = 0; i<_t; ++i) ++_seqel; _size = _seq.size(); } //if the iterator points past the seq elements, do nothing if(_t == _size){ return *this; } //Initialize the discrepancy Coefficient disc(field(),_row, _row+_col); //Create two iterators, one for seq, and one for gen typename BM_Seq::const_iterator cseqit; typename std::list::iterator genit; //get a iterator to the seq element to be processed cseqit = _seqel; CTimer start1; start1.start(); //Compute the discrepancy std::vector coeffVec; std::vector seqPtrVec; for(genit = _gen.begin(); genit!=_gen.end(); ++genit){ coeffVec.push_back(&(*genit)); seqPtrVec.push_back(&(*cseqit)); --cseqit; } int numCoeffs=coeffVec.size(); std::vector discComponents; discComponents.reserve(numCoeffs); for (int i=0;iisZero(primaryDisc)) { --_etc; } else { _etc=_ett; } Algorithm3dot2(tau, disc, _deg, _mu, _sigma, _beta); start2.stop(); g_time3 += start2.realtime(); CTimer start3; start3.start(); //Multiply tau into each matrix in the generator #ifdef __LINBOX_USE_OPENMP #pragma omp parallel for #endif for (int i=0;i (int)_gensize){ _gen.push_back(Coefficient(field(),_col,_row+_col)); ++_gensize; } //Mimic multiplication be z in the auxiliary columns typename std::list::reverse_iterator g1,g2; g1 = _gen.rbegin(); g2 = _gen.rbegin(); ++g1; while(g1!=_gen.rend()){ Sub g1aux(*g1,0,_col,_col,_row); Sub g2aux(*g2,0,_col,_col,_row); domain().copy(g2aux,g1aux); ++g1; ++g2; } genit = _gen.begin(); Coefficient z1(field(),_col,_row); Sub genitaux(*genit,0,_col,_col,_row); domain().copy(genitaux,z1); //Increment the t and seqel to the next element ++_t; ++_seqel; //Update the state if(/* _delta < 0 || */_beta < _delta - _sigma + _mu +1){ if(_t == _size) _state._state = SequenceExceeded; else{ if(_sigma > _delta /* && _delta >= 0*/) _state._state = DeltaExceeded; else _state._state = GeneratorUnconfirmed; } } else{ if(_sigma > _delta) _state._state = DeltaExceeded; else _state._state = GeneratorFound; } if (_etc==0) { _state._state=GeneratorFound; } return *this; } // Is this working? -AS BM_iterator operator++(int) { //Create a copy of this BM_iterator temp(*this); //See if a matrix has been pushed on the sequence //if it has, then recompute the seqel since it may //have become corrupt. //Also reset the size to the correct size of the sequence if(_size < _seq.size()){ _seqel = _seq.begin(); for(int i = 0; i<_t; ++i) ++_seqel; _size = _seq.size(); } //if the iterator points past the seq elements, do nothing if(_t == _size){ return *this; } //Initialize the discrepancy Coefficient disc(field(),_row, _row+_col); //Create two iterators, one for seq, and one for gen typename BM_Seq::const_iterator cseqit; typename std::list::iterator genit; //get an iterator to the seq element to be processed cseqit = _seqel; //Compute the discrepancy for(genit = _gen.begin(); genit!=_gen.end(); ++genit, cseqit--){ domain().axpyin(disc,*cseqit,*genit); } // cost: k*n^3 (nxn matrix muladds where k is current generator length) // is a reductive addition over independent muls. //Compute tau with Algorith3.2 Coefficient tau(field(), _row+_col, _row+_col); Algorithm3dot2(tau, disc, _deg, _mu, _sigma, _beta); // cost: n^3 for elim on n x about 2n //Multiply tau into each matrix in the generator for(genit = _gen.begin(); genit!=_gen.end(); ++genit){ domain().mulin(*genit,tau); } // cost: k*n^3 (nxn matrix muls where k is current generator length) // is k independent muls with a shared mat tau. //Increment the auxiliary degrees and beta for(size_t j = _col; j <_row+_col; ++j) _deg[j]++; ++_beta; //Add a zero matrix to the end of the generator if needed. int tmax = (int)_deg[0]; for(size_t j = 1; j<_row+_col; ++j) if(tmax < _deg[j]) tmax = (int)_deg[j]; if(tmax+1 > _gensize){ _gen.push_back(Coefficient(field(),_col,_row+_col)); ++_gensize; } //Mimic multiplication by z in the auxiliary columns typename std::list::reverse_iterator g1,g2; g1 = _gen.rbegin(); g2 = _gen.rbegin(); ++g1; while(g1!=_gen.rend()){ Sub g1aux(*g1,0,_col,_col,_row); Sub g2aux(*g2,0,_col,_col,_row); domain().copy(g2aux,g1aux); ++g1; ++g2; } genit = _gen.begin(); Coefficient z1(field(),_col,_row); Sub genitaux(*genit,0,_col,_col,_row); domain().copy(genitaux,z1); //Increment the t and seqel to the next element ++_t; ++_seqel; //Update the state if(/* _delta < 0 || */ _beta < _delta - _sigma + _mu +1){ if(_t == _size) _state._state = SequenceExceeded; else{ if(_sigma > _delta /* && _delta >= 0 */) _state._state = DeltaExceeded; else _state._state = GeneratorUnconfirmed; } } else{ if(_sigma > _delta) _state._state = DeltaExceeded; else _state._state = GeneratorFound; } return temp; } //return a reference to the current generator, in its algorithmic reversed form value_type& operator*() { return _gen; } //overload the pointer operator value_type* operator->() { return &_gen; } //Return a vector representing the reversal, by nominal degree, of the current generator std::vector GetGenerator() { std::vector revgen(_mu+1, Coefficient(field(),_col,_col)); for(size_t i = 0; i<_col; ++i){ typename std::list::iterator genit = _gen.begin(); for(int j = 0; j < (int)_deg[i]+1; ++j){ ColumnCopy(revgen[_deg[i]-j], *genit,i); ++genit; } } return revgen; } typename BM_Seq::size_type get_t() { return _t; } int get_mu() { return _mu; } int get_sigma() { return _sigma; } int get_beta() { return _beta; } int get_delta() { return _delta; } std::vector get_deg() { std::vector gendegree(&_deg[0], &_deg[_col]); return gendegree; } }; //End of BM_iterator //return an initialized BM_iterator typename BM_Seq::BM_iterator BM_begin(int earlyTermThreshold) { return typename BM_Seq::BM_iterator(*this,earlyTermThreshold); } //return an initialized BM_iterator that points to one past the end of the sequence typename BM_Seq::BM_iterator BM_end() { return typename BM_Seq::BM_iterator(*this, -1, _size); } /**/ };//End of BM_Seq }; //end of class BlockCoppersmithDomain // construct P s.t. \sum_{i}P[i]A^{i}=0 template std::vector BlockCoppersmithDomain<_Domain, _Sequence>:: right_minpoly (std::vector &P) { //Get the row and column dimensions const size_t r = _container->rowdim(); const size_t c = _container->coldim(); typename Sequence::const_iterator contiter(_container->begin()); //Create the BM_Seq, that will use the Coppersmith Block Berlekamp Massey Algorithm to compute the minimal generator. BM_Seq seq(domain(),r,c); //Push the first projection onto the BM_Seq seq.push_back(*contiter); //Create the BM_Seq iterator whose incrementation performs a step of the generator typename BM_Seq::BM_iterator bmit(seq.BM_begin(EARLY_TERM_THRESHOLD)); bmit.setDelta((int)(2*_container->getBB()->rowdim()+1)); typename BM_Seq::BM_iterator::TerminationState check = bmit.state(); while(!check.IsGeneratorFound() ){ ++bmit; check = bmit.state(); if(check.IsSequenceExceeded()){ CTimer start; start.start(); ++contiter; start.stop(); g_time1+=start.realtime(); seq.push_back(*contiter); } } P = bmit.GetGenerator(); std::vector deg(bmit.get_deg()); commentator().report(Commentator::LEVEL_IMPORTANT,TIMING_MEASURE) << "Times: " << g_time1 << " " << g_time2 << " " << g_time3 << " " << g_time4<s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/block-lanczos.h000066400000000000000000000224161274717217100214050ustar00rootroot00000000000000/* block-lanczos.h * Copyright (C) 2002 Bradford Hovinen * * Written by Bradford Hovinen * * -------------------------------------------- * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== * * Class definitions for block Lanczos iteration */ #ifndef __LINBOX_block_lanczos_H #define __LINBOX_block_lanczos_H #include "linbox/linbox-config.h" #include #include "linbox/field/archetype.h" #include "linbox/vector/vector-domain.h" #include "linbox/blackbox/archetype.h" #include "linbox/solutions/methods.h" // I'm putting everything inside the LinBox namespace so that I can drop all of // this in to LinBox easily at a later date, without any messy porting. namespace LinBox { /** @brief Block Lanczos iteration * * This is a blocked version of the iteration given in @ref LanczosSolver. The * essential difference is that, rather than applying the black box \f$A\f$ to a * single vector $v$ during each iteration, the block box \f$A\f$ is applied to an * \f$n\times N\f$ matrix \f$V\f$ or, equivalently, to \f$N\f$ vectors * \f$v_1, \ldots, v_N\f$ Scalars in the original iteration become \f$N\times N\f$ * matrices in the blocked version. The resulting iteration is a natural * extension of the basic theory of the original Lanczos iteration, * c.f. (see Montgomery 1995 ). This has the advantage of more flexible * parallelization, and does not break down as often when used over small * fields. * * Currently, only dense vectors are supported for this iteration, and it is * unlikely any other vector archetypes will be supported in the future. * @bib [Montgomery '95] */ template > class BlockLanczosSolver { public: typedef typename Field::Element Element; /** @brief Constructor. * @param F Field over which to operate * @param traits @ref SolverTraits structure describing user * options for the solver */ BlockLanczosSolver (const Field &F, const BlockLanczosTraits &traits) : _traits (traits), _field (&F), _VD (F), _MD (F), _randiter (F), _block (traits.blockingFactor ()) { init_temps (); } /** Constructor with a random iterator. * @param F Field over which to operate * @param traits @ref SolverTraits structure describing user * options for the solver * @param r Random iterator to use for randomization */ BlockLanczosSolver (const Field &F, const BlockLanczosTraits &traits, typename Field::RandIter r) : _traits (traits), _field (&F), _VD (F), _MD (F), _randiter (r), _block (traits.blockingFactor ()) { init_temps (); } /** Solve the linear system Ax = b. * * If the system is nonsingular, this method computes the unique * solution to the system Ax = b. If the system is singular, it computes * a random solution. * * If the matrix A is nonsymmetric, this method preconditions the matrix * A with the preconditioner D_1 A^T D_2 A D_1, where D_1 and D_2 are * random nonsingular diagonal matrices. If the matrix A is symmetric, * this method preconditions the system with A D, where D is a random * diagonal matrix. * * @param A Black box for the matrix A * @param x Vector in which to store solution * @param b Right-hand side of system * @return Reference to solution vector */ template Vector &solve (const Blackbox &A, Vector &x, const Vector &b); inline const Field & field() const { return *_field; } private: // S_i is represented here as a vector of booleans, where the entry at // index j is true if and only if the corresponding column of V_i is to // be included in W_i // All references to Winv are actually -Winv // Run the block Lanczos iteration and return the result. Return false // if the method breaks down. Do not check that Ax = b in the end template bool iterate (const Blackbox &A, Vector &x, const Vector &b); // Compute W_i^inv and S_i given V_i^T A V_i int compute_Winv_S (Matrix &Winv, std::vector &S, const Matrix &T); // Given B with N columns and S_i, compute B S_i S_i^T template Matrix1 &mul_SST (Matrix1 &BSST, const Matrix2 &B, const std::vector &S) const; // Matrix-matrix multiply // C = A * B * S_i * S_i^T template Matrix1 &mul (Matrix1 &C, const Matrix2 &A, const Matrix3 &B, const std::vector &S) const; // In-place matrix-matrix multiply on the right // A = A * B * S_i * S_i^T // This is a version of the above optimized to use as little additional // memory as possible template Matrix1 &mulin (Matrix1 &A, const Matrix2 &B, const std::vector &S) const; // Matrix-vector multiply // w = A * S_i * S_i^T * v template Vector1 &vectorMul (Vector1 &w, const Matrix1 &A, const Vector2 &v, const std::vector &S) const; // Matrix-vector transpose multiply // w = (A * S_i * S_i^T)^T * v template Vector1 &vectorMulTranspose (Vector1 &w, const Matrix1 &A, const Vector2 &v, const std::vector &S) const; // Matrix-matrix addition // A = A + B * S_i * S_i^T template Matrix1 &addin (Matrix1 &A, const Matrix2 &B, const std::vector &S) const; // Add I_N to the given N x N matrix // A = A + I_N template Matrix1 &addIN (Matrix1 &A) const; // Given a vector S of bools, write an array of array indices in which // the true values of S are last void permute (std::vector &indices, const std::vector &S) const; // Set the given matrix to the identity template Matrix1 &setIN (Matrix1 &A) const; // Find a suitable pivot row for a column and exchange it with the given // row bool find_pivot_row (Matrix &A, size_t row, int col_offset, const std::vector &indices); // Eliminate all entries in a column except the pivot row, using row // operations from the pivot row void eliminate_col (Matrix &A, size_t pivot, int col_offset, const std::vector &indices, const Element &Ajj_inv); // Initialize the temporaries used in computation void init_temps (); // Private variables const BlockLanczosTraits _traits; const Field *_field; VectorDomain _VD; MatrixDomain _MD; typename Field::RandIter _randiter; // Temporaries used in the computation Matrix _matV[3]; // n x N Matrix _AV; // n x N Matrix _VTAV; // N x N Matrix _Winv[2]; // N x N Matrix _AVTAVSST_VTAV; // N x N Matrix _matT; // N x N Matrix _DEF; // N x N std::vector _vecS; // N-vector of bools mutable typename Vector::Dense _tmp; // N std::vector _indices; // N mutable Matrix _matM; // N x 2N // Blocking factor size_t _block; // Construct a transpose matrix on the fly template TransposeMatrix transpose (Matrix1 &M) const { return TransposeMatrix (M); } protected: template bool isAlmostIdentity (const Matrix1 &M) const; // Test suite for the above functions bool test_compute_Winv_S_mul (int n) const; bool test_compute_Winv_S_mulin (int n) const; bool test_mul_SST (int n) const; bool test_mul_ABSST (int n) const; bool test_mulTranspose (int m, int n) const; bool test_mulTranspose_ABSST (int n) const; bool test_mulin_ABSST (int n) const; bool test_addin_ABSST (int n) const; public: bool runSelfCheck () const; }; } // namespace LinBox #include "block-lanczos.inl" #endif // __LINBOX_block_lanczos_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/block-lanczos.inl000066400000000000000000001155561274717217100217500ustar00rootroot00000000000000/* block-lanczos.inl * Copyright (C) 2002 LinBox * * Written by Bradford Hovinen * * -------------------------------------------- * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== * Function definitions for block Lanczos iteration */ #ifndef __LINBOX_block_lanczos_INL #define __LINBOX_block_lanczos_INL #include "linbox/linbox-config.h" #include #include "linbox/util/debug.h" #include "linbox/solutions/methods.h" #include "linbox/blackbox/diagonal.h" #include "linbox/blackbox/compose.h" #include "linbox/blackbox/transpose.h" #include #include "linbox/util/commentator.h" #include "linbox/util/timer.h" #include "block-lanczos.h" // I'm putting everything inside the LinBox namespace so that I can drop all of // this in to LinBox easily at a later date, without any messy porting. namespace LinBox { #ifdef DETAILED_TRACE template void BLTraceReport (std::ostream &out, MatrixDomain &MD, const char *text, size_t iter, const Matrix &M) { out << text << " [" << iter << "]:" << std::endl; MD.write (out, M); } template void BLTraceReport (std::ostream &out, VectorDomain &VD, const char *text, size_t iter, const Vector &v) { out << text << " [" << iter << "]: "; VD.write (out, v) << std::endl; } void reportS (std::ostream &out, const std::vector &S, size_t iter) { out << "S_" << iter << ": [" << S << "]" << std::endl; } template void checkAConjugacy (const MatrixDomain &MD, const Matrix &AV, Matrix &V, Matrix &T, size_t AV_iter, size_t V_iter) { std::ostream &report = commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION); report << "Checking whether V_" << V_iter << " is A-conjugate to V_" << AV_iter << "..."; MD.mul (T, TransposeMatrix (V), AV); if (MD.isZero (T)) report << "yes" << std::endl; else { report << "no" << std::endl; std::ostream &err_report = commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_ERROR); err_report << "ERROR: V_" << V_iter << " is not A-conjugate to V_" << AV_iter << std::endl; err_report << "Computed V_" << V_iter << "^T AV_" << AV_iter << ":" << std::endl; MD.write (report, T); } } #else template inline void BLTraceReport (std::ostream &out, Domain &D, const char *text, size_t iter, const Object &obj) {} void reportS (std::ostream &out, const std::vector &S, size_t iter) {} template inline void checkAConjugacy (const MatrixDomain &MD, const Matrix &AV, const Matrix &V, Matrix &T, size_t AV_iter, size_t V_iter) {} #endif #ifdef DETAILED_PROFILE # define TIMER_DECLARE(part) UserTimer part##_timer; double part##_time = 0.0; # define TIMER_START(part) part##_timer.start () # define TIMER_STOP(part) part##_timer.stop (); part##_time += part##_timer.time () # define TIMER_REPORT(part) \ commentator().report (Commentator::LEVEL_NORMAL, TIMING_MEASURE) \ << "Total " #part " time: " << part##_time << "s" << std::endl; #else # define TIMER_DECLARE(part) # define TIMER_START(part) # define TIMER_STOP(part) # define TIMER_REPORT(part) #endif // N.B. This code was lifted from the Lanczos iteration in LinBox template template Vector &BlockLanczosSolver::solve (const Blackbox &A, Vector &x, const Vector &b) { linbox_check ((x.size () == A.coldim ()) && (b.size () == A.rowdim ())); commentator().start ("Solving linear system (Block Lanczos)", "BlockLanczosSolver::solve"); bool success = false; Vector d1, d2, b1, b2, bp, y, Ax, ATAx, ATb; // Get the temporaries into the right sizes _matV[0].resize (A.coldim (), _block); _matV[1].resize (A.coldim (), _block); _matV[2].resize (A.coldim (), _block); _AV.resize (A.coldim (), _block); Givaro::GeneralRingNonZeroRandIter real_ri (_randiter); RandomDenseStream > stream (field(), real_ri, A.coldim ()); for (unsigned int i = 0; !success && i < _traits.maxTries (); ++i) { std::ostream &report = commentator().report (Commentator::LEVEL_UNIMPORTANT, INTERNAL_DESCRIPTION); switch (_traits.preconditioner ()) { case BlockLanczosTraits::NO_PRECONDITIONER: success = iterate (A, x, b); break; case BlockLanczosTraits::SYMMETRIZE: { VectorWrapper::ensureDim (bp, A.coldim ()); Transpose AT (&A); Compose< Transpose< Blackbox>, Blackbox> B (&AT, &A); AT.apply (bp, b); success = iterate (B, x, bp); break; } case BlockLanczosTraits::PARTIAL_DIAGONAL: { VectorWrapper::ensureDim (d1, A.coldim ()); VectorWrapper::ensureDim (y, A.coldim ()); stream >> d1; Diagonal D (field(), d1); Compose > B (&A, &D); report << "Random D: "; _VD.write (report, d1) << std::endl; success = iterate (B, y, b); D.apply (x, y); break; } case BlockLanczosTraits::PARTIAL_DIAGONAL_SYMMETRIZE: { VectorWrapper::ensureDim (d1, A.rowdim ()); VectorWrapper::ensureDim (b1, A.rowdim ()); VectorWrapper::ensureDim (bp, A.coldim ()); typedef Diagonal PC1; typedef Transpose PC2; typedef Compose CO1; typedef Compose CO2; stream >> d1; PC1 D (field(), d1); PC2 AT (&A); CO1 B1 (&D, &A); CO2 B (&AT, &B1); report << "Random D: "; _VD.write (report, d1) << std::endl; D.apply (b1, b); AT.apply (bp, b1); success = iterate (B, x, bp); break; } case BlockLanczosTraits::FULL_DIAGONAL: { VectorWrapper::ensureDim (d1, A.coldim ()); VectorWrapper::ensureDim (d2, A.rowdim ()); VectorWrapper::ensureDim (b1, A.rowdim ()); VectorWrapper::ensureDim (b2, A.coldim ()); VectorWrapper::ensureDim (bp, A.coldim ()); VectorWrapper::ensureDim (y, A.coldim ()); typedef Diagonal PC1; typedef Transpose PC2; typedef Compose CO1; typedef Compose CO2; typedef Compose CO3; typedef Compose CO4; stream >> d1 >> d2; PC1 D1 (field(), d1); PC1 D2 (field(), d2); PC2 AT (&A); CO1 B1 (&A, &D1); CO2 B2 (&D2, &B1); CO3 B3 (&AT, &B2); CO4 B (&D1, &B3); report << "Random D_1: "; _VD.write (report, d1) << std::endl; report << "Random D_2: "; _VD.write (report, d2) << std::endl; D2.apply (b1, b); AT.apply (b2, b1); D1.apply (bp, b2); success = iterate (B, y, bp); D1.apply (x, y); break; } default: throw PreconditionFailed (__func__, __LINE__, "preconditioner is NO_PRECONDITIONER, SYMMETRIZE, PARTIAL_DIAGONAL_SYMMETRIZE, " "PARTIAL_DIAGONAL, or FULL_DIAGONAL"); } // JGD 11.07.2005 // I DON'T KNOW WHY IT IS WORKING BUT IT DOES WORK // Without this negin the results is minus the correct solution // I have seen this sentence in mg-bla which comforts my choice: // "Because we set Winv to -Winv, we have -x at the end of the // iteration. So negate the result and return it" // I don't know when to negate it, so I check first, // if the result is not correct I try to negate !!! VectorWrapper::ensureDim (Ax, A.rowdim ()); if ((_traits.preconditioner () == BlockLanczosTraits::SYMMETRIZE) || (_traits.preconditioner () == BlockLanczosTraits::PARTIAL_DIAGONAL_SYMMETRIZE) || (_traits.preconditioner () == BlockLanczosTraits::FULL_DIAGONAL)) { VectorWrapper::ensureDim (ATAx, A.coldim ()); VectorWrapper::ensureDim (ATb, A.coldim ()); A.apply (Ax, x); A.applyTranspose (ATAx, Ax); A.applyTranspose (ATb, b); if (_VD.areEqual (ATAx, ATb)) { success = true; } else { success = false; } } else { A.apply (Ax, x); if (_VD.areEqual (Ax, b)) { success = true; } else { success = false; } } if(! success) _VD.negin(x); // End of JGD INFAMOUS HACK if (_traits.checkResult ()) { VectorWrapper::ensureDim (Ax, A.rowdim ()); if (_traits.checkResult () && ((_traits.preconditioner () == BlockLanczosTraits::SYMMETRIZE) || (_traits.preconditioner () == BlockLanczosTraits::PARTIAL_DIAGONAL_SYMMETRIZE) || (_traits.preconditioner () == BlockLanczosTraits::FULL_DIAGONAL))) { VectorWrapper::ensureDim (ATAx, A.coldim ()); VectorWrapper::ensureDim (ATb, A.coldim ()); commentator().start ("Checking whether A^T Ax = A^T b"); A.apply (Ax, x); A.applyTranspose (ATAx, Ax); A.applyTranspose (ATb, b); if (_VD.areEqual (ATAx, ATb)) { commentator().stop ("passed"); success = true; } else { commentator().stop ("FAILED"); success = false; } } else if (_traits.checkResult ()) { commentator().start ("Checking whether Ax=b"); A.apply (Ax, x); if (_VD.areEqual (Ax, b)) { commentator().stop ("passed"); success = true; } else { commentator().stop ("FAILED"); success = false; } } } } if (success) { commentator().stop ("done", "Solve successful", "BlockLanczosSolver::solve"); return x; } else { commentator().stop ("done", "Solve failed", "BlockLanczosSolver::solve"); throw SolveFailed (); } } template template bool BlockLanczosSolver::iterate (const Blackbox &A, Vector &x, const Vector &b) { linbox_check (_matV[0].rowdim () == A.rowdim ()); linbox_check (_matV[1].rowdim () == A.rowdim ()); linbox_check (_matV[2].rowdim () == A.rowdim ()); linbox_check (_matV[0].coldim () == _matV[1].coldim ()); linbox_check (_matV[0].coldim () == _matV[2].coldim ()); commentator().start ("Block Lanczos iteration", "BlockLanczosSolver::iterate", A.rowdim ()); size_t Ni; size_t total_dim = 0; Vector tmp, tmp1, tmp2; bool ret = true; VectorWrapper::ensureDim (tmp, _traits.blockingFactor ()); VectorWrapper::ensureDim (tmp1, _traits.blockingFactor ()); VectorWrapper::ensureDim (tmp2, A.rowdim ()); // How many iterations between each progress update unsigned int progress_interval = A.rowdim () / _traits.blockingFactor () / 100; // Make sure there are a minimum of ten if (progress_interval == 0) progress_interval = 1; // i is the index for temporaries where we need to go back to i - 1 // j is the index for temporaries where we need to go back to j - 2 int i = 0, j = 2, prev_j = 1, iter = 2; typename Matrix::ColIterator k; TIMER_DECLARE(AV); TIMER_DECLARE(Winv); TIMER_DECLARE(solution); TIMER_DECLARE(orthogonalization) // Get a random fat vector _matV[0] RandomDenseStream stream (field(), _randiter, A.coldim ()); for (k = _matV[0].colBegin (); k != _matV[0].colEnd (); ++k) stream >> *k; TIMER_START(AV); _MD.blackboxMulLeft (_AV, A, _matV[0]); TIMER_STOP(AV); std::ostream &report = commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION); // Initialize S_-1 to IN std::fill (_vecS.begin (), _vecS.end (), true); // Iteration 1 TIMER_START(Winv); _MD.mul (_VTAV, transpose (_matV[0]), _AV); Ni = compute_Winv_S (_Winv[0], _vecS, _VTAV); TIMER_STOP(Winv); // Check for catastrophic breakdown if (Ni == 0) { commentator().stop ("breakdown", NULL, "BlockLanczosSolver::iterate"); return false; } total_dim += Ni; #ifdef DETAILED_TRACE report << "Iteration " << iter << ": N_i = " << Ni << std::endl; report << "Iteration " << iter << ": Total dimension is " << total_dim << std::endl; #endif TIMER_START(solution); vectorMulTranspose (tmp, _matV[0], b, _vecS); _MD.vectorMul (tmp1, _Winv[0], tmp); vectorMul (x, _matV[0], tmp1, _vecS); TIMER_STOP(solution); mul_SST (_matV[1], _AV, _vecS); TIMER_START(orthogonalization); mul (_AVTAVSST_VTAV, transpose (_AV), _AV, _vecS); BLTraceReport (report, _MD, "V", 0, _matV[0]); BLTraceReport (report, _MD, "AV", 0, _AV); BLTraceReport (report, _MD, "V^T A V", 0, _VTAV); BLTraceReport (report, _MD, "Winv", 0, _Winv[0]); reportS (report, _vecS, 0); BLTraceReport (report, _VD, "x", 0, x); BLTraceReport (report, _MD, "AVSS^T", 0, _matV[1]); BLTraceReport (report, _MD, "V^T A^2 V", 0, _AVTAVSST_VTAV); _MD.addin (_AVTAVSST_VTAV, _VTAV); _MD.mul (_DEF, _Winv[0], _AVTAVSST_VTAV); addIN (_DEF); _MD.axpyin (_matV[1], _matV[0], _DEF); TIMER_START(orthogonalization); BLTraceReport (report, _MD, "D", 1, _DEF); BLTraceReport (report, _MD, "V", 1, _matV[1]); checkAConjugacy (_MD, _AV, _matV[1], _DEF, 0, 1); if (_MD.isZero (_matV[1])) { commentator().stop ("done", NULL, "BlockLanczosSolver::iterate"); return true; } // Iteration 2 TIMER_START(AV); _MD.blackboxMulLeft (_AV, A, _matV[1]); TIMER_STOP(AV); #ifdef DETAILED_TRACE // DEBUG: Save a copy of AV_1 for use later Matrix AV1_backup (_AV.rowdim (), _AV.coldim ()); _MD.copy (AV1_backup, _AV); #endif TIMER_START(Winv); _MD.mul (_VTAV, transpose (_matV[1]), _AV); Ni = compute_Winv_S (_Winv[1], _vecS, _VTAV); TIMER_STOP(Winv); // Check for catastrophic breakdown if (Ni == 0) { commentator().stop ("breakdown", NULL, "BlockLanczosSolver::iterate"); return false; } total_dim += Ni; #ifdef DETAILED_TRACE report << "Iteration " << iter << ": N_i = " << Ni << std::endl; report << "Iteration " << iter << ": Total dimension is " << total_dim << std::endl; #endif TIMER_START(solution); vectorMulTranspose (tmp, _matV[1], b, _vecS); _MD.vectorMul (tmp1, _Winv[1], tmp); vectorMul (tmp2, _matV[1], tmp1, _vecS); _VD.addin (x, tmp2); TIMER_STOP(solution); mul_SST (_matV[2], _AV, _vecS); TIMER_START(orthogonalization); mul (_AVTAVSST_VTAV, transpose (_AV), _AV, _vecS); BLTraceReport (report, _MD, "AV", 1, _AV); BLTraceReport (report, _MD, "V^T A V", 1, _VTAV); BLTraceReport (report, _MD, "Winv", 1, _Winv[1]); reportS (report, _vecS, 1); BLTraceReport (report, _VD, "x", 1, x); BLTraceReport (report, _MD, "V^T A^2 V", 1, _AVTAVSST_VTAV); _MD.addin (_AVTAVSST_VTAV, _VTAV); _MD.mul (_DEF, _Winv[1], _AVTAVSST_VTAV); addIN (_DEF); _MD.axpyin (_matV[2], _matV[1], _DEF); BLTraceReport (report, _MD, "D", 2, _DEF); mul (_DEF, _Winv[0], _VTAV, _vecS); _MD.axpyin (_matV[2], _matV[0], _DEF); TIMER_STOP(orthogonalization); BLTraceReport (report, _MD, "E", 2, _DEF); BLTraceReport (report, _MD, "V", 2, _matV[2]); checkAConjugacy (_MD, _AV, _matV[2], _DEF, 1, 2); // Now we're ready to begin the real iteration while (!_MD.isZero (_matV[j])) { int next_j = j + 1; if (next_j > 2) next_j = 0; TIMER_START(AV); _MD.blackboxMulLeft (_AV, A, _matV[j]); TIMER_STOP(AV); // First compute F_i+1, where we use Winv_i-2; then Winv_i and // Winv_i-2 can share storage, and we don't need the old _VTAV // and _AVTAVSST_VTAV any more. After this, F_i+1 is stored in // _DEF TIMER_START(orthogonalization); _MD.mul (_matT, _VTAV, _Winv[1 - i]); addIN (_matT); _MD.mul (_DEF, _Winv[i], _matT); _MD.mulin (_DEF, _AVTAVSST_VTAV); TIMER_STOP(orthogonalization); // Now get the next VTAV, Winv, and S_i TIMER_START(Winv); _MD.mul (_VTAV, transpose (_matV[j]), _AV); Ni = compute_Winv_S (_Winv[i], _vecS, _VTAV); TIMER_STOP(Winv); // Check for catastrophic breakdown if (Ni == 0) { ret = false; break; } total_dim += Ni; #ifdef DETAILED_TRACE report << "Iteration " << iter << ": N_i = " << Ni << std::endl; report << "Iteration " << iter << ": Total dimension is " << total_dim << std::endl; #endif BLTraceReport (report, _MD, "AV", iter, _AV); BLTraceReport (report, _MD, "F", iter + 1, _DEF); BLTraceReport (report, _MD, "V^T AV", iter, _VTAV); BLTraceReport (report, _MD, "Winv", iter, _Winv[i]); reportS (report, _vecS, iter); // Now that we have S_i, finish off with F_i+1 TIMER_START(orthogonalization); mulin (_matV[next_j], _DEF, _vecS); TIMER_STOP(orthogonalization); // Update x TIMER_START(solution); vectorMulTranspose (tmp, _matV[j], b, _vecS); _MD.vectorMul (tmp1, _Winv[i], tmp); vectorMul (tmp2, _matV[j], tmp1, _vecS); _VD.addin (x, tmp2); TIMER_STOP(solution); BLTraceReport (report, _VD, "x", iter, x); // Compute the next _AVTAVSST_VTAV TIMER_START(orthogonalization); mul (_AVTAVSST_VTAV, transpose (_AV), _AV, _vecS); BLTraceReport (report, _MD, "V^T A^2 V", iter, _AVTAVSST_VTAV); _MD.addin (_AVTAVSST_VTAV, _VTAV); // Compute D and update V_i+1 _MD.mul (_DEF, _Winv[i], _AVTAVSST_VTAV); addIN (_DEF); _MD.axpyin (_matV[next_j], _matV[j], _DEF); BLTraceReport (report, _MD, "D", iter + 1, _DEF); // Compute E and update V_i+1 mul (_DEF, _Winv[1 - i], _VTAV, _vecS); _MD.axpyin (_matV[next_j], _matV[prev_j], _DEF); BLTraceReport (report, _MD, "E", iter + 1, _DEF); // Add AV_i S_i S_i^T addin (_matV[next_j], _AV, _vecS); TIMER_STOP(orthogonalization); BLTraceReport (report, _MD, "V", iter + 1, _matV[next_j]); checkAConjugacy (_MD, _AV, _matV[next_j], _DEF, iter, iter + 1); #ifdef DETAILED_TRACE checkAConjugacy (_MD, AV1_backup, _matV[next_j], _DEF, 1, iter + 1); #endif i = 1 - i; prev_j = j; j = next_j; ++iter; if (!(iter % progress_interval)) commentator().progress (total_dim); if (total_dim > A.rowdim ()) { commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_ERROR) << "Maximum number of iterations passed without termination" << std::endl; commentator().stop ("ERROR", NULL, "BlockLanczosSolver::iterate"); return false; } } // Because we set Winv to -Winv, we have -x at the end of the // iteration. So negate the result and return it _VD.negin (x); BLTraceReport (report, _VD, "x", iter, x); TIMER_REPORT(AV); TIMER_REPORT(Winv); TIMER_REPORT(solution); TIMER_REPORT(orthogonalization) commentator().stop (ret ? "done" : "breakdown", NULL, "BlockLanczosSolver::iterate"); return ret; } template int BlockLanczosSolver::compute_Winv_S (Matrix &Winv, std::vector &S, const Matrix &T) { linbox_check (S.size () == Winv.rowdim ()); linbox_check (S.size () == Winv.coldim ()); linbox_check (S.size () == T.rowdim ()); linbox_check (S.size () == T.coldim ()); linbox_check (S.size () == _matM.rowdim ()); linbox_check (S.size () * 2 == _matM.coldim ()); #ifdef DETAILED_TRACE commentator().start ("Computing Winv and S", "BlockLanczosSolver::compute_Winv_S", S.size ()); std::ostream &report = commentator().report (Commentator::LEVEL_UNIMPORTANT, INTERNAL_DESCRIPTION); report << "Input T:" << std::endl; _MD.write (report, T); #endif BlasMatrix M1 (_matM, 0, 0, T.rowdim (), T.coldim ()); BlasMatrix M2 (_matM, 0, T.coldim (), T.rowdim (), T.coldim ()); _MD.copy (M1, T); setIN (M2); permute (_indices, S); typename Field::Element Mjj_inv; size_t row; size_t Ni = 0; for (row = 0; row < S.size (); ++row) { #ifdef DETAILED_TRACE if (!(row & ((1 << 10) - 1))) commentator().progress (row); std::ostream &report = commentator().report (Commentator::LEVEL_UNIMPORTANT, INTERNAL_DESCRIPTION); report << "Iteration " << row << ": Matrix M = " << std::endl; _MD.write (report, _matM); #endif if (find_pivot_row (_matM, row, 0, _indices)) { #ifdef DETAILED_TRACE commentator().report (Commentator::LEVEL_UNIMPORTANT, INTERNAL_DESCRIPTION) << "Pivot found for column " << _indices[row] << std::endl; #endif // Pivot element was found for (j, j) S[_indices[row]] = true; // Use column j of V_i in W_i // Give the (j, j) entry unity field().inv (Mjj_inv, _matM.getEntry (_indices[row], _indices[row])); _VD.mulin (*(_matM.rowBegin () + _indices[row]), Mjj_inv); // Zero the rest of the column j eliminate_col (_matM, row, 0, _indices, Mjj_inv); ++Ni; } else { #ifdef DETAILED_TRACE commentator().report (Commentator::LEVEL_NORMAL, INTERNAL_DESCRIPTION) << "No pivot found for column " << _indices[row] << std::endl; #endif // No pivot element found S[_indices[row]] = false; // Skip column j find_pivot_row (_matM, row, _block, _indices); const typename Field::Element &Mjj = _matM.refEntry (_indices[row], _indices[row] + _block); linbox_check (!field().isZero (Mjj)); // Zero the rest of the column j + N eliminate_col (_matM, row, _block, _indices, field().inv (Mjj_inv, Mjj)); // Zero row j _VD.subin (*(_matM.rowBegin () + _indices[row]), *(_matM.rowBegin () + _indices[row])); } } _MD.neg (Winv, M2); #ifdef DETAILED_TRACE report << "Computed Winv:" << std::endl; _MD.write (report, Winv); commentator().stop ("done", NULL, "BlockLanczosSolver::compute_Winv_S"); #endif return Ni; } template template Matrix1 &BlockLanczosSolver::mul_SST (Matrix1 &BSST, const Matrix2 &B, const std::vector &S) const { linbox_check (B.rowdim () == BSST.rowdim ()); linbox_check (B.coldim () == BSST.coldim ()); linbox_check (B.coldim () == S.size ()); typename Matrix2::ConstColIterator i; typename Matrix1::ColIterator j; std::vector::const_iterator k; for (i = B.colBegin (), j = BSST.colBegin (), k = S.begin (); i != B.colEnd (); ++i, ++j, ++k) { if (*k) _VD.copy (*j, *i); else _VD.subin (*j, *j); } return BSST; } template template Matrix1 &BlockLanczosSolver::mul (Matrix1 &C, const Matrix2 &A, const Matrix3 &B, const std::vector &S) const { linbox_check (A.coldim () == B.rowdim ()); linbox_check (A.rowdim () == C.rowdim ()); linbox_check (B.coldim () == C.coldim ()); typename Matrix2::ConstRowIterator i; typename Matrix3::ConstColIterator j; typename Matrix1::ColIterator k1; typename Matrix1::Col::iterator k2; std::vector::const_iterator l; for (j = B.colBegin (), l = S.begin (), k1 = C.colBegin (); j != B.colEnd (); ++j, ++l, ++k1) { if (*l) { for (i = A.rowBegin (), k2 = k1->begin (); i != A.rowEnd (); ++i, ++k2) _VD.dot (*k2, *i, *j); } else _VD.subin (*k1, *k1); } return C; } template template Matrix1 &BlockLanczosSolver::mulin (Matrix1 &A, const Matrix2 &B, const std::vector &S) const { linbox_check (A.coldim () == B.rowdim ()); linbox_check (B.rowdim () == B.coldim ()); linbox_check (A.coldim () == S.size ()); typename Matrix1::RowIterator i; typename Matrix2::ConstColIterator j; typename Vector::Dense::iterator k; std::vector::const_iterator l; for (i = A.rowBegin (); i != A.rowEnd (); ++i) { for (j = B.colBegin (), k = _tmp.begin (), l = S.begin (); j != B.colEnd (); ++j, ++k, ++l) { if (*l) _VD.dot (*k, *i, *j); else field().subin (*k, *k); } _VD.copy (*i, _tmp); } return A; } template template Vector1 &BlockLanczosSolver::vectorMul (Vector1 &w, const Matrix1 &A, const Vector2 &v, const std::vector &S) const { linbox_check (A.coldim () == v.size ()); linbox_check (A.rowdim () == w.size ()); typename Matrix1::ConstColIterator i = A.colBegin (); typename Vector2::const_iterator j = v.begin (); typename std::vector::const_iterator k = S.begin (); _VD.subin (w, w); for (; j != v.end (); ++j, ++i, ++k) if (*k) _VD.axpyin (w, *j, *i); return w; } template template Vector1 &BlockLanczosSolver::vectorMulTranspose (Vector1 &w, const Matrix1 &A, const Vector2 &v, const std::vector &S) const { linbox_check (A.rowdim () == v.size ()); linbox_check (A.coldim () == w.size ()); typename Matrix1::ConstColIterator i = A.colBegin (); typename Vector1::iterator j = w.begin (); typename std::vector::const_iterator k = S.begin (); for (; j != w.end (); ++j, ++i, ++k) if (*k) _VD.dot (*j, *i, v); return w; } template template Matrix1 &BlockLanczosSolver::addIN (Matrix1 &A) const { linbox_check (A.coldim () == A.rowdim ()); typename Matrix1::RowIterator i; size_t idx = 0; for (i = A.rowBegin (); i != A.rowEnd (); ++i, ++idx) field().addin ((*i)[idx], field().one); return A; } template template Matrix1 &BlockLanczosSolver::addin (Matrix1 &A, const Matrix2 &B, const std::vector &S) const { linbox_check (A.rowdim () == B.rowdim ()); linbox_check (A.coldim () == B.coldim ()); typename Matrix1::ColIterator i = A.colBegin (); typename Matrix2::ConstColIterator j = B.colBegin (); std::vector::const_iterator k = S.begin (); for (; i != A.colEnd (); ++i, ++j, ++k) if (*k) _VD.addin (*i, *j); return A; } template void BlockLanczosSolver::permute (std::vector &indices, const std::vector &S) const { size_t idx; std::vector::iterator i = indices.begin (); std::vector::const_iterator k; for (k = S.begin (), idx = 0; k != S.end (); ++k, ++idx) { if (!*k) { *i = idx; ++i; } } for (k = S.begin (), idx = 0; k != S.end (); ++k, ++idx) { if (*k) { *i = idx; ++i; } } } template template Matrix1 &BlockLanczosSolver::setIN (Matrix1 &A) const { linbox_check (A.coldim () == A.rowdim ()); typename Matrix1::RowIterator i; size_t i_idx; for (i = A.rowBegin (), i_idx = 0; i != A.rowEnd (); ++i, ++i_idx) { _VD.subin (*i, *i); field().assign ((*i)[i_idx], field().one); } return A; } /* Find a row suitable for pivoting in column col and exchange that row with row * A - Matrix on which to operate * idx - Index of the row with which to exchange * Returns true if a pivot could be found; false otherwise */ template bool BlockLanczosSolver::find_pivot_row (Matrix &A, size_t row, int col_offset, const std::vector &indices) { size_t idx; typename Matrix::Col col_vec; typename Matrix::Row row_vec; col_vec = *(_matM.colBegin () + indices[row] + col_offset); row_vec = *(_matM.rowBegin () + indices[row]); for (idx = row; idx < A.rowdim (); ++idx) { if (!field().isZero (A.getEntry (indices[idx], indices[row] + col_offset))) { if (idx != row) { typename Matrix::Row row1 = *(A.rowBegin () + indices[idx]); std::swap_ranges (row_vec.begin (), row_vec.end (), row1.begin ()); } return true; } } return false; } template void BlockLanczosSolver::eliminate_col (Matrix &A, size_t pivot, int col_offset, const std::vector &indices, const typename Field::Element &Ajj_inv) { // I'm assuming everything left of the column with the index of the pivot row is 0 size_t row; typename BlasMatrix::Row pivot_row; typename Field::Element p; pivot_row = *(A.rowBegin () + indices[pivot]); for (row = 0; row < pivot; ++row) { const typename Field::Element &Aij = A.getEntry (indices[row], indices[pivot] + col_offset); if (!field().isZero (Aij)) _VD.axpyin (*(A.rowBegin () + indices[row]), field().neg (p, Aij), pivot_row); } for (++row; row < A.rowdim (); ++row) { const typename Field::Element &Aij = A.getEntry (indices[row], indices[pivot] + col_offset); if (!field().isZero (Aij)) _VD.axpyin (*(A.rowBegin () + indices[row]), field().neg (p, Aij), pivot_row); } } template void BlockLanczosSolver::init_temps () { _VTAV.resize (_block, _block); _Winv[0].resize (_block, _block); _Winv[1].resize (_block, _block); _AVTAVSST_VTAV.resize (_block, _block); _matT.resize (_block, _block); _DEF.resize (_block, _block); _vecS.resize (_block); _matM.resize (_block, 2 * _block); _tmp.resize (_block); _indices.resize (_block); } // Check whether the given matrix is "almost" the identity, i.e. the identity // with some zeros on the diagonal template template bool BlockLanczosSolver::isAlmostIdentity (const Matrix1 &M) const { linbox_check (M.rowdim () == M.coldim ()); size_t i, j; for (i = 0; i < M.rowdim (); ++i) { for (j = 0; j < M.coldim (); ++j) { if (i != j && !field().isZero (M.getEntry (i, j))) { if (!field().isZero (M.getEntry (i, i))) { typename Matrix::ConstRowIterator row = M.rowBegin () + j; if (!_VD.isZero (*row)) return false; } else if (!field().isZero (M.getEntry (j, j))) { typename Matrix::ConstColIterator col = M.colBegin () + i; if (!_VD.isZero (*col)) return false; } else return false; } else if (!field().isZero (M.getEntry (i, j)) && !field().areEqual (M.getEntry (i, j), field().mOne)) return false; } } return true; } // Test suite for BlockLanczosSolver // All tests below return true on success and false on failure. They take a // single argument: n for the row and column dimension of the matrices on which // to operate // Compute a random dense matrix and run compute_Winv_S on it. Check that the // resulting S vector is all 'true' and then multiply the original matrix by the // output. Add 1 to the result with addIN and check the the result is zero with // isZero template bool BlockLanczosSolver::test_compute_Winv_S_mul (int n) const { commentator().start ("Testing compute_Winv_S, mul, addIN, and isZero", "test_compute_Winv_S_mul"); Matrix A (n, n); Matrix AT (n, n); Matrix ATA (n, n); Matrix W (n, n); Matrix WA (n, n); std::vector S (n); bool ret = true; RandomDenseStream stream (field(), _randiter, n); typename Matrix::RowIterator i = A.rowBegin (); typename Matrix::ColIterator j = AT.colBegin (); // With very, very, very, very high probability, this will be // nonsingular for (; i != A.rowEnd (); ++i, ++j) { stream >> *i; _VD.copy (*j, *i); } _MD.mul (ATA, AT, A); std::ostream &report = commentator().report (Commentator::LEVEL_UNIMPORTANT, INTERNAL_DESCRIPTION); report << "Computed A^T A:" << std::endl; _MD.write (report, ATA); compute_Winv_S (W, S, ATA); report << "Computed W:" << std::endl; _MD.write (report, W); // Now W should be -A^-1 _MD.mul (WA, W, ATA); report << "Computed WA^T A:" << std::endl; _MD.write (report, WA); if (!isAlmostIdentity (WA)) { commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_ERROR) << "ERROR: WA^T A != I" << std::endl; ret = false; } // Now, just for kicks, do the same on the other side _MD.mul (WA, ATA, W); report << "Computed A^T A W:" << std::endl; _MD.write (report, WA); if (!isAlmostIdentity (WA)) { commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_ERROR) << "ERROR: A^T AW != I" << std::endl; ret = false; } commentator().stop (MSG_STATUS (ret), NULL, "test_compute_Winv_S_mul"); return ret; } // Same as above, but use mulin rather than mul template bool BlockLanczosSolver::test_compute_Winv_S_mulin (int n) const { commentator().start ("Testing compute_Winv_S, copy, mulin, addIN, and isZero", "test_compute_Winv_S_mulin"); Matrix A (n, n); Matrix AT (n, n); Matrix ATA (n, n); Matrix W (n, n); Matrix WA (n, n); std::vector S (n); bool ret = true; RandomDenseStream stream (field(), _randiter, n); typename Matrix::RowIterator i = A.rowBegin (); typename Matrix::ColIterator j = AT.colBegin (); // With very, very, very, very high probability, this will be // nonsingular for (; i != A.rowEnd (); ++i, ++j) { stream >> *i; _VD.copy (*j, *i); } _MD.mul (ATA, AT, A); std::ostream &report = commentator().report (Commentator::LEVEL_UNIMPORTANT, INTERNAL_DESCRIPTION); report << "Computed A^T A:" << std::endl; _MD.write (report, ATA); compute_Winv_S (W, S, ATA); _MD.copy (WA, W); report << "Computed W:" << std::endl; _MD.write (report, W); // Now W should be -A^-1 _MD.mulin (WA, ATA); report << "Computed WA^T A:" << std::endl; _MD.write (report, WA); if (!isAlmostIdentity (WA)) { commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_ERROR) << "ERROR: WA^T A != I" << std::endl; ret = false; } // Now, just for kicks, do the same on the other side _MD.copy (WA, ATA); _MD.mulin (WA, W); report << "Computed A^T AW:" << std::endl; _MD.write (report, WA); if (!isAlmostIdentity (WA)) { commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_ERROR) << "ERROR: A^T AW != I" << std::endl; ret = false; } commentator().stop (MSG_STATUS (ret), NULL, "test_compute_Winv_S_mulin"); return ret; } // Compute a random nonsingular diagonal matrix and set an S vector so that // every other entry is true and the rest are false. Call mul_SST and check that // the entries on the resulting diagonal are correct. template bool BlockLanczosSolver::test_mul_SST (int n) const { commentator().start ("Testing addin", "test_mulTranspose"); bool ret = true; commentator().stop (MSG_STATUS (ret), NULL, "test_mulTranspose"); return ret; } // Same as test_compute_Winv_S_mul above, but zero out every other column using // the method for test_mul_SST template bool BlockLanczosSolver::test_mul_ABSST (int n) const { commentator().start ("Testing addin", "test_mulTranspose"); bool ret = true; commentator().stop (MSG_STATUS (ret), NULL, "test_mulTranspose"); return ret; } // Compute a random dense matrix and two random vectors, and check that = template bool BlockLanczosSolver::test_mulTranspose (int m, int n) const { commentator().start ("Testing mulTranspose, m-v mul", "test_mulTranspose"); Matrix A (m, n); typename Vector::Dense x (m), y (n); typename Vector::Dense ATx (n), Ay (m); Element ATxy, xAy; bool ret = true; RandomDenseStream stream (field(), _randiter, n); typename Matrix::RowIterator i = A.rowBegin (); for (; i != A.rowEnd (); ++i) stream >> *i; std::ostream &report = commentator().report (Commentator::LEVEL_UNIMPORTANT, INTERNAL_DESCRIPTION); report << "Computed A:" << std::endl; _MD.write (report, A); RandomDenseStream stream1 (field(), _randiter, m); stream1 >> x; RandomDenseStream stream2 (field(), _randiter, n); stream1 >> y; report << "Computed x: "; _VD.write (report, x) << std::endl; report << "Computed y: "; _VD.write (report, y) << std::endl; _MD.vectorMul (ATx, transpose (A), x); report << "Computed A^T x: "; _VD.write (report, ATx) << std::endl; _MD.vectorMul (Ay, A, y); report << "Computed Ay: "; _VD.write (report, Ay) << std::endl; _VD.dot (ATxy, ATx, y); report << "Computed ATxy: "; field().write (report, ATxy) << std::endl; _VD.dot (xAy, x, Ay); report << "Computed xAy: "; field().write (report, xAy) << std::endl; if (!field().areEqual (ATxy, xAy)) { commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_ERROR) << "ERROR: != " << std::endl; ret = false; } commentator().stop (MSG_STATUS (ret), NULL, "test_mulTranspose"); return ret; } // Same as test_mul_SST, but using mulTranspose template bool BlockLanczosSolver::test_mulTranspose_ABSST (int n) const { commentator().start ("Testing addin_ABSST", "test_mulTranspose_ABSST"); bool ret = true; commentator().stop (MSG_STATUS (ret), NULL, "test_mulTranspose_ABSST"); return ret; } // Same as test_mul_ABSST, but using mulin_ABSST template bool BlockLanczosSolver::test_mulin_ABSST (int n) const { commentator().start ("Testing addin_ABSST", "test_mulin_ABSST"); bool ret = true; commentator().stop (MSG_STATUS (ret), NULL, "test_mulin_ABSST"); return ret; } // Same as test_addin, but using test_addin_ABSST template bool BlockLanczosSolver::test_addin_ABSST (int n) const { commentator().start ("Testing addin_ABSST", "test_addin_ABSST"); bool ret = true; commentator().stop (MSG_STATUS (ret), NULL, "test_addin_ABSST"); return ret; } template bool BlockLanczosSolver::runSelfCheck () const { bool ret = true; commentator().start ("Running self check", "runSelfCheck", 10); if (!test_compute_Winv_S_mul (_block)) ret = false; if (!test_compute_Winv_S_mulin (_block)) ret = false; if (!test_mul_SST (_block)) ret = false; if (!test_mul_ABSST (_block)) ret = false; if (!test_mulTranspose (_block * 10, _block)) ret = false; if (!test_mulTranspose_ABSST (_block)) ret = false; if (!test_mulin_ABSST (_block)) ret = false; if (!test_addin_ABSST (_block)) ret = false; commentator().stop (MSG_STATUS (ret), NULL, "runSelfCheck"); return ret; } } // namespace LinBox #endif // __LINBOX_block_lanczos_INL // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/block-massey-domain.h000066400000000000000000000504531274717217100225040ustar00rootroot00000000000000 /* linbox/algorithms/block-massey-domain.h * Copyright (C) 2002 Pascal Giorgi * * Written by Pascal Giorgi pascal.giorgi@lirmm.fr * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_massey_block_domain_H #define __LINBOX_massey_block_domain_H #include #include #include #include #include "linbox/util/commentator.h" #include "linbox/util/timer.h" #include #include "linbox/matrix/matrix-domain.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/factorized-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/algorithms/sigma-basis.h" #include "linbox/util/timer.h" // #define __CHECK_RESULT // #define __DEBUG_MAPLE // #define __CHECK_LOOP // #define __PRINT_MINPOLY // #define __CHECK_DISCREPANCY // #define __CHECK_TRANSFORMATION // #define __CHECK_SIGMA_RESULT // #define __PRINT_SEQUENCE // #define __PRINT_SIGMABASE //#define _BM_TIMING #define DEFAULT_BLOCK_EARLY_TERM_THRESHOLD 10 namespace LinBox { template void write_maple(const Field& F, const std::vector & P) { std::cout<<"Matrix(["; for (size_t i=0;i< P[0].rowdim();++i){ std::cout<<"["; for (size_t j=0;j< P[0].coldim();++j){ F.write(std::cout,P[0].getEntry(i,j)); for (size_t k=1;k class BlockMasseyDomain { public: typedef _Field Field; typedef typename Field::Element Element; typedef _Sequence Sequence; typedef BlasMatrix Coefficient; typedef BlasSubmatrix CoeffView; private: Sequence *_container; const Field *_field; BlasMatrixDomain _BMD; MatrixDomain _MD; unsigned long EARLY_TERM_THRESHOLD; public: #ifdef _BM_TIMING mutable Timer ttGetMinPoly; mutable Timer tGetMinPoly; mutable Timer ttNewDiscrepancy; mutable Timer tNewDiscrepancy; mutable Timer ttShiftSigma; mutable Timer tShiftSigma; mutable Timer ttApplyPerm; mutable Timer tApplyPerm; mutable Timer ttUpdateSigma; mutable Timer tUpdateSigma; mutable Timer ttInverseL; mutable Timer tInverseL; mutable Timer ttGetPermutation; mutable Timer tGetPermutation; mutable Timer ttLQUP; mutable Timer tLQUP; mutable Timer ttDiscrepancy; mutable Timer tDiscrepancy; mutable Timer ttGetCoeff; mutable Timer tGetCoeff; mutable Timer ttCheckSequence; mutable Timer tCheckSequence; mutable Timer ttSetup; mutable Timer tSetup; mutable Timer ttMBasis; mutable Timer tMBasis; mutable Timer ttUpdateSerie; mutable Timer tUpdateSerie; mutable Timer ttBasisMultiplication; mutable Timer tBasisMultiplication; mutable Timer ttCopyingData; mutable Timer tCopyingData; mutable Timer Total; void clearTimer() { ttGetMinPoly.clear(); ttNewDiscrepancy.clear(); ttShiftSigma.clear(); ttApplyPerm.clear(); ttUpdateSigma.clear(); ttInverseL.clear(); ttGetPermutation.clear(); ttLQUP.clear(); ttDiscrepancy.clear(); ttGetCoeff.clear(); ttCheckSequence.clear(); ttSetup.clear(); ttMBasis.clear(); ttUpdateSerie.clear(); ttBasisMultiplication.clear(); ttCopyingData.clear(), Total.clear(); } void print(Timer& T, const char* timer, const char* title) { if (&T != &Total) Total+=T; if (T.count() > 0) { std::cout< &Mat, unsigned long ett_default = DEFAULT_BLOCK_EARLY_TERM_THRESHOLD) : _container(Mat._container), _field(Mat._field), _BMD(Mat.field()), _MD(Mat.field()), EARLY_TERM_THRESHOLD (ett_default) { #ifdef _BM_TIMING clearTimer(); #endif } BlockMasseyDomain (Sequence *D, unsigned long ett_default = DEFAULT_BLOCK_EARLY_TERM_THRESHOLD) : _container(D), _field(&(D->field ())), _BMD(D->field ()), _MD(D->field ()), EARLY_TERM_THRESHOLD (ett_default) { #ifdef _BM_TIMING clearTimer(); #endif } // field of the domain const Field &field () const { return *_field; } // sequence of the domain Sequence *getSequence () const { return _container; } // left minimal generating polynomial of the sequence void left_minpoly (std::vector &P) { masseyblock_left(P); } void left_minpoly_rec (std::vector &P) { masseyblock_left_rec(P); } // left minimal generating polynomial of the sequence, keep track on degree void left_minpoly (std::vector &phi, std::vector °ree) { degree = masseyblock_left(phi); } void left_minpoly_rec (std::vector &P, std::vector °ree) { degree = masseyblock_left_rec(P); } // right minimal generating polynomial of the sequence void right_minpoly (std::vector &P) { masseyblock_right(P);} private: std::vector masseyblock_left (std::vector &P) { std::ostream& report = commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION); const size_t length = _container->size (); const size_t m = _container->rowdim(); const size_t n = _container->coldim(); // ==================================================== // Sequence and iterator initialization // ==================================================== // Initialization of the sequence iterator typename Sequence::const_iterator _iter (_container->begin ()); // Reservation of memory for the entire sequence const Coefficient Zeromn(field(),m,n); std::vector S (length,Zeromn); Coefficient Unit(field(),m+n,m); const Coefficient Zero(field(),m+n,m); for (size_t i=0;i SigmaBase(1, Unit); // initialization of order of sigma base's rows std::vector order(m+n,1); for (size_t i=0;i degree(m+n,0); for (size_t i=0;i Perm1(m+n); for (size_t i=0;i=2) { for (size_t i=0;i BPerm1(Perm1); // Discrepancy= BPerm1.Discrepancy _BMD.mulin_right(BPerm1,Discrepancy); #ifdef __CHECK_DISCREPANCY report<<"Discrepancy"< Pp (CopyDiscr.coldim()); BlasPermutation Qt (CopyDiscr.rowdim()); LQUPMatrix LQUP(CopyDiscr,Pp,Qt); // Get the matrix L of LQUP decomposition TriangularBlasMatrix L(field(),m+n,m+n, Tag::Shape::Lower, Tag::Diag::Unit ); LQUP.getL(L); // Get the tranposed permutation of Q from LQUP // BlasPermutation Qt=LQUP.getQ(); // Computation of permutations BPerm2 such that the last n rows of BPerm2.Qt.Discrepancy are non zero. std::vector Perm2(m+n); for (size_t i=0;i BPerm2(Perm2); // compute the inverse of L TriangularBlasMatrix invL (field(),m+n,m+n, Tag::Shape::Lower,Tag::Diag::Unit); FFPACK::trinv_left(field(),m+n,L.getPointer(),L.getStride(),invL.getWritePointer(),invL.getStride()); #ifdef __CHECK_TRANSFORMATION report<<"invL"< UF(0); // What? BlasMatrixDomain > BMDUF(UF); BMDUF.mulin_right(Qt,order); BMDUF.mulin_right(BPerm2,order); BMDUF.mulin_right(BPerm1,degree); BMDUF.mulin_right(Qt,degree); BMDUF.mulin_right(BPerm2,degree); for (size_t i=m;imax_degree) max_degree=degree[i]; } size_t size=SigmaBase.size(); if (SigmaBase.size()<= (size_t)max_degree) { SigmaBase.resize(size+1,Zero); //report << size << std::endl; size++; } //report << "size going in" << size << std::endl; for (int i= (int)size-2;i>=0;i--) for (size_t j=0;j;"<;"< NN+1)? NN+1: SigmaBase.size(); for (size_t i=min_t - 1 ; i trU(U,Tag::Shape::Upper,Tag::Diag::NonUnit); LQUP.getU(trU); //Discrepancy=U; // BlasPermutation Pp= LQUP.getP(); _BMD.mul(Discrepancy,trU, Pp); _BMD.mulin_right(BPerm2,Discrepancy); } if ( early_stop == EARLY_TERM_THRESHOLD) report<<"Early termination is used: stop at "< (max+1,tmp); for (size_t i=0;i deg(m); for (size_t i=0;i masseyblock_left_rec (std::vector &P) { #ifdef __CHECK_RESULT std::ostream& report = commentator().report (Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION); #endif // Get information of the Sequence (U.A^i.V) size_t length = _container->size(); size_t m, n; m = _container->rowdim(); n = _container->coldim(); // Set some useful constant const Coefficient Zero(field(),2*m,2*m); const Coefficient Zeromn(field(),2*m,n); // Make the Power Serie from Sequence (U.A^i.V) and Identity //_container->recompute(); // make sure sequence is already computed std::vector PowerSerie(length,Zeromn); typename Sequence::const_iterator _iter (_container->begin ()); for (size_t i=0;i< length; ++i, ++_iter){ for (size_t j=0;j class BlockWiedemannSolver{ public: typedef typename Context_::Field Field; typedef typename Field::Element Element; typedef typename Field::RandIter RandIter; typedef BlasVector Vector; typedef BlasMatrix Block; protected: Context_ _BMD; VectorDomain _VDF; const RandIter _rand; public: const Field & field() const { return _BMD.field(); } BlockWiedemannSolver (const Context_ &C) : _BMD(C.field()), _VDF(C.field()), _rand(const_cast(C.field())) {} BlockWiedemannSolver (const Field &F, RandIter &rand) : _BMD(F), _VDF(F), _rand(rand) {} template Vector &solveNonSingular (Vector &x, const Blackbox &B, const Vector &y) const { Transpose A(B); size_t m,n; m = A.rowdim(); n = A.coldim(); uint32_t p,q; // CP : converting to GMP int to get the bitsize is unsane ! Should be replaced by a tablelookup integer tmp; tmp = uint32_t(m); p = tmp.bitsize()-1; //p=sqrt(tmp); tmp = uint32_t(n); q = tmp.bitsize()-1; //q=sqrt(tmp); //std::cout<<"row block: "< > Sequence (&A,field(),U,V); BlockMasseyDomain > > MBD(&Sequence); std::vector minpoly; std::vector degree; MBD.left_minpoly_rec(minpoly,degree); //MBD.printTimer(); //cout<<"minpoly is: \n"; //write_maple(field(),minpoly); //cout< combi(p,Vector(F,deg+1)); for (size_t i=0;i 0;--i) { _VDF.axpy (lhs, combi[0][(size_t)i], y, lhsbis); A.applyTranspose (lhsbis, lhs); } Vector accu (lhs); for (size_t k=1;k= 0;--i) { _VDF.axpy (lhs, combi[k][(size_t)i], row, lhsbis_loc); A.applyTranspose (lhsbis_loc, lhs); } _VDF.addin(accu,lhs); } Element scaling; field().init(scaling); field().neg(scaling,combi[0][0]); field().invin(scaling); _VDF.mul(x,accu,scaling); } else { /* * Compute the solution according to the polynomial combination * given by the product of the idx-th row of MinPoly and UA. * this should decrease the number of sparse apply but increase memory requirement. */ size_t deg = degree[(size_t)idx]; Block idx_poly(field(),deg+1,p-1); for (size_t i=0;i= 0;--i) { for (size_t j=0;j 0;--i) { _VDF.axpy (lhs,minpoly[(size_t)i].getEntry(idx,0) , y, lhsbis); A.applyTranspose (lhsbis, lhs); } _VDF.addin(accu,lhs); Element scaling; field().init(scaling); field().neg(scaling,minpoly[0].getEntry(idx,0)); field().invin(scaling); _VDF.mul(x,accu,scaling); } return x; } }; // end of class BlockWiedemannSolver }// end of namespace LinBox #endif //__LINBOX_block_wiedemann_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/charpoly-rational.h000066400000000000000000000234521274717217100222750ustar00rootroot00000000000000/* linbox/blackbox/rational-reconstruction-base.h * Copyright (C) 2009 Anna Marszalek * * Written by Anna Marszalek * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_charpoly_rational_H #define __LINBOX_charpoly_rational_H #include "linbox/util/commentator.h" #include "linbox/util/timer.h" #include "linbox/ring/modular.h" //#include "linbox/field/gmp-rational.h" #include "linbox/blackbox/rational-matrix-factory.h" #include "linbox/algorithms/cra-early-multip.h" #include "linbox/algorithms/cra-domain.h" //#include "linbox/algorithms/rational-cra.h" #include "linbox/algorithms/rational-reconstruction-base.h" #include "linbox/algorithms/classic-rational-reconstruction.h" #include "linbox/solutions/charpoly.h" #include "linbox/blackbox/compose.h" #include "linbox/blackbox/diagonal.h" namespace LinBox { //typedef GMPRationalField Rationals; //typedef Rationals::Element Quotient; /* * Computes the characteristic polynomial of a rational dense matrix */ template struct MyModularCharpoly{ T1* t1; T2* t2; int switcher; MyModularCharpoly(T1* s1, T2* s2, int s = 1) {t1=s1; t2=s2;switcher = s;} int setSwitcher(int s) {return switcher = s;} template Polynomial& operator()(Polynomial& P, const Field& F) const { if (switcher ==1) { t1->operator()(P,F); } else { t2->operator()(P,F); } return P; } }; template struct MyRationalModularCharpoly { const Blackbox &A; const MyMethod &M; const std::vector &mul;//multiplicative prec; MyRationalModularCharpoly(const Blackbox& b, const MyMethod& n, const std::vector& p) : A(b), M(n), mul(p) {} MyRationalModularCharpoly(MyRationalModularCharpoly& C) : // MyRationalModularCharpoly(C.A,C.M,C.mul) A(C.A),M(C.M),mul(C.mul) {} template Polynomial& operator()(Polynomial& P, const Field& F) const { typedef typename Blackbox::template rebind::other FBlackbox; FBlackbox * Ap; MatrixHom::map(Ap, A, F); charpoly( P, *Ap, typename FieldTraits::categoryTag(), M); typename std::vector::const_iterator it = mul.begin(); typename Polynomial::iterator it_p = P.begin(); for (;it_p !=P.end(); ++it, ++it_p) { typename Field::Element e; F.init(e, *it); F.mulin(*it_p,e); } delete Ap; return P; } }; template struct MyIntegerModularCharpoly { const Blackbox &A; const MyMethod &M; const std::vector &vD;//diagonal div. prec; const std::vector &mul;//multiplicative prec; MyIntegerModularCharpoly(const Blackbox& b, const MyMethod& n, const std::vector& ve, const std::vector& p) : A(b), M(n), vD(ve), mul(p) {} MyIntegerModularCharpoly(MyIntegerModularCharpoly& C) : // MyIntegerModularCharpoly(C.A,C.M,C.vD,C.mul) A(C.A),M(C.M),vD(C.vD),mul(C.mul) {} template Polynomial& operator()(Polynomial& P, const Field& F) const { typedef typename Blackbox::template rebind::other FBlackbox; FBlackbox * Ap; MatrixHom::map(Ap, A, F); typename std::vector::const_iterator it; int i=0; for (it = vD.begin(); it != vD.end(); ++it,++i) { typename Field::Element t,tt; F.init(t,*it); F.invin(t); for (int j=0; j < A.coldim(); ++j) { F.mulin(Ap->refEntry(i,j),t); } } charpoly( P, *Ap, typename FieldTraits::categoryTag(), M); typename std::vector::const_iterator it2 = mul.begin(); typename Polynomial::iterator it_p = P.begin(); for (;it_p !=P.end(); ++it2, ++it_p) { typename Field::Element e; F.init(e, *it2); F.mulin(*it_p,e); } delete Ap; return P; } }; template class Vector, class MyMethod > Vector& rational_charpoly (Vector &p, const BlasMatrix &A, const MyMethod &Met= Method::Hybrid()) { typedef typename Rationals::Element Quotient; commentator().start ("Rational Charpoly", "Rminpoly"); RandomPrimeIterator genprime( 26-(int)ceil(log((double)A.rowdim())*0.7213475205)); std::vector F(A.rowdim()+1,1); std::vector M(A.rowdim()+1,1); std::vector Di(A.rowdim()); RationalMatrixFactory,Rationals,BlasMatrix > FA(&A); Integer da=1, di=1; Integer D=1; FA.denominator(da); for (int i=(int)M.size()-2; i >= 0 ; --i) { //c[m]=1, c[0]=det(A); FA.denominator(di,i); D *=di; Di[(size_t)i]=di; M[(size_t)i] = M[(size_t)i+1]*da; } for (int i=0; i < (int) M.size() ; ++i ) { gcd(M[(size_t)i],M[(size_t)i],D); } Givaro::ZRing Z; BlasMatrix > Atilde(Z,A.rowdim(), A.coldim()); FA.makeAtilde(Atilde); ChineseRemainder< EarlyMultipCRA > > cra(4UL); MyRationalModularCharpoly , MyMethod> iteration1(A, Met, M); MyIntegerModularCharpoly >, MyMethod> iteration2(Atilde, Met, Di, M); MyModularCharpoly , MyMethod>, MyIntegerModularCharpoly >, MyMethod> > iteration(&iteration1,&iteration2); RReconstruction, ClassicMaxQRationalReconstruction > > RR; std::vector PP; // use of integer due to non genericity of cra. PG 2005-08-04 UserTimer t1,t2; t1.clear(); t2.clear(); t1.start(); cra(2,PP,iteration1,genprime); t1.stop(); t2.start(); cra(2,PP,iteration2,genprime); t2.stop(); if (t1.time() < t2.time()) { //cout << "ratim"; iteration.setSwitcher(1); } else { //cout << "intim"; iteration.setSwitcher(2); } int k=4; while (! cra(k,PP, iteration, genprime)) { k *=2; Integer m; //Integer r; Integer a,b; cra.getModulus(m); cra.result(PP);//need to divide for (int i=0; i < (int)PP.size(); ++i) { Integer D_1; inv(D_1,M[(size_t)i],m); PP[(size_t)i] = (PP[(size_t)i]*D_1) % m; } Integer den,den1; std::vector num(A.rowdim()+1); std::vector num1(A.rowdim()+1); if (RR.reconstructRational(num,den,PP,m,-1)) {//performs reconstruction strating form c[m], use c[(size_t)i] as prec for c[(size_t)i-1] cra(1,PP,iteration,genprime); cra.getModulus(m); for (int i=0; i < (int)PP.size(); ++i) { Integer D_1; inv(D_1,M[(size_t)i],m); PP[(size_t)i] = (PP[(size_t)i]*D_1) % m; } if (RR.reconstructRational(num1,den1,PP,m,-1)) { bool terminated = true; if (den==den1) { for (int i=0; i < (int)num.size(); ++i) { if (num[(size_t)i] != num1[(size_t)i]) { terminated =false; break; } } } else { terminated = false; } //set p if (terminated) { size_t i =0; integer t,tt,ttt; integer err; // size_t max_err = 0; Quotient qerr; p.resize(PP.size()); typename Vector ::iterator it; Rationals Q; for (it= p.begin(); it != p.end(); ++it, ++i) { A.field().init(*it, num[(size_t)i],den); Q.get_den(t,*it); if (it != p.begin()) Q.get_den(tt,*(it-1)); else tt = 1; Q.init(qerr,t,tt); } return p; // break; } } } } cra.result(PP); size_t i =0; integer t,tt; integer err; // size_t max_res=0;int max_i; // double rel; // size_t max_resu=0; int max_iu; // size_t max_err = 0; Quotient qerr; p.resize(PP.size()); typename Vector ::iterator it; Rationals Q; for (it= p.begin(); it != p.end(); ++it, ++i) { A.field().init(*it, PP[(size_t)i],M[(size_t)i]); Q.get_den(t, *it); Q.get_num(tt,*it); err = M[(size_t)i]/t; // size_t resi = err.bitsize() + tt.bitsize() -1; // size_t resu = t.bitsize() + tt.bitsize() -1; // if (resi > max_res) {max_res = resi; max_i=i;} // if (resu > max_resu) {max_resu = resu; max_iu =i;} //size_t resu = t.bitsize() + tt.bitsize() -1; //if (err.bitsize() > max_err) max_err = err.bitsize(); } // max_res=0; for (it= p.begin()+1; it != p.end(); ++it) { //A.field().init(*it, PP[(size_t)i],M[(size_t)i]); Q.get_den(t, *it); Q.get_den(tt, *(it-1)); Q.init(qerr,t,tt); Q.get_num(tt, *it); // size_t resi = Q.bitsize(t,qerr) + tt.bitsize() -2; // if (resi > max_res) {max_res = resi; max_i=i;} //if (err.bitsize() > max_err) max_err = err.bitsize(); } commentator().stop ("done", NULL, "Iminpoly"); return p; } } #endif //__LINBOX_charpoly_rational_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/cia.h000066400000000000000000000076371274717217100174100ustar00rootroot00000000000000/* linbox/algorithms/cia.h * Copyright(C) LinBox * * Written by Clement Pernet * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== *. */ #ifndef __LINBOX_cia_H #define __LINBOX_cia_H #include #include "linbox/ring/modular.h" #include "linbox/randiter/random-prime.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/solutions/minpoly.h" namespace LinBox { /*! @ingroup algorithms * Algorithm computing the integer characteristic polynomial * of a dense matrix. * * @bib [Dumas-Pernet-Wan ISSAC05] * * */ template < class Polynomial, class Blackbox > Polynomial& cia (Polynomial & P, const Blackbox & A, const Method::BlasElimination & M) { commentator().start ("Integer Givaro::Dense Charpoly ", "CIA"); typename Blackbox::Field intRing = A.field(); typedef Givaro::Modular Field; typedef typename Blackbox::template rebind::other FBlackbox; typedef Givaro::Poly1FactorDom IntPolyDom; typedef Givaro::Poly1FactorDom FieldPolyDom; typedef typename IntPolyDom::Element IntPoly; typedef typename FieldPolyDom::Element FieldPoly; IntPolyDom IPD(intRing); FieldPoly fieldCharPoly(A.coldim()); /* Computation of the integer minimal polynomial */ IntPoly intMinPoly; minpoly (intMinPoly, A, RingCategories::IntegerTag(), M); /* Factorization over the integers */ std::vector intFactors; std::vector mult; IPD.factor (intFactors, mult, intMinPoly); size_t nf = intFactors.size(); /* One modular characteristic polynomial computation */ RandomPrimeIterator primeg (22); ++primeg; Field F(*primeg); FBlackbox fbb(F, A.rowdim(), A.coldim()); MatrixHom::map(fbb, A); charpoly (fieldCharPoly, fbb, M); /* Determination of the multiplicities */ FieldPolyDom FPD (F); std::vector fieldFactors (nf); integer tmp_convert; // PG 2005-08-04 for (size_t i = 0; i < nf; ++i){ size_t d= intFactors[i].size(); fieldFactors[i].resize(d); for (size_t j = 0; j < d; ++j) //F.init ((fieldFactors[i])[j], (*intFactors[i])[j]); F.init ((fieldFactors[i])[j], intRing.convert(tmp_convert,(intFactors[i])[j]));// PG 2005-08-04 } FieldPoly currPol = fieldCharPoly; FieldPoly r,tmp,q; std::vector multip (nf); for (size_t i = 0; i < nf; ++i) { FieldPoly currFact = fieldFactors[i]; r.clear(); int m=0; q=currPol; do{ currPol = q; FPD.divmod (q, r, currPol, currFact); m++; } while (FPD.isZero (r)); multip[i] = m-1; } IntPoly intCharPoly (A.coldim()); intRing.assign (intCharPoly[0], intRing.one); for (size_t i = 0; i < nf; ++i){ IPD.pow( P, intFactors[i], multip[i] ); IPD.mulin( intCharPoly, P ); } //for (size_t i = 0; i < nf; ++i) //delete intFactors[i]; commentator().stop ("done", NULL, "CIA"); return P = intCharPoly; } } #endif // __LINBOX_cia_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/classic-rational-reconstruction.h000066400000000000000000000175431274717217100251600ustar00rootroot00000000000000/* linbox/blackbox/classic-rational-reconstruction.h * Copyright (C) 2009 Anna Marszalek * * Written by Anna Marszalek * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_classic_reconstruction_H #define __LINBOX_classic_reconstruction_H #include #include "linbox/algorithms/rational-reconstruction-base.h" namespace LinBox { /* * implements classic rational reconstruction by extended euclidean algorithm, * Wang's bounds [Wang 1981] are used as default */ template class ClassicRationalReconstruction: public RReconstructionBase { protected: const bool _reduce; const bool _recursive; public: const Ring _intRing; typedef typename Ring::Element Element; ClassicRationalReconstruction(const Ring& Z, const bool reduce = true, const bool recursive = false) : RReconstructionBase(Z), _reduce(reduce), _recursive (recursive), _intRing(Z) {} ClassicRationalReconstruction (const ClassicRationalReconstruction& RR): RReconstructionBase(RR._intRing), _reduce(RR._reduce), _recursive(RR._recursive), _intRing(RR._intRing) {} ~ClassicRationalReconstruction() {} //Wang method bool reconstructRational(Element& a, Element& b, const Element& x, const Element& m) const { Element a_bound; _intRing.sqrt(a_bound, m/2); bool res = reconstructRational(a,b,x,m,a_bound); res = res && (b <= a_bound); return res; } bool reconstructRational(Element& a, Element& b, const Element& x, const Element& m, const Element& a_bound) const{ bool res=false; if (x == 0) { a = 0; b = 1; } else { res = ratrecon(a,b,x,m,a_bound); if (_recursive) { for(Element newbound = a_bound + 1; (!res) && (newbound m/2? x-m: x; b = 1; if (a > 0) res = (a < a_bound); else res = (-a < a_bound); } return res; } protected: bool ratrecon(Element& a,Element& b,const Element& x,const Element& m,const Element& a_bound) const { Element r0, t0, q, u; r0=m; t0=0; a=x; b=1; //Element s0,s1; s0=1,s1=0;//test time gcdex; while(a>=a_bound) //while (t0 <= b_bound) { q = r0; _intRing.divin(q,a); // r0/num //++this->C.div_counter; u = a; a = r0; r0 = u; // r0 <-- num _intRing.maxpyin(a,u,q); // num <-- r0-q*num //++this->C.mul_counter; //if (a == 0) return false; u = b; b = t0; t0 = u; // t0 <-- den _intRing.maxpyin(b,u,q); // den <-- t0-q*den //++this->C.mul_counter; //u = s1; //s1 = s0; //s0 = u; //_intRing.maxpyin(s0,u,q); //++this->C.mul_counter; } //if (den < 0) { // _intRing.negin(num); // _intRing.negin(den); //} if ((a>0) && (_reduce)) { // [GG, MCA, 1999] Theorem 5.26 // (ii) Element gg; //++this->C.gcd_counter; if (_intRing.gcd(gg,a,b) != 1) { Element ganum, gar2; for( q = 1, ganum = r0-a, gar2 = r0 ; (ganum >= a_bound) || (gar2C.mul_counter;++this->C.mul_counter; if (t0 < 0) { a = -r0; b = -t0; } else { a = r0; b = t0; } // if (t0 > m/k) { if (abs((double)b) > (double)m/(double)a_bound) { if (!_recursive) { std::cerr << "*** Error *** No rational reconstruction of " << x << " modulo " << m << " with denominator <= " << (m/a_bound) << std::endl; } return false; } if (_intRing.gcd(gg,a,b) != 1) { if (!_recursive) std::cerr << "*** Error *** There exists no rational reconstruction of " << x << " modulo " << m << " with |numerator| < " << a_bound << std::endl << "*** Error *** But " << a << " = " << b << " * " << x << " modulo " << m << std::endl; return false; } } } // (i) if (b < 0) { _intRing.negin(a); _intRing.negin(b); } // std::cerr << "RatRecon End " << num << "/" << den << std::endl; return true; } }; /* * implements classic rational reconstruction by extended euclidean algorithm, * reconstructed pair corresponds to the maximal (or large enough) quotient, see MQRR Alg. of Monagan [Monagan2004] is used */ template class ClassicMaxQRationalReconstruction:public ClassicRationalReconstruction { public: const Ring _intRing; typedef typename Ring::Element Element; ClassicMaxQRationalReconstruction(const Ring& Z, const bool reduce = true, const bool recursive = false) : ClassicRationalReconstruction(Z,reduce,recursive), _intRing(Z) {} ClassicMaxQRationalReconstruction(const ClassicMaxQRationalReconstruction& RR) : ClassicRationalReconstruction(RR), _intRing(RR._intRing) {} ~ClassicMaxQRationalReconstruction() {} bool reconstructRational(Element& a, Element& b, const Element& x, const Element& m) const { bool res = maxEEA(a,b,x,m); return res; } bool reconstructRational(Element& a, Element& b, const Element& x, const Element& m, const Element& a_bound) const{ // bool res= false; return /* res =*/ ClassicRationalReconstruction::reconstructRational(a,b,x,m,a_bound); } protected: bool maxEEA(Element& a, Element& b, const Element& x, const Element& m) const{ Element qmax = 0, amax=x, bmax =1; Element r0, t0, q, u; r0=m; t0=0; a=x; b=1; //Element s0,s; s0=1,s=0;//test time gcdex; Element T = (uint32_t) m.bitsize(); int c = 5; //should be changed here to enhance probability of correctness while((a>0) && (r0.bitsize() > T.bitsize() + (unsigned long)c)) { q = r0; _intRing.divin(q,a); // r0/num //++this->C.div_counter; if (q > qmax) { amax = a; bmax = b; qmax = q; if (qmax.bitsize() > T.bitsize() + (unsigned long)c) break; } u = a; a = r0; r0 = u; // r0 <-- num _intRing.maxpyin(a,u,q); // num <-- r0-q*num //++this->C.mul_counter; //if (a == 0) return false; u = b; b = t0; t0 = u; // t0 <-- den _intRing.maxpyin(b,u,q); // den <-- t0-q*den //++this->C.mul_counter; } a = amax; b = bmax; if (b < 0) { _intRing.negin(a); _intRing.negin(b); } Element gg; _intRing.gcd(gg,a,b); //++this->C.gcd_counter; //if (q > T) //Element T = m.bitsize(); //int c = 20; //T=0;c=0; if (qmax.bitsize() > T.bitsize() + (unsigned long)c) { return true; } else return false; //if (gg > 1) return false; //else return true; } }; } #endif //__LINBOX_classic_reconstruction_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/coppersmith-invariant-factors.h000066400000000000000000000122631274717217100246300ustar00rootroot00000000000000/* linbox/algorithms/coppersmith-invariant-factors.h * Copyright (C) 2014 Alex Stachnik * * Written by Alex Stachnik * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_coppersmith_invariant_factors_H #define __LINBOX_coppersmith_invariant_factors_H #include "linbox/algorithms/block-coppersmith-domain.h" #include "linbox/algorithms/blackbox-block-container.h" //#include "linbox/algorithms/alt-blackbox-block-container.h" #include "linbox/matrix/random-matrix.h" #include #include #include #include #include #include "linbox/ring/givaro-poly-mod-poly.h" #include namespace LinBox { template class CoppersmithInvariantFactors { public: typedef Field_ Field; typedef Blackbox_ Blackbox; typedef MatrixDomain Domain; typedef typename Domain::OwnMatrix Block; typedef typename Field::RandIter RandIter; typedef Givaro::Poly1Dom PolyDom; typedef GivaroPoly PolyRing; typedef typename PolyRing::Element PolyElement; typedef MatrixDomain PolyMatDom; typedef typename PolyMatDom::OwnMatrix PolyBlock; CoppersmithInvariantFactors(): M_(NULL), n_(0), b_(0) {} void init(Field& F, const Blackbox& M, size_t b) { F_=F; M_=M; n_=M.rowdim(); MD_=Domain(F); U_=Block(F,b,M.rowdim()); V_=Block(F,M.rowdim(),b); b_=b; RandIter RI(F_); RandomDenseMatrix RDM(F_,RI); RDM.random(U_); RDM.random(V_); } CoppersmithInvariantFactors(Field& F, const Blackbox& M, size_t b): MD_(F), F_(F), M_(&M), n_(M.rowdim()), b_(b), U_(F,b,M.rowdim()), V_(F,M.rowdim(),b) { RandIter RI(F_); RandomDenseMatrix RDM(F_,RI); RDM.random(U_); RDM.random(V_); } template CoppersmithInvariantFactors(Field& F, const Blackbox& M, size_t b, const Mat1& U, const Mat2& V): MD_(F), F_(F), M_(&M), n_(M.rowdim()), b_(b), U_(F,b,M.rowdim()), V_(F,M.rowdim(),b) { MD_.copy(U_,U); MD_.copy(V_,V); } template size_t computeFactors(PolyRingVector& diag, int earlyTerm=10) { //typedef AltBlackboxBlockContainer::OwnMatrix > BBC; typedef BlackboxBlockContainer BBC; typedef BlockCoppersmithDomain,BBC> BCD; BBC blockSeq(M_,F_,U_,V_); MatrixDomain BMD(F_); BCD coppersmith(BMD,&blockSeq,earlyTerm); std::vector deg; std::vector::OwnMatrix > gen; deg=coppersmith.right_minpoly(gen); commentator().report(Commentator::LEVEL_IMPORTANT,PROGRESS_REPORT) <<"Finished computing minpoly"< GPMPD(F_,detPoly); GivaroPoly::Parent_t > GPMPDW(*(GPMPD.getExtension())); MatrixDomain > > GPMPDWMD(GPMPDW); typename MatrixDomain > >::OwnMatrix MMCopy(GPMPDW,b_,b_); for (int i=0;i SFKB(PMD); diag.resize(b_); SFKB.solve(diag,MM); for (uint32_t i = 0; i < diag.size(); ++i) { R.normalizeIn(diag[i]); } return diag.size(); } protected: Domain MD_; Field F_; const Blackbox *M_; size_t n_,b_; Block U_,V_; }; } #endif //__LINBOX_coppersmith_invariant_factors_H linbox-1.4.2/linbox/algorithms/coppersmith.h000066400000000000000000000400541274717217100211770ustar00rootroot00000000000000/* linbox/algorithms/coppersmith.h * evolved from block-wiedemann.h by George Yuhasz * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_coppersmith_H #define __LINBOX_coppersmith_H #include #include #include #include #include #include "linbox/integer.h" #include "linbox/util/commentator.h" #include "linbox/algorithms/blackbox-block-container.h" #include "linbox/algorithms/block-coppersmith-domain.h" #include "linbox/solutions/det.h" #include "linbox/util/error.h" #include "linbox/util/debug.h" namespace LinBox { template class CoppersmithSolver{ public: typedef _Domain Domain; typedef typename Domain::Field Field; typedef typename Domain::Element Element; typedef typename Domain::OwnMatrix Block; typedef typename Domain::Matrix Sub; inline const Domain & domain() const { return *_MD; } inline const Field & field() const { return domain().field(); } protected: const Domain *_MD; size_t blocking; public: CoppersmithSolver(const Domain &MD, size_t blocking_ = 0) : _MD(&MD), blocking(blocking_) {} template Vector &solveNonSingular (Vector &x, const Blackbox &B, const Vector &y) const { commentator().start ("Coppersmith solveNonSingular", "solveNonSingular"); #if 1 std::ostream& report = commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION); #endif //Set up the projection matrices and their dimensions size_t d = B.coldim(); size_t r,c; integer tmp = uint64_t(d); //Set the blocking size, Using Pascal Giorgi's convention if(blocking==0){ r=tmp.bitsize()-1; c=tmp.bitsize()-1; }else r=c=blocking; //Create the block Block U(field(),r,d); Block W(field(),d,c-1); Block V(field(),d,c); //Pick random entries for U and W. W will become the last c-1 columns of V U.random(); W.random(); //Multiply W by B on the left and place it in the last c-1 columns of V Sub V2(V,0,1,d,c-1); domain().mul(V2,B,W); //Make the first column of V a copy of the right side of the system, y for(size_t i=0; i blockseq(&B,field(),U,V); //Get the generator of the projection using the Coppersmith algorithm (slightly modified by Yuhasz) BlockCoppersmithDomain > BCD(domain(), &blockseq,d); std::vector gen; std::vector deg; deg = BCD.right_minpoly(gen); report << "Size of blockseq " << blockseq.size() << std::endl; report << "Size of gen " << gen.size() << std::endl; for(size_t i = 0; i < gen[0].coldim(); i++) report << "Column " << i << " has degree " << deg[i] << std::endl; //Reconstruct the solution //Pick a column of the generator with a nonzero element in the first row of the constant coefficient size_t idx = 0; if(field().isZero(gen[0].getEntry(0,0))){ size_t i = 1; while(i class CoppersmithRank{ public: typedef _Domain Domain; typedef typename Domain::Field Field; typedef typename Domain::Element Element; typedef typename Domain::Matrix Block; typedef typename Domain::Submatrix Sub; typedef typename Field::RandIter Random; inline const Domain & domain() const { return *_MD; } inline const Field & field() const { return domain().field(); } protected: const Domain *_MD; Random iter; size_t blocking; //Compute the determinant of a polynomial matrix at the given set of evaluation points //Store the results in the vector dets. void EvalPolyMat(std::vector &dets, std::vector &values, std::vector & mat) const { size_t deg = mat.size() -1; size_t numv = values.size(); //Compute the determinant of the evaluation at values[i] for each i for(size_t i = 0; i::reverse_iterator addit = mat.rbegin(); addit++; for(addit; addit != mat.rend(); addit++){ domain().mulin(evalmat,values[i]); domain().addin(evalmat,*addit); }//end loop computing horner evaluation //Compute the determinant of the evaluation and store it in dets[i] dets[i] = det(dets[i],evalmat); }//end loop over evaluation points }//end evaluation of polynominal matrix determinant public: CoppersmithRank(const Domain &MD, size_t blocking_ = 0) : _MD(&MD), blocking(blocking_), iter(MD.field()) {} template size_t rank (const Blackbox &B) const { commentator().start ("Coppersmith rank", "rank"); #if 1 std::ostream& report = commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION); #endif //Set up the projection matrices and their dimensions size_t d = B.coldim(); size_t r,c; integer tmp = uint64_t(d); //Set the blocking size, Using Pascal Giorgi's convention if(blocking==0){ r=tmp.bitsize()-1; c=tmp.bitsize()-1; }else r=c=blocking; //Create the block Block U(field(),r,d); Block V(field(),d,c); //Pick random entries for U and W. W will become the last c-1 columns of V U.random(); V.random(); BlackboxBlockContainer blockseq(&B,field(),U,V); //Get the generator of the projection using the Coppersmith algorithm (slightly modified by Yuhasz) BlockCoppersmithDomain > BCD(domain(), &blockseq,d); std::vector gen; std::vector deg; deg = BCD.right_minpoly(gen); for(size_t i = 0; i < gen[0].coldim(); i++) report << "Column " << i << " has degree " << deg[i] << std::endl; //Compute the rank via the determinant of the generator //Get the sum of column degrees //This is the degree of the determinant via Yuhasz thesis //size_t detdeg = std::accumulate(deg.begin(), deg.end(), 0); size_t detdeg= 0; for(size_t i = 0; i < gen[0].coldim(); i++) detdeg+=deg[i]; //Set up interpolation with one more evaluation point than degree size_t numpoints = d+1; std::vector evalpoints(numpoints), evaldets(numpoints); for(typename std::vector::iterator evalit = evalpoints.begin(); evalit != evalpoints.end(); evalit++){ do{ //do iter.random(*evalit); while(field().isZero(*evalit)); iter.random(*evalit); }while ((std::find(evalpoints.begin(), evalit, *evalit) != evalit)); }//end evaluation point construction loop //Evaluate the generator determinant at the points EvalPolyMat(evaldets, evalpoints, gen); for(size_t k = 0; k PolyCRT; PolyCRT Interpolator(field(), evalpoints, "x"); typename PolyCRT::Element Determinant; Interpolator.RnsToRing(Determinant,evaldets); Givaro::Degree intdetdeg; Interpolator.getpolydom().degree(intdetdeg,Determinant); Givaro::Degree intdetval; Interpolator.getpolydom().val(intdetval,Determinant); if(detdeg != (size_t) intdetdeg.value()){ report << "sum of column degrees " << detdeg << std::endl; report << "interpolation degree " << intdetdeg.value() << std::endl; } report << "sum of column degrees " << detdeg << std::endl; report << "interpolation degree " << intdetdeg.value() << std::endl; report << "valence (trailing degree) " << intdetval.value() << std::endl; for(size_t k = 0; k class CoppersmithDeterminant{ public: typedef _Domain Domain; typedef typename Domain::Field Field; typedef typename Domain::Element Element; typedef typename Domain::Matrix Block; typedef typename Domain::Submatrix Sub; typedef typename Field::RandIter Random; inline const Domain & domain() const { return *_MD; } inline const Field & field() const { return domain().field(); } protected: const Domain *_MD; Random iter; size_t blocking; //Compute the determinant of a polynomial matrix at the given set of evaluation points //Store the results in the vector dets. void EvalPolyMat(std::vector &dets, std::vector &values, std::vector & mat) const { size_t deg = mat.size() -1; size_t numv = values.size(); //Compute the determinant of the evaluation at values[i] for each i for(size_t i = 0; i::reverse_iterator addit = mat.rbegin(); addit++; for(addit; addit != mat.rend(); addit++){ domain().mulin(evalmat,values[i]); domain().addin(evalmat,*addit); }//end loop computing horner evaluation //Compute the determinant of the evaluation and store it in dets[i] dets[i] = det(dets[i],evalmat); }//end loop over evaluation points }//end evaluation of polynominal matrix determinant public: CoppersmithDeterminant(const Domain &MD, size_t blocking_ = 0) : _MD(&MD), blocking(blocking_), iter(MD.field()) {} template Element det (const Blackbox &B) const { commentator().start ("Coppersmith determinant", "determinant"); #if 1 std::ostream& report = commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION); #endif //Set up the projection matrices and their dimensions size_t d = B.coldim(); size_t r,c; integer tmp = uint64_t(d); //Use given blocking size, if not given use Pascal Giorgi's convention if(blocking==0){ r=tmp.bitsize()-1; c=tmp.bitsize()-1; }else r=c=blocking; //Create the block Block U(field(),r,d); Block V(field(),d,c); //Pick random entries for U and W. W will become the last c-1 columns of V U.random(); V.random(); //Multiply V by B on the left domain().leftMulin(B,V); //Create the sequence container and its iterator that will compute the projection BlackboxBlockContainer blockseq(&B,field(),U,V); //Get the generator of the projection using the Coppersmith algorithm (slightly modified by Yuhasz) BlockCoppersmithDomain > BCD(domain(), &blockseq,d); std::vector gen; std::vector deg; deg = BCD.right_minpoly(gen); //Compute the determinant via the constant coefficient of the determinant of the generator //Get the sum of column degrees //This is the degree of the determinant via Yuhasz thesis //size_t detdeg = std::accumulate(deg.begin(), deg.end(), 0); size_t detdeg= 0; for(size_t i = 0; i < gen[0].coldim(); i++) detdeg+=deg[i]; //Set up interpolation with one more evaluation point than degree size_t numpoints = 2*d; std::vector evalpoints(numpoints), evaldets(numpoints); for(typename std::vector::iterator evalit = evalpoints.begin(); evalit != evalpoints.end(); evalit++){ do{ do iter.random(*evalit); while(field().isZero(*evalit)); }while ((std::find(evalpoints.begin(), evalit, *evalit) != evalit)); }//end evaluation point construction loop //Evaluate the generator determinant at the points EvalPolyMat(evaldets, evalpoints, gen); //Construct the polynomial using Givare interpolation //Stolen from Pascal Giorgi, linbox/examples/omp-block-rank.C typedef Givaro::Poly1CRT PolyCRT; PolyCRT Interpolator(field(), evalpoints, "x"); typename PolyCRT::Element Determinant; Interpolator.RnsToRing(Determinant,evaldets); Givaro::Degree intdetdeg; Interpolator.getpolydom().degree(intdetdeg,Determinant); Givaro::Degree intdetval(0); Interpolator.getpolydom().val(intdetval,Determinant); if(d != (size_t)intdetdeg.value()){ report << "The matrix is singular, determinant is zero" << std::endl; return field(0).zero; } Interpolator.write(report << "Interpolated determinant: ", Determinant) << std::endl; Element intdeterminant(field().zero); Interpolator.getpolydom().getEntry(intdeterminant,intdetval,Determinant); commentator().stop ("done", NULL, "Coppersmith determinant"); return intdeterminant; } }; // end of class CoppersmithDeterminant }// end of namespace LinBox #endif //__LINBOX_coppersmith_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/cra-domain-omp.h000066400000000000000000000226561274717217100214550ustar00rootroot00000000000000/* linbox/algorithms/cra-domain-omp.h * Copyright (C) 1999-2010 The LinBox group * * Naive parallel chinese remaindering * Launch NN iterations in parallel, where NN=omp_get_max_threads() * Then synchronization and termintation test. * Time-stamp: <13 Mar 12 13:49:58 Jean-Guillaume.Dumas@imag.fr> * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file algorithms/cra-domain-omp.h * @brief Parallel (OMP) version of \ref CRA * @ingroup CRA */ #ifndef __LINBOX_omp_cra_H #define __LINBOX_omp_cra_H // commentator is not thread safe #define DISABLE_COMMENTATOR #include #include #include "linbox/algorithms/cra-domain-seq.h" namespace LinBox { template struct ChineseRemainderOMP : public ChineseRemainderSeq { typedef typename CRABase::Domain Domain; typedef typename CRABase::DomainElement DomainElement; typedef ChineseRemainderSeq Father_t; template ChineseRemainderOMP(const Param& b) : Father_t(b) {} ChineseRemainderOMP(const CRABase& b) : Father_t(b) {} template Integer& operator() (Integer& res, Function& Iteration, PrimeIterator& primeiter) { //! @bug why why why ??? /** erreur: ‘omp_get_max_threads’ has not been declared * ../linbox/algorithms/cra-domain-omp.h:152:16: note: suggested alternative: * /usr/lib/gcc/x86_64-linux-gnu/4.6/include/omp.h:64:12: note: ‘Givaro::omp_get_max_threads’ */ size_t NN = omp_get_max_threads(); //std::cerr << "Blocs: " << NN << " iterations." << std::endl; // commentator().start ("Parallel OMP Givaro::Modular iteration", "mmcrait"); if (NN == 1) return Father_t::operator()(res,Iteration,primeiter); int coprime =0; int maxnoncoprime = 1000; if (this->IterCounter==0) { std::set coprimeset; while(coprimeset.size() < NN) { ++primeiter; while(this->Builder_.noncoprime(*primeiter) ) { ++primeiter; ++coprime; if (coprime > maxnoncoprime) { std::cout << "you are running out of primes. " << maxnoncoprime << " coprime primes found"; return this->Builder_.result(res); } } coprime =0; coprimeset.insert(*primeiter); } std::vector ROUNDdomains; ROUNDdomains.reserve(NN); std::vector ROUNDresidues(NN); typename std::vector::iterator resit=ROUNDresidues.begin(); for(std::set::const_iterator coprimesetiter = coprimeset.begin(); coprimesetiter != coprimeset.end(); ++coprimesetiter,++resit) { // std::cerr << "With prime: " << *coprimesetiter << std::endl; ROUNDdomains.push_back( Domain(*coprimesetiter) ); ROUNDdomains.back().init( *resit ); } #pragma omp parallel for for(size_t i=0;iIterCounter; this->Builder_.initialize( ROUNDdomains[0],ROUNDresidues[0]); for(size_t i=1;iIterCounter; this->Builder_.progress( ROUNDdomains[i],ROUNDresidues[i]); } // commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; } while( ! this->Builder_.terminated() ) { //std::cerr << "Computed: " << this->IterCounter << " primes." << std::endl; std::set coprimeset; while(coprimeset.size() < NN) { ++primeiter; while(this->Builder_.noncoprime(*primeiter) ) { ++primeiter; ++coprime; if (coprime > maxnoncoprime) { std::cout << "you are running out of primes. " << maxnoncoprime << " coprime primes found"; return this->Builder_.result(res); } } coprime =0; coprimeset.insert(*primeiter); } std::vector ROUNDdomains; ROUNDdomains.reserve(NN); std::vector ROUNDresidues(NN); typename std::vector::iterator resit=ROUNDresidues.begin(); for(std::set::const_iterator coprimesetiter = coprimeset.begin(); coprimesetiter != coprimeset.end(); ++coprimesetiter,++resit) { // std::cerr << "With prime: " << *coprimesetiter << std::endl; ROUNDdomains.push_back( Domain(*coprimesetiter) ); ROUNDdomains.back().init( *resit ); } #pragma omp parallel for for(size_t i=0;iIterCounter; this->Builder_.progress( ROUNDdomains[i],ROUNDresidues[i]); } } // commentator().stop ("done", NULL, "mmcrait"); //std::cerr << "Used: " << this->IterCounter << " primes." << std::endl; return this->Builder_.result(res); } template Container& operator() (Container& res, Function& Iteration, PrimeIterator& primeiter) { typedef typename CRATemporaryVectorTrait::Type_t ElementContainer; size_t NN = omp_get_max_threads(); //std::cerr << "Blocs: " << NN << " iterations." << std::endl; // commentator().start ("Parallel OMP Givaro::Modular iteration", "mmcrait"); if (NN == 1) return Father_t::operator()(res,Iteration,primeiter); int coprime =0; int maxnoncoprime = 1000; if (this->IterCounter==0) { std::set coprimeset; while(coprimeset.size() < NN) { ++primeiter; while(this->Builder_.noncoprime(*primeiter) ) { ++primeiter; ++coprime; if (coprime > maxnoncoprime) { std::cout << "you are running out of primes. " << maxnoncoprime << " coprime primes found"; return this->Builder_.result(res); } } coprime =0; coprimeset.insert(*primeiter); } std::vector ROUNDdomains; ROUNDdomains.reserve(NN); std::vector ROUNDresidues(NN); typename std::vector::iterator resit=ROUNDresidues.begin(); for(std::set::const_iterator coprimesetiter = coprimeset.begin(); coprimesetiter != coprimeset.end(); ++coprimesetiter,++resit) { // std::cerr << "With prime: " << *coprimesetiter << std::endl; ROUNDdomains.push_back( Domain(*coprimesetiter) ); // for(typename ElementContainer::iterator reselit = resit->begin(); // reselit != resit->end(); ++reselit) // ROUNDdomains.back().init( *reselit ); } #pragma omp parallel for for(size_t i=0;iIterCounter; this->Builder_.initialize( ROUNDdomains[0],ROUNDresidues[0]); for(size_t i=1;iIterCounter; this->Builder_.progress( ROUNDdomains[i],ROUNDresidues[i]); } // commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; } while( ! this->Builder_.terminated() ) { //std::cerr << "Computed: " << this->IterCounter << " primes." << std::endl; std::set coprimeset; while(coprimeset.size() < NN) { ++primeiter; while(this->Builder_.noncoprime(*primeiter) ) { ++primeiter; ++coprime; if (coprime > maxnoncoprime) { std::cout << "you are running out of primes. " << maxnoncoprime << " coprime primes found"; return this->Builder_.result(res); } } coprime =0; coprimeset.insert(*primeiter); } std::vector ROUNDdomains; ROUNDdomains.reserve(NN); std::vector ROUNDresidues(NN); typename std::vector::iterator resit=ROUNDresidues.begin(); for(std::set::const_iterator coprimesetiter = coprimeset.begin(); coprimesetiter != coprimeset.end(); ++coprimesetiter,++resit) { // std::cerr << "With prime: " << *coprimesetiter << std::endl; ROUNDdomains.push_back( Domain(*coprimesetiter) ); // for(typename ElementContainer::iterator reselit = resit->begin(); // reselit != resit->end(); ++reselit) // ROUNDdomains.back().init( *reselit ); } #pragma omp parallel for for(size_t i=0;iIterCounter; this->Builder_.progress( ROUNDdomains[i],ROUNDresidues[i]); } } // commentator().stop ("done", NULL, "mmcrait"); //std::cerr << "Used: " << this->IterCounter << " primes." << std::endl; return this->Builder_.result(res); } }; } #endif //__LINBOX_omp_cra_H // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/cra-domain-seq.h000066400000000000000000000235651274717217100214520ustar00rootroot00000000000000/* linbox/algorithms/cra-domain-seq.h * Copyright (C) 1999-2010 The LinBox group * * Time-stamp: <29 Jun 15 18:59:17 Jean-Guillaume.Dumas@imag.fr> * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file algorithms/cra-domain-seq.h * @brief Sequencial version of \ref CRA * @ingroup CRA */ #ifndef __LINBOX_sequential_cra_H #define __LINBOX_sequential_cra_H #include "linbox/linbox-config.h" #include "linbox/util/timer.h" #include "linbox/integer.h" #include "linbox/solutions/methods.h" #include "linbox/vector/blas-vector.h" #include #include #include "linbox/util/commentator.h" //$define _LB_CRATIMING namespace LinBox { template struct CRATemporaryVectorTrait { typedef BlasVector Type_t; }; /// No doc. /// @ingroup CRA template struct ChineseRemainderSeq { typedef typename CRABase::Domain Domain; typedef typename CRABase::DomainElement DomainElement; protected: CRABase Builder_; public: int IterCounter; template ChineseRemainderSeq(const Param& b) : Builder_(b) //! @bug test-cra-domain/clang++ emits a warning { IterCounter=0; } ChineseRemainderSeq(const CRABase& b) : Builder_(b) { IterCounter=0; } /** \brief The \ref CRA loop * * Given a function to generate residues \c mod a single prime, * this loop produces the residues resulting from the Chinese * remainder process on sufficiently many primes to meet the * termination condition. * * \param Iteration Function object of two arguments, \c * Iteration(r, F), given prime field \p F it outputs * residue(s) \p r. This loop may be parallelized. \p * Iteration must be reentrant, thread safe. For example, \p * Iteration may be returning the coefficients of the minimal * polynomial of a matrix \c mod \p F. * * @warning We won't detect bad primes. * * \param primeiter iterator for generating primes. * * \param[out] res an integer */ template Integer& operator() (Integer& res, Function& Iteration, PrimeIterator& primeiter) { commentator().start ("Givaro::Modular iteration", "mmcrait"); if (IterCounter==0) { ++IterCounter; Domain D(*primeiter); std::ostream& report = commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION); report << "With prime " << *primeiter << std::endl; //commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; ++primeiter; DomainElement r; D.init(r); Builder_.initialize( D, Iteration(r, D) ); } int coprime =0, nbprimes=0; int maxnoncoprime = 1000; while( ! Builder_.terminated() ) { ++IterCounter; while(Builder_.noncoprime(*primeiter) ) { ++primeiter; ++coprime; if (coprime > maxnoncoprime) { commentator().report(Commentator::LEVEL_ALWAYS,INTERNAL_ERROR) << "you are running out of primes. " << nbprimes << " used and " << maxnoncoprime << " coprime primes tried for a new one."; return Builder_.result(res); } } coprime =0; Domain D(*primeiter); commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; ++primeiter; ++nbprimes; DomainElement r; D.init(r); Builder_.progress( D, Iteration(r, D) ); } commentator().stop ("done", NULL, "mmcrait"); //std::cerr << "Used: " << IterCounter << " primes." << std::endl; return Builder_.result(res); } /* * progress for k>=0 iterations * run until terminated if k < 0 */ template bool operator() (const int k, Integer& res, Function& Iteration, PrimeIterator& primeiter) { int i=0; if ((IterCounter ==0) && (k !=0)) { ++i; ++IterCounter; Domain D(*primeiter); commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; ++primeiter; DomainElement r; D.init(r); Builder_.initialize( D, Iteration(r, D) ); } int coprime =0, nbprimes=0; int maxnoncoprime = 1000; while ((k <0) || (i < k)) { if (Builder_.terminated()) break; ++i; while(Builder_.noncoprime(*primeiter)) { ++primeiter; ++coprime; if (coprime > maxnoncoprime) { commentator().report(Commentator::LEVEL_ALWAYS,INTERNAL_ERROR) << "you are running out of primes. " << nbprimes << " used and " << maxnoncoprime << " coprime primes tried for a new one."; return true ;//term } } coprime =0; Domain D(*primeiter); commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; ++primeiter; ++nbprimes; DomainElement r; D.init(r); Builder_.progress( D, Iteration(r, D) ); } Builder_.result(res); if (Builder_.terminated() ) return true; else return false; } template Iterator& operator() (Iterator& res, Function& Iteration, PrimeIterator& primeiter) { commentator().start ("Givaro::Modular vectorized iteration", "mmcravit"); if (IterCounter==0) { Domain D(*primeiter); commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; ++primeiter; typename CRATemporaryVectorTrait::Type_t r(D); Builder_.initialize( D, Iteration(r, D) ); } int coprime =0, nbprimes=0; int maxnoncoprime = 1000; while( ! Builder_.terminated() ) { ++IterCounter; while(Builder_.noncoprime(*primeiter) ) { ++primeiter; ++coprime; if (coprime > maxnoncoprime) { commentator().report(Commentator::LEVEL_ALWAYS,INTERNAL_ERROR) << "you are running out of primes. " << nbprimes << " used and " << maxnoncoprime << " coprime primes tried for a new one."; return Builder_.result(res); } } coprime = 0; Domain D(*primeiter); commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; ++primeiter; ++nbprimes; typename CRATemporaryVectorTrait::Type_t r(D); Builder_.progress( D, Iteration(r, D) ); } commentator().stop ("done", NULL, "mmcravit"); return Builder_.result(res); } /* *progress for k iterations */ template bool operator() (const int k, Iterator& res, Function& Iteration, PrimeIterator& primeiter) { int i=0; if ((IterCounter ==0) && (k !=0)) { ++i; ++IterCounter; Domain D(*primeiter); commentator().report(Commentator::LEVEL_IMPORTANT, INTERNAL_DESCRIPTION) << "With prime " << *primeiter << std::endl; ++primeiter; typename CRATemporaryVectorTrait::Type_t r; Builder_.initialize( D, Iteration(r, D) ); } int coprime =0, nbprimes=0; int maxnoncoprime = 1000; while( (k <0 ) || (i < k)) { if (Builder_.terminated()) break; ++i; ++IterCounter; while(Builder_.noncoprime(*primeiter) ) { ++primeiter; ++coprime; if (coprime > maxnoncoprime) { commentator().report(Commentator::LEVEL_ALWAYS,INTERNAL_ERROR) << "you are running out of primes. " << nbprimes << " used and " << maxnoncoprime << " coprime primes tried for a new one."; return true;//term } } coprime =0; Domain D(*primeiter); ++primeiter; ++nbprimes; typename CRATemporaryVectorTrait::Type_t r; Builder_.progress( D, Iteration(r, D) ); } Builder_.result(res); if (Builder_.terminated()) return true; else return false; } template bool changeFactor(const Param& p) { return Builder_.changeFactor(p); } template Param& getFactor(Param& p) { return Builder_.getFactor(p); } bool changePreconditioner(const Integer& f, const Integer& m=Integer(1)) { return Builder_.changePreconditioner(f,m); } Integer& getModulus(Integer& m) { Builder_.getModulus(m); return m; } Integer& getResidue(Integer& m) { Builder_.getResidue(m); return m; } Integer& result(Integer& m) { Builder_.result(m); return m; } template class Vect, template class Alloc > Vect >& result(Vect >& m) { Builder_.result(m); return m; } #ifdef _LB_CRATIMING inline std::ostream& reportTimes(std::ostream& os) { os << "Iterations:" << IterCounter << "\n"; Builder_.reportTimes(os); return os; } #endif }; #ifdef _LB_CRATIMING class CRATimer { public: mutable Timer ttInit, ttIRecon, /* ttImaging, ttIteration,*/ ttOther; void clear() const { ttInit.clear(); ttIRecon.clear(); //ttImaging.clear(); //ttIteration.clear(); ttOther.clear(); } }; #endif } #undef _LB_CRATIMING #endif //__LINBOX_sequential_cra_H // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.4.2/linbox/algorithms/cra-domain.h000066400000000000000000000057201274717217100206550ustar00rootroot00000000000000/* linbox/algorithms/cra-domain.h * Copyright (C) 1999-2010 The LinBox group * * Selector for ChineseRemainder * Parallel versions are transparent to the user * Time-stamp: <30 Mar 10 15:11:42 Jean-Guillaume.Dumas@imag.fr> * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #ifndef __LINBOX_cra_domain_H #define __LINBOX_cra_domain_H /*! @file algorithms/cra-domain.h * @brief Wrapper around OMP/SEQ version of ChineseRemainder. * @ingroup algorithms * @ingroup CRA * * If LINBOX_USES_OPENMP is defined, the we use ChineseRemainderOMP, else * we fall back to ChineseRemainderSeq */ #include "linbox/integer.h" #ifdef LINBOX_USES_OPENMP #include "linbox/algorithms/cra-domain-omp.h" namespace LinBox { /*! @brief Wrapper around OMP/SEQ version of ChineseRemainderXXX. * \ingroup CRA * * If LINBOX_USES_OPENMP is defined, the we use ChineseRemainderOMP, else * we fall back to ChineseRemainderSeq * * This is the OMP version */ template struct ChineseRemainder : public ChineseRemainderOMP { typedef typename CRABase::Domain Domain; typedef typename CRABase::DomainElement DomainElement; template ChineseRemainder(const Param& b) : ChineseRemainderOMP(b) {} ChineseRemainder(const CRABase& b) : ChineseRemainderOMP(b) {} }; } #else #include "linbox/algorithms/cra-domain-seq.h" namespace LinBox { /*! @brief Wrapper around OMP/SEQ version of ChineseRemainderXXX. * \ingroup CRA * * If LINBOX_USES_OPENMP is defined, the we use ChineseRemainderOMP, else * we fall back to ChineseRemainderSeq * * This is the SEQ version */ template struct ChineseRemainder : public ChineseRemainderSeq { typedef typename CRABase::Domain Domain; typedef typename CRABase::DomainElement DomainElement; template ChineseRemainder(const Param& b) : ChineseRemainderSeq(b) {} ChineseRemainder(const CRABase& b) : ChineseRemainderSeq(b) {} }; } #endif #endif // vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,:0,t0,+0,=s // Local Variables: // mode: C++ // tab-width: 8 // indent-tabs-mode: nil // c-basic-offset: 8 // End: linbox-1.4.2/linbox/algorithms/cra-early-multip.h000066400000000000000000000233401274717217100220300ustar00rootroot00000000000000/* Copyright (C) 2007 LinBox * Written by JG Dumas * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file algorithms/cra-early-multip.h * @ingroup algorithms * @brief NO DOC */ #ifndef __LINBOX_cra_early_multip_H #define __LINBOX_cra_early_multip_H #include "linbox/util/timer.h" #include #include "linbox/integer.h" #include "linbox/solutions/methods.h" #include #include #include "linbox/algorithms/cra-early-single.h" #include "linbox/algorithms/cra-full-multip.h" namespace LinBox { /*! @brief NO DOC * @ingroup CRA * */ template struct EarlyMultipCRA : public EarlySingleCRA, public FullMultipCRA { typedef Domain_Type Domain; typedef typename Domain::Element DomainElement; typedef EarlyMultipCRA Self_t; protected: // Random coefficients for a linear combination // of the elements to be reconstructed std::vector< unsigned long > randv; Integer& result(Integer &d) { std::cout << "should not be called" << std::endl; return d ;} ; // DON'T TOUCH public: EarlyMultipCRA(const unsigned long EARLY=DEFAULT_EARLY_TERM_THRESHOLD) : EarlySingleCRA(EARLY), FullMultipCRA() {} Integer& getModulus(Integer& m) { EarlySingleCRA::getModulus(m); return m; } Integer& getResidue(Integer& m) { EarlySingleCRA::getResidue(m); return m; } template class Vect> Vect& getResidue(Vect& m) { FullMultipCRA::getResidue(m); return m; } //! Init template class Vect> void initialize (const Integer& D, const Vect& e) { srand48(BaseTimer::seed()); randv. resize ( e.size() ); for ( std::vector::iterator int_p = randv. begin(); int_p != randv. end(); ++ int_p) *int_p = ((unsigned long)lrand48()) % 20000; Integer z; dot(z, D, e, randv); EarlySingleCRA::initialize(D, z); FullMultipCRA::initialize(D, e); } template