gp2c-0.0.12/0000755000175000017500000000000013751742702007436 500000000000000gp2c-0.0.12/Makefile.am0000644000175000017500000000050313623476440011411 00000000000000SUBDIRS = src desc scripts doc test test2 test3 test4 EXTRA_DIST = BUGS gp2c gp2c-run gp2c-dbg TESTS = scripts/runtest dist-hook: test -d $(distdir)/config || mkdir $(distdir)/config for i in $(srcdir)/config/*; do \ test -f $$i && $(INSTALL_SCRIPT) $$i $(distdir)/config; done checkspaces: config/checkspaces gp2c-0.0.12/COPYING0000644000175000017500000004325413614057635010423 00000000000000 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. gp2c-0.0.12/gp2c-run0000755000175000017500000000042613623476440010744 00000000000000#! /bin/sh #This file is part of the GP2C package # #This stupid shell script is Public Domain. # if test ! -f scripts/gp2c-run; then cat <&2 Package has not been configured. Please type ./configure to configure it. EOF exit 1; fi GP2C=./gp2c exec scripts/gp2c-run "$@" gp2c-0.0.12/aclocal.m40000644000175000017500000013010213751742673011222 00000000000000# generated automatically by aclocal 1.16.1 -*- Autoconf -*- # Copyright (C) 1996-2018 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. Try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Copyright (C) 1998-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_LEX # ----------- # Autoconf leaves LEX=: if lex or flex can't be found. Change that to a # "missing" invocation, for better error output. AC_DEFUN([AM_PROG_LEX], [AC_PREREQ([2.50])dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # -*- Autoconf -*- # Obsolete and "removed" macros, that must however still report explicit # error messages when used, to smooth transition. # # Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl AC_CONFIG_HEADERS($@)]) AC_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should simply use the 'AC][_PROG_CC' macro instead. Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon 'ac_cv_prog_cc_stdc'.])]) AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR gp2c-0.0.12/desc/0000755000175000017500000000000013751742701010353 500000000000000gp2c-0.0.12/desc/Makefile.am0000644000175000017500000000126113743645740012335 00000000000000pkgdata_DATA = func.dsc EXTRA_DIST = $(COMPAT_DESC) $(OVERRIDE_DESC) $(FUNC2X_DSC) CLEANFILES = func.dsc COMPILE_DESC = ../scripts/822_desc.pl PARI_DESC = @PARI_DESC@ FUNC2X_DSC = $(srcdir)/func23.dsc $(srcdir)/func25.dsc $(srcdir)/func27.dsc $(srcdir)/func29.dsc $(srcdir)/func211.dsc $(srcdir)/func213.dsc COMPAT_DESC = $(srcdir)/compat.desc OVERRIDE_DESC = $(srcdir)/override.desc func.dsc: $(COMPILE_DESC) $(PARI_DESC) $(COMPAT_DESC) $(OVERRIDE_DESC) @$(COMPILE_DESC) $(PARI_DESC) $(COMPAT_DESC) $(OVERRIDE_DESC) >func.dsc\ && echo "Description recompiled" \ || ( cp $(srcdir)/func213.dsc func.dsc && echo "Using PARI 2.13 description" ) $(OVERRIDE_DESC): touch $(OVERRIDE_DESC) gp2c-0.0.12/desc/func29.dsc0000644000175000017500000025400313006430517012070 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_get_histtime D0,L, 1 small +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 9 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen Fp_neg(${1 code}, p) 1 Fp 1 Fp FpX_neg(${1 code}, p) 1 FpX 1 FpX Fq_neg(${1 code}, T, p) 1 Fq 1 Fq FqX_neg(${1 code}, T, p) 1 FqX 1 FqX 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(${prec}) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(${prec}) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 mklist() 0 1 list gtolist(${1 code}) 1 gen 1 list 1 gtolist DG 1 gen Map 1 1 gtomap DG 1 gen Mat 2 0 2 cgetg(1, t_MAT) 0 1 vec gtomat(${1 code}) 1 gen 1 vec 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(${prec}) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 gtoser GDnDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 9 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen FpX_rem(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX FqX_rem(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 2 0 3 deriv(${1 code},-1) 1 gen 1 gen FpX_deriv(${1 code}, p) 1 FpX 1 FpX FqX_deriv(${1 code}, T, p) 1 FqX 1 FqX 1 deriv GDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 34 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_mulu(${2 code}, ${1 code}, p) 2 usmall Fp 1 Fp Fp_muls(${2 code}, ${1 code}, p) 2 small Fp 1 Fp Fp_mulu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_muls(${1 code}, ${2 code}, p) 2 Fp small 1 Fp FpX_mulu(${2 code}, ${1 code}, p) 2 usmall FpX 1 FpX FpX_mulu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX FpX_Fp_mul(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_Fp_mul(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_mul(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_mulu(${2 code}, ${1 code}, T, p) 2 usmall Fq 1 Fq Fq_mulu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_Fp_mul(${1 code}, ${2 code}, T, p) 2 Fq Fp 1 Fq Fq_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp Fq 1 Fq FqX_mulu(${2 code}, ${1 code}, T, p) 2 usmall FqX 1 FqX FqX_mulu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX FqX_Fp_mul(${1 code}, ${2 code}, T, p) 2 FqX Fp 1 FqX FqX_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp FqX 1 FqX FqX_Fq_mul(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_Fq_mul(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_mul(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 24 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_add(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp FpX_Fp_add(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_Fp_add(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_add(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_add(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_add(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_Fq_add(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_add(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 20 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_sub(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fp_FpX_sub(${1 code}, ${2 code}, p) 2 Fp FpX 1 FpX FpX_Fp_sub(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_sub(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_sub(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_sub(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.futu 1 1 member_futu G 2 gen copy _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vec copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vec copy member_group(${1 code}) 1 gen 2 vec copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 2 gen copy _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 16 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_halve(${1 code}, p) 2 Fp 2 1 Fp Fp_div(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fq_halve(${1 code}, T, p) 2 Fq 2 1 Fq Fq_div(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _ZX_resultant_worker 1 1 ZX_resultant_worker GGGG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 30 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, ${prec}) 2 gen gen 2 gen prec Fp_sqr(${1 code}, p) 2 Fp 2 1 Fp Fp_powu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_pows(${1 code}, ${2 code}, p) 2 Fp small 1 Fp Fp_pow(${1 code}, ${2 code}, p) 2 Fp int 1 Fp FpX_sqr(${1 code}, p) 2 FpX 2 1 FpX FpX_powu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq FqX_sqr(${1 code}, T, p) 2 FqX 2 1 FqX FqX_powu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 gconcat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 13 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 gal parens _cast 1 0 109 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 usmall 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 usmall 1 typ 1 usmall 1 small 1 usmall 1 bool 1 small 1 typ 1 small 1 small_int 1 small 1 usmall 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small itou(${1 code}) 1 int 1 usmall ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gtou(${1 code}) 1 gen 1 usmall gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int utoi(${1 code}) 1 usmall 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid 1 Fp 1 Fq _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, ${prec}) 1 str 2 real prec _const_smallreal 1 0 4 real_0(${prec}) 1 0 2 real prec real_1(${prec}) 1 1 2 real prec real_m1(${prec}) 1 -1 2 real prec stor(${1 code}, ${prec}) 1 small 2 real prec _decl_base 1 0 13 void 1 C!void 0 long 1 C!long 0 ulong 1 C!ulong 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forvec_t 1 C!forvec_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGp 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 5 ${1 code} 1 #small 1 void %ld 1 small 1 small ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gc_needed 1 0 1 gc_needed(${1 code}, 1) 1 pari_sp 1 bool _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _ndec2nbits 1 0 1 ndec2nbits(${1 code}) 1 small 1 small _ndec2prec 1 0 1 ndec2prec(${1 code}) 1 small 1 small _norange 1 0 1 LONG_MAX 0 1 small _parapply_worker 1 1 parapply_worker GG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_worker 1 1 parfor_worker GG 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _polint_worker 1 1 nmV_polint_center_tree_worker GGGGG 1 gen _polmodular_worker 1 1 polmodular_worker UUUGGGGLGG 1 gen _proto_code 1 0 5 n 1 var 0 L 1 C!long 0 U 1 C!ulong 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 5 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 u 1 C!ulong 0 1 C!GEN 0 _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _tovec 1 0 7 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 gen gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 6 mkvecs(${prec}) 0 2 vec prec mkvec2(${1 code}, stoi(${prec})) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(${prec})) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(${prec})) 3 gen gen gen 2 vec prec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, stoi(${prec})) 4 gen gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(${prec})) 2 gen ... 2 vec prec _type_preorder 1 0 22 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty bool usmall small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 4 empty Fp Fq gen 0 4 empty FpX FqX gen 0 _typedef 1 0 41 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 ulong 1 usmall 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forprime_t 1 forprime 0 forvec_t 1 forvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 GEN 1 Fp 0 GEN 1 FpX 0 GEN 1 Fq 0 GEN 1 FqX 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_GG 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call2 GG 1 gen _wrap_Gp 2 0 1 ${1 code} 1 gen 1 gen 1 gp_callprec Gp 2 gen prec _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, ${prec}) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algabsdim 1 1 algabsdim G 1 small algadd 1 1 algadd GGG 1 gen algalgtobasis 1 1 algalgtobasis GG 1 gen algaut 1 1 algaut G 2 gen copy algb 1 1 algb G 2 gen copy algbasis 1 1 algbasis G 2 gen copy algbasistoalg 1 1 algbasistoalg GG 1 gen algcenter 1 1 algcenter G 2 gen copy algcentralproj 1 1 alg_centralproj GGD0,L, 1 gen algchar 1 1 algchar G 2 gen copy algcharpoly 1 1 algcharpoly GGDn 1 gen algdecomposition 1 1 alg_decomposition G 1 gen algdegree 1 1 algdegree G 1 small algdep 1 1 algdep0 GLD0,L, 1 gen algdim 1 1 algdim G 1 small algdisc 1 1 algdisc G 1 gen algdivl 1 1 algdivl GGG 1 gen algdivr 1 1 algdivr GGG 1 gen alggroup 1 1 alggroup GDG 1 gen alghasse 1 1 alghasse GG 1 gen alghassef 1 1 alghassef G 2 gen copy alghassei 1 1 alghassei G 2 gen copy algindex 1 1 algindex GDG 1 small alginit 1 1 alginit GGDnD1,L, 1 gen alginv 1 1 alginv GG 1 gen alginvbasis 1 1 alginvbasis G 2 gen copy algisassociative 1 1 algisassociative GD0,G, 1 small_int algiscommutative 1 1 algiscommutative G 1 small_int algisdivision 1 1 algisdivision GDG 1 small_int algisdivl 1 1 algisdivl GGGD& 1 small_int algisinv 1 1 algisinv GGD& 1 small_int algisramified 1 1 algisramified GDG 1 small_int algissemisimple 1 1 algissemisimple G 1 small_int algissimple 1 1 algissimple GD0,L, 1 small_int algissplit 1 1 algissplit GDG 1 small_int alglathnf 1 1 alglathnf GG 1 gen algleftmultable 1 1 algleftmultable GG 1 gen algmul 1 1 algmul GGG 1 gen algmultable 1 1 algmultable G 2 gen copy algneg 1 1 algneg GG 1 gen algnorm 1 1 algnorm GG 1 gen algpoleval 1 1 algpoleval GGG 1 gen algpow 1 1 algpow GGG 1 gen algprimesubalg 1 1 algprimesubalg G 1 gen algquotient 1 1 alg_quotient GGD0,L, 1 gen algradical 1 1 algradical G 1 gen algramifiedplaces 1 1 algramifiedplaces G 1 gen algrandom 1 1 algrandom GG 1 gen algrelmultable 1 1 algrelmultable G 2 gen copy algsimpledec 1 1 algsimpledec GD0,L, 1 gen algsplittingdata 1 1 algsplittingdata G 2 gen copy algsplittingfield 1 1 algsplittingfield G 2 gen copy algsplittingmatrix 1 1 algsplittingmatrix GG 1 gen algsqr 1 1 algsqr GG 1 gen algsub 1 1 algsub GGG 1 gen algsubalg 1 1 algsubalg GG 1 gen algtableinit 1 1 algtableinit GDG 1 gen algtensor 1 1 algtensor GGD1,L, 1 gen algtrace 1 1 algtrace GG 1 gen algtype 1 1 algtype G 1 small alias 1 1 alias0 rr 1 void allocatemem 1 1 gp_allocatemem DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec asympnum 1 1 asympnum0 GD0,L,DGp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial GL 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bitprecision 1 1 bitprecision0 GD0,L, 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfcompress 1 1 bnfcompress G 1 gen bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, ${prec}) 1 gen 2 bnf prec Buchall(${1 code}, 0, ${prec}) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, ${prec}) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, ${prec}) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit GG 1 gen bnflog 1 1 bnflog GG 1 gen bnflogdegree 1 1 bnflogdegree GGG 1 gen bnflogef 1 1 bnflogef GG 1 gen bnfnarrow 1 1 buchnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrchar 1 1 bnrchar GGDG 1 gen bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrgaloisapply 1 1 bnrgaloisapply GGG 1 gen bnrgaloismatrix 1 1 bnrgaloismatrix GG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisgalois 1 1 bnrisgalois GGG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void call 1 1 call0 GG 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charconj 1 1 charconj0 GG 1 gen chardiv 1 1 chardiv0 GGG 1 gen chareval 1 1 chareval GGGDG 1 gen charker 1 1 charker0 GG 1 gen charmul 1 1 charmul0 GGG 1 gen charorder 1 1 charorder0 GG 1 gen charpoly 1 1 charpoly0 GDnD5,L, 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 11 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 list 1 list gclone(${1 code}) 1 closure 1 closure gclone(${1 code}) 1 genstr 1 genstr gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 10 gconcat(${1 code}, ${2 code}) 2 mp mp 1 vec gconcat(${1 code}, ${2 code}) 2 vec mp 1 vec gconcat(${1 code}, ${2 code}) 2 mp vec 1 vec gconcat(${1 code}, ${2 code}) 2 vec vec 1 vec gconcat(${1 code}, ${2 code}) 2 list list 1 list gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat1(${1 code}) 1 gen 1 gen gconcat1(${1 code}) 2 gen 1 gen gconcat(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gconcat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content G 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfraceval 1 1 contfraceval GGD-1,L, 1 gen contfracinit 1 1 contfracinit GD-1,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 8 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gcosh Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec cotanh 1 1 gcotanh Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &${prec}) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denom G 1 gen deriv 1 1 deriv GDn 1 gen derivnum 3 0 1 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 derivnum0 V=GEp 2 gen prec 2 2 _wrap_Gp diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 1 divisors(${1 code}) 1 gen 1 vec 1 divisors G 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellL1 1 1 ellL1_bitprec GD0,L,b 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 ellan GL 1 gen ellanalyticrank 1 1 ellanalyticrank_bitprec GDGb 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellformaldifferential 1 1 ellformaldifferential GDPDn 1 gen ellformalexp 1 1 ellformalexp GDPDn 1 gen ellformallog 1 1 ellformallog GDPDn 1 gen ellformalpoint 1 1 ellformalpoint GDPDn 1 gen ellformalw 1 1 ellformalw GDPDn 1 gen ellfromeqn 1 1 ellfromeqn G 1 gen ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GGDGp 2 gen prec ellheightmatrix 1 1 ellheightmatrix GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, ${prec}) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellintegralmodel 1 1 ellintegralmodel GD& 1 gen ellisdivisible 1 1 ellisdivisible GGGD& 1 small ellisogeny 1 1 ellisogeny GGD0,L,DnDn 1 gen ellisogenyapply 1 1 ellisogenyapply GG 1 gen ellisomat 1 1 ellisomat GD0,L, 1 gen ellisoncurve 1 1 ellisoncurve GG 1 gen ellissupersingular 1 1 ellissupersingular GDG 1 small_int ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellminimaltwist 1 1 ellminimaltwist0 GD0,L, 1 gen ellmoddegree 1 1 ellmoddegree Gb 2 gen prec ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellnonsingularmultiple 1 1 ellnonsingularmultiple GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpadicL 1 1 ellpadicL GGLDGD0,L,DG 1 gen ellpadicfrobenius 1 1 ellpadicfrobenius GLL 1 gen ellpadicheight 1 1 ellpadicheight0 GGLGDG 1 gen ellpadicheightmatrix 1 1 ellpadicheightmatrix GGLG 1 gen ellpadiclog 1 1 ellpadiclog GGLG 1 gen ellpadics2 1 1 ellpadics2 GGL 1 gen ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsea 1 1 ellsea GD0,U, 1 gen ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors G 1 gen elltwist 1 1 elltwist GDG 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellxn 1 1 ellxn GLDn 1 gen ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, ${prec}) 1 mp 2 mp prec gexp(${1 code}, ${prec}) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec extern 1 1 gpextern s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 3 Z_factor(${1 code}) 2 int ?-1 1 vec factor(${1 code}) 2 gen ?-1 1 vec factor0(${1 code}, ${2 code}) 2 gen small 1 vec 1 gp_factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factcantor GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GGD0,L, 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic GGL 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen fflog 1 1 fflog GGDG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fibonacci 1 1 fibo L 1 gen floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen fold 3 0 1 genfold(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 fold0 GG 1 gen 2 1 _wrap_GG for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}) 5 small small closure ?small 1 void 1 forell0 VLLID0,L, 1 void 2 5 _wrap_vG forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forprime 2 1 forprime V=GDGI 1 void 3 4 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forqfvec 1 1 forqfvec0 VGDGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen fromdigits 1 1 fromdigits GDG 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gammamellininv 1 1 gammamellininv GGD0,L,b 2 gen prec gammamellininvasymp 1 1 gammamellininvasymp GDPD0,L, 1 gen gammamellininvinit 1 1 gammamellininvinit GD0,L,b 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen genus2red 1 1 genus2red GDG 1 gen getabstime 1 1 getabstime 1 small getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small getwalltime 1 1 getwalltime 1 gen global 0 hammingweight 1 1 hammingweight G 1 small hilbert 1 1 hilbert GGDG 1 small hyperellcharpoly 1 1 hyperellcharpoly G 1 gen hyperellpadicfrobenius 1 1 hyperellpadicfrobenius GUL 1 gen hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGDG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 idealfactor GG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog DGGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 2 0 2 idealprimedec(${1 code}, ${2 code}) 2 gen gen 1 vec idealprimedec_limit_f(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 vec 1 idealprimedec_limit_f GGD0,L, 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealstar 1 1 idealstar0 DGGD1,L, 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 gpidealval GGG 1 gen if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 gp_input 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgauss 3 0 1 intnumgauss(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnumgauss0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgaussinit 1 1 intnumgaussinit D0,L,p 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnumromb 3 0 1 intnumromb(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${bitprec}) 4 gen gen gen ?small 2 gen prec 1 intnumromb0_bitprec V=GGED0,L,b 2 gen prec 2 3 _wrap_G isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 2 isprime(${1 code}) 2 int ?0 1 bool gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gispseudoprime GD0,L, 1 gen ispseudoprimepower 1 1 ispseudoprimepower GD& 1 small issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquareall(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW Gp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lfun 2 0 3 lfun(${1 code}, ${2 code}, ${bitprec}) 2 gen gen 2 gen prec lfun(${1 code}, ${2 code}, ${bitprec}) 3 gen gen ?0 2 gen prec lfun0(${1 code}, ${2 code}, ${3 code}, ${bitprec}) 3 gen gen small 2 gen prec 1 lfun0 GGD0,L,b 2 gen prec lfunabelianrelinit 1 1 lfunabelianrelinit GGGGD0,L,b 2 gen prec lfunan 1 1 lfunan GLp 2 gen prec lfunartin 1 1 lfunartin GGGL 1 gen lfuncheckfeq 1 1 lfuncheckfeq GDGb 2 small prec lfunconductor 1 1 lfunconductor GDGD0,L,b 2 gen prec lfuncost 1 1 lfuncost0 GDGD0,L,b 2 gen prec lfuncreate 1 1 lfuncreate G 1 gen lfundiv 1 1 lfundiv GGb 2 gen prec lfunetaquo 1 1 lfunetaquo G 1 gen lfungenus2 1 1 lfungenus2 G 1 gen lfunhardy 1 1 lfunhardy GGb 2 gen prec lfuninit 1 1 lfuninit0 GGD0,L,b 2 gen prec lfunlambda 1 1 lfunlambda0 GGD0,L,b 2 gen prec lfunmfspec 1 1 lfunmfspec Gb 2 gen prec lfunmul 1 1 lfunmul GGb 2 gen prec lfunorderzero 1 1 lfunorderzero GD-1,L,b 2 small prec lfunqf 1 1 lfunqf Gp 2 gen prec lfunrootres 1 1 lfunrootres Gb 2 gen prec lfuntheta 1 1 lfuntheta GGD0,L,b 2 gen prec lfunthetacost 1 1 lfunthetacost0 GDGD0,L,b 2 small prec lfunthetainit 1 1 lfunthetainit GDGD0,L,b 2 gen prec lfunzeros 1 1 lfunzeros GGD8,L,b 2 gen prec lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen limitnum 1 1 limitnum0 GD0,L,DGp 2 gen prec lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 mklist() 1 ?gen 1 list 1 listcreate_gp D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill G 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop0 WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput0 WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 localbitprec 1 1 localbitprec L 1 void localprec 1 1 localprec L 1 void log 2 0 1 glog(${1 code}, ${prec}) 1 gen 2 gen prec 1 glog Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small mapdelete 1 1 mapdelete GG 1 void mapget 1 1 mapget GG 1 gen mapisdefined 1 1 mapisdefined GGD& 1 small_int mapput 1 1 mapput WGG 1 void matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec keri(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matrix 1 1 matrice GGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod0 GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small msatkinlehner 1 1 msatkinlehner GLDG 1 gen mscuspidal 1 1 mscuspidal GD0,L, 1 gen mseisenstein 1 1 mseisenstein G 1 gen mseval 1 1 mseval GGDG 1 gen msfromcusp 1 1 msfromcusp GG 1 gen msfromell 1 1 msfromell GD0,L, 1 gen msfromhecke 1 1 msfromhecke GGDG 1 gen msgetlevel 1 1 msgetlevel G 1 small msgetsign 1 1 msgetsign G 1 small msgetweight 1 1 msgetweight G 1 small mshecke 1 1 mshecke GLDG 1 gen msinit 1 1 msinit GGD0,L, 1 gen msissymbol 1 1 msissymbol GG 1 small msnew 1 1 msnew G 1 gen msomseval 1 1 msomseval GGG 1 gen mspadicL 1 1 mspadicL GDGD0,L, 1 gen mspadicinit 1 1 mspadicinit GLLD-1,L, 1 gen mspadicmoments 1 1 mspadicmoments GGD1,L, 1 gen mspadicseries 1 1 mspadicseries GD0,L, 1 gen mspathgens 1 1 mspathgens G 1 gen mspathlog 1 1 mspathlog GG 1 gen msqexpansion 1 1 msqexpansion GGDP 1 gen mssplit 1 1 mssplit GGD0,L, 1 gen msstar 1 1 msstar GDG 1 gen mstooms 1 1 mstooms GG 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis_gp G 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfcompositum 1 1 nfcompositum GGGD0,L, 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc G 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 gpnfvalrem GGGD& 1 gen nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfgrunwaldwang 1 1 nfgrunwaldwang GGGGDn 1 gen nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf0 GGD0,L, 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, ${prec}) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, ${prec}) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, ${prec}) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, ${prec}) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, ${prec}) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, ${prec}) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, ${prec}) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfislocalpower 1 1 nfislocalpower GGGG 1 small nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodpr 1 1 nfmodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfmodprlift 1 1 nfmodprlift GGG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsnf0 GGD0,L, 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsplitting 1 1 nfsplitting GDG 1 gen nfsubfields 1 1 nfsubfields GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 1 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numer G 1 gen numtoperm 1 1 numtoperm LG 1 gen omega 1 1 omega G 1 small oo 2 0 0 1 mkoo 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 gppadicprec GG 1 gen parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 2 0 1 parfor(${1 code}, ${2 code}, ${3 code}, NULL, NULL) 3 gen gen closure 1 void 1 parfor0 V=GDGJDVDI 1 void parforprime 2 0 1 parforprime(${1 code}, ${2 code}, ${3 code}, NULL, NULL) 3 gen gen closure 1 void 1 parforprime0 V=GDGJDVDI 1 void parforvec 2 0 1 parforvec(${1 code}, ${2 code}, ${5 code}, NULL, NULL) 5 gen closure ?small 1 void 1 parforvec0 V=GJDVDID0,L, 1 void parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 parsum V=GGJDG 1 gen partitions 1 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permtonum 1 1 permtonum G 1 gen plot 1 1 pariplot V=GGEDGDGp 2 void prec plotbox 1 1 rectbox LGG 1 void plotclip 1 1 rectclip L 1 void plotcolor 1 1 rectcolor LL 1 void plotcopy 1 1 rectcopy_gen LLGGD0,L, 1 void plotcursor 1 1 rectcursor L 1 gen plotdraw 1 1 rectdraw_flag GD0,L, 1 void ploth 1 1 ploth V=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plothraw 1 1 plothraw GGD0,L, 1 gen plothsizes 1 1 plothsizes_flag D0,L, 1 gen plotinit 1 1 initrect_gen LDGDGD0,L, 1 void plotkill 1 1 killrect L 1 void plotlines 1 1 rectlines LGGD0,L, 1 void plotlinetype 1 1 rectlinetype LL 1 void plotmove 1 1 rectmove LGG 1 void plotpoints 1 1 rectpoints LGG 1 void plotpointsize 1 1 rectpointsize LG 1 void plotpointtype 1 1 rectpointtype LL 1 void plotrbox 1 1 rectrbox LGG 1 void plotrecth 1 1 rectploth LV=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plotrecthraw 1 1 rectplothraw LGD0,L, 1 gen plotrline 1 1 rectrline LGG 1 void plotrmove 1 1 rectrmove LGG 1 void plotrpoint 1 1 rectrpoint LGG 1 void plotscale 1 1 rectscale LGGGG 1 void plotstring 1 1 rectstring3 LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polclass 1 1 polclass GD0,L,Dn 1 gen polcoeff 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 1 1 gppoldegree GDn 1 gen poldisc 2 0 2 poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval LDG 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 isirreducible G 1 small pollead 2 0 3 leading_coeff(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval LDG 1 gen polmodular 1 1 polmodular LD0,L,DGDnD0,L, 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 1 1 roots Gp 2 gen prec polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 2 0 4 rootmod(${1 code}, ${2 code}) 3 pol int ?0 1 vec rootmod2(${1 code}, ${2 code}) 3 pol int 1 1 vec $"Bad flag in polrootsmod" 3 pol int #small 1 vec rootmod0(${1 code}, ${2 code}, ${3 code}) 3 pol int small 1 vec 1 rootmod0 GGD0,L, 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polrootsreal 1 1 realroots GDGp 2 gen prec polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen powers 2 0 1 gpowers(${1 code}, ${2 code}) 2 gen small 1 vec 1 gpowers0 GLDG 1 gen precision 2 0 9 prec2ndec(gprecision(${1 code})) 1 real 1 small precision0(${1 code}, 0) 1 gen 1 int prec2ndec(gprecision(${1 code})) 2 real 0 1 small precision0(${1 code}, 0) 2 gen 0 1 int rtor(${1 code}, ndec2prec(${2 code})) 2 real #small 1 real gprec(${1 code}, ${2 code}) 2 gen #small 1 gen precision0(${1 code}, ${2 code}) 2 real small 1 real precision0(${1 code}, ${2 code}) 2 mp small 1 mp precision0(${1 code}, ${2 code}) 2 gen small 1 gen 1 precision0 GD0,L, 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodinf 3 0 1 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?small 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G psdraw 1 1 postdraw_flag GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 postploth V=GGEpD0,L,D0,L, 2 gen prec psplothraw 1 1 postplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GGDG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbredsl2 1 1 qfbredsl2 GDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfeval 1 1 qfeval0 DGGDG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDG 1 gen qfisominit 1 1 qfisominit0 GDGDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfnorm 1 1 qfnorm GDG 1 gen qforbits 1 1 qforbits GG 1 gen qfparam 1 1 qfparam GGD0,L, 1 gen qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen qfsolve 1 1 qfsolve G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen G 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit G 1 gen quit 1 1 gp_quit D0,L, 1 void ramanujantau 1 1 ramanujantau G 1 gen random 2 0 2 genrand(${1 code}) 1 ?int 1 int genrand(${1 code}) 1 gen 1 gen 1 genrand DG 1 gen randomprime 1 1 randomprime DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 gp_read_file D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GG 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown0 GGD0,L, 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup0 GGD0,L, 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealfactor 1 1 rnfidealfactor GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealprimedec 1 1 rnfidealprimedec GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs0 GGD0,L, 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup0 GGD0,L, 1 gen rnfinit 1 1 rnfinit0 GGD0,L, 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfislocalcyclo 1 1 rnfislocalcyclo G 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 vecsmall 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG self 1 1 pari_self 2 gen copy seralgdep 1 1 seralgdep GLL 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serprec 1 1 gpserprec Gn 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinc 1 1 gsinc Gp 2 gen prec sinh 1 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${prec}) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G solvestep 3 0 1 solvestep(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${prec}) 5 gen gen gen gen ?0$ 2 gen prec 1 solvestep0 V=GGGED0,L,p 2 gen prec 2 4 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits0 GDG 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 1 1 sumdivmultexpr GVE 1 gen sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 suminf0 V=GEp 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnum0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnuminit 1 1 sumnuminit DGp 2 gen prec sumnummonien 3 0 1 sumnummonien(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnummonien0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnummonieninit 1 1 sumnummonieninit DGDGDGp 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 gpsystem s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teichmuller GDG 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gpvaluation GG 1 gen varhigher 1 1 varhigher sDn 1 gen variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen variables 1 1 variables_vec DG 1 gen varlower 1 1 varlower sDn 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, 0) 2 vecsmall ?gen 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen small 1 vecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetamult 1 1 zetamult Gp 2 gen prec zncharinduce 1 1 zncharinduce GGG 1 gen zncharisodd 1 1 zncharisodd GG 1 small znchartokronecker 1 1 znchartokronecker GGD0,L, 1 gen znconreychar 1 1 znconreychar GG 1 gen znconreyconductor 1 1 znconreyconductor GGD& 1 gen znconreyexp 1 1 znconreyexp GG 1 gen znconreylog 1 1 znconreylog GG 1 gen zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog0 GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar0 GD0,L, 1 gen gp2c-0.0.12/desc/func23.dsc0000644000175000017500000016400612163255111012063 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 5 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen 1 gneg G 1 gen Col 2 0 2 cgetg(1,t_COL) 0 1 vec gtocol(${1 code}) 1 gen 1 vec 1 gtocol DG 1 gen Euler 2 0 1 mpeuler(prec) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 1 gi 0 1 gen 1 geni 1 gen List 2 0 1 gtolist(${1 code}) 1 ?gen 1 list 1 gtolist DG 1 gen Mat 1 1 gtomat DG 1 gen Mod 2 0 6 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulss(${1 code}, ${2 code}) 3 small small #small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulsg(${1 code}, ${2 code}) 3 small gen #small 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen gmodulo(${1 code}, ${2 code}) 3 gen gen #small 1 gen 1 Mod0 GGD0,L, 1 gen O 0 O(_^_) 1 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen Pi 2 0 1 mppi(prec) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 gtoser GDn 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 1 ${1 :genstr cast} 1 gen 3 genstr copy parens 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 2 cgetg(1,t_VEC) 0 1 vec gtovec(${1 code}) 1 gen 1 vec 1 gtovec DG 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall DG 1 gen _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 15 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 1 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _%_ 2 0 7 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmod GG 1 gen _&&_ 1 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens _' 2 0 1 deriv(${1 code},-1) 1 gen 1 gen 1 deriv GDn 1 gen _*=_ 1 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _*_ 2 0 14 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmul GG 1 gen _++ 1 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens _+=_ 1 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _+_ 2 0 16 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gadd GG 1 gen _-- 1 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens _-=_ 1 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _-_ 2 0 14 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gsub GG 1 gen _.a1 2 0 1 gel(${1 code}, 1) 1 ell 2 gen copy 1 member_a1 G 1 gen _.a2 2 0 1 gel(${1 code}, 2) 1 ell 2 gen copy 1 member_a2 G 1 gen _.a3 2 0 1 gel(${1 code}, 3) 1 ell 2 gen copy 1 member_a3 G 1 gen _.a4 2 0 1 gel(${1 code}, 4) 1 ell 2 gen copy 1 member_a4 G 1 gen _.a6 2 0 1 gel(${1 code}, 5) 1 ell 2 gen copy 1 member_a6 G 1 gen _.area 2 0 1 gel(${1 code}, 19) 1 bell 2 gen copy 1 member_area G 1 gen _.b2 2 0 1 gel(${1 code}, 6) 1 ell 2 gen copy 1 member_b2 G 1 gen _.b4 2 0 1 gel(${1 code}, 7) 1 ell 2 gen copy 1 member_b4 G 1 gen _.b6 2 0 1 gel(${1 code}, 8) 1 ell 2 gen copy 1 member_b6 G 1 gen _.b8 2 0 1 gel(${1 code}, 9) 1 ell 2 gen copy 1 member_b8 G 1 gen _.bid 2 0 1 member_bid(${1 code}) 1 gen 1 gen 1 member_bid G 1 gen _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 1 bnf 1 member_bnf G 1 gen _.c4 2 0 1 gel(${1 code}, 10) 1 ell 2 gen copy 1 member_c4 G 1 gen _.c6 2 0 1 gel(${1 code}, 11) 1 ell 2 gen copy 1 member_c6 G 1 gen _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 1 clgp 1 member_clgp G 1 gen _.codiff 1 1 member_codiff G 1 gen _.cyc 2 0 2 gel(${1 code}, 2) 1 clgp 2 gen copy member_cyc(${1 code}) 1 gen 1 gen 1 member_cyc G 1 gen _.diff 2 0 2 gmael(${1 code}, 5, 5) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 1 gen 1 member_diff G 1 gen _.disc 2 0 3 gel(${1 code}, 3) 1 nf 2 int copy gel(${1 code}, 12) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 1 gen 1 member_disc G 1 gen _.e 2 0 1 gel(${1 code}, 3) 1 prid 2 int copy 1 member_e G 1 gen _.eta 1 1 member_eta G 1 gen _.f 2 0 1 gel(${1 code}, 4) 1 prid 2 int copy 1 member_f G 1 gen _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void gmael(${1 code}, 8, 5) 1 bnf 2 gen copy gmael(${1 code}, 8, 5) 1 gen 2 gen copy 1 member_fu G 1 gen _.futu 1 1 member_futu G 1 gen _.gen 2 0 3 gel(${1 code}, 7) 1 gal 2 gen copy gel(${1 code}, 3) 1 clgp 2 gen copy member_gen(${1 code}) 1 gen 1 gen 1 member_gen G 1 gen _.group 2 0 1 gel(${1 code}, 6) 1 gal 2 gen copy 1 member_group G 1 gen _.index 2 0 2 gel(${1 code}, 4) 1 nf 2 int copy member_index(${1 code}) 1 gen 1 int 1 member_index G 1 gen _.j 2 0 1 gel(${1 code}, 13) 1 ell 2 gen copy 1 member_j G 1 gen _.mod 1 1 member_mod G 1 gen _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 1 nf 1 member_nf G 1 gen _.no 2 0 2 gel(${1 code}, 1) 1 clgp 2 gen copy member_no(${1 code}) 1 gen 1 gen 1 member_no G 1 gen _.omega 1 1 member_omega G 1 gen _.orders 2 0 1 gel(${1 code}, 8) 1 gal 2 vecsmall copy 1 member_orders G 1 gen _.p 2 0 3 gmael(${1 code}, 2, 1) 1 gal 2 int copy gel(${1 code}, 1) 1 prid 2 int copy member_p(${1 code}) 1 gen 1 int 1 member_p G 1 gen _.pol 2 0 3 gel(${1 code}, 1) 1 gal 2 gen copy gel(${1 code}, 1) 1 nf 2 gen copyi member_pol(${1 code}) 1 gen 1 gen 1 member_pol G 1 gen _.r1 2 0 2 gmael(${1 code}, 2, 1) 1 nf 2 int copy member_r1(${1 code}) 1 gen 1 int 1 member_r1 G 1 gen _.r2 2 0 2 gmael(${1 code}, 2, 2) 1 nf 2 int copy member_r2(${1 code}) 1 gen 1 int 1 member_r2 G 1 gen _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 void gmael(${1 code}, 8, 2) 1 bnf 2 real copy gmael(${1 code}, 8, 2) 1 gen 2 real copy 1 member_reg G 1 gen _.roots 2 0 4 gel(${1 code}, 3) 1 gal 2 gen copy gel(${1 code}, 14) 1 bell 2 gen copy gel(${1 code}, 6) 1 nf 2 gen copy member_roots(${1 code}) 1 gen 1 gen 1 member_roots G 1 gen _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 1 vec 1 member_sign G 1 gen _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 1 gen _.tu 2 0 3 $"ray units not implemented" 1 bnr 1 void gmael(${1 code}, 8, 4) 1 bnf 2 gen copy gmael(${1 code}, 8, 4) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 1 gen _.w 2 0 1 gel(${1 code}, 18) 1 bell 2 gen copy 1 member_w G 1 gen _.zk 2 0 1 gel(${1 code}, 17) 1 nf 2 gen copy 1 member_zk G 1 gen _.zkst 2 0 1 gel(${1 code}, 2) 1 bnr 2 gen copy 1 member_zkst G 1 gen _/=_ 1 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _/_ 2 0 11 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdiv GG 1 gen _<<=_ 1 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _==_ 2 0 22 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool is_pm1(${1 code}) && signe(${1 code})==1 2 @int 1 2 bool parens gcmp1(${1 code}) 2 int 1 1 bool is_pm1(${1 code}) && signe(${1 code})==-1 2 @int -1 2 bool parens gcmp_1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gcmp0(${1 code}) 2 gen 0 1 bool gcmp1(${1 code}) 2 gen 1 1 bool gcmp_1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 1 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens _>>_ 1 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(${1 code}, ${2 :lg cast}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _\/=_ 1 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 1 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 15 sqri(${1 code}) 2 int 2 1 int gpowgs(${1 code}, 3) 2 int 3 1 int gpowgs(${1 code}, 4) 2 int 4 1 int gpowgs(${1 code}, 5) 2 int 5 1 int ginv(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen gsqr(${1 code}) 2 real 2 1 real gsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, prec) 2 gen gen 2 gen prec 1 gpow GGp 2 gen prec __ 1 0 4 concat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal(${1 code}) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprimeid(${1 code}) 1 prid 1 void lg(${1 code}) != 3 || typ(${parens 1 code}[2]) != t_POLMOD 1 @clgp 2 bool parens checkell(${1 code}) 1 ell 1 void checkbell(${1 code}) 1 bell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 gal parens _call_GG 1 0 1 ${parens 1 code}(${2 code}, ${3 code}) 3 func_GG gen gen 1 gen _cast 1 0 90 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gcmp0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gcmp0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 small 1 typ 1 small 1 small_int 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gen_0 1 void 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 bell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x[${1 code}] 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str ${1 str_format} 1 #str 1 typ gel(${1 code}, 7) 1 bnf 2 nf parens 1 gen 1 nf gel(${1 code}, 1) 1 bnr 2 bnf parens 1 gen 1 bnf 1 gen 1 bnr gmael(${1 code}, 8, 1) 1 bnf 2 clgp parens gel(${1 code}, 5) 1 bnr 2 clgp parens 1 gen 1 clgp 1 bell 1 ell 1 gen 1 ell 1 gen 1 bell 1 gen 1 gal 1 gen 1 prid _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, prec) 1 str 2 real prec _const_smallreal 1 0 4 real_0(prec) 1 0 2 real prec real_1(prec) 1 1 2 real prec real_m1(prec) 1 -1 2 real prec stor(${1 code}, prec) 1 small 2 real prec _decl_base 1 0 8 void 1 C!void 0 long 1 C!long 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(primer1) 0 1 void _err_type 1 0 1 pari_err(typeer, ${1 code}) 1 str 1 void _formatcode 1 0 5 ${1 code} 1 #small 1 void %ld 1 small 1 small ${1 str_format} 1 #str 1 void %s 1 str 1 str %Z 1 gen 1 gen _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forvec_start 1 0 1 forvec_start(${1 code}, ${2 code}, &${3 code}, &${4 code}) 4 gen small &gen &func_GG 1 vec _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _proto_code 1 0 4 n 1 var 0 L 1 C!long 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_ret 1 0 4 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 1 C!GEN 0 _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _toGENstr 1 0 2 strtoGENstr(${1 code}) 1 str 1 genstr GENtoGENstr(${1 code}) 1 gen 1 genstr _tovec 1 0 5 mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _type_preorder 1 0 16 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 4 empty bell ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 _typedef 1 0 30 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 bell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 _||_ 1 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, prec) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gach Gp 2 gen prec addhelp 1 1 addhelp Ss 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec algdep 1 1 algdep0 GLD0,L,p 2 gen prec alias 1 1 alias0 rr 1 void allocatemem 1 1 allocatemem0 D0,L, 1 void arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gash Gp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gath Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel0 GGD0,L,p 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr0 GGDG 1 gen bezout 1 1 vecbezout GG 1 gen bezoutres 1 1 vecbezoutres GG 1 gen bigomega 2 0 2 bigomega(${1 code}) 1 int 1 small gbigomega(${1 code}) 1 gen 1 gen 1 gbigomega G 1 gen binary 1 1 binaire G 1 gen binomial 1 1 binomial GL 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gbittest GG 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 certifybuchall G 1 small bnfclassunit 1 1 bnfclassunit0 GD0,L,DGp 2 gen prec bnfclgp 1 1 classgrouponly GDGp 2 gen prec bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 6 bnfinit0(${1 code}, 0, NULL, prec) 1 gen 2 bnf prec bnfinit0(${1 code}, 0, NULL, prec) 2 gen 0 2 bnf prec bnfinit0(${1 code}, 1, NULL, prec) 2 gen 1 2 bnf prec bnfinit0(${1 code}, 2, NULL, prec) 2 gen 2 2 bnf prec bnfinit0(${1 code}, 3, NULL, prec) 2 gen 3 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, prec) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L,p 2 gen prec bnfisprincipal 1 1 isprincipalall GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 isunit GG 1 gen bnfmake 1 1 bnfmake Gp 2 gen prec bnfnarrow 1 1 buchnarrow G 1 gen bnfreg 1 1 regulator GDGp 2 gen prec bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnfunit 1 1 buchfu G 1 gen bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrclass 1 1 bnrclass0 GGD0,L, 1 gen bnrclassno 1 1 bnrclassno GG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor GDGDGDG 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor GDGDG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen changevar 1 1 changevar GG 1 gen charpoly 1 1 charpoly0 GDnD0,L, 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 8 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 gen 1 gen component 1 1 compo GL 1 gen concat 2 0 7 concat(${1 code}, ${2 code}) 2 mp mp 1 vec concat(${1 code}, ${2 code}) 2 vec mp 1 vec concat(${1 code}, ${2 code}) 2 mp vec 1 vec concat(${1 code}, ${2 code}) 2 vec vec 1 vec concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 code}, ${2 code}) 2 gen ?gen 1 gen 1 concat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content G 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfracpnqn 1 1 pnqn G 1 gen copy 1 0 8 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gch Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec default 2 0 10 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &prec) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens 1 default0 D"",r,D"",s,D0,L, 1 gen denominator 1 1 denom G 1 gen deriv 1 1 deriv GDn 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 1 1 direuler0 V=GGEDG 1 gen dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 1 divisors(${1 code}) 1 gen 1 vec 1 divisors G 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec elladd 1 1 addell GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 anell GL 1 gen ellap 1 1 ellap0 GGD0,L, 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellchangecurve 2 0 1 coordch(${1 code}, ${2 code}) 2 gen gen 1 ell 1 coordch GG 1 gen ellchangepoint 1 1 pointch GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellheight 1 1 ellheight0 GGD2,L,p 2 gen prec ellheightmatrix 1 1 mathell GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 3 initell(${1 code}, prec) 2 gen ?0 2 bell prec smallinitell(${1 code}) 2 gen 1 1 ell ellinit0(${1 code}, ${2 code}, prec) 2 gen small 2 ell prec 1 ellinit0 GD0,L,p 2 gen prec ellisoncurve 1 1 ellisoncurve GG 1 gen ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellorder 1 1 orderell GG 1 gen ellordinate 1 1 ordell GGp 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 powell GGG 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GGD0,L,p 2 gen prec ellsub 1 1 subell GGG 1 gen elltaniyama 1 1 elltaniyama GP 1 gen elltors 1 1 elltors0 GD0,L, 1 gen ellwp 1 1 ellwp0 GDGD0,L,pP 2 gen prec ellzeta 1 1 ellzeta GGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec error 2 0 1 pari_err(talker, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 2 phi(${1 code}) 1 int 1 int gphi(${1 code}) 1 gen 1 gen 1 gphi G 1 gen eval 1 1 geval G 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, prec) 1 mp 2 mp prec gexp(${1 code}, prec) 1 gen 2 gen prec 1 gexp Gp 2 gen prec extern 1 1 extern0 s 1 gen factor 2 0 4 Z_factor(${1 code}) 2 int ?-1 1 gen factor(${1 code}) 2 gen ?-1 1 gen smallfact(${1 code}) 2 int 0 1 gen factor0(${1 code}, ${2 code}) 2 gen small 1 gen 1 factor0 GD-1,L, 1 gen factorback 1 1 factorback0 GDGDG 1 gen factorcantor 1 1 factcantor GG 1 gen factorff 1 1 factorff GGG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GGD0,L, 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic0 GGLD0,L, 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen fibonacci 1 1 fibo L 1 gen floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen for 1 1 forpari V=GGI 1 void fordiv 1 1 fordiv GVI 1 void forell 1 1 forell VLLI 1 void forprime 1 1 forprime V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 1 1 forsubgroup V=GDGI 1 void forvec 1 1 forvec V=GID0,L, 1 void frac 1 1 gfrac G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggamd Gp 2 gen prec gcd 2 0 6 cgcd(${1 code}, ${2 code}) 3 small small ?0 1 small gcdii(${1 code}, ${2 code}) 3 int int ?0 1 int ggcd(${1 code}, ${2 code}) 3 gen gen ?0 1 gen modulargcd(${1 code}, ${2 code}) 3 gen gen 1 1 gen srgcd(${1 code}, ${2 code}) 3 gen gen 2 1 gen gcd0(${1 code}, ${2 code}, ${3 code}) 3 gen ?gen ?small 1 gen 1 gcd0 GDGD0,L, 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 small getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small global 0 hilbert 1 1 hil0 GGDG 1 small hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 idealfactor GG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 zideallog GGG 1 gen idealmin 1 1 minideal GGDGp 2 gen prec idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}, prec) 4 gen gen gen 1 2 gen prec $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}, prec) 4 gen gen gen small 2 gen prec 1 idealmul0 GGGD0,L,p 2 gen prec idealnorm 1 1 idealnorm GG 1 gen idealpow 1 1 idealpow0 GGGD0,L,p 2 gen prec idealprimedec 1 1 primedec GG 1 gen idealprincipal 1 1 principalideal GG 1 gen idealred 1 1 ideallllred GGDGp 2 gen prec idealstar 1 1 idealstar0 GGD1,L, 1 gen idealtwoelt 1 1 ideal_two_elt0 GGDG 1 gen idealval 1 1 idealval GGG 1 small ideleprincipal 1 1 principalidele GGp 2 gen prec if 0 imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec input 1 1 input0 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 1 1 intcirc0 V=GGEDGp 2 gen prec intformal 1 1 integ GDn 1 gen intfouriercos 1 1 intfourcos0 V=GGGEDGp 2 gen prec intfourierexp 1 1 intfourexp0 V=GGGEDGp 2 gen prec intfouriersin 1 1 intfoursin0 V=GGGEDGp 2 gen prec intfuncinit 1 1 intfuncinit0 V=GGED0,L,D0,L,p 2 gen prec intlaplaceinv 1 1 intlaplaceinv0 V=GGEDGp 2 gen prec intmellininv 1 1 intmellininv0 V=GGEDGp 2 gen prec intmellininvshort 1 1 intmellininvshort GGGp 2 gen prec intnum 1 1 intnum0 V=GGEDGp 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnuminitgen 1 1 intnuminitgen0 VGGED0,L,D0,L,p 2 gen prec intnumromb 1 1 intnumromb0 V=GGED0,L,p 2 gen prec intnumstep 1 1 intnumstep p 2 small prec isfundamental 2 0 2 isfundamental(${1 code}) 1 int 1 bool gisfundamental(${1 code}) 1 gen 1 gen 1 gisfundamental G 1 gen ispower 2 0 2 isanypower(${1 code}, NULL) 1 int 1 small isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small isprime 2 0 4 isprime(${1 code}) 2 int ?0 1 bool plisprime(${1 code}, 0) 2 int 1 1 bool plisprime(${1 code}, 1) 2 int 2 1 gen gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen ispseudoprime 2 0 2 ispsp(${1 code}) 1 int 1 bool gispsp(${1 code}) 1 gen 1 gen 1 gispseudoprime GD0,L, 1 gen issquare 2 0 5 Z_issquare(${1 code}) 1 int 1 bool gissquare(${1 code}) 1 mp 1 int gissquare(${1 code}) 1 gen 1 gen Z_issquarerem(${1 code}, &${2 code}) 2 int &int 1 bool gissquarerem(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 gissquarerem GD& 1 gen issquarefree 2 0 2 issquarefree(${1 code}) 1 int 1 bool gissquarefree(${1 code}) 1 gen 1 gen 1 gissquarefree G 1 gen kill 1 1 kill0 S 1 void kronecker 2 0 6 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 int int 1 small gkrogs(${1 code}, ${2 code}) 2 gen small 1 gen gkronecker(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gkronecker GG 1 gen lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen lindep 1 1 lindep0 GD0,L,p 2 gen prec listcreate 2 0 1 listcreate(${1 code}) 1 small 1 list 1 listcreate L 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert GGL 1 gen listkill 1 1 listkill G 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput GGD0,L, 1 gen listsort 1 1 listsort GD0,L, 1 gen lngamma 1 1 glngamma Gp 2 gen prec log 2 0 1 glog(${1 code}, prec) 1 gen 2 gen prec 1 glog Gp 2 gen prec matadjoint 1 1 adj G 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 assmat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 eigen Gp 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 1 1 matimage0 GD0,L, 1 gen matimagecompl 1 1 imagecompl G 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small matker 1 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matrank 1 1 rank G 1 small matrix 1 1 matrice GGDVDVDI 1 gen matrixqz 1 1 matrixqz0 GG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod0 GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 polymodrecip G 1 gen moebius 2 0 2 mu(${1 code}) 1 int 1 small gmu(${1 code}) 1 gen 1 gen 1 gmu G 1 gen newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 2 nextprime(${1 code}) 1 int 1 int gnextprime(${1 code}) 1 gen 1 gen 1 gnextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis0 GD0,L,DG 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdiscf0 GD0,L,DG 1 gen nfeltdiv 1 1 element_div GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 element_divmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 element_mul GGG 1 gen nfeltmulmodpr 1 1 element_mulmodpr GGGG 1 gen nfeltpow 1 1 element_pow GGG 1 gen nfeltpowmodpr 1 1 element_powmodpr GGGG 1 gen nfeltreduce 1 1 element_reduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfeltval 1 1 element_val GGG 1 small nffactor 1 1 nffactor GG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhermite GG 1 gen nfhnfmod 1 1 nfhermitemod GGG 1 gen nfinit 2 0 9 nfinit0(${1 code}, 0, prec) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, prec) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, prec) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, prec) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, prec) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, prec) 2 gen 5 2 gen prec nfinit0(${1 code}, 6, prec) 2 gen 6 2 nf prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, prec) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsmith GG 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsubfields 1 1 subfields0 GDG 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen numbpart 1 1 numbpart G 1 gen numdiv 2 0 2 numbdiv(${1 code}) 1 int 1 int gnumbdiv(${1 code}) 1 gen 1 gen 1 gnumbdiv G 1 gen numerator 1 1 numer G 1 gen numtoperm 1 1 numtoperm LG 1 gen omega 2 0 2 omega(${1 code}) 1 int 1 small gomega(${1 code}) 1 gen 1 gen 1 gomega G 1 gen padicappr 1 1 padicappr GG 1 gen padicprec 1 1 padicprec GG 1 small permtonum 1 1 permtonum G 1 gen plot 1 1 plot V=GGIDGDGp 2 void prec plotbox 1 1 rectbox LGG 1 void plotclip 1 1 rectclip L 1 void plotcolor 1 1 rectcolor LL 1 void plotcopy 1 1 rectcopy_gen LLGGD0,L, 1 void plotcursor 1 1 rectcursor L 1 gen plotdraw 1 1 rectdraw_flag GD0,L, 1 void ploth 1 1 ploth V=GGIpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048 2 gen prec plothraw 1 1 plothraw GGD0,L, 1 gen plothsizes 1 1 plothsizes_flag D0,L, 1 gen plotinit 1 1 initrect_gen LD0,G,D0,G,D0,L, 1 void plotkill 1 1 killrect L 1 void plotlines 1 1 rectlines LGGD0,L, 1 void plotlinetype 1 1 rectlinetype LL 1 void plotmove 1 1 rectmove LGG 1 void plotpoints 1 1 rectpoints LGG 1 void plotpointsize 1 1 rectpointsize LG 1 void plotpointtype 1 1 rectpointtype LL 1 void plotrbox 1 1 rectrbox LGG 1 void plotrecth 1 1 rectploth LV=GGIpD0,L,D0,L, 2 gen prec plotrecthraw 1 1 rectplothraw LGD0,L, 1 gen plotrline 1 1 rectrline LGG 1 void plotrmove 1 1 rectrmove LGG 1 void plotrpoint 1 1 rectrpoint LGG 1 void plotscale 1 1 rectscale LGGGG 1 void plotstring 1 1 rectstring3 LsD0,L, 1 void polcoeff 2 0 2 constant_term(${1 code}) 2 pol 0 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 1 1 cyclo LDn 1 gen poldegree 2 0 3 degpol(${1 code}) 1 pol 1 small degree(${1 code}) 1 gen 1 small poldegree(${1 code}, ${2 code}) 2 gen var 1 small 1 poldegree GDn 1 small poldisc 2 0 3 discsr(${1 code}) 1 pol 1 gen poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polhensellift 1 1 polhensellift GGGL 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen polisirreducible 1 1 gisirreducible G 1 gen pollead 2 0 3 leading_term(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 1 1 legendre LDn 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredord 1 1 ordred G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polroots 1 1 roots0 GD0,L,p 2 gen prec polrootsmod 2 0 4 rootmod(${1 code}, ${2 code}) 3 pol int ?0 1 vec rootmod2(${1 code}, ${2 code}) 3 pol int 1 1 vec $"Bad flag in polrootsmod" 3 pol int #small 1 vec rootmod0(${1 code}, ${2 code}, ${3 code}) 3 pol int small 1 vec 1 rootmod0 GGD0,L, 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 tchebi LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen precision 1 1 precision0 GD0,L, 1 gen precprime 2 0 2 precprime(${1 code}) 1 int 1 int gprecprime(${1 code}) 1 gen 1 gen 1 gprecprime G 1 gen prime 1 1 prime L 1 gen primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes L 1 gen print 2 0 1 pariprintf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pariprintf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printp 1 1 printp s* 1 void printp1 1 1 printp1 s* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodinf 1 1 prodinf0 V=GED0,L,p 2 gen prec psdraw 1 1 postdraw_flag GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 postploth V=GGIpD0,L,D0,L, 2 gen prec psplothraw 1 1 postplothraw GGD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 compraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GG 1 gen qfbpowraw 1 1 powraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfgaussred 1 1 sqred G 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}, prec) 2 vec ?0 2 vec prec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}, prec) 2 vec small 2 vec prec 1 qflll0 GD0,L,p 2 gen prec qflllgram 1 1 qflllgram0 GD0,L,p 2 gen prec qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 signat G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen G 1 gen quadhilbert 1 1 quadhilbert GDGp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGDGp 2 gen prec quadregulator 2 0 2 regula(${1 code}, prec) 1 int 2 mp prec gregula(${1 code}, prec) 1 gen 2 gen prec 1 gregula Gp 2 gen prec quadunit 2 0 2 fundunit(${1 code}) 1 int 1 gen gfundunit(${1 code}) 1 gen 1 gen 1 gfundunit Gp 2 gen prec quit 1 1 gp_quit 1 void random 2 0 2 genrand(${1 code}) 1 ?int 1 int $"incorrect type `real' in random" 1 real 1 void 1 genrand DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 read0 D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen reorder 1 1 reorder DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GGD0,L, 1 gen rnfdedekind 1 1 rnfdedekind GGG 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfelementabstorel GG 1 gen rnfeltdown 1 1 rnfelementdown GG 1 gen rnfeltreltoabs 1 1 rnfelementreltoabs GG 1 gen rnfeltup 1 1 rnfelementup GG 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealhnf 1 1 rnfidealhermite GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs GG 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup GG 1 gen rnfinit 1 1 rnfinitalg GGp 2 gen prec rnfisfree 1 1 rnfisfree GG 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serreverse 1 1 recip G 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand L 1 small setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 6 sumdiv(${1 code}) 2 int ?1 1 int numbdiv(${1 code}) 2 int 0 1 int gsumdiv(${1 code}) 2 gen ?1 1 gen gnumbdiv(${1 code}) 2 gen 0 1 gen sumdivk(${1 code}, ${2 code}) 2 int small 1 int gsumdivk(${1 code}, ${2 code}) 2 gen small 1 gen 1 gsumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinh 1 1 gsh Gp 2 gen prec sizebyte 1 1 taille2 G 1 small sizedigit 1 1 sizedigit G 1 small solve 1 1 zbrent0 V=GGEp 2 gen prec sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, prec) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 racine(${1 code}) 1 gen 1 int 1 racine G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 1 1 sumalt0 V=GED0,L,p 2 gen prec sumdiv 1 1 divsum GVE 1 gen suminf 1 1 suminf0 V=GEp 2 gen prec sumnum 1 1 sumnum0 V=GGEDGD0,L,p 2 gen prec sumnumalt 1 1 sumnumalt0 V=GGEDGD0,L,p 2 gen prec sumnuminit 1 1 sumnuminit GD0,L,D1,L,p 2 gen prec sumpos 1 1 sumpos0 V=GED0,L,p 2 gen prec system 1 1 system0 s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gth Gp 2 gen prec taylor 1 1 tayl GnP 1 gen teichmuller 1 1 teich G 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 1 1 trap0 D"",r,DIDI 1 gen truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void until 0 valuation 1 1 ggval GG 1 small variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar G 1 gen vecextract 1 1 extract0 GGDG 1 gen vecmax 1 1 vecmax G 1 gen vecmin 1 1 vecmin G 1 gen vecsort 2 0 7 sort(${1 code}) 1 vec 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec sort(${1 code}) 3 vec 0 1 vec indexsort(${1 code}) 3 vec 1 1 vec lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, NULL, ${3 code}) 3 vec small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec gen small 1 vec 1 vecsort0 GDGD0,L, 1 gen vector 1 1 vecteur GDVDI 1 gen vectorsmall 1 1 vecteursmall GDVDI 1 gen vectorv 1 1 vvecteur GDVDI 1 gen version 1 1 pari_version 1 gen weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 0 write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetak 1 1 gzetakall GGD0,L,p 2 gen prec zetakinit 1 1 initzeta Gp 2 gen prec zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog GG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 2 0 2 gener(${1 code}) 1 int 1 gen ggener(${1 code}) 1 gen 1 gen 1 ggener G 1 gen znstar 1 1 znstar G 1 gen gp2c-0.0.12/desc/Makefile.in0000644000175000017500000003436313751742674012362 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = desc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(pkgdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkgdata_DATA = func.dsc EXTRA_DIST = $(COMPAT_DESC) $(OVERRIDE_DESC) $(FUNC2X_DSC) CLEANFILES = func.dsc COMPILE_DESC = ../scripts/822_desc.pl FUNC2X_DSC = $(srcdir)/func23.dsc $(srcdir)/func25.dsc $(srcdir)/func27.dsc $(srcdir)/func29.dsc $(srcdir)/func211.dsc $(srcdir)/func213.dsc COMPAT_DESC = $(srcdir)/compat.desc OVERRIDE_DESC = $(srcdir)/override.desc all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu desc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu desc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$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 $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgdataDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-pkgdataDATA .PRECIOUS: Makefile func.dsc: $(COMPILE_DESC) $(PARI_DESC) $(COMPAT_DESC) $(OVERRIDE_DESC) @$(COMPILE_DESC) $(PARI_DESC) $(COMPAT_DESC) $(OVERRIDE_DESC) >func.dsc\ && echo "Description recompiled" \ || ( cp $(srcdir)/func213.dsc func.dsc && echo "Using PARI 2.13 description" ) $(OVERRIDE_DESC): touch $(OVERRIDE_DESC) # 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: gp2c-0.0.12/desc/func25.dsc0000644000175000017500000020516412163255364012100 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 5 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen 1 gneg G 1 gen Col 2 0 2 cgetg(1,t_COL) 0 1 vec gtocol(${1 code}) 1 gen 1 vec 1 gtocol DG 1 gen Euler 2 0 1 mpeuler(prec) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 listcreate() 0 1 list gtolist(${1 code}) 1 gen 1 list 1 gtolist DG 1 gen Mat 1 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(prec) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 gtoser GDnDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 1 ${1 :genstr cast} 1 gen 3 genstr copy parens 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 2 cgetg(1,t_VEC) 0 1 vec gtovec(${1 code}) 1 gen 1 vec 1 gtovec DG 1 gen Vecrev 2 0 2 cgetg(1,t_VEC) 0 1 vec gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev DG 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall DG 1 gen _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 17 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 7 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 2 0 1 deriv(${1 code},-1) 1 gen 1 gen 1 deriv GDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 14 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 16 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 14 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 2 0 1 gel(${1 code}, 19) 1 bell 2 gen copy 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.futu 1 1 member_futu G 2 gen copy _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vec copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vec copy member_group(${1 code}) 1 gen 2 vec copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 4 gal_get_roots(${1 code}) 1 gal 2 vec copy ell_get_roots(${1 code}) 1 bell 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 2 gen copy _.w 2 0 1 gel(${1 code}, 18) 1 bell 2 gen copy 1 member_w G 2 gen copy _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 12 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 20 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _=_ 1 1 gstore &G 2 gen copy _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 16 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, prec) 2 gen gen 2 gen prec 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 concat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void lg(${1 code}) != 3 || typ(${parens 1 code}[2]) != t_POLMOD 1 @clgp 2 bool parens checksmallell(${1 code}) 1 ell 1 void checkell(${1 code}) 1 bell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 gal parens _call_GG 1 0 1 ${parens 1 code}(${2 code}, ${3 code}) 3 func_GG gen gen 1 gen _cast 1 0 94 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 small 1 typ 1 small 1 small_int 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 bell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 closure 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str ${1 str_format} 1 #str 1 typ bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 bell 1 ell 1 gen 1 ell 1 gen 1 bell 1 gen 1 gal 1 gen 1 prid _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, prec) 1 str 2 real prec _const_smallreal 1 0 4 real_0(prec) 1 0 2 real prec real_1(prec) 1 1 2 real prec real_m1(prec) 1 -1 2 real prec stor(${1 code}, prec) 1 small 2 real prec _decl_base 1 0 8 void 1 C!void 0 long 1 C!long 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGp 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(primer1) 0 1 void _err_type 1 0 1 pari_err(typeer, ${1 code}) 1 str 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _formatcode 1 0 5 ${1 code} 1 #small 1 void %ld 1 small 1 small ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forvec_start 1 0 1 forvec_start(${1 code}, ${2 code}, &${3 code}, &${4 code}) 4 gen small &gen &func_GG 1 vec _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _proto_code 1 0 4 n 1 var 0 L 1 C!long 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 4 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 1 C!GEN 0 _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _toGENstr 1 0 2 strtoGENstr(${1 code}) 1 str 1 genstr GENtoGENstr(${1 code}) 1 gen 1 genstr _tovec 1 0 6 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 5 mkvecs(prec) 0 2 vec prec mkvec2(${1 code}, stoi(prec)) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(prec)) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(prec)) 3 gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(prec)) 2 gen ... 2 vec prec _type_preorder 1 0 17 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 3 empty closure gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 4 empty bell ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 _typedef 1 0 31 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 bell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, prec) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gach Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec alarm 1 1 alarm0 D0,L, 1 void algdep 1 1 algdep0 GLD0,L, 1 gen alias 1 1 alias0 rr 1 void allocatemem 1 1 allocatemem0 DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gash Gp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gath Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr0 GDGDG 1 gen bezout 1 1 vecbezout GG 1 gen bezoutres 1 1 vecbezoutres GG 1 gen bigomega 2 0 2 bigomega(${1 code}) 1 int 1 small gbigomega(${1 code}) 1 gen 1 gen 1 gbigomega G 1 gen binary 1 1 binaire G 1 gen binomial 1 1 binomial GL 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfcompress 1 1 bnfcompress G 1 gen bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, prec) 1 gen 2 bnf prec Buchall(${1 code}, 0, prec) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, prec) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, prec) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit GG 1 gen bnfnarrow 1 1 buchnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrclassno 1 1 bnrclassno GG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen charpoly 1 1 charpoly0 GDnD3,L, 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 8 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 gen 1 gen component 1 1 compo GL 1 gen concat 2 0 8 concat(${1 code}, ${2 code}) 2 mp mp 1 vec concat(${1 code}, ${2 code}) 2 vec mp 1 vec concat(${1 code}, ${2 code}) 2 mp vec 1 vec concat(${1 code}, ${2 code}) 2 vec vec 1 vec concat(${1 code}, ${2 code}) 2 list list 1 list concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 code}, ${2 code}) 2 gen ?gen 1 gen 1 concat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content G 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfracpnqn 1 1 pnqn G 1 gen copy 1 0 8 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gch Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &prec) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denom G 1 gen deriv 1 1 deriv GDn 1 gen derivnum 3 0 1 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 2 gen gen 2 gen prec 1 derivnum0 V=GEp 2 gen prec 2 2 _wrap_G diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen gen ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 1 divisors(${1 code}) 1 gen 1 vec 1 divisors G 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellL1 1 1 ellL1 GLp 2 gen prec elladd 1 1 addell GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 anell GL 1 gen ellanalyticrank 1 1 ellanalyticrank GDGp 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup GDG 1 gen ellheight 1 1 ellheight0 GGD2,L,p 2 gen prec ellheightmatrix 1 1 mathell GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 3 ellinit(${1 code}, prec) 2 gen ?0 2 bell prec smallellinit(${1 code}) 2 gen 1 1 ell ellinit0(${1 code}, ${2 code}, prec) 2 gen small 2 ell prec 1 ellinit0 GD0,L,p 2 gen prec ellisoncurve 1 1 ellisoncurve GG 1 gen ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 powell GGG 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GGD0,L,p 2 gen prec ellsub 1 1 subell GGG 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors0 GD0,L, 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,DPp 2 gen prec ellzeta 1 1 ellzeta GGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec error 2 0 1 pari_err(talker, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 2 eulerphi(${1 code}) 1 int 1 int geulerphi(${1 code}) 1 gen 1 gen 1 geulerphi G 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, prec) 1 mp 2 mp prec gexp(${1 code}, prec) 1 gen 2 gen prec 1 gexp Gp 2 gen prec extern 1 1 extern0 s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 3 Z_factor(${1 code}) 2 int ?-1 1 vec factor(${1 code}) 2 gen ?-1 1 vec factor0(${1 code}, ${2 code}) 2 gen small 1 vec 1 gp_factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factcantor GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GGD0,L, 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic0 GGLD0,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen fflog 1 1 fflog GGDG 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fibonacci 1 1 fibo L 1 gen floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen for 1 1 forpari V=GGI 1 void fordiv 1 1 fordiv GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}) 4 small small closure 1 void 1 forell0 VLLI 1 void 2 4 _wrap_vG forprime 1 1 forprime V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forvec 1 1 forvec V=GID0,L, 1 void frac 1 1 gfrac G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggamd Gp 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small global 0 hilbert 1 1 hilbert GGDG 1 small hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 idealfactor GG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog GGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 1 1 idealprimedec GG 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealstar 1 1 idealstar0 GGD1,L, 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 idealval GGG 1 small if 1 1 ifpari GDEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec input 1 1 input0 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfouriercos 3 0 1 intfouriercos(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfourcos0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfourierexp 3 0 1 intfourierexp(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfourexp0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfouriersin 3 0 1 intfouriercos(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfoursin0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?small ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,D0,L,p 2 gen prec 2 3 _wrap_G intlaplaceinv 3 0 1 intlaplaceinv(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intlaplaceinv0 V=GGEDGp 2 gen prec 2 3 _wrap_G intmellininv 3 0 1 intmellininv(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intmellininv0 V=GGEDGp 2 gen prec 2 3 _wrap_G intmellininvshort 1 1 intmellininvshort GGGp 2 gen prec intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnuminitgen 1 1 intnuminitgen0 VGGED0,L,D0,L,p 2 gen prec intnumromb 3 0 1 intnumromb(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?small 2 gen prec 1 intnumromb0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnumstep 1 1 intnumstep p 2 small prec isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool gisfundamental(${1 code}) 1 gen 1 gen 1 gisfundamental G 1 gen ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small isprime 2 0 4 isprime(${1 code}) 2 int ?0 1 bool plisprime(${1 code}, 0) 2 int 1 1 bool plisprime(${1 code}, 1) 2 int 2 1 gen gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 bool 1 gispseudoprime GD0,L, 1 gen issquare 2 0 5 Z_issquare(${1 code}) 1 int 1 bool gissquare(${1 code}) 1 mp 1 int gissquare(${1 code}) 1 gen 1 gen Z_issquarerem(${1 code}, &${2 code}) 2 int &int 1 bool gissquareall(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 gissquareall GD& 1 gen issquarefree 2 0 2 issquarefree(${1 code}) 1 int 1 bool gissquarefree(${1 code}) 1 gen 1 gen 1 gissquarefree G 1 gen kill 1 1 kill0 r 1 void kronecker 2 0 5 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 int int 1 small gkronecker(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gkronecker GG 1 gen lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 listcreate() 1 ?gen 1 list 1 listcreate D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill G 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 log 2 0 1 glog(${1 code}, prec) 1 gen 2 gen prec 1 glog Gp 2 gen prec matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 eigen Gp 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 1 1 matimage0 GD0,L, 1 gen matimagecompl 1 1 imagecompl G 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 1 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matrank 1 1 rank G 1 small matrix 1 1 matrice GGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod0 GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 2 0 2 moebius(${1 code}) 1 int 1 small gmoebius(${1 code}) 1 gen 1 gen 1 gmoebius G 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 2 nextprime(${1 code}) 1 int 1 int gnextprime(${1 code}) 1 gen 1 gen 1 gnextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis0 GD0,L,DG 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc0 GD0,L,DG 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 nfval GGG 1 small nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf GG 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, prec) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, prec) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, prec) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, prec) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, prec) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, prec) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, prec) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsnf GG 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsubfields 1 1 nfsubfields GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen numbpart 1 1 numbpart G 1 gen numdiv 2 0 2 numbdiv(${1 code}) 1 int 1 int gnumbdiv(${1 code}) 1 gen 1 gen 1 gnumbdiv G 1 gen numerator 1 1 numer G 1 gen numtoperm 1 1 numtoperm LG 1 gen omega 2 0 2 omega(${1 code}) 1 int 1 small gomega(${1 code}) 1 gen 1 gen 1 gomega G 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 padicprec GG 1 small partitions 1 1 partitions LD0,L, 1 gen permtonum 1 1 permtonum G 1 gen plot 1 1 plot V=GGEDGDGp 2 void prec plotbox 1 1 rectbox LGG 1 void plotclip 1 1 rectclip L 1 void plotcolor 1 1 rectcolor LL 1 void plotcopy 1 1 rectcopy_gen LLGGD0,L, 1 void plotcursor 1 1 rectcursor L 1 gen plotdraw 1 1 rectdraw_flag GD0,L, 1 void ploth 1 1 ploth V=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plothraw 1 1 plothraw GGD0,L, 1 gen plothsizes 1 1 plothsizes_flag D0,L, 1 gen plotinit 1 1 initrect_gen LDGDGD0,L, 1 void plotkill 1 1 killrect L 1 void plotlines 1 1 rectlines LGGD0,L, 1 void plotlinetype 1 1 rectlinetype LL 1 void plotmove 1 1 rectmove LGG 1 void plotpoints 1 1 rectpoints LGG 1 void plotpointsize 1 1 rectpointsize LG 1 void plotpointtype 1 1 rectpointtype LL 1 void plotrbox 1 1 rectrbox LGG 1 void plotrecth 1 1 rectploth LV=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plotrecthraw 1 1 rectplothraw LGD0,L, 1 gen plotrline 1 1 rectrline LGG 1 void plotrmove 1 1 rectrmove LGG 1 void plotrpoint 1 1 rectrpoint LGG 1 void plotscale 1 1 rectscale LGGGG 1 void plotstring 1 1 rectstring3 LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polcoeff 2 0 2 constant_term(${1 code}) 2 pol 0 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen poldegree 2 0 3 degpol(${1 code}) 1 pol 1 small degree(${1 code}) 1 gen 1 small poldegree(${1 code}, ${2 code}) 2 gen var 1 small 1 poldegree GDn 1 small poldisc 2 0 3 discsr(${1 code}) 1 pol 1 gen poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval LDG 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen polisirreducible 1 1 gisirreducible G 1 gen pollead 2 0 3 leading_term(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval LDG 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredord 1 1 ordred G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polroots 1 1 roots0 GD0,L,p 2 gen prec polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 2 0 4 rootmod(${1 code}, ${2 code}) 3 pol int ?0 1 vec rootmod2(${1 code}, ${2 code}) 3 pol int 1 1 vec $"Bad flag in polrootsmod" 3 pol int #small 1 vec rootmod0(${1 code}, ${2 code}, ${3 code}) 3 pol int small 1 vec 1 rootmod0 GGD0,L, 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen precision 2 0 8 prec2ndec(gprecision(${1 code})) 1 real 1 small precision0(${1 code}, 0) 1 gen 1 int prec2ndec(gprecision(${1 code})) 2 real 0 1 small precision0(${1 code}, 0) 2 gen 0 1 int rtor(${1 code}, ndec2prec(${2 code})) 2 real #small 1 real gprec(${1 code}, ${2 code}) 2 gen #small 1 gen precision0(${1 code}, ${2 code}) 2 real small 1 real precision0(${1 code}, ${2 code}) 2 gen small 1 gen 1 precision0 GD0,L, 1 gen precprime 2 0 2 precprime(${1 code}) 1 int 1 int gprecprime(${1 code}) 1 gen 1 gen 1 gprecprime G 1 gen prime 1 1 prime L 1 gen primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes L 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodinf 3 0 1 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, prec) 3 gen gen ?small 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G psdraw 1 1 postdraw_flag GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 postploth V=GGEpD0,L,D0,L, 2 gen prec psplothraw 1 1 postplothraw GGD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen G 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit G 1 gen quit 1 1 gp_quit D0,L, 1 void random 1 1 genrand DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 read0 D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GGD0,L, 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfelementabstorel GG 1 gen rnfeltdown 1 1 rnfelementdown GG 1 gen rnfeltreltoabs 1 1 rnfelementreltoabs GG 1 gen rnfeltup 1 1 rnfelementup GG 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealhnf 1 1 rnfidealhermite GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs GG 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup GG 1 gen rnfinit 1 1 rnfinit GG 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 1 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen 1 select0 GG 1 gen 2 1 _wrap_bG serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serreverse 1 1 recip G 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 6 sumdiv(${1 code}) 2 int ?1 1 int numbdiv(${1 code}) 2 int 0 1 int gsumdiv(${1 code}) 2 gen ?1 1 gen gnumbdiv(${1 code}) 2 gen 0 1 gen sumdivk(${1 code}, ${2 code}) 2 int small 1 int gsumdivk(${1 code}, ${2 code}) 2 gen small 1 gen 1 gsumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinh 1 1 gsh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, prec) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, prec) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec stirling 1 1 stirling LLD1,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdiv 1 1 divsum GVE 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 2 gen gen 2 gen prec 1 suminf0 V=GEp 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?gen ?small 2 gen prec 1 sumnum0 V=GGEDGD0,L,p 2 gen prec 2 3 _wrap_G sumnumalt 3 0 1 sumnumalt(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?gen ?small 2 gen prec 1 sumnumalt0 V=GGEDGD0,L,p 2 gen prec 2 3 _wrap_G sumnuminit 1 1 sumnuminit GD0,L,D1,L,p 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 system0 s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gth Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teich G 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void until 1 1 untilpari EI 1 void valuation 1 1 ggval GG 1 small variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecsmall_max(${1 code}) 1 vecsmall 1 small vecmax(${1 code}) 1 gen 1 gen 1 vecmax G 1 gen vecmin 2 0 2 vecsmall_min(${1 code}) 1 vecsmall 1 small vecmin(${1 code}) 1 gen 1 gen 1 vecmin G 1 gen vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, 0) 2 vecsmall ?gen 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen small 1 vecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(user, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetak 1 1 gzetakall GGD0,L,p 2 gen prec zetakinit 1 1 initzeta Gp 2 gen prec zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 2 0 2 znprimroot(${1 code}) 1 int 1 gen znprimroot0(${1 code}) 1 gen 1 gen 1 znprimroot0 G 1 gen znstar 1 1 znstar G 1 gen gp2c-0.0.12/desc/compat.desc0000644000175000017500000000000112141547407012403 00000000000000 gp2c-0.0.12/desc/func213.dsc0000644000175000017500000031426213743645740012165 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_histtime D0,L, 1 gen +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 9 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen Fp_neg(${1 code}, p) 1 Fp 1 Fp FpX_neg(${1 code}, p) 1 FpX 1 FpX Fq_neg(${1 code}, T, p) 1 Fq 1 Fq FqX_neg(${1 code}, T, p) 1 FqX 1 FqX 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(${prec}) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(${prec}) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 mklist() 0 1 list listinit(gtolist(${1 code})) 1 gen 1 list 1 gtolist DG 1 gen Map 2 0 2 mkmap() 0 1 list listinit(gtomap(${1 code})) 1 gen 1 list 1 gtomap DG 1 gen Mat 2 0 2 cgetg(1, t_MAT) 0 1 vec gtomat(${1 code}) 1 gen 1 vec 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(${prec}) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 Ser0 GDnDGDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 pari_strchr G 1 gen Strexpand 1 1 strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 9 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen FpX_rem(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX FqX_rem(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 1 1 deriv GDn 1 gen _'_ 2 0 3 deriv(${1 code}, -1) 2 gen 1 1 gen FpX_deriv(${1 code}, p) 2 FpX 1 1 FpX FqX_deriv(${1 code}, T, p) 2 FqX 1 1 FqX 1 derivn GLDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 36 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real gmulsg(${1 code}, ${2 code}) 2 small real 1 mp (${1 code}, 0)/*for side effect*/ 2 mp 0 1 small mulrs(${1 code}, ${2 code}) 2 real #small 1 real gmulgs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real gmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_mulu(${2 code}, ${1 code}, p) 2 usmall Fp 1 Fp Fp_muls(${2 code}, ${1 code}, p) 2 small Fp 1 Fp Fp_mulu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_muls(${1 code}, ${2 code}, p) 2 Fp small 1 Fp FpX_mulu(${2 code}, ${1 code}, p) 2 usmall FpX 1 FpX FpX_mulu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX FpX_Fp_mul(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_Fp_mul(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_mul(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_mulu(${2 code}, ${1 code}, T, p) 2 usmall Fq 1 Fq Fq_mulu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_Fp_mul(${1 code}, ${2 code}, T, p) 2 Fq Fp 1 Fq Fq_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp Fq 1 Fq FqX_mulu(${2 code}, ${1 code}, T, p) 2 usmall FqX 1 FqX FqX_mulu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX FqX_Fp_mul(${1 code}, ${2 code}, T, p) 2 FqX Fp 1 FqX FqX_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp FqX 1 FqX FqX_Fq_mul(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_Fq_mul(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_mul(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 24 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_add(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp FpX_Fp_add(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_Fp_add(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_add(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_add(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_add(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_Fq_add(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_add(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 21 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_sub(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fp_FpX_sub(${1 code}, ${2 code}, p) 2 Fp FpX 1 FpX FpX_Fp_sub(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_sub(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_sub(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_sub(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_sub(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vecvecsmall copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vecvecsmall copy member_group(${1 code}) 1 gen 2 vecvecsmall copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 16 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_halve(${1 code}, p) 2 Fp 2 1 Fp Fp_div(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fq_halve(${1 code}, T, p) 2 Fq 2 1 Fq Fq_div(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _F2xq_log_Coppersmith_worker 1 1 F2xq_log_Coppersmith_worker GLGG 1 gen _Flxq_log_Coppersmith_worker 1 1 Flxq_log_Coppersmith_worker GLGG 1 gen _FpM_ratlift_worker 1 1 FpM_ratlift_worker GGG 1 gen _Fp_log_sieve_worker 1 1 Fp_log_sieve_worker LLGGGGGG 1 gen _QM_charpoly_ZX_worker 1 1 QM_charpoly_ZX_worker GGG 1 gen _QXQ_div_worker 1 1 QXQ_div_worker GGGG 1 gen _QXQ_inv_worker 1 1 QXQ_inv_worker GGG 1 gen _ZM_det_worker 1 1 ZM_det_worker GG 1 gen _ZM_inv_worker 1 1 ZM_inv_worker GG 1 gen _ZM_ker_worker 1 1 ZM_ker_worker GG 1 gen _ZM_mul_worker 1 1 ZM_mul_worker GGG 1 gen _ZXQX_direct_compositum_worker 1 1 ZXQX_direct_compositum_worker GGGG 1 gen _ZXQX_resultant_worker 1 1 ZXQX_resultant_worker GGGGG 1 gen _ZXQ_minpoly_worker 1 1 ZXQ_minpoly_worker GGGL 1 gen _ZX_ZXY_resultant_worker 1 1 ZX_ZXY_resultant_worker GGGGG 1 gen _ZX_direct_compositum_worker 1 1 ZX_direct_compositum_worker GGG 1 gen _ZX_gcd_worker 1 1 ZX_gcd_worker GGGG 1 gen _ZX_resultant_worker 1 1 ZX_resultant_worker GGGG 1 gen _ZabM_inv_worker 1 1 ZabM_inv_worker GGG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 10 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vecvecsmall small 1 vecsmall gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 30 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, ${prec}) 2 gen gen 2 gen prec Fp_sqr(${1 code}, p) 2 Fp 2 1 Fp Fp_powu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_pows(${1 code}, ${2 code}, p) 2 Fp small 1 Fp Fp_pow(${1 code}, ${2 code}, p) 2 Fp int 1 Fp FpX_sqr(${1 code}, p) 2 FpX 2 1 FpX FpX_powu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq FqX_sqr(${1 code}, T, p) 2 FqX 2 1 FqX FqX_powu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 gconcat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _aprcl_step4_worker 1 1 aprcl_step4_worker UGGG 1 gen _aprcl_step6_worker 1 1 aprcl_step6_worker GLGGG 1 gen _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens typ(${1 code}) != t_LIST 1 list 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 void parens _cast 1 0 112 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 usmall 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 usmall 1 typ 1 usmall 1 small 1 usmall 1 bool 1 small 1 typ 1 small 1 small_int 1 small 1 usmall 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small itou(${1 code}) 1 int 1 usmall ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gtou(${1 code}) 1 gen 1 usmall gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int utoi(${1 code}) 1 usmall 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 vecvecsmall 1 vec 1 gen 1 vec 1 vec 1 vecvecsmall 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 vecvecsmall 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid 1 Fp 1 Fq _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _chinese_unit_worker 1 1 chinese_unit_worker GGGGGG 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 3 0 1 "x" 1 var 1 1 "y" 1 var fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, ${prec}) 1 str 2 real prec _const_smallreal 1 0 4 real_0(${prec}) 1 0 2 real prec real_1(${prec}) 1 1 2 real prec real_m1(${prec}) 1 -1 2 real prec stor(${1 code}, ${prec}) 1 small 2 real prec _decl_base 1 0 19 void 1 C!void 0 long 1 C!long 0 ulong 1 C!ulong 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forperm_t 1 C!forperm_t 0 forvec_t 1 C!forvec_t 0 forsubset_t 1 C!forsubset_t 0 parfor_t 1 C!parfor_t 0 parforeach_t 1 C!parforeach_t 0 parforprime_t 1 C!parforprime_t 0 parforvec_t 1 C!parforvec_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGGD1,L,p 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _dirartin_worker 1 1 dirartin_worker GUGGGG 1 gen _direllnf_worker 1 1 direllnf_worker GUG 1 gen _direllsympow_worker 1 1 direllsympow_worker GUGU 1 gen _dirgenus2_worker 1 1 dirgenus2_worker GLG 1 gen _ecpp_ispsp_worker 1 1 ecpp_ispsp_worker G 1 gen _ecpp_sqrt_worker 1 1 ecpp_sqrt_worker GGG 1 gen _ecpp_step2_worker 1 1 ecpp_step2_worker GGG 1 gen _eisker_worker 1 1 eisker_worker GGGGG 1 gen _ellQ_factorback_worker 1 1 ellQ_factorback_worker GGGG 1 gen _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int ?int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 6 ${1 code} 1 #small 1 void %ld 1 small 1 small %d 1 small_int 1 small_int ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forperm_init 1 0 1 forperm_init(&${1 code}, ${2 code}) 2 forperm gen 1 void _forperm_next 1 0 1 forperm_next(&${1 code}) 1 forperm 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forprimestep_init 1 0 1 forprimestep_init(&${1 code},${2 code},${3 code},${4 code}); 4 forprime int ?int int 1 void _forsubset_init 1 0 2 forallsubset_init(&${1 code}, ${2 code}) 2 forsubset small 1 void forsubset_init(&${1 code}, ${2 code}) 2 forsubset gen 1 void _forsubset_next 1 0 1 forsubset_next(&${1 code}) 1 forsubset 1 vecsmall _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gc_needed 1 0 1 gc_needed(${1 code}, 1) 1 pari_sp 1 bool _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _lfuninit_theta2_worker 1 1 lfuninit_theta2_worker LGGGGGG 1 gen _lfuninit_worker 1 1 lfuninit_worker LGGGGGGGG 1 gen _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _ndec2nbits 1 0 1 ndec2nbits(${1 code}) 1 small 1 small _ndec2prec 1 0 1 ndec2prec(${1 code}) 1 small 1 small _norange 1 0 1 LONG_MAX 0 1 small _nxMV_polint_worker 1 1 nxMV_polint_center_tree_worker GGGGG 1 gen _parapply_slice_worker 1 1 parapply_slice_worker GG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_init 1 0 1 parfor_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parfor gen gen gen 1 void _parfor_next 1 0 1 parfor_next(&${1 code}) 1 parfor 1 gen _parfor_stop 1 0 1 parfor_stop(&${1 code}) 1 parfor 1 void _parfor_worker 1 1 parfor_worker GG 1 gen _parforeach_init 1 0 1 parforeach_init(&${1 code}, ${2 code}, ${3 code}) 3 parforeach gen gen 1 void _parforeach_next 1 0 1 parforeach_next(&${1 code}) 1 parforeach 1 gen _parforeach_stop 1 0 1 parforeach_stop(&${1 code}) 1 parforeach 1 void _parforprime_init 1 0 1 parforprime_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parforprime gen ?gen gen 1 void _parforprime_next 1 0 1 parforprime_next(&${1 code}) 1 parforprime 1 gen _parforprime_stop 1 0 1 parforprime_stop(&${1 code}) 1 parforprime 1 void _parforprimestep_init 1 0 1 parforprimestep_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 parforprime gen ?gen gen gen 1 void _parforvec_init 1 0 1 parforvec_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parforvec vec closure ?small 1 void _parforvec_next 1 0 1 parforvec_next(&${1 code}) 1 parforvec 1 gen _parforvec_stop 1 0 1 parforvec_stop(&${1 code}) 1 parforvec 1 void _parselect_worker 1 1 parselect_worker GG 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _polint_worker 1 1 nmV_polint_center_tree_worker GGGGG 1 gen _polmodular_worker 1 1 polmodular_worker GUGGGGLGG 1 gen _primecertisvalid_ecpp_worker 1 1 primecertisvalid_ecpp_worker G 1 gen _proto_code 1 0 5 n 1 var 0 L 1 C!long 0 U 1 C!ulong 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 5 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 u 1 C!ulong 0 1 C!GEN 0 _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _tovec 1 0 7 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 gen gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 6 mkvecs(${prec}) 0 2 vec prec mkvec2(${1 code}, stoi(${prec})) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(${prec})) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(${prec})) 3 gen gen gen 2 vec prec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, stoi(${prec})) 4 gen gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(${prec})) 2 gen ... 2 vec prec _type_preorder 1 0 22 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty bool usmall small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 4 empty vecvecsmall vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 4 empty Fp Fq gen 0 4 empty FpX FqX gen 0 _typedef 1 0 48 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 ulong 1 usmall 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 vecvecsmall 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forperm_t 1 forperm 0 forprime_t 1 forprime 0 forsubset_t 1 forsubset 0 forvec_t 1 forvec 0 parfor_t 1 parfor 0 parforeach_t 1 parforeach 0 parforprime_t 1 parforprime 0 parforvec_t 1 parforvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 GEN 1 Fp 0 GEN 1 FpX 0 GEN 1 Fq 0 GEN 1 FqX 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_GG 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call2 GG 1 gen _wrap_Gp 2 0 1 ${1 code} 1 gen 1 gen 1 gp_callprec Gp 2 gen prec _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, ${prec}) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec airy 1 1 airy Gp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algadd 1 1 algadd GGG 1 gen algalgtobasis 1 1 algalgtobasis GG 1 gen algaut 1 1 algaut G 2 gen copy algb 1 1 algb G 2 gen copy algbasis 1 1 algbasis G 2 gen copy algbasistoalg 1 1 algbasistoalg GG 1 gen algcenter 1 1 algcenter G 2 gen copy algcentralproj 1 1 alg_centralproj GGD0,L, 1 gen algchar 1 1 algchar G 2 gen copy algcharpoly 1 1 algcharpoly GGDnD0,L, 1 gen algdegree 1 1 algdegree G 1 small algdep 1 1 algdep0 GLD0,L, 1 gen algdim 1 1 algdim GD0,L, 1 small algdisc 1 1 algdisc G 1 gen algdivl 1 1 algdivl GGG 1 gen algdivr 1 1 algdivr GGG 1 gen alggroup 1 1 alggroup GDG 1 gen alggroupcenter 1 1 alggroupcenter GDGD& 1 gen alghasse 1 1 alghasse GG 1 gen alghassef 1 1 alghassef G 2 gen copy alghassei 1 1 alghassei G 2 gen copy algindex 1 1 algindex GDG 1 small alginit 1 1 alginit GGDnD1,L, 1 gen alginv 1 1 alginv GG 1 gen alginvbasis 1 1 alginvbasis G 2 gen copy algisassociative 1 1 algisassociative GD0,G, 1 small_int algiscommutative 1 1 algiscommutative G 1 small_int algisdivision 1 1 algisdivision GDG 1 small_int algisdivl 1 1 algisdivl GGGD& 1 small_int algisinv 1 1 algisinv GGD& 1 small_int algisramified 1 1 algisramified GDG 1 small_int algissemisimple 1 1 algissemisimple G 1 small_int algissimple 1 1 algissimple GD0,L, 1 small_int algissplit 1 1 algissplit GDG 1 small_int alglatadd 1 1 alglatadd GGGD& 1 gen alglatcontains 1 1 alglatcontains GGGD& 1 small_int alglatelement 1 1 alglatelement GGG 1 gen alglathnf 1 1 alglathnf GGD0,G, 1 gen alglatindex 1 1 alglatindex GGG 1 gen alglatinter 1 1 alglatinter GGGD& 1 gen alglatlefttransporter 1 1 alglatlefttransporter GGG 1 gen alglatmul 1 1 alglatmul GGG 1 gen alglatrighttransporter 1 1 alglatrighttransporter GGG 1 gen alglatsubset 1 1 alglatsubset GGGD& 1 small_int algmakeintegral 1 1 algmakeintegral GD0,L, 1 gen algmul 1 1 algmul GGG 1 gen algmultable 1 1 algmultable G 2 gen copy algneg 1 1 algneg GG 1 gen algnorm 1 1 algnorm GGD0,L, 1 gen algpoleval 1 1 algpoleval GGG 1 gen algpow 1 1 algpow GGG 1 gen algprimesubalg 1 1 algprimesubalg G 1 gen algquotient 1 1 alg_quotient GGD0,L, 1 gen algradical 1 1 algradical G 1 gen algramifiedplaces 1 1 algramifiedplaces G 1 gen algrandom 1 1 algrandom GG 1 gen algrelmultable 1 1 algrelmultable G 2 gen copy algsimpledec 1 1 algsimpledec GD0,L, 1 gen algsplit 1 1 algsplit GDn 1 gen algsplittingdata 1 1 algsplittingdata G 2 gen copy algsplittingfield 1 1 algsplittingfield G 2 gen copy algsqr 1 1 algsqr GG 1 gen algsub 1 1 algsub GGG 1 gen algsubalg 1 1 algsubalg GG 1 gen algtableinit 1 1 algtableinit GDG 1 gen algtensor 1 1 algtensor GGD1,L, 1 gen algtomatrix 1 1 algtomatrix GGD0,L, 1 gen algtrace 1 1 algtrace GGD0,L, 1 gen algtype 1 1 algtype G 1 small alias 1 1 alias0 rr 1 void allocatemem 1 1 gp_allocatemem DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec arity 1 1 arity0 G 1 gen asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec asympnum 1 1 asympnum0 GDGp 2 gen prec asympnumraw 1 1 asympnumraw0 GLDGp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bessely 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bestapprnf 1 1 bestapprnf GGDGp 2 gen prec bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial0 GDG 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bitprecision 1 1 bitprecision00 GDG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, ${prec}) 1 gen 2 bnf prec Buchall(${1 code}, 0, ${prec}) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, ${prec}) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, ${prec}) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit0 GGDG 1 gen bnflog 1 1 bnflog GG 1 gen bnflogdegree 1 1 bnflogdegree GGG 1 gen bnflogef 1 1 bnflogef GG 1 gen bnfnarrow 1 1 bnfnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnfunits 1 1 bnfunits GDG 1 gen bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrchar 1 1 bnrchar GGDG 1 gen bnrclassfield 1 1 bnrclassfield GDGD0,L,p 2 gen prec bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrgaloisapply 1 1 bnrgaloisapply GGG 1 gen bnrgaloismatrix 1 1 bnrgaloismatrix GG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinitmod GGD0,L,DG 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisgalois 1 1 bnrisgalois GGG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrmap 1 1 bnrmap GG 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void call 1 1 call0 GG 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charconj 1 1 charconj0 GG 1 gen chardiv 1 1 chardiv0 GGG 1 gen chareval 1 1 chareval GGGDG 1 gen chargalois 1 1 chargalois GDG 1 gen charker 1 1 charker0 GG 1 gen charmul 1 1 charmul0 GGG 1 gen charorder 1 1 charorder0 GG 1 gen charpoly 1 1 charpoly0 GDnD5,L, 1 gen charpow 1 1 charpow0 GGG 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 11 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 list 1 list gclone(${1 code}) 1 closure 1 closure gclone(${1 code}) 1 genstr 1 genstr gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 12 gconcat(${1 code}, ${2 code}) 2 vecvecsmall vecvecsmall 1 vecvecsmall gconcat1(${1 code}) 1 vecvecsmall 1 vecsmall gconcat(${1 code}, ${2 code}) 2 mp mp 1 vec gconcat(${1 code}, ${2 code}) 2 vec mp 1 vec gconcat(${1 code}, ${2 code}) 2 mp vec 1 vec gconcat(${1 code}, ${2 code}) 2 vec vec 1 vec gconcat(${1 code}, ${2 code}) 2 list list 1 list gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat1(${1 code}) 1 gen 1 gen gconcat1(${1 code}) 2 gen 1 gen gconcat(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gconcat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content0 GDG 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfraceval 1 1 contfraceval GGD-1,L, 1 gen contfracinit 1 1 contfracinit GD-1,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 9 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol listinit(${1 code}) 1 list 1 list gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 2 0 3 mpcos(${1 code}) 1 real 1 real gcos(${1 code}, ${prec}) 1 mp 2 real prec gcos(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcos Gp 2 gen prec cosh 2 0 2 gcosh(${1 code}, ${prec}) 1 mp 2 real prec gcosh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcosh Gp 2 gen prec cotan 2 0 2 gcotan(${1 code}, ${prec}) 1 mp 2 real prec gcotan(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcotan Gp 2 gen prec cotanh 2 0 2 gcotanh(${1 code}, ${prec}) 1 mp 2 real prec gcotanh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcotanh Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &${prec}) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denominator GDG 1 gen deriv 1 1 deriv GDn 1 gen derivn 1 1 derivn GLDn 1 gen derivnum 3 0 2 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec derivfunk(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen gen 2 gen prec 1 derivnum0 V=GEDGp 2 gen prec 2 2 _wrap_Gp diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirpowers 1 1 dirpowers LGp 2 gen prec dirpowerssum 1 1 dirpowerssum0 GGp 2 gen prec dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 2 divisors(${1 code}) 2 gen ?0 1 vec divisors_factored(${1 code}) 2 gen 1 1 vec 1 divisors0 GD0,L, 1 gen divisorslenstra 1 1 divisorslenstra GGG 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellE 1 1 ellE Gp 2 gen prec ellK 1 1 ellK Gp 2 gen prec ellL1 1 1 ellL1_bitprec GD0,L,b 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 ellan GL 1 gen ellanalyticrank 1 1 ellanalyticrank_bitprec GDGb 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellbsd 1 1 ellbsd Gp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellformaldifferential 1 1 ellformaldifferential GDPDn 1 gen ellformalexp 1 1 ellformalexp GDPDn 1 gen ellformallog 1 1 ellformallog GDPDn 1 gen ellformalpoint 1 1 ellformalpoint GDPDn 1 gen ellformalw 1 1 ellformalw GDPDn 1 gen ellfromeqn 1 1 ellfromeqn G 1 gen ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GDGDGp 2 gen prec ellheightmatrix 1 1 ellheightmatrix GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, ${prec}) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellintegralmodel 1 1 ellintegralmodel GD& 1 gen ellisdivisible 1 1 ellisdivisible GGGD& 1 small ellisogeny 1 1 ellisogeny GGD0,L,DnDn 1 gen ellisogenyapply 1 1 ellisogenyapply GG 1 gen ellisomat 1 1 ellisomat GD0,L,D0,L, 1 gen ellisoncurve 1 1 ellisoncurve GG 1 gen ellisotree 1 1 ellisotree G 1 gen ellissupersingular 1 1 ellissupersingular GDG 1 small_int ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GDG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimaldisc 1 1 ellminimaldisc G 1 gen ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellminimaltwist 1 1 ellminimaltwist0 GD0,L, 1 gen ellmoddegree 1 1 ellmoddegree G 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellnonsingularmultiple 1 1 ellnonsingularmultiple GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpadicL 1 1 ellpadicL GGLDGD0,L,DG 1 gen ellpadicbsd 1 1 ellpadicbsd GGLDG 1 gen ellpadicfrobenius 1 1 ellpadicfrobenius GLL 1 gen ellpadicheight 1 1 ellpadicheight0 GGLGDG 1 gen ellpadicheightmatrix 1 1 ellpadicheightmatrix GGLG 1 gen ellpadiclambdamu 1 1 ellpadiclambdamu GLD1,L,D0,L, 1 gen ellpadiclog 1 1 ellpadiclog GGLG 1 gen ellpadicregulator 1 1 ellpadicregulator GGLG 1 gen ellpadics2 1 1 ellpadics2 GGL 1 gen ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellratpoints 1 1 ellratpoints GGD0,L, 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsea 1 1 ellsea GD0,L, 1 gen ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltamagawa 1 1 elltamagawa G 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors G 1 gen elltwist 1 1 elltwist GDG 1 gen ellweilcurve 1 1 ellweilcurve GD& 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellxn 1 1 ellxn GLDn 1 gen ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerfrac 1 1 eulerfrac L 1 gen eulerianpol 1 1 eulerianpol LDn 1 gen eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eulerpol 1 1 eulerpol LDn 1 gen eulervec 1 1 eulervec L 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, ${prec}) 1 mp 2 real prec gexp(${1 code}, ${prec}) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec exponent 1 1 gpexponent G 1 gen export 0 exportall 1 1 exportall 1 void extern 1 1 gpextern s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 6 Z_factor(${1 code}) 1 int 1 vec Z_factor(${1 code}) 2 int 1 vec Z_factor_limit(${1 code}, ${2 code}) 2 int small 1 vec factor(${1 code}) 1 gen 1 vec factor(${1 code}) 2 gen 1 vec factor0(${1 code}, ${2 code}) 2 gen gen 1 vec 1 factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factmod GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GDGD0,L, 1 gen factormodDDF 1 1 factormodDDF GDG 1 gen factormodSQF 1 1 factormodSQF GDG 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic GGL 1 gen ffcompomap 1 1 ffcompomap GG 1 gen ffembed 1 1 ffembed GG 1 gen ffextend 1 1 ffextend GGDn 1 gen fffrobenius 1 1 fffrobenius GD1,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen ffinvmap 1 1 ffinvmap G 1 gen fflog 1 1 fflog GGDG 1 gen ffmap 1 1 ffmap GG 1 gen ffmaprel 1 1 ffmaprel GG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fft 1 1 FFT GG 1 gen fftinv 1 1 FFTinv GG 1 gen fibonacci 1 1 fibo L 1 gen fileclose 1 1 gp_fileclose L 1 void fileextern 1 1 gp_fileextern s 1 small fileflush 1 1 gp_fileflush0 DG 1 void fileopen 1 1 gp_fileopen sD"r",s, 1 small fileread 1 1 gp_fileread L 1 gen filereadstr 1 1 gp_filereadstr L 1 gen filewrite 1 1 gp_filewrite Ls 1 void filewrite1 1 1 gp_filewrite1 Ls 1 void floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen fold 3 0 1 genfold(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 fold0 GG 1 gen 2 1 _wrap_GG for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void fordivfactored 1 1 fordivfactored GVI 1 void foreach 1 1 foreachpari GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}) 5 small small closure ?small 1 void 1 forell0 VLLID0,L, 1 void 2 5 _wrap_vG forfactored 1 1 forfactored V=GGI 1 void forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forperm 3 1 forperm0 GVI 1 void 2 4 _wrap_vG 3 1 3 forperm _forperm_init _forperm_next 2 gen gen 0 forprime 2 1 forprime V=GDGI 1 void 3 5 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _forprime_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forprimestep 2 1 forprimestep V=GDGGI 1 void 3 5 3 forprime _forprimestep_init _u_forprime_next 4 *notype small small gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _forprimestep_init _u_forprime_next 4 *small gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *int gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 gen gen ?gen gen 0 forqfvec 3 0 1 forqfvec1(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}) 4 gen ?gen closure 1 void 1 forqfvec0 VGDGI 1 void 2 4 _wrap_vG forsquarefree 1 1 forsquarefree V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forsubset 3 1 forsubset0 GVI 1 void 2 4 _wrap_vG 3 1 3 forsubset _forsubset_init _forsubset_next 2 gen gen 0 forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen fromdigits 1 1 fromdigits GDG 1 gen galoischardet 1 1 galoischardet GGD1,L, 1 gen galoischarpoly 1 1 galoischarpoly GGD1,L, 1 gen galoischartable 1 1 galoischartable G 1 gen galoisconjclasses 1 1 galoisconjclasses G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetgroup 2 0 3 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisgetgroup(${1 code}, ${2 code}) 2 small small 1 vec 1 galoisgetgroup LD0,L, 1 gen galoisgetname 1 1 galoisgetname LL 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gammamellininv 1 1 gammamellininv GGD0,L,b 2 gen prec gammamellininvasymp 1 1 gammamellininvasymp GDPD0,L, 1 gen gammamellininvinit 1 1 gammamellininvinit GD0,L,b 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen genus2red 1 1 genus2red GDG 1 gen getabstime 1 1 getabstime 1 small getcache 1 1 getcache 1 gen getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getlocalbitprec 1 1 getlocalbitprec b 2 small prec getlocalprec 1 1 getlocalprec p 2 small prec getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small getwalltime 1 1 getwalltime 1 gen global 0 halfgcd 1 1 ghalfgcd GG 1 gen hammingweight 1 1 hammingweight G 1 small hilbert 1 1 hilbert GGDG 1 small hyperellcharpoly 1 1 hyperellcharpoly G 1 gen hyperellpadicfrobenius 1 1 hyperellpadicfrobenius0 GGL 1 gen hyperellratpoints 1 1 hyperellratpoints GGD0,L, 1 gen hypergeom 1 1 hypergeom DGDGGp 2 gen prec hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGDG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealdown 1 1 idealdown GG 1 gen idealfactor 1 1 gpidealfactor GGDG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen idealismaximal 1 1 idealismaximal GG 1 gen idealispower 1 1 idealispower GGLD& 1 small ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog DGGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 2 0 2 idealprimedec(${1 code}, ${2 code}) 2 gen gen 1 vec idealprimedec_limit_f(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 vec 1 idealprimedec_limit_f GGD0,L, 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealredmodpower 1 1 idealredmodpower GGUD0,U, 1 gen idealstar 1 1 idealstarmod DGGD1,L,DG 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 gpidealval GGG 1 gen if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 gp_input 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgauss 3 0 1 intnumgauss(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnumgauss0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgaussinit 1 1 intnumgaussinit D0,L,p 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnumromb 3 0 1 intnumromb_bitprec(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${bitprec}) 4 gen gen gen ?small 2 gen prec 1 intnumromb0_bitprec V=GGED0,L,b 2 gen prec 2 3 _wrap_G isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 2 isprime(${1 code}) 2 int ?0 1 bool gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gispseudoprime GD0,L, 1 gen ispseudoprimepower 1 1 ispseudoprimepower GD& 1 small issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquareall(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW Gp 2 gen prec laurentseries 1 1 laurentseries0 GDPDnp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lfun 2 0 3 lfun(${1 code}, ${2 code}, ${bitprec}) 2 gen gen 2 gen prec lfun(${1 code}, ${2 code}, ${bitprec}) 3 gen gen ?0 2 gen prec lfun0(${1 code}, ${2 code}, ${3 code}, ${bitprec}) 3 gen gen small 2 gen prec 1 lfun0 GGD0,L,b 2 gen prec lfunabelianrelinit 1 1 lfunabelianrelinit GGGGD0,L,b 2 gen prec lfunan 1 1 lfunan GLp 2 gen prec lfunartin 1 1 lfunartin GGGLb 2 gen prec lfuncheckfeq 1 1 lfuncheckfeq GDGb 2 small prec lfunconductor 1 1 lfunconductor GDGD0,L,b 2 gen prec lfuncost 1 1 lfuncost0 GDGD0,L,b 2 gen prec lfuncreate 1 1 lfuncreate G 1 gen lfundiv 1 1 lfundiv GGb 2 gen prec lfundual 1 1 lfundual Gb 2 gen prec lfunetaquo 1 1 lfunetaquo G 1 gen lfungenus2 1 1 lfungenus2 G 1 gen lfunhardy 1 1 lfunhardy GGb 2 gen prec lfuninit 1 1 lfuninit0 GGD0,L,b 2 gen prec lfunlambda 1 1 lfunlambda0 GGD0,L,b 2 gen prec lfunmf 1 1 lfunmf GDGb 2 gen prec lfunmfspec 1 1 lfunmfspec Gb 2 gen prec lfunmul 1 1 lfunmul GGb 2 gen prec lfunorderzero 1 1 lfunorderzero GD-1,L,b 2 small prec lfunqf 1 1 lfunqf Gp 2 gen prec lfunrootres 1 1 lfunrootres Gb 2 gen prec lfunshift 1 1 lfunshift GGD0,L,b 2 gen prec lfunsympow 1 1 lfunsympow GU 1 gen lfuntheta 1 1 lfuntheta GGD0,L,b 2 gen prec lfunthetacost 1 1 lfunthetacost0 GDGD0,L,b 2 small prec lfunthetainit 1 1 lfunthetainit GDGD0,L,b 2 gen prec lfuntwist 1 1 lfuntwist GGb 2 gen prec lfunzeros 1 1 lfunzeros GGD8,L,b 2 gen prec lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen limitnum 1 1 limitnum0 GDGp 2 gen prec lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 mklist() 1 ?gen 1 list 1 listcreate_gp D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill W 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop0 WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput0 WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 localbitprec 1 1 localbitprec G 1 void localprec 1 1 localprec G 1 void log 2 0 1 glog(${1 code}, ${prec}) 1 gen 2 gen prec 1 glog Gp 2 gen prec log1p 1 1 glog1p Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small mapdelete 1 1 mapdelete WG 1 void mapget 1 1 mapget GG 1 gen mapisdefined 1 1 mapisdefined GGD& 1 small_int mapput 1 1 mapput WGG 1 void matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdetmod 1 1 matdetmod GG 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matimagemod 1 1 matimagemod GGD& 1 gen matindexrank 2 0 1 indexrank(${1 code}) 1 gen 1 vecvecsmall 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matinvmod 1 1 matinvmod GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec ZM_ker(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matkermod 1 1 matkermod GGD& 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matpermanent 1 1 matpermanent G 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matreduce 1 1 matreduce G 1 gen matrix 1 1 matrice GDGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen mfDelta 1 1 mfDelta 1 gen mfEH 1 1 mfEH G 1 gen mfEk 1 1 mfEk L 1 gen mfTheta 1 1 mfTheta DG 1 gen mfatkin 1 1 mfatkin GG 1 gen mfatkineigenvalues 1 1 mfatkineigenvalues GLp 2 gen prec mfatkininit 1 1 mfatkininit GLp 2 gen prec mfbasis 1 1 mfbasis GD4,L, 1 gen mfbd 1 1 mfbd GL 1 gen mfbracket 1 1 mfbracket GGD0,L, 1 gen mfcoef 1 1 mfcoef GL 1 gen mfcoefs 1 1 mfcoefs GLD1,L, 1 gen mfconductor 1 1 mfconductor GG 1 small mfcosets 1 1 mfcosets G 1 gen mfcuspisregular 1 1 mfcuspisregular GG 1 small mfcusps 1 1 mfcusps G 1 gen mfcuspval 1 1 mfcuspval GGGb 2 gen prec mfcuspwidth 1 1 mfcuspwidth GG 1 small mfderiv 1 1 mfderiv GD1,L, 1 gen mfderivE2 1 1 mfderivE2 GD1,L, 1 gen mfdescribe 1 1 mfdescribe GD& 1 gen mfdim 1 1 mfdim GD4,L, 1 gen mfdiv 1 1 mfdiv GG 1 gen mfeigenbasis 1 1 mfeigenbasis G 1 gen mfeigensearch 1 1 mfeigensearch GDG 1 gen mfeisenstein 1 1 mfeisenstein LDGDG 1 gen mfembed 1 1 mfembed0 GDGp 2 gen prec mfeval 1 1 mfeval GGGb 2 gen prec mffields 1 1 mffields G 1 gen mffromell 1 1 mffromell G 1 gen mffrometaquo 1 1 mffrometaquo GD0,L, 1 gen mffromlfun 1 1 mffromlfun Gp 2 gen prec mffromqf 1 1 mffromqf GDG 1 gen mfgaloisprojrep 1 1 mfgaloisprojrep GGp 2 gen prec mfgaloistype 1 1 mfgaloistype GDG 1 gen mfhecke 1 1 mfhecke GGL 1 gen mfheckemat 1 1 mfheckemat GG 1 gen mfinit 1 1 mfinit GD4,L, 1 gen mfisCM 1 1 mfisCM G 1 gen mfisequal 1 1 mfisequal GGD0,L, 1 small mfisetaquo 1 1 mfisetaquo GD0,L, 1 gen mfkohnenbasis 1 1 mfkohnenbasis G 1 gen mfkohnenbijection 1 1 mfkohnenbijection G 1 gen mfkohneneigenbasis 1 1 mfkohneneigenbasis GG 1 gen mflinear 1 1 mflinear GG 1 gen mfmanin 1 1 mfmanin Gb 2 gen prec mfmul 1 1 mfmul GG 1 gen mfnumcusps 1 1 mfnumcusps G 1 gen mfparams 1 1 mfparams G 1 gen mfperiodpol 1 1 mfperiodpol GGD0,L,b 2 gen prec mfperiodpolbasis 1 1 mfperiodpolbasis LD0,L, 1 gen mfpetersson 1 1 mfpetersson GDG 1 gen mfpow 1 1 mfpow GL 1 gen mfsearch 1 1 mfsearch GGD4,L, 1 gen mfshift 1 1 mfshift GL 1 gen mfshimura 1 1 mfshimura GGD1,L, 1 gen mfslashexpansion 1 1 mfslashexpansion GGGLLD&p 2 gen prec mfspace 1 1 mfspace GDG 1 small mfsplit 1 1 mfsplit GD0,L,D0,L, 1 gen mfsturm 1 1 mfsturm G 1 small mfsymbol 1 1 mfsymbol GDGb 2 gen prec mfsymboleval 1 1 mfsymboleval GGDGb 2 gen prec mftaylor 1 1 mftaylor GLD0,L,p 2 gen prec mftobasis 1 1 mftobasis GGD0,L, 1 gen mftocoset 1 1 mftocoset LGG 1 gen mftonew 1 1 mftonew GG 1 gen mftraceform 1 1 mftraceform GD0,L, 1 gen mftwist 1 1 mftwist GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small msatkinlehner 1 1 msatkinlehner GLDG 1 gen mscosets 1 1 mscosets0 GG 1 gen mscuspidal 1 1 mscuspidal GD0,L, 1 gen msdim 1 1 msdim G 1 small mseisenstein 1 1 mseisenstein G 1 gen mseval 1 1 mseval GGDG 1 gen msfarey 1 1 msfarey0 GGD& 1 gen msfromcusp 1 1 msfromcusp GG 1 gen msfromell 1 1 msfromell GD0,L, 1 gen msfromhecke 1 1 msfromhecke GGDG 1 gen msgetlevel 1 1 msgetlevel G 1 small msgetsign 1 1 msgetsign G 1 small msgetweight 1 1 msgetweight G 1 small mshecke 1 1 mshecke GLDG 1 gen msinit 1 1 msinit GGD0,L, 1 gen msissymbol 1 1 msissymbol GG 1 gen mslattice 1 1 mslattice GDG 1 gen msnew 1 1 msnew G 1 gen msomseval 1 1 msomseval GGG 1 gen mspadicL 1 1 mspadicL GDGD0,L, 1 gen mspadicinit 1 1 mspadicinit GLLD-1,L, 1 gen mspadicmoments 1 1 mspadicmoments GGD1,L, 1 gen mspadicseries 1 1 mspadicseries GD0,L, 1 gen mspathgens 1 1 mspathgens G 1 gen mspathlog 1 1 mspathlog GG 1 gen mspetersson 1 1 mspetersson GDGDG 1 gen mspolygon 1 1 mspolygon GD0,L, 1 gen msqexpansion 1 1 msqexpansion GGDP 1 gen mssplit 1 1 mssplit GDGD0,L, 1 gen msstar 1 1 msstar GDG 1 gen mstooms 1 1 mstooms GG 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis GD& 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfcompositum 1 1 nfcompositum GGGD0,L, 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc G 1 gen nfdiscfactors 1 1 nfdiscfactors G 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltembed 1 1 nfeltembed GGDGp 2 gen prec nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfeltsign 1 1 nfeltsign GGDG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 gpnfvalrem GGGD& 1 gen nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfgrunwaldwang 1 1 nfgrunwaldwang GGGGDn 1 gen nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf0 GGD0,L, 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, ${prec}) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, ${prec}) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, ${prec}) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, ${prec}) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, ${prec}) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, ${prec}) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, ${prec}) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 2 0 2 nfisincl(${1 code}, ${2 code}) 3 gen gen ?0 1 gen nfisincl0(${1 code}, ${2 code}, ${3 code}) 3 gen gen small 1 gen 1 nfisincl0 GGD0,L, 1 gen nfisisom 1 1 nfisisom GG 1 gen nfislocalpower 1 1 nfislocalpower GGGG 1 small nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodpr 1 1 nfmodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit0 GGDn 1 gen nfmodprlift 1 1 nfmodprlift GGG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfpolsturm 1 1 nfpolsturm GGDG 1 gen nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 nfrootsof1 G 1 gen nfsnf 1 1 nfsnf0 GGD0,L, 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsplitting 1 1 nfsplitting GDG 1 gen nfsubfields 1 1 nfsubfields0 GD0,L,D0,L, 1 gen nfsubfieldscm 1 1 nfsubfieldscm GD0,L, 1 gen nfsubfieldsmax 1 1 nfsubfieldsmax GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 2 0 3 gsupnorm(${1 code}, ${prec}) 1 gen 2 gen prec gsupnorm(${1 code}, ${prec}) 2 gen 2 gen prec gnorml1(${1 code}, ${prec}) 2 gen 1 2 gen prec 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numerator GDG 1 gen numtoperm 2 0 2 Z_to_perm(${1 code}, ${2 code}) 2 small int 1 vecsmall numtoperm(${1 code}, ${2 code}) 2 small gen 1 vecsmall 1 numtoperm LG 1 gen omega 1 1 omega G 1 small oo 1 1 mkoo 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 gppadicprec GG 1 gen parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 2 1 parfor0 V=GDGJDVDI 1 void 3 1 4 parfor _parfor_init _parfor_next _parfor_stop 5 gen gen ?gen closure ?notype 0 parforeach 2 1 parforeach0 GVJDVDI 1 void 3 1 4 parforeach _parforeach_init _parforeach_next _parforeach_stop 4 gen gen closure ?notype 0 parforprime 2 1 parforprime0 V=GDGJDVDI 1 void 3 1 4 parforprime _parforprime_init _parforprime_next _parforprime_stop 5 gen gen ?gen closure ?notype 0 parforprimestep 2 1 parforprimestep0 V=GDGGJDVDI 1 void 3 1 4 parforprime _parforprimestep_init _parforprime_next _parforprime_stop 6 gen gen gen ?gen closure ?notype 0 parforvec 2 1 parforvec0 V=GJDVDID0,L, 1 void 3 1 4 parforvec _parforvec_init _parforvec_next _parforvec_stop 5 vec vec closure ?notype ?small 0 parploth 2 0 1 parploth(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen closure ?small ?small 2 vec prec 1 parploth V=GGJD0,M,D0,L,p 2 gen prec parplothexport 2 0 1 parplothexport(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen closure ?small ?small 2 gen prec 1 parplothexport GV=GGJD0,M,D0,L,p 2 gen prec parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}) 3 gen gen closure 1 gen 1 parsum V=GGJ 1 gen partitions 2 0 1 partitions(${1 code}, ${2 code}, ${3 code}) 3 small ?gen ?gen 1 vecvecsmall 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permcycles 1 1 permcycles G 1 gen permorder 1 1 permorder G 1 gen permsign 1 1 permsign G 1 small permtonum 1 1 permtonum G 1 gen plot 3 0 1 pariplot(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?gen ?gen 2 void prec 1 pariplot0 V=GGEDGDGp 2 void prec 2 3 _wrap_G plotbox 1 1 plotbox LGGD0,L, 1 void plotclip 1 1 plotclip L 1 void plotcolor 1 1 plotcolor LG 1 gen plotcopy 1 1 plotcopy LLGGD0,L, 1 void plotcursor 1 1 plotcursor L 1 gen plotdraw 1 1 plotdraw GD0,L, 1 void plotexport 1 1 plotexport GGD0,L, 1 gen ploth 3 0 1 ploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?small ?small 2 gen prec 1 ploth0 V=GGED0,M,D0,L,p 2 gen prec 2 3 _wrap_G plothexport 3 0 1 plothexport(${1 code}, ${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen gen ?small ?small 2 gen prec 1 plothexport0 GV=GGED0,M,D0,L,p 2 gen prec 2 4 _wrap_G plothraw 1 1 plothraw GGD0,L, 1 gen plothrawexport 1 1 plothrawexport GGGD0,L, 1 gen plothsizes 1 1 plothsizes D0,L, 1 gen plotinit 1 1 plotinit LDGDGD0,L, 1 void plotkill 1 1 plotkill L 1 void plotlines 1 1 plotlines LGGD0,L, 1 void plotlinetype 1 1 plotlinetype LL 1 void plotmove 1 1 plotmove LGG 1 void plotpoints 1 1 plotpoints LGG 1 void plotpointsize 1 1 plotpointsize LG 1 void plotpointtype 1 1 plotpointtype LL 1 void plotrbox 1 1 plotrbox LGGD0,L, 1 void plotrecth 3 0 1 plotrecth(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 small gen gen gen ?small ?small 2 gen prec 1 plotrecth0 LV=GGED0,M,D0,L,p 2 gen prec 2 4 _wrap_G plotrecthraw 1 1 plotrecthraw LGD0,L, 1 gen plotrline 1 1 plotrline LGG 1 void plotrmove 1 1 plotrmove LGG 1 void plotrpoint 1 1 plotrpoint LGG 1 void plotscale 1 1 plotscale LGGGG 1 void plotstring 1 1 plotstring LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polclass 1 1 polclass GD0,L,Dn 1 gen polcoef 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcoeff 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoef(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 1 1 gppoldegree GDn 1 gen poldisc 2 0 2 poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscfactors 1 1 poldiscfactors GD0,L, 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval0 LDGD0,L, 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 polisirreducible G 1 small pollaguerre 1 1 pollaguerre_eval0 LDGDGD0,L, 1 gen pollead 2 0 3 leading_coeff(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval0 LDGD0,L, 1 gen polmodular 1 1 polmodular LD0,L,DGDnD0,L, 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 1 1 roots Gp 2 gen prec polrootsbound 1 1 polrootsbound GDG 1 gen polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 1 1 polrootsmod GDG 1 gen polrootspadic 1 1 polrootspadic GGL 1 gen polrootsreal 1 1 realroots GDGp 2 gen prec polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen polteichmuller 1 1 polteichmuller GUL 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polylogmult 1 1 polylogmult_interpolate GDGDGp 2 gen prec polzagier 1 1 polzag LL 1 gen powers 2 0 1 gpowers(${1 code}, ${2 code}) 2 gen small 1 vec 1 gpowers0 GLDG 1 gen precision 1 1 precision00 GDG 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primecert 1 1 primecert GD0,L, 1 gen primecertexport 1 1 primecertexport GD0,L, 1 gen primecertisvalid 1 1 primecertisvalid G 1 small primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printp 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 printp s* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodeulerrat 1 1 prodeulerrat GDGD2,L,p 2 gen prec prodinf 3 0 2 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G prodnumrat 1 1 prodnumrat GLp 2 gen prec psdraw 1 1 psdraw GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 3 0 1 psploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?small ?small 2 gen prec 1 psploth0 V=GGED0,M,D0,L,p 2 gen prec 2 3 _wrap_G psplothraw 1 1 psplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GGDG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbredsl2 1 1 qfbredsl2 GDG 1 gen qfbsolve 1 1 qfbsolve GGD0,L, 1 gen qfeval 1 1 qfeval0 DGGDG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDGDG 1 gen qfisominit 1 1 qfisominit0 GDGDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfnorm 1 1 qfnorm GDG 1 gen qforbits 1 1 qforbits GG 1 gen qfparam 1 1 qfparam GGD0,L, 1 gen qfperfection 1 1 qfperfection G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen qfsolve 1 1 qfsolve G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen0 GDn 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit0 GDn 1 gen quit 1 1 gp_quit D0,L, 1 void ramanujantau 1 1 ramanujantau G 1 gen random 2 0 3 genrand(${1 code}) 1 ?int 1 int genrand(${1 code}) 1 real 1 real genrand(${1 code}) 1 gen 1 gen 1 genrand DG 1 gen randomprime 1 1 randomprime0 DGDG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 gp_read_file D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor0 GGD0,L, 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown0 GGD0,L, 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup0 GGD0,L, 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealfactor 1 1 rnfidealfactor GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealprimedec 1 1 rnfidealprimedec GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs0 GGD0,L, 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup0 GGD0,L, 1 gen rnfinit 1 1 rnfinit0 GGD0,L, 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfislocalcyclo 1 1 rnfislocalcyclo G 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGp 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen rootsof1 1 1 grootsof1 Lp 2 gen prec round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 vecsmall 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG self 1 1 pari_self 2 gen copy seralgdep 1 1 seralgdep GLL 1 gen serchop 1 1 serchop GD0,L, 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serprec 1 1 gpserprec Gn 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 2 0 3 mpsin(${1 code}) 1 real 1 real gsin(${1 code}, ${prec}) 1 mp 2 real prec gsin(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsin Gp 2 gen prec sinc 2 0 2 gsinc(${1 code}, ${prec}) 1 mp 2 real prec gsinc(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsinc Gp 2 gen prec sinh 2 0 2 gsinh(${1 code}, ${prec}) 1 mp 2 real prec gsinh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${prec}) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G solvestep 3 0 1 solvestep(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${prec}) 5 gen gen gen gen ?small 2 gen prec 1 solvestep0 V=GGGED0,L,p 2 gen prec 2 4 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint0 GD& 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen strchr 1 1 pari_strchr G 1 gen strexpand 1 1 strexpand s* 1 gen strjoin 1 1 strjoin GDG 1 gen strprintf 1 1 strprintf ss* 1 gen strsplit 1 1 strsplit GDG 1 gen strtex 1 1 strtex s* 1 gen strtime 1 1 strtime L 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits0 GDG 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 3 0 1 sumdivmultexpr(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen gen 1 gen 1 sumdivmultexpr0 GVE 1 gen 2 3 _wrap_G sumeulerrat 1 1 sumeulerrat GDGD2,L,p 2 gen prec sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 suminf0_bitprec V=GEb 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnum0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumap 3 0 1 sumnumap(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumap0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumapinit 1 1 sumnumapinit DGp 2 gen prec sumnuminit 1 1 sumnuminit DGp 2 gen prec sumnumlagrange 3 0 1 sumnumlagrange(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumlagrange0 V=GEDGp 2 gen prec 2 2 _wrap_Gp sumnumlagrangeinit 1 1 sumnumlagrangeinit DGDGp 2 gen prec sumnummonien 3 0 1 sumnummonien(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnummonien0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnummonieninit 1 1 sumnummonieninit DGDGDGp 2 gen prec sumnumrat 1 1 sumnumrat GGp 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 gpsystem s 1 void tan 2 0 2 gtan(${1 code}, ${prec}) 1 mp 2 real prec gtan(${1 code}, ${prec}) 1 gen 2 gen prec 1 gtan Gp 2 gen prec tanh 2 0 2 gtanh(${1 code}, ${prec}) 1 mp 2 real prec gtanh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teichmuller GDG 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void unexport 0 unexportall 1 1 unexportall 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gpvaluation GG 1 gen varhigher 1 1 varhigher sDn 1 gen variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen variables 1 1 variables_vec DG 1 gen varlower 1 1 varlower sDn 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecprod 1 1 vecprod G 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen ?small 1 vecsmall sort(${1 code}) 3 vecvecsmall ?0 1 vecvecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetahurwitz 1 1 zetahurwitz GGD0,L,b 2 gen prec zetamult 1 1 zetamult_interpolate GDGp 2 gen prec zetamultall 1 1 zetamultall LD0,L,p 2 gen prec zetamultconvert 1 1 zetamultconvert GD1,L, 1 gen zetamultdual 1 1 zetamultdual G 1 gen znchar 1 1 znchar G 1 gen zncharconductor 1 1 zncharconductor GG 1 gen znchardecompose 1 1 znchardecompose GGG 1 gen znchargauss 1 1 znchargauss GGDGb 2 gen prec zncharinduce 1 1 zncharinduce GGG 1 gen zncharisodd 1 1 zncharisodd GG 1 small znchartokronecker 1 1 znchartokronecker GGD0,L, 1 gen znchartoprimitive 1 1 znchartoprimitive GG 1 gen znconreychar 1 1 znconreychar GG 1 gen znconreyconductor 1 1 znconreyconductor GGD& 1 gen znconreyexp 1 1 znconreyexp GG 1 gen znconreylog 1 1 znconreylog GG 1 gen zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog0 GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar0 GD0,L, 1 gen gp2c-0.0.12/desc/override.desc0000644000175000017500000000000012455576706012752 00000000000000gp2c-0.0.12/desc/func27.dsc0000644000175000017500000022374312314047672012104 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_get_histtime D0,L, 1 small +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 5 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(prec) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(prec) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 listcreate() 0 1 list gtolist(${1 code}) 1 gen 1 list 1 gtolist DG 1 gen Mat 1 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(prec) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 gtoser GDnDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 7 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 2 0 1 deriv(${1 code},-1) 1 gen 1 gen 1 deriv GDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 14 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 16 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 14 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.futu 1 1 member_futu G 2 gen copy _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vec copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vec copy member_group(${1 code}) 1 gen 2 vec copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 2 gen copy _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 12 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 16 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, prec) 2 gen gen 2 gen prec 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 concat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 13 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 gal parens _cast 1 0 96 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 small 1 typ 1 small 1 small_int 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, prec) 1 str 2 real prec _const_smallreal 1 0 4 real_0(prec) 1 0 2 real prec real_1(prec) 1 1 2 real prec real_m1(prec) 1 -1 2 real prec stor(${1 code}, prec) 1 small 2 real prec _decl_base 1 0 12 void 1 C!void 0 long 1 C!long 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forvec_t 1 C!forvec_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGp 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 5 ${1 code} 1 #small 1 void %ld 1 small 1 small ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _parapply_worker 1 1 parapply_worker GG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_worker 1 1 parfor_worker GG 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _proto_code 1 0 4 n 1 var 0 L 1 C!long 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 4 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 1 C!GEN 0 _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _tovec 1 0 6 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 5 mkvecs(prec) 0 2 vec prec mkvec2(${1 code}, stoi(prec)) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(prec)) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(prec)) 3 gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(prec)) 2 gen ... 2 vec prec _type_preorder 1 0 19 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 _typedef 1 0 36 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forprime_t 1 forprime 0 forvec_t 1 forvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, prec) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algdep 1 1 algdep0 GLD0,L, 1 gen alias 1 1 alias0 rr 1 void allocatemem 1 1 allocatemem0 DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial GL 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfcompress 1 1 bnfcompress G 1 gen bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, prec) 1 gen 2 bnf prec Buchall(${1 code}, 0, prec) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, prec) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, prec) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit GG 1 gen bnfnarrow 1 1 buchnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charpoly 1 1 charpoly0 GDnD5,L, 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 8 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 8 concat(${1 code}, ${2 code}) 2 mp mp 1 vec concat(${1 code}, ${2 code}) 2 vec mp 1 vec concat(${1 code}, ${2 code}) 2 mp vec 1 vec concat(${1 code}, ${2 code}) 2 vec vec 1 vec concat(${1 code}, ${2 code}) 2 list list 1 list concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 code}, ${2 code}) 2 gen ?gen 1 gen 1 concat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content G 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 8 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gcosh Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &prec) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denom G 1 gen deriv 1 1 deriv GDn 1 gen derivnum 3 0 1 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 2 gen gen 2 gen prec 1 derivnum0 V=GEp 2 gen prec 2 2 _wrap_G diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 1 divisors(${1 code}) 1 gen 1 vec 1 divisors G 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellL1 1 1 ellL1 GLp 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 anell GL 1 gen ellanalyticrank 1 1 ellanalyticrank GDGp 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GGD2,L,p 2 gen prec ellheightmatrix 1 1 mathell GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, prec) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellisoncurve 1 1 ellisoncurve GG 1 gen ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors0 GD0,L, 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, prec) 1 mp 2 mp prec gexp(${1 code}, prec) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec extern 1 1 extern0 s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 3 Z_factor(${1 code}) 2 int ?-1 1 vec factor(${1 code}) 2 gen ?-1 1 vec factor0(${1 code}, ${2 code}) 2 gen small 1 vec 1 gp_factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factcantor GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GGD0,L, 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic0 GGLD0,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen fflog 1 1 fflog GGDG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fibonacci 1 1 fibo L 1 gen floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}) 4 small small closure 1 void 1 forell0 VLLI 1 void 2 4 _wrap_vG forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forprime 2 1 forprime V=GDGI 1 void 3 4 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forqfvec 1 1 forqfvec0 VGDGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen genus2red 1 1 genus2red GGDG 1 gen getabstime 1 1 getabstime 1 small getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small global 0 hammingweight 1 1 hammingweight G 1 small hilbert 1 1 hilbert GGDG 1 small hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 idealfactor GG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog GGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 1 1 idealprimedec GG 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealstar 1 1 idealstar0 GGD1,L, 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 idealval GGG 1 small if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 input0 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfouriercos 3 0 1 intfouriercos(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfourcos0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfourierexp 3 0 1 intfourierexp(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfourexp0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfouriersin 3 0 1 intfouriercos(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfoursin0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?small ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,D0,L,p 2 gen prec 2 3 _wrap_G intlaplaceinv 3 0 1 intlaplaceinv(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intlaplaceinv0 V=GGEDGp 2 gen prec 2 3 _wrap_G intmellininv 3 0 1 intmellininv(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intmellininv0 V=GGEDGp 2 gen prec 2 3 _wrap_G intmellininvshort 1 1 intmellininvshort GGGp 2 gen prec intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnuminitgen 1 1 intnuminitgen0 VGGED0,L,D0,L,p 2 gen prec intnumromb 3 0 1 intnumromb(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?small 2 gen prec 1 intnumromb0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnumstep 1 1 intnumstep p 2 small prec isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 4 isprime(${1 code}) 2 int ?0 1 bool plisprime(${1 code}, 0) 2 int 1 1 bool plisprime(${1 code}, 1) 2 int 2 1 gen gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 bool 1 gispseudoprime GD0,L, 1 gen issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquarerem(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW Gp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 listcreate() 1 ?gen 1 list 1 listcreate D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill G 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 log 2 0 1 glog(${1 code}, prec) 1 gen 2 gen prec 1 glog Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec keri(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matrix 1 1 matrice GGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod0 GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis_gp GDGDG 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc_gp GDGDG 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 nfval GGG 1 small nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf GG 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, prec) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, prec) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, prec) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, prec) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, prec) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, prec) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, prec) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsnf GG 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsubfields 1 1 nfsubfields GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 1 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numer G 1 gen numtoperm 1 1 numtoperm LG 1 gen omega 1 1 omega G 1 small padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 padicprec GG 1 small parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 1 1 parfor V=GDGJDVDI 1 void parforprime 1 1 parforprime V=GDGJDVDI 1 void parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 parsum V=GGJDG 1 gen partitions 1 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permtonum 1 1 permtonum G 1 gen plot 1 1 plot V=GGEDGDGp 2 void prec plotbox 1 1 rectbox LGG 1 void plotclip 1 1 rectclip L 1 void plotcolor 1 1 rectcolor LL 1 void plotcopy 1 1 rectcopy_gen LLGGD0,L, 1 void plotcursor 1 1 rectcursor L 1 gen plotdraw 1 1 rectdraw_flag GD0,L, 1 void ploth 1 1 ploth V=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plothraw 1 1 plothraw GGD0,L, 1 gen plothsizes 1 1 plothsizes_flag D0,L, 1 gen plotinit 1 1 initrect_gen LDGDGD0,L, 1 void plotkill 1 1 killrect L 1 void plotlines 1 1 rectlines LGGD0,L, 1 void plotlinetype 1 1 rectlinetype LL 1 void plotmove 1 1 rectmove LGG 1 void plotpoints 1 1 rectpoints LGG 1 void plotpointsize 1 1 rectpointsize LG 1 void plotpointtype 1 1 rectpointtype LL 1 void plotrbox 1 1 rectrbox LGG 1 void plotrecth 1 1 rectploth LV=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plotrecthraw 1 1 rectplothraw LGD0,L, 1 gen plotrline 1 1 rectrline LGG 1 void plotrmove 1 1 rectrmove LGG 1 void plotrpoint 1 1 rectrpoint LGG 1 void plotscale 1 1 rectscale LGGGG 1 void plotstring 1 1 rectstring3 LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polcoeff 2 0 2 constant_term(${1 code}) 2 pol 0 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 2 0 3 degpol(${1 code}) 1 pol 1 small degree(${1 code}) 1 gen 1 small poldegree(${1 code}, ${2 code}) 2 gen var 1 small 1 poldegree GDn 1 small poldisc 2 0 3 discsr(${1 code}) 1 pol 1 gen poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval LDG 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 isirreducible G 1 small pollead 2 0 3 leading_term(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval LDG 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 1 1 roots Gp 2 gen prec polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 2 0 4 rootmod(${1 code}, ${2 code}) 3 pol int ?0 1 vec rootmod2(${1 code}, ${2 code}) 3 pol int 1 1 vec $"Bad flag in polrootsmod" 3 pol int #small 1 vec rootmod0(${1 code}, ${2 code}, ${3 code}) 3 pol int small 1 vec 1 rootmod0 GGD0,L, 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen precision 2 0 8 prec2ndec(gprecision(${1 code})) 1 real 1 small precision0(${1 code}, 0) 1 gen 1 int prec2ndec(gprecision(${1 code})) 2 real 0 1 small precision0(${1 code}, 0) 2 gen 0 1 int rtor(${1 code}, ndec2prec(${2 code})) 2 real #small 1 real gprec(${1 code}, ${2 code}) 2 gen #small 1 gen precision0(${1 code}, ${2 code}) 2 real small 1 real precision0(${1 code}, ${2 code}) 2 gen small 1 gen 1 precision0 GD0,L, 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodinf 3 0 1 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, prec) 3 gen gen ?small 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G psdraw 1 1 postdraw_flag GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 postploth V=GGEpD0,L,D0,L, 2 gen prec psplothraw 1 1 postplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDG 1 gen qfisominit 1 1 qfisominit0 GDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfnorm 1 1 qfnorm GDG 1 gen qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen G 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit G 1 gen quit 1 1 gp_quit D0,L, 1 void random 1 1 genrand DG 1 gen randomprime 1 1 randomprime DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 read0 D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GG 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown GG 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup GG 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs GG 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup GG 1 gen rnfinit 1 1 rnfinit GG 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 gen 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG seralgdep 1 1 seralgdep GLL 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinh 1 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, prec) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, prec) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits G 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 1 1 sumdivmultexpr GVE 1 gen sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 2 gen gen 2 gen prec 1 suminf0 V=GEp 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?gen ?small 2 gen prec 1 sumnum0 V=GGEDGD0,L,p 2 gen prec 2 3 _wrap_G sumnumalt 3 0 1 sumnumalt(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?gen ?small 2 gen prec 1 sumnumalt0 V=GGEDGD0,L,p 2 gen prec 2 3 _wrap_G sumnuminit 1 1 sumnuminit GD0,L,D1,L,p 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 2 0 1 system(${1 code}) 1 str 1 void 1 system0 s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teich G 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gvaluation GG 1 small variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, 0) 2 vecsmall ?gen 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen small 1 vecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetak 1 1 gzetakall GGD0,L,p 2 gen prec zetakinit 1 1 initzeta Gp 2 gen prec zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar G 1 gen gp2c-0.0.12/desc/func211.dsc0000644000175000017500000027766613324126575012176 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_get_histtime D0,L, 1 small +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 9 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen Fp_neg(${1 code}, p) 1 Fp 1 Fp FpX_neg(${1 code}, p) 1 FpX 1 FpX Fq_neg(${1 code}, T, p) 1 Fq 1 Fq FqX_neg(${1 code}, T, p) 1 FqX 1 FqX 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(${prec}) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(${prec}) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 mklist() 0 1 list listinit(gtolist(${1 code})) 1 gen 1 list 1 gtolist DG 1 gen Map 2 0 2 mkmap() 0 1 list listinit(gtomap(${1 code})) 1 gen 1 list 1 gtomap DG 1 gen Mat 2 0 2 cgetg(1, t_MAT) 0 1 vec gtomat(${1 code}) 1 gen 1 vec 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(${prec}) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 Ser0 GDnDGDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 9 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen FpX_rem(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX FqX_rem(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 2 0 3 deriv(${1 code},-1) 1 gen 1 gen FpX_deriv(${1 code}, p) 1 FpX 1 FpX FqX_deriv(${1 code}, T, p) 1 FqX 1 FqX 1 deriv GDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 34 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_mulu(${2 code}, ${1 code}, p) 2 usmall Fp 1 Fp Fp_muls(${2 code}, ${1 code}, p) 2 small Fp 1 Fp Fp_mulu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_muls(${1 code}, ${2 code}, p) 2 Fp small 1 Fp FpX_mulu(${2 code}, ${1 code}, p) 2 usmall FpX 1 FpX FpX_mulu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX FpX_Fp_mul(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_Fp_mul(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_mul(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_mulu(${2 code}, ${1 code}, T, p) 2 usmall Fq 1 Fq Fq_mulu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_Fp_mul(${1 code}, ${2 code}, T, p) 2 Fq Fp 1 Fq Fq_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp Fq 1 Fq FqX_mulu(${2 code}, ${1 code}, T, p) 2 usmall FqX 1 FqX FqX_mulu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX FqX_Fp_mul(${1 code}, ${2 code}, T, p) 2 FqX Fp 1 FqX FqX_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp FqX 1 FqX FqX_Fq_mul(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_Fq_mul(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_mul(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 24 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_add(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp FpX_Fp_add(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_Fp_add(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_add(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_add(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_add(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_Fq_add(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_add(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 21 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_sub(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fp_FpX_sub(${1 code}, ${2 code}, p) 2 Fp FpX 1 FpX FpX_Fp_sub(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_sub(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_sub(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_sub(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_sub(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.futu 1 1 member_futu G 2 gen copy _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vec copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vec copy member_group(${1 code}) 1 gen 2 vec copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 2 gen copy _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 16 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_halve(${1 code}, p) 2 Fp 2 1 Fp Fp_div(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fq_halve(${1 code}, T, p) 2 Fq 2 1 Fq Fq_div(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _F2xq_log_Coppersmith_worker 1 1 F2xq_log_Coppersmith_worker GLGG 1 gen _Flxq_log_Coppersmith_worker 1 1 Flxq_log_Coppersmith_worker GLGG 1 gen _Fp_log_sieve_worker 1 1 Fp_log_sieve_worker LLGGGGGG 1 gen _ZM_det_worker 1 1 ZM_det_worker GG 1 gen _ZM_inv_worker 1 1 ZM_inv_worker GG 1 gen _ZX_ZXY_resultant_worker 1 1 ZX_ZXY_resultant_worker GGGGG 1 gen _ZX_resultant_worker 1 1 ZX_resultant_worker GGGG 1 gen _ZabM_inv_worker 1 1 ZabM_inv_worker GGG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 30 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, ${prec}) 2 gen gen 2 gen prec Fp_sqr(${1 code}, p) 2 Fp 2 1 Fp Fp_powu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_pows(${1 code}, ${2 code}, p) 2 Fp small 1 Fp Fp_pow(${1 code}, ${2 code}, p) 2 Fp int 1 Fp FpX_sqr(${1 code}, p) 2 FpX 2 1 FpX FpX_powu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq FqX_sqr(${1 code}, T, p) 2 FqX 2 1 FqX FqX_powu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 gconcat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _aprcl_step4_worker 1 1 aprcl_step4_worker UGGG 1 gen _aprcl_step6_worker 1 1 aprcl_step6_worker GLGGG 1 gen _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens typ(${1 code}) != t_LIST 1 list 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 void parens _cast 1 0 109 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 usmall 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 usmall 1 typ 1 usmall 1 small 1 usmall 1 bool 1 small 1 typ 1 small 1 small_int 1 small 1 usmall 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small itou(${1 code}) 1 int 1 usmall ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gtou(${1 code}) 1 gen 1 usmall gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int utoi(${1 code}) 1 usmall 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid 1 Fp 1 Fq _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, ${prec}) 1 str 2 real prec _const_smallreal 1 0 4 real_0(${prec}) 1 0 2 real prec real_1(${prec}) 1 1 2 real prec real_m1(${prec}) 1 -1 2 real prec stor(${1 code}, ${prec}) 1 small 2 real prec _decl_base 1 0 15 void 1 C!void 0 long 1 C!long 0 ulong 1 C!ulong 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forperm_t 1 C!forperm_t 0 forvec_t 1 C!forvec_t 0 forsubset_t 1 C!forsubset_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGp 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 6 ${1 code} 1 #small 1 void %ld 1 small 1 small %d 1 small_int 1 small_int ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forperm_init 1 0 1 forperm_init(&${1 code}, ${2 code}) 2 forperm gen 1 void _forperm_next 1 0 1 forperm_next(&${1 code}) 1 forperm 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forprimestep_init 1 0 1 forprimestep_init(&${1 code},${2 code},${3 code},${4 code}); 4 forprime int ?int int 1 void _forsubset_init 1 0 2 forallsubset_init(&${1 code}, ${2 code}) 2 forsubset small 1 void forsubset_init(&${1 code}, ${2 code}) 2 forsubset gen 1 void _forsubset_next 1 0 1 forsubset_next(&${1 code}) 1 forsubset 1 vecsmall _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gc_needed 1 0 1 gc_needed(${1 code}, 1) 1 pari_sp 1 bool _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _ndec2nbits 1 0 1 ndec2nbits(${1 code}) 1 small 1 small _ndec2prec 1 0 1 ndec2prec(${1 code}) 1 small 1 small _norange 1 0 1 LONG_MAX 0 1 small _nxMV_polint_worker 1 1 nxMV_polint_center_tree_worker GGGGG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_worker 1 1 parfor_worker GG 1 gen _parselect_worker 1 1 parselect_worker GG 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _polint_worker 1 1 nmV_polint_center_tree_worker GGGGG 1 gen _polmodular_worker 1 1 polmodular_worker UUUGGGGLGG 1 gen _proto_code 1 0 5 n 1 var 0 L 1 C!long 0 U 1 C!ulong 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 5 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 u 1 C!ulong 0 1 C!GEN 0 _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _tovec 1 0 7 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 gen gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 6 mkvecs(${prec}) 0 2 vec prec mkvec2(${1 code}, stoi(${prec})) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(${prec})) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(${prec})) 3 gen gen gen 2 vec prec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, stoi(${prec})) 4 gen gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(${prec})) 2 gen ... 2 vec prec _type_preorder 1 0 22 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty bool usmall small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 4 empty Fp Fq gen 0 4 empty FpX FqX gen 0 _typedef 1 0 43 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 ulong 1 usmall 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forperm_t 1 forperm 0 forprime_t 1 forprime 0 forsubset_t 1 forsubset 0 forvec_t 1 forvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 GEN 1 Fp 0 GEN 1 FpX 0 GEN 1 Fq 0 GEN 1 FqX 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_GG 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call2 GG 1 gen _wrap_Gp 2 0 1 ${1 code} 1 gen 1 gen 1 gp_callprec Gp 2 gen prec _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, ${prec}) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algadd 1 1 algadd GGG 1 gen algalgtobasis 1 1 algalgtobasis GG 1 gen algaut 1 1 algaut G 2 gen copy algb 1 1 algb G 2 gen copy algbasis 1 1 algbasis G 2 gen copy algbasistoalg 1 1 algbasistoalg GG 1 gen algcenter 1 1 algcenter G 2 gen copy algcentralproj 1 1 alg_centralproj GGD0,L, 1 gen algchar 1 1 algchar G 2 gen copy algcharpoly 1 1 algcharpoly GGDnD0,L, 1 gen algdegree 1 1 algdegree G 1 small algdep 1 1 algdep0 GLD0,L, 1 gen algdim 1 1 algdim GD0,L, 1 small algdisc 1 1 algdisc G 1 gen algdivl 1 1 algdivl GGG 1 gen algdivr 1 1 algdivr GGG 1 gen alggroup 1 1 alggroup GDG 1 gen alggroupcenter 1 1 alggroupcenter GDGD& 1 gen alghasse 1 1 alghasse GG 1 gen alghassef 1 1 alghassef G 2 gen copy alghassei 1 1 alghassei G 2 gen copy algindex 1 1 algindex GDG 1 small alginit 1 1 alginit GGDnD1,L, 1 gen alginv 1 1 alginv GG 1 gen alginvbasis 1 1 alginvbasis G 2 gen copy algisassociative 1 1 algisassociative GD0,G, 1 small_int algiscommutative 1 1 algiscommutative G 1 small_int algisdivision 1 1 algisdivision GDG 1 small_int algisdivl 1 1 algisdivl GGGD& 1 small_int algisinv 1 1 algisinv GGD& 1 small_int algisramified 1 1 algisramified GDG 1 small_int algissemisimple 1 1 algissemisimple G 1 small_int algissimple 1 1 algissimple GD0,L, 1 small_int algissplit 1 1 algissplit GDG 1 small_int alglatadd 1 1 alglatadd GGGD& 1 gen alglatcontains 1 1 alglatcontains GGGD& 1 small_int alglatelement 1 1 alglatelement GGG 1 gen alglathnf 1 1 alglathnf GGD0,G, 1 gen alglatindex 1 1 alglatindex GGG 1 gen alglatinter 1 1 alglatinter GGGD& 1 gen alglatlefttransporter 1 1 alglatlefttransporter GGG 1 gen alglatmul 1 1 alglatmul GGG 1 gen alglatrighttransporter 1 1 alglatrighttransporter GGG 1 gen alglatsubset 1 1 alglatsubset GGGD& 1 small_int algmakeintegral 1 1 algmakeintegral GD0,L, 1 gen algmul 1 1 algmul GGG 1 gen algmultable 1 1 algmultable G 2 gen copy algneg 1 1 algneg GG 1 gen algnorm 1 1 algnorm GGD0,L, 1 gen algpoleval 1 1 algpoleval GGG 1 gen algpow 1 1 algpow GGG 1 gen algprimesubalg 1 1 algprimesubalg G 1 gen algquotient 1 1 alg_quotient GGD0,L, 1 gen algradical 1 1 algradical G 1 gen algramifiedplaces 1 1 algramifiedplaces G 1 gen algrandom 1 1 algrandom GG 1 gen algrelmultable 1 1 algrelmultable G 2 gen copy algsimpledec 1 1 algsimpledec GD0,L, 1 gen algsplit 1 1 algsplit GDn 1 gen algsplittingdata 1 1 algsplittingdata G 2 gen copy algsplittingfield 1 1 algsplittingfield G 2 gen copy algsqr 1 1 algsqr GG 1 gen algsub 1 1 algsub GGG 1 gen algsubalg 1 1 algsubalg GG 1 gen algtableinit 1 1 algtableinit GDG 1 gen algtensor 1 1 algtensor GGD1,L, 1 gen algtomatrix 1 1 algtomatrix GGD0,L, 1 gen algtrace 1 1 algtrace GGD0,L, 1 gen algtype 1 1 algtype G 1 small alias 1 1 alias0 rr 1 void allocatemem 1 1 gp_allocatemem DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec asympnum 1 1 asympnum0 GD0,L,DGp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bestapprnf 1 1 bestapprnf GGDGp 2 gen prec bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial0 GDG 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bitprecision 1 1 bitprecision0 GD0,L, 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfcompress 1 1 bnfcompress G 1 gen bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, ${prec}) 1 gen 2 bnf prec Buchall(${1 code}, 0, ${prec}) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, ${prec}) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, ${prec}) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit GG 1 gen bnflog 1 1 bnflog GG 1 gen bnflogdegree 1 1 bnflogdegree GGG 1 gen bnflogef 1 1 bnflogef GG 1 gen bnfnarrow 1 1 bnfnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrchar 1 1 bnrchar GGDG 1 gen bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrgaloisapply 1 1 bnrgaloisapply GGG 1 gen bnrgaloismatrix 1 1 bnrgaloismatrix GG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisgalois 1 1 bnrisgalois GGG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void call 1 1 call0 GG 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charconj 1 1 charconj0 GG 1 gen chardiv 1 1 chardiv0 GGG 1 gen chareval 1 1 chareval GGGDG 1 gen chargalois 1 1 chargalois GDG 1 gen charker 1 1 charker0 GG 1 gen charmul 1 1 charmul0 GGG 1 gen charorder 1 1 charorder0 GG 1 gen charpoly 1 1 charpoly0 GDnD5,L, 1 gen charpow 1 1 charpow0 GGG 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 11 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 list 1 list gclone(${1 code}) 1 closure 1 closure gclone(${1 code}) 1 genstr 1 genstr gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 10 gconcat(${1 code}, ${2 code}) 2 mp mp 1 vec gconcat(${1 code}, ${2 code}) 2 vec mp 1 vec gconcat(${1 code}, ${2 code}) 2 mp vec 1 vec gconcat(${1 code}, ${2 code}) 2 vec vec 1 vec gconcat(${1 code}, ${2 code}) 2 list list 1 list gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat1(${1 code}) 1 gen 1 gen gconcat1(${1 code}) 2 gen 1 gen gconcat(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gconcat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content0 GDG 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfraceval 1 1 contfraceval GGD-1,L, 1 gen contfracinit 1 1 contfracinit GD-1,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 9 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol listinit(${1 code}) 1 list 1 list gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gcosh Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec cotanh 1 1 gcotanh Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &${prec}) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denominator GDG 1 gen deriv 1 1 deriv GDn 1 gen derivnum 3 0 2 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec derivfunk(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen gen 2 gen prec 1 derivnum0 V=GEDGp 2 gen prec 2 2 _wrap_Gp diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 2 divisors(${1 code}) 2 gen ?0 1 vec divisors_factored(${1 code}) 2 gen 1 1 vec 1 divisors0 GD0,L, 1 gen divisorslenstra 1 1 divisorslenstra GGG 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellL1 1 1 ellL1_bitprec GD0,L,b 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 ellan GL 1 gen ellanalyticrank 1 1 ellanalyticrank_bitprec GDGb 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellbsd 1 1 ellbsd Gp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellformaldifferential 1 1 ellformaldifferential GDPDn 1 gen ellformalexp 1 1 ellformalexp GDPDn 1 gen ellformallog 1 1 ellformallog GDPDn 1 gen ellformalpoint 1 1 ellformalpoint GDPDn 1 gen ellformalw 1 1 ellformalw GDPDn 1 gen ellfromeqn 1 1 ellfromeqn G 1 gen ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GGDGp 2 gen prec ellheightmatrix 1 1 ellheightmatrix GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, ${prec}) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellintegralmodel 1 1 ellintegralmodel GD& 1 gen ellisdivisible 1 1 ellisdivisible GGGD& 1 small ellisogeny 1 1 ellisogeny GGD0,L,DnDn 1 gen ellisogenyapply 1 1 ellisogenyapply GG 1 gen ellisomat 1 1 ellisomat GD0,L,D0,L, 1 gen ellisoncurve 1 1 ellisoncurve GG 1 gen ellisotree 1 1 ellisotree G 1 gen ellissupersingular 1 1 ellissupersingular GDG 1 small_int ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GDG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimaldisc 1 1 ellminimaldisc G 1 gen ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellminimaltwist 1 1 ellminimaltwist0 GD0,L, 1 gen ellmoddegree 1 1 ellmoddegree G 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellnonsingularmultiple 1 1 ellnonsingularmultiple GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpadicL 1 1 ellpadicL GGLDGD0,L,DG 1 gen ellpadicbsd 1 1 ellpadicbsd GGLDG 1 gen ellpadicfrobenius 1 1 ellpadicfrobenius GLL 1 gen ellpadicheight 1 1 ellpadicheight0 GGLGDG 1 gen ellpadicheightmatrix 1 1 ellpadicheightmatrix GGLG 1 gen ellpadiclog 1 1 ellpadiclog GGLG 1 gen ellpadicregulator 1 1 ellpadicregulator GGLG 1 gen ellpadics2 1 1 ellpadics2 GGL 1 gen ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellratpoints 1 1 ellratpoints GGD0,L, 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsea 1 1 ellsea GD0,L, 1 gen ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltamagawa 1 1 elltamagawa G 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors G 1 gen elltwist 1 1 elltwist GDG 1 gen ellweilcurve 1 1 ellweilcurve GD& 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellxn 1 1 ellxn GLDn 1 gen ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, ${prec}) 1 mp 2 mp prec gexp(${1 code}, ${prec}) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec exponent 1 1 gpexponent G 1 gen extern 1 1 gpextern s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 6 Z_factor(${1 code}) 1 int 1 vec Z_factor(${1 code}) 2 int 1 vec Z_factor_limit(${1 code}, ${2 code}) 2 int small 1 vec factor(${1 code}) 1 gen 1 vec factor(${1 code}) 2 gen 1 vec factor0(${1 code}, ${2 code}) 2 gen gen 1 vec 1 factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factmod GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GDGD0,L, 1 gen factormodDDF 1 1 factormodDDF GDG 1 gen factormodSQF 1 1 factormodSQF GDG 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic GGL 1 gen ffcompomap 1 1 ffcompomap GG 1 gen ffembed 1 1 ffembed GG 1 gen ffextend 1 1 ffextend GGDn 1 gen fffrobenius 1 1 fffrobenius GD1,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen ffinvmap 1 1 ffinvmap G 1 gen fflog 1 1 fflog GGDG 1 gen ffmap 1 1 ffmap GG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fibonacci 1 1 fibo L 1 gen fileclose 1 1 gp_fileclose L 1 void fileextern 1 1 gp_fileextern s 1 small fileflush 1 1 gp_fileflush0 DG 1 void fileopen 1 1 gp_fileopen sD"r",s, 1 small fileread 1 1 gp_fileread L 1 gen filereadstr 1 1 gp_filereadstr L 1 gen filewrite 1 1 gp_filewrite Ls 1 void filewrite1 1 1 gp_filewrite1 Ls 1 void floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen fold 3 0 1 genfold(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 fold0 GG 1 gen 2 1 _wrap_GG for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void fordivfactored 1 1 fordivfactored GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}) 5 small small closure ?small 1 void 1 forell0 VLLID0,L, 1 void 2 5 _wrap_vG forfactored 1 1 forfactored V=GGI 1 void forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forperm 3 1 forperm0 GVI 1 void 2 4 _wrap_vG 3 1 3 forperm _forperm_init _forperm_next 2 gen gen 0 forprime 2 1 forprime V=GDGI 1 void 3 5 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _forprime_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forprimestep 2 1 forprimestep V=GDGGI 1 void 3 5 3 forprime _forprimestep_init _u_forprime_next 4 *notype small small gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _forprimestep_init _u_forprime_next 4 *small gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *int gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 gen gen ?gen gen 0 forqfvec 1 1 forqfvec0 VGDGI 1 void forsquarefree 1 1 forsquarefree V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forsubset 3 1 forsubset0 GVI 1 void 2 4 _wrap_vG 3 1 3 forsubset _forsubset_init _forsubset_next 2 gen gen 0 forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen fromdigits 1 1 fromdigits GDG 1 gen galoischardet 1 1 galoischardet GGD1,L, 1 gen galoischarpoly 1 1 galoischarpoly GGD1,L, 1 gen galoischartable 1 1 galoischartable G 1 gen galoisconjclasses 1 1 galoisconjclasses G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetgroup 2 0 3 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisgetgroup(${1 code}, ${2 code}) 2 small small 1 vec 1 galoisgetgroup LD0,L, 1 gen galoisgetname 1 1 galoisgetname LL 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gammamellininv 1 1 gammamellininv GGD0,L,b 2 gen prec gammamellininvasymp 1 1 gammamellininvasymp GDPD0,L, 1 gen gammamellininvinit 1 1 gammamellininvinit GD0,L,b 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen genus2red 1 1 genus2red GDG 1 gen getabstime 1 1 getabstime 1 small getcache 1 1 getcache 1 gen getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small getwalltime 1 1 getwalltime 1 gen global 0 hammingweight 1 1 hammingweight G 1 small hilbert 1 1 hilbert GGDG 1 small hyperellcharpoly 1 1 hyperellcharpoly G 1 gen hyperellpadicfrobenius 1 1 hyperellpadicfrobenius GUL 1 gen hyperellratpoints 1 1 hyperellratpoints GGD0,L, 1 gen hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGDG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 gpidealfactor GGDG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen idealispower 1 1 idealispower GGLD& 1 small ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog DGGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 2 0 2 idealprimedec(${1 code}, ${2 code}) 2 gen gen 1 vec idealprimedec_limit_f(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 vec 1 idealprimedec_limit_f GGD0,L, 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealredmodpower 1 1 idealredmodpower GGUD0,U, 1 gen idealstar 1 1 idealstar0 DGGD1,L, 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 gpidealval GGG 1 gen if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 gp_input 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgauss 3 0 1 intnumgauss(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnumgauss0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgaussinit 1 1 intnumgaussinit D0,L,p 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnumromb 3 0 1 intnumromb(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${bitprec}) 4 gen gen gen ?small 2 gen prec 1 intnumromb0_bitprec V=GGED0,L,b 2 gen prec 2 3 _wrap_G isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 2 isprime(${1 code}) 2 int ?0 1 bool gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gispseudoprime GD0,L, 1 gen ispseudoprimepower 1 1 ispseudoprimepower GD& 1 small issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquareall(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW Gp 2 gen prec laurentseries 1 1 laurentseries0 GDPDnp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lfun 2 0 3 lfun(${1 code}, ${2 code}, ${bitprec}) 2 gen gen 2 gen prec lfun(${1 code}, ${2 code}, ${bitprec}) 3 gen gen ?0 2 gen prec lfun0(${1 code}, ${2 code}, ${3 code}, ${bitprec}) 3 gen gen small 2 gen prec 1 lfun0 GGD0,L,b 2 gen prec lfunabelianrelinit 1 1 lfunabelianrelinit GGGGD0,L,b 2 gen prec lfunan 1 1 lfunan GLp 2 gen prec lfunartin 1 1 lfunartin GGGLb 2 gen prec lfuncheckfeq 1 1 lfuncheckfeq GDGb 2 small prec lfunconductor 1 1 lfunconductor GDGD0,L,b 2 gen prec lfuncost 1 1 lfuncost0 GDGD0,L,b 2 gen prec lfuncreate 1 1 lfuncreate G 1 gen lfundiv 1 1 lfundiv GGb 2 gen prec lfunetaquo 1 1 lfunetaquo G 1 gen lfungenus2 1 1 lfungenus2 G 1 gen lfunhardy 1 1 lfunhardy GGb 2 gen prec lfuninit 1 1 lfuninit0 GGD0,L,b 2 gen prec lfunlambda 1 1 lfunlambda0 GGD0,L,b 2 gen prec lfunmf 1 1 lfunmf GDGb 2 gen prec lfunmfspec 1 1 lfunmfspec Gb 2 gen prec lfunmul 1 1 lfunmul GGb 2 gen prec lfunorderzero 1 1 lfunorderzero GD-1,L,b 2 small prec lfunqf 1 1 lfunqf Gp 2 gen prec lfunrootres 1 1 lfunrootres Gb 2 gen prec lfunsympow 1 1 lfunsympow GU 1 gen lfuntheta 1 1 lfuntheta GGD0,L,b 2 gen prec lfunthetacost 1 1 lfunthetacost0 GDGD0,L,b 2 small prec lfunthetainit 1 1 lfunthetainit GDGD0,L,b 2 gen prec lfuntwist 1 1 lfuntwist GG 1 gen lfunzeros 1 1 lfunzeros GGD8,L,b 2 gen prec lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen limitnum 1 1 limitnum0 GD0,L,DGp 2 gen prec lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 mklist() 1 ?gen 1 list 1 listcreate_gp D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill G 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop0 WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput0 WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 localbitprec 1 1 localbitprec L 1 void localprec 1 1 localprec L 1 void log 2 0 1 glog(${1 code}, ${prec}) 1 gen 2 gen prec 1 glog Gp 2 gen prec log1p 1 1 glog1p Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small mapdelete 1 1 mapdelete GG 1 void mapget 1 1 mapget GG 1 gen mapisdefined 1 1 mapisdefined GGD& 1 small_int mapput 1 1 mapput WGG 1 void matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdetmod 1 1 matdetmod GG 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matimagemod 1 1 matimagemod GGD& 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matinvmod 1 1 matinvmod GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec ZM_ker(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matkermod 1 1 matkermod GGD& 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matpermanent 1 1 matpermanent G 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matrix 1 1 matrice GDGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen mfDelta 1 1 mfDelta 1 gen mfEH 1 1 mfEH G 1 gen mfEk 1 1 mfEk L 1 gen mfTheta 1 1 mfTheta DG 1 gen mfatkin 1 1 mfatkin GG 1 gen mfatkineigenvalues 1 1 mfatkineigenvalues GLp 2 gen prec mfatkininit 1 1 mfatkininit GLp 2 gen prec mfbasis 1 1 mfbasis GD4,L, 1 gen mfbd 1 1 mfbd GL 1 gen mfbracket 1 1 mfbracket GGD0,L, 1 gen mfcoef 1 1 mfcoef GL 1 gen mfcoefs 1 1 mfcoefs GLD1,L, 1 gen mfconductor 1 1 mfconductor GG 1 small mfcosets 1 1 mfcosets G 1 gen mfcuspisregular 1 1 mfcuspisregular GG 1 small mfcusps 1 1 mfcusps G 1 gen mfcuspval 1 1 mfcuspval GGGb 2 gen prec mfcuspwidth 1 1 mfcuspwidth GG 1 small mfderiv 1 1 mfderiv GD1,L, 1 gen mfderivE2 1 1 mfderivE2 GD1,L, 1 gen mfdescribe 1 1 mfdescribe GD& 1 gen mfdim 1 1 mfdim GD4,L, 1 gen mfdiv 1 1 mfdiv GG 1 gen mfeigenbasis 1 1 mfeigenbasis G 1 gen mfeigensearch 1 1 mfeigensearch GDG 1 gen mfeisenstein 1 1 mfeisenstein LDGDG 1 gen mfembed 1 1 mfembed0 GDGp 2 gen prec mfeval 1 1 mfeval GGGb 2 gen prec mffields 1 1 mffields G 1 gen mffromell 1 1 mffromell G 1 gen mffrometaquo 1 1 mffrometaquo GD0,L, 1 gen mffromlfun 1 1 mffromlfun Gp 2 gen prec mffromqf 1 1 mffromqf GDG 1 gen mfgaloistype 1 1 mfgaloistype GDG 1 gen mfhecke 1 1 mfhecke GGL 1 gen mfheckemat 1 1 mfheckemat GG 1 gen mfinit 1 1 mfinit GD4,L, 1 gen mfisCM 1 1 mfisCM G 1 gen mfisequal 1 1 mfisequal GGD0,L, 1 small mfkohnenbasis 1 1 mfkohnenbasis G 1 gen mfkohnenbijection 1 1 mfkohnenbijection G 1 gen mfkohneneigenbasis 1 1 mfkohneneigenbasis GG 1 gen mflinear 1 1 mflinear GG 1 gen mfmanin 1 1 mfmanin Gb 2 gen prec mfmul 1 1 mfmul GG 1 gen mfnumcusps 1 1 mfnumcusps G 1 gen mfparams 1 1 mfparams G 1 gen mfperiodpol 1 1 mfperiodpol GGD0,L,b 2 gen prec mfperiodpolbasis 1 1 mfperiodpolbasis LD0,L, 1 gen mfpetersson 1 1 mfpetersson GDG 1 gen mfpow 1 1 mfpow GL 1 gen mfsearch 1 1 mfsearch GGD4,L, 1 gen mfshift 1 1 mfshift GL 1 gen mfshimura 1 1 mfshimura GGD1,L, 1 gen mfslashexpansion 1 1 mfslashexpansion GGGLLD&p 2 gen prec mfspace 1 1 mfspace GDG 1 small mfsplit 1 1 mfsplit GD0,L,D0,L, 1 gen mfsturm 1 1 mfsturm G 1 small mfsymbol 1 1 mfsymbol GDGb 2 gen prec mfsymboleval 1 1 mfsymboleval GGDGb 2 gen prec mftaylor 1 1 mftaylor GLD0,L,p 2 gen prec mftobasis 1 1 mftobasis GGD0,L, 1 gen mftocoset 1 1 mftocoset LGG 1 gen mftonew 1 1 mftonew GG 1 gen mftraceform 1 1 mftraceform GD0,L, 1 gen mftwist 1 1 mftwist GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small msatkinlehner 1 1 msatkinlehner GLDG 1 gen mscuspidal 1 1 mscuspidal GD0,L, 1 gen msdim 1 1 msdim G 1 small mseisenstein 1 1 mseisenstein G 1 gen mseval 1 1 mseval GGDG 1 gen msfromcusp 1 1 msfromcusp GG 1 gen msfromell 1 1 msfromell GD0,L, 1 gen msfromhecke 1 1 msfromhecke GGDG 1 gen msgetlevel 1 1 msgetlevel G 1 small msgetsign 1 1 msgetsign G 1 small msgetweight 1 1 msgetweight G 1 small mshecke 1 1 mshecke GLDG 1 gen msinit 1 1 msinit GGD0,L, 1 gen msissymbol 1 1 msissymbol GG 1 gen mslattice 1 1 mslattice GDG 1 gen msnew 1 1 msnew G 1 gen msomseval 1 1 msomseval GGG 1 gen mspadicL 1 1 mspadicL GDGD0,L, 1 gen mspadicinit 1 1 mspadicinit GLLD-1,L, 1 gen mspadicmoments 1 1 mspadicmoments GGD1,L, 1 gen mspadicseries 1 1 mspadicseries GD0,L, 1 gen mspathgens 1 1 mspathgens G 1 gen mspathlog 1 1 mspathlog GG 1 gen mspetersson 1 1 mspetersson GDGDG 1 gen mspolygon 1 1 mspolygon GD0,L, 1 gen msqexpansion 1 1 msqexpansion GGDP 1 gen mssplit 1 1 mssplit GDGD0,L, 1 gen msstar 1 1 msstar GDG 1 gen mstooms 1 1 mstooms GG 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis_gp G 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfcompositum 1 1 nfcompositum GGGD0,L, 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc G 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltembed 1 1 nfeltembed GGDGp 2 gen prec nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfeltsign 1 1 nfeltsign GGDG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 gpnfvalrem GGGD& 1 gen nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfgrunwaldwang 1 1 nfgrunwaldwang GGGGDn 1 gen nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf0 GGD0,L, 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, ${prec}) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, ${prec}) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, ${prec}) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, ${prec}) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, ${prec}) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, ${prec}) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, ${prec}) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfislocalpower 1 1 nfislocalpower GGGG 1 small nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodpr 1 1 nfmodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfmodprlift 1 1 nfmodprlift GGG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfpolsturm 1 1 nfpolsturm GGDG 1 gen nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsnf0 GGD0,L, 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsplitting 1 1 nfsplitting GDG 1 gen nfsubfields 1 1 nfsubfields GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 1 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numerator GDG 1 gen numtoperm 2 0 2 Z_to_perm(${1 code}, ${2 code}) 2 small int 1 vecsmall numtoperm(${1 code}, ${2 code}) 2 small gen 1 vecsmall 1 numtoperm LG 1 gen omega 1 1 omega G 1 small oo 1 1 mkoo 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 gppadicprec GG 1 gen parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 2 0 1 parfor(${1 code}, ${2 code}, ${3 code}, NULL, NULL) 3 gen gen closure 1 void 1 parfor0 V=GDGJDVDI 1 void parforprime 2 0 1 parforprime(${1 code}, ${2 code}, ${3 code}, NULL, NULL) 3 gen gen closure 1 void 1 parforprime0 V=GDGJDVDI 1 void parforvec 2 0 1 parforvec(${1 code}, ${2 code}, ${5 code}, NULL, NULL) 5 gen closure ?small 1 void 1 parforvec0 V=GJDVDID0,L, 1 void parploth 2 0 1 parploth(${2 code}, ${3 code}, ${4 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen closure ?0 ?0 1 vec 1 parploth V=GGJD0,M,D0,L,p\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 parsum V=GGJDG 1 gen partitions 1 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permorder 1 1 permorder G 1 small permsign 1 1 permsign G 1 small permtonum 1 1 permtonum G 1 gen plot 1 1 pariplot V=GGEDGDGp 2 void prec plotbox 1 1 plotbox LGGD0,L, 1 void plotclip 1 1 plotclip L 1 void plotcolor 1 1 plotcolor LG 1 gen plotcopy 1 1 plotcopy LLGGD0,L, 1 void plotcursor 1 1 plotcursor L 1 gen plotdraw 1 1 plotdraw GD0,L, 1 void plotexport 1 1 plotexport GGD0,L, 1 gen ploth 3 0 1 ploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?0 ?0 2 gen prec 1 ploth0 V=GGED0,M,D0,L,p\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec 2 3 _wrap_G plothexport 3 0 1 plothexport(${1 code}, ${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen gen ?0 ?0 2 gen prec 1 plothexport0 GV=GGED0,M,D0,L,p\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec 2 3 _wrap_G plothraw 1 1 plothraw GGD0,L, 1 gen plothrawexport 1 1 plothrawexport GGGD0,L, 1 gen plothsizes 1 1 plothsizes D0,L, 1 gen plotinit 1 1 plotinit LDGDGD0,L, 1 void plotkill 1 1 plotkill L 1 void plotlines 1 1 plotlines LGGD0,L, 1 void plotlinetype 1 1 plotlinetype LL 1 void plotmove 1 1 plotmove LGG 1 void plotpoints 1 1 plotpoints LGG 1 void plotpointsize 1 1 plotpointsize LG 1 void plotpointtype 1 1 plotpointtype LL 1 void plotrbox 1 1 plotrbox LGGD0,L, 1 void plotrecth 1 1 plotrecth0 LV=GGED0,M,D0,L,p\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plotrecthraw 1 1 plotrecthraw LGD0,L, 1 gen plotrline 1 1 plotrline LGG 1 void plotrmove 1 1 plotrmove LGG 1 void plotrpoint 1 1 plotrpoint LGG 1 void plotscale 1 1 plotscale LGGGG 1 void plotstring 1 1 plotstring LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polclass 1 1 polclass GD0,L,Dn 1 gen polcoef 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoef0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcoeff 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 1 1 gppoldegree GDn 1 gen poldisc 2 0 2 poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscfactors 1 1 poldiscfactors GD0,L, 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval LDG 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 isirreducible G 1 small pollead 2 0 3 leading_coeff(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval LDG 1 gen polmodular 1 1 polmodular LD0,L,DGDnD0,L, 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 1 1 roots Gp 2 gen prec polrootsbound 1 1 polrootsbound GDG 1 gen polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 1 1 polrootsmod GDG 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polrootsreal 1 1 realroots GDGp 2 gen prec polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen powers 2 0 1 gpowers(${1 code}, ${2 code}) 2 gen small 1 vec 1 gpowers0 GLDG 1 gen precision 2 0 9 prec2ndec(gprecision(${1 code})) 1 real 1 small precision0(${1 code}, 0) 1 gen 1 int prec2ndec(gprecision(${1 code})) 2 real 0 1 small precision0(${1 code}, 0) 2 gen 0 1 int rtor(${1 code}, ndec2prec(${2 code})) 2 real #small 1 real gprec(${1 code}, ${2 code}) 2 gen #small 1 gen precision0(${1 code}, ${2 code}) 2 real small 1 real precision0(${1 code}, ${2 code}) 2 mp small 1 mp precision0(${1 code}, ${2 code}) 2 gen small 1 gen 1 precision0 GD0,L, 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primecert 1 1 primecert GD0,L, 1 gen primecertexport 1 1 primecertexport GD0,L, 1 gen primecertisvalid 1 1 primecertisvalid G 1 small primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printp 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 printp s* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodeulerrat 1 1 prodeulerrat GDGD2,L,p 2 gen prec prodinf 3 0 1 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?small 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G prodnumrat 1 1 prodnumrat GLp 2 gen prec psdraw 1 1 psdraw GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 psploth0 V=GGED0,L,D0,L,p 2 gen prec psplothraw 1 1 psplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GGDG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbredsl2 1 1 qfbredsl2 GDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfeval 1 1 qfeval0 DGGDG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDGDG 1 gen qfisominit 1 1 qfisominit0 GDGDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfnorm 1 1 qfnorm GDG 1 gen qforbits 1 1 qforbits GG 1 gen qfparam 1 1 qfparam GGD0,L, 1 gen qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen qfsolve 1 1 qfsolve G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen0 GDn 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit0 GDn 1 gen quit 1 1 gp_quit D0,L, 1 void ramanujantau 1 1 ramanujantau G 1 gen random 2 0 2 genrand(${1 code}) 1 ?int 1 int genrand(${1 code}) 1 gen 1 gen 1 genrand DG 1 gen randomprime 1 1 randomprime DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 gp_read_file D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GG 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown0 GGD0,L, 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup0 GGD0,L, 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealfactor 1 1 rnfidealfactor GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealprimedec 1 1 rnfidealprimedec GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs0 GGD0,L, 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup0 GGD0,L, 1 gen rnfinit 1 1 rnfinit0 GGD0,L, 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfislocalcyclo 1 1 rnfislocalcyclo G 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 vecsmall 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG self 1 1 pari_self 2 gen copy seralgdep 1 1 seralgdep GLL 1 gen serchop 1 1 serchop GD0,L, 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serprec 1 1 gpserprec Gn 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinc 1 1 gsinc Gp 2 gen prec sinh 1 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${prec}) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G solvestep 3 0 1 solvestep(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${prec}) 5 gen gen gen gen ?0$ 2 gen prec 1 solvestep0 V=GGGED0,L,p 2 gen prec 2 4 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits0 GDG 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 1 1 sumdivmultexpr GVE 1 gen sumeulerrat 1 1 sumeulerrat GDGD2,L,p 2 gen prec sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 suminf0 V=GEp 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnum0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumap 3 0 1 sumnumap(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumap0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumapinit 1 1 sumnumapinit DGp 2 gen prec sumnuminit 1 1 sumnuminit DGp 2 gen prec sumnumlagrange 3 0 1 sumnumlagrange(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumlagrange0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumlagrangeinit 1 1 sumnumlagrangeinit DGDGp 2 gen prec sumnummonien 3 0 1 sumnummonien(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnummonien0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnummonieninit 1 1 sumnummonieninit DGDGDGp 2 gen prec sumnumrat 1 1 sumnumrat GGp 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 gpsystem s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teichmuller GDG 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gpvaluation GG 1 gen varhigher 1 1 varhigher sDn 1 gen variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen variables 1 1 variables_vec DG 1 gen varlower 1 1 varlower sDn 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecprod 1 1 vecprod G 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, 0) 2 vecsmall ?gen 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen small 1 vecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetahurwitz 1 1 zetahurwitz GGD0,L,b 2 gen prec zetamult 1 1 zetamult0 GDGp 2 gen prec zetamultall 1 1 zetamultall Lp 2 gen prec zetamultconvert 1 1 zetamultconvert GD1,L, 1 gen zetamultinit 1 1 zetamultinit Lp 2 gen prec znchar 1 1 znchar G 1 gen zncharconductor 1 1 zncharconductor GG 1 gen znchardecompose 1 1 znchardecompose GGG 1 gen znchargauss 1 1 znchargauss GGDGb 2 gen prec zncharinduce 1 1 zncharinduce GGG 1 gen zncharisodd 1 1 zncharisodd GG 1 small znchartokronecker 1 1 znchartokronecker GGD0,L, 1 gen znchartoprimitive 1 1 znchartoprimitive GG 1 gen znconreychar 1 1 znconreychar GG 1 gen znconreyconductor 1 1 znconreyconductor GGD& 1 gen znconreyexp 1 1 znconreyexp GG 1 gen znconreylog 1 1 znconreylog GG 1 gen zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog0 GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar0 GD0,L, 1 gen gp2c-0.0.12/README0000644000175000017500000000354513623476440010246 00000000000000GP2C, GP to C translator Copyright (C) 2000-2018 The PARI Group, Bordeaux. GP2C is part of the PARI/GP system, http://pari.math.u-bordeaux.fr/. New versions are available at and ========================================================================== To get started, read the manual in doc/gp2c.dvi or doc/html. You need PARI/GP installed to compile this package. The command provided are: gp2c file.gp Translate file.gp to C and output the resulting code to stdout. gp2c-run file.gp This will translate file.gp to C, compile it, and run a GP session including the compiled functions. This rely on install() working for external module so is not as portable as GP2C. However it is known to work on Linux, Solaris, OSF/1, Mac OS X, and Cygwin. gp2c-dbg file.gp [not installed by default] This does the same as gp2c-run but launch GP inside the C debugger, so you can debug your script. See the configure option '--with-paricfg-dbg' to enable it. Thanks for your support, and have fun ! Bill Allombert ======================================================================== GP2C 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. gp2c-0.0.12/test2/0000755000175000017500000000000013751742702010477 500000000000000gp2c-0.0.12/test2/Makefile.am0000644000175000017500000000020613661772705012457 00000000000000mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) gp2c-0.0.12/test2/input/0000755000175000017500000000000013623476440011637 500000000000000gp2c-0.0.12/test2/input/call0000644000175000017500000000031413623476440012413 00000000000000dist(1,2) call0(()->I) call1(sqrtint,2) call1(x->x^2+1,2) call2(kronecker,5,7) call3((x,y,z)->[x*y,y*z,z*x],[1,2,3]) gen([isprime,issquare,issquarefree],3) baz(2) bar() booz() foo() boor() toto1() buzz() gp2c-0.0.12/test2/input/apply0000644000175000017500000000025713623476440012633 00000000000000f1([1,2,3,4],2) f2([1,2,3,4]) f3(sqr,[1,2,3,4]) f4([1,2,3,4]) f5(-1) g1([1,2,3,4],2) g2([1,2,3,4]) g3(isprime,[1,2,3,4]) g4([1,2,3,4]) for(i=0,3,print(invmod(i,4))) sub2(4) gp2c-0.0.12/test2/input/lambda0000644000175000017500000000041313162716330012711 00000000000000two=fun_two; three=fun_three; add=fun_add; sub=fun_sub; mul=fun_mul; power=fun_power; disp=fun_disp; init_lambda(); disp(mul(add(two,three),add(two,two))) init_lambda(); disp(power(add(two,three),add(two,two))) init_lambda(); disp(sub(mul(three,three),add(two,two))) gp2c-0.0.12/test2/input/closure0000644000175000017500000000021313623476440013152 00000000000000init_closure();rec=fun_rec; init_closure();rec(10) rec2(6)(4) col(Vec(mathilbert(4))) ttrans(5) sumi(5) ar(,3) ar(x->x^2,3) tar(4) dtan(2) gp2c-0.0.12/test2/input/sums0000644000175000017500000000007213162716330012461 00000000000000r(wallis(10)) r(dedeketa(-1)) r(lambert(Pi)) r(dgamma(1)) gp2c-0.0.12/test2/input/vararg0000644000175000017500000000022413623476440012762 00000000000000print1(":");myprintsep() print1(":");myprintsep(", ") myprintsep(", ",a,b,c,d) myprintsep(", ",a,,c,) myprintsep(,a,b,c,d) check('a,'b,'c,'d,'e,'f) gp2c-0.0.12/test2/input/printf0000644000175000017500000000000713162716330012772 00000000000000f(123) gp2c-0.0.12/test2/Makefile.in0000644000175000017500000002710413751742674012500 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = test2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test2/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) # 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: gp2c-0.0.12/test2/gp/0000755000175000017500000000000013623476440011106 500000000000000gp2c-0.0.12/test2/gp/call.gp0000644000175000017500000000046413623476440012275 00000000000000dist(x,y)=sqrtint(x^2+y^2) call0(f) =f() call1(f,x)=f(x) call2(f,x,y)=f(x,y) call3(f,x,y,z)=print(f(x,y,z)) gen(T,x)=vector(#T,i,T[i](x)) baz(x)=gen([isprime,issquare,issquarefree],x) bar(z)=call2(kronecker,5,7) booz(z)=call2(dist,3,2) foo()=1 boor(x)=[foo][1](); toto1(x)=apply(sqrtint,x) buzz()=dist(3,2) gp2c-0.0.12/test2/gp/apply.gp0000644000175000017500000000047113623476440012505 00000000000000f1(v,z)=apply(x->x^z,v) f2(v)=apply(sqr,v) f3(f,v)=apply(f,v) g(x)=x^2+1 f4(v)=apply(g,v) f5(z:small)=apply(n:small->(n+z)!,[1,2,3,4,5]) g1(v,z)=select(x->x>z,v) g2(v)=select(isprime,v) g3(f,v)=select(f,v) h(x)=x g4(v)=select(h,v) invmod(a,b)=trap(,0,Mod(a,b)^-1) sub2(n)=forsubgroup(G=[n,n],,print(matsnf(G))) gp2c-0.0.12/test2/gp/closure.gp0000644000175000017500000000062613623476440013036 00000000000000global(inc,rec); rec=x->if(x,rec(x-1)*x,1) rec2(k)=my(h(n)=if(n==0,1,n*self()(n-1)));n->h(k*n) col(V)=for(i=1,#V,print(apply(x->x[i],V))) g(z)=my(h(x)=x^2+1);apply(h,z) gg(x)=(inc=x->x+1);inc(2) trans(F)=x->F(x+1) sump(a)=x->sum(i=1,x,i^a) ttrans(s)=trans(x->x!)(s) sumi(n)=sump(-1)(n) ar(x=n->1,z)=x(z) tar(u)=ar(,u)+ar(x->x+1,u) dtan(x)=my(t=tan(x));if(abs(tan'''(x)-(6*t^4+8*t^2+2))<10^-10,"OK","BAD"); gp2c-0.0.12/test2/gp/printf.gp0000644000175000017500000000006113162716330012646 00000000000000f(x)= { printf("%s",x); Strprintf("%s",x); } gp2c-0.0.12/test2/gp/sums.gp0000644000175000017500000000025213162716330012335 00000000000000r(x)=round(x*1000)/1000 wallis(n)=intnum(x=0,Pi,sin(x)^n) dedeketa(s)=sumalt(n=1,(-1)^(n-1)/n^s) lambert(s)=solve(x=0,log(s),exp(x)-s*x) dgamma(s)=derivnum(x=s,gamma(x)) gp2c-0.0.12/test2/gp/vararg.gp0000644000175000017500000000045413623476440012643 00000000000000myprintsep(s,v[..])=if(#v>0,print1(v[1]);for(i=2,#v,print1(s,v[i])));print(); check(a,b,c,d,e,f)= { print1(":");myprintsep(); print1(":");myprintsep(", "); myprintsep(", ",a,b,c,d); myprintsep(", ",a,,c,); myprintsep(,a,b,c,d); myprintsep(":",a,b,c,d,e); myprintsep(":",a,b,c,d,e,f); } gp2c-0.0.12/test2/gp/lambda.gp0000644000175000017500000000070313614057635012577 00000000000000global(zero,one,two,three); global(inc,add,mul,power,dec,sub,mod,disp); zero=f->x->x; one =f->f; two =f->x->f(f(x)); three=f->x->f(f(f(x))); inc= n->f->x->f(n(f)(x)); add= (n,m)->f->x->n(f)(m(f)(x)); mul= (n,m)->f->n(m(f)); power= (n,m) -> m(n); \\ try with spaces dec= n->f->x-> n (g->h->h (g(f))) (u->x) (u->u); sub= (n,m)->m(dec)(n); mod= (n,b)->n(a->(aa->sub(aa,b)(zero)(aa)) (inc(a))) (zero) disp=n->n(x->1+x)(0); num(n)=if(n,inc(num(n-1)),zero) gp2c-0.0.12/test2/res/0000755000175000017500000000000013623476440011271 500000000000000gp2c-0.0.12/test2/res/apply.res0000644000175000017500000000035513623476440013054 00000000000000[1, 4, 9, 16] [1, 4, 9, 16] [1, 4, 9, 16] [2, 5, 10, 17] [1, 1, 2, 6, 24] [3, 4] [2, 3] [2, 3] [1, 2, 3, 4] 0 Mod(1, 4) 0 Mod(3, 4) [0, 0] [0, 2] [0, 2] [0, 2] [0, 1] [0, 1] [0, 1] [0, 1] [0, 1] [0, 1] [2, 2] [2, 1] [2, 1] [2, 1] [1, 1] gp2c-0.0.12/test2/res/sums.res0000644000175000017500000000003713162716330012704 00000000000000773/1000 1/4 277/500 -577/1000 gp2c-0.0.12/test2/res/vararg.res0000644000175000017500000000012413623476440013203 00000000000000: : a, b, c, d a, c a0b0c0d : : a, b, c, d a, 0, c, 0 a0b0c0d a:b:c:d:e a:b:c:d:e:f gp2c-0.0.12/test2/res/call.res0000644000175000017500000000010613614057635012635 000000000000002 I 1 5 -1 [[0, 0, 0], 0, [0, 0, 0]] [1, 0, 1] [1, 0, 1] -1 3 1 1 0 3 gp2c-0.0.12/test2/res/closure.res0000644000175000017500000000021113623476440013372 000000000000003628800 620448401733239439360000 [1, 1/2, 1/3, 1/4] [1/2, 1/3, 1/4, 1/5] [1/3, 1/4, 1/5, 1/6] [1/4, 1/5, 1/6, 1/7] 720 137/60 1 9 6 "OK" gp2c-0.0.12/test2/res/lambda.res0000644000175000017500000000001113162716330013125 0000000000000020 625 5 gp2c-0.0.12/test2/res/printf.res0000644000175000017500000000001213162716330013210 00000000000000123 "123" gp2c-0.0.12/ChangeLog0000644000175000017500000011062313743645740011140 00000000000000gp2c (0.0.12) * By default, support PARI 2.13 now. * Bugs fix: - Prototype code DV in iterator was not fully supported -- Bill Allombert Tue, 20 Oct 2020 22:35:52 +0200 gp2c (0.0.11pl4) * Fix configure handling of missing pari.desc files. * Bugs fix: - Using break(1) instead of break() did not work. - iferr(,E,print(E)) did not work - (from 0.0.11pl1) affectation of vecsmall was missing a copy * Test-suite: - Update break test to test break(1) - Update iferr test to test iferr(,E,print(E)) - Update gerepile test to check affectation of vecsmall -- Bill Allombert Fri, 22 May 2020 18:02:09 +0200 gp2c (0.0.11pl3) * Fix declarations in header files so that it build with gcc 10 (reported by Michael Orlitzky). * Add correct filenames in error messages when using \r * Added - support for references (~) from PARI 2.12.1 - support for foreach from PARI 2.12.1 - support for holes in multi-assignement from PARI 2.12.1 - support for \r "..." from PARI 2.12.1 - support for ploth and plothexport - support for parfor, parforprime and parforvec - support for alarm * Bugs fix: - multiassign did not trigger copy * Test-suite: - Update multiassign test to check trigger of copy - Update multiassign test to check support of holes - Add test foreach to check foreach support -- Bill Allombert Thu, 05 Mar 2020 22:40:18 +0100 gp2c (0.0.11pl2) * Added: - support for derivn from PARI 2.12.0 * Bugs fix: - localprec() did not work with -p. - localbitprec() treated input precision as decimal. * Test-suite: - Add test precision to test support for localprec, etc. - Update closure test to check for derivation. -- Bill Allombert Wed, 22 May 2019 11:48:19 +0200 gp2c (0.0.11pl1) * Bugs fix: - unary minus of vectors was broken (introduced in 0.0.9pl3). * Added: - Optimized support for Vecsmall([...]) * Test-suite: - Fix test forprimestep to work around bug in PARI 2.11.0 - update compr test to check unary minus of vectors. -- Bill Allombert Fri, 19 Oct 2018 17:14:48 +0200 gp2c (0.0.11) * By default, support PARI 2.11 now. * Improve line number accuracy in error messages. * Update the documentation with respect to local() and main(). * Added: - Support for fordivfactored * Test-suite: - Add test forprimestep to test support for forprimestep - Add test fordivfactored to test support for fordivfactored -- Bill Allombert Thu, 19 Jul 2018 17:26:54 +0200 gp2c (0.0.10pl1) * Bugs fix: - generate correct code for while loop with empty body - handle GC of z[i++]=... correctly. * Test-suite: - update while test to test while loop with empty body - update affect test to check GC of z[i++]=... -- Bill Allombert Sun, 22 Oct 2017 12:47:55 +0200 gp2c (0.0.10) * By default, support PARI 2.9 now. * Added: - Support for 2.8 range. -- Bill Allombert Wed, 02 Nov 2016 19:37:29 +0100 gp2c (0.0.9pl5) * Added: - Support for prototype code 'b' and bitprec. - Support for localprec() and localbitprec() * Bugs fix: - generate correct install() commands when -o is in use. - undeclared variable in iterators bounds leads to gp2c crash * Test-suite: - Update forprime test to test undeclared variable in bound. -- Bill Allombert Sun, 10 Jan 2016 11:42:03 +0100 gp2c (0.0.9pl4) * Bugs fix: - Wrappers did not handle types correctly - global() could be misparsed. - option -C (range checking code) did not work. - generate correct compile_command when -o is in use. * Test-suite: - Update apply test to test wrappers support for types. - Update initfunc test to test global() parsing. * Added: - Basic support for 0x and 0b integer prefix. -- Bill Allombert Sat, 21 Nov 2015 22:15:40 +0100 gp2c (0.0.9pl3) * gp2c -h did not list options -C and -L * Bugs fix: - Fix for multi-assignment of vecsmall - Casting lvalues did not work anymore since 0.0.7pl3 - global(...):type declaration did not work * Test-suite: - Update multiassign test to check multi-assignment of vecsmall - Update cast test to cast of lvalues - Add test vararg to test support for variadic GP functions - Update return test to test global(...):type * Added: - support for generating gc_needed (with PARI 2.8) - support for self() - support for variadic GP functions -- Bill Allombert Tue, 16 Dec 2014 16:13:42 +0100 gp2c (0.0.9pl2) * Fix mismatching prototypes (reported by Michael Tautschnig for Debian) * Use "const char *" for prototype code s * Added: - support for prototype code u and U and usmall (ulong). -- Bill Allombert Tue, 22 Jul 2014 12:08:51 +0200 gp2c (0.0.9pl1) * Bugs fix: - Fix for 'closure as optional arguments did not work' was incorrect -- Bill Allombert Thu, 17 Apr 2014 15:45:46 +0200 gp2c (0.0.9) * By default, support PARI 2.7 now. * Improve installation of documentation (suggested by Jan Engelhardt). * Bugs fix: - closure as optional arguments did not work - multiple forprime in a single function did not work * Test-suite: - Update test closure to test closures as optional arguments. - Update test forprime to test multiple forprime in a single function. -- Bill Allombert Thu, 17 Apr 2014 11:57:22 +0200 gp2c (0.0.8pl1) * Added: - support for Debian-style multiarch systems. - option -L: generate #line directive for the compiler. - support for parsing histtime entries (%#) - support for prototype code 'J'. * Bugs fix: - the value of rec in iferr(code,E,rec,pred) could be ignored. * Test-suite: - Update test iferr to test value of rec. -- Bill Allombert Tue, 04 Mar 2014 12:13:40 +0100 gp2c (0.0.8) * Added: - support for PARI 2.6.1 - support for Iterator field in description (forpart and forcompositum) * Bugs fix: - closed variable inside loops were missed. - forstep did not support negative vector steps. - multiif did not allow block in predicates. - code for forprime did not garbage collect the stack correctly. - do not generate the same comment multiple time [#1444] * Test-suite: - Update test closure to test closed variable inside loops. - Update forstep test to test negative vector steps. - Add extra tests for PARI >=2.6: compr, forprime, iferr, multiassign, multiif, range. -- Bill Allombert Fri, 20 Sep 2013 12:07:48 +0200 gp2c (0.0.7pl5) * Added: - option -C: add range checking code. - support for 2.6 my([a,b]=v) - support for 2.6 iferr(code,E,rec,pred) * Bugs fix: - addhelp: handle newline correctly. - blocks in default values for function arguments did not work. * Test-suite: - Update test args to test blocks in default values -- Bill Allombert Mon, 06 May 2013 00:25:35 +0200 gp2c (0.0.7pl4) * Added: - support for 2.6 forprime(a,/*omitted*/,...) - support for 2.6 iferr/iferrname. * Bugs fix: - Fix option -o when input is from stdin. - clone was not fully supported. - returning a global variable could break garbage collecting. - support for pari.cfg.dbg was broken. * Test-suite: - Add test forprime to check support for forprime. - Expand initfunc to check support for clone. - Expand return to check returning a global variable. -- Bill Allombert Tue, 16 Oct 2012 19:04:32 +0200 gp2c (0.0.7pl3) * Add support for 2.6 ranges [a..b] and comprehension [a(x)|x<-a,c(x)] * Add support for 2.6 slices M[a..b,^c] * Add support for 2.6 multiif (if(x==0,a,x==1,b,default)) * Add support for 2.6 multi-assignement: [a,b]=v * Bugs fix: - Fix 'make check' breakage on non-glibc systems like OS X and Solaris introduced in the previous release. Thanks to Alessandro Languasco. - genblock() was not C89 standard compliant. - Operators like "+=" did not handle type conversion correctly. - Use of _badtype for unsupported types could crashes gp2c. * Test-suite: - Rename randomprime to randprime to be compatible with PARI 2.6. - Expand cast test to check type conversion of +=. -- Bill Allombert Mon, 07 May 2012 12:50:37 +0200 gp2c (0.0.7pl2) * Do not truncate output file if the input file does not exist. * Add support for 2.6 error messages. * configure now also looks for a pari.cfg.dbg file of a PARI debugging installation. * Bugs fix: - Allow spaces between ) and -> in (x)->x. - stack_base() was not C89 standard compliant. * Test-suite: - Change lambda test to have spaces between ) and -> once. -- Bill Allombert Tue, 21 Feb 2012 22:20:36 +0100 gp2c (0.0.7pl1) * Rename README.SVN to README.GIT. * Test-suite: - Fix 'call' test-suite to work on 32bit. -- Bill Allombert Sun, 02 Oct 2011 23:04:03 +0200 gp2c (0.0.7) * By default, support PARI 2.5 now. * Remove remains of support for PARI 2.1. * Improve scoping of local variables declared inside blocks. * Add basic support for parsing history entries (%). * Bugs fix: - Fix order of evaluation in local()/my(). - Fix support for prototype code 'm'. - Fix support for prototype code 'DP'. - Fix support for prototype code 'Dr'. - Fix value of if(0,x) in blocks. - Fix garbage collection of global variables. - Fix bug when removing dummy variables. * Test-suite: - Expand affect test to check order of evaluation in local()/my(). - Add member test to check support for member function. - Expand if test to check for value of if(0,x) in blocks. - Add extra tests for PARI >=2.5: apply, call, closure, lambda, printf and sums. - Add test cleanvar for testing dummy variables removal. -- Bill Allombert Fri, 22 Jul 2011 14:01:50 +0200 gp2c (0.0.6) * Add support for evaluating closures (need PARI >=2.4.4). * Add support for generating closures from functions. * Add support for generating wrappers for closures. * Add support for functions intnum,sumalt,forsubgroup and related (need PARI >=2.4.4). * Add support for RUNTEST to use with a cross-compiled gp. * Add support for new prototype codes 'Dr', 'Ds', and 'DP'. * Remove -p prefix from gp2c-added variable names to avoid clash. * Move to autoconf 2.67 and automake 1.11, for better or for worse. * Bugs fix: - incorrect use of gerepileupto. - gp2c did not compile Str(a,,b) correctly. - strings with embedded newlines were not well-supported. * Test-suite: - Expand upto test to check for garbage collection problem with complex numbers. - Expand args test to check compilation of Str(a,,b). -- Bill Allombert Fri, 29 Apr 2011 18:38:22 +0200 gp2c (0.0.5pl10) * Add support for new prototype code 'm'. * Add support for new GP operator '==='. * Add support for more than 8 arguments for install() in PARI 2.4.3. * Bugs fix: - gp2c failed to compile affectation to undefined vectors. * Test-suite: - expand affect test to check affectation to undefined vectors. -- Bill Allombert Tue, 26 Oct 2010 12:23:30 +0200 gp2c (0.0.5pl9) * Bugs fix: - fix a bug with the ss* prototype introduced in 0.0.5pl8. * Test-suite: - expand print test to check function using ss* prototype. * Thanks to Alessandro Languasco for testing the previous release. -- Bill Allombert Sat, 30 Jan 2010 11:13:01 +0100 gp2c (0.0.5pl8) * Lots of spelling fix to the documentation by Michael Somos. * Bugs fix: - fix crash due to bad use of internal memory allocator. - fix crash with undefined functions. - function arguments modified through pointers were not copied. * Test-suite: - expand affect test to check function arguments modified through pointers. -- Bill Allombert Sun, 28 Jun 2009 16:36:50 +0200 gp2c (0.0.5pl7) * Add preliminary support for 'W' protocode. * Discard empty rules in descriptions. * Bugs fix: - Fix problem with global(L:list) introduced in 0.0.5pl3. - Handle functions with empty prototype. - Fix problems with function returning vectors in if statements. * Test-suite: - Change print, dot and read tests to be compatible with PARI 2.4.3. - Change initfunc test to try global(L:list). - Change return test to check more if statements. -- Bill Allombert Sat, 13 Dec 2008 17:21:15 +0100 gp2c (0.0.5pl6) * Handle pari.cfg file generated by PARI 2.4.2 properly. * genblock now 'guess' that 'length' returns a small. * GP2C now report errors for spaces inside identifiers. * Rename cvsinit to autogen.sh. * Bugs fix: - Fix compilation of 32- to 63-bits integers on 64-bits systems. - Fix handling of comment at end of included files. - gp2c could try to gcopy non-GEN objects. - Fix garbage collection problem with return() introduced in 0.0.4. - Fix garbage collection problem with vectors. * Test-suite: - Expand cast test to check support for a 42-bit integer. - Expand read test to check support for comments at end of file. - Expand gerepile test to check support for non-GEN objects. - Expand return test to check for garbage collection problems. - Add upto test to check for garbage collection problem with vectors. -- Bill Allombert Tue, 18 Dec 2007 13:32:16 +0100 gp2c (0.0.5pl5) * Add initial support for 'my()' (GP 2.4 extension). * Bugs fix: - Fix handling of comments followed by newlines. - Fix support for sumdiv. * Test-suite: - Expand vector test to test comments followed by newlines. - Expand sumprod test to test whether sumdiv works. -- Bill Allombert Wed, 26 Sep 2007 13:20:07 +0200 gp2c (0.0.5pl4) * Fix Changelog (0.0.5pl3 changes were split in two). * Fix nameclash with Solaris standard headers files. * Bugs fix: - Fix garbage collection problem with if() introduced in 0.0.4. * Test-suite: - Expand if test to trigger garbage collection. -- Bill Allombert Thu, 7 Jun 2007 11:09:42 +0200 gp2c (0.0.5pl3) * No more allow type cast between incompatible types. * Synchronize parser with new GP parser. * Fix some gcc warnings introduced in the previous release. * Bugs fix: - while and until did not handle some complex expression in the condition. - code generated for matrices did not run side-effects in order. - Fix parsing of real numbers. * Test-suite: - expand while test to check more complex expressions in the conditions. - expand matrix test to check side-effects order. - add dot test to check for parsing of real numbers. -- Bill Allombert Thu, 8 Feb 2007 16:46:45 +0100 gp2c (0.0.5pl2) * Fix (harmless) misdetection of PARI versions >= 2.3 * Documentation: - Fix lots of typos. - Update the examples of generated code to be current. * Bugs fix: - Matrices built with matrix() were not typed vec. - Comments after = lead to premature end of function. - Do not generate default value for typed global variables, but generate them for non-typed local variables. * Test-suite: - Add comments to vector test to check support of comments after = - Expand moveblock test to cover blocks inside a[ ,] constructs. * Thanks to Jeffrey Stopple for testing the previous release. -- Bill Allombert Sun, 17 Sep 2006 13:34:26 +0200 gp2c (0.0.5pl1) * Bugs fix: - Fix missing copy with forvec variables. * Test-suite: - Expand forvec test to catch missing copy in forvec. -- Bill Allombert Tue, 20 Jun 2006 17:53:38 +0200 gp2c (0.0.5) * Support for PARI 2.1 and 2.2 has been removed. * Reformat ChangeLog to fit in 80 columns * Fix configure.in to work with recent autoconf. * 'make install' now install gp2c-dbg if gp2c-dbg support was configured. * Add gp2c-dbg.1 man page. * Add ./gp2c-dbg wrapper script. * Change gp2c-run and gp2c-dbg to create a .gp.run file containing the GP; commands instead of gp2c_start.gp and gp2c_gprc. * Build HTML documentation with hevea. * 'make install' now install the documentation. -- Bill Allombert Fri, 16 Jun 2006 11:49:36 +0200 gp2c (0.0.4pl5) * Fix crash on some platforms caused by missing case in gendeblock. * Fix usage of getopt on platforms where char is unsigned. -- Bill Allombert Sun, 14 May 2006 10:04:07 +0200 gp2c (0.0.4pl4) * Add table of contents to the gp2c manual. * Add documentation of the description system (doc/type.tex). * Add support for &a[b]. * Bugs fix: - Fix missing copy with code like x=vector(3);y=x;x[1]++;y * Test-suite: - Expand gerepile test to catch missing copy problems. -- Bill Allombert Sun, 19 Mar 2006 17:34:50 +0100 gp2c (0.0.4pl3) * Add support for break(n)/next(n) for constant n. * Improve small loops detections. * Fix -p option for global variables. * Descriptions: - Add _const_real description for strtor(). - Allow descriptions to match string litterals. - Change #type to only match litterals with exact same types. * Test-suite: - run with -p gp2c_ now. - change 'args' test-suite to be independant of vecsort algorithm. -- Bill Allombert Sun, 4 Dec 2005 19:59:18 +0100 gp2c (0.0.4pl2) * gp2c-run was no more accepting filename containing a /. * Vectors were not typed vec. * Handle the 'r' protocode properly. * Test-suite: - change 'vector' test-suite to be independant of print1() behaviour. -- Bill Allombert Wed, 28 Sep 2005 18:02:41 +0200 gp2c (0.0.4pl1) * Allow the description system to differentiate f(x,) from f(x). * Handle empty files correctly. * Descriptions: - Add _[_,] description for PARI 2.2 row function. * Test-suite: - Change 'print' test to test 'printp1' instead of 'printtex', due to different output in 2.2.11. -- Bill Allombert Tue, 28 Jun 2005 21:11:26 +0200 gp2c (0.0.4) * Interface changes: - Variables declared with a type do not have a default value anymore. See "Effect of types declaration on default values" in the manual. - PARI 2.1 is still supported, but will not pass the test-suite. * Bugs fix: - Fix return() of expressions implemented via block. - Fix parser to allow semi-commas in empty arguments like while(1,;). - Add support for prodeuler(). - Fix segfault on 64-bit platforms. - Allow to define functions with empty body (f(x)=;). - Allow complex expressions as default values for arguments and initial values for variable, for(w=[1,1])=local(v=[1,2]~);w*v. - New syntax local(...):type to set the default type in a local(). - Allow to redefine a function (clobber the previous definition). * Generated code clean-up: - Try to declare several variables on one line. - Do not generate strings containing embedded new lines. - Rewrite the handling of 'return' to generate nicer code. - Better support for immediate t_COL ([...]~). - Better support for negative small real constants. - Add space after comma in code generated for [] and print(). - Use gerepileall instead of gerepilemany when available. - Use NEXT_PRIME_VIADIFF when available for forprime() loops. * Build system: - Add ctags target to generate vi tags to src/Makefile. - Allow to override descriptions with the file desc/override.desc. - Add option --paricfg-dbg to configure to specify the path to the pari.cfg file of a PARI debugging installation. * Descriptions: - Add support for RPN style replacement ${} in descriptions. - Reimplement type casts in term of description (_cast). - Add descriptions for vector/matrix components (in _[_,_]). - Add _const_smallreal description for small real constants. - Add O(_^_) description of O(x^y). - Add description of cgetg (as _cgetg). - Add _const_quote description for 'x constructs. - Add _const_expr description for integers and reals. - Add _gerepileall description to use gerepileall(). - Add _cast_noarg description for default arguments. - Handle print and error through descriptions. - Add _low_stack_lim for low_stack() code. - Add _diffptr description for forprime(). - Add _forprime_next for NEXT_PRIME_VIADIFF. * Test-suite: - Fix 'initfunc' test to be compatible with PARI 2.2.10. - Expand 'vector' test to try constant vectors/matrices. - Expand 'return' test to try returning blocks. - Expand 'moveblock' test to try unary - operator. - Expand 'args' test to try user-defined functions. - Expand 'initfunc' test to try non-cloned matrices. - Expand 'if' test to test parsing of semi-commas in empty arguments. - Expand 'trunc' test to try truncating real constants. - Add 'gerepile' test to exercise garbage-collecting code generation. - Make test-suite independant of random() to avoid test failure on 64bit machines. - Expand 'args' test to try function with complex optional arguments. - Expand 'affect' test to try local variables initialised to a complex expression. - Expand 'initfunc' to test use of undeclared global variables. - Expand 'sumprod' to test prodeuler. - Add 'forvec' to check forvec support. -- Bill Allombert Sun, 15 May 2005 18:51:56 +0200 gp2c (0.0.3pl4) * Fix garbage collecting of forvec loops. * Expand documentation about types. * Add description for gerepileupto (in _gerepileupto). * Add option -o to specify output file instead of stdout. -- Bill Allombert Mon, 10 Jan 2005 16:29:53 +0100 gp2c (0.0.3pl3) * Fix 'gp2c -l'. * Add support for forvec with PARI 2.2.8. * Fix .orders with GP 2.1. * Fix compat.desc logic. -- Bill Allombert Thu, 25 Nov 2004 16:05:55 +0100 gp2c (0.0.3pl2) * PARI/GP Workshop bugfix release. * "make install" no more install useless pari21.dsc. * Store preorder in _type_preorder description instead of hard-coding it in gp2c. Create modes and types dynamically. * Fix -p option. * Fix install() handling. * Change gp2c-run convention: line starting with 'GP;' in the C file are passed to gp at startup. * Implement \r as an include directive. * Add test 'install' and 'read'. * Pass addhelp() to GP using 'GP;' convention. -- Bill Allombert Wed, 22 Sep 2004 10:29:54 +0200 gp2c (0.0.3pl1) * Fix testsuite to accomodate error() change in 2.2.8. * Rewrite README. * Description system: - Fix the parser. - Add compat.desc to support 2.2.7 and newer release. - Add support for matching C type and modes. - Add _declaration, _typedef, and _proto to pari21.desc and compat.desc. - Avoid casting lvalue (ANSI C does not allow it). * use _declaration, _typedef, and _proto to handle C types instead of hardcoding in type.h * Fix gp2c-dbg script to use GP_PATH to find GP. -- Bill Allombert Sat, 26 Jun 2004 12:30:11 +0200 gp2c (0.0.3pl0) * Rewrote the configuration system to use the description system. * Member functions are now fully supported with PARI 2.2.7. * Add support for the new 'i' prototype code. * Add support for the new interface to the 's*' prototype. * Update documentation to reflect change in the installation process and new features. -- Bill Allombert Thu, 18 Dec 2003 17:04:59 +0100 gp2c (0.0.2pl6) * Use signe() instead of gcmp0 for integers and reals. * Provide yywrap so we don't need LEXLIB anymore. * Ship lang.c in the tarball so that flex is not required to build gp2c anymore. -- Bill Allombert Thu, 30 Oct 2003 16:45:28 +0100 gp2c (0.0.2pl5) * Add error message for wrong use of operators. * Add very basic support for lists, via the 'list' type. * Fix config/modules_build to support PARI 2.2.5 interface. * 'install' arguments were not treated as raw input correctly. * gp2c is now more clever at guessing types in genblock. * Update the manual. * Make clean now clean test directory. * fix segfault on sparc introduced in 0.0.2pl4 in findfunctionerr. -- Bill Allombert Thu, 13 Feb 2003 20:26:21 +0100 gp2c (0.0.2pl4) * gp2c-dbg now handle .c files. * Fix code limiting user functions return type. * Expand 'return' test to catch negbool. * Fix bug with if(cond,,code). * Expand 'if' test to check if(cond,,code) and if(cond,code,). * Fix bug in gendeblock with if(cond,print(print)). * Expand 'moveblock' test. * Add descriptions for '^-1'. * Fix -p option with forprime. * Better error messages. * Allow cast system to use descriptions. * Add description for _toGENstr. -- Bill Allombert Tue, 7 Jan 2003 15:40:23 +0100 gp2c (0.0.2pl3) * Fix some gcc warnings. * Portability fix to lang.l (OSF/1). * Test "moveblock" was no more 64 bits clean. * Functions used before declaration generated wrong code. * Description of setunion was incorrect. Thanks Ottavio G. Rizzo. * gp2c-run now handle .c files. * Add gp2c-run.1 man page. * Add section 'Hand-editing the C file generated by gp2c' to manual. -- Bill Allombert Wed, 30 Oct 2002 16:48:54 +0100 gp2c (0.0.2pl2) * '.' was not treated as a ``smallreal''. * v[1,1] was not printed correctly by gp2C -G. * Components do type checking now. * Add 'empty' type for correct type computation. * Use is_subtype for comparisons of types. * Movecode fix from 0.0.0pl8 was incomplete. * Expand tests "affect" and "moveblock". -- Bill Allombert Sat, 31 Aug 2002 11:16:56 +0200 gp2c (0.0.2pl1) * Implement printf format with descriptions. * Add ?type and ?integer default in description. * Implement affection to line of matrix M[a,]=V * Add space in error messages. * Fix the way unused variables are handled. * Fix -p option that was broken in 0.0.2. * Fix type preorder transitivity computation. -- Bill Allombert Thu, 29 Aug 2002 11:40:56 +0200 gp2c (0.0.2) * New parser code. This one support automatic concatenation, the 2.2.4 way. * Add listcalltostack for unfolding function call. * Add concat unfolding to genformat{,arg}. * Add genstr type and cast for t_STRING GEN object. * Add description for Str. * Fix description of __ (concat) operator. * Add a new casting method. * Rewrite the way constants are handled. Fix 1.a bug. * Remove the hard-coded limit on string length. * Use const char *. * Remove the KSTART kludge. * Automatic variables now have consecutive numbers. * Fix operators priority problems with gp2c -G. * Allow empty functions and empty member functions. * Catch declarations with more than one tag. -- Bill Allombert Wed, 28 Aug 2002 15:07:01 +0200 gp2c (0.0.1pl3) * gp2c-dbg really uses GP_DBG now. * Fix a bug introduced in 0.0.0pl11 when handling description with noarg. * Expand "args" test. * 'install' was no more working, and using entries has never worked. * .sign description was incorrect. * Update manual and expand the "common problem" section. * Avoid GENtostr, because it leaks memory. * Implement write*,printtex,printp* via eval(). * For uniformity, print now output to stdout. * Thanks to Herbert Gangl for testing the previous release. -- Bill Allombert Tue, 9 Jul 2002 16:32:15 +0200 gp2c (0.0.1pl2) * gp2c -S breaks with functions with more than 8 args. * Support for simple real constants. * KB style function definition. * Correct typo in gp2c manual. * Add support for manual in HTML. * Fix a bug introduced in 0.0.0pl11 that cause variable to appear several time in gptr lists. * Add --with-paricfg flag to configure. * Better version detection. * Variables ('x) were printed as a number. * gp2c now really ignore '\r'. * typ->str cast generate invalid code. * Default for str args was not quoted correctly. * Use char * instead of void * in src/stack.c. -- Bill Allombert Sat, 29 Jun 2002 17:23:12 +0200 gp2c (0.0.1pl1) * Typo in addseqleft. * Add VCG tree debugging output. * Fix a bug introduced in 0.0.0pl12 with sum(,,if(,,)) constructs. * Add test "sumprod". * Movebloc could create loops in the tree. * gp2c.tex: RTLD_GLOBAL is already in 2.2.2. -- Bill Allombert Sun, 19 May 2002 16:41:39 +0200 gp2c (0.0.1) * Fix problem in gp2c-run when .gprc did not end by a newline. * Add gp2c-dbg script to help debugging (not installed). * Do not use snprintf for portability. * Fix some warning when compiling on 64 bits machines. * Add some more descriptions. * Remove unneeded -u flag to diff in script/dotest. * Fix some compatibility problems with old flex. * Fix SEGV caused by unspecified execution order. * Fix module-build when EXTRADLLDFLAGS use ${LIBS}. * Add BUGS and doc/gp2c.dvi to the tarball. * Remove src/lang.c and test/*/CVS from the tarball. * Make forstep test more robust. * Fix descriptions of _?=_ operators. * FUNCDSC_PATH configuration is now GNU compliant. * matrix() generate extraneous (GEN) cast. * Add missing cast gen->bell. * Fix GP path in gp2c-run. * Thanks to John Cremona for testing the previous release. -- Bill Allombert Fri, 3 May 2002 20:18:17 +0200 gp2c (0.0.0pl12) * Fix line numbers in error messages. * Implement 'fordiv' and 'sumdiv'. * Fix bugs with option -l and -f. * Make gp2c-run recognize -l, -t and -v. * Use "&&" in compile command instead of ";". * Fix some bugs in the garbage collecting code. * Add test "return". * Missing copy with member functions clgp and bnr. * Rewrite the lexical analyser with start condition. * Missing cast in the description of "variable". * Do not generate checkgal (not in pari 2.1 headers). * Add documentation, thanks to Ariel Pacetti for review and install section. * Add some missing #include. * Thanks to Olivier Ramaré for testing the previous release. -- Bill Allombert Wed, 13 Mar 2002 21:31:32 +0100 gp2c (0.0.0pl11) * Remove bnrinit description, unuseful and not PARI 2.2 compliant. * Fix a potential SEGV with undeclared variables. * Fix some printnode bugs. * Better description choice strategy. * Add arguments checking to functions. * New way to handle default arguments. * Preserve comments in output. * Add description for operators between small and real. * Fix a long-standing bug causing extra indentation. * More gerepileupto in place of gerepilemany. * Use stack.[ch] interface for memory allocation. * New option -S (strict arguments). -- Bill Allombert Tue, 19 Feb 2002 19:44:39 +0100 gp2c (0.0.0pl10) * 'x operator is now of type "var" instead of "gen". * Fix a typo in the mode of if(,,) constructs. * Fix initialization of non-GEN global vars. * Expand "if" test. * Add ";" after install commands to help copy-paste under emacs. * Thanks to Henri Cohen for testing the previous release. -- Bill Allombert Wed, 19 Dec 2001 19:53:22 +0100 gp2c (0.0.0pl9) * Add doc directory and manpage. * Add support for new "#" operator. * Add comments for non Gsmall C long. * Better support for DOS files. * Path-independent name for the init function. * Rewrite the way functions definitions are stored. * Implement 'install' as a gp2c directive. * Add a new strategy in gencast. * Add AM_MAINTAINER_MODE to configure.in. * More check in configure.in. * Allows to build without perl, or without PARI, or with debug enabled. * Copy function arguments if they are modified. * Handle absolute path to plugin in install(). * Add tests "cast" and "args", and expand "affect" and "forstep" tests. * Rewrite the way prototype codes are parsed. * Fix global vars initialization. * Make "make check" more clever when gp2c fails. -- Bill Allombert Tue, 18 Dec 2001 17:30:07 +0100 gp2c (0.0.0pl8) * Add gp2c-run script. * Fix some castings from void and to gen. * !(void) is 1 now. * Still better output for gp2c -G. * Add types vec, lg and vecsmall. * Add descriptions supporting lg, vec and vecsmall type. * Fix determination of return type of functions. * Implement user-defined member functions. * Hopefully fix a bug in moveblock(). * Add shell-style comments to description. * Avoid casting lvalues. * Affectations may need parens, like in a+b=c. * Fix description of isprime. * Add new check 'moveblock'. -- Bill Allombert Thu, 15 Nov 2001 12:30:06 +0100 gp2c (0.0.0pl7) * Correct SEGV on files without any functions definitions. * Try to cope with DOS files under unix. * 'if' constructs used as loop bounds were wrongly discarded. * 'M[k,]' induced looping in genblock. * Add new check 'matrix'. * Better output for gp2c -G . * vector and matrix now check theirs index variables. * 'f(x)=;x' is now valid, though ugly. * Output warning for meta-commands. * Output warning and default to gen for unknown functions. * Description of '!' was incomplete leading to extraneous '!!'. * Less spurious warnings. * Thanks to Ariel Pacetti for testing the previous release. -- Bill Allombert Sun, 23 Sep 2001 16:14:34 +0200 gp2c (0.0.0pl6) * Add self test, for 'make check'. * Code for tufu was wrong. * Bug in genentryuser. * Implementation of matrix(). * Gtyp to Ggen coercion. * Global vars are initialized to gzero to protect against gerepile * clone and unclone facilities. * Parser grammar clean up. * Add Gpol and Gvar type. Support for polynomial specific code. * Add Mcopy mode. * Add -p option to protect user namespace. * Rewrite the initialisation function generation code. * Fix typo in description of >>=. -- Bill Allombert Fri, 4 May 2001 13:03:21 +0200 gp2c (0.0.0pl5) * Autoconfiguration of command line to compile the modules. * Better support for '&' references. * Better cleanup of var generate by if() constructs. -- Bill Allombert Sun, 18 Mar 2001 19:38:34 +0100 gp2c (0.0.0pl4) * forstep(z=1,100,[1,3,1]) pre-implementation. * Better garbage collecting. * New option -W warning about undeclared variable. * Now error messages print the line number or the function. * New description code '@' for member function which use several time theirs arguments. * Variables added by the compiler of type `long' are named l1, l2, etc... * User vars named l1, l2, l_1, etc... are now renamed l_1, l_2, l__1, etc... * Now generate an initialization function automatically. * Better variable optimizations. * \= and \/= were absolutely buggy. * Rewrote movecode/moveblock to be safe with entangled bloc. * while(,SEQ) and until(,SEQ) now work. * Add support for clone. * for(i:small=1,x,SEQ) now work. -- Bill Allombert Thu, 15 Mar 2001 12:33:40 +0100 gp2c (0.0.0pl3) * Fix `forstep'. * Now error accept multiple parameter, as print do. * `next' now is accepted. * Add types nf,bnf,bnr,clgp,prid,ell,bell,gal to allow implementation of member functions. * Operators and member functions are now handled by descriptions. * Fix PARI version detection for 2.2 * User vars named p1, p2, p_1, etc... are now renamed p_1, p_2, p__1, etc... * 'lim' now renamed st_lim to reduce name clash. * Much less extraneous parens generated. * `&' references now work. -- Bill Allombert Sun, 4 Mar 2001 11:53:16 +0100 gp2c (0.0.0pl2) * Update scripts that were forgotten in pl1. * Fix indentation in `for' loop. * Added some provisions for better garbage collecting. -- Bill Allombert Sat, 13 Jan 2001 21:29:32 +0100 gp2c (0.0.0pl1) * Now initialization in type declaration is supported, like f(x:long=3)=local(z:mp=1.2);... * New func.desc format. * Garbage collecting before return more secure but still ugly. -- Bill Allombert Fri, 12 Jan 2001 21:29:32 +0100 gp2c (0.0.0pl0) * Initial Release. -- Bill Allombert Tue, 12 Dec 2000 17:33:32 +0100 Local variables: mode: debian-changelog End: gp2c-0.0.12/doc/0000755000175000017500000000000013751742702010203 500000000000000gp2c-0.0.12/doc/Makefile.am0000644000175000017500000000275313623476440012167 00000000000000all: man_MANS = gp2c.1 gp2c-run.1 $(GP2C_DBG1) EXTRA_MANS = gp2c-dbg.1 GP2C_DOC = gp2c.dvi gp2c.html gp2c001.png TYPE_DOC = type.dvi type.html type001.png PDF_DOC = gp2c.pdf type.pdf ALL_DOC = gp2c.ps type.ps $(PDF_DOC) GP2C_CRUFT = gp2c.aux gp2c.haux gp2c.htoc gp2c.image.tex gp2c.log gp2c.toc TYPE_CRUFT = type.aux type.haux type.htoc type.image.tex type.log type.toc EXTRA_DIST = gp2c.1 gp2c.tex type.tex $(GP2C_DOC) $(TYPE_DOC) $(PDF_DOC) MAINTAINERCLEANFILES = $(GP2C_DOC) $(TYPE_DOC) $(ALL_DOC) $(GP2C_CRUFT) $(TYPE_CRUFT) gp2c.dvi gp2c.aux: $(srcdir)/gp2c.tex latex $(srcdir)/gp2c.tex latex $(srcdir)/gp2c.tex type.dvi type.aux: $(srcdir)/type.tex latex $(srcdir)/type.tex latex $(srcdir)/type.tex gp2c.pdf: $(srcdir)/gp2c.tex pdflatex $(srcdir)/gp2c.tex pdflatex $(srcdir)/gp2c.tex type.pdf: $(srcdir)/type.tex pdflatex $(srcdir)/type.tex pdflatex $(srcdir)/type.tex gp2c.ps: gp2c.dvi dvips gp2c.dvi -o gp2c.ps type.ps: type.dvi dvips type.dvi -o type.ps gp2c.html: $(srcdir)/gp2c.tex hevea -fix $(srcdir)/gp2c.tex type.html: $(srcdir)/type.tex hevea -fix $(srcdir)/type.tex doc: gp2c.dvi type.dvi dochtml: gp2c.html type.html docall: $(ALL_DOC) gp2c.html type.html gzip -c gp2c.ps > gp2c.ps.gz gzip -c type.ps > type.ps.gz install-data-local: $(INSTALL) -d $(DESTDIR)$(docdir) for i in $(GP2C_DOC) $(TYPE_DOC) $(PDF_DOC); do \ if test -f $(srcdir)/$$i; then \ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(docdir); \ fi \ done; uninstall-local: rm -r $(DESTDIR)$(docdir) gp2c-0.0.12/doc/type.pdf0000644000175000017500000054463413645577730011630 00000000000000%PDF-1.5 %ÐÔÅØ 3 0 obj << /Length 1390 /Filter /FlateDecode >> stream xÚåYKsÛ6¾çWèfj¦dˆ'Þì¤é¤Ót<‰nM, ÛÌP¤†¤’¦¿>»XP¢$zêiÓÔrOXB‹Ç~»‹}èjõìù+¦,K8Sr±ºY0Í“™…Ö2áF/Våâ×èvËåo«Ÿ€YM™ešhÁ)q K®£Ï›e ƒë—±Hy”7%Ã#¢tKõEWm†j³¨mp¦>÷ƒ[‡S²c‰UŠûS²„I¶ˆ¹IŒåtÖÕgXç\UuT]Öu»^rý0‘ëÜka“L X+)­½ÜtUMË™úŽVó”§t6‡³e"¤ögÇL¨D§|KžØÔÒ/àÒ‚Eƒ£¡+ œf5׸0…3Afh ,vÂÇX)GôöìÃe’É=‚{„a@„yƵ÷ž®ŠiYL(†+$ ðN9^7ˆÓе©r[ iÁDÉ2Viú¸ií9™2’àA}‚Á?Wý² µ78 ´cCvlÈŽ™ü wyLƒÇ…{\8˜5;±îm…I]å=ziN[LÇðd\ý[úû6œš†7”þ]³¨òúXúŒ¤—êÛØòW[ˆ­÷b‹ 6>äDõCOæ¶s°±±ÙmÄÒ‹Ï;²¯Ü‹˜„7J\ÆæÏïíz¸íÑ9Š©qˆ¼š# *Zù<¬¥t!Iñ¡v JÌÓ ÒytÇ]§àÿÓ +ç|ï‚îK÷>e²©Ìc,?‹ ñ÷TÝhù$оt>Ђ͡’qdçëwêØ…Ö·Û`ˆ… Âô99øCÅž(}6ÂR€}²?ƒ 0¼ AÀÕT|(ýÄ×AðËõ䃳æóðw}Æw9Ø5&£Ï£éçC ù„†dãqúô?ÁâÄd@áM>Ä]ÕÜbþ¬žpä×óa@PŒÏ~§ê©$ã™dó¢'™þ°%Ó¹Mní(‰¦¡«H–n}Îe|¨Ùý¢¾½þ…ˆ¢]¯ó¦„Ÿ•2g`ìf¾Š"O£ÔÍPl<ï9¹Lxjgº¡û é»°û~(£~(Â}Ç¿ïÇÊ& J)KR)Žœeh;¯6›’jì(L`ÃÕá× ¨á oA»þû 4Kj¶£¹À¸°vsÿ YÈ•öbmò®JP¶™R w2‘ºàˆMG¯LUº£ËæÅ€–ãEÍd’ZP£4IfÄä]~öÃêÙ•ÃâV endstream endobj 16 0 obj << /Length 2571 /Filter /FlateDecode >> stream xÚµYK“ÛÆ¾ï¯`n`Õr4ïÄY*Ë¥”J´7ˈÄîÂæ+é•þ}¾žXJñ&˜iN÷ôóëæ›»›Wïü¬d¥•vvw?R3ÏåÌqË„,gw«Ù¯ÅÛùBé²Xîæ é‹UM¯¾8îâò©­ãêÞ‚z»j¶‘hw÷މè8Å×DØÆµ3Ñ\‰®:<œ6õv.]qlÙ|¡K^Ü=Ö_óndz]šÏñ¸UäÙlç¿ÝýcÆg !XiL¼ÄÇzylv[(UHH„f¥ÖCº?·ÇCµ<®¿Î½*nA/mQÑ—)~þ ߯§Á5âRÓÆïDÛÖÇøn‡ï}ÕÉ'n8 ðê}å{(ß—§–n†H‰þ¡ûþ¡˜ÝïÇ'#v½è…?Nõ­ø…¢á6žN«÷Õº­oyXž`ã-3PD:æáln'”a™ÔçÈa5›peÇDé3 Éå£ÈAHztÉ‚’ˆ.†›*™·rh¶.ÓBÁd´øõ+tñv±Þ…\ŒÅ&:Hý‚ "ÒD)ðp?''&‰Cšxø+õÎ'ˆ:—ùÎ'b=îùx*âÛtBçý×›H]ã•.Äó…½K†TÐëªÓ3Þr]¿(¡ø9Ü Ÿ}iÚPˆ2&°ÅÔ'k{É„íJ6~ådqœHšY×¹r{ê‹y|¬Žñé>ߣZ¯ãC‡.ì³è‚ ÆKñ½è ÐEp(Ei0b Ö„½ÈBõy¡¡É‚ôp©ÖRž7ߦ]@*ììî§îaa\#®#¯ûé`JLŸ‘ÖóÖLŸsªªñ04„B–\Œ%O‘‹­6­.© ë2ØíRµ±õôÌ]äøo÷¸‚èæ§»›ß<|&PU,Ó\¡K¤?;[nn~ýÏVØD  ëøÙS ÝÌ$RÝv=ûxóÏ›7„ú•¨ô2e­Kuª­U=‘!¸x{VO¸‡ãŒ«‹{Ü[ó.Ò¸C/ìFXMà™Ýa…°[’£r!ŠïÒÁm•3M26:ê4ógL‘H*xé”bZ[Àêe’|*¥;&=¢O\Ùi'3Â~ƒ°“c%;¢ûÜšûx˘?q÷Ýj‰@¡„lºäJui Y2ÖR^7Õ~Bzg?wÂú% —œÈT81e*°x&iÇJeþZ§36ˆeVwfu›8E2§d¿–O5IÌŸ‘jé~Íyóg™+)Ê3>¼Uêá ±UM©bÛm„µ­ÇÝ_ÍöM*Š É “~Xèï»ÍT @²ò;}RB`(¾PvÖ£AÆŸðÉŒßnúYÿ×LÛõh( | |@hgMQo ±HžÑMè@mF´œaÏ:öe1­^x“°ŠqÙC~9¸/+ƒè, ÎßT䜄·&±¯â×¾:jé%¤·Œî9³F]ô’]<é®òSKWmSžÓtä&WËq?Kk!3þ™ä¢jpé¬Ó>Qâ{,å»Ó–²®“"U:àÅ!(ŒÄ§÷(~xŒ$¦óÛÕP˸N‹4 ¢‡xC´×m|§>;D3ÑóÕ (`†û™á°Xù’(Ü ~o8j)@Ò¸Np/©îŠÿ÷ÒPJ0ßs”Áð•|å¢ú*vFŠd1.Š÷ǤÚ`cá3<‹«ûCÌ«¸Ð7Ëá´Ý¦Œòê,{Œ_Ð`)?4éÃ^.‰°üb9)äd!‡ÐÍsy! ÈWñ˜z°hCÌLkÏü5ÍrÌ©¾j‡Å2§ÝL+‡4"#ËM*wý¶s! s¦ S'åsäóÛ‘‚$>¹î ™- uiu8ËèÄ,ÞrŠ#€’¿ä("G"S©ïȰ#/vtPªdÜ^ì\H‰tãá~È;LIò¶úëéÚ¢]d6ú%Æ@îè4gš£&ëÇð£â¾ZUeÐC5•fÒ¯cî$Ëô ózâ¾XCød5hǬP˜pxÁ÷8t ؆¹1›o¨Q›È ˆ\ Л î^¤[ï1vý2-U¿7Û…YËn=å‚è6ñ²¼–×… Hø4WïK‘_\8ƵÎC›‡3k?É:ÿj¦#Ư¯hµÚ!¿Ps%n¯¤¶?Gí®Y—"˜™Zõ¢‚äÐ|™"w¼‘€Ñ³;êÿ|Ü«dVêáÎ3ZU& ›—hU@«Ð&IQ&­¾kN±Q…ø;B^›â§/Õ&N  åæ^e0$ €7·„©ÉDó¡h"iû=¦• Œ¿¬Û6®„cñ&ú1%ЄyÖ@ÃZüáÔ_  à:R@nÅHdìETˆã·» ihž¼?¡²½Á¥$‹0*Ï-ÉI˜×¸tÇór|ÙÔÇÇ4”K'ü‘fxÛøÁwê¾O6–š?lÞÆõn2áDžL ]$TäR¢—¶Èú%¨G %޲9uÐŦ’ ’8'èðÌt$ Ý¥›E™FÉø™÷©¸ &aÀòKÓ’!]úsÎÑ4B‰`=|ÕíX‚³žåDõÚ’†f7d2ihþ]¤ÿsÐ4æÁí¬¯H–.Q:m‹¹`±@»‹¤æ^?þëý«Ÿ?ÐàƒÅÝ»|Òòt8ÿ¡E;ë&ŒïÓ[–.uTh›uõy]?3KÍs‚qס7ZNáuBYó¢á“ä>d’0Ïʱð—†Op€a) sÆÀésž€0A޽©ÚfIs8Õó ÓÁ¢Ž`÷Q‰Bp,‰òq§²Juói²ÉC}Hc—óÿu Š“¶»É7Þ¦ÿE#:MÑÒuœy">ú·­ìM>ÏÓñ6 çPãv'‚9¥z=7Y÷?“d§ü endstream endobj 24 0 obj << /Length 2428 /Filter /FlateDecode >> stream xÚ­YKsÛ8¾ûWè6ÒV„Áà1Ie\™J²ÙX³—Éhж¸K‘’rÊÿ~»"%HòŽç`“A ñõëëæ»ÕÍÏ¿p;KH¢¹ž­fŒKb)Ÿª ãÉlµžý>/ª…àónñÇêן™Ì¶Dk=£~Úç}ÙË]“gE[ÔÕb)„Àw¹wùcÞ´8"çMSÚ<Œ¯ý´û7óg¿l;ÚÂpb¹ì÷pBÜ|XÝüyÃ`ŒÎØLpN˜r 8K¶½ùý:[ó_g”ˆÄÎ~¸™Û™ LX¸+gw7ÿºyç?ÞKpE¸M¦‡ÿøe9xB(c½P·¾´$È>žµä0O‚K¸&\ùÙMž–§+rA ¡üN™ªÓ®¨ýïÝb Öá\XÜ=u£û-þ¿w' X°y¾X²yD6ª® Qâ’$cÄ&f¦­&Žò EH¦Ú-Å©ô[~ûðöS7I¸äW5!˜$Òè  ígow‘õ(B^ÔÀ¬qÈD–,–RªùoÕ0«~ð×n“{Ø;­WZÞúŸBlú½‹*æqˆŽ›Vëè:D˜aN³P¨kø3;ZÌ.nÄŒXñF„¿ý1Q©Óòz°0~ÄqŽØ)ˆEbx¢e¸›mÚ5E–»aåÇѯ8ÿí·þW f¬ôü?}PȺö Wõ¶À¼'¥†W•‚W‹ô¾D«Ç¡+ÆÁ`ÅîbtÑL__ÀpÐÄr©ŸýcSd8ºñ?‹°aê/Á…ÃH8·SdÊ2z줉LÉ`ˆ!Õ¬6Eˆ”ý5mÛÚI—iˆ˜uêIÖÐÔ]=ÉE~<óï®C¶ú©ú)ª-fVéi‚u JÕeôÊ踺¦qãÎ ©®DÅ%³ç`6r¦4Ø,ÔW˜=Feɸ[JkõWä„×™3Á&>æUÛEÌ]hXs0‚;åÕãI~D̾«¸QJŒM.á¦Ë‘Jr0>ö:ܨˑ¸”‚æ°úö×qÓP™°#Wmµ:Áìü«Çç^)AÎá$I]Ê\AL7Wh™ìuö¦pKqw\·å§w«¿L}™òÅʱÁEä€Ûà­·y•uðàƒ#p0ãx[s÷çÿßèïp^Hk„ƒI3Eçw>ºw• ˆÑ-sÁ .žHƒÈKH—Â&#ÖTëÈIìpÄC­Dê¥þÒæ¿ùQtWWås^ÊË|› dè™Hs·ŠvÎ18æSTrf\ú˜úRS;_á’XÛ ›Ì1o…[ñA„&ïöS7 ,[9Í?‘dຜ?ìa½*ë ª ®SÕ]¯q\u(FSwèçn#!Cõާ¯ñávš’²´ kÝô }1Q¸÷©ç|Ò.ØÔÞùW—9ˆ»V‡éÒu¹wT~ŸRLÝCÍç ju`÷gr9#‡‚l\êÍ–‚È›ÜïÅü¥[vÍ>j©¤Y·ïû]°ÀqË}ßj¨^îQ†-N3¸÷ûи8±ËdÂMˆZ5Gà›A| ±0Û¤˜Dÿë§aã ³ J<ó'ÂérÊsãó.¤ H× “ä¤kc‘dƒƒ9&çNlµ× Dº8G~,(÷‘"‘>û`nòÛËÉög¼c¯4Îì;UþX¼#+¦¾q¶µ( R;a0"0˜¾}ž7•g0rÐ#6íéÖÎ$=K Yù¡v™Ô©àìѾ¢O¹MðmZTÈ=‚)>ÔÍ´-d‚G{ÏXOŠª-Öáþö+;;šV¾Ýù“E Á“)ï’T¡ðÆ opcIC6aÀ-Šu"†ìG³ù—ÚÕºx*Ö.à Žž*GOý@æÒ=̼ïIþ@’ƒO»±4#&äÓ+«ÖFqè~¾j˜£††j¿mÂëA€Ö€Ç ZƒyH³Î¿î÷DZþšúË:H÷e?kŠ”[ÂiçW~ξjƒðYñ2™¯v<ß‹;bycq_œÒ†Öï´b KÀ‘ìJ—U:÷WBÓ¶ìÊ[ »Iÿϧ¨»ÐY†ÌÔY†‘Ó€ ƒCÀ¶çxT[”_nÎ#L±ô†Ÿø}_oÐyíK :‡ÙžŽ¥k=yû³PŠ'}" ØnœÕÛ]Ú÷EYt£ŒJ”“ºíaï¹ü1ƒ?=.§IPÏÅãŽâ)Rˆ]ž®ë:]W ÔOPéèC¬Àà|&îjb¬š† û],‰C`íÐJ}÷Üå±/hZkû¶ï§ ПI2 óú€ÛnŠm>ì»DRºrÄ3¼ôXÖ÷=«w3ã®)8 0ÕñL‰ô–;UT¿Î5oƒ—ãR‚†¦Øím´£$Só;)¶$'Ñ-Ê.•4vâ ­~½¿x7-7£²_ûmPç¸é3©ÉÁÝõá /hýÉ}CË¢-eÍåOh‰ï M»¦ØeŽhIA¦TP€–,{•–¤%Fs·”°¡×î¢H¬VGM‘Áúå¡wÜv©kwÿ×{u9÷A"Ø;Æq=v°ØQ°K½D>1ß½}`f®±9‚b²§À#*u wz¢KüœA4R`$‘ác´èÅýne ƒ endstream endobj 27 0 obj << /Length 2475 /Filter /FlateDecode >> stream xÚ­YMã6½÷¯0"±"~H¢fO™Á$›`Ì& äÉA-±ÝZÈ’#ə鿯Hê˦==›¹XE«Š¯^Uѯïï¾ýž«Mf O6÷Æe¨"¾I£$d<ÛÜ—›ßòPnwŒÅQp¿nw¸è%‚Ƕ£”ùÛ¡~èNÅpêt¸ýãþ§o¿_®mvL…B9é÷Oº×øJˆ`ØòÔÇÅ2È;÷òWMýlïKý>b²Ñ¥3´v8¯ëvËUðÁ ?¹OOãí£}IÕ–¶} Ï°° tgç>žšb¨Ú¦w&ðs²0±µ¡y¼4“Á“2ÅL3ãç“g 2B×Έ¼·ƒ†ßœi`þ³•.øj§’0‰²Q~cR —zp²Dó|ÆìX"ÄKcSs;óÁg…½®öVˆ6îèæÁn \*œ¡ï˜4Зݴ›×M–<Œ9W¸as¦1¿msÆB©âs›;0 _Œ²~É­vFÓ¢Îûþ–…/ÜJÁÃH©Ù®®ò[•…2Jn[¥D˜ï¤®k<“0Î&x¾­ëê8T…Õ´8u‘²úÈL¯ S…LLÛ¤ëí.fA}Ŧ8䟲)ÁƒmÎI–|–ð\± Œê…‰rmâÙŽfø4áé(þ +ãOà‘‡"cë+êýÑ+MÈ)òßÌ Üwíéø6Y³ã×´Ê׎dõ•ÙЫ»Sh¥ú±«J¯êÉÌïºêà”¨J×ÿbUÅ'w@Б×G#·v ¸T&NÓÛØã‘€ÂéÚ´}î‹'g2YöC^·ÕgîŠ/’V;½7Bý´¼8·%…wÂ,&Å 9ȧ$ÐcÌø˜Ü¥vovHîÌ&wbæk‰Ûåíï| Ga"å„LLMB½ò„ 35élÜÅTðßS?Ð]äv Ö&)ÂèÑäp\«¦¬:m@i§.÷ã'ïJ;ÖYTaú{9/1|µ“"ƒ²ƒÙ†£ÍнSÁ%)ºŸ‹X²ÙI@™2Œ‡GVrñ•¤.¾”cžë‹Ž¨*HÈÝÛû»?¢ CnÀ»2Mà¾)w¿ÿmJ¼üiÁïjóÁL=l8&,êͯwÿ¹{Meœ«4 àÉ$*UŽ2K]ÔžU‘|DôeV ¹ìlÕ‡¼×Þ:BM8ɛңWš†Xúz©\¼ÈVe_dUaÕèlUýÑ»Ø÷„esìîb™oó‚ÀôäÀ´„­r¥dÝ6ûÞMj-àrûx†h;˜÷½L©ó5z{7³¨L5s+g”ÚÁwéD ~A–IF‘¿³uqÆ Ð‰ UÐFÏ•Y¥ö”©«¨ÔÆ|š86ŒÑâÄ`C@œÚ™ÜQá½±3Wvšþ¹#=ô vD塘Ûi2'ìdžhuèZë婽v‹]<ãk hÀi`î‰3éšÛ‹å>·_4@ˆ˜…<Œ@0¯ÆÞmѹ}÷ËNÒñXWE>/wìÚ}—U³7ȉ֘©ZnÐÝc^Ïbj®è* ñ¸RŠNM©»~@Ôçµ¶s]1éîIÍvx²søî‡wü½+ÚñªMEë4¥~¢EN‡¼YÊÑ;¿Ú{ôu»˜¶{%°¨éd;P¶FBq:hk% §6Qáõ¡íÓb,/‰å;Kó½ Ì0™Q* ÒïíC¯‹ÖhŒ{8ZïÛî™¶À©óÛí³öé —uêö¶¥«½ôÕáX»‚]Ìéá•‘ÌgR®EÝûâØ|j;d1Gúïì‹GjÒšv׉Á”ñ©–êÿôôQ, y¼Èö6†²óöEe&Xê"á}GU3àÂ^áJAG´BEo¾bôÂç.z{8šÏà É£(Øã³+_%óW{ݘÏpu«]~·6- S&×jÏü-¥ ¾@Û;B]‹¼® 'tŸ{<šÅèÏ&‡v§Z{{¸d.`¿°4 ><¡Ç<ÜÊRR¼Ï+÷N—‚àŠZ¤ê÷޶Ÿ®>‚³™'ƒ#€=Š˜4•Á¿õà’ IÎ’µßO„s!H!¸4AŠ'‹'ÜPjéL…‡‡¶HQI©ùý‘ò`T¦ÑÄé Txª bv>ûåR&¤Ó«K!ÒÔEëå\)TÝB-P_ÝB *F>÷Åö` ƒvÆÄ;T¶)­Ÿ­ƒ9j‡(ÊÖ‘3†é%v°PS¨™ò;ÀÑ7S·Cßxd%Ë£‰áj-àL, h¨itÚJ"š96¿’ ¡—bÓºŠÐaNâÍÚ!¿=Q ò„»Á6¦ˆÞY(ñÒŞі±«@вe€aC´_f1Zâ4P§@ Ú|Šáó6‚Æ(¬V“òn?e7‡ÔxÒo?A]!›±èQîV¦ˆ\g¹ÞžËRWb­š7|Fó!wgÞ#–l>3¾3 !õ¢Â±÷‡|° ¨0þ`õÈ÷yÕPcM‰Ñ£Å¨›ýصnöÐÝÌÖŒÂÐ(’ Ŭðå8°×{&¤«úávÌð©¹3>Âõ„¬ýO*"[À`È%ÝâJ¹VÆÁPiB8ªtG[1)IõÀ¹ôƒ—Óà_Ø[óUJçÔöõðDëIC$‹”©ÈL@³±Ü‰FʌҥbÔ­»qm¿VM¡W_©à¼9€ c¦™Sõkié”°×ÀL³PMñá¥Q²*Y†ÙàJ¹ˆª!s캞¡/äg ÅjÌâ ™Ûz5ÎÑ©Œë¯T)h‹Ù|Jò‰ØÏÂIm Ï'-Ì2öÆ›ÍP˜Ð5Ÿ/bÃpÖ$oe¤è“—'ê®WdÌTзv%ã{çm/³µ·Qôè.7´&¸c,Á¹9?áÄ«ÆýåHËf-+$ÙK•q˜ÌfÔ·îÝ‘Ÿ&ÿòÈab¹§•Ó»ÓÇIiŸ¦zy¶hiŠy4PZZ¼ähÏöïXJÿ œõÐþâpÖœâjxû§Õ¢§vüçù+ÌN$gzaÈÀü·aˆ6›±%]‡¶°s}{÷§Ú)6ž[ãË7î_‡°Y’žï=UÐÇê(˜ÀRizû¿q< Њ3#J¸þ ÜT¨âõ <@¡7:K?/ÿAt½Õ¡ÿ„¤œ_ëgm–ñå䮳ó><½¤»ºÚZ'ÊùçÙ`ò¹¦ò÷V‚ŠÕÈÓ\Ñ©éwìa)gh”G¬óýÕ+°.uqƒAÆOÁ<1©±.nIYô[N}uSÌy$C&bb´P)wJ$Gäý[íœ` endstream endobj 30 0 obj << /Length 1827 /Filter /FlateDecode >> stream xÚ•XYÛ6~ϯ06 TÖ I‘¢´/AÛ4- ¤ ŠòÐ¨Öæ®…Ê’!É»É¿ï ‡ºlz{xÏ|së§›7ï>¦‹Œe‰L7w !K¹\ž0!³ÅÍfñwôek«åJýúYþLÔºÞí‹Ò¶Ën~÷1–“;2Ã2 8¶ßö_¹æ~mž¾' Ó±î÷^ÁÝi½QÖ8ŽêÿZßÕ ÝÖ"‘D·n‡m» ZiÀ[®”L¢Úe¢¯\¨¦íÆtx½\‰(¯–"ªêY[¬„ÔL%Á2­‰+ÿÆrKZ»¹B2uó&²ëæp&A¾O-í¯j?.áDŽ?ßý^¿°Î‘3Üš°©fFÅ=@í./—+-¢2¥HÓ~g}èRɼ×ïl–pŸÅŸ~/û:/Kë‹yʤŒ=b mÄ—•‰väDO¥Ús§RZ0°@ûþÅÇ ºíòζ´­ÛæÍÆ@ä뮨+¢`ŽòhEF>=Ñz”×E^ΞCöù\ÓK ¶Øù-z_l’ž ¶u¹iûI·ª£õ¡i è€(M4Ö={ð¢^Avmdo9Æûü×·hE}ðwàãM½›½‘ô¸íå—æ<žhùJE·¿@‘0V"ÚÔ4ƒAÄMÀiÂJöXÉ ºbr»ó#˜)ü¸²Ö!áN:i`q¦ë$‹þ¨;bÚª{ 5PŠ-0EQçܵ¨ŒÒ½3¤›²ØÐ0¯6´c›·4ãï‡Îwþ–A˜õòh´võ¡ô7ÞÛÊ6ù9®ñF.Á¯àN$ãþ˜t!ºWÊ«è·ÍÂ=aÜoƒÊáÙx×<¸;]|àrúRÛ’°aÊ3,ßNCNiišŒXAQ„b™Rs%OŒcà·]7ÅÞÃ|;`¡ëwüú™î˜‚c<X:™¦Ó]Þmlˆ'13Y6‰'§qi%9‡È„18e©ñÉ“3( Ô»ßsÌÓ×÷˜ðc¡9ˆÑáŽË!+p~^LŽ'à¶p\¾æü[Ìpåx‰€Õèò¢¨Ö54ÜuWæ÷Dý,Ï?p|¿&&91é7]Êpµ²ÒÌä |_–iy…¶¶'Ðl{ãtq &+ûHÄ>ï:Ûx«È»z×^ÓSBMõÞ×LW„ . †`;cf\¤ÖÈØÖå䀸*‹näÀ5ËîYÈ&¡:äFÏmütu¦ÎÓ‡ýSWƒÇˆ#mü׎ªNQx“+¶ ùrœÞó`æOgbHÉXc­èþkçÕˆŽàpÀ¯CpAi–€+ –J”cÍuz£f‚§!øùø SÃû9Õd'…‹3ºóŒ/È$cJ˜™³åeù´R‡ZgµJšzµNß>UÇPÉ qÞ *âéPu 2k7sÿ K¦ä‹JtɲQ±ÌWÆPb'ZÎ=ýcöU~Çàr…i¿Ox@+îs·‚âÀ…7EcdÜxšOfqEÙÀÄe@ ˆ<éÔÃ(GîOE~t.†{³I§à¸Þ3±çz¥–8¤ g»šf6E»/ûÉ-l—‚ªxDÌÌe[Û4Ø:ƒƒßÛ^™^k9åñºé¼I³ {•È3¤ ôM° wdă&0ú`Q÷U ¶§²r§-hGN“4|ðà#ñq_&—EïÇÀsÀ-Œ`© ×™¬†³1â†ä„ Y“Sq¥÷/¬m_(§¯ƒÃž©ÓP_Î%87§åS@xL$ƒí]sMIÿ4, ¦ÆŒµ'× (]wß÷Ô³¯ x¹†þKêPø™aVý*QŒgGõߟU‰_$LÚ7Fé¤@10¼»ÔaA› •KJ¹®[¯÷[¿^;ÓŠÔîûŽ&¡œ+ÿš ¼&}¢½™44+ï_è±7–ÏËXžÕEØffõÚ‘Ù¬ëÝ._Ñç‡ ›’Çó®²hŸR*9H=é:ŒËàG—c4”GãÑ@$áïyz›3»S€‰Ž¼&ÆÏÚM§ñ!ÄwÑtå«uª½ŸÜç¨Þ^¨Õ¡­uSÌ+âu]ÖÕkƒ^’B‹0VÞ7C/’,=®4‹±è—KÓ”–4.½ùåæÍÿÚUm endstream endobj 34 0 obj << /Length 1923 /Filter /FlateDecode >> stream xÚµYKÛ6¾çW¸iQËˉR/mºh‚({kzàÚôZ­®Dg³ÿ¾C)K^Ù»Þ¤'‹Ã×ð›o¤¹~ñú-Ëf9ÉS–ή73ÊÉb6“qJ(Ëg×ëÙŸ#Œ¤‹%¥I½Y™¢©]ÿöúípb<[ÒŒðÌOyS/–œÊH­`^dŠ'Ê¢¢ó]ØìL[Ô·(ú'qÝ´•*Ë{ìUر+ôJ£¤Ù è ›«f±dY´Ö0—bÙ*ã;•W£¨Wå~­QmÎz³œç ¿Ó»]$4Ò»ô¶•®4[†q€É“G£îÝC4XF²\†EÉb™ÄYô‡[×®¹­ŠIÒ/  Õzùsß {¿ó­zmÕj¿Æþ¦3…ÙzV«¦]#¬Ðo›­ö‡Aõð,‰?ùí¸ˆÚ}©;‚çcr†ã™·7“$Íi ·aIôaÁi¤ŒÑ­Å^‚¾¦©çËb)bíÂDÛpÝ—¥Œýmjí?6ö—»9Á¦)ËÆ*~§~2Æ¢»­n'Mg$åI°Ž¹ß9[OX‘‘8Kø „ª½ilãÝv…_ÆIwŽúÕĶ™$4æaµ ¢1á=Ã.Î^ ƨ8"ŸuØ.—B›é[ÝNíœRBSV~ ”{9qØ„ˆ<;ÞÞ-¿²ß[Õª•ÑÖ[;ê‚cßÚfîxùpo `'y¬Õ´’R1©ÀÕr„.ø“àÜrÆvöœ±@6`'‹I&“1É1 ÀÜJ8•Œ¶Ø âæ\5þÖ+ãY #H.À °´”—üS9qnûŧ•„S6Bˆèzëb$øª àë®W´¾k»°Kƒ]VÆË7ø; E.7ÕŒyÓJû@„˜ðš’$¹ü q[2KAn#NND*ŸŽÜ„›Mbzb(_55D×ClãÁlçÀ°ïÓÂÚrïQÓÿîUé1DJÄ„f(}".²Ë!úi:”¤9¿ˆV®£ÙÙìgpdFI,úhhÑö…&ÃO«7PåÔ®:†a¶‚vE‘í{÷aŠbgúm¾ÿ<Îí gvïª~_bÃÊ®¢´JÔ¸­ËD‰Ë›>û‚Ϧi6ξ'ó’FØÆ›*϶ªž: …¸ ³':Ko‚€XÏÄ öéTåþZÕë*QWp‘ÆÄ3r[c¶V‰úr¨¦Ÿá,UÑuý¡T{»µü¤Únuù32ò·g+¸C‚ø?ʾÚL1Å™!ò',ü¼ƒ³2zryü#„Ll(Hr@ÆC’&‡*T{A_õÚ†ûÞWvÀ ÚzFš" vôÀÆÇ+†ÊÜŽG‚Cï®ÕŸŠf6ƒZ™ »zGÞŠjŠ,çé ¶n‚ßÚ^Àà£T¡ß_Û`wKò¥:P#ãé`å.o2ºóm^ìoQíÊÃÔjuÜìk™<£Œúçà>Ûî벨 ¼ƒ¸5 i‡,cP'¹ö¾Øq®¾9sù—eþ%÷}ÝcËØkŽîN'2‚dò)W4Èâyúˆã@1–>Ãq~~zfÌíÉ“Œ±@w…rŒ"m¡nJ=äcòx Ir"Szy 9Ò¬ð Uª¨KpÇ{lî;KF;`Ó´!]‚ý™“[…~ 7>lÙt*>etŸÄŠv‚Á¾D‚ .€ôט¢Ò_•Ý?\R'ç%.ò#n‹=~Ëa€¶c4üø|Â|óT>Ã|cÅÂ/ÚËI¼fâ¨ó4ÞgG ãQåŸ)‹Íýy{M>¶-­ÄòøÉMø'·ß-‚œFÓÕ„iËCT÷„ñѯ /}ÀÏ}x(ºpa€p]užÊ‡£Ãk[÷£;>e„J,&âØïDݳgŒ; –CáÕ¹Û‡`øŠke½ñ]ܶ…/V†)Äê|ÉewMå—†J×u÷¯ÁØtÝ.Dº šJ>¶Ò¼Õ¶pËOÍ{Õæ!Iú©Ï`‡3¶:^áMeÛj=|m §´¥uH€¿]¬ŸïTk UÎ_á”9¾ƒÏ=Ejo¹ãíÆjLúœ8¶Üëôgô@Næ‘Âg‰þ)Ä~X̳Ïx?ï×ö,:±Ð+„¥n|8|rŸdÈ'ÎÆ †æÁÐp f¡¶gLÀzEáËß—‡Ã·ÅíÖUŒE.Õ>( Ã$Œ¦Âoÿ :ų¡éìµ)Rx½¯±g¥:w‰£¸ Hþ˜B[†ÈÜë*­ÛÛRÏ¡ŒÙ†M—9Ж;«ÌT©u~çë’÷›ž+õ!bt¦L (TxxÏ2Í®j:3æ ÷;8ð„ "Éì¿.$Ë<¯SÛõâ×ëÿ/ä±k endstream endobj 37 0 obj << /Length 2160 /Filter /FlateDecode >> stream xÚ­X[¯ãÆ ~ß_a@â‰FšÑHûR AS´hÚ 9@’<ÈòØÖV–]öäüû’CŽ.¶ÎÙ8ȃai4âɤþúôîëoÓM&²$J6OÇŒ3aT²1a"d”mž›Ÿ‚ÿžm½Ý©Ä—¼/¶‘ Îe½•Á Ó ?[zzÍûÞ¶¼5ï›K·ýåéŸ_Gó)dº ItÿrÝjXÚ8×$Š„‘ÆïËëʬ(&÷üåMa*Ô~ãWÛå¤7Y•¢UlRe?á‚­hCé Ùì"%E¦ãÍNâ¿&i F_ÊÚ¶»8Žƒ¼Ã›ªjPÊs÷4’jŽƒ™R ʈD'$êçPš{åñ* C®Ûê×mÑÓÊèºm܆¢ÚŽžQ±þ¼Eè|aiüæ‘þ<¸§Ù^:øÈG)„Ãí°¿åE_½¬9ÆHfúó^ëcM޹Çie©ˆ • “=ŠSÝ´—¼"µG7?HÉ­h— ºÎ#”×kžfB¥êw¿m¼L„IØxùp”äm_~Æü™£_µ=öåéd[׺ÙY&âD=ês±jv”ˆ$Îuúƒ´lذs~ecê•$` Fó¶¼eD†ºh.€b¾¯¬ð ²Ð,óö? ­õ3âëÄ$²zƃrwTk»¡âô-YçÜ?ú8fvÓ.¡ª†±…ˆÀË €“ÖÈlˆ«"+õüŒ„†We¤ƒï€.b Tvpèœó+߯)% !¥d ò.¡%ø{ж¼¢;xsßÐÞSùiK&àÝÕoZJ.pĬ%?Nï™àïßGßÐ;ùÞ©Ñ =ï8;Ͳ3jÎ}0˜Ôå‚"3&x:ÛZ$GÃÅÐ yU½ø—äpƒ‡ÇyT.yM·¤€…Šá÷ó~!ÔÝΤ5[7Ã鼦£“žêƒm» Ý)å³ f;”Òh­Ë·Ø ‡AUvÌÕžÍ/3ÇQbsQŠn=‹ëk Áu_L(¦c•˜”Tˆ`7‘ qE<‘¦"IÆÂ}EÍ× …Ò#U|Újp}[ŽÙx£ýNÆZèhY+/Lÿ;ѱbÍ–VdÉdEÜPªut[7=í9»,¦õÍ•!bö`ëÜ%€Å,>z.«Š7 ,¨ìéõ=Ócˆ9š°¶&¶‘‘H“h1Î"çì³eœÕŒÎk p/òs¨ÃÎr½Ç;øIü­Á7RÛ¬Ø`Y/+¾1"J<¨ga×­í‡;ÅŽîyŸÓg‹Û_P®ÁõÅ^šö…®“ª©O®-so5ôß0ßâåÔœtž¡E–¦KÈØ XÈ ÇÉÖ¶Í{ŸBþ>d›•ˆ•Q,äTiNˆ R¹Çt%ÀÍhÄçÖ?«ü ȃò*Ò´ò$0Iÿ ’Ú‘¦¬†ÿÖ^«¼°S €Å®o-½Fåiv“¹Ü©Bìù¶ñé¸&ÜAÄAg0´'Wwòú¶ß\Ö³±¹¸å°ÏöÄú¶ì/ü±¨ûïë•.#„&º `L&ûfÎ76Œ “îÞùô†¹¤œ‹¹Q*½Ü•ƒ5„Ÿ¼ëϾ£8 è%¹¥Í>ôÐo J«=‘Œëèµ^ð t0Fëõ ¤Scf(eqÆ(©, è?¡„w%ÜÁej(H™G€BÙ#P®–á >¡q .ŽŒ’WÆE©kãž][1r§2à*õyŽÁÀ¾({ß8v7Îá*²,¥«n"è××7|´hC?¬ ‡P2ãypÝKtÎK¥Ý9s^Ñ\.@…HkiâgÃTûa Ö&Z†Ë6Ðôœ«{Ÿ¿œÀ5~pÅAdÛ:g™ÎH<åi’×´bqÿåFùrTGrGðÿ£%ÇÊðo/W7ȿЭ³eþªuœ¯¸†-ž°8侘é6xÙþVzÕ¬ô²°H)ÚeÂyýÊ`ÆvåÃŒ%ÔøãÊì ¸ÛÏDÖpá¥ïð@ßÁüF_G`…ÆÖÙ»‡põ› T Wi5XžðøuÀþÖ;Ä2š>Ÿ ñäm®É×<jF; #¸þ8tü”??g¯â9ÒÍ{.°@‡dƒTJ(dà8&Mi»cƒw{z÷ZêæT endstream endobj 41 0 obj << /Length 2445 /Filter /FlateDecode >> stream xÚ­YK“Û¸¾Ï¯P¥*Y©Ö‚ñ˜ãºâ­¤¶RNvn»{àHœ–)Q&)ÏοO7| £±c_D€€~~ýàO·7oßK·‚eÆÈÕíýJHÍ<—+Ç-2[ÝîW¿­%s›­Ò¬)Û®Ýl•3ëúžžÿýðoìêÃ!?îÛÍ·ÿzûÞ¯2–YiñP¾Ú Ï”ÇÝ>ð%Æ„·¼ Ó|]|޳ΫsÞ{Z{*»GZlŠö´ÙJ¿.v­uuü?mh»|·‘ný‘^™°Z7ð§®x(š€K,^R´opBÂŽ²+óªzFÍ(K4‡S‡-J#˜³r!˼MA•fV¸„eFb„÷WŨ„¼*Fiì\x8=yvº†¡èK0`™wúâô‰šð’Ç8xG íüê¿û¸rô÷¦ô&îýWi ™MmÉY¤çŒ;7w–ÞåÈD‚†ëøDÁ?ƒ½, 8V‰+òQÌdn‘D.Â9÷Ì =ÇF(.Šc¢JSàvvÌK¬Ë´Z÷Ïœ¿sa€ìü^›â”P]y|H 8xþ(¼k>妛ê:qXÆô˜æ¼`óŠq3¦“5ÑXwUÝôB£É±µœ96ÌÞ‘:‚ñ>áOQ#&zËŒös5aE?m&ÕóÜPÍ0˜¶@m³ˆ—³lUǬŸ` A )kRu ØzŽÒ"4Sf‘âµ]“¨U’sÕ ·îz…¤•[TH~†OŸ¶±˜¿<ä]Ÿ' ÈÔ@â{ 9¥ù9MŽI×SÒŒ¤LE s'^ƒN Ü_‡N;øE{•"‹“`¡êp/åâŠùº4À‰y*E ´q…®…°ÞãdT`fèòƒýJŸ¡¾Ðåaì šq°/ÛS•°…‰à8·g¡—SŸ;Z¨Š|¿< Àã8ù¥®âë÷(Î ÙlSšCÝ {Ç‚f¬€Ófæ!ÙôQP#‚ã}“g¨ GÉÜ&†žðZ yÎ?•–R b¤®”}Sƒqz"°˜ÓkÀªñOXR–]~WÅÆ ˆ]®]uŽí#:%èÜAFä“é^¤>Ö¸ñ~¥Æ¶Œ?ë..@¥Ztù– :oò]W4íg…§¦Ø%ƒƒæƒçâ™–%_¬ÃT8­Œ¼*Œ\†—Çq)fr?Xi*éî•we—&Ts¦…øfB{"á]JÀY3ˆÚÎUú'ÒÁØ”µÓ+LS‹¦Ïmq®h2öVa6‹$\.Ü8Œ±D¼Ì ¦|Ê;Ðú‘…ø@…p 3å¡&àÄ"¢VÅM6M£dÔWÌ}UÐtOóNr9Ë™ ÙßÄåvu3|V©ã÷+ 0—˜à¤» Xž\"Hˆ€#ª½å¬ö¦J&ÇÈ#'‘gò¯¸/|s ÜA wbQˆ%üMŒgE±pOìÚãGƒ‹/ú¼?˜û] 1Á€•m HO·å(¡tðqž®^èœDWJWB­j¬žÿ \nˆ ¼Úá’âª% ÆÇ —öîªé™²(me¦¯ÛèR^†”p"Ðüç'†3\bƒ²Óq?ÏC$ܶTlô]Qs?×áõŒÏwô˜T…øÒ'â`šO· J €X¶ Ÿ¶ íø­êwÎy1ô˜ë‹7ɶàW´/R@mÅÝÕnæ„Ì1€ ¤d«¥Å/¡ÂƇëo’¦ºjî›W©ô°º9'¤™yGø9d¤}ø}L×Ü0ó—Ƕ»Ú´ó@×µ&²W´†£ñ#ALñFÔÁ€_hï)ˆojYœï›â>™k¸LÌ6ZðuÿÌé ìÖàø•ngJY³Æ«ìz·&tåÍØ½ºþuÃ2Égm$²âØCÀï9âÙú‡¿ý@ï1kºÇÒ/LyŒ©±‹ î³(j.R=È]58 …vLYMû|Ÿ–üm *ê endstream endobj 45 0 obj << /Length 510 /Filter /FlateDecode >> stream xÚ}SMoÛ0 ½çWø(³jÙ²-]´‡†a0°Ãºƒš(‰QÅ lyÅþýHQÞòQìD‰Ô{$ŸÈÏýæáIešë¶j³~Ÿ‰JrUVYW¶\T:ëwÙÖm^Ô•d{ïœÏ+ÅÞ‡ñ@®o_¿ÐaëO'3îfº™)A–ÙîGçàɧ³³';"SHÌ˸ ƒ<M ó†ÏÛÖù"ÿÙ?geVÁuÓP…ó2Y„Ö53Ñb‡eÍ1s=€¸Å XÌoŒwq~•bÄ®Iûž+Éîˆ^J!­ÛA+mÙÄV>û«ÁáÒ9læ@.¿'ëÒÇG/~åM ê æÕ­+4[;Rð5¶pà KˆûF“#¤ä²%Ùq-Sac›Ç~óHd!6 endstream endobj 61 0 obj << /Length1 1992 /Length2 15425 /Length3 0 /Length 16647 /Filter /FlateDecode >> stream xÚöP\kÓ ãÁà0¸»»»'¸îîîîî ‚»»»kp‡à~9畜÷ûÿª{kªföj]ÝO÷³‡ŒHA™NÈØÖ(nkãDÇDÏÈ ‘þÊÄ`dd¡gdd†%#S1w²þGK¦tp4·µáþ‡…ˆÐÀéC&jàôa(gkv¶0±˜Ø¹™8¸ÌŒŒ\ÿ1´uàˆ¸˜äèÒ¶6@GX2[;wsS3§<ÿyPQ˜¸¸8hÿvYÌ lrNf@ëŒFVe[#s “ûÿ„ ä5sr²ãf`puu¥7°v¤·u0å§¢¸š;™”€Ž@ 1௒òÖÀ—FKP13wü—BÙÖÄÉÕÀøX™m?\œmŒ€ìe)YÀ; Í¿Œeÿe@ øwsLôLÿ ÷oï¿™Ûüíl`ddkmg`ãnnc 01·¾ˆËÒ;¹9Ñ lŒÿ24°r´ýð7p10·20ü0ø›º@\H`ðQá¿ës4r0·sr¤w4·ú«F†¿Â|´YÌÆXÄÖÚhãäû?Qs ÑGßÝþ}¸–6¶®6žÿA&æ6Æ&•aìlÇ jcnï ”ý·Í‡öÌè`cddä`çí@7#3†¿¨¸ÛÿV2ý%þ¨ÁÛÓÎÖ`òQÐÛÜøñëéhà898½=ÿ©ø_ËÄ067rMÍm`ÿDÿMþ…?ÎßÁÜ  Åø1~LÆ¿>ÿ}Òù˜0c[+÷?æ1ƒšª˜¢†Í¿Kþ¯RXØÖ àIÇÆ cfc01±³8>¼ÿ7Ž‚ù¿yüÃWÊÆÄÀõ/º}úe—Ïå¿„ ð¿±äm?& ü3èÚŒlŒF_LÿŸÇýo—ÿSþW”ÿ×Aÿ¿ŒÄ­¬þÖSþËàÿGo`mnåþo‹ÉuvúØ9Û]°ù¿¦êÀ­®°­•ñÿÕI9|ì‚©ÕÛhî(nî4V0w22û׸üK®ú×¢Y™ÛlÍÿºZtLŒŒÿG÷±]F–ׇãÇLþ­~,Ïÿ¦³1²5þk˘?NØÀÁÁÀöã?À“écnO1€ÞÆÖéÃðQœ7ÀÄÖö¯eg0ý%úb0ÿAœÑÿ"&ƒÄÄ`úƒ8 rÿEœŒ…?ˆÀ ô}ø)ÿA¬•ÿ"®(ÐGvÃ?ˆ À`ô_Äö¡3²µúhÚ$¬¬I¬­ÿøÿÕMãÀþÀÀZ&~Ð21wù£gûKmëìð‡ÓÀ„fÿ€}4ÿü(Åòðƒ¯Õ?àG1ÖàǶ2Øü~µýS؇íÇäêfvÔ'f÷±F¶ÿ¨”éƒÚ?ˆ3}PsüS؇Òñãnù£þˆàôGý‘ÜÉÌøN|°srµý‡ÃGmÎÿ€µ¹ü~ðuý™?¼ÿ‘Œù#¼ûßð¦ØÈÙÁáã.ÿûžùñÿà¿_@ ÐvyÁÖˆ'È¢&¨í¡Zוno‚o–lO=ŠÎsÙ¡Ýù ñS2UUVÀ¦ÃPòpòÚŽå­à á«çIsݧЖDÅÖg¯½x¥é½VØ¥©Ï“E'Bµýø0xt*‚û^¯ö^jþ–àÍ ÒdyöΜˆ h®}nµýe«c! {ŠûUì2p/e3tѪQÚþÅsdù†ÙóXÄPNtøÐÔ¨—nHs·w³¨¹“ï„Òñ4°Þ§Ñ,ß<5·˜cç=Ö+T˜»°I±5±ðÁoQǦÉ=…S¤1=K¾Gmò-æp„Ç­õ%Ì˨aû(`9•ÒñeúÉv¢‘våºe:X©MÊÈ)k¡=ƒÉJ$L+I†Kô²ñÌ}_I𕾂Ӵwtž«vR{%Äbq3ELXÜñ¡ýêÈöay„b(7˜–…L6Ù Y‘ÿòyf\9ß[LiØ1º®ÈS«ÿ=Ÿþû=¸E¨×w'kí î>87NL…‰gC…ºÃÄ‹³×oqfÃZõÕè·SÈz\a;SNÌo,‰ WA´R̘ˆgåÙœCÒi›ŒóèÖŽxª`êSŠOÆ_O‰ð¦ûg_³;ÎÊVÏQOYÏ€J‘’Ñp:³ôév¾zSãxYþ»œç9ܶGܪ8ÎE¢‰šZÖéº Cõ³kû¾ ¬©ÐõV7¬C óŸ÷œdy}È Õ3‚+\e ¸LQ »íͶý2&ò>wY¸TNS_è8þ´W"~ª &y‰žwá7&?¾BjÊø*H^Æ;ˆgòÞ‹IÔn'÷׸ÿßVªå8Ÿš‚¤ n´\ËÁp~ÁkècO—ævlTÃ;KÅ¿§R|n¢vÜ?D˜™òW1æš6Ø*ŠD^ÑŠ3ˆ'M1­aj}1Aú¤}˜ü‰ñ†ãŒÀ@iR…2ãEÓ…d”ÈÚuƒ¹•¤ÕfÔa›Ô+ò}ZõLöSR¢Î”gù×bý÷'Ö~z‰dW´†ŠÝU/…fácÓµ:×kCË.ñê88ùŠb žc’8+böÓrüS°ýXÏÇ[êÇó³Tìi84ZeÅ]Dæï­Ïä%6?°µõkt#ƒ¹­7÷°[aÛ0r…Xë´]^Ñž0¬”|ÓÖ eÇÑ¢ñW‹ hŠ’ËÿrJ‰0YC/ú²-[õ« Kû–z[ðÁƒ…¢ø;ùT2û÷ KæÔ5¨ˆN2HÊä› K?ý,ÑÍ7†š!°dKJÔᄘXË4d»*D'ý;Ý#áÞ§P¬_ó?µ%ý}Ž5ÐôîJGêÞ0 ŸÑŒÈº|(щV`¥]‘¼Ó¹ì\÷§¶¾É‡[€Ú®®ïõžµÛ-%ð¾ï7ŸöÀH5Ñã[^¯pCŽ!§ßTóôW„…t¹Òêöº¨¨KÅ¿PÍaíb¶Ò"©.Jáó|v×™®3àzc3>ñòøÓVéβÛ3ɦUè²›(ñº¬´lSâlᨿ!à7‡ ƒ kø èvÕfeËÏà ¶V›¡fëWi ‹‡vlÐÊ’ÍY«âeµ¢Õ ýÚ¨I« mlݶYdÈ·=×j¤ZZÝQ¯Ái&ª<جo‘Ñ59ØŠPÍ× OAµñP¦­¡„¦©›¶kDdøª8è]mfáßJ[×(ç²Ì·‡Í‹¹µ? ŠiÛu[éí_°´¦Â&ô´bÔFy‡‚xš£áë‰÷•ð~X¯÷TæfRUÞ•¢gŠÅh; ©3ÁwÏN'Ø&}›BqßY_¦‹¸Ôî\1õ?Šš”°ˆÙÛ/'Ýp²ê.LüBêœÍmÀ3xáâ€ß)jêšòü1\œ‰Z®IT§§Oç°bµK}Ñj‰•³‹·Ü²‘ï!+j:Ëmc( ö$ÛÒg‹“4èp`Á¦ÛÇ^&¯¤V+tðƒˆ±õ;Φ†ìt{²Mc ÙyÈiÁ7…`" “u )r‡×žXÝIX›'_¨äR祰’ æ×kØÕÝÝK=ßó8DÕç3¯Uç˜Á›Ü>dÐFäò[‚Ï/¥ý6ZÜW â@šå¡ ËhE6Ìð¬©À2‹Ñ±+Cªs¤*¤<âèZþz×£u—çÚm/RLzÖãDjÁYGUXó‡°I;:Ãþ_Ú0Ñ\ˆBå½[š¼.4e#PU²"»­É4%ø«œ`±è)xî‘ôn"3˹äª%ÉÞËÚR{8a„Ù#O#˜Ò¦¸ðÙ]ÛÜû«¢X8¥#€„O”™¿qPºéSNñÙ¢¿*Áë3¬>µ—x~âÒ¯äÜÂ@ŠüÕ·"Ž*J.0æ¥7ÿF?\‘—àbp¼¥¼—ÊáJ6fɾ# /,¬îdYä #Ö³‡Tï§&©„00N,ž~|ö¹:ÔkÍ}òÂÙgOŬܲӅUíÓlQ(ƪŒzËD6çUI’o Z è3ʼƋîR<Ý™ü2¥w¾7Ü|"ýu¼ºy9†AÑL.¨k`±^9ŽÏX–&8kàü¼þByœßgq¶Ø',ˈ!Oòp²œ† fŒLØú¨Žc þsŽróÅkõU¿XÒ ­=OgØ|ë$Ã>JL û±V ¼,òÂ9²mS7n£ üï5èÒ|ñð¤~¾6ä«%ΈÒ¸œ\ã½HrFÂiÛ‡$'g­ºYÅñ±g1ÕA"<¬þQmÂ8G4W±÷뇊ªåSö–rõÅh¸4EN„³Z^x27+rÜbØ…›Èç>Âf¿ø¶Äë 6‰™µ›uhw}g :)K­Ä¨û#48^–£W–ô‹à~Ú) 5™{F>:yhAß6ä}Äåã{ÌšáÀtž²©Ç ˜Bn˜.sefÝ@^ î2f0<õÑ¢ªzüdÊZœÏrøº.AÂ`'ØC†”Œ¿Ìó£Í)q4•4 Ëîðþý±ÇÛU.…ÄæÛd…_!#½aiꎑæNŒ odÑ>BÀÝ›‡û‚ÕÕû+q `õòV&mr'°k]ÕÚv&ýz™¹Ä,Õ›Ê/{çÀ#q‹›åçýÅíjø#!LžmÏe riÎî¡„,’ûˆÊ Ço^±Õ‹_o]öáê>"uÖØ×|Àzc²'ø}Fþ÷ï<›h±¤»Wº`yü´YôøâÏkIE ¹d I½˜-è´ä çŸUÉ'”+Ê‘ŽÓq£ÊÓ”Œ›vhï4õ &™|öYíèÒ}å¢Dš«ó2¢¸Ã3FÝ÷Ç”{¼_±ã°è³ §$šX$?‡ ‚—JÇÞö€+p<$$“ŒÄ*Ñ4©n—㫨lƒRæP6¼ˆÉ诒Õuÿ~Sޤ—é/Ë%÷â°u—xÅ^Ê|Ê!ÝR Ÿ–ÏïXz³²ža·gÖ– ñÝJjYï<-"4`¡êƒÍƒ•ç8”æ¨%„˜Ûfâ(Ý[©ó ãÁÚ|ÇBÑ·%s$@V 'ûŒéÞVöU=UNm¹Ú[¤tü‘p|4Û´ó°Ô„œvH{iáâz‹W›¡ïÔoµîkÆöÛÉóÞm ½· ¿¼—ëËDü»Ÿ­§òVD”³ËÙ)JÏs¢óm9:t¡ ÷» ×&T§./¬“åÝbÒj¾Z\ÖßxÀÂNâÀˆ¢§ã§Zfq[¼ 7—!Šþáè9•`Y»Ìç€%òó«ÀµU[`ò˜š¯º±ûú*›4R\íô¡åÚ ãÉôœrK«™òºLón4U¤ßâSNxr½U“á¶ã%nõ›'è ·”g>9@Ùîm~¾´ -¾RcôœŸ«ô~j€¼æ0nBÈ]¸ˆáºeƒH¸ÂƒÔœ 8z’É0é·9N…`©áD¦ê‹Uù6ÓoÒ…º^’¦¤Ü<)32Î}bÉZx¾¦ â½ÌÛ²z18¢ò˜NbäëüƒGí!„Wt¾‰^‚ƒŽ˜Düê¦ýjVŒi\±5̼N½œMá{*´ eµh CÝÍŠ¬a9ŠïQä¢ñ¯‹e¥<«™Ò½j*HÛo«?ÞM ­}¶2ôk4™£·§Â¼"!§»ƒ/UÔluê$zË2BÛÛnK/ž Òo–/¶°Yw×ÕD„…ýKežÝÆ™õJ+°)µ™Gv4w;4ég×`%î×áúq²£êœ8X¶ìR^8QDíi:ÈÖ‘´Xäào¶¡úœÐ&˺›TàyΞDx0’tDE:3®ƒ}*„Ÿ/R|Ñâóð{ù¦O-#¢jŸ`™’¸C2‰.p`Ù\ ‡@%suö,§DP=¨.…@H¬¤ÁqY¬þÖº62{¼0P}~‘¾ÃH#8Q;¯².¯2(pƒU´zîoÐ*]îæîÓ̉=älW_à…Ð"ÀvQýNªEåø*oÌ›MS5µu¤Z.7GÉ9…@n(Ö©x"‰º…ìDßcÂ~€sºß«Š>¶ÁR†ÍgP¨Ûâ냌%²£óz½[âGÈ<ƒIl *R²£¶#.Í9ýÚû:6ÌìyÓù]Ë…)0 cÆôëpx3H2jÁ¶gçC©•`Tñ‚!˜‘F‰ì¬®°íÃ/…?åḛ ç[‚ëűYÖr¾çèQræps뻹«i’âæÆ?CA¬G˜ŠÏ5¬e\J*jý@Ÿ*%¸"ª±õ[Ï„#¡dµ¾BDÂàY½ÞãW„X V?ä8ºí§a È1ù‘ãÅË›r÷ŠOml½óiô4½×S¥_v!ûµ6Q 2ݸµO§Ð? {PÅîÙH»‘?Ütµ`þÇ]a»ÉQK®ßg²ðRž ÓµqyÇGÊDËŸ[³Ù½çŠ× ¹Lñ;~¬xeƒi27¢ºåOíeâÅI ¿Ü=ÄpñClóSóT+Ÿ¡¹4„š”UÁ8ךZAòëBt|~!磉HÉoÚ¥meÌèGí““†ÏN_0´88¿ár/2ëÄü"ðø&áD}˜rÑ ˜².¥ŽUmhtãõܤõúð5å“)à~b«½wnuÔ]0Ha1ç *H(ç¶R§puåÅéO£´m¦¸aR?‘‰wI ¹‰§KÂjr)#Žb'"Ñ< 6%Ä5÷¯í.¿Û´Îs‰ü0Ђ f@ÜI†7Oð°ähêu{±®Æ·€4³Ï¾ñæH‚wŽ˜óΫ,j¿äAwÓY<Û“ŸÍ•§#¦{ÔYrÓxùBÜ óÊ/ XD…Ñt)Ýx¿œÊ–@ ùNeÎüblYÎ8k€îvkžÜ©ÅÏ8 Æ—·û)ÃËu®Ö‘8æÿ®¯A§(à)ò1ÙiJ$µUŸcïÚiý,šnàÖe¬ZưWhÀÎö:gÆ0ÝÆÖ„Ãh›S’ìà0/³~v; Ñ1ˆ0è6DÊ&èU7ÃG6¬$­~Œ#NØîFp4žŸkH£ã]įâäÕîû¸â\k*ļÔh¢ÏìFFÅskþ¡5ÃCi›³oö¬šæðhAÂæý6Úv,n-FÒË¢±XÝžOøª^ÓlòêÄdo…,{ŠGYG¹eÊþ¡'3&Ôd']=Aï&úg`åÓ“Y],Ñ®Y1nÁ¤#@fÅK±&nÇ TŠisãÇJ¬W%W !ÿÖˆÅ×±¼Q”*´Ÿ%r’à–ÛÆ%,>æð…õà&Î ÜæôŸìè¿ "Ì`ô¥àÊÜj‰ÑGГÀ¿}j\…FËSdHãä… )$ª' CÌýâÈôó Ìê“þ±¿)bÑ×Léuúù8¹ÑÈ4—íÓÒk‡1éyÒH® V¹[v³­¸… ¶¿!éf£ àå .„ù÷¨º;›ûâ655§øbæZé.ó÷ÿÐÖ^öÓ‹.µÔŒ<ò‰NJä8Òöé¯öšµT›Ú£å8l¨×5,mØ\0+(ÌF Ø&íKÖ75§þ`þR‚×6^¾k¿P“ýhòZÉ!L’$}Åó—»å7}/£ûú€¹2E0ßëjÿËÜ!¯ä:vƒÈ¯ýg{ñ,+ô6¡‹)~÷‘nkÐ~­4Ó¯.¥eSŽ›˜“ôÜÉxÏé |ó'ócB‘W»ì NâV&+c¬òÅk‘ ¶ÙÕM'+ ë‰Ps>7_ßÓÖŽüu!ªÖtâBO|ÿ57=õš$8˜Uñu•Ζ¨3Ü[Ç2^ÃO8k§37jHŸÊ!—’ˆÐw^HG"¥@X$1Qú„ z¦ ù‰* ©®·Æ»}9ò$èá¨ZÉÃŒ‰IÊ”aÎî-àŨ3´7£¾} ãuþ.„¥Bމ÷ý™‹ïÞksýŽ`Þrˆ±£ÄôÛü+G¿—\¢Ô€ÿ:ïy©Óq†—〭¬°ù-±F!8ªA57K\3®Ü—Èö$ìÁýŠç¡KÖR"²®¦R\æô6d­b‡{ÓƒWÏ×Q»èÜm1‘”]´©¿ÿujÖÔ‚¬X«ªÁº¿vâ—Xa‡of€7]9kÓ¾:O\Åà'eäÛ¨óžÝp eØzŒ_m=á²+|ƒ»Õ¬úïa÷¼ÚÑ̸ýµP¾¯¢=H_.2½Bæ¤)<Ây¾Ö2Å`&ïKÝ£º@ñ?L±0Ç`;e'>ö¯÷Û¿ÔF‚XÀ¥iX5/Åɧ$ÚZ(4”Š6¸rw-u…ôf \޵¨WÒ2…Ì[fúPÐ?%4{ÑöÊg&W±ËOÞ/ÊGd·×­pç\4H –Ú[,vUq&ø/$~I@6åÒøVCÎÆÏSf¹Ïhì³P6ðÙM.¾6ƒ’é;OÏë½"ÊsÒäÑ*¢œ‡;Éçs·H¾”|Á¤fŠgÿ“ÏÝ™hs1Ň»P"u'XžÕšÍ§´Ø^yÒÚ’#¹gÉ‹ìæ8NßšÁÃ8äè=Û[ì§IÀügoË:Ê&ªŠÕeåWX;›\ìuÌIÔÔ¦²´?~é`°{SûÉMåM#¯¦‘0eK·3vå*Hê®ÂZ¿… ƒ}ؽtª_X/ ×LíYµüuÝH­”0ÿ‚¯3ˆ¸Èê›ìŠÊ=ô¶Y½G4v øÑjÜšþâ‰5^ 9¶Ì˜dX,c%ÄàÙº@µ ßåå²á®ÿ[}-TˆÐÔݳ&£oS(„6Ï=ð”XŠ/׎Ís×ñG|@òÑA(X÷ÙV>‰´Ç:5n"­RPÕ•º¾~»µãAh ¾ƒ.ÉZ\p}Ÿ‚i½ÓYƒ}» Jže1®=üÆô±ÿþ7¿±z† ¯Îâ¯GqÅ>­ŠB–îö±^Ê;² êa°µ´W³†] †fô§žôTŠäwÁþ´°X¤ò¯Ð~kb9Œ?æ>?eÈá'ÿØ\ü¦C#z—ùß0 勜oã½*3Ö„Û=ŒÚqH…Â~“½Ö[ÿ‹—G%$Énî1±)Þißáï·»16ûiP\p5~·b£†[WYf ¾4ç—nllÛ–,ÁBþ‚¬êæ(kŠ`"}™G­U>賚 ¿F¼ÁµsŒ<”ÇÅbÚ²(TšŽoìR¥ÐmPÝ+lfæ7uq棨 ¶RîùƒüY»‡5gé'€…ùÆ©!€ánw¬Ûs>[G/»Nb6Ýp«%*¬CcµéV–M÷SÌRЊ ÷%2“…á_Íö…á¸fú™ÃU\±”;Ÿ/P1ªÇd ãê_šÒL㺗ÎÜ‚µô¾éw "hÕuÛ„‚nàÔÃÛÓ4}n½€ÅÇÌ]N’~ÝÚf;‡\óÇãIi+dt­˜ìÑ…YüJõr³+›=]…Âþ¥¸ñ!pÖÒÛIÓd(k‹ü[#XÄ”ÙÁÖà.ê¯òkÉ,ï>[ºz­@©œZ¼´Ÿuâ^lÇž•yA3àÛ‚¡6aÌÉpР w‹l›â9ú ²g cdg³:ž1u8Ì'>&ž½AIÛÎfõûߪ¿/޾ºC1™D’é=b{­¡ÌÔëpT£ñ±»ßL•Pv_@#ÜZúEO>P¡]K•MŠaG„Î8ÝÑ´oUh’Ät{aðäô<1rÕE»½Ã ŽÁ"çBßñŠ'—gûµ3€$óJè´`ax«x.lÅò‰+w4p¬àýC[Îá¹ÅÜÇ*ÆÂÐÄ…(ëS”$'Á·ÈŒ(–¿8ÛWÑ­Ü êøÔ_‚PXríÄä=nšÑáóªH𑔃{eãÚçB7(j£GéÁÛTmÁ´î’¨úOcB¹Æ¿´©fiFm‘§òoú‡•u2ñmÃöÍ ¹„Î’k‘ˆ#®ÖsòG½   Jé»8oî¿„¥£D|OÆÿÖN‚[RvX6Èõ1F­ÎÊ$$¿ožd›¸&y÷Ô¥´}2tê‡×Ý= íQ™—$$Š|ÁÄsBÕþy Ôæ¸['ýБéö…OgÏ=î×ÀG¾þµùs¢O…Pòöï”##uI§†/IO½óAý•E»ÉýªŸw}Ú "VëO·(¦ßB&äøÔ}ã¬HÇÒDÆiÁ¤ÓÇvªwOÆJÅ{¦ ¿UÂC­FÓMúÑZÇÛð/ÖÓ^Æ/¨KŠ9Kê¶w;—„+Kè¹ÚèëËß²'ëçÉÔ*µ?Ñò‘l±¢õÖvóÑB ’ÅZ”»v; •}.N"ïL,N}{$ ö½f³-ŸÎǬÄ,ÿqŠŽnÈ› \'­wZÞlw „@þ]Ìv˜'™öcañ §ú»‰/Ofl>ïÄpãðZ*mIÊK¡cÛjÎð—ÆCv5ÄX äBêyû*]è÷º5ƒÓR5fXÙ>²>Zb|µ Ï¿'¥ :¶,¼ :—Ö°#›aè¼Å.ˆ'¦+Ja5Ç®RêxÙ4ö¨ú´£”ýB–¥ž¥¥TlÝšH7“L®EqŸ¦¡èWÝtµäAaŸVÕ‘l¾ûk'5=ùß‘“Ù ™LéŽü Õðl~ÑŒC×{èóèüäº^o?A0ÇÌÔ£U!t$|Å<Ó´-e¼g"È¥Ž«ÇU¢n ¼9 ù¯‰K:è$Fü¾r7:âYI+­õæLJ$Þi#ïæK¾Ñq v}œõ}vH¦ &0c…øE𣀣ÜË-¥žÃU–R ßµ=vòÅJÁ@$íJ¶1ªGô»¤ÏojÝ–ž&¬™8&ÐlcÝ‚F^¬OǼ™¹P¿!‰öëû÷.ÇÞ9’zÔÖ‡7Æíg7¼åŽÝ!R¿ŸOpÅÚÅU.N\BÎåfû1Ïͺ8SJ€¥B´À.22nÌ ŠŒ•aï7¢JÔÂgÖd8+';Ìal>•½×›…‘ŸÖµ<óß•1YPQ«A1¤~aEüḭ̀“©R0áœ[w¢­W›o¼µè( ¡”îið@Ó2†Yo?kA-£xH7Ùã/ ŸûªZ(Œ¦Ž‡·tÖ¼ Hæ®kD© ±Q©A¢ç£D<ù¡H ŽvM†ßZÓ¿,$®/v/è¼±ÂPÑ‹dE,ob¦ù Å•UØ<îYv"@£{ãOòÜóx}í†Súäí Ò+àúdjnsP„£h²—ˆD´X@ˆÛCcŒIŒÌ”ÃÁ'e,BcÅA£ºAô°5|ï &áÿÈÝH›iJÑRTqJœ¨š[¸ù£‘Ûÿ›•g‰æ‚$³PÙëŒò,:’´™‹Î'éúí1Ä/÷ ÑêFƒú¶ ”\ £. 0Æ?Ò.œ“Wµ3Á€bÈcd6ÕŸšîu¯ä¯` zAb‡™Ðj¦d¶ g§ß É%Xcíe)‰¦bù;2‹áW&Â7™Z3 Þ$â÷Å -Û8A|“M Q‰«RÒÈwžÆBÕGÚ2»–BÞ¯¸g.çâ ô³gŒµ°U£àç7Æ-‘šeÁaj'Êáõ†Šâ—ą̈nexƒBPü3ã„éaý„ ÷© õ½Ù/$YŒö£›V­ƒUßHÅŒy•ùŒníYç[‡ß ú¾´zɪL‡Mî8,œün—W§‡Ú•]¬Æw*ÛÓ1á»pâõüýÚÐ+Ø[=ÜûËãëÐL¼rNDkOK6£Pžìc*jhƒ›B`y¨£…)öüë¯[ÎuönGš{õÊ}ð®nšUFX©ñ»žePC¿x2›sÃô„÷—FÏ‚¹'Y’\ó~ðÄž'íH@Ž|»óvMJ®¨&µÔÞZÒŒ„–kàßR)R®lm,iò^¶ß{|_Õ¡á’»è±j@‚R§vè _0ÍÏ0;l? ä´ˆ°ç\ ì'ªõt„æ[è ë;/`<+egv2î,¦Þ,,ÍŸA~ш×Èlû ‰ h\fµ{¦É¿%l+Ôó©GJ^aü¼øõÜy8*7A#VÓÏ"ÓS”ýKäÈTj­]Ëx&㤩ÑYÿo‹^•rR0? 3i\µ÷a¶å#AísÛ*£Úºï+¢ðzoÕŠ ³™ßÜoŸRžÊ;9xŠ…÷G ŸJÎ75 G]h)÷¬qGTÍ;cŽ>»êîƒâsص᫗ËIóaävÜ€”ÓE™: È õæÎLŸè:%]bÕmÔ ñ^vP°‚¸3T¶ÝôYúˆä'™m·ù°çí YÕ,:ÜèžÖ#ë–Z£h¾‹â x„mØ<7ã÷ûE+š_@ Ì2¡Q¡?ïn‹‚çËÅÙM/Áå~Žýi¯Ã¡=Z* EëAt1ð5’"¾˜Î>Å*NBºÅ‰Ÿ]õåJJÊ8^~BXJkèFV½®èð[v: šV<¾!Ú%«Ê„~ ÕBôÐê,=üE¿.gR…r¢Û§¯‰©áᙕd‚vˆz탼¦Ca@t–Ÿññ:Âê­ÙÃPÜBãÔPÝ¥"›!ì„Bú Î)н1Wu‰# ¡®îrmaŽK¯Ë§MGœìYÿŽYš¦B«T SCÐðùÅ>Ï­?‰éê%¾H\Y9a%[¶åÍøì§uvÓ÷iâÜcë êt{œA;“ú½lÞ2Ô®úË ä€S“[AW)ïâæL7VQuî©8œ~­ª¦úDº×öƒ©Ï†¡5‡_ÒCeâàòŒí—ªA²V]ðA |™a_êâýU»Ç6ìz±ö>³V„6î–ªAƒÁºªcxîÿÜïÅóÞŒûÁ=uG`õà‘o4ý¦p‚×V~aYCrÕc%wD[™4¡Ÿ;‘ë{8¢D¦i W ¾Nz•)ª  |âîä »5™ Ø«Jz©?K\2,û›>1ÝÔ´F[‰¤ Áõ"ïefßd¹(m‚”ƒ×1hགྷ¹ûhXWSlðܦ=0x‡Ñ·}¾¦Ú€˜ö&Í!ØdRÞ8 áÐÃ{5•ÌÚdÌ©¯çRªR#ÎsMé3 ð–æ¤Wûê %ØaÚQ´Ëv;èXC±Ê¢H®™A¯Åäò‰âÊ<'ø zÐgº’þË¥¨Sžã›e¡¾Hbæú•ÅD:Þ?"‹ÒNµæMòºz+öªÚèŠàú¼™ÓbÉwŸ%EþÇ@ØÆèªqúqÔ¢7)ߥÕýS@ ”úÙǪ¼¶&ùíö;ŸŸQ 0º¯ÊÿšÙ5 >múƒ{ü­¯rýÍÒ¿üÊKa$ÌÖFO¯ ñ“¹Sr œ^|BA ¸£#?ÇÚb‰2#èa=½ßx÷ϧÙí-mï•Ouh‰W1BHí «Ø£Ï~×UΟ;Í0ÍÓ: ¶ÚÅ)Ž8B‰[&U¢‰ƒ¸z ÓL(å *Ê֮ׯj½@÷‡pfYŒd7¬=4Ìñ[ż”cÈ ù6ª…O‚l›‚Ð-ˆœM£ÒN#HæãÏB)[dè$$ðŒ”Àú})sq_û¬˜°ý×r·NE–jœC’G1f/kùgÖŠ­m÷Ì݆àºn€Ævùyzò¿Ãl[³º¤Ë¸1Ô¤Z ΕDÁJÉèã(k…SGIcо—×Ur÷<çÏvKê!{·€æû†ô§‰YC¹.9 ý§ØÖ$§nÒTjÞtY¬zîiè¾Z`RP‹=nËyìMtûí;pˆkõâN |\UG ùœO&,Év/ÃPºÛ7uBßN¾;¨y‰À+&ýì_‡zBœ—GI ØÆþš*þº/¶hYE…“ß5±2l{ŽÅšŸ|f³°òuâNV©Ø·úGÞFûý¾CÑ{ dA¯È¥…Ú€ÕšÛá˲ü@‚Žsv2eîƒÅü­­.p]²•V=\6cÌÄ#S%õòªáÞ±­ù7I'”=ßîR{K½Æ Æa’ûNÄq•­ßIy â§RžžˆäxžY–À<_g•H¨kÙ=K¯Ò>•ïÆSöoî€$_ºnùÓqÉÒFÊW¹iá¦Kœ˜€y¦­VƹC¨ïŸ2éYÔ6ï••;ákDSÛŒ!¡¹]Õ«a;¨“÷$ésN½ï)„Ñ‹§Ëõò±FpûHœW•(e=ŋÉ5TâÇÆ_ÔŸŽÁx\ÖȤÝ=#ZÇS52ªõaÔ›¤çÆ¥`uò³¡² qØçù(LÁêÃjv”…y WsVÒhå_Þšv­œF*a‰ÀÍ#[ª'H/ÕVÐs§%Ê)¯æÒëÊ{¤_)œªywË]WM¦–§'Ð<+ã·ûI–üÈYö‘-ã³±eÃÚ\"œ§n\Ý4J·×7P¨_ž ¸õkSñÙK¥{º1yrßÂÀ×уմ×3qj»O{m¹«Ÿ9ê Izµ÷H3Íí;Í~sBE=Ùj ‘€±rø¿Amñ”^µ%¢ý†ÙGæ(Ê„ ±u1Ââ7M*2®#„úÒã¹7˜JqQô©É«c<&hYÄx¾qÍ#žÏÓjÚ{¦ÙFR(ŽÁ«:N½Ö:~ŒêŠúÆ«Ê)ÞjQ²Cþz®5Z!HD•¨ç©^Œç··¶ ×÷jõ:ë=K$ã(L³«kEñ] ÀѤù³={¾Q$† ± ®·–Aùºç‘Ÿ¢èNú;Äçm9¡7ëìð-™j2n÷ÏíKóÔå¥ucÜ^ò…à712þŽ2n ꙾ÀYà½0¢T/ZÒ¨Q²,k[7‘hkèO¦D¹ÎgŒÝbwXÀäRuÉ×÷J83úª×äxŸÄl‰i­ñšSÉEù”à»9€4|ºCþ›Tò曃wN1¾t—µoæ³”"Å €,ûANµÑ¶–Xjø{n¤ ì ³ Á –Ú‡Åä F ç¤j°aâÐJFøÕ‡ë’çÒöÛéÏ‘Óh_ƒu¶Dóö\¼)ñÁ$j»¶ÒR õÓÚDŠÐ”âÿ´·Ë»Õš06Ê…6²Á/$äGúöås[ǸC1JŒéeaßçùg…sdƱ$ä¡Ã…:–ôª wºÄ0´SÈGîc& Ù( ¤•Îy„ßÐÊ-90X‰+oÄym­Æ.ÍÝ |ùÞº‚ûMÂ8»õ¨­MÄÊß©ŸÁ¬ó׭þ̧ÏÑ!@]/^‘©˜Bß5ˆ¹T¦ÝWŒY¶JÔZó8_Ãôë ~™°ÓĘíuž’·ÚÚxŽÇæo/'Ùû†Œ¦rñl"ä«7 §Ñx™Â"a˜v ‚É6AÖw×{ëƒu‰‘(ÑŸà]®X?ñ].åèšð^²Êô l†òOwF3¬#Ã{ê||9J.R"ÆÚÄBiCB²Ròlþ¦Ô©¹ubÉ-žÍ\ÞXp 2`©/áU/"†è;³'L@8ê£hþjü³yèD}øYÃW5&B3øûm˜I8“…&‘QúØNѦ|¹,ð'wzWVm6êÐDàDj›[߬Î$¯Û÷O¸7ðè,E,ö±?wµ&s•ZD´.†Ë5Ç)"zÊ–îš>áXÆa€[_•¶¡Z6‰núkÒÈéÈ4,,®΄÷øo„«/ÝS£êÇÈ Ÿmõ‘« 9WEj ó¢‹·¢Bnxusßübp/ö//!è6-ìV+Å’ùÖèˆØµy’/ÁÆÖb¶—k»bFòFÄdsòP%ê˜j¡ýAù§6íq‹›¬ÂSJ×Z ÑøŸñvÊYù„Y[!Î÷çeÓ,KR;‡å}!)Ò¹éä ×”_Ú$}ž¸ó¢Ðh®Ïïe ת-õP¶öé7XÅ&rå8ÍÌÃ_gâ—Šp '½I(+¹]¼ür—¾ø%§€§’>*®oöYˆ`ö¤Ö7å6=\À>1x $ öäõÊÂ7áâím_‚í‡%°„ ììáÿ–ú­':žSÆý–y[kÓÄBû©ðSAä5‡9HËïÅZyâÉ«L#ýSµm+ï%¼‰ÍÉÔJüŠüAå×j€:5ž ï^ƒ%6Øi?&b7߆ÁCñ¨¤këxhµ78GcA~œ¼]nÖ|í*Ë™@Ÿw‰aW+©K ŸLŒSùB-Áó['Dê ɩՆ04^åôgå.Þtú\”³\O©sB°ÓÈkþ=õ‚—zÒnCî'm9 eö%Ú_©De¸WÆ+çüª¢5õ­ðòCÏHÃ{;|‘öB ø±º¨3¥f‡Å_aÛl•-^ÐJR—šƒŽzÚXhÖ`n±ä®X–h4|Ùdž±[Å #}äÒÍ~!…u ¤É ³»(=z•v'äf#_BDñˆzŽa4ß-UX-PE†òɱ~ºV´¡XXRg.t¦xéb\ÇÈãÝ¢Ü&fÓvpm:íÌ  º•RHõÔ˜©¶‹9˜\ë>° ê’Ì7å l»«¹–×–ÉÖ„!ê!•ɾmíÇo¤\R ©„]€…yÑûst–î}£¤RÄÅ÷él[O2yå§"èavÔ-ì½eŽ®‰[àäer#Ý[õ¶CÑýºÿÿ™Š• endstream endobj 63 0 obj << /Length1 1920 /Length2 12161 /Length3 0 /Length 13352 /Filter /FlateDecode >> stream xÚõPÚÒ ãÜ0¸»{pww 3¸»»„@Ðàn îÜ‚·$HHGÎ9÷æÜïÿ«Þ«©bfu¯îÝÝ{õ†ŽJC›MÒj ’ƒBÜØ¸Ø9…ÒªR\ÜNNvNNnT::°›è?vT:=‹+ þCÚt{¶ÉÝž‰ªP@ÉÝÀÅàâææäpsr ý‡uÈ=ÀÖUv€rE¥“†:y»€_Ûº=ŸóŸŸF+&—ë_áIG Ø ¨ÝlAŽÏ'ZÚP+0ÈÍûR0ŠÚº¹9 spxzz²]Ù¡.¯Å™Xž`7[€Èäâ²ün týÓ;*@Çìú·Cjãæ tž `+Äõ9Äb r<ŸÐVT¨; “Uþ&°þ€‹ë¿éþ‰þ ù+heutB¼Á×° .§ÂîæåÆ B¬®Ðçx ì´|&üU: '© >wøO®V.`'7WvW°Ãï9~§y³,ÄZê肸¹¢þ®Oì²zž»7Ç?—kzB|ÿƒlÀk›ßmX»;qèBÀÎî E™8Ï&Ô?¶× 7''§¿ä yYÙrü>@ÇÛ ô—“ë·ù¹_'¨Àæ¹ ?Øôü…êë ôÜ\ÜAþ¾ÿvü/BåâXƒ­Ü– ×`êŸìÏfÍßøùþ]À^cÎgùq8þûËôYaÖPˆƒ÷ú_WÌ¡©.#-«ÈòOËÿuJIA½¾l|<6n>.@€àÿ¿y4€àêàü«±„þ.÷yNÿ)Ùã 0þ³ L€ÿÍ¥}V.ÀøGè&œ|œVϸþ?Ëý¯ÿ*ÿåÿUèÿ·"9w‡¿üŒþü@G°ƒ÷?Œg庻=o*ôy ÿ—ªú{u¥ Öÿ×§è|ÞIÈk‡ÿŽì*öYk€Ý¬lÿ–ËßvÝߋ憀4 ®àßO €‹“óÿøž·ËÊþùùp}Öä_.Ðóòü+¨õï-ãæã]\€Þ¨œÏRâæãør=¯£5Èë/8Ø!P·çÀssþ¨ êïåpHÿ6ý2ÿE<Å?ˆÀ¡ò=Ç©þAÏqjÿE‚œ?ˆÀ¡õñ8tþ‹„ž³ÿ !‡ÕÑïipXÿ r8@ÿ‚ÏimþÀßü_ø,ögèñ‡Î÷ÛuwùWü3åõ¿às]¶ÿ…¼|ÏÈÛÉöùõûÃx¶ÿŸ[vø|®Ýñäz®ý_±Ï+Ïý“ý™ûüOá_îçêœþ¸Ÿíô¼Ð5Ïõ\Þ¿Šçz®ÅõOs¿Èã_Åò=Ó]Ÿ?Ï9Ýþ¸ŸËq³uýk>ÏõºyBÿð|3îÿïs„÷_ðÔgåîâòüÿõ>Ö¬ÔŸ¸¹…±§gu—­lÒG—yâóKžªƒ€›…bO¢PŸ=Ma¸…ävJÌÅ­ ö·3V^m„…Äï*H3CpEDcø—3ù”?ÏgÖÃαøÜãÈwæsÂ2õºV¥Ä/ÕâXÀJa”ç (ê-? .îåé?µfi™b4f eQ8úYAÃ"?&„(š8F¨ÁD@2Þï¢ßä‘pš<ب g¹ ,/"¤v«< ¬®Oœ&dU÷`Á‹À†1Ž2¬îS¿ëµùŠqÏQl¥ÿ.T&}è¤L6tô§Ö £ VYXÛ$^ÂÀÊlwæ=­Ó9^ Õ45ÅÚw¡ú8-€˜€Ñ¥yöZ’)ˉ(œXÙ8cô)’c#[óæNÏÞ|Ú•·z2Flµi½5óú«ÊiNµèß ZšòtÜo‹ÏÕOê¹’«¨î‚É€Yô¼E¡ˆqGk³ÝŸYÅÚXÆ*ô䈬öy>ñ|#´ÿ„fûÕñÉ¡à@‚’´ ÌÜk i¾Që˜ï>Ï/5Πȵž[,fØ=HÿRåÞµçs©QIü.\H¼[_4üóKu×DÀ—G«<Ü%U‹e_¢ñ¨l„ÌÅ5ŽkýQäŠÊoªÅ—÷ÓñR›Ò‘÷PxS:(}@pº(,Jħˆw$ö8$è¢â¬ 5f•ðºâµ8¸LBDiò¹løæa,Só‘Hï¸t$9f‚÷ï&s¸`\>¦–½ú$nTùm|Cb*aBp[ÃÖñ0 ‰Æ$£q5“YÅßF–üöN¨ÄCÌV¶ÇÜ€qÐ;)BíG:2£ié‘5ߢhÁ†ob;Uâ9ºtÒÙ—J7 •]ÍØ&Ëó¦ùøÄmi/j²îW˜[æÇÉ„ ÉÙÄÉFnR[TÚ~5 -½’¨r¸¾»®ŠÁm·Îà*šæþ xMÅŠ?„ڹ柩9ÉrŽ,Ä£ç èJÕŒwX<‘¯ilÚÆ€¡¡„ƒõvfÙÚ¯¼À˜UjH ”¾ÈTšãpé&‚Bå]íb3ò†HkFµ*©Á/VAúB Æ 5íã»õT437}Üàeï©îÀîâR”ïU¼-šÊ¾L+b0áú2ÖâíPRÐñªQ–ÓJ*)8Œ „õJãÊ“e¢_Õ "5·r<¦ ¥†Áئ%fI®Q„Õì­ÿSð)‘ʲ²:7ÖzMðö£Ú|ƒnR-[è©Ó%07îÒ]«²Õ;NÇÞP¼áKÂéú†ÐLÛ[¦»î_îQ{ÜYð¬¯wyZ|Ê­T\#Sè(! #VyL’Þ‡ïÇIèG«ýˆU%`nÃø †>û¦bóÝFnž£T­fü-{rÜ8A•·†±-uìfzíbÒI”…XµñV‹#Ã…·èäð„PõgYáLÖ’œgàðˆ!Áô2°Á¨Gcâ¥Ó0lÂÒRS‰K­Ä°F0lkR%… žìê”NEìÚ-¼±,ÉCæj~"¤‡fØL.q6o‘!-«!h#hMîG—§ªºNR­Œ«Rú˜&Y[ÃÏÞP_ä¿‚;u6ºš¯¸kôH’kÔ\7g~]bvÑI…®ÚÆ]~¦%_bÝú.ž»Iúz¤ün•Z!gªs+ÐRÉ=)…]¦;!À ô‘±é¬b(kæ²ÚŠKCq=ië–Ý!OsÖnDŽÎ.·L£•ë[»%÷HÍGý  UGåæ°ÖÁ!Vê5ž€ÂZ‘_7i½ÕbcP¶-º ˜ý/4r%©&òW}Ø'~IΣ>Û|-9¡¹:‹è¾IŒôéç´›áIÂcW¶Ý¤·O׉ªOv=Èe¹èËd_é’äàˆôžV£ä·‡=šC$,´…¿œ+œ´Ç›F°~n eUÂÄå­‹ÞC†ß5U_ mÀ%œ àÏ}éÚZ <¦ýÙMC B™Ã]°§@£¸°Ù° ËOKŒËC«Á-i@×ð$“m*½ž¢Uk[-x({Š¢¶3@l7p…Pu!]>–­møš³ rO}Hõ•Ù†˜%‹ VW2:yjU‚·gÇK 킟†¬û Hõ=F,j‡fï×ÚHêˆ{1Q¬eA Gʦ|wý @AãÖ¤ÜÄÂrkgöÆE¬‹iB"‰£„ôV(A4 Š'¥‹}|²"PÞÇW¾C,Õ´£¥Ȩ/RëQáíÐSxáp½Þ/=©rN·OK‹øÇ0âꈈ¯íXW0>«ÉÜ•·i{¼š-5yÌzÓÁõE`Ó¹Žnd™Àƒî¢Ì™2&œ­¢ ï]¹ÛŠ$fðÖÖ|Ãóöväsߣ¼ªÌw¨úùɸ/x¸Ò%ß6«cÓ~¥„Ó‘¿ÖuR<®+jÑú-MâÛµ©Û÷B$ymÚ—@?ôÛ-(úR“½;ÙgöCí;ï`¹ãô° §þî—ø­)þŠÌ DRÒSâÞ™êæ#°ˆ¼ïpï…·S?ZÊä陆q5ÍêßY²†RG*Cå8­-“€¤m_IžÆs7lxåÍÆ«ìß0úôO¯¡¢d4>n˜²”š—-ISǬ‚$>æÞێܺ²àNÆü4otÍz?¨]G”sHÁ t+óÃ~¼˜wyl¥k¸”ã!¹]œ[¼K_ ê¿ü¹l˜'WÆ~ØÖ"Þ$×ÅÝZ|óBäÜ*IfÞõ-š*g>“ae­–5ûƒbQðÓc‰`‰;3õsÆ›]ZšS þ»ßÇ3”ûʃíš&9kݯúhÝAßPé¼_7ÌcŸ†ÛñãJ£Í¬Q¿ycfï ]wæÕ¶FGþHÉ4MiÒ_ËVç€ÁWÅÎð®ÁŸ?ønäÜyZ¾J V,¦-É•ÓÉbö ­ødú«â 銜 ëÆk”•¦3o긬7“¼ªþ+%8¨æºƒé5 ø±õ’Ž NIw0ÏØæƒŽÀ<;i¸U$al0Š.Bë­­À™ jïÔ1ù ŸC!áñú-»GGë,« ñ7y(–A^—í;æ·í%c*ý-¹hÞ•)¡®¦ø°f´^qøÚœhJ_øWZö  /Ý,ï¸ÔQÕÂó¶?äÎ$]·ÇÙhB›OƒºUçXÌXÓ1¿ñ›s|Ö÷µ]ž9ሞÉ<·;¨×öŸ} ÎÎZƵ‘¯oH|ÿÕ%{1ú©àØC“Ñ‹†Þ s ÝkkŒ€öÀ$ËCeýùÊÝ<ŸˆKØ›‚ØQµœˆ‚VEÀ4èøÅœƒxÓýAõ–ÕNaD" ‡ƒTÞL>¼Oø-Û~Z—b¶>ž¾U»Kâ4ÞQx4QœD`Ÿ«u¬ ­HI•¹ŽV¾ª`¯Ì×À–i•\WCßh™^´¡2¾Àr;‘fZH1¶õh.ÃÄ„²,zƒSÊ:pîåÍš¹4,×¢5&æýè=PVs—º»DÔøx¤ÊQ H€n¹-ã Èžƒ[±É>š¡ºÔÞRt\*÷ÆoHÄp;­¦Û¡GÎw¹‚•à&{¿XU<ÔᄼÐÈÙùÕ Âhb|éØßX1ùIVý.uI댹‡Ê}´Œïíû^™×“Ç<‹Û!§Ã¸‡ñ:}M¶j'<)›¾A™ŠÓ툩ª8 Ûæüzaþ»@*R‚à $SÕsÏ@4Ío£ûG~Ëù†'17Mû¨°ßØtÿFþ¯Â݇ây{—‹Å0Ù„bÇ«ù‹LêèZKÖ>ãL¯Šà­alÃðWÍé_\ÈUˆš{~RòŒ [K H'°˜ï§wiÑÈïJê ¸™ÆÈlXct5P½Xä ÚfvßDüìse¹Kô!$ýÙI¥‹áÌiIŻÜ&ºï3$¯Q`.‡Iu èm'¢ø“–Õ»¾ÿü2¯?ÉýÑl•øG,¦|íé=¬–7;YùðàmÓi®ýD½"þ‹ýµÅ ©¿üêÃð‰TêËûakƒoIø× ­²þ0³OÃÃ÷Aú¸í懹šåxüH`hYXð9Ñú$RžùŒ{#øÇõm5: M$3ÏIâõÐØ~ß,zÙê8á{1VôÙE&¹TÙÇfE¿âTÔÜ€…Õ¬Zår°½W1 ñ›O¯cc mŽççJ}€ã©=ªV![q`óŽK»ÂÇ×´ÕèÕ{£Ò½ª vÓÇ^S¢Qª&[¦q@¿_–±A…ÃZÏçàQãÍHŸAÌO¤Ò³PÇÒö4ÖCë™H“ïÝüÐøôÓÚùåžÃVRÙ>AùcìYáÉufdQ§àF+»Š ËXºb:É2Åÿ튑Ë—Ž‹Å¤b霩jfì@Ð4ñ&¼¸KØ…@‰T8àϱÿÙ€yÄóÎa‡ƒZ*ºÆñm“¶‡Û~êå'3=IÇŠCà]Í™im+›©Zø0þâYS†¾Óë~SG•<ú‡ª†S˜â™ c‹B³\]†éh§Hùà€Û;Û@®ã±­¹sz-?Ljx‘Þ§}¿Ê‹RwÊgü0d£jZIµàÒY‚¤º«•'#=8ÓµØâ|JZƒ<º4ÕX›ŽLâ7ÕÌõZ áäî6mÁ„ŠÄ¶1a†§g‰þ:琢¸š˜”—4Ø1FÄUñOfÒ]¼:ˆ/¶?ÞÞõ†ùÒu7'‰Àvª[@0¦ÀFmì à+ °à9áwÚ<žTÛý²†êLgÐ/›~éFQ2~ü°n|ôj¨›žFN¼óÂL(«I4%6ÌsÄ’ÏVêÐÜ)•oåw&¾+UŽœÄí´õÒ˜šˆð;±Ýp°6½nu äjúÈˉ„W-‚uUm±´}_ˆ;“¬b¶ŠÎÀ‰@S^Ö½>€SÚAÖü®èjìpuå­Eés?µá5°¢Q¥nD¸£&kHä~÷Iò)î‹Û;Sò…  Ca^ÏwßU#Òv™s%¼ñ„Ô2Ã"áºå²hù¦Øùä!ë¿2:×™~<õžƒ·W Z0ƒ„ÅäKwï®Ïˆb‹_§ Hz< ϲoÚo44R#Y²ÔêŸÎ‹¥V‡ÑºŽÛ97]xî¼9Û¯}Ó¿!}M·4Zú’šT/¬P¦)䩸Wì°.ÌðŽXkëç>7Üd‹ËD´Ô9oåÎŽgÊ6½‹4 ŽÈéb—¤æV]¨Ä®?-$‰'O! +;×O¡ÔüŽ‘ÄB)!/ÑBj‡·ó#GöJñFWÿZ…ìuh!;vgé*Á¤uètýN¸þÅÊÁ0\!]LŒŸÖï½ØJÎV÷½ÙR©<°‚*=?ã//^üz{Àʱ„d™¥q‡Ì’¨Sé°PÏÐd'¯RG=ý™¥®iUcãmc2ê¾VJ}Ždø* ¡ ».J†–0V”yܵ~³<'65Ù›$æ&ô䀈ÙÀ.æ;à£^DÖ±ãªÍè üf…â*¿˜’×È ¸çþÓ%õ…ßéé‡úAð»§½mȪ›èÞRGIB­¢ƒ×czwzÇëã©ìœ»Š ¢«íŸ¦»C޻ǟoÓ`ðÓ²–’‹ÞsW‘Áû+Ű³Aܹ΋JnáR$Úp5Šã”‡>åñ{3sÔu$ØßÓ ¦ÍÉôŽ3x‘êi9† k”ì8¤7yÔÿâÅ~û®î­&~Š×æþ]®šw¾·ÅuaöÔ9È£ó´v£Vä¡û_~éd±„‹ÖŸ©øj~= ,:/DçÇf!8/¿–\À˜JŸÞ2z9F¦º½ZŸ”âüÄßÓÆY­ 8ÅZdÁ2ôRÄÚ`Y º¤SŠz#î9IVðuFÐuý~ÂÖ{\—±‚ĉ'4¾ƒ÷PR)P1—½UyãüГqEñõçQ&Ùf¬í&K; åL^Μ©ÏîÑRsìG!)VSD¥A¾#MMÂ儞æ¯XÄO—ôYø0|iµe3ƈBódƒS26²WzxÇ=ш.ñ™_T×ÝðDpßïüiù7=‚G·3µƒôN®³§Å¼;¤|Ô¦U˜;޲Åôi˜+í[ñuð±Ñ&©Ðä±-¿êg)É—7DUj.4Ï{­\¡ºí<•w]µâ‰<8ÍgYm,$hÔ}îím“È|‚³/ÒKFü-:NzVÞX Ô²1dA,ç8/†"˜¥÷-Ær×&Ÿ0ѯìŽÁá»îGR"«€„³n&¾ £èèhÿxâÀ—þŸسvú-+¦nú²L˜¿a¬ÐVt£§ë¹eаîíkýVDc›a[„бý£Åúʇ†®<·ëN¬®iî§‹N ²CΊdñR!zEº{£nÕE½¿wˇú(f‹n÷½']”—ÌÕï¬}AÏŒ×k»/ Ž+càœÓ` ÞKø‰IOðæ°ås`üaÔS0#…ê›ÍEÔe£?®þGâÙ#)‹»â¡0q½•븡©|SŸ]Vß³§¶£4â}}­óñöÝdû¥ä>M-Ë„ƒØU¹o£Ws®‚ú1‚'Ž‹æ§{xV'ìžC[ž7ßJ$1v+¡øx×KGíO‚'š©¡™Vñ»Éê—þ[Œ«?h‹Ôúp@2N¶Œi&e¯´©|ío äfW6æ*Kâa¼º%¿Óò_Ä8ä8^òâ¨;ÏIúÞ"P/ h¯ Š ÂHÛ“ZûŠ„ÂlÛ#>hf¯î±ã઄‹A²ì|Œ‰1^±,iŸd<Ê:)Ô-œ­>åóvof¯ë¤Eƒ|‰•±†ºÏ7‚Z;w10{ȨýÂ>™—µµå/‹ÜžE^íDa(&;ÀV(¶^û^êZ\B`î´¦,Ïvê!zýþŒG·o(?ׯ°êÆOe°Ôù¿iÎÐ#=ÚŽœ®ü üj+oÖs‡×Î(ÖhŒ`ëkòfqp¨ù†Hqò¼ ¢°Fˆkäe©w‰Ïžáq¼ÄOÓ+têã'_·K@ Ó l$( ØŽE­WL¬Ï×xNé!M\m-,Üz"éº#œoÒD)xÙ]=5(eý9ú:%3ñr)¢x}¼žóÜAÊ(ÐGA[èíIòæãæ#×ÀË2W"EªÇ£þ\‚:Ê.¶ ~tûc~tïß#s:RGzÕ”ÀŽ6«ÝŽ1—÷fÞæòÁt×V¨±Á¯/ˆti{.¸ç¡9(L¬éûu{ŒwÑñ·þº>²pfz6ä¼Û­œèÒè\´©,®?‚ïK͇˜úŽã-Ýy/Ž:KÎUŽºLªÖ軕+…"R±-#‚L‰ø“’Bíšé£s<­–âßR€ßã»XÅ‘™ob*/!~íbßF&*2Ó“GZãáäÊ<$bí9“™”ëFÆLuÈà¬âŒà]Ô/Æ]ó¿TfQÚ).à+7nÇ’ï½Q7åߟ¨Q“R¶ÕpÔeµ¸eƒ4H)‰Ù´šÈíFË-ÿx©ªm„âÈí&^“¨­-ŽT>Ë–Àå‹€¿‰Ôä6z޾sàÍé#ýS· Ñâ[¢º×䉄¡°h VÑô¢>A…SÁÀ2®î¢©™%Nÿ]ÛwÓòô¯¯Mi'="Ke5ËNdCü×ÀO<‰M¸-ŽÞŒ ™ê“\?Á oÂ6•—®‡YaYB–9mz¹©8°QáØ{‹°£ô½-å.|¹^9ž|n7EØÆ„ñúhç9ú0ÈåoÌîs£pÀ$@³ Uµ¢)NŸ‘—¯óÚPn¾ì}ÿ`"²5’كĜù¡qÜWòÝ ÏB¡lñòS^ål°aéuöŒàçYpÑOºÅ-6&â$×Ûs’Ÿ.¦*%ÜeóK|î‡8QŒì³¶õ1ž$æ5]ïÈù¸²‘ ¬°¦L lˆžd Sš•A•HsŒÄäØ*`ý„EçÀS .ìÅÔq˜v[›hä„ Å™7h33&J0ý[F…"DåîË%Y²u—mÏŒÖtæÏÄ Ê7ñ„‰DXê7w{¾!_Ì×͸Zûð“¡MgÖH<‹Ãi.ûâO»…ŒD^n!zï#2ÍOƒx.¦lM~6»º ^g|ÃpÞ'úFäL–kŠY4ŒzC–TLð¸XXæÚëÊMÔNçÍçm[ÕÕC›ÿ$ù¾tÙ[í•ÞëñðϯÊÚ{RLûQl1û¨J•¾¨‹IÔû´;mí;êÜð?<™g[°7Öºž»ÕóEÔêÔ­U$BŒ[ÍMaí(Fù¢Þ‡þx—±³ã¹8ì××ÞfVÆ¢ÓÄM« µV¸ó€g½ézÒyÇûu—$¿ØÊ:Œf:Fµ«Û¨‡3ŽÎñ3ëlO›.¸L„Çèã¢ÁÕÖ¥«FXž®Ù¸vȱÿõ*Áj»p•Æ‘…¨Ho+Ëò‡A)©--ÓI¼Ñ/’‡Æë‹Ç’Rú(Ƈ·ìâ ÒRæO†éçïÝm`eàk ôòï ï~¸=´ž¿ÙÔ*bºV`‚ûØ'´„äÂJ6íO$Ò¿Ôþ®ã܆,|aÙîT µ´jÿi“Q|Á-‹ ÉÕ»!4˜Ïâ…£ŽÇxÞAÐ*>6õ}÷¤ṴbÆœèiVÏç“{¡ŸÝ;5ÔiL‰‚»ñ´užùÚ-HJ|Õ x ˆԾÙzÞç6Œ[tAšu?3ð$ºÞŽÓëšš¾xÆ öäž“”£wð#xUI=†ªëÙ-GÅu×9@3Ù/;¢ØØ”yëAw²‚¿aÚûé®ÿcÄ·)ì-)Vq9‡yiצ’Ù ¨è=¥,ñKú´3Øùn š™!Õ»‚ ¤!'/ÛpŸ¼(“9¬á©—ÙêúY—¶/tûøßU~äÈ1Þ_@hG^ ©r^¤ŸÛAx7QÔÚ_´»»rgÄóãâG¸!Ê„“:…Dá }°ÝH‹–pÞiŠ£EfóñÚ\//Øœš7ô3¤²VX-¸sପG]çhéýœ½K¦a‘t‘K‡*|©B®pàð*„›ÉÍ` 0p&¯tÀÁ€G‚ǰ_Q„ –Õ¢nQ ÒU0{cN›q•'-ïdδrGî°ß>“üqíÞhÏ…yäSö%öK1vï{wë+­ÄgÉp 1Ù%¼<Ãß³Mî;¥»Lg '7w(ô?K´`J^Œ¬ç~*Ùb­ k»/L“ÙØ¾¡ o3ì8ySõM'Ž?†hæoòÃÁd(˜øÝò-FBÂø¹>Ì6¯·ç°ƒµ¯àÆU|åÞÁû$ ®HûçÂ8+š¨P¼Lw Cx˜Ý–rß+úûP@=6¨Y¤D{ Û2æ±½:šö.l_À ;˜ÕeÊ'Rðµ0ùË÷Œ)6\yjyÉE&f szrÉn‚†T¿Ç¨yëà*˪äջʼ9çlÛù¨L†UQÝ[–%Y'§=.Ûó…ÁÂw±rs©õ/JÙà/úkÍcCO+œ4ïGÂ}vÔÙÄ–hR,·7ÀHfJùÒYµ9= ïSTUéçÝ,‚±«íë‰ÝëD9†l||_ñÿÊ¿‰Ã‡A\~ôtÛÂ|IZ>y,Ñeeç(×}\˜T„!ßõçôß*p½üE¸ÞÇt¹™bÐ=Ñ‚EP¡í¨$õÉÆ¨„ÓÉŽ»¼~GžÜ"ëÉ3l ´?Qï$ï²nnÀ|²áz@½µM£áÌIWv¨ÿ@ªKƒ6YM¼2u[É‘`Ãz·“cŽ8ÿï~­Cd9>pjBûhGÄ‹#› “{¨†|^£„<6,ã{A;úÖÁ¯ÍõJÿ°›}Trc\,cÌICH5ýNuéÑWI~Ú¾¸ôl¯ŽÐoáCź'¹+w¾†KT+WÇxÙÞ4§ÎŽ\“áüUFÏ^­Œ‘¦@èÓ–×Ü‹± 8{Ù¥IU†`]Á¸ rˆxùŠAÇw|íªAŒ°É&=` MªDèkz–¨,[¯»ÏBÝžµ´îRÁ¯Æî_r·¨\Á´2qo8ÞÙó¡júǺ>À;¾*t¼›Wl'7߉úy:J µ•›X¶ª4…⣘¡l—Ûû€ööXé­€öx”‹#x:÷wÒOsÞéíÙÂíºJä—ž.°Š·QÀ¬JVFUÍì\h>ŠÄf±…Tš)VâbÍYlùi¼Œ Œƒ$®ªlÆDŸ/ëÐKíœy´:+§¦Æù9ãcû·Ô©.ÇÁP³aÿ%u®,ØÇâ°Dki,VůûÐ`8A‰®UÚØ 8¹âšæNæw¹Ì«k¥oB7.'šr¦ˆÈ앟eÃp—hØÂòë©ØäBÝ^†µR_ÛDV¿îBÌýB•Züãá#%ZlŠ•J£²»Ç¡3úCĈDº˜»—|~˜›-‘É3`¿fcmŸÓN3 sÒ%ìmx†Q¹.‚ˆdÍ¢z87­ÁYG àé•b­±»É,æ°»St´tߢë<à4=nîÃÏ|ïÀ-{]XZ$s9¨K©.Q¤ „PzÅ|lÞLµ-\1Fn |ÒÔ¾|(, ˜±S®q”z̤íA£ÐÝG¥fDZ}©ŸœÔO4/'Çì‡bÐnö½‘Et¨è“iNqm’ðÁð†•OáAÄaž;<µEe?Å—ÊÌþr¹fsMÒ„«…8ë=ÌKŽ„¿Y·)÷5è8¿Öê®àW@Æ“:%ɵ.ã1±hc¢‡oœ©›·J^®.J¥hõ(õ”z|Ò!3È6fò½ˆñ˜0Cxµ®ÓûèÛ 7±ÃÀ¸lªËx½·EÆŽgʲ—€'œé};ô3»f%~^`$Žô)Ú‘Ñ.³™ú­ªø’Òc {tÙˆéÃ-MÌ…<vB¹Loí|ã˜5”û¢¢|$…έeþúýO|°A›Öňÿø±ÂíôNdíKhl`²sûpEncHiœÚM Š+Ö“¦¥üç•ýp@†þÓŠòÖ€šv¿ˆ‰“û|„„íl(ƒ³8¢×¹Ò\Ȱ•|‡Êt_]ª_ŒÛæÇÁ›4hsšK-ŽÙ/ÊÉ'¸Ë/ã(òÐTåE“rw¸b®ØF'ᬗŒË¹°Ì€ ´žâ&ìKa˜e'{äÐã'á×ö'ôypXºÔ×àã#e$TOxrÌúçº7K–R ¤sw¿Ÿ6ƵNLæó{‡_†'¯ք÷+uø§ÇOz5„jâx¡N„Z|T˜ãÈKkB’†tºN/¢ DsºCÝ?«¨Þ¤îwâ(QŶúf™¸’EÐIk¥²êèÐÙ»*]¹'2-«Ù™Ï<07,6à}i·0¾oÆ^¸òÅ¿eÆ»mÅÒÌSqÈÒ¶x¼´) UI½£TEfòwd¨HÅ-íL³mÆÃu6Ö[ëòiÎ)kœýŒWÇ~døºVÐÍzv®ækµýÈÅ£>{Æ!×$È}þ5ïåý'&‰-H“ÂwmO…™IÉÔ«iïÝD0í< óS* Šh,61.ŠÑP˜w<‰@ç°–j+Ü›bÕÂf»_„“ ªñcÖŸP¨¬!}evôª©Òç¼ð%«“f£‚gMx˜î»—ßÎèÏÂ'&¯HŠè¿YGÄâë1 ô‚«Î,»Dâ[Õsôá-–!½šRÚS ®:* dqe½/ÄÔ•L*‚²Å2 dUoU4k¨xŠ™Í§¾’Ü€1í…âž_i ?¨¥*i‡ :´Ò+L¸¢óUÝÙž—x‘;~*ÞÁÛàMd:ïhmää-ÁCmðx¬Û6&¨Q’Í+®­¿ÝÛK&;Á¶-G× pñW؉¼Z yëæÊGl(Q{Zæo³¹ûð2MÔu–!´4dð}ž©Ƀ^!cK`¶Ù»q‡`Å(Œk(ae7SãýË'‹ÈU¥ú–:~ÁúÜ·¾{cŸ&K9$ÖîÄæ,*‹5^iy~ù;3žðy?©Ñ;Úc÷å]:Üȇ¢ž*¿‹ŸõÈè^pdoÁÉ;ï%@éUÍšoS ðΨ)à÷?E›Ú 2¦Ü“PòçUGøs7¯ôlùœ¦Vš}\!1šxAšm@-;¸|ßÇ€K{2µ§;Ç NÕ žÆt'd €LÖVRkqŠOS ”áœùÝ_™RÜ×ûà—ÀWoðo9FOX,šÐ=æ§(+®úé¬ÓñžEe[”OªES§ÈµÑÃ!mkÝ™ g+‚+w5h‹èº³T î§ù¡,Îm’YlÖþûl…v`#r_×Þ×3÷–p3ÔŸw,u.2P˜ãúüVÓB2O­ÕÉ>\˜û D<’šº©i–Íkiî^aëèeéG4Z ÍŸßUŒ$^Ò¡$P³2*£©Ëœ&~;8º£“X8L½´»äÇ%ÿD{ÔÖ@ ý@æüCz±LʱÁØá‹7«ãÝq…ƒêJwqØ,¡+ÒŠÕ(à¤GBÍDâ[Näl>?¹²„ú :ݿԾ:µý!C«+Nªþ½ uò'Ïð-%ã‡îî¨XšÊÔ¡2•´Î€ÛJwðiúËv¯cI¶í]-ôDSµ É´ßZW7`+íU)0™¬Zå~0ñ^êc3×¾ßoÙÖø'„»dZL¿–SHÌnu¹kþãÙ¦e*Â[åô1äå—ß·CG‚6?MoN¦œ©àÆ†Ž…€˜7bÄïè6µ¯ÿPËî endstream endobj 65 0 obj << /Length1 1525 /Length2 7831 /Length3 0 /Length 8836 /Filter /FlateDecode >> stream xÚWeT”m·¦K.înîî–f`†îFiIéN‘nV I¥;¥$ú¾ßß9?Κµfžkïk×}_ûYké´õ8elaÖ EÔ“—‹G §!k¬¯ÂËàááçâááÃadÔ»A@{p ApûGºÝÛän÷T  êðòx…Äx…Åxx|<<¢ÿ!Âàby Ø ÁP…AAF9˜‹7lïàv_é?V¯¨¨0Çïp€Œ3¶B@7ó}E  ³ƒÜ¼ÿ•‚EÂÁÍÍEŒ›ÛÓÓ“ èŒà‚Áí¥X9ž`7€.‚{€l¿ÆhA Ç…ÃÐw#þpéÁìÜA/Ÿ°@XPàÿïLÚ@ðŸü#VjˆþÑðýIý§i?•Àò碰þKv¯`€åoÁ›óòØÜñþ¿eÿ;äÿRû¯,ÿÁÿwOŠîÈoË(ÿ‹tC¼ÿäÜkØÝí~4`÷[ýoªè5–…AlÿÛ§â¼ß ¨ý½²9y¸xþ°ƒŠ`/­6ØÍÆáåüa7øµw0¤ C€½kî£xxþËw¿l6N÷ïĽ<»@÷»ôïº P˜í¯¥ãáp 7Îýmß#A€/ïývÚ‚¼~ ÀÍ…¹Ý‡î'ôØÁà8¿®VTÀ üeúxïåÆ úäpÛÿ ¸Áÿ€"nÈßð^}ÜÐ@>·Ë? €þ(àvûòÝ×õþ ÿ5;~¿ò¿…x?úðï÷ ä²Á™›†Ùˆ‡9Ö…µ]ÔÈPyrn|äÀë?yq†e´®@é±¥"'ñó”??zV¦ëófôÏe¢=¾’»F'c2'Ë%¿×ÑbdsõmèvÖk~cD’—{uw¾MµÎNS+~¨­=Ù·&ÝAÏ3éIVr×ã©Ì% ¦¦ªóJ‡o˜Ì û\¸(c£1)DDøqQÂÚe2Û«dke&?w¨0 N¤?$R+îü|ý~„Opµ¾Œ¼òšjwÏEí,sW*m»G葚Õ`’q½Gâ*ž%ä¬-,˜Å1ª\©¶>{5àMv2ûZuTé]žÿ³7Q-kb^Í-q¸JŒHbu^—,·ÕÕ"ïºö1â]UýØÎebãõXX Ö}üº2UŠ¡ðm°uï­A.+IšPš¤ëî2gÌì¹ÞÐÍpíšB|Ïöù‡²Õ9§Â÷~Ee§ì¥ ¡ÕíÆ>!Q«{#) ßùß^û¾i÷%¶¡b膄¡¥TŽå¸hs­36<¶Øl!ŒÿÂ^ÏŽ&M–l9ÊÞ°-.o¯6CK扉º2¼¼¬mé§ÜžbçƒL£Ê…ìÙ^´sÕe|ŽA¢Ùñ о‡ÉµýÓ:ŸX[¢0",ÁÞt÷¬”ï¾IÏ`g¾=ÝCI !4åö¯€qfrÞ "‘St:¯fÊ™Ôë–÷ Cíb|’Ñë#;î-ü°ší€g«ÛDõ´×ÄV\íuÒéBzH¼o¬ÊHQp@fXR{¶²ÿÀS†;>?™Lµ'kwPj›jÈÓž‹½Yߢ$%¶k¦Åž’© S(žz•õ dÑÙ‘ì«Zò>rÌ 2¾XÏ a={l-R×ä½”1W2C¢ZÌu ÊY0}øFÏ9| Ÿê@„T[ÍŽvÔ’ö!ûf–æ$ákÑDËJÝú;Å+Ñ/ø•„½½ sšè%Ç#‡0o×uâoczžîµî¤SîÖš¹Råu.õ‹—Ä7u¦¼Õo,v÷œš™¾3Æé´bP$ö^ŸLòææÆ}T˜uYi:‡ÚÚ)=¹¡sHë—œeÓòŽ“¿…GP IÕc“sÎåÖÅ–Ÿ¿>ÃL^GÌ"V_Hœ.š‰[E¨ˆ´kzVÝ-Üð «Ó&b Ã*©~l”:Ô°à^ù=•¶¬õàÅ÷uÔ’…T­¯<…Ì…(#Š`F‹ð@RgºZØN£í™)øì¹áPš©•\Œ¹ƒál›bj‡BcÜÄ8ã Ì*ÂîÒ¥Ÿyº"#í2<Â÷jiµ4Ü£õðƒtÍÍ!¦Œ´èószYý—ë:lZ:¬|è˜Ä­bðý.éŒ%ažµlæÒQKP‰‰CõXŒ¤{[õy{sÕ+4VòÍ;3ÂÇ¥”Á«0lÄrÈ€íÁÛ7vHãpØÒrÅ„J™õÓÑÏF:­Êd ²,ôZhŒâ/ •ªVÃîÌ÷¹Ëò&Yàî}«ÉN0Âæß›|Èv#¦dÖ¥’r{AŠÄ¦yiºÌýZQ"~Ý™D¥O©-†?sË+‚—['²ÞÌîsË‹»€ÇÌ5ì%Ʋh½Cr‚OÔ!´ô©Ëª°Vt‡7+þ^«?ðÕÔvI¼ˆCÈøÖåz§Iú:q8°’¸/›LB/I Ѳ’d~`Üv':t«±Œ.¤|:õE dj¼±¡"2¶ÝÔZÿÜoFèm,]%ݦC<Ï9J|å’`»¸_ÉlÖl(õ¦¢r„<{„Ôy1qŽ‹` U:V|°Çd'/.ù)_†ñÓ#ãýO}a@Pã<ñO"³Ù#~{6 Ô wµ,‹þž Oî;š9Àg¯û_¼x©%K†£íªg¨q¾'Ø$阂ð<4µ7œCfU* cb9!oßqRA—ø-ŽU8ýKñüö›û˜VJXÙâ\»z#`÷jí‘€?n%I§Ç¥v!&ä )Q¿ L(׿;ÊP5®œ¾(fGûÔ+ãã2ßä¾›_¢çí3Eö¡6Š9?¦‘…G$j‡Sx" ‡äàMµtõ×¹gynOßËuÖ¦•ˆ \àqà|ÅH¿L‚ÂÚˆn;íÐ+tqx9½O×6 1KWšÏ|ñ°»™Ý’nÔšxÈùH+:¥ß¯®­Å Ÿ¨ “ÕÀ?;R§SAý×äÑ!Ìkªè0á©¥¯|PEÍãôù”Ö¯—øeŸÕX5h?Ûð'YæåðO¸’ιëu†©›+ÐaèŸÒ¯¥¦®MÛyWì¿þîYvXÐ{Í|õDÊÿH²ÝNYoǾ«žçƒ¢És§u«Mq§]ÚG3¸ Ò1ie¹„­NÙ1a6U¶""¸¯¥s”P@ÚÍ.^ªì¶l É ì <6V¤¨î¢_‹¯¨Å¨v#Ä_>#y%è6았4_ªçVó¢d."‘ÈHÊ.šDs‡±}2WkÅÌs~‘ðœ›é%£ÅFì½”2iF¹é÷¬}Œ6„ßg4ö py쪿jŽBS§á»‰Ûžê›M@¢cè^þâ6›Äß¼•§ŒÂÌ©‘^8q°6Ñ*Tó© 9W”öëGOŽrop3óƒÈê´q™¬C#¾Û:r¨….à fú ï ‚S|˜NYë~éd™O@2Üð(1ç³£ÚŸ²à²—àJZIiÉcEÓ”-×5 ¿µÞü„ÕÌ‘TÓN°ŸhàÙ¶qÓÛIg=p`ûÞ`²³Jî¨íÜÔ©ð0Cèñ«b,ã¤WÚt’VÄLóÒ|•mÕ3™Ÿç¥”S9ý²’ØÎj¿¢H9@¨t\}¼€K1戨ö׬»OËš ûd¡‹OtÍÈ6]­¡>«÷y>¼X¤àóþ….dC©½v¿ù™Æˆå+Ž“‚²0Ý«ÏIv’œ”bûc$g„Ëð•ÖúòI¯g§07Nµúñ5Ž–Tq€Wz¥¬ÃW†–ü¸Qgº‡ á*¬jµ€…Íwôßz3í´^¸†?$eï.HÈ&éìí7éÈŒȦîÉžñ›5ÁŠi_¼ß´Í§×XÚ„wa)‘'ÆÅ‚ÖRtǨK\ ãúÉ/ºC}LÉ-ö˜„Ç=sPimev·ÇêÏ„’%0m³È=9ßÍÎmƒÇ—_ÖK@J¹ªª%ÈìBˆ;ÔY¹˜«ÜôÙ<—¸ –{ &Zs>pžÅiq˜•EŒÚrÙùº]²®ŽR™ìJƒp<ßËó—H¶uÁˆs¥×÷ÿcÀtè¯7ј’´,m$N¨.û¡°û¯ÿ0#5Lz¾¾³üÁDK¼1éÍS¾&T;ÿ“= Mj±ÛÓX8QQ[ši.ÖP¤¬ŸÚ DÀK ÐØa GÍŠtpË͈[ýž(r¤ѾzlÈì¢ç(ëãd'D^vóðʶR*‡¸ õNÛ¯iocŽW&HflâI_ÁK9_.êÉr–&RíZei&‡¾Cen nþ˜Š ëÉ¡¸æu¢è£3õ»¯ëóü„œ³§Él^øù/©»¾ËH œl¨&RMªÉl¤~j#þ¸çæ²/&Eü|¯™ ÎÓþ<–Nwf(ÀÖ‡9º¤^4L%õü¬<ËUüštXßýQç`¾ÙÖÁ÷Õf×Y’j§flÚþ¼ VÈ»Kqv<†Íª†Ò¬H|¯m¼ñÂg·Sü=± 2n{B WB¯•ò¨O—æ’X 8yçƒ1Ÿ2Ë-¦^gÀtBÕXB¶úÚx·„FF²dJÍ=NäH‹¡ nYâ³Í§ª'èÔi°ˆ)ŽØ”ÏbOÅ Ór–A²­GU×Z±eyÉ‘k™Ãð…·×JéÊÄQÖDÒ9š\ŽúÈ +¯ä«ërÒÈ·_%NI4«>”Ü.2a@ªdÕ%ñ#Gr =gbÿØÜ_¶§pâ‘ÒGÈ·'LÙÿ¤Bw~Žo”Uù“íOÅT®ä6J$ AÌQ¼ðïñ:uÔù²8“̇írnǸž›Êø1·ø5·ÐûFme†Î¿÷Ú&ìeq³’xG­ šãéItj5©½Ó Œµüþ™¯Ðng9 ¡.×lÐU9|~˶êðäûf¥þâgû|‚>7‹ˆ=W»AݱK3zKu£ÅónýëË®‰Ÿõ=†ªî2×ß$]”vĨœ;Ó´~êD_»Cì–ƒ|f²À§NUsLYßê89ÂE=Äl§^å6à¼Äí®t¸*[åß6<£Élʬî©Mê-ƒ‡r~ÚNnÙx¸š’ÝÛPÔ˜Ž¢•rLp,—ÑšÄÛÌbÅ‘îÍfâ«jG9Awo ‰®¯¥ ÙÙÈÞSõ}¯,Ó!J”º:ð¼s§úk0O-]rZøÎ[úˆ:4Yã^ AzÎ…nõšvsMs­¹BŸWäÛ$…‹¡ÆŽ*Iõƒá€\Ÿ'Ũ‡P-W–šê\ð–%ïPãZ®.¦\ïÔÌúWª¤ô¡S•Ø»\¨„MI-ï>“ Á×KYœq¹ö~ý$ ‚¹Hlr¹ÑôÖ+oªõ»s¨·N¼1ÕÞr•á+YHnJs3"KL´¤Î ðÍð¯jÙæ”o¢ †Rˆó]Å©Þøð7F-ä±vœÀÜ«*bB¥·»JËvîŽê¦¯™A;juµž8ä• X­.#Ò7‰ëÔÒWË^8;[ÝDBð]m–$ ½Âv'E<ùœDl.%ßQùËíóË`ŠÍL¶<>˜C'”«jÊɶ(.á'Ý-«x¼òÜÅõ•>ã»:«ö¶Íá'mùøØ‡Ðà]VMI£ïº¬Š„^Æ%w4V,—±Šìfš=õ'Çšß/šQ“vÈÄ^x“êÊ=›‹À«‘^QZzíàŽ7”Œ é˜eÔÅÛsšw É,Á§i®’/ ã(hä×"  \d ½)ްس“¢©Î¶D¿6)r½HÜSì*ß([ÙƒÌϸ¼y„Á¬9/¶Ð÷1Á­\fùKoŽ ¢_¨ÍXn騠é;nl y;FGa¥anÛÌ1]*ñ…}¯Sf*9¥¥·¿6/ôcm㪬‚«œøW§¿¦ZÀ÷6–O¹mðÝÀaqêÏáï¹å_Í; ÑnÓ~¶Ó••>Žaü‰Ç’±hù¹óÒÏPe®< Ów×^·¶¢¡Ô£›h@7=_/9®èÝÌ–„+•É«µCz§OA¥·îU†”¯³)Isï’dˆ‡Z]ׯÍÈ*´<îL/ƒhèÁªnßïNiÌ>Þ¦szrdüvt4Ä›îœøó29EÌ!JDÉÓ;r¹þ„ÄMÎ=¬QíïÜ&;¶´Ï¬ÐX$9ºžobOȆ¢] Î w”„µ *r¾Á~Ê[Ñý8bPöò¼çÌ"—é;m_ënfzU:ùI0_þájë[6ÜvGd··Ož±/@óg_ŸL3†!³)v«åЖ<:Mš\ÍÚ交W r¬ÌH)p^Ǩ¬>I7ù0ÏK`l ¾_–½ÐÐó6ÌÕvŒm’,FæzÇîG+È,ç3¢¼[†fŠÚþ–Òm&m±+&wê€bÕ³™] ùW›Ó;ä{?É…×S Ž :12Òä|/j±"0ü›f²ëãíŸP¥²“H–Æ™{›á}ˆÍ_À¾mÄj]“f#²M[B.©ßzf9­!²žø!=—ÊÂ훣¡zy:ÍëÑrlýQÙ44Ÿµ6?ÝÙÔÆ‡%·ô‰½|™Ó+dóåíàG¤U"Çbò˜›oÁÙ¾ÍÏ›<¨ˆ‹…ß<`0%uÝixZw ÛC<òÄ—ÂÇWÿŒJ_Né]Û1OóÕ–¸{ÒQ!ì­åÎäÑa` š½ôõ§"952Ñb›úÅÀ+â–!®©’Z kˆJ³l¯×ƒ©ôŸÓdÛ~6Á®ÐÒ›á¬êB‹Ç,Bã­öžÄΗšÚ±—;ÄÜ´74ãÒüÁ·Ëâ¥Çm,SÌïðù^Šð±ÉÜ܌ד«)L˜z»Ï†} üHêªyq,ϳûÉõ‰åч:">×8P:Šçºf›š©>âi®ëj<ÖÒ™Wß0«ÁãfVúèÎÌK9«cÍeÏ "ñÂò͉æcÖí‡(ê˜qº2”ò©  µX —›æè†ÊªŒÔÏÚÃ7²?ž ˜øÞáÍÐ]gŽP19ôS{»0 6³[Þ™‰^Q”šÑ]. ¤ ‡To̓6€åtdOº3æÚ1[;NPÚvM(3òb"=ábƒðÕxm_ýä &ûØa) ŽšÎ¤\s,‚Ûã²üNn> ª°ð yLÖãM—Y©BYÏú=…¥¶aZ]ã̉²ñ#"±ÇH{}`ʯ⹤C€5û@k‡™Ùý͘-`îb. íL¤ Á½XÏư ÚpLRJz¯y£s5ÂÎ{$qÇ Äø9*¤FÂ¥?u€ |VõĤI¬Ô0hKÌÇV )e¿N±E>44ÍS106ëaî81ÇäùXáÀYs÷ˆÈ¦Ì‹¯mH‘ú¼G„xwÓ&W×µ®ù¼•s1±Ã *òu…v”uO¸½XÓv:îƒ×Ï8ì€ÞŸØüéìÖ†Si>pK hEÓ—ô\rKvíQƒ¦e*žÇÜRišm”þžôÑnÕ@Ð øuænç$…kA:̧IÓWØ™lûÈþÓk˜Í—tÀŠí¼½U)åfSŠ;fx77Šw ±í¥. VÑ#’2ù1¿vQoObÃiÆ-á—øF˜Û’]¦^1~ 0rmW*bzDy>6‹†¯awF¨$öèO’ü(ÿ-û×*2;…3æ? ÄúÜ*Ê•$· #vTå$™Æq:“RÓ”ÍX ˜¦`ècý!´×Ãý:ÑóyüÔ˜Ê!ÞJ£±šã¸~jÊ/7Vö”þŒU¶ÀŸ—䤲‹|êbHÙÄú´i`Ûñ£„¼J€|}¡¸¥^†i(>z<2“ïG•8 ”tÒß t~oޝ„¾ÇKÇOpäî¤ÓÌv7QV,ºCØÐ÷ßàŒÙ~·¶š»$.²ê|7uyEl7z7š¬üfROéµÃRÇ]Ìrûè—Ü®4óIÿ›/TŸ½M®þRÓàêð=ü,ØêÛ…NuˆÆ£³HÄè»Lˆ‚<ýÁdIèDõ<ÍÒ—1i«ïúØAL?É‚P(mGp9ŽÞ-Y—³ÜFÃ-4ØNï~ÐÝAœRÍsݧYdÃÏT~xÔËçjQœà¬©‹ÑìS²U©°²ö¦½Â0꽋ÑåùRL‹Æ³u{…KöYRe2þ€†vz!ê8ÇãhÈüÙ²ÔïJyB\”HªÕÿ%\™ù%œ‰”C†È¯‰7*?ì¨Où'YaSÌÑ Æ-&Óþh°ýTI¤¹h¯¦9\*%pÏ Èæ·Êc>KÙô¦öo}­{®Õœ:Óôˆ…=Ï‚³r'³²ÒÆ_Ô}e÷A&‹WÁ€šj!=[)2A’¬¨Kˈu¯êŠ.æ«c "V»ë ± ÔgõdO÷(4öK`Í,"[Oø„ÉÃÑåØ:_C4Ž(òS§þçç¨ckT]õ'^¸lÀy:òm ™ÿ¶(#|_™/ jq›üÒš÷=AOÐ9'ù Tm­èžC7zUœp–ÚY—éŠ$·RœÒ÷ã¹#ÓÅÇÆà\mÉÚèT2´]¡¦áwUj"Ÿ®³±VÄÄÎ+󷢃_ŸáÖ³«?õËúLw:H\Àð0ÕÛBí¾õ#hç^5ÔNQºí®£{ljùoï¼‰Ï \ÝlpÓ†=,Ž„01Ñ9 Q¿#Kºvú–Ò)@È„ % Yù}@‚Cl«²‘•Ä4RÁ…EâD"ØÃ’ø>\»ÐgÃõE=ÇüÁÙ" ÝÖÎÅTè©ïQ ô´_}¶â)–q\ÊÒE„Ÿå|­3lê Rº³öÆkÕÞ¬{Õt”uÚ”~EOסk·³®x²-*Zt‹†iʰ‘x1$$ã­ÓW—Wæ`%‡^Ç› MÄ·`£I“.¬“õóô6 N‡;^ Ø?Œ3Ø¿9Õ…¾µ?j^jë”þ6«ý°°uÎFò’•ѱ¢XÿÓ³o#| SûVÕÈ|{¡YöÕQ‡|7ä¾c-g"ëÕÐΜÃç®O§˜-#|Eœ6ŽŽ~T]—_¬\×Ú;ó )¦³)Û>ίø¦óÒìÄfñé«W™x£€¢óÜ^–èÈÏàQŽï>©¢åë-Ðy[%ÊawõÆËðWñÃð•U’¥g†ñRVÇígŠSl^]Ÿ,¢³|Êò^… Œàçv#|“^ øwôª¹$jµ‘ŠTmüìÍÍ=¤:‰ø…Ði\.Ë„çºLyµQÂz('.yº/ÿg endstream endobj 67 0 obj << /Length1 1484 /Length2 7120 /Length3 0 /Length 8123 /Filter /FlateDecode >> stream xÚ·T“Û6Œ4)¢€ˆt‡ž„.½÷"]DJBKHBï" Mé½wé½ISª4¥ R¥HQPzøb9÷Üsÿ­ï[Y+Ù3óÌ왽Ÿç]yÙYèóÉY# 0e„3†Ì(hi©AH ag7€caûIØ`(4á,þ_ ‚Áú!,P á Pwu€`q°¨8îÿ D ÄŠ7¸5@‹ Žp†¡IØHOÜÖƒÝçï%€ÓŠ ¾_”÷W:@Î †‚[AœZŒÌ »£Ä °‚Ã0žÿ*Á)i‡Á Å@www~ˆš²•æâ¸Ã1v=†rƒY~Ž Ð†8ÁþŒÆOÂ0°ƒ£ô6w À:áV0g46ÅÕÙ†`wè«it0çß`Íß^ÀŸÃ€ùÁÿ)÷'ûg!¸ó¯dˆ• qö„;ÛlàŽ0€Ž²&?Æà €8[ÿBÑl>Ä w„@±€_­CÊrºvÂ?ó¡­Pp$͆;þœø³ ö˜•œ­NN0g šägŠpÌ {îžÀ?—ëàŒpwöþÛ²;[ÛüÃÚ 4t†»¸ÂÔÿ`°.’|¶0 @$&*(& €¹`VvÀŸx"a¿‚àŸnì ¾ÞH`ƒæ ·aH¼Ñ7ƒr…ùzÿwàß  °†[aP˜-Ü™äŸêX7Ìæ·½Ü` ÂÒ ýüüge†e˜5ÂÙÑóø¯+>ÒUÕSÓâù3ò‚òò€7Ÿ €O@ƒ„Ģ؅ï¿ë<€Àÿôñ_¹jÎ6ÀÏb?ûÅÔß=»ý!ç…pþ]L¥. ÀùÓƒ„AVØ/ðÿ3ߥüÿÑüg•ÿ+Óÿ·#eWGÇ_qÎ߀ÿOâwôüƒÀR׃•+çÿ…Ã~kW f wuúߨ‚•ƒœ³-–Ò|`!~Ðo?­ ÷€Y?€c¬ì~Óæ·ßð§àáΰ4üç#›ýO «2+ìcåæï•æ×Eþ´aXQý»%g+„õOõ ‹ (Ä“{ùXKà ÆÊÔæñ‹Ý ¿3ƒM`göØ P$?/ZD”ûéúm‰€òÿX¢ Â,áû VìNÿxÀ ÐæK  ó™Øb˜_æ¿:¶rE¡°#ý¢vœ¿í_ÌfE23…°’xj_ó´õ¤JŽÞomD’`7ùä¡ßH¾9¦GiÌb9V?#}V£Dy¦¬lnß¡-ïr’¹0½ï½ZË\ç)tÄǬ¼aË žº:º6ç}ÌÀ:u« 'Ç8QžI¼Õƒó€1‚¼“XÆÚ¶GŸý–Ï_5]âÜ9¨Š•EÕƒ[µÛ;«ŠÓ5©î}ù¤‡i†ö¬ Ðü•õÉéEÐJäã°$íTV ÉöS’X÷Jò¥¾þ9ŠnÆ×ênOÖ¾±…`(”$ú…®WÍåÞü‘Uä¶Jé U¹-»mÝSºÈ•xR£½g·º·mÆÂß)jgo þâuÊHœ£’OFeç­‡[Ì eÆk쓎;Fu¥ÀUß,”btP Öðœè]ú᪑¤fú®÷)'¯V¬ÔeÙêßzö¶(7›Ü–¿ª)V•x¨Ó¹¶|m‚r{Ù3æŽ8ƒ'ŒLÅ’íZ ¤ çî?m xH!(HæO®0¼ ¬ÿÜw½ÀäÈÛKè2w¿½]žcÖ¥2Â9Š2Òk©vÎ'5?çl |[g•R©àåî´|äSé±l¦Ùç„(ð-÷juþº4Mñ<!`Î|¹Õþ4І¿%ŒµüãJ÷³C¦2ÜhkœbíìÒ³ƒ@êá^D+Ž ‰[q`äÙ¶×Å6n*@›YçEPòàŽ„ÑX‡­H_n)®ô ïÕwé–$u!'9ÐÐ…ž`ÃT37U¿w;O.uË*å}Šå`¸ëÚ;­øUÙ[v¾|·?r>'{B¥Û´û"²Uné 9+‚k¼š~âëÖb©@"þû/?§oÚÒÓí§KÝd6m·`¾‚^!,î|“g0Ê_<ë}2x½aϘ•ù+-îjCFÚ›%ÈÞ&â‘2Z'†ëi|>û®µÀ^³{¤ö«òqUéCEßÃoD3bzLn¶~­«Û?ª²-¾I؆¶7§«—@|,Ûí¢Š þ\¯ÝM‚v­L9@öñßjâˆzžØ’ÜN¶£Õo Îå ð÷¥D^òmÙL™ çS$=ôŽB^F›ûÎzûKŒQ0ÙÊZn\/ŸÄ˜c8ãý!®ç})iò!úÏÑ‚ï^¼pÈæ5„Ʀ~ól&‚ YÈ®lÝ& œ;ï9ïòŒÎRŒ_»õŸ¾F`‰HWð6•svØóÉLåYo¨AÛP« aȧ¯ÙåÞašcÛÏ:;IfÜ_(\:;Þ©_”– ¼=»Zgý¡±£çž:¾,NÊ”kÞ%l02¼¦¡ö<ÿÚtÓ÷iv(f}öanP «hÀž æé’Í™o'åúhø`æ~»žNk;O—»¾;ÜMØ—¿¤à~áݪ,VHkÅM˜Éfªo4žÈK_ ÐŽ…QõÈ«È뇀E"~ƒa =ùØg½—Ž;Òî± ·$?©šDUõâ{¸Q¶Ýö XUæcKcMƒR±pÖ{9(êêA1µ}77íó›º3HWµi„ÊÇ …NSkç®ìå¸Ó,mÇBuKªkˆ9 ?K Vé’2?U@B7†e%NºpîÃ69”M9#HrŸFŸÊŒÐD¡p¿&·¶XT_§³Ñ!2^x»RœUìz š?މrÆVpT Þx;V|Z?ù8°šoQÓÄèQ ô‹ÐÃLÓ!ë=µ´Ò„CM@ ËÞNÍèö†“œ¾䪣´€V¨ã™*C¿óØ¥gZ7̰·÷ê:X.=,È<âcÆ ¨4KY]§÷jœ×®àH ‹W™4ËÖ‡ðïãJôª]Ûz§ìÏVØ`ø¨‹ç8m#âá²”ÍHìIRãî[ýDUXËÍ~öšàWùäÚáñ¾Á¾b'É#¯F¿-ï±g=—ó]™–L£'ê ´L§„<ÌýôàlSj¯¹!›äêʤi5îySZ)\-JjÁq.öÖï/+Èã\J*t8 :ó=b‰¤eÊÜVï"Qåb@éE×3ê åùÐ@5}Ò#”_hŽ¥tÝsu.E©…<»G/ž0Í›khA­ù@&¦¾oà®¶Bź¾ÖÑ$|w’lV:á&Eï»ãgk7Ö¾ rOÛß3îÊPÜÛˆ`Û÷ÙËdiT_ oº¤ÛœÕŒ“°ð'±ÖMTWckhIì2éçü@Cí¤ç²qû8OÝ”&ÖÏfŠï>ob©Hí§»à³¼q?wé«í— ú¼2à2AD¤ûSr=‹žŽœOV4¯5¿Ã¼ÊfÆÛ5Œ¦Üù²AÜI[ê$;ÆM}m@u?ú£R3n±Ž-ßlâÔëÈ[Uª›Èuš›UB&V¢Ç^ùoÈcãLO•ì¼3Àaûà¡ ƒê#Í‹1aOc ¯€±ý•¤o>³ ˜ëùöòÖ›ÁFR^3‚³Sê~­ë¦5íõ—“‚–nÙ—HgTá -#ã’´#þÏ·Mø0)É›Uå5^“ßcžà„’Hê‹`ÀõŽÝó–¯ ©ëá8Y-8jÛÔ£Œ\Rö',`äJ7õ1d†VÂ_†–e#ž z„Éû<4‡;ä’Ãü/z´ ßë4#¾¦Ûôz¬ (r&>rή™JÿŸ‹*y7ú2MÖ5Óô錵@T…Ç´¯dú’¯ì¢ñËáÍ â@¯¶Äµ¨ ‚[[Kclò%¤š¸ÀðèÏâMòÔ‡€©…iŽú̱°«È mH{à“ÚÇYM-”µXĹùM¾æ‚¡õUsfo¢CÁòÁù+ ¦ §ˆyÙ‹|¹¿Ö§;µŒwRñ²éÁˆ&MñÊ£:£~ƒß*¾…‘>œ‹“»s’óš9üœŽoÝ®-ÁºšâGC8[ÜŽ\l=JºÓD« Rx3 Nû}VÕóîE €ÆõòN¹Åã‰>KËÕv{q )î]œGµ/®. Ù¹ÏDèØo__Ž›‘ØZ{Ɇij/èìÝtïÂóÀ‹àùê%™?&m†=ƒßÐ&-öÁ¾¹$ß`T¶®ïœ2¥I—ׯˆ½á°î•)xe’9•ôí[ï.|Þð{'YU…:ž€žç=ã,¢žõW JæÙfhb˜yÔt‰dp|'‡ݪcS*‰UVrÂáZ¼»/HP†YÔ[ƒ§9²Ø=X.RÄîo~¶á{åëà§9*ûùkÙ²A©nóR»[\•iÍpb1èx̉,ÚüÊLÑ­mãÔG;ö•+ÊTs­ïÉxÙ »Atz«ÎÐ6ñuyù;X9€Õ<ëþD¡Cë‹ø¯•¶B¡»¼ .û]!oo«å¥õN$ã£ÚlxóäíÕ§s=ÂÒ-v¹e})óåÝDEeºÍ¤ÂÈÂê—SÍÆGȉ}ÂÜ ‘~¹lfrÎ3­UÚiŠ[ÄäTGsÑæå£“: ÕŽóïÞ{J1›{ +EÒz±]>´úºtÐG¾h“û†kW„B“·=³$PŽ»tˆhmRQ²›àع È»½TAo™±"{?‚%ñXV3bd¦‡!ýrË«£ò/:î×dž!|J£tkÁqˆWÐOó«•?ÚâÛ¥K¿hx¸v,½µÀ1–§mF¿÷5žfÊ’ZWŠ‘­l‰çß0_BÕˆgq2ªJ—Á6f Í×NHTè›Îyêëdœ¾É÷½^kYnÄ m‰†úFgFÎ\t¡›d©,âЭ@ܤÌågOoéÄ*½)Mr܉X°{¬b ½vaËOmdã\Øë77¼]é’Z7q¸»²¯@ÀZzåÖÑthI%“œu67(Ç8Þ¸.Ì_Œo7룗P¨n«‘q쨫±¢¢\½ÄyPp|À#Êû¸Å‡?ÿ¤öÅ@%Câæ.ÎkÞ‹„›£ñˆ´‘ìÛO_ ÷â­|)Sa§CŽ´¾ÝîmÔú.>žpæ|ñ†ÍJ?`›^˜¥$6³”þiV6˜%±ÁoU‘xüž˜Ä ÿœ½º«}4>c–ùV•”­Â·Ü˜ºÀy™Óíi¯ëQfq­(?ì[¤j\eóƒ´kCDᥨŠíóæäÓ·ôâ·Nå¥î³^ÿÞ·MÖÆÝ(sxÖo‡ºuÈDÌ +“ؼ0fÜÃ_líw¬r RJ^!ÆÉ_¯6DyÀ«ÂJ\nÄ 5U–Æ—“O!?Ûæk_s÷4[œzœ>‡pqÚ¹”ÉäÿP Ñpv$á}xhÐ,ô„<¤3ëÍ‹"íÜÝ ò%Âv‡í¥në%×jvJR}AEÏ ÌbÍPƒØN_²–µ'ç_Óæi+î‘„â§\nõ˜W%‘LÆZ¹^x6ê:,áEcÿ‘Ô„Ñ—v„<õi}ø`"Û¨­‡sÓkatËÉÛ­íy—6†;kè{ª9ŽbJõ],©…Æab/-cKˆ‘½¨¨@¹øt7…öÆÉü׺kxr:Yœ!è·6ÕìœsçÈŪ¬É|ÈpR]¿ª0èÊ ‹”«Ò¾îf|ç¶¢¤D­}U÷@ãÙâŒÚÚ©šŠ1·añ\®Î6D%nX[¿/ܪW`âGË4Š’?d~EtRá¹¹‚|örÄF•Ô<*zÔ2q*ÝÑ¥œSÀl¾#EFŸ¡±ªeü"S4†''5JÞ»Iu‡ÂòŸþ³”Æü•ŒÒéº}ZG-Ï~Xê1›1›ét$Ðc )ØŽ³ýÉÄ0§Ì%ˆ ž×2xy,GZg(ÖÛ׃ˆæF¢o0œ’)9:Aeuyö‡$ôb"3cÃ<ß…TR?iðezµ¡±ùAÃÈ è^©ÝrdfRI¼Ý} #s”ZÉŠ’4.««¬KJíp3¬H½ÏòÛÛø‡\z» ±›ÑxÝÄ£ü³vÅ÷ˆZUi·²f@ý¸Võ~¯›©Õ n¬„4툻àS÷öÛyjÌ×]*KHš\e½þá×å³WÚ¸Hë VV?ûÌG”ëê@õ1>=!•/oü˜›¡Œ¢$WÀ`â®Y~ÚEþN«o±eŸ6UÞ÷Q¼Ž#ÀiL5`ÛPÓ:ZöŒÀI£j1úT5vÜË’²¡ë%À%ˆÁÝs`‚çnJBOÒ³š¯‘¬dÑ<ãa’"KÃWùèïï%F.ªBr„Ô°…9®Ë®Õ&G@´ž½I¼Kuo æsž|­üÄ”Bz£*6Z Jxæón|«]‡‰kÑåý¹r†8Q' 7OÊ£¦ ¥‡ b–ìC¡ÅzÔUùORå˜Îýµ9ß!šœÇ¤Ëžæ·x¥<,"_—¼zѹ˜#¢Cj/?»"&,óôóš"Á«(œÓ瞊ñ3׌ -îÅB# W‰>î\j–K·Ê»àˆ¤ÝÆÇ¯ža€dì—“åX÷”mûJýiü 0·3½lNéî‘3â±â/ýÂÏìZ7v[|Ôø…]_[ê>È;žzÂeùýe’®n_Ã&çëÇBqÂ4 µæEA OŸPi-V"ž1 «p[Ê ë)k“-u\NÙ®<ßBvÚÌ.â:ã]â´ ÷‚oY—å7Ç|ÕèÞ¦4Õ$ñlr!®“ïl`ë’ý‹öÙ€È&‹ñöÉHô™Ò†^µæ]‘Þs5ƒ×l¡Q—#ži3¡;q×T‘ðæõ+#+»L3GŽ‹9Ê]óâÍoÈuò7Ùîõ‡±(ŠãDPà³sá^§‚Ь¤iyÄ]ô÷±Zh&É0¼±¦ä>í ˜‰zp~iB’V<kåfàÇwfÌDB%Ÿ×šiꆀv¹O4¾&Ló4ÊJÃøùf%ã/6.h+hoá'æô8ïöŽ>ö£Õã¹ÃæÖ…HT,H™µ Y$ºô <ÝÊÞ€0?»ñYQÛµÁ½;tTá•]aw4sbÈQØÃÚyµ>ñÃ…¿"bà„±cþ}AèÝî‘‚í>Çx#ÁCƒŒ’GìšP/:B¨¾×x$BÓÈ•L¾dž¬fJ~„,Ãûp³ËSM-s„“Á iƒ«®'ïº×ÀÉû¶éOe82ûjG7]—Æ9ã¢|íÛ^Ťáe S˜ú‡O‰t}'pôúÒíPe›'ÃÄ8Xn&7Ñž î>xóÏSøh*¦Ì]Ö¢d#˨òFÀÔ£ôwRhÍé[÷ ¨-ZÅY7ê­øÄúå&Æs7îÂÙTåU½F¼pÎ(õH/l̂ʄªƒ¿ê¼{f.³Ç…/>@“]–%~½e®ÇRB«ðX‡yr¦6*qƪ`Ï­Å[²± VH{IîíØ¯eà÷ˆ#”½ u67úd"O¨vø“–ÿQYU“VW÷‹ºÏăuTÞæ9ŒJ-wSàÁ·l?¾\”x,ß—µÔ3x—*®dª½'DŠ_’×ûjò1š£`ç?u­!úTìú<ë̬”øëA1k¸þ@®Ù÷†$BàJlwøá¢€Lî™Ç‹I®»^a¡çd¡Q*ÝÄ*ê1¡èÃOnzý­†TZiÌN§tütr#Ês>s® *îãŠÝåçW•™I•_wwŒKHJv·â¬Ù‹ïNže ¾¬+¾§ê·bD„˜frõ‰e¿Sg»±H“ðw©[CºÌ§oÞ#y·8ï-·ïðr5m)_jXÚÂ~bXYxòõ;óLœý.¢`÷Óg»‹³ÊJEn©ßôÃvj£d'UsšN' ZµH8[4,ê)l ƒ’ìèüõ×ᬃâmo¿ÐÀ½LNËê/ªöΑ8Ÿxð2nøa²¾¤¿ð¦Æ9íÖõ[‹ËÁß_zû¹¸ÅªÆJä÷¤[ȕ̿‰MH¶ëexiGhˆÕwJDz­güÃUÃÝÝ™×dâ Ás3üÄ$Ã,RDÒFsÇT„.B£ùËšPq=õOj—#±e°âÞÛj%]} ñ}Ëïõ Å_V»’´ÒJDÜ-³û.Þ=T.yWDfÿ­/b¶ (M¼àLkÌ¥=¿’íf¿É{B”pÀt@ü©4•ÅÇ®óÄjÕû ¸ÄDx÷¢ºœ‘ñ«‹{aܽ–];š2~mYA—g#28k¤É­Sò|FRq½OÙ¸hlUö“q2þšûbÊ-YMo2èóhÚÈ‚Ó0\‚ê»æèGšFñßC›ST’DÏzKÔ"d>(l ׳©aá¦"Ä+&..\Xw¥VK¸£ü@DN"™ŠLm@ûšÂóçû.S΢ïÍ.÷ô’y/×|”0¼¦Ñ H¢þâ¶Aå’É ÆÜ…?Þ©D®ÔÜè»b2'^y¹Nã¹Î/õèòÆÆub¹!Ÿt©r}®}º÷{ËôTN¹,à˜J¢Åý¡{y’“bë7Nâ(7‰êoõVêrôyÔ µh§Ĭ¯œUAdEZõu¡±üìÄñQ¤Îî¼;Ñ(Hϧ3b4wÑ.ÌAÔ•ÄìåTȘDé>“µEÎå‹I¾iTÖ,ºPV:7 „6–fðÖÂ=¾f¾pGr÷LGo<:.#öýTÖS¬_ù,äOý¥Ä`J²­.mbÏ‹¼ÜRàOšûZÆ/ªæÅÈúW³\ÎDO£õCñ”ù üŠKƒª+ŠûxšÒ:PÏB–i?BeÃ:Až·‹™™vüªÃ·Øã¨âÏW´¨¿f»ÇDïÔÚHé¢v ÓÚ™}jx?8¾µ’õõ›)ÍØvQä’ê~o}ÖÅ‘ÀöкÂw"™aæ>¡ /5 ¸}$ÑŒáNÛ‘ŸÀ7®ª<ÕÌ# |RÛÊ]¨â„#)ËõHÕ/úŠP=뼚CVa}VEk–‚쨽‰ï@ÌÖ5óƒë”Ê6Ðz":^˜­ýT,æ´,¿t8T.+óžUVèçÊ×%,Bͦÿ?dƨ endstream endobj 69 0 obj << /Length1 2564 /Length2 22075 /Length3 0 /Length 23535 /Filter /FlateDecode >> stream xÚŒ¶P\²-ŒkNp‚»»»»» –ÁÝÝ%8 A‚œ Á-¸wwwyóÉ=ɹÿ_õ^Q{u¯ö UVc1·7JÚÛ¹0°02óÄTY˜ÌÌlŒÌ̬HêÖ. à¿b$ M “³µ½ï1' ‰ X&nâæ)ØÛd]A6 '/ /33€•™™çˆöN¼q7ks€#@ÖÞèŒD!fïàédmiåó?j3 ýßæ[ “µ™‰@ÁÄÅ h Žhf¨Ù›Y]<ÿË5¿•‹‹/“»»;£‰­3£½“¥ =ÀÝÚÅ   t:¹Í P4±þS#@ÝÊÚù¹š½…‹»‰€¬Í€vÎ` W;s  &#PrÚýC–ÿ‡@ø·7F–ÿ¸û×ú/GÖv›˜™ÙÛ:˜ØyZÛY,¬A@€’¤<£‹‡ =ÀÄÎü/¢ ÈÙloâfb 21þÎÜ )¢0øoyÎfNÖ.ÎŒÎÖ ¿JdúË ¸Ëvæbö¶¶@;g¤¿ò·všÛîÉôÏd?ØÙ»Ûyÿ ,¬íÌ-þ*ÂÜÕIÃÎÚÑ(#þ/,Bú-³º8˜™™¹xØ@GÐÃÌŠé/÷êžÀ¿•,‰Áøz;Ø;,ÀE}­-€à?HÞÎ&n@€‹“+Ð×ûOÅ#$€¹µ™ Àhim‡ôÛ;X ´øƒ‡ïdíÐcï €ù¯Ÿÿ<€×ËÜÞäù›þ÷|™”TÔe4eéþ©ø?:QQ{€7;3€•ƒÀò×’q|ÿÛ²‰õ¿iüa+cgaàù'[p›þ'c·€úßã ü·/E{ðÖÔ¿—\Ÿ™ƒÙ ü‹åÿyÕÿ6ùÿÛð¿¼üß–ü'$é ý­¦þ[ÿÿQ›ØZƒ<ÿ%€—ÖÕ| öà3°ûßT-à?G«4·vµýßZð!ˆØY‚þÓFkgIk ¹²µ‹™Õ?Ûò\ã¯+YÛ•í­ÿz­À£ù_:ði™}¿:œÁ+ù· ¾œÿ)agfoþ׉±rpLœœL<‘ÀC#€7 øÍ/1€‰ÑÎÞl—ç °°wBúk¢œ&‘¿Dÿ N“èoÄ`û¸Lâ¿€Iâ?ˆ‹À$ù±˜¤~#V“ôoÄ`’ùÀñä#p<…ßOñ7ÇSúâÇSþÀT#pµßˆÀ¤þ«ÕøÀÑ5#pt­ÿ 02ùbçbbë^û¿^]ÿဥ¦¿8C³ÿ °ÎÌëÿHØÙÿ’ØÚþöú×¼™~»c§cn™8ýÁ·øÛ)˜ñÏþý&€k·ø Át‹?à_JëßælA·ßþXþ€~ëÿ¢Û»þL°ü‚K°ú]¸™VžV@»?`™õœ°ÍÜÔ@p@@pmÿ(ܜߞ9À¦và‹øC®Õþw2`cûÿRƒ‹qø­;sèì@@‹ßÝcgùWêô_MeÇÏüAûƒÊù·ÌÚþ÷¼ØÁÍq¹:ÿ,qü½à ]í]€æ¦ ÿ ËÆþ[ñß‘y8ÿÕü7Ÿç_é“YXÀ~þ ¸÷¿“á9m­ÿ{ 9þâÝþ؉3øSóŸªÀÅ;ƒLœ­þp ÎêwXð;œÉÅÊ øÇZ‚›ëânÿ‡؇ëp@48´‡çÆ|o㦬LÔ{ß^óþ¬Â=Bt0n]+$/²]5 §ÃYé³”H4TÑíæL7¢éûcuQ7RÛÆ¨Zê›#EOîô¥2âT…ó ½rûüá>ósâ…ÝxÕÂ8‘׬5mJwÔo2Ñ–ã(2w¡ßµ 6jž¿à‹¨©ßå¿÷Zƒèþ59²Iúsb“ÜT¡_ÌÞÓàãˆù J $ýµ~¹*@õbÕ´¢á.R·@ø-cº¸z40 #ú¾KpôHPPB•¹"_H‡õ:›”m³á•%ü@ò±I ÒY¿fëš?´L@¿C’|U\(Bãq|ç‰3%gÒC*OÅ®¿Œ = o˺Šb69›ô×’<+Ä»ozÙéèW›…þ4¤1¡ÚAf{èÑ›ü3TX5SÏU1•Ù$òHCx¿¡S¡¯½Œ‹¼•E­b„ï©“…u)… ìöæ‚‹çü†ô>Ps¼{¼ãpfVz† é2š©dè­ä/Kw2IŽäîçjä>U¯ö*ü£»£iÈÈÆ~ üYÄ,Ì%>Ÿ_ù[ömOëïç2W­ÎVrCV+öêë««3„ñŒ….¹Rq†saõRÚ/¹=”ùÙYfˆ.\Æî¤!PQø8?77ù:ɹ²ì³=¦kˆAÀZ§ãÔI»TÔLLùÞxâϾø™Sè¯:žèÿ¾Ã®ÄîFª—at+ó=¿ú´¶ê »oÇ,Ÿy•¨ìBAö^!G‡¹|ø£›7ç*nò¬þ]7Ê)Çq0Œ Oà:9K}RGŽqI÷`¦“þÔœ·I„˜®¨Tv1‘ç"õÛ(9ª°nV%æ)Í´JNerrÐãþCyCÒ»5½ÜÃiàÈ`ô]?>žÜð/JV ËdÓ*¯ð[Ùa¼Ïô®ö~ å¬=¸^+®‰Ÿsç9iÓ[h‹Pz»PÊ&^y~Œ~]êù"—ŒcFƒûsìv]ÿÌ2Ç¥‚R¨d3n¬çêÑNýн-i§•<×\Q_¬)£`tAéfvL¸P‹ÕƒdÛ‘TÞ|²r“ÀþÐo‹E“)f@T@øÛÕÃ1)sb§Nž½×=ùñýømEOʼnAl÷õ•uVûÒîU@¥Ñ³ŒÕOT×½ÔÍzo)aÞ~b–w3›±Å†µ®/ê  S8:°ínÔš «À-¨°]2¥`žÿKû`œ~ß“—´šÄdqÝj£P–`Íã%Ö¡Q•gÚá/Å9áÀ,Ëù²z›â«ôþÙLýþûœ6¬$\"B4Ä'ˆnoÕ9ûDôÎõwÔ[FZgP¦"/þr>ö ÈF˜³SiZè«/„ m(ž[ {¯œe¹ß ÛnM\²I„•Xó˜² $ÏI’Ø<‰ßÞ4CUPø5.Õ«û¼¬m[þúÝk,FÒTz_FÖ%+X „™Óý¨%J軫I³¤6°hGŸw¸R|ªŠÓ„SØÖ"Û]Ú¦œÅ¸×&3àqS„k¤7ª­þ®ÿòJ%· E]ùõÚ-8÷ 8DŸèð²€ìäo•ôДäŠscLòÆG¸ªÜÎÆ [¼ãd×^U6q›ðÂÓÁ6ªÎÁêÓ-c!¦-ÝêŨú¨@×oêÆç½\:ŒX¡Â†³§©É7—×:1õ£R‰Q){Íš¾•›»l–8ø¨;,Ô2G@_`M˜LríANòN=ÏôñSB»f`ˆdYÙ™µ`:Y»LÚ´W:“:óSýùÞ„]…å]õ° ŒgÃQ³°©x¸èløá8ßÙ<.Ãî­WB'|Å—ÝÞYBùl/<ƒ8ô³R'ä¨ÂüÒ`7Eñöh).ryëÊ$‘9K‚u;§'d¸,âGI¥ú ~9ÄíCå‘¥8Ü!·°$ÿ•IP>ånýÎö¯:ªùQ­…ñí`ÊŽ|æ@9À v:“5¢õü¤+¢i6~—w—ˆtáL$’'ã…^®GóÆ² ‹ˆkEiÖ‘1F=ö/js¬¦îÉtf—’‚E >®¡øpÍ2r/ÙgRb¿­2>:.ýw< )$Ãe‰Ê‘¥½$l £¥æT©úÛõ³ýjb‘7 F̉ã%nWÆKWº“Íy²‡KA¾3z¯Áº $û–ªÕ\èæOÎAè³xZ,’c'Ó{i«ËÛ„ØzMÏëúô‰,2ƒ÷^~¸iÅn(YDa Ÿoæz¿2:‰òD’cÛ5éˆUˆ±<ô¸”š ¿¿ýÊ 1þA1|:Z®2wŠïKÇÁt(Pòy.Fñ2ª’om½Ðü¥¼ëñ2±íi•¶5Š¿¯(/e³3³Ú¹£ˆ‡¿^ê#Š˜„q¨æ~¾ÕZÛ`¶JÒ¨d¡½r[ÏÆz°?yi|Ù[ë­2Ï/ž#ÝXgžpH*ãÍ b”#§­{^Åä£ç©ëþäFa8‹à7™†DZË¡”¬ìî% /äòiV­SÌ÷åо#%Ó×/ÛdJE9˜C#ZÝ´’ËLEÆž¥1*ß#“õURº$iK—¬ÕqÎc÷ 7æF_Œƒ ÂÔ(Ôk¿Ëq}¬B Sý<{¤çT˜ñ4 sÝ‹y¬ãômý6Gø¦0úvN'\ùá iTRC"ÿèò%ælJ.¸cU:†ª¦^RWExUf~Í…âËÖkjf‡ÞW®Êö§\«Q»¬7ßðöu¨¦MºԻϩ´ü§W?3ÙÙ¥@ËÊçá #P§ #ÕìæþOGª¨W$ò–“¬_]<3üaºÒewà‡sl,_õÅaѤ@#²¹×û)ÃmãT~uéûN>{ÒË'rL'[‘×笮¾Ë ;ÝUhÚÏ-%·CÎ×göX¦ÂÞ ž³È¤bb$ÑÞï̵üuŽN‰w˜ßÙ!¯™:„Z:+2'g˜Ð¿©Π”çwøƒÑ„ Â|ãÓì—Qǽ÷À8Ø“Ú@g1ÚïåùÕ-˜dݨFÔ«r(<'ìŠUÈmºêà²õúWx·6¤ÉRn¼™[¤ÔÅp\K÷yRx$„;®mIDaO5¿óШÏ÷ {ÑÙýò$D’Ô,7Ræû½Æ(Éä 7Ë«'%«&zAwÊìÒ¡¹Ø>ðZOu|‹RijXh:˜dl¢Wó—O;wëÒúdSezpw,©£ŸÍ8ïxJY¹d[DŸ/ë™ O¢,©¯J<°UèߺêUnp$I9÷6ò’¨’ópbQF<ØzVÒX×ãE¹ îÛtÝh}–ïQ5$R5ý8ô¨5Êý¥“Å[áP\³ºs²ˆu×RZOàÿõ‘ɦ t­w>ÔwÅ8ùäPœR‹0` tkVE»™NzµxuØE¦ ¢Ñ`†q^‡ð\xλÌ)ÍèêÈn)° ¥]éiÓED–AÅ.5:MÖhÇÐ(tÑ+±Þ/§ï#_¬1qõøñW9Ñð•3N`OCçIUB’`ò臊CB~Y¾ÿMGXCÖ}}áS,¼ÕÃækÞ-Ùo6ÂXeµÁÔÌRC|£ß±U¡âJú“?¨S5Ÿe£ñeóÇ;ØÍm¹º€äÅX’´{#øiHŽ ¿z' …¶¢Ç½XÄÔè:¿(³tû¡ÔXGÙÊdS†BR@ÔçSõäÄ߃*ÛL¶Šr\ZÏÀ(šîŹ“(éÔŠ5Ýæ©*v×X ß½=»ÝW_á°4¤?SuRŽ îI§!e¦u¶¿NåàÉQì™JT5?fˆÎ˨Á±ÜÞ_N}G·z;¬§&oUªÃ°ä§æôâiÂPPÖ‘*™ç#æ‰%4€)™x§*̸¼:At—™ ˆœÕÜ8(.mž¶éŒí„ä±”Š´ÃØ%¸0>[U•7ö!­rÔÃG™Zõžw!½úOc1±%é•aÜØß(”¿)c!¬&M™Êÿ Ûšxt³ƒàÆ Ì’ "ÔßÔüVÊÖ{iR!BêéÙºÉ{>E‡•mFúÅã 65ÈtLáe6rÉ—m55ãðgQÿ&™TI*zÅ.•…‚óü4‰¶–ƳïÓM}c“NO}¬!rÀô/ ›‘~RéöÓh%éW„Á‘8£û†h¾½ðšÑ ÿ„ Ù&·¼·5Kï‘ÈçáKQ©Ä¬„9>ó‡¨á>µÿ¬î<NªÀÍBL7)¯ `Àú,âo¶²×‚¬S ¾øçÑXü~Ñø×¸Ž·Í¢1›Ê¨Òø;• (÷ÙíévÝSÞõ”r×Бwr>œDÕ§SQ“=CäÀ9«C¥ÐÆY'›wo*¸]=—È.R—/S\‘,|Í»é8:=ýHŸ— f²î:ŽÞjÐW@¶»äÒìXóJ_ä¶+…ö,RW•÷‰$5Û_ÇápË]÷Öz¤x#ÖÏ{¼‚³C3¤uõ)>j»Íu@£Œ{mâ®ýõ¤PTßhj`À­Ô>\jµÅ’M¼Ãa˜b ¹%²Þü%-¼h1üü¡I•ñ0ãúÙ* ß–ƒjDm³K¼exäùD‚Ë•„“ÿFçzV¬¶¢×v¿Þ°¡JÊ•ÃH*þ®~ž¥èÕ…)fùe-vxã i=òK…]„Ñ£¸ ¯ÝŽE©%9ÑÃ×^HáS…{ã9ÃÉf)¹>Ž2¸÷þØ-'ÇS‘¯l"A«:èÖ®å]Ë[Ým§G“:NhûDâ×7¼c̉áU ¡—I".èoJãé±h6¾›” ~·ÚãÑ›.v}EPÛÅå‘KÄ AïQ—+1Ñ&ßr·LjP ÖÛ€òˆ&pìþâ #CúÚjƒÆ!_\*ÓaVïëcEÜAžà%¾©1ÖïÞ¢K×ö\®Ë;zºÛ3VЛÉòã¢ä?ì è‡4v½†Â÷)?"Áž]ŠØ«Kï3\à$8aÊöœx469ËÃ(@‰Ò«B3žl–ÈþÒåŽß {dBLð&ÏkÇúBÞ$䆯ÍPõî ðã—¨mß^ÔS­XøÏÛváÎqŸ˜íhßz¿­ é–x]F§ aD 6ír“80ÈOP|y„>•3×}¥è2NÍ?Yþ1è\*ôÝígKŸ¡þS$m"öì³ÊÐúWES‹PºÅÖö•l{2ÄØùb ÄV¯‰KËË“­¸x×:É܉ÏüݘÚžËM¥åãP´­P–7¯ìBÚ¬]ñì_¥ÓGò3~]¤vŽ;Êík2?i_ú½¹-LLç<¢é+¸ü,mŸ õýk…Ù¾·x˜*?«Ë³BoÿÕ½óvQÀãí«D‹/%™Ð¯cÏt˜óEÚGÅ©hŒë¤ãÝd´²‹j\o;tˆ«÷`OmQˆ('çEödßЕíDühnAÀXÀ¸NUÌÛ&çt«QÃW×A|¿ˆ[)ŸöÊ>Z|²+”1FustÛ}ï/ùÎ\SJ~–žnÇ»\ê¥`Í©©Ä±®fðÒ*¦µüþ^—¸Ü+D¼ÄEø Û-#=#gOaNXІ†_ËÊxK¡5BðõWþà«ß:píXS\vÆ'íûwmT߉b1§¨w}ê"{ȸÏPŸ¾$&+ûòÁF‘MµÊÝL½MPÏm|+yû ¿‹ÿ|k8M„Ì÷±Ãç@ ®ß„"í:ÍùªÒû<þ‰*K…mÀ”Ïã}S Û%‰Ú0o©)úñ"E“‹l<“àPžÒëI&‘“æJ`ž‡Au3\« ÍÆiNg½A(ëšÃ¾Mo7o\’^‘ò+¦uI”þ7E•N™ éé‘«q’!uÞcá9ÉÓw»Š¯ÈðjÚËÌßøËiZ¬Ö´fáÛØ-š%Å­>.2ÎÕªCѪÁN0‡Ú¹û>Ó#Gè*6I`‹A^UÝ"ë ǪÂ뽺¦oÎØZ'õ‘æ\Ž_^tÖ9Œ?¾“ô3ÊðèŒ †ÖÈö‰¦ÒN¬ï‘FÕ˜Eã”AÖ'ù²»t#øÄ;¨iô5(8SÄC+Ãì‹3U¯Oæ=‡pʦ±àÕw>èº%™i=<_z­¼úuˆF">‚5èI£0óÁ¦òÌ3ê'¶ã4ïš¹ÍûÂæª%ì+xÇ~äÂÌVg{†fáD$9h)®›d>*ãáP;¥ÛÝ /gŸÐ ß/=ò3uj˜Q…¼¥3¶­Å]"l§gÏÔY{ðfõjÍç’žd3õ—jqˆ+/pÌŽpžîQ}à~º´Û°Lôeˆì:½DaWvLT¾à ˺uÑË‘ø@"^Ô…Ž¥h®ÄÇg"}zÊP ©Ó[Zá×èÔæ%„ ZX2£»¡Xû†x¬Ø²$ªÆÁvÜY [šMÖ=Û“Yk¹§¾ßº¼ehZ¢Õ‹·H]CKˆq‡+¿Û£ÁŽŠIÚ 5ÄR$uªèÖñ*ä/ £|ç”Æ'b.#F`Ìè‹Ä`€äôÒÿ º@~ŽÊ”cǧ ”cÀûµ¬U¨¶­=R)R*E܃ӳôð®v|rXâ”un\Z™«ó]ñ±Î–Ö Cä †„BÂ/ƒôÑÈr ƒsV ~•æ ¿h+ÃuâÍýá£jÿ/ýïú½Í‹Ü'Bˆ ¬¬Hìxœ’F4¼í¼~úrª\ (mãFÖ«ZUÔT UõŠ£n•ì žµ”8KÍûÖ+ð…Iw¥í‰âW¾Û•C®\kä£pYž ma‚ÝQ£kÒêDÑkÂÌ ¾ù0*-úÞtЉÄOêY‚/®”xà3ŒbÚ¤d+vÇÕ–¹ýݽU¯øœ'¤X£4›ŠÝÆ6ÒpÀýð[+=1JĆÞ럗—Kà~Ëjpä{v†è÷•ëÄU¥³¢±F'™²-Ib{D©1ä„Ò6§ùg'õ3Ã7¨S Ýp©Ñê›Â6M Æ •en­Dp"ýn1Ÿ të?¾áâ²·-5} »u#K'ßXÝM7šË~!¼N¶ªŸÒ½Iì ñJÒõÍlÍÑ»›BãOuÊvƒhH"¿6épPt½K›XÓG—÷”L\ ßnZÛ¢Ó0 ÁqäÔ¬"-ø1€ÒTw9ì>6­qní8nSD¬¿3„H ÒSFÐ!}3€r/èíâ=[øæ}¢XW.§­Uz„¯¿¢»è3ÿˇš¾þä¹5-óÓݦ¾×ªCûoÌd³BE+çÉ©Et;aCKRc£ë­¯ï™íG{9 -jeÝÂ*ÈðÐ×| ÞZ$²¤øÃD´LûRÙ’ V« z¶oà‘=¿KafjP]/Ä$I ñ®u.)\?wùA¦k׆put“ç˜aäœÌ@ íMC2ŸéJ³ÅÛQ¬–1l„gw>iëµ¶Ÿ‰þ–nPbe’Ä…«·ÒXÔ4f¹¼Fê {ŒNÿvxìùE\GºÊzä;M’“ú ÆÆ^åé ųMËC”,Ö"¿)ž°®Ð†õ/¤7 Уn·ä8S¹‡¨4Qóç´òÏ.yý…K&¯)QŠŠZçg³Ü 4êF;z©ŒÁþu w5±ˆ¤Öô#¡’Úaïs§ô°QÝMG²ó£º‰Ù*ñÕ4ÑËèšy{M’²,¾B\P1…ª°X3¨™}€óýßB…;xãK»—Í…qTJ^4êÛaqùÑ šŒñ-êåGטŸ´úc0êÞ›é›èÛEæÂê׺ê÷LÅvÅò$áý:JXK}àYsÀÂÐQUà¹Cz.ÈJÓ8Ênxúøy½EŒ$Õ¢ »ßà¾?äÕ<­Vb·‚WŠbá3#îâÒYu¨1"¼Lý,tîú LPqTö•ÿ1a‹¬£Œ×<Æm¦–G ž‰Z#šta*¦BY<­Ý‰†öíõ "ëIþzÞOŸB°ÉçôóÔ®â/÷i_ͩӃmV‰Ž³Þdöâ”3ÙÁÈãÎðžï^-R¹{|"b&Ž‹ž J1b¹öŽzÿ00<1ÑúûF¿2O‰@µçIPA¦a¥=¿|CølÃ,~TüˆNȯ£¥ïêþAg #ÛÚÌr_Ñ̈B¢¯ÄøÀ×5!€•é4ƒü8ù&-³uË[z&2€¯zNö³m½vX´úñXŒ÷lĦMÏ ¦ 8:hYùt%ê%ýÞ–sýUñ¦îŒ É;/K‰ñ$ÐüìÙg¢­ëÏçLõì·‘Ù2§ëÍÈäÙ¾Èßg7ƒÇ²cߎÆõø4Ïé—àU„0†WõÐÃø/ÒäP®©¸—À°j¾ÑËxòiÆ`Ý’T„Êú9_G\}©£”ùýUÙÖNtÚG$Ìo—YÝ⨾3=᣸™À<3¸oñHvÄÞ ‰á£¨o×C1T¾?FÃ×ôáîÚ›Ö Ôrõ£D(`ž ËôÖ6Òh'RÇɼ¶‚!y~fºøÑØû¹<Þ¯kð«¸æÌc¼Hvz™¬j&¥¤åŽ\+ÔÔ,4ÌâŽñîL£åϧÃ*¦?¹T&:Ç”ÔH@;›³Üßn’±âɸq\¡J;Ô°à)~ú1W6WöX2Ã/Z„F¹ÝV¥“Æãî4•9$(gáä»qC| ayb÷‘¶6böዯ2«2aþ ×*ÙŠå»pHuö´rL“•„½CágË–Þez/ÝŸ"èÖ¤>PÄî€Î_UÕwß?ÎïÃç BlÒ*_è·MøEžÊÁ¡Å°îþÂn×WÝ HãE. ÓUí½š"”´¾næ$ãi´ýlRõ5‚[6œ—Ê÷Í^oc§&¨:ê,..LÖj¿'„„p݃ÞO”MX¡›Ö¤e_¾\00É!gF'_äüW–Œö{±µËlÓñež•³WuZ*aø¶8;.7E’Ñ p‰wºP¹‚ž+ÄÚnÎ¥F‚Rc¸xÕä´¶+˹¨O ¼Ö›mßm6´¾€ÖŽ>º^ø“*“.Ä\.W‚[µ,‰‹ZH±#òi9®_os¾e9„.žHd8—à¤Ƕ¯j/4°)IG» £ гì=ËаpµÚš˜íä¾ÉR5‡èi„·Üi¡\P¥»Dj#žY¿O-A®§Je$½ù$EQUÙØ!\BE«¦n<¹üö‚/Ò0Háxåçׯ,„>Á+r—!bœµ€ÇIÇŒƒ”¯qI,±è#ty©öŠ_¤K3T áŸî–ÚGNS·Ç\d—ôè"@’f»bYOœ¥¸†wûò_b?ŠPªd»™û ØÖŽAd\ºŽmVíà›ÿЕÝÁ®Ïœ$o£ã›~3‰Q@j(Á ¹} ²üåãî }ìF/äÞƒ¿Š7é‡³É “¸¨I0¹×¢zÝ—1Ë–£Iu%¨R釬Õc9œ=ÑåIL7S£*{oíI¦€Kz“¶”çŠŽÝ ½æ+‹à¡6ˆ‚Î/%Q¹wÁÐuè8rg’š_|ó‹F°BU0„;@¸. ƒU)jQ›æóöÆ1‘™´ák¸1â°A€vÍ ë¾Öh%ŸÃhïQi– bÄ-¥hRB¨{Öû§ÛµO‰‰IF#ÎòððbVT"}ÚšCéö ¤¯èœÛýöA4SÊ"4ïk¿º­'²(í3ZBà>u•ÌônèÕ»^Îzý$°ÔNÏä X}ßšP¸=NÏó>4·"çz=¼;ˆOȳKGÝ?Ì&ýHO@БÞ)ÍM“áP÷\”Ÿ­žèIŽL¡ùm«¾u?åD¨ÃéêhÔZ~)½²üu#ÙÄöŠc5tÛ©¿5…’üK|±[~`褧…RD«µ Cõ8¦òB½úöê 4RÞí ‚hÊÒ0®€Î‡*ÂM‹Ï¥{oÄ’¾‘ž •¢¢®<)ûëâ“}‰!M>­géBù±®òÙ/õþ8ŠÛš,.Îw¢çûâ ZzdU“S%ËmU}#àmæ™'¦'“¡gÉ%mº¬‚_€î·NbÄ·J¦K}°ªß¨×ÐNMÍ&„л,ý˘͊V¹~îô bÅ’X«òµ©h)÷B€þ¯¾b‡’•µ¡dF]5¦b Q *;Òé ït²w:WçÂXSͬ}-ÃåAÍ[ø‰¸N?XŽ(=_ó ò´É?àpëõ~’d3%*ˆJÕõö¨f~#®zlŸ<Ð1­h‚>º±NÐ.hÏ=Œ©ÌCÂÿl‹YíP$¯á³Øç½Q# DÉ–røcÔ‘E]!ö;‚û[D¯y¸LVÞÉuãe£qv¹˜Ùeõë6xBÅÄ}`wߎÚWÔýú›¶Æ§¼~øZÏñ³©Ð´Ó“¯ymz+åv8¡êû8±•Ä&ÀÍ-ûZÈÏæx®Ð cO®5ç-4ïLCkÐ/ýH™Ç\n‚šwd.Aíy5u<eYgd#>,všâüój ¦í!!‹@ª¨zVŠo¾]yÏ{ªÞ3¾ü©ÂrrØ3S|Ëtôáx_§ú¹ %”!¿£Ž«ñü©*`®²ç±É­Ö ¡¬sägr¶Yí¤/Z¸öHůî“uëö˜‘¦2̪Ãt}©̓ZheÊS%ô]ñ ¿,Ó²erÂ]»‡ø#m£f""o'Û>êÛ§·Ã,|á«ÞS t璿Ьì^’©cüqð?aLÒ éFü ¢7º{‘{̺ŠÃ‘~lÊü:ðN3 ·rÇd»â ÃLk¥.Õ#b9Ýw÷¡í¹>KÎÎêµdYþÖ@óÇúë8ºHÀ‚‘Û¬d4µSv3C¼ü*KÁ.¼2„4ëù¬ï´TÍÀ‡`Åhß*¨*Å…67$‰­Dƒêh<òCΛ½Zi 1ŸwËÊ‘‹_â’+ÌZÖ£¥ÚQ'–êV!Ñ6ýI^ –\m³ùûÜDIÊöI}Î8±Ê0·w‰¼¨“dÓ‚|N‰ç%±¶]¯ k¶\ßy0j])ەᙋëqIžÏi/Ãp®£›~™(™™bÏ@ºu•ÐÙ¡P»[6A8#&EHJvS÷ûŸ0:ïÃâ0RBùI|IÄžÚ™ZôÇo¹ö5ÍÉÒŸð7P@Í ¾ØrExuJèQ÷¶ïaí¡c[CH£Zäéì'ÏmB3«äÞ ðÊT~×f¥î—Bþf‚‘Òîk(´wd‹ú¹ÔAlð«;¢±m5ièÖ»èX<»§¥´ÁêÐíXëžù¹E;~q9ä.óÞšæ .J‰¾ü[%˜ö eLÍä¶ÎM¯T—w<Án’-*#–6†hÅŒ Iõäkä7‰ÌŒõJgpc1h\CòPº0E¬©Þ´·ÐÊŸlèï–­¾Hê½—òóù…¼àþe—zX’‡ÅhæÌA±54¤*<”74¸–…®²!Fš,Žï¾è©¯š/ Y²N…¸›f«ýøÓÏ/-ËsÐ’eÃf¯êBjíõÀƒrRT.¤?<|¢Ù|hWˆ.à½^‹¶ýÙ»ŽN"Fs”¯CËÍáfSœyHц™‚¬t²äY˜æÑ{.X]1òFó81ÞQéˆAAÓËçÆÔV>ѹ›—¯•ÕÆG–ÊŽ [q–òî8d²"·"ž™”¢‚ø¹e_ùn>œ V›§iŒ$N2­G¿ëÃ-â›[4ŸúÚóy@FìÊIïÉes†ùƒ5+— S}aæ¡OFÕ{Û™3wX)±ý+GŒé )#„¯¢/Š@J{Jf(¹ÑŒãNFÙ^õ{sØÓ-,‹0ø/Pù k0iißwÝï± w>ˆ” 6‡;¬h׋·¡Ídq+’p†¢˜y7ÊP"soéå$ ‹|èSÍb‰TpjÜÊÂ}mìöì4=„܈fŽþpp~RÿŽëÐ6r/dutf³áK(>‰ Õ,€-iéX˜ž™Ò•¶286ò-8ÜôÔ€%¿v×8=ÝÚ&Õ¢­«Ég9Fv¯²´¼*žélÄùjºý±Å¶ŽãüÙ±’W±háñ´@Ý¢Ò EOÎGú£}×ë‘Ö7?/?To“ýqtBt›¯;±-\D³:‚_žÚh£¼ÂP<åªÉ:ÞˆÜÁ?>ÓAÓ]çk/´|æ©X²ß=ª€Ç¨‹ Ž• n`oþxÒcWO*ÑQà„þ2‚ô¡ë†€néËÀœl:jK“Ÿ©œæØû¬và`­ÚL.”M²›Õ‰ËTŸÖj{o‡L¤ñßå4“Õ°&Ùf!9rÇTíù ”wÞÞš¯H}-ŒRÆ2~G!ÇúÊMß³€ â#æ†ßze>nÖûŠuŸ} ÏÕŒ>õ`óé¶ÓÔ6l"•DÜ˵«VÎîns~ÖÅM¿"$w [ <ÓOµÏ>æ)ÆOõ¥­§c¶HûËk©š÷l³£ÏX 1‚XÑRÓt?dF‚9Lßì) cÝää5n+ _× Ú0©Gg’ïe9sôï§,ÌÐe‚W^8¡49ÛO”Ù0j÷ãÏÍnàp”ç ð¡%˜U&—´}B­…¸îY±ŽË{GÎ/í¬Î9Ž—d²èÌJÒ¸[Y*Q#ß ’ÒÚûñàÝ.וּ·…²CÛ4~jsA)0OãáðB³§R…[[Iq^ ãRÈÕ2+¸A‰@“Wïðõ\¶|Õ¸* Vw(µ0”‚¯JúÊiÓÔÌ *û}Ê`‰’ƒS½LÉð7‚-o¬Œ !xÝãfIé:h‡ èuçòkSï¸ÌÇÕ×Ñà~ÃJ)Dö‘¶}œë’ƒ¯¥4sP“²ÇTÛØ/ã“€ò½°ùØ |½HyÊør˱øÞØ7)ï¦ã¥‹E= ÷¥Ò¯yÚHú³ß}ùĺ=Bäîn’›¬¿'’Ì!ˆËR$¿bí<¡19M­üh^„ën›¯Á£'E™¸_c­»‚i¢Y;4/p¦öEØzê}q-š6úõ¢ù›ç92št´£vCÌJ¶$Ó(*•Ñ JGn!Æl««1ègõ’4Î^…(ˆ^5fäáe©éL†œí2“hZ.’îè›g6–û€ ŸÐŸ ¯¤õgx7ž×K7ã¾e–%PP½ˆg]Y¢ÀO‰@w5Á¡ÑÚêKRƒ ׬—¡Ápš:¿¢w.¸^Þª]°¹ù~²~û•[öAÝ5—ÄíDà¼Ñù\eÉ é_SY¯¹ör((_Ú6Áß}ÓM¹ E“¢éM÷nÅý4Zâ¼@+çý(®ÇJ»çX”žÑj«aÔl¶¼Ð³á|ee+—} *#1£”/À8š/Ò7=U¡ëR„ªß"&¬“)a_`noÊnø5B•lœÕIY’]î{SF÷£R¡\‡ˆPíOŠò6(ß"ß!»ì1DÅ÷ºµJ!Õ¹¯FÝørÍ£…S‹/²7Í”—Õ¶pAžvq„:yôÐö芒²ˆ´•Ê[ av}Ö™û hs)S¢A¡üÂ2–¥‘§Ñ9(PàºwÐʯÜb@4P†>99ÚTœÇz†—IÆAWùJ73ãƒÃ¸poÍ`Z-IÐßø‘ %^^î¥ÚúçÃrO öÖžz=‹Š–­—e¡XT×mÕã)´Û{ªžÚy!ë:¾>8Ç„§üìÀÛb8k£;ù¥»|8®äJÝÈý#ÂsûuÂ-™´àN•·0޽†Èy·ù‡+E\À†6‡®ã¼‹G“tT{nò·’'«e› OÅG¾lg&)€ëÅÂÒønÛEL* ­JøÅ ã}IaɈ‡·“ª÷/±Ž  Ùæë®pøMÊ~+¬\¡Øq:õµ4,® `FâÃÇCsÎ ¬ÅCó76v€‘HR¹h÷ºÐÖ"šUŒ¦Àußñ4 8ÍruÃÂéC~º•Ë!!lÜ¡y¿ŽF\êáù¹0óž:~–£ÎÒâaO+ÉO•BòЊÐ?¿Š7uNEuù»ýÈñ&ldâôôíöqb¾ù¯R3ç߯šG>!>ëªÑžšñïJ¼…}‡õÞDR•kJú3 ùñ m1Å·Îâ}ɽèb £j³5"½mïû´ªÔà_¦ÊÚ6W8Štkkjóiäb3ôµoîV’e$Þ|^øÒñ=”š\½ko„­’í»"¬E$‘‘”ŒÙU÷xˆ¸ýíÎEm‡¼Sòf/!á^†ˆÂN豄D]±p¿Ñg(b3í}ç¸]ÊÅí°•Þþ¹>tºM¤À!Ö&VŠÝòçZ?mä©6 £ÈDUÛ„eÞ«é ýCŽgÂýˆ3cYŽÊUD¨Ž¾¯V´²ìý·«o1E>¯‘AO¬¯˜‘™x(¶ÓCþPk<}Rc¨ë’pš×ÂÙèµ;‰óå$—ó_K]ƶèŒR~ÙÚ=¬#VÐ9ä®»/¨Œ.!Í歷/c{7o"DM†7µ:E:> ¾`—jnãFÞöŠ_ Ò±¼»Ç„Yÿ:Ho‘}ÿLãg­¬ÍÕžA^~´t}²9]ϵx›WuÓ‚-§D˜¡{yÌP’ܱ‰Ÿ`òºæÂí ‰Á½Þ ¿H0ºX®Êk¯?¥~ŒRÙ3+ÉùŠ€kÙç¶CÐs™D<âØyž/:Õ°~!Ãô²ôôɬӉ¡æS;2teOA¶>› é;ÁK.nÉUË— Jü¾¯=Ë/BýûÑî—2aüt®ÆŽh ƒÏïÞ5Ý¢ÅwBžè˜Q»Ò†$7ÄAF gÙÏû<ÀBÆÌv´ÖÆ2ÄÀ)gíPG¶¿kˆã’íRîÆëÀ˜uÂÞ ‹ wLvL,¿”ìEûù¹µ4_Iü‰à"$ˆqö„­»î'Ø?Ú@@¹@¼øqÒdì@pâÓØê±ÄW÷ Tà°áFZe¢çv‰A2f}Ïëì’¾¥ãAºsnc–,6ÖˆÓœ™ /ÔZ’Fò¾Éùf!«À‹²ûà"=f€g`y8u;Ä:¬b3LÃöº¸!cprÛÎX(·æQ2óµÕZlSÏ÷l—Úo»,ÈÞÐÊÓ4Jî]Ït¯Â\+hÝï£Ê²( _Ö½¨³¯e“¦Jo$éx'&É JÄ‹§÷’fAg-jRk¿NÏM¾/»cA)Sž†ïnI’ 5™§¦)@™QjÜžPe?SÏÓ+§0e¬ß)-LÔPΓ›´ÚL±DçwéYaæåš·âÉ™Ãoð¾@EߥÐvF¸•€Â„–‰Z;|ÎÎv¸õÍúú±Ÿ:‹.Û鸩—)w=óI;øwwH‹¯/°! š ¶åðÑ>ZÖS£ú žíðºÐÊ[ÉIËå=ÔäííÑ `sA1ˆh¹òõWèT.¡Œ©aSÏ6š˜Ó~ÙÞ”e¥» ŸK %wRð„V³)•×n¬% ª}kö#:ÂÑó¥oš I ªöz¡ÜË‘d3L/-ã-+ÑË©”ÆH¤§®²@áX4®3úĶUÂçc '^â ÍõøAüçYx­ŸJ*)˜å´À‚C¥Õó}¦HžÀVŒ}Ñ©Á6fĸxÌîÚÏEåâ+zy}Lvö\¨Ä0QıX6¼±¶¹XÙWD•º€Çg<ÜËãÛïâ*SÄNizŸâAQ锲ÝGg=¾è¡éÁ ŸÊ,À`1»7B36hÊ4+™yé?æÀÊjÎY¼N¨Û³ýx¶ qEÔGí µ©zuÕ´“iË֌Ѹˆ•GbÒæ¼v1Õr%¨.±ù,³}»(H*ÍosÉå2Ì)ð÷•b^];'·6ns„1²‚ã©ö¢¤[… n*oØÍšÁ³Ñeæ't¾\ñÔÑ%t´æÈ-,¦ÍñÎ uªAøÐLq Å•§™Ûϧĕˆ1·óÇŠIKúyòjÂD´ÞA êÐ|h¸À  ¯‰—øþtea‰Sn||?C®çÙÎÇ÷±V)ÛÕ–úµÒ÷ÍhájÁ¯pÓ9wwPP§–דo™ë’ºâˆùý%áР¤#SZUN@¤ÙðuzÖ×fÀ•y(gß•{¤lvâÖA(Ƚo¬W¿.“dëxY?Öaµó‰Iª+x­ÚÇ-7(x¥l¡3#×@ÐDZ¸ÀÁ6+«ñjØ•„ D­ßÚ~{K•(Àýµ ;­y7V±QÚ}CÝ}”T.±ãBÄœ@­€‰Ÿ2ÜkgìÒH«l$‹ŠhÀÛ$;=/¡²‡¸õu•Ê„pIÆáÙ‰W•ÃÄC @×c IRФr+iK‰€Ö$É8ç}g>•ò gd`»ðmï}\`uˆ±¥ùJ¢™-±…°·x¿f¹·H'ÿæí™ÛKeŠ•¯7'5/D“‡¤î¨ˆÅŸµ§"—ï„.³gDZOa/6åj§6?ª 3}ð* úô gïwR.ŠŸÜD«q8°ì „¥hŽ„TÔjC×Ôò–¥4šý˜ÝIÓ¡¨¹¬9ø\ºQ­¤¬6T¬ÞŠb•ÝHSé>õ}â {CÚTƒ>Ï®ê웈s¥W)´îíî ¼Ò`ƒdþ±3jÊýjP;šÖ ªSc-ñÃ**5ÉU# ÷}ÓOÞP¼õ,qƒ43¹“Xo,—«Jøp¥÷^ŠÇw¥îÏf1w–´‹/õ‰A©‡©eÉb‡ d˺5{«§,Ó-ëppÂyóIŧbïºé1P?²lL["C}W¬ËW£Ú3àY`C†ÀF‚|Ðyççf¥íG§†ò”B\j& À2®s¢Ð½P¬úŒeWþµpqHR æ~:½PS/:Ž[ÌüÊ µ¯&ÛRæ>> RÛ%;g/Âá:ZípD¦G¢E]( ëË »Í®ßÙB±µÅHd¯®#8Æ+¸•¯AZÍï7èDý˜±r°ú)’é²cÔ•²xk¼Ì‡e>º»ß >¼l‘Ð¥Gñ€Ç0˜raÛ®kÑY‹1úÊHQ¼kì]u¨•­YlÞÁáKÍnA;Ây¯môÎzG-½Ð3;mi±I-ŠëŠLºÃcž(™DÆ9ÒDøHÕK∹y(9 oÃø1’ZBôIÿÔ‘J,š“S§§ùC`1 ËQúd»:ÄË!6íÍ›E£jî¹ Û¸§ {"ø³{ƒEâGÏL&vtBsè°f=x:w­¥oÁ²_¥)‹ŒlÌÞÛ‰¬pýÌ”?ãŸ:¥´xcŠ¿½tãÇXÀÿŠgHž§òâv£_«öq»¢ôE‰D»=uáÛ•/•ÌòˆF5åR–ˆ¼Üà :‰ðmîniÙD9!¶ò³á’­ñ%C+2c»êþv‹zóF|A¼–i}/=9”´Œ#ÕW=[*¿}- jðM®¬öËFq§‹©QX ëi[‡æÿ /ÐåW&ÛS· Ì_q-ãPñPò…ƒBv9f}y§–N£Ã,5Q ìiÁ.@õãH€oòlÖ —ˆ%æ@¯Š*ûg·Ð«2Á‰ ,ÊžÃvô·8±Õ1Ù-­wÌÖëô'†’uWê ûް“˜ñ+7i_ tù’ŽÏýNFÈÙYKz¼õkå/C3uš`£hÇ$¾—Pj“`ѹѽ‘ ²ˆº=W^xÛ ÀµH3AîÍ©e@»nSÒ\Î"W4¡ÅÊÿÞ¯xošîÙñB åQßÔ¶’žÄ}GUþ_vë³oëBR5"s=µÉÉnv&(vÓ!ó}ãf)‚‰ìúÔÜ»Ý Øa¾„êC¤ôA3„@Öéib®05Í­’QÕ΋´ÁC±ýÀŽáúaÓ¾U©n®Ú†{g«‹ä,}§VD¥<üè¾ÆƒK6\9ôõf÷@ÒxQ ;’ûœœï¿öÉ‘×Ë¢ÖL··ű¬è ¼¿®B抎þE 6;˜T±9=yo±‘¢úwE‘·´÷Q:—8’¤MhÇ€îðÊ :Ñ#J†ÐTü@'Ë9ߟ<›©äXdTé;nOÉ%ŸÁMáÞœuh>¹aFT)¡vå†ÕæÁ²ùå̶cÂDeOá0ØŽÐÁÑ B>¿ø­-»Æm“ƒÕ³Q‚ íâ!ÿ  “ÿÙ±„&|aLl¢‚Ó޲‚„ôÊ‹sùÞ5û†6ŸðÖsr®v³î·M§¨æ_þ¼Ä:QÄ„8^é<[eFÌgè¢%8Àbú*©:]Í„µU 6ú•ðjÝØBæóØfãS•|ç mâ[˜ã¶³Èù1®Z!ôýãJWµ#5¿§;·|]"CÀG½ÝŸÕÙÓvƒÕ„lÝÓÆÈàiMC$±J'?»"ô7ÚñÒ¡‰ŒvÒ6Z5¡Õ£¶¦(J ëÛuꉲ—s908#îºë mÛ0ò[îð#LÔ˜R©°½AThec6š¡õÑ„ŒŠ"j`sÿlºÑÙI §:ï諳Ҽ¢i½+­}XdÞÎ7ù\\ià{köqŽ•˜‡b´ÒVóLÓæ³Iá4½àŸ-÷eÿÁˆa™À“é±(ÅÄI[³—žœ>·ÍFŠ8¼·Í2 dGÇ3±AðîWZTÀÖŽ€Îû”êÍÆƒœõ½ò¡ª(»R}W¿L޵M8íP ã/°ØÃ§Ê‘ÖŸ@³P€¿ÊáÉ–ÀÀìETÜ«+Vêˆåó]oð’FþŸKð~=@4EAb±Dmn§ñ…X!'¡ù…J èøš\ 6܇·†Å0ADùF¢¿ðø®ßï=)U€#×çQ³ëSËh÷1¯Ê:PC†C6\®E¸Ü\œ3¥÷Ð^äMWW;&â6Ìx„¨ã½ÌOWÖ¢âÀÄn -Z¯¦ ƒÀøŠÂŽ™´Zwâ|e-k•bæc©Àîÿ·–Zã/ÏÍ”cÜß@"˜zþc×Fá™ ÁµXgË[-°[2|cËK)ík “bÈÖ…aDXFŒ/*r\ÝÔì^“¼öGH‡êßtT ?HÞÒÃÑ‚Jy‚QólJ\êCu`ÊÇG—ž’ uª:yÃÑ'xŸ(q*>|Ì[Ž\çGOäo'åT8ùÒÜ×Ò§G64r•ÐZrz³!nq7²Ùj«Î‰çæ"mÀSd…m@ßZ:r¬c/y¾Æ °ÝÑ,Aa„+’z(¾à Ì!üê³A³~ößÓ¡vÃn™£ær,°¦LïG:ð…ÄÔT»ƒO*¸ö’©ÂløXeºFrè‚snnÑÍyAKÔO0[i,Rç®ð±m‹<S9U3­^ЏöÝÙÿûq ßÇt\›Ù#ïŒozõWóƒ×ö ?ä$E9„kNQ¶òsv+vz h‚Ð÷²Ó æ¼¾ÞƒN4À´€á—'bO•áE³”¥«H“I+·háü³ä 6X²M©ýèɧ,a*1g·>+¬äƺe)±1Û̸ÿEÂÛÂk3×x<ýÍÉJì׆œ;g""Ûñ±¬’Ö ˆ¹P†ýú ®m\ Ž¥æw“ÂB:ðè˜GÇBF‹u™ääB÷áÌ pÆŽ{hí{´{¢Èš?C¢Xøªýƒµ }Á’,o5`¡8è‹[æ‚R]T€È{C¢§ÆÚ§F¾0Äæ ¼Òå«^ªv»Ž ?eíª‘Tz s7Ö• ·—¦7[Íà•¡™ª­t”TÍÄÔ.àé‚ êÑY¦z²Þº–‘òåû'Ì 9KcieSã²:IÚ™ ˆôgþ»sêíþ³‡=n™”½¡³Üø¶éô5-ïÔá˜ÍQ«8†®'HÏ…¸áç)ôÜëF}º&#ɼÕ/pû Ùãç¯Þ´’ÚÃLLùÿPŒ¦Í9_,[̰²F ¦ší-] ã „Ÿ×"m)0¦¶S]¶Ðt@v9ü›> jíCo+ô!MÄ}WuNUbþŒ5+®íÛ?àz:C¿E>ÎÄé,¿íŒGn—"jزýVöö$ Ñ7/j{tkK&.¹Ç>oÃ×@6»Q‹Äó‘º89¤'¾Õ«Üx¨·N ˆÎq à¥)€Qç Ò†‹âUf,CM€-êÕªäž\!GÍŒÊÓVé¿èA¦l…SO(•*L32»Rrd ‘|z)È öiV2fšÒ¾é›Ît¿i ¼*ñ:67¤1’¿aP,—¾â/ú÷ôp;*Óš!‡Ð³C¸uËÐìÝ´ºA?„jˆ{Ñ(b=m¼‰ïÿ3Gô|ÖŸËÔÿ±¤¥òF0¸â*ÍÓ½ÊâúãéÛ÷k…9®…ŽåqGÖÖ¦AM˜”§`ò^:ó¦îÚ^'Œ½×—¾Ø(UËC™¹Ý”rW迯Pýx—`’‘w×È–Ê*/ònÄ1rÒÛyÛâËJ³X£ù”h»ñŠ7¹¿aÑ¢\É*.‚Ø#üÅ|Fm'÷Ž)ȵy3Y“ÐßCFapEÅ“«¤¡u¦]q\B‹Î²tÓ;‘)Zí‹>þ‰×­£\ä¯gGßU€ð„][Y¤½MÊò2+“ßËPføI.zΔW«csº…À{¼škèþ4¢L]Di!;αøÊÅ8†!A‡«LþÈÝKk„Ùï°Ov‹÷¢LäV—UðŽãªÖ0W'mt|ÈHþßâé/¾ÎÆn 1hô×Yõ%p¯d¨ùjâ9+‚qIS ~U{Ÿ¢£=ÛÉós~:ëïyàözp‰ÆŠÂ¹§ F¸©`Ï!¼§»ù ‰†@ ¬<¸ÞLþÔt‘à­lýâoÌQØÛçzJ]Џf(r†"[Í¡zïªXØ1ÈEàðß æPž’6öžšc…}f•fTÚ´Õ×lT;¡ÚB„ì&"C²4@g¬Ã¬\‰hneïZ)±nNºÃ“Õk5pXíH&%Îø ;í3~:?K=Τ٢Ï!û-ÒŸ|jáã×ß[´Hž£›E3ΉMúëÊ×=ÛŒßËŒXãÓÏ>D¿æŒ‰d„{œ¯žo9\3a%yv­}¼j.ÆÖ*i^"/ T¸œ.quaÕò¤€t‹õsÃl‡‹u‡Ñˆ®xËt ­•ÊãW·XŒ=ÑhrƒE?黯ÒyÈa`l›Ì]%Æ_‘‹[ƈ8ÿó«ÅÀ0·¡žQð£¹} ¹ò5‹yªâKLhy$I¢‡dúúù¡/þŽG]s "´k—²Öíq-Š6lW†çõ'œÇTóÑWlÈd›š‹qó*˜7®«%–Éʃò¢Žw«rä+ûÌUeZ¶¶ÃÓîðU¾ß°“‚XÎUoÊy÷7“%“T â’f <RK‘¹5éX½#Ñ pзúdÎ ˜þj‹{/ûAÄ™,Œb<=5ë½Ë?Šâ‰eAvxåêÚðž'|e.ÅZ|;QÚ«Æš¾oªy¼„(c@~ÞÐf¾vŠ~åèO&€–b„_¤îÁL‘&»bÎÙe`È…YÎóC~›UeºÎÖ×.VIÃã½ìIA…TŒL-;³pA£[–jMªŒLa.‡ Ý ަw”\Æó刎<0Š®ðw§bý(œ{”ë`.œ\—¿fE·j¡6fÞòx Ì»T‰å*d±u‹œ¦»#%×IDv,Z'd¯qØÈh_åef6|$^»‰G-=z\{9˜Cd\ÿ2Ó}iš»£ÊFô9áY6 ƒ_é[%ûëÁ›ÔÙi “qBAN*¦ ót_v¥ßhEµ¶¶Ç:ÚýÕí4@óãfq: \W–èp÷S%©&!å.àžôþ'¯c¢”qtƒ˜dã%$Úï½à÷„p»2f!6ù$ö3 ¶Øb}\1i#vkPýë¥0‰5Z+&çÖŸ$LÕ/¯nªÌËJ×lÁö‘ª½yÏZSÄ.“ÎÏx×X^_l.‚Àb|øM^™U2§­«)øS!/íÀLÏ ÛU€“¦ñ ¤vðExü ƒ-ï  (ãÇÜý¡öÁ¥ÌêõMŒþ£TÛÚ‰ëžWy?¥‘ÔÝíqƒàZ-ûˆEåàÁ~9rp뱃Ì¥:ÐVÌzÑÚ›c^âNÏ¡Tw3HæðÚÚ¢Ú˜òÎMCu$R¾‹:R,5xºD§J°cRðÅcZµäÛ˜-¸·±é5'c}ÎE›øÎ Øš´'l¹»Q€ªç‘¬Êo <]@ÙŠ“;?<ñ„zpбÈ$Šý„¿8VÌ/LÄ]rk]"N i ·­$·‡¿¥›¨úkðéMZèŠtfîöަné§'=²Rõ+ým%ÂFépÕ·WDAhP‹·>Élhè2§Ý{v;WEJ5G½t%H¬£òLò,ÿvàΘWŸò¹¿n/'<ú·lŲCùù¶Ý“#ïJ•ǽ’'¨I\!,fxJôT ðÅÊÚ+oO×Jy´~, »¿ÔBŽn"èÄ 8¦²˜fðMqF !zŸi:ÔåpS—'hÚÇ–WÙpZkÄ?áÒ^"ñ3¬ÑÉx  ò_;¾ß(]yÏÖð«bçôVäŸ+=¬Ê“G è¨OÒ+°h ZmžHñ)¡\Ný•/¸¾˜fÊÎ :*¯{´Æçl´È¶÷Á©1÷ÂݶBxÀ(²WÏ8Q°”}¶VÄá+Ûû› ¿Jò±§+¿¾Œ5ù«m境å×$Œn€æqªèüa˜·a!hÚÚa»ë¹¾W6pK«•í…¦Ö]¹>2ög›èý“?Êi!ªôSö¯‹|‡Nö˜3ÆH#„ªË=‡Ñf¾*á—ïƒké{.FöN:ãA2«—½ñ­iÒ«ò:–ÁŸŸAƒ˜RT6ùš؇Íöøû1/”Íðê .Ìj@Ëz¥7ùr™måê8£FkŒ?z§²¨gû°ïxY^c p‚ç5¯³×ÐfÊy0‘k7ª8çI•\Á=å1‰'ç/mõ¨OãV¥å•N²µç·£„”ÿæ=,›IëÕ”­¿¿s˜ÜÙD5Ñ×KŒäPÎÿoH¿P]Oý à:˜TÚ%ÉÏö©K;÷±¢>?Ë¥ÜnG¯þªðÁ,ºÏ+4§“>CN­„±•¼²šwžÁY&ÿnóè\‘R5“Ì Ä…Õ//ò £ä\ œoÛûá}íQ‰ØÑ8êQü=äº}Ý&‚(ïQTŒ K¬ ‰_$pBÎÓûÅÆw ñ,mw†‹ú"qRˆ‡nsÇÿfžºú±F¼E3 ªÓû9Ñà(0ÈUèmÏZöø`Ùk2`ët׿$kWÛ€;jiC#×ì¹kÈy׫PèKë3㣭P" ·Æmb*u”–,—KUÃ/q Ï_b&Òú–;’â8CC©³»êÈßfF9ÔK^Ž“Ê«,¹(«pdu¬SÓ3÷ C¢Ðå+.XV.Së çfó~°«§Ðö o‘”óWм µ2ž£˜œuI;¨lÚÕ‹Óµ¥¼]­©Õ`j<ð'FSMD“=´iá•ZX¢Þ[Q¬¥¾Tª¹ª¤%EkC¡Î"ºƒY^ÑÆ ÂXvǬЮªÙjF²¯N]ÓãB \í-‰ ]HЇmèçhô7‚þ™V÷U1ðAa'Úù'·¸¹”±”,#G8 XdXGô§×l—§Ö|\Nê ­Ÿ‹L=±ýt3ìšê ç|1ÞR£ÙÜ2ýØG(X,/½ÔÕ<éÅ|ažÂ’Û…]aÅ7>J'ÓˆR›`ô‹OŸlßeh˜K´Kõ<yômF<ûê!.¹€¸l|<3º½¤G×ÒxÙ÷ˆÔ.4MXTaE²Ž…¢Úbx™¾ªèΞ±²+ÉJ›ê¶±ÐŠéä8Õï yÌŒ,éýË«?!]íHc®n…ݾ‚oMS}Ñhh7&/TØà¼kùò Þ²Á{¹ëÇŒ×.´X6uLè"Å –TC€PÓø|ãz…s4Ì‹y7,ÊI(Vu‘(— HmÀŠHvžƒ–hѲc£™¬œK]X»<Ÿòi‚T–›6÷÷P¯Q)«76½ÝÆÛþJàšŠ6«lS$ㄨVÁý¢ëoÍÉ(ñ_â—|$‹{ïÅϾ¬×@§cÎt È×k¿K”=2ÂvMf O€zl*îÚMB¾ °§¸D¦×Ã>—TÕëkÌò²^&ͽ ›ÕHßâÝ×àâ:ÿî Sǵö°›v¥ðQ³—ˆ3$í#6µ_:ÎæWQãŽ/ÂÛøý`ñVqû ÝhvIlÀáÀþ!qì9_Ã-ÿ{ ë={<ƒQž%bÊÍz¦Q„Ë«Îð`è–çH¾ÅZ‡xœ¯·ªVÚ}c¡Ù+>/ùX?Š0À¥KÖH`? #£ŸŠ½)Ò|Ñ/…@ûcwŽAqßšŸÂØù»Éë© U”{O6[ŒdÑ*®Y\Š>…(L y¯ 'ˆç,mOäw¿VÞb¦* Æ×›“›æŒƒ5¿|â»—4±bZ AwM%ø‡I¤¥#íÝ_•ÀX•r(ãùÝÆÙV²Kªû0—ÜB8Æüýb¿Ó)«Îû´ÿ U”`û€÷x8òb”"{°ž${Ùv¢öÌAÒ6^”·\Ï^{¤p޵d|9YÙMÿ¢¸a˜ì+ú–É"Iˆ&ͧ\`ž«u'EbAm1ƒX´ž}`ñä¬%™6ßÚ æ5fÊ,Aûò/ª1?¢[ÍÙ¼ètÌ_[³gùа 0ûW-JóÈ]¹:¾)t¢v[§vZ\³áW€Æ¶9=êʦØK^hc–êQ¹ÿOdPVîol–ÞY|V=е3§§©‹"7ÝYŽbäÞ£]¡[S÷H’-5¦•å2Ç©÷¼½ŠÆ z>ÿåÝбÅ#»Oòø£ßáÌïÑ.`«#Vò´‹›‡(•µ¬”® ¡ñI:‹“Ïìj…7î.¥|ÜëÖñiíJ/ÈN.—ªwÜ\ØoîèãxkÍëè…}©#&¡Ì¹çõùŽÉÄ¡¹ÚŸ’³>ƒÄùv’;Ù€I.ˆ+¤\ð‘€×»zöL}6w½òJt–º™ua£û½TòN•¾3޹(U ' %ÿ5T—¦¯ö*ß³ 0ž‰†™ŽpmŠˆÄ¶¸b™ ŸÇ*`ðwÒyHú¡˜·ûóNkhû\vò¹á„Z轨˹‘?ùYCð9+ÁôÚ'MsìÊ¿?õpx$ç`Z’aëÑe" ‹yð†;¤:RQM‰fŠ‚èìk û뇉;g›3ðrî‚­‚“åF)2®›ýí†üÒëÖØ¡‡ÜNÃ]h9X™'xò¼lNàÃÕ_ 14ÜíÅT†€3~Q©»Xâè³&¨<ë¼ý“ Ü’ á>ÜxæÎsìÁû2…#&¾+_Iá÷žf»=®3!ŠcSIÔ«tÕÒ™‹òëHg ½ eÔ|A¬¥¾¾EáçñžÓ2äVáXÁ8}î¡ ›ÔæKj3Ü•GK,¨(O â¾^…Þfy£ ø½¥’dð!q11•³Ëlx&Å.*²³›€@…A¹äg`„U€Ì( eE– endstream endobj 71 0 obj << /Length1 1609 /Length2 8602 /Length3 0 /Length 9660 /Filter /FlateDecode >> stream xÚ·P\Ù.Œ»»Ó\ww‚{ h ‘šÆÝ%8ÁÝÁÝ58\Bpá™™;3÷þÕ{ÕU§Ï·äÛkíý­]u˜tô¹ål\¬ÀÊ.P87P  ©ÇÇx€@~,ffÜ ü—‹Ù s‡¸@Åÿ ƒà6Eü1NÓ P÷pð ø„ÅùDÄ@?(öŸ@˜8@ä ±hòÔ] `w,fWÄÎþ¸Ì^lÖì>11®?ÒrÎ`Äh‚àö`çÇ­AN}kîó_l’öp¸«8/¯——ÈÙÇf'ÍÎð‚Àíz`w0ÌløÝ0@ ä þ³3,f€=ÄýO»¾‹-Ü  Nk0Ôý1Ãj†è«i´]ÁÐ?ƒ5þ àüµ7>¾¿éþÊþMþ‘ ²¶vqvA} P;€-Ä ÐVÖà{ù ¨Íï@“»Ëc>ÈqY=üQ9 ,§ =6øW{îÖ0ˆ+ÜÇâô»EÞß4»¬µQpqvCáîX¿ëS„ÀÀÖÛîÃûçÉ:B]¼ ~[ÔÆöw6®¼†Pˆ›XMñ¯GÖ?6;0 EÄ`7ØÛÚž÷7½+ø'ßoóc~®.®ÛÇ&À[ðã–Ÿ;È €Ã<À~ÿvü7ÂâãØ@¬á+°Šõû£lû'~<|Ä`|Ôøû÷÷›ù£¼l\ N>ÿ„ÿq¾¼&rªJªFœvü·O^ÞÅàÇ- àæâˆ‰ŠD„€€€ÿfÑAþªøOªÔÖ ög±»ôŸ‚=ÿ:¶¿fƒðß\Z.¢ØþÑøs ÐúñÁ÷ÿ¬ô?Rþÿþ›åÿ¦ñÿ-HÙÃÉé7Ûþÿä qòù+àQ³ðGýkºQa!¯ÜoÓŸHÀ+ÿ7ðZý¼í úÛÂ÷¨G^ðßPHÀk ñÿËÿHù|äsúð:ÿ‡‚×åŸÕwæ¿Üü^×ÁÇj`ÿ‚…Ãÿ©øˆ¼þ!ããäöù‡û±_0ìOÿí¦µ öxŸü¡÷Ç­þþãòƒ½ÁÖX+‹.ÖááÝ7õrÔ^Ü{ï¥æ˜÷Œ3Ù¹ýV`=wxèiìu¹¡°+¹´ñ·k;Jl—²«ô?ý>w4£Gu¦êvý𿑬7³×…µüldºô³\Ó0-& ·ì¾ÿO7£GäÄ>uæB7Ql‰+®Em©G'üb‹,>7®y{>Õ{þݼ„(ÉSi§/£åôŠØ4_;Iãû\Q‚µ…Xó É/ñò§¨þß”±BÃüc«QÁ•‹J\”ù?ܺ‘È¥{€ÞŸÓu‡±š } :Šˆé†PâŒKPú˜Žë\ÂÛQvŠ‘È¤–×\èøBôêGÅ_÷¯W‚Îm€öCK~AA’Îh ü^_' Òï"I#ì„F‘CÓǾ#`݆ÑP‹©„ÚÇN=Ÿg—П¡À°é«BRDX$× sãxyÙÇL±#éÅÊWèrn¡¥èYÒ—OË£2Ô¬íö6ýþ­4…Ìw.çOžþËTÍ zöÈ’ãmqß<êÌÙ?‘äS{¢ýbÏýSi×ИòµGýàÎW2«M‡œp´È›‡Ô”¢“¸Î:UìÞ¬w;‰,üÂ~–®¶‹öø1ä×Ó÷èñ”Ÿv§´šUÓÏ»´Ð«ÏñNédŒ²+fɽgsLÀ߬©]!¯'žâ dáeˆ¬½•ÑÍd!ËD2šgÏøUÊIã¬;ÄJ,&¼µ¬&‚V ÝcUÌEša¤7–œN´gßrOÛ|2—?J'™Å•M±+ù´~—{Ý8c±ÛVi‰–x)F–-ÄsIã ‹ëUGõ®Ã(Ù_›þþ,@ï`ÚntO,°îÃüÈÉðŽÔ—¡Òœ5 &óC†Ã–~ãÆ?iáj†­XéBe`¤Oµ ‡ê˜è{þº;\¢}%=¸¾£ž×$WÀžÿ>³*Êl­«š$›Ö0fPê'ªÏ÷x ¡KR×W'íz†×ígÄ,£ÀîÎ â¤PÖtîÍœ7¢Äi3pµ9oŽÉ¦-†5;z=d Õ`}š* ½#„¯†›Á_dœ^Çk®TÏðÛk~ä!‰0I¥¸kõšN b—é@.SÀØ(L7²"±ØvÌÉs©.Qm‹¥ÕÿŠãw%^…¦ÿuéæŠNÊü ]´aéƒõTíFñ!Þx…Ó|ÐVªð¬}¶0ª&ÿÊFˇ‚$:zÓMOËìm§nfv£Ñv<ç“Î¥ªÎ3–Tâ$š½a¦ ÿ…kgf$iƒžiÇú-Œ#˜GDý3YMhl›Ç{cKf*|]QÚ /;Úà_ÝØ6ehíkN.˜STü?qR ·Î/=ú…·3_2S ?3¸dÕ»ˆ¥r˜E(pYä£Õ¬„hüJäD8I×þÕÂ;iy-v0W0—°GŠ@:.ØžÐ\¥Ž….órrŒ©êh¡^•S.9ÈH¦¦ûŠò\r]-㇧¿äWaôy••]Yx¼›IdœôÖx¢«y s=É…gÚľH_³¢S•\ÝÓÕÚ`Dzá2BŒôtóÔÎì»Í§ä‹¤ç¬é”Ÿ?¬Y:rà´²Õ¾1ÏÄÒ[æ6`Sªù"§Î à.Ž æ+>^+™ÄA5ýU9¦äÞ¬5çÜlý¡ò”‡çã­4NÔÛè¹³\iݾ(–êôQïڽϓ¾ÐL¼¾èHG…Šz[7cî•´ŸaÂn1.è™®œ2+ü!RKû˜bõ‰7sBÛ Ãh»‹­A½¥Í´×Çd³§‚Á¼ÎwiMv‰§5øÍ-)ŽÐׄiîÄTEf¡°Õ½£7»Ðò:^:ØAy(Á¡ÝTsêKo@µÍq_z¿wá¼ÜOëÏÙÓEÅ÷Ïl>±…sˆç߸ÄÛXFËiÞéX…ÇErCK“£Žêà()æOZÊbFœìXÆçÀ5ø‡éVB6Ä3ÚJ˜BI¸ †öw”Ÿœ<ûĺ¨_°#ÞÎSN2¹*äd|¦%àœdk×LÀ\è^Õùaô2EÛµhbn­`Ù¹P¸ ÌIj ®ª~&Ç6Ìz”ͧžÍŽCUGüjNj*£äš°r#,Ž}^w{ÌÊþî…à moÀÓgEuœ-6‹ÒÖëF/…Gˆ€J¦#p®±Ÿ$Ä”ìÕ+dp@›¾©f®@Jøš"*/ô‹c$<Ã{Ú#K? ôIQçAº³ÌD¢vùñ‹E;t¥„ý¬Ršô¦¨ØñÉf­—Ì€ëàVóÃTêàÏ-xKíÇ~†|€î¹!X£_Ù½ NÊWê¬ì™9çrkrO¬ÂG|ߎK(¡ÊPï‹amßÓÓ8.–…Õ#júúçT#5Ik»Šù4ä뫦‰ž¨ï6"¶œôŸÿfŒf‰ˆ4r[Ž®0¡ÔÕhzn Ó“ù7E°¸Žǩ6a²{µ™Ž2Kõ"Ü ²…Û¬$d¸Ì»Ð_—¿ˆøòÊ…oGòSW%&RtÍ(î>]”·f’ZŸVÏE“¢Á±é"Á-Îì ÃPÛfh*Ä_›ç@IÌËJ©Ó}XÝ7ik1{¬™¡%›ßî©tñžD¸‚`ó㔺5,“¾ãìc²1^ãÔ¤xò”¯±K0šò”v@[›LKîÍ–”¹ÔWc ï©I6Tïæ¡‡Õ|¥ ºúU¸(9A€VÁÅ¢Z‚âDø«”̘¾ªì2ú>†$Šq¤uÔ`FóÄVe’¾áþä%bþ1g=ˆ$æë·0pôó0ívÊè!jW¬~.‹1©Ÿõ"B-ÚǸ•x›Cå-¼YÆÖX!¸{|©ËB>É¢MÔ¼8‹hF;uå+åƒg!¡yÊTôOdpt¨÷Úƒ¹ÑS9:œ¼ÊMÁPö¤1ÐÇ<=Yæ!@Îú¬øj$áÂ44¶€8ž6&zÑŸHŒ=·goÝ&‚¿Õ¬ÛmãhÅèí}å5‹Eê¡¡0K ÖÖó—“ßKï© Mc—ù"ÜÕ9輫ãr0>yE¦·Zë!Òì†û¥ëÆÁÙ +26[ €aí„R –þ™*‚yD`é1$ÊÐ(ÄDÕdRqkh˜u¯=!ð±¿ðÆF:“d^ÛÖ í~º ã_¯/} Y„‰Ì F2Ó{ÇÎL –‰¼ü*ú®íkxpCÔX±cà‚ø¯žÓê½FB‡øíª>i´Çf‹@,¤¶ìÆíå^LX:Žè™"‘½a ø’Cq³Of‹f€­™‘®SÓjùÝu>ºÈÒ7ÎïkNn´7NÌwRÎì¬wä’ß$áK)bZÙ+“Njª´…ŸÜó¥¾»ƒñë'·'Qȯ‚JùÔßW¾áˆ_ªï{£a–Õ6ïÎamw)»èìhëY¡ úib”8<WÌÀÕT6Ñ‚0lr¹<¼"âÚVÅßšª«QÕ$ÒXêÚÛFf#{À®g>ð`/³jæá*óä‹wI Åk_ÆÅ·é,§m CmÛCK^Ÿõ bÓIù°‘q%iƒ‰ð<8Û¤ëœ7(ÀýÆg*/û+ÛÇ1¾˜¯=Àþ]÷•Ìè!´kÔ˜ý òƒz÷Ñ\Ÿèç¥ä gê…ì!,ýΚ1ÌÔ(;…“}èÙÏQäú>Lž‰¸*T–h”•©Ëw/¯/sôoKœ„%Âj0=u¶Ù‰Uêîwöt(˜ñmÍ™µá!A‰{;N¶ÝrŽèÛEDÒã‹[-ô­²Ñ/¦ÛwPßœ“°T°£>¹}¿\Ÿ·øƒ³ˆœi<‰ò"ë|ž¯'ÊwKs…£QskÎÃà™¸ÎðfTް‰Û–Ú=Mj`GwäuÑÒó©±_h.#ôÏÎ;°Þp•˜uŸ£•¬,‚¿³ÃV{WÚÞKqòÁ_´Ìr±¿~«Ã¾zþ¡<Æ1G¸%háºÄTˆMcèGË×Z1*C}(ˆ‹¤r[-Ì*ÆYjOú»íÄØd¢­o½8¢BžìdÚ:æ=÷ŸÕÔ»kã¶Œ£Þ¬Ãy#!¼¯yç?\0hx|ý àQiÖàtÆæÒ½ò€6bG•处ÿÅ+µ­}`1œ38.ÈõÂfµÉĉ$QÑ㞤8_»ƒÎŠ_ \ƒ»Ã^ZºÙ€è}4ñí;ÌP‚ê¥=×#-B+ôÉPšÛÂÉy‹œõ6ŒÚaúÞ@Œâ»Nj9¬®uåÂÜÀhƘå»i¬« UŸ”Š|¥FüD6ë˜s›ók(<Ïu?´pC/W²¨œ·ìØÌkõürç°ÑSíÓõþ8R6r‘.Ñ:Ñy¢bÃüñùÇ÷ôb{éÖlˈäPüz¶@fÚÈö±qi|¬c§4¤¬¼¨Ý–“Û×W(Ÿ’ß° ÄÚ{\"°ôÐÉ!F2Ä…ÆÏ3ß%ˆY?×ÁaTac\ÇÞ®¼ýyÙ¹õu¼€$m–Á7…&® ƒ“1u7˜ºdµ=¬Òh[56+år•²%žOeµàZÕ;vû~÷‘AãÔlÕ8¢{÷ «~ZÕ€BSc¡›8V(²˜˜7ØÍ\oÎÏW¡9ªSÆG»S‘gŸsÓà‰å½%ã2 sÄ19ב_.Gz…&Ì¢ñÓ!¥žïŒ”-aÌQ:ûƒÜ§TVï(+yɺ2‹Ù®9üÁ"Ï…=çelu†äÉÚ^ýF¤±·HRš“b&´fõ¶îäø9µÂl>3n{"( c*]¦˜}çÁ/z?gª¥ªHM»óö€Þž‚4®ÄŸžèäé´ÐìK!¶§[w¤sÒœè‘aœ‚]> ²¤ë¨y ä¾™=£oï~u‰YMËmyO—ó*ùt*™¡¬œÛÿÍ¥ž‘&LÓ†‰Ð!þºÊ«LUÐYÿ•™Ç’çê ÞŸŠeIq:xÕœåÛ³àC}g>‚õò6ƒŸ@owIÖµë‘~­DRx½õÒöàнÁsDð¶ŽÍËz0*™«V}ë&ZÏ?^:M(pZüþìl)h!ç¢8Œ'D?sŒ\–¿'6ùùÐŒyž•ñFC±Öz™ë )hð0Å6±Û)ñ´kKI1§ÙýP&~ZNK¸7ÿE—Eªd!ùd{2ϸ…™LÔ.ÙYÁp¹M¢Mþ‹z'Ϭ6Öt£’ˆÐa$»Ùÿ²® ýؾ‚$©)xzù¹ËîÞb0gNJE6‰Z³r_÷"VÅecoÃRÛ&&Η—;~ÿD¹Ê$;Yý*…;/ñi£“~¶Íq=bc&k Æ®øÒDÇ[o(ùºñÉbKá£X@³àÆ ¬JÃæÓØÓTŒ4Z)ä­9ÔÓ¥„|îû”s‘¾/§zrÚ±¢Ü±¦“L~q˜ñÛÚ@Â7,~¨ßxÎ1ö[â1q&K¶žË´Öˆ¿9ZX|/)sœ9Ÿüd‚IšT¹<ÃÉ:L“½ëd¨ß²äªð6òòò•—±gHO_c¡¶«[—ºù7b/‡­»Z¥»mF·îHL¡y ÖÛ´[ö&¶šfvð½ÓÅujtóÌd»ZŽ¡ŸÊNeI—¼ÏÓRZ8ãŽK ÎïFÿóÉ’º„ðàmSþµÙI:¤Âï¼ÃxKéÎUG‰òKÌõfŒºê´tgnº™s2_í¼6HòÅA9áj²±ŸÝ+»šûg"M'º6/†×9¶ßéEñ¼È‘_¢“3»Ò#Wü$še%müÜot' JU“"xw7}ŽBö ryôr㊛×9—°Óºî ·G¹±”îØS¬ ]Ž“}|À™0Ò ÚAXŸ/j#]V^ßÁÚAøŽ#™1Scfû"ƒøª KêÍÜŒ$ò¶Ñ£åô »ÆrëÈs}aC¡‡#Œ™~VùÎ%ˆÐ¶9¿úÊBJ÷ÆÆ­ÚpŸ-›/ ÌÖ¾D«q|qù+yeo}ô—Y×x8$ÒL7‰báybGë".mëIéN—ÅdRÀBo,Zˆjáû¥·P¦zîƒ-öc¦rqêXyt £l*•§RÔXWîšÚÜG9ñîwUaMCTjn€N´®Œ »sÑáã—¨ìd%”µã–¼ÝQé)&?D0¨ýŸFQu²›„wŒŸ^V£Ìåô]¨…²ÈúIêù²£~`–ûÜ6·8Žeñlµ`au@5üóZµš2m­kË«ô¦Ê—ý óîy ²ªD|¬‰Wp‡ƒ ‰6›³}“¦:–Õ7–‹bëhŒÐÆîªDÅìü·üª(8ôu(ÎäwI[„¢gS ßúüN€³6M49ãÎëÅk?maŸSb™æ€+…tÚÓýôúbÂÙ|Ó¯<‘ƒ’q¡Íï¬ûŒŽru}Úds~óû—”ü bž‚¡õÈVxÝ)R‘ÑSr8I%Cﻊ_#4´la"DÑÃþâàªéáÝ–rš–,mï ~Ñ„ÄF·ÒµX\£ÌG-.y¯ÅKécÄC}€–ò3nÛ¯Õ0Ä•Q£—þî‘®‡ô3o¾y‰ãgì¼…Œ/ÒÏîÚÊ,…h^»Í£×6Ù‰,Pž²ÉKV8nSféNhè‡3ÂDõ$åöaær^rð‚~p¼$ ÉÝp>Çœ}à­|_ˆº­É/?9,LŒ7>ŽŽå |¢ÀÔ»”BöPá(L•ƒJy ÊšÕädêºL×óZmÕ¡ Ü)-å*_õ³Ù†äçwüB,ßnÀÈ[Ò¥ö¨®û66áÞZÊ1ò[¸®ƒ(‚Ϫ$j(©%î©›DPiÉ-™o¦!Aé/›zš×Ç hI[¸,iª+¨'˵ˆû TQ?"tž¹yž\Äf2ˆfÓõ LQåX‡õÖ6 Ô\“n7ä#¤?K´Brý@ 3ªÍwFk݈2® AàË,ã¹ôè!Ì©½µ›Ì2U“Ñ¡Ê$êï­ÜX7äŠkÉ£šÇ©fåBß•=¥$&ì#õWµ¾ÈHgú`—5þ*ë:νæ<­=Ì}•ç›x,ñ÷‰ÇR–Nt˜l8ÌhÐûêö0LßßV¢ÒÔjp¬sø)6~XÞ?2_Š>-‰½ÿ£|ŒƒSÅÙ \÷¨èÂ?UØoØl ²mžé¾Þ:ªÇã! ³#•/ÈÙ彨J>[ÏEqœ æã(À™ˆ68K:õØFI&*Wœ&"´_ø,Ë ÐªZäf˜,uï.0e/ަs×Á„UV˰Lý v)#Ï™Û/v™òÒ¾ª QÝä’ü0ßÏn-|Äž±¥Pb Ð"¸ó6Ôdƒ??M£ýPðìe¶ASØà:®Â%SÜÒD„#0Ut!w‡’‰‡U’¥¾¹ÐJW¾@®ÊžJ$æÌ}ÁhƒŒø‰OœÆí‡I—3%á;¤_oNß>Qrí~w³oo”VùÛ_ÍEá‹/Š “\jì´Ã‰LÆÇ`Ýw''Ø©JÚMµÜe˜µ:Zò¥†³££ŸŸ¸šÊOîËÚ3kácý¶ü…3ËLÂU(cœ>–ƒ„é1½ßÓJ iœòoù5“`÷©ºù•ò8£ì‹ùâ[V4 Çë2Ìâäû´¨#»p“=•YüKµæ]Úç·¯AÅ£X“è/ïìùQ›óÉNˆh :j¨?LûQþ Þ{û©ÂÉDÖÞϧ ¸®GÐÏGmcL½°‘ÕŽÒSµŠó5yz’6 É|v ¿ìM¶âe–'I㪅\•âø=³Þ½Øí¹ÖÐgIh½=ü±[÷A­M™•`+£˜Ðy…6úU@Q}VY€.™¤””\•:«Š»(U6ëYÍD[‚ÔW|k{ôK:5åè¯õÔb%¬ySvfT±ì\(•Œ±L_â Š]Ÿ™vÉÉ©±8rq •oT™ÒyâÊæIæ¥ÍAêl`r1ußÅ£ Ñ›-O²—‹Ýkô¸M5¡¹MtÜ!ü jvT¿RjËzÃiâþñëžwþ%„ب£ºñr€1ìÓPd}T¬x:TÙ¤¬¥Ä`f½„%í‚TDuĹ8UU ŸaÇBD2 £ôƒiáõÈé¤À€ÒÎd°õCZ°në^3׳[sdÅŸ*ìÃÚFýñ‡5jç8ï)âRËÊgÁ»tB ¥ÂÙÁ‡ïŸ~AëN’Ø*&§¤Ú"FëÎGtví°7û15œÌÒˆtÐ;¦.ÿ&ë¯kLv¦‹«öOð`ЂÊ[âÊT`*rãE hŽžL•^ßc>lÕZò%¶zÑt¼`ªA*Ô©šYù\|På÷¡+æ¸\qTò‹JßF\â–(®Vß++åË—lªå=ÛõȼÀWï²Þêó‰y],ÇÍË~.e‚:Í_ØÃൂ?Gò¼ü&³r$šçs¨½Ãì-¦xÉ‚ Áã5–J*8 <Óy—°™£M<‘‚" dËÏš:%^•þK¾cûþ‡ò½ÞÅŸZq.­0qÙH(õ'ù;a0j¹#ÈØ¨ô±ü°=‡i endstream endobj 73 0 obj << /Length1 1556 /Length2 8393 /Length3 0 /Length 9415 /Filter /FlateDecode >> stream xÚ¶P›ë.Œ/^¤X°â—âîî.!@wwwŠ;-^Ü¥@RÜ­¸TpŠ[¹´{Ÿsö9ÿ?sïd&ùž%Ï·ÖzŸõNè¨Ô4YÅ-a`Ô••ƒý5@RYƒƒÀÎÎÅÆÎΉNG§qµÿmF§Ó;»@`Ð×ÿt›»>Ù¤Ì]Ÿâ”aP€‚›=€ƒ ÀÁûšƒï5;;€“]à_0ç×)swˆ%@™  ƒ‚]Ðé$aŽ^Îk×§×üëÀbpð±üIˆ;€! s(@ÙÜÕìðôF¹=@‚€]½þ‹‚AÈÆÕÕñ5èááÁfîàÂs¶adx@\m`°³;Øð»a€Š¹ø¯ÎØÐéZ6—¿ìš0+Wsg0àÉ`¡.OnPK°3àéåMy%€ª#úW°Ò_,€¿gà`ãø7ÝßÙ¿‰ Ð?Éæ ÌÁÑêZ¬ ö`€ªŒ›«§+ Àjù;ÐÜÞö”oîn±7·x øS¹9@F\`þÔàßí¹€œ!Ž®.l.ûß-Ó¬\\VNv€7€[à÷ß,jæ¿«`ÿOª<Ô ø«Ø§)ý«`÷¿ÏŸáïÝ`ü7— ìI´`Ã4nÄÎÃzúâøVúŸ”ÿ?ÿfù¿iü ’q³·ÿãføãÿÿ¸Í ö^O«h öü£a s}J<µç°‚9£ÿ>Q>Ðü·é/$‚þ~×´üäÁÿ€Ü Í? ù|¢røäx¢‚þ>QÁþ9@ÇÀ'fçÀ'f—@^Ðõ?ó‰Êëü¯Á€ÜœŸ®†?Ò}šÚ¿ðŸ{ öƒÐ—æa ÁPÛúÐÎëZqRÖÝqáº]Ý FVŸ%ç.·[,”4ÆšœàuçKñ´Ï}8+ÛÒ bË”>ûm(í)êw¾÷¦IS»è‹“„ƒ%ûâ ähd¬Zb_}œ|u‚ìÛà?(Ð8¹ñc©á_{ôËz6 T| ŸßUÿZëˆq_1ͧkT:KWh‘;GLìÊJŽÊ„wâ‰={q9ƒ—?ñH©ÄŒîwÇõÖÇ`ƒ3þfÎ{µJ‹Ó¥‡„–Ä€˜ñotê•Ä÷7 D >eïbpZÙF8‹r¢Ð¨Lv?úØŽ+ö¢H\nD¿ò‡w|½ ôCF=ñ–é”lDùª¦/ëÙ+Üî NKýŒËBÀ1¸üà{=çv¨0UšE±|>ÊÞ½ÖÿÂ9ᵎA^E¢‹›§æbIo÷‰u‘ô@”óGþ& }\}¬½uµÑ4Ù墜g_Ô2ùº±W³{¿¦‹˜Å˜¢þìì Á‹ÄrºŽ—ÑRÞº›Ðy[¦,‡°I³³0åe Û• :¥ÒªÕÛL¿ò³¶sÈ•Ã#:xN˜táSý÷‰¼¹×;¼!xÓ÷j[wnï‚;èû%“ç–Ítç:wD¹¼ÇÇçÃÉByRüó'ú\:Dßݳ>M½§`»»‡M®Fj×+Ë|lf¹_ßûÔ®ÛrÊ¢Õ0Giñ ÕlmXË ™”÷—Áò–L^CNLˆ±bþ¾øK(YflÊU`#s¾µùø²ÆuŠÐ‰ƒl`.cÙÌfö˪>Sq8üÏi¹›´õÁÏ鯣oÙÃQj.߬ëj:s–=¥52SÏ{üŠh­ŬÚT ‹XÙ[æïˆm,ú}9œ°Ú 8ºN“ÞqZù-¿º¡í÷@‚"„Îë¯Öß(ºÔ^Á\&bZýƒ~F {—SV#®ÎÙŸ% b<¼MIò‰–º޾Áv_bùü\€ïÓ=ž¿X+J 'ÓxÌXáå:ñH|W£07zÁé¢ädBîyéE'¡Jo„ù…´¥ÕqDLt‘ qîœÔ*>Ϋ—Išz;Aê¶6e G¢,–tÀæë®ï¹è¾/_÷˜¬¼¸ñ6•÷(^´ »ûºP}O'”ž [#Óe._;q>@zË;3îâA5‘*GŒ§Ê$ <[UÏ™ˆ–‹• -·ÈÖånÅêêi~ôgzòÚoáý‰Êž&ϧõ–? N·Ã:.W&H•÷‚ÜSï +ƒsº–N„ÏXgc«–‰¶°Ý¼B?eWŒ¤ ²P„Å–É×’ÕôÉØ b^ióÌ/ËU}7òM<„!Ý \íQü¸ËT4¢›Ã®8"®•Y‰Ñ°*;9r¶¢5rœ¾cwÌ·ðq–µðݯÄ_MªVÙŒuˆÚS’VÒül ÏåuÙ}Ö¶>Éξ; KýŽÖ„/Qw=&¯AâHcÓ±ŠŒ‹µ÷aKÑt=ââƒòùå’¯¶TôZfå\ ÓØ!ÓÀÒIï´š§Cw^­3ÅÞ‹Íþ  Þ°É ¾.P  ¦ÇµgЕ¿î°NL =ÄäÊF ²÷³±÷8‡RK°Ìð{1G7Åܶ¸|·â[|uŽÓÚ;¤µ`‹ Ä‘YˆÆæqÓà/ÿâ‘ÑÄXGzRd£Ò–ò<¬e Çñ½ª$žÊZdkoD¾Ä kY¹êÈ I† ø¥™»åÆ06ÖB9¡ Ô1ì(þ)…µ%‹Å†ÙYO"ÕWGˆÁaŸô·…7pïÄ÷ž{¡´’¿è˜È8¬D …RÝÞ^#Ç–fÙ²]ßíJ½c`/#^åÓœâýìx\å¯iÜEµ£î»¶–™/èà{xw±¶>¦Ñ#3%mÀéÃi|Øâº+¸0 ÿᆧ¾ƒ;°þ¨H¬Üc‰n1šÙÕ+Pßê–墥o#_¼@áfl¹Ú'ô“›¿zò¢â"!FøWqÛež[›Þ¸°ìlÖ¬åÛZî{›¹—oÍhñ"ÞÍ|Kyô¶ßäIY¢h!»°ïÜwSÛ}ÝlË3£œ%ŒbºÕÅô*Ú•Ûat‚ÃÑgËÉaÌìÂÒŒLŒjéK†ÅÖÂöLóš«pg7Ÿ<:sô“ “íÕug½˜ÀŒ€l8NÈG¶¢¿Ù©’ÂQÌ_ÒVÑæpÕ?³=g:qÃÈqXfNíÜLe0q©V©*—ù€#P¼ëÓ_|Ð=80¡œÞ È$66B¨u)‹OlÏJÑa©ÚË‹B”s ƒ’¦=ò. Ðu—gó.¶Þ£dV~«òQ„žÒ6uHyÆj!"P2:ÔŒ¢ìÁcª?ìT’ÚEy‚­}³µhטê˜0+H¯¤÷3&N¤ÄMö,éѤ_âôÊ?&8YxÓ]æÜuí´}øS½Tsþð°ñ”nüX¡NröãêOy?¥ž„(MÃîê[Ŭõï)eÜ JýäG©{Õ1éøùl¥UÔD|ìùöé¶:‘íÓõ`ù;Ïá^¾€_t2<`¯¶¦&†Í 9¯ª`×ÙÂìÄ#›Û›2)§¢Ÿ'„n4Øý Wù²g Éj6Ú=À¥ýig\SZ›Ú›œ²øH3#Còß(U.ôCÒ–ªWÌÂ0®±¦²ì_ædò½å5åTÖ%z¥@ë;¹@ÏÚ1¶Tq$—£QsåÇE;PÙ:>cÞiùÀ†Ô.T—×ýR}}‘½ïŒðÇH%²îBµ9d›ó•0N£'†ÊeVTD÷>}¦‰’›"6ι?¿yh ŽyÛŽéE6C¬™d )B^´|‡Æ´#GBÚ;O2쪵Å Z‚(‘>áARqÚ9Û“ãk;ZZ›Vª2gͲ“(–ª÷…‘¦·7[%ðÎ’«¡ÈÊý3_³ŽÞZ¢Í÷óšXî‚¿ëÕ–y ÜÐäÀO}wˆB&­¯’V›Ö—HV>æ³Ö0ÀÐK¬¬ÅãÂr âÞ¸ÑÌó¹Ü»*~,fFJ¿d”9d|ýŒâîMžØR4Žgmh]Æç»1òoõØ/Ê×ñRK#RAHï«›‘ÏQÅEúçÒÑ5^…dù t%„Kjv(÷Ôµ_|]Æúþ왂A:ÁДÐKYUmn[ËêÎKþÏRd»Fj›Þ–J®­×éjÍéC*…|éWœÖ•ÕõÚqeß‹ÿh ¹$fPfƒ÷Èñ‹å˜97§ÿ.ÄM Råϳ—¦”HëÛ{Ãu·õÆKxý|¨+¡pîÞÝ EZ¹=ê³õ&¼<ñl«ØgzSœ[ïNÍvõ`RK:&QuPx¥Tk 9ýÙV/¦æóH"ös•œ²)dIѦ¶ Ì iò˜&K!¡Aå¤Íï¾|ZnÃVºeÑ– íÒÇ èÒÃ/ÑÏÕZÙR‡g¯jVe% ú í‹SùÔÛXìÙ•u"îÑ£ÔF(ˆpqš2n \ލVð˜[=!êJg£Ï,¤Úy¢UFjÏV’=¿ h£†ËäÓy!†Ù:„Bb9év¼ÍB¡EQ6˜¼ž@ë4$98|Ç’Çh!h>CAB[Ïß qˆ!ˆioaúüøc{Ýa„âbÅ&é™Å}æ;Í}¶ìoy¸G ð›sgïæ3¬7¼•¼Id³PÉãþõBÓ¾ÔAf²á+¦¢Îü œú³dŽèpu•Åû¿üTh‡Lx‚¼ËÃW‘C·ª:¼¢5tDw^M’pUÅ}=·ÄÞÕ ^â5± |‚˜}:´tÈWÑ/ògáâs¨çUͽÝÛÈ/o;¡HÕp§ñ§Ìðü\›.cw³h`É÷Õ¹ñ€pe’dír#ûN$sþ€Ô‹Á¨õs’Â,ÿ5™?…‚ cŸw=¥ÌÔ=¬ÊßtÉT|i½© aPˆ£Gô›ì>’  2»?e<,î¶z RÂÞ¹GaÛF5ÖC_O‚ä½qX>ªnF0å ‰ ’Ì®ÇòÚ¥Ô¤ÁšjA ÔÔ[ìÙ/‘³Ð‰ (d¨ÿy[d/AÉܧc÷ú~Œ•/«5µ·@P?÷PâÒL°>2»åÚÌa³Ì]˜ÔÜ1sçòS©4F¤NPü2±½@‚Vï0&Ñï º²¾f¨øÑUŒ 1?Ûõjì+h8M6UôŠ„0rÝù¯Á­%c¢‡…ˆ×ÃÏdù¡·RN©[ûÈ÷ÊÅø³ê 8ãYïM´²gš0?ÚZýœ¯éÓ^”vÑs)ÑŒáŠZ²íSÅ+êY/g¢Æòr§‡¿‘{ÞÉu¿dyVÝGÍXÒ̰—o¨®$_öAÜ¡Ø`~Ç9+•ìhöe:îq/øÂh¦æzÊï}²&qF^§Ï!ð;îÖ=Û×סr­þævÂÆò\l­âRàêÒ<‹¡%‰û*² ½üulx©@hÒ~³OævŒx'²¦ƒnÃ×ô@cê˜gi÷¥ÝHš[²e›Óœ~­{-½ævÌ.r…(ÿô[n‰ÈS§¡ræ /»b+’¡e¦àCÿ¼'*õÇ®NüÁj=n§ «^c{5ÉC–̃é`¶ò£{ˆùÇŠñè(áýÙç̹Ás…P~uø÷ü^jÏzÇnO±iwžaØ´º§ÐA.µgù²’CŠpì•g×"Œ—äiÛì¤j·S1ó$QÀÙ›¼&¼cÅqRÄ7R”-ŽŠ%Déï™ÀQÚí0õZ™2”QU”ÃãIC>„[kø­Œû“zÍç>AÆ©›cxfCÍâç”Jb¤•4l㡨æ{íE9 ªRøH…'ì téžüI„¹Žg÷ÉÊÔ‡ˆš øNÄ?Ruk3rÄh¦“~„y«ˆW "…çï77úDZ!šN¢.Xˆ{Ô>õûG¬ºÌ4­ÒØÈW† q&èsc‘Ót÷áBÆ¥VTrb‡. Æ$û/?Pv#q¿ýò+Å­ðFzÖíB~Šbq~ù¥bø/ôãðÃñäJŒð‘оÏóäs¥Q×/Ó@UÂÉF}<¸Ç¬¯œ^eÚܨ«~ƒl§Ž×þV¦Q!ÕZ}µc—¢K;“±¿ýÞ_[%÷jOFj1cãY å[£dOÂÊ¥A8šHš‰"ÚùF¿fžb&ž ¥jù*¤üÝ–ÊyŸr¿ˆnŒºƒ;NgéŒî-MHp‘,t,oÄVÃáx–ÌæÕç¯Ê2Fp£iê³ šØÙ Ljt"'=ŸÞ¸?F·òAg³@ClQ=ˆ×§¶3ßb£Û{Ö½öp¶ï¤»˜äHeÒ Ly.ͱØLLäúÜ~Õeu72P¶apoð#_á•/ ’§/JÉ -£?2:®y×òfë°ûŽJR–¥#j;H/e£Ÿk3dèCC÷Ex>ÄõÍÙY?#¼/ c̽3rƒ¿ žŒøzíep|ýéç«|ÅŠÙÓ gM¬XîþxMÔ‰Ö‹¡Ua“:5®1§š Ò‘å<áë;rß.£J«×ÀõÆÅ c拪©yŸ”Qñ4å4l–"ÝÔ™j8ÕÔKÒ\m<Ø‹¾Ùè)Sk¾»¦–H'ÑV8ãªs0NÌ©i­¤g#U‹QùžsO®jLo±9õ»˜ç\I¨I¿iå›å1ôÖ…œx‚«ã2oo¡s~T·ØoÕù~Àß~gå`”•ó•yÈó¥Ý%-2Úö{Íã¦Ä ¹ %²±@ÎÜèŸèdæçÑ•*k¤´×ËGLDûu^„ì‘_¹9íhûª];DÃX\ë¦}él”ÓϹ7öÑOÐÈÖý¤H½7º™¸ClW|×5¬Žp3VrÓæ¦•íèEµÙ(Üëû“J…øb¤$§qÈ.ó/ëCdß`;`Ƹü¢ˆ° ex-‚8S,©™þ¡ =[qˆ=µµ™W]2‡ÁìßA8&kôãrE÷Fðù²ôÛõî•úð–¨ÍpYI¥±º|ã–Öˆ ›45OW–‹”GˆÝq¥]òŒVV÷êî”—kZnàIÝ^ZŠyìJ£Âcl°–1I Ü=»YÿDM5Ý—B¨Ýe“^ð˜ë¡B7­XF°ƒÒ-+ qËÁa~µY‰ˆ{ún?‹¬iHhMxÕö½4s·ÊDìÎ:OMÙÇ®*=7e|«Ž%ùƒÖ¿'uÇ¢(-ð«ç WO1>ÿ/‰©šÔYä» æÐEÎÝÙ‚Ÿ„Ðf,\?·"Œï‰ˆ>ßä<ÞÒƒwuXBIíD|ÕY\{KŒ*3\2'ÞÐw®\º®ã"ƒDïx•.Íò—Óp)W0mk!{McF þ‘B+_M­\:“G¹]b¨ci;=”žÊ_%ǵþ|$ì82\¹ç¾´£ ˜º¶~¥zÃ2×ÏžñÁæ|}z²D»ž]C‰v´ºMÞÞ–Ž0:gT+ïr>Öw·¶+ôf0ØEÉ2—’„§¸º{·‘:0ð~9h§¨‹ç;oï;ÞÉçe˜é \«%É„´¡¶ýç%”+Í5>%Ðm+±}5ªjž‚¼@rÏ\G§b‰gqGÆñ34‡Ÿ‡çs÷‡¾éCï¾ÀéôçujÒ»EÛ47Å&óè*°G¤µk{ý˜5…n&'\þ:ÒD·7Þ%Krwa²>8©c¥I%媛íßRì{S}þì’ø!ÊZE iHàüQOy('²å…bçÇõÆyœˆc<@žYPß^F²Ÿ ö{q6‰gƒïg•Y²ú‰#˜.0¦ÖïF²¯ûÍÕflZWØTÙ8QÝ* §'³/Ÿmç‡YÖ×N@ ?\cGV/Rgȯ \+Þn:ü3­_ªîj?NM%t0Ø·ž£ˆ?ô(²†;úÓ+ %®ÚÈšú-3?YùU}¡É VÔ£ŒÃ=<¬Iutƒb/ã“d§¿|@·än+¿ëáYPyµ$|#lD±X}™#­F¼í¬u bºaàÚR—‰36O¢Œ¹ëC¾a)Ã÷™E?óÈ·8CÀÒzžfá6<$z!´}Ô`þ‚4´,ÄçKCIœ§ÝÅzã¶C^iÂ`19ìr%R%¨¯mó­º :sW|ÛcÖšïžúr•„H¨Zm)ÞS„ïC°o?&ÇOé#W¬Çb©Ü°®Ù~ýA•m/4ñÀèGP+\,„3=lk8t`˘g˯¹Ÿd›(ƒÎˆÛNôt÷ŽVÉ©{Ñ~#%mݤÃÎs‰Áù†Q!šgƒ”;HÔ3ð%%¡ñ‰Í;”^» ýu‰]û/˜ë‹‰ödè|kC{ÅÄÏ÷?¾RsÒ~F˜u?¯þ©¸œÖŠˆÔ–êÕ"ô½âĆ?àñÊØÜa7E7 Gï!Æùm-o³Æ^3ÀHžVÅc‘êÚÕÌD飿ƒudרìÍ·Éå€æÖ ª^á%árÑ/¡&/•ï;³Þ’‘.,ª%{ÏAê[ñŽjOîª<¨î$`‚ëÚ®YÙ ÿ€ñó0Èš_Å-Kä[0°$Æ 4 Õ“[]ÿàU) Ðò«´RëçDâ“G÷o/QuúÝïnq¦Ú8”}¢sKE¹Ð= J숆`Ë Ã¡zt¿%7ëžK¼Ä:„™/Dücm¨+l¥WΉ:b¼ÖH±ô¨oW>t©°}ä-gÜÜbïC?ˆG4éJ.a¶öHJµ”¥y‰ÔëÔ½—‹‘*7T&~cjên¢Üè[Yyß𱚱gnÄïrœ‘,Läš2¶V DUµï7Ï#}€±ÅFr…1EKdzëdÒÅe ÉÊò«c}'¡\ ¸tqùúñ|.£(ÖVüêǃáCƒŸ‚SýO…ÁÍÛlYÝÁóDÒӨǨ3˜è;ycœž8ú®)IC@ðjp‘TÓâ|‡ o-g]¢¬èËÆø//=°Êþ(pî$¢l7PaLàí1äõÞêîM™!¦†¯F$¦Ôc]Jòhãˆ`ÜL{")q9ÊnMæ{6¾ñ;”—ÝÆ›Ü+ô÷ñtÕvL…©…œ‰uŒŒõÞ“ÁÎnüº½XÎæ²˜Á‚‰à›Íµ½d¡>ý$ñ$hqy'·Îê1w.KåuÌB/R,Öâ|”2ÿ˜Þ€ ¥w5ÎÚeð˜€h~Ž5*©^¦ÒH®ÃвȫÉÔm>!­]¥q¸‰Â¦x«{z£ÁpüìDíµw¥©«K"¦SËÔj8 ñ|¸híq\ê^õƒÏß­Dy¼³Õṣ接1O×+¸Wʽ=«XÝI „"ÏuòBäGj]uÕP¿KÑš&çôðV‡®4¥óø.¾Ç ÉÄ"&Ûs<÷äTÍl%ËwqµJµërM·û\þ¢ë¶Û,ØÒ¥Û§è¼ ~óëÜâôþ'æM&.l«ºIØp|ŒË•½±ˆÞ2àSV¢µàí]à2•>mE¾ýòñ”&ª:™Éó6üE, @¹qÞ5ßnÔ‹NÆÖK$El±?RQÞ*jðš ©þ…îùEl9mSߘ±ÿÍM­'}å›Ú¡¾úd›‡T‰ìLZܰ 'ÏÒŸ[Àk H“ó‘`Èp)R™­‹E¿æ'¶ÔfÎÃbn-ú¯¡pYä\^Š—Ÿ ,Õ(®° x5†Ê¸ùOè#Â7œj¼^!œ^ ÌÞ_áâÓ…¹0ÇÌb+ÿ:4¹W]™ ËÒª6ð¿CjzÙ2æÔÒžÎ6•މv÷Švò½…R³Üqº»Õ'…SÖWñþñâ©V¸áêô´•d<]b˜ÙKáð§—§ªÐã)^k%¶.a1qe0&Ù‹ Î©í …²=ƒÉ¯¨F_DæZ =ÝŽ Øž‹ÿ˜ÿ›Ã<Ë ZYjGS‰¯'p/e~ “´1â/I|dšÁÞ²…x#ܵøè •×OQÌI¿a»ŠÀ£3ba‡Q×3ìò½¸ËGL.V¡rËÕh9\gµlnK|Áá ÒÌ*-à2Q g"Ã4û¼/×mm™5ÔÖÌ&¤{´hrE…pe·M3ǾÖjxr«eR~ª…Gøv¼wíªiÊ•}'Ôø 84 EýõÛiù•s 6Ä{‚íú3/š4¡`]Ñž£v&¢ó9¸Êœ@?I¸žÀ«[ëY(FÐã‰y;ßÍôʈµâ¿>ÆWטƒ(-ö½s¨ÆØ- Ûb½êsWýLÎ,PÇtÞŸƒ@öÊ\,#0ìvòe…ë+ ‡EJôeçtÅØžÿ³¢M endstream endobj 75 0 obj << /Length1 1373 /Length2 6090 /Length3 0 /Length 7029 /Filter /FlateDecode >> stream xÚvTlû7%1:¤‘I(½énI ©1 Øcäh”$$¥Q¤¥A@¤$$”.%E@RþÓçyß÷ÿ¼ßwÎ÷³ÝW_×}ý~÷ÿuc3QUg´\ ŠBÄÀò@uCS ,!‹øùÍXOø_Zÿ8ÆFÉÿ/»:ÅâuP,ÞÍêùz!@ˆ´©ÍÐ.X(Ä+<08Êà‹r†c€øÚ@3]àm/8ê/gƒ¿D€_ "ùwº¿£'B þCa04Ò Š D \.O8ð¶–6+„¢œ;B=}Ðøx¨á uÂ;üi ÔR5Bñóý= ƒðÂúˆù <OúÉš(gu4 Ga}¿ûÓ@`à0ü­‚þ¬Õ…öGáþ:» PÎ.¿GpöõY Þ¾p]¿=ð*Àt®p,P ËÈpo <æúÜ<Ð þÇù­Æ÷‚óB{]ð#ÀC.püçõƒ±_xîþ)  3†:Á](À²ãÕp—¿düæ1ˆà]0x ø÷çß';<¶œÑ(ÏÀÿ¸ÿY.HËZ[ÓØBøÏÀÿ6©©¡€8Qq ¨¸ˆ‹eð‡f1†"þîüŸX]” (÷W³ø[úWÃ~o_àobÿ™ËG,(ð€Û‚¥À0üäÿæBþoèþåÿðÿîGË×ÓóUà·ùÿ°B‘ÏÀ¿íx¼úbñØ7Dã€úoWKø_t5„;#|‘ÿmÕÅBñPE¹zþû>Zˆ¸³1 sû *é-~Ì‚£}¿ ( þ/žU0ü£áƒÇãOš–ÔDÁÐοÙ%.% „b0Ð@~ÅxI ˆƒàiè øƒ` H …ÆâC€øñB€.h à÷>%å€ ü³ô[ùGÆ×aýÑä‚ùb0xšý¾‹É8 ‡Àa€éI4ìÖ=÷×÷ÞW«rø‹®)Žñ¯Zf Šâ¦1-¾§4dé‚/s"ç1GªéýtŸ—5Uf¸/p›oÈbšRMšÏ‚ÏRLGW›S#ÌmªÖôpQpŠš«¬_x߉ð n$lÓãÏ÷ö•¥1.d<öï֨驘ý=¹j²öRZŸò¼â£h¢E‚mDé8ÓÓ VR¬(¹Ã^íøáÑCÞð%·^Š0 d+Q¢g³ žt2ôå¹¹¸O;› +ñ!ÇÑ8µ =–O¸²â¹¢q[ß’8‰ÏívÚ¡“K2 ˆÙWÊ}Ä××\nµQ6  D´c«f2ž­]ˆT†UyI­­ŸƒóúÂèvp“\ u¯yÚΟɨ¿y|uI:.\÷:»¢âáÍ4î=̃?n¥ní¶ŒªëÑ jnj-Ã7¡=. ä5¡Ä\žëˆòŽ<€~¸£UOÑ9…sªˆž}eí}6‘½a»HûB@Ð: ûG!ŠýZáX·ò1"÷Ûþ-Ÿ½·ˆ(öÝq;ÑæE}Zèà¡5e†Ð rz-i,˜l%mÕ²ÇÝš²“r1Áþ¾êµSBÖ îsÜZmB‹8½×ß$)¨UrÂè×ðþèI¸1ÕÕ2æ©äv/„GJƒ£ûîÄÞŠc{vm‡f¥… š|ç[­å¥»š‘˃ŽÙö†(ã~ó„)Ò¦’P¾Ý¯t/¨û}5œ™¢§$’LÈ2ÕØlÌ\}%©6rË:JšçGN~å%@¦8>.X-z¤Ë°Œéf7*ñsœo„Œ…¦nήš?¾,½Ê§Ë?té½ðÈX—·FÔ!uxãN€ÇMg@Ï–ÊÜÛñÙF›y=i·ðÝK3Šnª3ÕóCHåéÚx“ÑN“~MsL`x«í÷mÁ6agA8µãÊ!Ìø¥Z®‡½Ð…@qþ¸Îÿí‹ö“›¸.ȧvç!Ð@+LkºFÕm›ä2Í~±áäÏŠ›©üöe- ñ;í ,‚ ­ìO¿}ìé]˜ßÛFî6±¹4±‘]aà4M³:ÎÅÕ› @„G+&ŒIÞsFRéOr!_q¿*ÎÙ;Ÿ¢¶ÿÚ0é§Zó€Öø¥À]áǹµmU¯ JÔÿÃòMÞ3²¾Ó ¥€õΊ¶M©Q’¨´ƒÝëþcö_S©N˜¦º‹§üÒˆF%ED‹"áßߎ5‘+ƒLã–·2•“4j¼áÞôO+9ÉkD òËÈ4·w€|‡Ÿ³™“ …$Ðo«²"­Ç…Á8a#±Ó‹Úð¥áØØ›Šùõ½ºzgœ]»1ê<>^¨Èê|ñHNâTQó|ƽj“HòpÜÆè½8€àå¡~¨D“ò/Âæg;¼oò£Iä*ØoÞ¨^|bHC)òÙ¾éË¡µ“3Õ+~_ö¼: )ÝIªpÇ^ß“˜{(èÎÃÀŸUÏx4‹eiµéŽ ÖzVºë»[ÕbÝ[hÖ߯w™e9&ÛÚÓ²_>9.¶ËåƒöXÝ4VwO›Ñ&S… ä¬ùØœÎ*ê> ¤gíÒÐæ}ÚäÔYsýärNÛ%¬XA¸{]øc—*ñõåc‹ôYJÅ»4Ú_ìŠú¤ä^?© Ax•BÈÎòCyÞ·g{(èìrGáé¸Bót‡ØY—!Nv‡¡½”éíV¢ì»˜å¸WCéÇJ+•´Ü’7ȵ{”1ŶÁÒÙe4û áþ%¬)Ÿ»²Ô„1ãjɰõÙÜ|‰û~€ìÌ…ëožËƒq¾l€k]…#ª×ÈfÝCpÞ–öjå7Ÿ~¸`dµ.&èsC'-»M7š-*ø2œÌtS]meÚôpW×¥Ç>D¤ Þ,O¼Wœni˜ÉïÍÜLÅÕú¼TÜ@ÚFFD¦·ùÒ{Úk»õqO‘ªœm.pf&ûP4ŸJ_Mæ|Eâtjq“AèyÝM⊒éUå•ÕMT›j~#.'·ú1·HócH,.[ó(vKlÒ4i$ÉÖä1¿&ÀDàϘÝè)6<¡« nË›][´Õ$ˆg«Á.7ˆÞÌ“?>ôºØÄn~¡`ŸGoÓ*q¥¿ ™/ëÍŽÚ;*w5WŠeì`Gué³X5ÇZv(ãì"]zN×ï|«šH­œs—¹u€ö·ÿ8äÅñnm³¬•rˆFœ^ɯs:ÝΜ½û]~GçÅ[²qU+¢ÍÍæ´îËÒŸ®y µÞ¥l]5j•k“ï…ÜŸ5Ñ»ÑLê&ܤâ»Òª2#‹ygòWxyÕÂAÔ¶._W}õ`×2[hôóV÷ž¸¥%úØ!‰Ò¤¨¶×…x0;Çõm ·lew¥|CwVïÊs k«‡Ë¼Öæ1¢ŒŒ±‡mÆØd!Ù2U±*fÃÁ[GÃyÈYaÅêŠ;ÝŒ:¤–ùÆ# ûÁgDù^ÈÇ`žæâV g™õºO­l}wïXå•`[^j½o ÁLÔ6Z‡æ½au™©m™à¿ÚuÄ}x_ÛpÁ$t\1Éx`WcØ“`åÀ€ÞÜ«×ú—Þò[¬lÎä©üÎ<{ê×å²yù‰SàPen~ÝÆ€­”¼œ•Å(Ð=žÈ4{Þ•×n—ÈÒ»6gצ¡,e¹9üIÇjl,_øéÆn Onùækw^áÞ¥Þ>ÛÇ“¸ÔÁ´°ÀôõŠt»‘ÚÛÇ%ì³þšðG^äwÎ~œ_ŸëÚÙ8?_Ï×Ö¢[לïèñ©Tï>¸ÖÍ’@)ô­Œ½5;Ðù‚ŽžJ?vøú~á ¸jcSâ˜ØÛ$SL«ÊËJ5£@+ä蔥Z =]H‚¥Òø˜xÐítï5’ÒÒ0ïꨢž\àý_ÝþÐþÏÜ|¥J>kdsÛ‡E¤WÀÕÖ*e'M}eR§åtõ8Ý–¤)"%ÆWÖ#_£GÔß|ÙŠâVWlW;QÞ)zÛÁcK_ èpuè ­;ûé-¦ D¡? gšKßB([Å;}Œúr‚ý ÏmÿEÌJ4>sYo0 ݼ‘jàl3r mù#›^lS²4)Jl§ÙžP¨x„«†y@c:x×F¹fûžÌ½$KÈá *!j ãeÈ€»ÝIÜe^+ãqzþÒo”¸¾3i°ç);\îbGЃ?ôãÓ“ âoÂ*âë¹ç(>sÎÇä?@²2™‘*1uˆ>M˜â NI¢º6´t×B¼:Sø ÝñP«¢‚®B»qî½ï¹3ùEKxÀ_‚ñK^抠©-/WCÉI¡\±Oäw«8ž×¼NK´þĸ\A´V¸Ñ ‚Ewò›ÙïòMâÇS°Gœ'âŸÌgP¡;bÛ•QÀ{méÁ=×÷Xç“~y ¼ÐºDP˲B¹çœÖ'ŠXÜéê®ìVKîƒÝZ&Ó=ß½'ö[vodÄy£_´Åì=È0­Ö›i27KU¥ßÎÙµx/¯Œ~áMUCgiKûëýÕï«ÜyÞñD%,,Æóï± ‡WÝ—k;{MEü^Ê< Õt"ˆìYk²‘bRd?TêÊ>É${¼×3™Ãt\Ä{µÙÍŒÁTµfKI¼{Ž4Šüö„²'-÷œí¨Æ·ÛÑ1‡¾‡Ä’!ܳ½¹¼åTÅŽFm±§`£J²HºfõÕçÓj KŠ•®›ú·i  ShËõíë1㩎z/>±É‰Åôš ”BÈÜÉJ¾{¢2 j~:žºœ 3‡WD²¾˜ ¬ðmŽ×{åî¯1Ì ‘ÛëÓ··”1¸$¨ýØæ¡³!‹é cÙR%0÷’:߯ü:º|‘ªå^4ĵËÕXÿÑéû•:ß Šº³¥;ÎhóF‡JM¾èÒhà(ƒúf„Ó7šº¡‡É¬‚¥¼¾¿àE_È6„ é¤=!¤—×Bâ(„Ù¼©‡Ðé¥ ‚¹nERÕ 9òñ›“êN6 2¹’_q¨|=•Æ9ŸÑÄõÔèÅÁ©kô^LuЉë¶ÛíÜ#n­„ƒ™f&â/WÑÔ¾6³†­$~ê¯ Ì£Ñ#Ì¢–¸{—‹åuŠ=“þGb# >=¦‹¢\±ö‘ê¹/. ‚’~¥ÎeÜÉsmZ¤ Ó™[{w·÷Z§ ~íÇ ·¢p[¬¡<7ã?§as›ƒ¬:®‹YßgA‹Ôh'ß {!‡¤“зYÛ/Ì»|,È6nFd·ÈjêxߨjK«)×q÷ô‚.áö×™n”ŸÇ9”o gÒL«¶vè”t옇Ñî麵j÷#›Ò«¼€3^Œ4×åê±"ÐrØli ÙÔ£Œ‰ç…3îþË€ókbôgÓƒRk”°‹…ÈÁ™-Ïu_‹2–)¾KÔ3 &åCÉ)!’1ôJ6µ6Î~Û…ef‹¾R%à|Ä*\-¼Õ¼JÕ— é#^8ÚUVWÝsª½J`uÿ ½T>&gb°^pÅj¬å¨‘dK’{uÉægÊkÁçe½"KîÆÐøm¨äi¾{£Ò·P¾_ˆø)æ‰ïŽè E¼bVY-F] åã:Áqto/gÐuìxõº¼B3hFÁéõP%”òG`Ðṫ0ÃküœË á§ã³ -ÉÔähÅFéçèWeÏYöOžMÐTq¹Œ:¤&[ov€­tÊù%«… guˆ±þÛ¬À‘„Žä!'žá?ºgÞBCÕŠ.ì`)(œp.ËiøG:¸«ìI4ú¡.#dŽdÙ–™ŽØ­‘ÂbÔ¢X‡p »üaš®A¤Éäyb›àF˜ÑÐPÙ,ór…¾%¸[â°L-äx»”\^ê-eœáVî“å”àãU£f‹ÞŸI›×yç©M>¶ÐªWgäê¶C×Ð?)Á¹$ñK|úFTop€\NSìö„ܳE²}Ô8¹Öé ‹> È…9JÊ*~¨|î"çU†”M•¢³êcu%úF—%¶®í\¸Aó œ›]Uoý*¿$…ÂìHh™çØ$£ƒøÀvše­{E³³áí®6î‚øU³Y$¼œ£“§«ežrX±IX!—ûáÒï|?Fyžj5½`ÍeBªÒEd—}ø†ÍXÜ­ôÉr3RÐê»ßl[ª5 ÿœxZ¸=õJ?g^®Á ¢ƒ1¡Jˆ©Ò±I4B.üЏc?3{—µÊ½gäìÎþK¬mÂÏw#ûÚízQ.žl[«­›ª÷]\” Rêt|åÒKž®É­éuB’» !Æ,Îe>ÃŽÊ’_È%g>²šÔ2>p |mÒS ý|^K-À±ã/kûõ±­Uî²j_[v˜d¶ã»—ÛÁ©~ÑËQ3â6Á‡”¹÷óœ[¤IÄd´š<Ô×@ )=)çì5VxŽv׫¸Sö(ïȪŒÆpîE¿HsŽùöù\£Þá`Û~âwdÑpu‡-¥.F>«CY˜Ú~ÃMUq*ÏäÚk£w Óš‡¨¼’Ó–dÈ™ZõÚ×Ç,#9 Ÿž¬w®‹ÒŽ‘kz¸¯ o~F¢_vzððP³ê¾ÜXÞ­ ¤õlùzh°‘†×‹LsNsiþïg#:0ºó¬{Å~D^ÎŒíU P] ÜÄY,gÊu7û]¡D×höUrz²b;…@îü¥}M墄Ó.¿» _…¡sÝŸ¬À¦Oêã÷–°ëË=yñôQ£ûÞô$ƒŸ%³“ù ew¬ýj:ßéÔ‘6²˜#Ù´1”ÂÊ+Ë¥ûW”–|p{7ê«ÊU¨­‚è©VÎ^ó®0èèkð'øÙ„ZÞNT¾C.Ñ#AlD©u,"Gn„,p—‡Š§¹ƒ|ωÍÜÌÀMÿ’0àf—y¸îšó´·&óí¦)‰£‰¾ì+nÛã½™ôp°Ûaþ+`¸BÕ¥,SÁ}êÀ¨©w¹ØÛ·Æó'[Ñö/z!s÷lïóÐU«·j9íþð44! JãnX*ØÓ}IP-ÛàâGU):=´@Ä?“[|;bLÍüÎ#òYkáv/½3À|ÿk¤W«›DtY¿õý h¡Õ—¼N’Z!3kƒ&5c‡»‘:–$j Ý&®.k@ǽVÎPú²¤­»f‰‚Hˆ½–)~ùÊ¥ì ¶€÷ S½«¾#^öÝ­*y}ýG$—èD® …B*¼^tÞ7JÁ5»äk†Çª¸å/¸Òˆq9:óôÔF1°–=ÇP.­ÒO±û`š$¥ØÌD»,˜úéXž-\:~Ð⥙_mKÆ BôCL1+4:JJù9Êùl7ù"P~g)¢8{ånÈ2¶Éž½˜ñ Nâ‘õŠ4'ÚÈÂøB‚¼‰6R¯M¿ÕîT±.XJ¼Vs09L,ųòƒhnðWý'×qûG.Y›‚í,‘DÍæ¹ÝŸªoà·Š;¸óBËôÂÃ޵=ûôÄ!á &Ãm¨ØeE4†íE³¬¼†„1RTmÐw$u»[3x÷Ÿºtˆ®GBˆ<vMSãŸìß¹R´.ѱ¿ì$CDE%~zßKg·ð?Ç1P endstream endobj 77 0 obj << /Length1 1380 /Length2 6034 /Length3 0 /Length 6976 /Filter /FlateDecode >> stream xÚwPSÝÚµÒQzS$€H ½÷ФwiJ $@ $ M¤(½w¤H—.Hï‚ ½‹€ M:¢4ù¢¯ï½÷½ÿ?ó}sfrö~žõ´½×:3ád30‚ H;¨: ÉTtu„…BB¢BB"¤œœ&0 ú·”ÓŠBÙÿ@¨  ` Φ Æà€ºH@ËKÈKÊ D„„¤ÿ"Q2Uð# +ÐB" hRN¤› æè„ÁÕù{ à¶çKKKòÿ€\¡(˜=Ðcœ ®¸Šö`8Àiƒb¼þ‘‚[Î ƒq“ôôô»¢(G~€' ã0‚¢¡¨GPà×È=°+ôÏh¤œ'ú/‡1Òã FA8fE q!ÀUkêôÝ ˆ¿À:ø , ü¯t¢%‚!~ƒíí‘®n`„ áp€Á¡}u Ã# ¿€`8‰‹?Ãà`;àwë`€:ÈÆMøg>´= æ†A  að_3 þJƒ;f5Déê E`Ф¿úS…¡ ö¸s÷üs¹.¤'Âçï qø5ÄÃMð>æîÕTýƒÁ™Hÿms„bâBBB’ÒR¨;еwüUÀÄË úÛ)üËŒ›ÁÏÇ épÀõƒ9@q/R4ø€Ay@ý|þÓñÏ©°0³Çì Ž0鿳ãÌP‡¿ö¸ûGÁ°€B8ú „~=ÿZYáA"à^ÿ†ÿ¾bA5]UCKe¾?#ÿË©¬ŒÄ|€" ˆ¸@XXD ‰[øý3ö§ÿˆÕD8 Òµ‹;§¿[~ô‡ÜÂøg.=$޹P÷¿‰þPH\È÷#ü¦ûïÿËeù_‰þß©{Àá¿ýÜþ?Ø÷úƒÀ1׃S.§ÄCÍ IW y¸þ·WÆ©„pÄ1(- &ñ—†V‡a¡ÆÞé/Òüe¿ÿKnpj€DÃ~}`@a!¡ÿòá4fï‚ûˆ qÌüí‚â$ôϲj{$ä—ÖDÄ%` ìEŠ»jÜNà#Œ%ŠýÍe€ ‰Á…p#ú(Ò_÷**„ áp0ê—ô¹í=P(œÎ~sWøïýoQC¡X¨=éÌ$Ò^6ع*¸éÇkÐMOàêˆEÏÁó#b³5¦Gk†*r'‡¢yáÓ ¶ñ/á'‹Ô["¯.ë]Ìé…\¬?ù¦†ËÐÏÔ4]s°ûÌï;L-º…Öñù¢ÝÚji+Š€8Òï¾1êóD¡ñãMé³èWžÜÜ0=ÃpL ©*?䲉šP«…y% kÕèÒõ1c¦·:­'™Rmï¥õLšMÚ$¼d˜ô©Ú-‚Ĭ¿5#u˜D¹‹¦~<¥ØËÑ¥fí©wá܃®| Ò@0qù”ì„t%Q¯‰Ã:T—¿#pP-(È$æCröŸìö‡•±I=K¥ªUìûh™:F ãKEM˜dNC&{SÕ3w ð_n…½RŸÛAÔe1Z©ÆG¶ƒ 56š–ß“/ˆÿäVcß Keí¨oý<T ˇÎ„ZÌp Û5Cwž¥}‰%ËÎ+ƻݪ/¶¦ø‚l!ˆwtªóÃ"ëY³Å@íô–“ŸÕÊö©»é²EdÅ#÷™¢$$×–ÇG—ƒ}ÍÆ]g‚¾þ ×øÝh^¾´‹pÑ3±øNUN%;¯?»ñe]ä¼eWá Vÿ+×0òЙ‰ŒcÙD‹ O¿÷êÛø+¥EpþOj&;Óóǘ«õ„^‡’XÝnžÚ®·ž0…º¿tí´Hb‚8F%N&.Ï×ÿ$góùj–6Œ×¶ÿ˜®`á0d6ÝðâÓõ—Ï‘5Ñ¥ `#¢+ì»ò|ëãA$Ù-ù÷ïˆü$ ð6n¢z³»Þª¨Ý¨,JTßF'xÉõ“Œëà{ôOÆ{®ß<Ö¡ïò˜ŸAÛM"nS½è¾’Š G'höÖ™CÉPš…vx6<+ÝÚ¼U4*ÌACÈY£"[kÜ}sì8Qgóžêió_ìKÞÛ[cÕ4ûöå4í祀 Ifn‰ @£°WŒ4Ú•mµ¼¥Ó÷ü¹Ç—ÕG®=êm4ñÕ²ªiª6§Ž¯Å¾—¬µüŒ­¾V }³Óϰ› -¡íY›|†G¨2‘œ‘íéÞ‹a¹‘„»DðÆ“êÉf¼u£²º'4¦Óü]—ñr­éhÄ"Eš!Àþþ…«pE”­%ë!}Ç ÂædôƒiËkÄ¿*Þ[zØE,íläáÙ“¨Eîv Û0…¾¼Ùõ z I‚bzîµ0ÇÓdÍ~âÄ °W{wßrû#hÄÖhT&quGÌs&Ãi¿h›1Ùñ6Û¶)`Ekà20|»~^îÿq%=^I$+¸R%Áy(?2à¹g)3»R#¹+|}¶Ô®’ËþûIÂÔŽ§ 6Æ|ï˜l¿ÛGŽpªxdÔªÊÚæv+£•Ü` °”/ϨˆªdK?AŸ7ÎÜßâhm)"ü[öùUkˆwôá1ýOûü ÌMõææ¥/[ÉzäÀyö5GíHʦ7¥òÊrÉ D§åš' ¼Lîr›Ð—z(ÆY.ÏŸÁ4ü>À³¨Ï·éÞPÂ6 6´¤ 7œ•-µ-ÉÑ–}ÚµßàîwèðR®ÒÞœ–kÔ¯qûs?’b"í™Ýç“ ôÏϹô$a"Y_RÍ=¸I¯ÀuÕ׎x’y«„AŸnÕ¦‡|‘a¢î†/{ö"ÒáÄoWûx¢R8hŸ¶øva·X§ß“!?–ó6|âîf‚RGäñj¿0Õ©’ÊЛz“¹Ê[Õ'dÐñrf¢`éãªà™³Ò[%“[‘!XÊe€åÉ$·ª!ÄñÖ`€u—±·òŸ©7Ž¿«âÓèRF½þæGÏ·j¥H(m„^§4g2ðÝGÀ%sâÝÅð×,§ÖIyôÕ'¨D³—–ÈÛ!oŠÉ<¼‚º/òVÁÒ]zƒÍèP°x±+Ä%Ì®õN%'o¬‰„y†»U5¯“Y%læ­ª‡¸cêÖ*¥ÒòáSo³|¦O o.Zû°—¾5Ž:0~‘ý)m¶mhr?;¾n·Ã°n¥›Î ¡œj0Mß8‘ãn Vò•NÈù”ƹ@Šj»ÕÚ0oÑeê¿­Šè•¶¤-_ejh"±èâµýºð¡õMò}ÃÒä3Nc œ ·8U¶Jö¨Òo=Îúª,ÁçÜT5Í6¥ZÔ‘4øcÿqhdéV”EÿjÐ5ƒ‚û}ëÝʦ¦¬ÓWmó{}ci"5‹¾ˆÃ@ä—Þ„óÏEܶùĤErVäZNsú J*ÕËK´%k§”Äzˆ”¢לw~ÊÉ2ÀmŽá|ÈÚ¡p*H¦bt»âéFZ›û'»~ûó`¦ºÂù`‘›y­^Å6ë7CžšžWÌø÷?:|¹èÇTÂÔ*Õe £íˆZ4÷<܈+À>7lZ Á¼RI¦Â®„ŠzÄOI¬‰¼"á µ)<Îøº.bÝj)I•³†>¶+„~ÙKÜ>¾Ooá«åA®MKîîžâáÓdAôÕ pp¥«®Ó˼Çãâˆvܨ$ͤXädq<ù¹•ǹ¨&Í/ɯ£Áœ· ·Ñ›¹µC˜k¹ª‡ ˜²z˜ô {øýøÀÌ¢’Î.`O€¤äí+ HÝëÂ:Úvn¼ wA„ì*o-ˆÅS|[ønÒâj'»³³¦cj>W÷ô} ‡t½¬ø3ĹôâÂ¥žü‡´2oßuÈy!E¾uë› ‰] n¦h¹¶Ñ’4Ï<`üFï¼õºÓ˜X.Ó›ë‚תøúæWb"‡ûê©NÖ÷ÔrÄ™òªÁ¬Y&‹©ŸîVµ–§+‘ ^N[@Üû‰7áÌ·{Ô$'Ï@Ðn#Î÷ k´é$iãÏòå+ŠA ¦•‰°"}ÌdcÝ ðÅ(MCM þ›ígóÇOB³ž\׸ê*Xr~®;°¿I7ž’qbÎÄ;9´Ð6ñÝŠ{b>Î$HRÄ‘³äôèâ‹oaatJ<³@UöüÕ®Øu¸…s…”ä]• ŠtR¶º1$âqD6Ó&VCpß—€T&±-rzUú jŠD1­w³)»í”i<=µÐòÞJXÂgo¿­8G+»&zM+šñHQ°\‰Û7L¬ðõgŒõ¨[ ‰kÚ9H›(û›Ïò?Ùi?ø-Þ57íèÄJƬÈÃÉ5pÛù^}‚§‹§¾©ŠøwÞ1Úåñþûõb9W ùU¯«#IQÉñG=V}éšþ.†RÞÓAR‹ÊÚ¶RkÅ9ñ´oBµ’42äÇìéa£…é;7×§yA4¼–>È{ú>×JoÜ­è±1‹Œ°ËÖ6¾7>ÖG|Þ-¬ç]aoPïôÅ{o~©ÜEøjP9Wwøz ÷—Þ–!p¸wcÄGï[k“3Úx-¯ñ›Å);^4¨Am‹xYsö{ÊÙc“: ã³8)4¸/½ß;€Ss=;Ç3‡è±G=ÌÅͬ{Qœ\§î_xìBš–ÕtºBמ%QŸöÉ ’ßcmÇtª¸ ˜F!&–ê6÷ý2%ìæôýÉ”z à™’9b«èR¿_zÒŸRâñùx èƒ]©*Z±»Ã„LSëáiš"¼Óæüdaúß%Î'/·RÖ¸Vî*é| Úë¯âk—Ö÷Àæç…8 ¬Ñû–û ]f³–¿Ê>êÝÔNI$Ç”Z‚,cˆ¹HïÏÀÔ䋬¯Ê,¢ ®ŠYFz¢øÀ»“äµ5%<ÜŸR(拦ۭÕ$Zúœ ‡‘_ó`᳑ͽV >C~ñKr½L>J DVæù%£Jè$\°Á—sÍ‹^Þvº{S^tŸÉ? tf!įgjZ_ »  6M~E¥}˜Xšå…Ä9ñ:òϹ¶õ»Ñ²fÒ-[ñaaVoùO¸Ø¿æ×Y)¼¸íÚäZ.’CþX“­|ˆîèᡪdLëxß´?¡å›o%¬I`LØvâ})È7æ'ásŽY¥Pšt ýyì°kÐûpôd+®üPÙÉ£žÜáÆs!{0½ÚR!)÷J¡”ì®k­õ®b“HJ^¢S£r’vüy¾Ëÿj—R4UHÏ©uéú>*eÓô²Aj±T :üa ¥¾UVl™Ê†9†´öeŠï+¦/e¹¨3ûŸÉ&'f‘+ð›5j˜HÒ '±©_Ÿuƒ» D£þcsŸâu2š×vßG嬨žôþpüþS7>»æqü“ÜSQº‹>*ŽØh‡V•ò>ÝÄXùæ³Y=¡¼gÿ¢ÉþÅÏ­£¯Ä¸B…U߃‰,ÇöIÝ ®ÅÃ9K×eÊ^ÅkµºT·6/òËø©|t­pÕtܨÍêUÞž,Û0h˜Y¨ÀõåBW†ñ®¯áŒþå¬-G~ÞGòÖ)õï¥E†dN³šUÚWMhï‡ËÓ0ÿ(ÅdÕS(1Ù \ZŸÓ ØôCíå¯Ïm¿Xç½>ÁEèÖÎ7ý-­ÔÌ|vDùøÛÞvûþݽ¡}¹ŒPaêE9¦»¶5YTÃÏ̉³Ç;Y¿^¼æ}G&ìâî·hk'Ѐ†Ô|x–¾ÑFaZp¡‰d‡sÀ:œÍp )ó¨îmü;Zš¿žØíù"fš Mí3tøEÄØ—ƒ2GéÛGAƒ ®èêšHEþCz¹ZØ4â[Üm2S÷Ÿr=¢2½“wýc£ ïRŒca€m?~ë:gVæå{š­ÑGè Jób’¢àŒŠ¿z•ÐãÝ×zNJÔÂSï;ÉÙ"Æä4™uµ×Îò#6Ó í³êÔüÃ6ñ ›ÀùííM‡²IÆJîOEb,¬7©Èû߯V”YëiVóe–-S,ä¿ öÎŒ) ´O¸Ï,DÊÆ,LßÝŽz—+v­qÔ+xÜy¶:[Ÿ¤ûbì|½ùùƾ1V‰*äÕ—n’y“Ï$ÚWÛª¾…6èÊî ìrW{žQ¾ wþ±)ظ\ÿ8œ&…ˆ½. Ð>©{ÅÝF6ãàir£¥¶l3| ÃûR=¿dÿé‚)žD‡ Äqeò(óTbⱕôm$ƒÝ¶•ˆõÕ£XÂŽ‚©k5¾„ë‚TVÜì[ãs—@MëBœ¬¼…'üx:bÁ—ä²P7ºQKì¯óô,”\UÔ­«>‰‘Œ KÌóõÞ4¹ÿü£Æ¡•ó=ùÏù¼VUc|bã°ò¶ +R4Úxùƒà!a¢.T¡+V_É ÇìÄåù5EŸ§t hÚλ:ÀGŽY*!1În— ÷ÐñkÝú0(P÷ëZ@¼¤K¤Ël_Ó"¬hf&B/#G*ÇÕ¬™Co#Yq±”pÚOnY¶U6ãm÷ÛûvØ‹éÑó\®xwmn÷ñý9„;« §d6d×ع’FÞ{Ëd³_vG¹& ƒRÔaÒsÛ!hb“C¸dêþZ5þ¼Öi@ª®+{YÉ.HNïÃDn×”®gwTl£À¸Ôä7—8'¬zŽ]—ž»jë9ç‹¿ˆÌ¥ÊmÍ]òu8m¿ë$îK¯Âa"e/öÙɦüÚ!eÙüuAЕðšp§fã^ÚZ %8ÁqwRþeòƒ—ôU¯ßëóç_YìšÒÐU%TØâý 6[®¦¤>QÎÖøþ[yÌCi÷-©ŽtTŽ­7¾^q¡¸¨!jAÑi¡Ê³¿4¦‡Eç/Wuà n¶^Q ¿ù8kkœØn]§›òÅž4j«7ºš ÚÆö™qßH/ׯg FCàÊ==iÇ»]0é^÷š˜ê^×ûÍ Ð ç:÷\TœÔþÌŤ¸ endstream endobj 79 0 obj << /Length1 1921 /Length2 9867 /Length3 0 /Length 11057 /Filter /FlateDecode >> stream xÚ·T”k6Œ”¤t‡C7 Ý )ÝÝ5ÀPC %%ÝÒ’’Ò t#%ˆtwJ|ã9ç=ú¾ÿ¿Ö÷­Ykæ¹ö¾vÞ{ßk:*5M6 +ˆHâeãd ¤”559 ›äB££ÓC@ÿ‘£Ñé€\ÝÀ'¡?R® s(L&m…•!Nw'7€“Oˆ“_p‚ÿ!B\…Òæ`+€2;@ârC£“‚8{»‚ml¡°8ÿy0Z28ùYÿ2H8‚\Á–æNes¨-ÈÑÒÜ  ±ƒ Þÿå‚QÄ uâàðôôd7wtc‡¸Úˆ1±<ÁP[€È äê²ü* bîú§4v4:€–-Øío…&Äêiî À`K“ÌÄÝÉ ä €EhÊ+TAN“•þ&°þi€“ó_wÿXÿrvúËØÜÒâèlîä v²Xƒ@UY%v¨”`îdõ‹hîàÙ›{˜ƒÌ-`„¿R7ÈJ¨ÌaþSŸ›¥+ØêÆîvøU#Ç/7°6Ë8YIAANP7´_ùIƒ]A–°¾{süs¸öNO'Ÿÿ k°“•õ¯2¬Ü9´À.î yé80Úo™  à@nÈò²´åø@ËÛô—’ó—VƒŸ3Ä` +ä¶Á~Ð|ÜÌ=@¨«;ÈÏçOÅ#4NN€Ø °Ù€Ð~{‡‰AÖcØù»‚½†@Øøq€¿>ÿ>Ã&Ì âäàý›þ×sHª)ËȰüSò¿JIIˆÀ‡ÀÆÅ  øy~ÿíFÍüO˜Ê;YC‚g kÓ2öøgÿÙ&ÀûRÀ`ü=çF@^ %ì‹óÿyÚÿ2ùÿò_^þ¯sþ¿ɺ;8ü¥gü›ðÿÑ›;‚¼ÿaÀ× [elœþ—ª ú{s•AV`wÇÿÕÊCÍaË ádãðo#Án²`/•jiû÷¼ü-×þµi`'Ä üën°qÿ£ƒ­—¥=ìþpƒ å_*l{þ;¤Œ“%ÄêךqñòÌ]]ͽр°YââåøpÂöÑ äõ×8Ø P˜ VžÀâŠöëLù2¿D!~NÇËßHÀ¡ò/8Ô~#.‡Æ¿HÀaþ/âéÌÝ`=»Ùÿ¦ÀœYüF°°–ÿ"^˜ÎâëÁ¿.x~I;ýÕ«!7 AÌ]ÿ`À²ýaiXÿ¹6@XÛ? /€ü„eäð„¥ëøÂö‹Ãé‹ ù:Œ »óÿPÃòpþ­†Ù:î]'5ô·”óéß óo•°¾:ƒ\a×+ô°B\~S`u¸¸C  + ‡ÿ6æä„©þh'¬D·? ¬ƒ’a¡ÜC.Xš^@X~ÞÁÿš>KwWXÎпnØhþÿuãƒ@^ K´ùYˆ¥pˆ]mHÛu™'ÛÆòÊj{d¼~_/”þkž­ÒÓŒ—“.’fV•ÄC©jsea³¾ḋף^F]YË)r¹P8™¾5Éc¶ü›³.¥„ÔfŒ?5r ç(AËÌÑ!Qwö.”¿›{«j³è¾ÝmË@pà(¾Ä¦J!ƒÆJä´ïÁGëSÑ®Bõ°ãp] ÓܵäµÇîá£ÁqW’m1$7Þk†qéƒß¾}ÉêïKå>-Pì©æ« Ã#Á¥@•3ôö3 AB–B“½$ï¥TY"÷Ñt\ÞÐ òä>†Ÿ…zϹzvªB$ÂÓfK=Ò=ƤÃçJcPH„ ²Lž¢ìXÀ®VÄÒþù–¸Úœaažž9J†vÍ¢R \ߨ˜é«~®e$YøB\ õÒVB"ó/uÕ3ŸX>SÈè2× ßó—S}W‡é_aûðÛá­w4nl¡"K¥H8vRÒ‡¥^TÏÆ–²ÖÝR¦ßÔý,,ÅØiŒÏ|Â{§þÄ ½Qx¦»¯0ç¹²~JÞVÌÍ—FQ›ŒAN$M¾Ý!p¸[–ï%8 “EðÙCs÷}ê,DÁÙ²lÙxý*Š÷‚4Ñ$ëVnàu W¤…aMÃÀ^á Óµi¯PmB —ƒæ—Ï€ô¬O–Ú4ª–¨3ß?™·ô]ÝR³tt2í”ÖÔÒ]®è#Zñ|QÃyTF ß—<›K#ý×0^ÝÀtHö Hû#sÝf7?²)°À|žëdïñöDÃ’­ÍÆ­ª`Å«‹ÇwGçõt’Ÿó¡DKà0§'–ÊÇ-‡=ë¤O­–KJT‚JªÏ¿›’•¢X€ÚmS)Œ¤”>±SìeÚ±õ~êÄ’Ýæ’ÿ­Yül³F¤ùCêÐάݘl¨DËó°ÎóQ]—Ù'ÍP1_iË}}ÂÝ=Ìø¨56–vÏó Ûîu}V†T~ßÕ”On÷ãÝÛ„áŠàZƒß7EØ)”ÖoÛ¼g~g(Ä£iïÐà6™ãÀƒZÜy‹JætûDæ1¸(K¿£³¤/@a—ŽÕÿÊSü¢­pèwÔ°tN%JYBÔJ | ËNuæR—ÐU qá¿äï·Ëµ&Y—ÎzÊ\Ã÷êM7¨ñÜ1ã0D E8±*,mƒ¬HÉN~ïÒØº²gÈ̤4EH½dš,þ[ì\E3„,Ž>ªnÒ(祾Nëyaž€y0-ÅkàšÒèÙÄ}¡BÖ»p=CW¨(ÙÅ _·òZ#sxŒËcÒäõ¶ÜK‹ÝeÍ•3'“[âlÛgÚÇRû"l‘Ërªâ]UGmÕP dgé‡eÈÏy gç]kΤ§ßw{^ ÜPžÙXßí)ò*)wí;ª.¸l½Û r¬bC¦¤Ñ3º^®ýìz«H¡÷¶ü:¡N8â'±¦86P¬³ö³n S=#ÂÆ÷‹ýýíAÙ´?÷ëè_˜žlÏܰi‹BQ@_—ÐNn¸>>ÒòÑÝô÷ÇŠ0ë« VÍÒº„ÖÎÁ/çÉ’®oŠšM‰ï"œ‹1Hƒ9.TU“…Ä‹˜÷Œ´#ž¥ë4Fsx„yãU—lú[’ìRÐD­Šß n÷»ªË”õ`R•ˆ-ìHÈhÜ•¯c!}v&]._³Wص$žô?JÖ$X+H&%|_'‘dZ‚ŸÉNå’ôÞ^ˆKíµÓæÝÐm;š¨¥z2ÇóÀ¾Øå«”¾ø“†M0io”žD3Ò7·&{KAò„’…À¤\á‰ØÛœ`8ù´!Fü(k£yQ;¬@äËEî¿„´¶{ž÷ã™Yfà–¿3årØ9~±KG”÷$‡zþŒ!³W9u}*xçó—GþÆç7a#gD~E?´(:k¨äŒâd.÷\Ð6Öƒ??%[.QI2Á'J†®TáC¼¨º£Y*X«éF‘ÑwwûS¨Uô±A¶|™„a&Kì§Ã¥‰Ñþ»XÝWqèá <¶ |,“Í_GÛ=”È€”çe§gWËy‚“N4-dïóáI &ø˜ò)ðz ¦¥£E*Ùn¶qÝï4°ƒU~N³@ÞÝ…ª¦&à¨xWžòdëòu‡Sâ=W"îï¾q{y…÷˜ú6áë@œ¤Î(ÊÑÌUìÝ…™Žæðë3~òòQ?}¶áóê £¼˜úÚ6Ch6{²Ë„…_åúm•#:ð&ˆ*Â@ÿœ£¿lÄW! ôYCD“­Ô§'ø ZçèPéì`-ñûy*3cÛ–äΧˆõXEÞÓOB¼.†hâÚ>[çè~aš{gKoÔsE»b£›^eš ·î’Ç#<¦s°I<]3Á×ò˜^«×Ü7 ÜÌKþŒf$Í.]p­|ãD¡2…ëôjê‹'·:ÎûY̲ëâì8éÍã:LÒá’Üž Kâ¢^ÅÉNì1Y9YÏÈÏyèÖ®7öЭ߲‘f¯wüGÀ,'ËsÚ s&´™"ã3ªšŠÇ~uâ ƒ@Û¶"12"I©¿êǔýD)ªÀCk©@hïæ°Ènë /œâæøÌè BAAúé›/G´/Û~6ÌÿÝ«ËHÕ4ŠUHî:¶Ä9äÇî®J}­j¥ÝBz6{=Áñ#ÇÌ„À’ψ>Pöv•£—`&Uœ4F4}’Ú]gÄŸ¿ot¢avïøªüܬÒù¶ÂI+¡èºƒvšÚéIÖN‹XYj{ÂWiÜ8¤ÃühO7§?9ÿÆöª.¦ŽåUzBgôÌxð7ÊêjìI£ ôRIdvÉÅùØ·x²Ÿò}ݧXdÃñF! qù.ˆq’Âäç$e‹4_è–²šõýG¦¹î¾Bs„ñKU¶ÙMãZ)äÏI_d6cP‚¹uÀxãH 2¦(Öóè»Þç'\vÁ_!’¤ôøL>Ûøšˆ{£!œ õ<øÔÞƒS°œ€ù6 #ݶʜ[0Õü ¼xgqúáª'ßvvSüIR‚ò,Ì:ö[¨FìKŠåÇi;°#5NR¿Ž™ ˆ4|6ÏN%–p*å­˜"iÔÆ+LË?o0wæB Ô­Ë{f Rå‡o²ˆ‚yg{oÏ EÃ\WægHW Æoܵ[ï‚ÅßÈÖ±‘À’úªÎš}_¡ùnÈbl<³á;.Öy´+gQ±÷âÛ˜%Ÿñ'£x{+ O˜Ó0¡ÊMZɸ˜*ñ{½£ûÅâñ„¡ÖP³˜QŽit’õÀ;,]¥pêP5… =æ-‰-¥ƒIõ–4i“½ñÖÜí‡çŒ¯xp69†ZÃ|„D„‹“sT°~±,â€ÑþxÁ|·ÝÉÝç­‹ qˆ+hÊs‡¢1÷ˆù-c·Ç0êö¢ôfŸ³SçøSáâ„ük"ðΰå5»EñmΫOgÜ V$óÝŸ»èËp§RG®Ç")Æ ‚›Çj~ÛhJá‡yf€fžËœ¾éܤgægŽ}1þ^ì2x=yWÆÊ£?³=Õ%˜×Q,Â[ž2%¥¨cee-_§¶ NŠ'’`µûˆó£Óñ`gÞR¯}x‡£µ[²þ²µ\èÐ. Îiî¡-Qª3ŽDi. L œVWÍvQ²œ-ÜWÁîLõ!oƒ+#áèŒÄº5'Áà|Ýa ñÕäúi2b’Ò3Æâ{‚™A\ËJ6u©¦q¸x˜«aŒ$:±bÏ£•òcÅõ²iåêw÷b aYAû*¢Ò>=N ÂR8@š¤¹a]±úx‰ªŽ–xSoËëˆÁ^r9Ë7æoQ¤»O¥é`õLnâ>ºáKfn!¬.€­ë÷|ïí{ ÊüWðŠ\š[\Bm‘Çi€}¢É…ÆCfo®gpºnSLÒÝžáœÝüqD™ÚÙüU5ÇF&ŽÍô/Î4ÝøgnN‘'žòޏlÎðõn¼ý"¤%‰41¶®á êßIuªIÎÕ”·EÕyŸZ¡°UOxztP݈¯‡bð’~×Öµ>êˆ;ýɺh¸ÌÞ=Ó*¶—Z‘e“-Ïš#ÛÄÁ¬Èõôð\ØÎnefCjÎKäR^hßãE9%©!ÐÙg_ù¢[ãÚú5([Á]µÝ s_¿wïñÇ©­ý©C… –¢ß¹xp kº2ž„ωҷÓÒ¦w«[e¹ü,Êj§yFZ;—w¸i©)M`JT WŸ£#Ö2ä Ô –ûN¤a8Ñ1«YÆw¿`[pb¶+å·ÏFSçÀi;\ŠœcÏ]3/„*@KO~]X } $pômé§ o^„†šä~.ÒæÔ9ì Û8À"qÞÆÁëUDLí¼Åþ*iCÙ®Ìyö(@¬Ë dõ¼i¾Ÿ8Û¬ûšyl…A-áUôbm_µ©rßýü‡„Y䯻'Ow‰úß»Z³ŠIqøRí¼¤Ê,cõF[–Ær‰û:~„Müƒ13$õ8íCç=X#4b…§ìš˜þriiÌÁýu’I þ¢†×L”šxâª;F‹n1„ÞDíœÂz‚¥›5PDµœï‰”s\z¤¶·˜5n‡I]% ! jUÞ‡C¢¬C4+"Ô¹®­Tk·*º¨Îâî©­õÎ…´¹ï•éDn®%ÓÂÙ:~¬õߢ„„tjY¸Jm\¯®NxqÓí‰]::ýd#’xMLþEvÿEÁ¡ Þ­´0X–³YE< @Ô£èå‹„b³)Jh£9ò'Ý4íGÀ›||[£ÌònÿüuÏ™‚zÛ«qœJ¿Nÿîኟ}¦ä{Ç­šÆÕüä]ÓsÛ·&CòôÏ^.ò¦°w"ìí?òœE­ÒZÐPB;±•ì=õ±¶ôz¡ò’ Ñ9›‰å~¥„1©‚>8›ö—aø;:=:ù <¸§¢—4(õ¸u,‘å±Të_;(A†¹+$GéÅ=Œ]w¡Æ&É\¤.œZþñÈdÞ¯Føkj¿|ꄊ¸ŒJдhϾA¼Pþ\åöy$ï[¶$WXý\¯ô§‡=0Í2OI§ÁÃpxXìK#Ó×5FÍëƒûùîôðñs5?‹—ý¾IY¾†°%%qwã eyÆ""Å:4ç&C±díSvsøoYÜ?GŽ«ízxâD›H„©pRæH…`ã¶%ûÈšGO\гŠÎIøäÑ<|.¸s=zª7&óˆÒº»÷ñ¨±¡n«Ô@ÍÙ[ƒUéh Oÿ¡¸Œ‹C8Ì-H'ƒ´m°$ŒÉ.¾•W¨¸DxÀ×ÖÒ€ë|ø~Ò¨ ƒíßè€Æç`|%-€4²Áª(îLBZ„Nì:•gWC|aì7z"œj1Ã\øÜäÌë‹?2ýS}"ì–²•…Ø’^¯¥•VM4—M®‘DXÑ:¢VÈ á¬6íùJë­tŽ)ÆÎºú7/]_/× $µ¹dÛvo: > â–¸•< 3àÒnIÞ€FðØq%÷Øß> n‘T ÅGŽàÍ”U+>MQÚß|ŽOá?{+xïêEîlL:Tã`ÝW’VúÑbw=fs)¼^ݤ37ß"…µK õÁEJ3–‰$W5‡w»üôØÜÃxƒXAW#DD[ƒR[(ŠŠdž/gàŽá}äÛ1ŒTŸ7•ÊÎ$“Õ@¼yYç ß6wwŒ‘Ür!¥–Íx]ÂÞi¡—£nmo¾K­ÍYD¯lÇ€Ò²G9Xv¿Ëm ýnmx"uÌ#ØÓÅ#N¦C–Ö"i ß²ðDfõ(ÄB9ûsó)¼×í÷Ò˜ãß°è2›œÙ*u‚Pr nòôls¾e• aË(ESÜi †ÉoõÍÏ™éÇÑ;EPñÞ1:'Kç8ÿ¿Ñ«HZãê>—Ò^¹Ì&f0}™4Å ¥——•ÌÎÍQa¥P7~†„ˆ{‹„¨RÃNsìáÞ~Vl¿Ó†ë‡¡´£ÃÞ?çO^{âQö쀯@” ­qÆ•÷ð¨qÈBqdÜò8Åe2¤µ^ê²àµ®Ìßb/±W¸ÃSzíÈ Ë\¹hìŽÍsš_Ô7Ø|:ï^ôq¾çcYì1$C“wºydª$C ‘d¡à7:åËGCçÎËDàÅlIîì ”îížèÀZY)ùÄq^WñM¼þЊúÑLWT)Ä@• Ëu¡ÀÓ¨é…_}ÃX‰‰¶®WHÄþâʸ­À´sÛuyåIMýâï‹•¬óF(@ê {Ÿ3Ú´ê$I1dÅ·³½­d)IõÕ§çUb&›J±ÁImo”Ü´Ù1¢öPÑ ½‰]À&9”ûQü†šÂ»mižre#5 º%Ie®˜;ñl9Ú£>Æ7á˜òˆÚeñôSEyoà o Ö, P˜Í8_¶}Œ¢Üdß‹³šÚM¾¥f¾ãÅïœEBÇQý”d¢ö†Vhçº8_Ë¿tÁ؆1û°snåe+%A›Ÿ¸ßKD—bÔ÷YSüAµœ87¤¨´ÜA*õb¦Ö|Шٞß‹ð³TÚÜ£L£¨:1)³m›3¨UÇ×ÌwÍÃÉÞ6ŠÄ%¿T.8JMÅp<Éné|e¹6ip $#ᣎz‰Pßùâhp+¹‰ErÞ*/LŠ,–o:áD{KZT#ìçÖŽ—\ŸWC býH_Ñ›‡{L‘7ln(3[xQÔçÈnR*ïòJyü…X¯*÷ÄòÉf÷§Ãc„ËúA™ˆ©”ÛÝ”ªlj$&Œ/T/˜{Kš”º*1®Ì4j1'ÀOf'UÙ†š'šQ™W¥jhSIT’™‹™¼^ùyžbb}ø$‡ÈƒrZÀs]¹§Í’N^ÉnR‡|¿Ü9nöè`ØÝï4S›2‘Exzª+£ ÎÙ º¿™EÐ(¢h·•yʧ$qÈ•…äÛw¡‹¤(š1nŠ'/v|Ö§SÑ+x3Pc#“ÇxÇ¿pÛˆå¾pf”@‘LÈzq†ð-Å~ß_‡Të¾Ã÷à ÎÔ¶Ö̳=Ì ²SÞ*²Âþ3­f¤ÍQDSq£æ¶GfêÒfg*È1iý›=öG¶ÜU]ûŸ©y\d#ŒÌÇ_ûƒðÙ4m’^4Ÿˆ„püfƒ>!Ukz敼Û3ñRÉ`»F6œ€ÙÛÇ/C]|cg[k qLk÷k©æ[™†Ï:#9°—•ÀD%¤ÏôcŽWr4H¶ú›ÑQ[MLØQ6ãU/1­"뻵Ó=}köFüMb”jÅãE©°m}ˆ‰íú :fÄÌ¿¿â÷ÚÒzŽ*jÖgY1øó%"Ø;Š*ntuù8Q¨»ô”¤c»‡¢¬— =½:r[ºY,X¬ú#7c~R8Ú2%‹¼,…{ú òÐNÏ(‘Ý3 çæ*ÃbûÌך‘­ëhÏYɶŸq¶bŽ“qúMUK¯ÛÂQZ­d&zoÈY ˆ¦#zé’vˆ=©ÉR=Èz7î€ÇÝ\Cô139›Ÿ|=·²oœÈô®öôÑö·™s Ø½:hã$䄌¹Ÿ± 3?Iy›Ô“bcþö¦±\©_N\)æ˜6P¿.€y*RVÏÂ…_ü39%8`Ÿ¶ê®°†N“¨²yFºw*\æ°Bœxž?CO·¢Ç)×Y.› êE^}k£ÆŒò/)eÀßZ‹½T©y¸Ë  wZ~S•O¬0Úï§2zN¥aO ã Ò¦'ç(Ç㺈~)Uqˆçy}s»cO*uÃhR£ÿå©ËG¤ $xx!+DkŠ “)CóµÚ‡gCwŠ £·j'¼¥Üu‘ÓŒ1„Ì÷Ö \^Lè]±Ò½Ï²,V¶]©©ÚIƒ‚p4'޶¶Spf׎Šl)$?7÷Ù,©¸¾s—ö/m–MÀ#k iò(úB,kÇæc„Æ?åSZÄ›(ïí¡>Ü¿-8³û“›CsîÜŽj]¸)÷$I-»Œ¯Ç-Þðt•/š}\•¥á•J{G+§ˆpêwNŽ j~=#uì§ÄžèãCÍ+ÍJ¤TºX®"°eHG2¢X…žT.x[ŽÊv5þÁ2Ùl!7¨x‡ 9ÉRš¢Gú6D„ûÞQ] æŽ„©ˆä]á…~‹þÁúéÓ|dzG¦äk¥UŸFgÒeþò\æÅ¤7ßâhó6#­¼­S»iÈ«‰¦„®ˆ2[ŠGî Ñãåã4 ³Ë²dÿ¥‘ÚŸ¢×ú ¡xŠ £‰ë𑂝ˆkx¤8çR^®†ˆm/hVêë?09¤#k<{"Qþš!ÿí«„25Æòe?Õ÷rv Î[‡lS9Šºpqî·O~î²k…ÚY ¤è| ÆòÙ—jÞn×mZJÁ\&˜µÑVõÛ2»oÆfmnoIÙ¶ßB¦™½¨bz2 ŒÀ³<,°ËŠ(ähI4—ẟó¢ ”E¥ ‚åØñß zû?`ȯª•,³%vò,°äñe¬ÍPe–š1Zf'¤WeóÝ4’T‰â"MÑ®}²Óqö¤‹YA}²Ô!’#ä8‡Ïxw3 ·Œ¬Þï´î½ˆ}ÕÉÛîQÂÅ((ÍŽ±Zj<’–MžÍ£À“86¨lD@›f,h¿SF ©W¦‘¤µë߉KtNçÈ-ËÚî›JÿªÏA¦ÍG…ÛhKVïC6I„‹FõÞ®ªÃòW;Vùú§ ’6$X•âz–\‚·²Ý[íƒém’šX%éµ ¸×¥gop‹qºkvm*=ý(º˜¹hKVóL³Þ^¨Zù49|à¶DNX%•'Ê] Ï}8oˆéñn÷¯Ým÷¼¸ÖQõõˆüùÜ @,‘ZCAßôññóÈȘ™Ü¡5Ñ âGÊ«FÎçù!ImŒ”*j5U‹_‹ ÌW²âÍ P ÏËž|Èû]&ïRhd±•V&ŸìME\I'vYîݳÉ1…pøÁ®»fpìGkՈȷ³jUE« J‹³ö°—•— GEoßg|,¨Š„T¿úS Щ0ÓP‡íx×yùšõ„Uðôx ÷Ås³ˆ5^Á1ÛžÏ)ï|q)pŽh°ÚWŃ'á¼.>ãÅ+–ßZÉV›e°-öW¤ëX»¯gÊŤcˆ;lÔݪÃ3±´ eß›£ëM*Ôra'½ÐëÓüÄ®!•Í”°ING®Š7¦t.ª)‹ËkÕÁR=…V|2%|Ž:dŒDv:«Fä|1„‚²º>ÈŽqª˜ðÑcC:'7yïݦ*9%öÛEÍ>W|¯õ@CY¸S½A~¾nQUòXÑÁ̺vŽë˜˜×½¬o±rÅìÈ7é5F ¹8òÓ¿L‹É–Ä婺ø½|‰ŽèQY¿ê,{ Æ/žòš,Å$ü¼ínÂÖ¾ÉÐñžI!ç Û’œ«ê]wèü“®$Ù]`ñʤò®ë :7c£õÕøà•ÏÂ%.9+•S†`xAдLάÊî¾Wâ!_EûÄdZ°@N§Á2ðe< ÿë`…Õ‡…Õö˜–÷š‘­2æl$÷1n7•<"î.pP_7ÍóiG†j&oDQ$µ¸/&ž÷yñï‰É¼ ¾ZN{!É›±wL4!0ˆ¡Çúyë„ìÖGäÃU嬔¨´É)Ýc ùÅz§W¨üNtŠ8v§ûi|º(j¥Úâ„:Êö`$Óµ»Ècí ßÂ-ÿ|ö±7é¡hZÍ¢X­ …ÍŠO|¦ýȃs_ÒáJ£Âëä5tÖOŒ(ž ŽRqš&ú&6œ¿3¿WìòÊQû~*úþÑ)n ^ýØa3[1™g[çñ!¤sLcIPŠ–oñ•ÍJä.iž²¥«°˜6ß–d(a²lSŽN%¢YvPÊ)ÉBTö7IzÔàç ©À‹›ê:Uë¾þ?gÞl endstream endobj 81 0 obj << /Length1 1508 /Length2 6833 /Length3 0 /Length 7845 /Filter /FlateDecode >> stream xÚ¸TÓï6Ž€”t)é@:“é–ncÀ`lÄèî.)Ai¤Qn$¥KJwÆ÷Wÿÿ9ï{vÎöy®ûºëy®ûÙÎX™´tye¬‘VPE$Å+À|S×5€@(HÀʪCÁ¡ÿà¬PWñè?r.P0 ɃQh¢:xâ€ÂDA Pì"Òå@쳨óž PWV9¤“— ÌÖ…ÎóÏ#€ áùíq„ºÀ `@Œ²ƒ:¢3BÀp€.ƒ¢¼þ+Çc;Êé?¿‡‡ØÑ•éb+ÉÉð€¡ì:PW¨‹;Ôð«e€Øú·5>V€žÌõAiƒò»@hƒ@®h7„5Ô€ÎÐUQh:AÈj<€¿›àøW¸¿Þ¿Á¿ÁÒÑ Œð‚!l608 ©¨Æ‡òDñÀë_D0܉ö»ƒap°šð»t0@QFFwø·?Wˆ Ì åÊç ƒÿê‘ÿWô6+ ¬åŽŽPÊ•àW}ò0(½ï^ü×ô@øü³²!¬m~µaíæÄ¯€9»AUäÿrÐÁ¿1[( @POˆÿ¯z^NÐ߯ß0º?'¤ÀÝÔfEø¸‚Ý¡”‹ÔÏç? ÿ½"Xà (€Ô† øwt4 µù³FŸ¿ Ì`DËOüõúדZaÖHÜëßôßGÌod¨b$#Ãý·åee‘ž^A1¯˜0 øýw-0ìoÿá«‚°AÄþ”‹Þ§Jvÿ«Ž¿ øïXH´r¡Ž Ý(„ ßþŸåþÛåÿOå¿¢ü_…þ¿)ºÁá¿íÿ;Ø÷úË@+× …žu$zÿK5„þ]u¨5ÌÍñ­*(0zd¶hEó <ä>üƒÃ\ažPk- b÷G5pý_ó‡! ZHWدíþ =dô-⊖æo=CÿWAZÿ6A!aØÅìE€>kôJà#€žJk¨ço1øùHÚ€îÑ`ƒt!øu° €í…ôøs\hÛoX(à·rC p¨Í ¿ðÿÐ…Ð0z§¡ÿ†ÐùùÁN®(ä¿ !Ü\ÿ€Ðˆz~¡ÖÐ?àµqsqAÏùo ¢ûþgýûRB=¡‚¹i$D<Ô¾6´í¼Z†Îƒ÷ËGœå•ލãžH!ÛÌK;5ÜL¥qgYKëÊ{ƒÏµfKÃǦ}é¸ö·=Mße-¥)ç¢0zÖdxóú/ŽßÙB­‘´¶#"Ï£ÖÈöµH,M°MØ“ §¯ÂDº@›¯7 ®;\7ŸŠmE§¤Lit¨X™œŽmÌgÆL,+¨cSÒ8r“t7=ý‘kÌg°¸3Ù¶š ¯5“¸ŒÅÅÙ½=ÏAGùªÝU•á4”ÞO˜r“úh¨³Ÿ¼qÅ`“:•+MM`¦)t g[²Yú1‘ßÛšØrk°Õ º£é?ÔèV‡š–ÈéZ:¢·XÏÒ»à'º×”eÇSýœE–µÊãt }¿ ÏíÆ¦fàÔu,ܨO ‹KÎŒÕ0çcpýC@æ£÷Î-c3ÍR%à¢}Ÿ_É kÁm 篧(hY)´T°4˜ìWÜðð}Õ+7ºŸŒ8ùÚô¡m +âɲÇ@5”`Ôž¹ý~+ñŠÐé$™—‚0ªFuÙiÁŸ? “›ƒ­ÕÚ¡$þTZlv”9ÞD’§G6£§¶‰‘®oü(L&p‚”˜Âa¯”áõ|…ðÐK‰à&‰TÑ@ ÿÂèÁ-yíxÒšµ;Ú]·Í¬\øñÌUs;žÚYk°?A=L€5n'\}•5:™^Ê•ý©`AQâoškû#îûæIÃ~®‘L]äSxTJçxÀšÅ«!†ö§½qôéoGwºÛÙS7=•.O±(¬”õ1‡ÂËã…Zä{©¢ôMzÁjm'Mx.]C6'„&gâ׃œÌ¿6hì;ý(s–•“°Ï†‰Ö*ÕÙÄ|° # 䉾‹’G‚§|v6ëp)Õyêüm–gMÑdu—JN§Ýô‹-5ôüOú¼!gX…ÁŠ¢?ܵ@Ÿ>ói ð’AvÖìùooš:ÓÉ«7ãD?\.>o"Ë7ŽŸÊ7ÒR8P»\³l¾SÙ\ŠTNõ!¸ë9NCÙ¿ÅÞÙæFãÛŠ$:?½4ԸϠ“©rT´›Ñ?yòƒ-e-~_ñ†Ú4@ SÇNà5£bŽÕaQåˆwœHîÜ PT¸ÐÅJïn3… á¶¹—­¾½{¿Îï .EáZŠdÞ«4ЩØ0+s _'„‡ª–iöÇ1©Ü‰©¨ý±yï»ÙO Ô„¡xFçÐazŸ›4ǃ2×P1ÅÄý—Ù>¾kß¿kûA_KàX©Ç¢žØt¸ã¨$eC™’®ÊUñ:¦yƒ¥ÑŸDr-”!Ⱥç î-9;IR]u)÷ÅS²k$?Iò„ö®—w˜2—_4¦fÞÓÙ½í®#—:[ˆ­-oG@C Çêh}eÙxÓüè¦}’³¿=NáÁì×BköŠî/t¼Í„1øéz¬‡q~st1³Ÿî:†U=½¢}Ÿ¯F,:òöd.2xÜ0‚¤œÃ¬ˆÎRS.œlQýtrܘÙþ×9‡{fbì•Úó±µ07ë……úP̵%¯t.Ü皎ý${¤fô´¥[Ò_@b-µXcD…MÁböþÌAðÁøí®âì㯲~uißêºq—uv9æ§FÌgYI˜2W×;Ž¡­1Ã$ßྎ!ȉ;¥i´¿´PU†æy½ ðMŽŸw¿O¾ÏíŸPËø>E¡7Y;‡•¤Þ»=Ã_yÊ@½š úR†f†ÏiÉÕsרÛdVö#,Ú!ÚÃÍÍ1kÈ“¹›ð6&…Ûw³šc½Ù`êp9Z©¤.¬jCgHé½ä’k±+ñC‰Ù‡½ìá`¸‘: ˆ£ó^wjMø>7ÿ§ºÆ9ïqµî§¡¾ÍQò·{ò’\¬v£iŸê^6Ëô­DTàEÖ}X¡™m’YOi~׎‚wÔ +_ç™`èyº«ç3„iEqÕ¿„BKã‹lŠ:0<æ#î1ž+ pŠà•ÄØcG»÷ƒY€ ³?ƒêË» ¤`ääQÞÇ›¢½=¾…’Ö7ö^z™±AÝ Ž}ÏWhœ‹‡låh÷gß¶dÞó¾ÝúE/Rn)€ÿ=Ê¿%±'=üv1’k÷¹XL¯ËȔʳ<¤}•þ®ê)…§}^ >ÎÇsn+êéÚCÂn•,¸¼Ú¾öS,PÐY£/yÒvÔÎþxÔ¸}Ê»#ÀN“+Ã¥ ôà¹uÄa2.ÍÇL®L’å'–"¾·-Óh$×+d ÆÄmûèI^A» ?V"Dã{T=´mc²¹Ì)ˆƒù¦£#_ wmתDùŸ|¸¹:w$¢„ƒ‡‰ÌX)wø˜‹,ZK-^k¿ÑЮ;½=í‰cÀÅuMÂòâ3 ‰Ç¢ÿøšópƒ>_/o£èÔZ@57ß¡¼|(Ú~1 <ô¾[¦ôšaå¾sÔ›ømp©¡ö7VïЉ{Oj›g hó»@(/àûŽW|Ø¢zL’0„È?P˜ NrrªRä*/ù^³”î¾ï¢9a=ŒAÜ) Dz ᪢Û1zô½cS²¯-ó×Ç%5̱TÝbIlà${qnªV`>çè¼L’mwµ*×V‘jæ‚A#»÷ÜÓã!†yN|ÄÞéȺ)½¶²îŒ„µáeâ'ÛûGßÌåa%×&E\¿øÔ$ØÅtH¹¤qé›…‘öçBÈ tÛfL?zËY+ÈïìjÜWâ&&ý{¦KHÓW«ç«k¦Øa1cœßú—d.n['™@žjžw¾öå‚BdrýÁ"Yß§“öÓªžÏÒ“ð}ãW,¡£ëoæ§¡t²WZ¢1ù˜é= „v´4ÄZ/¡ëÓŽNG{O"õÒÕ5«iA7[2ã âUmªo²Œ'þ,b ù-Ô öÏ̤å__øxÜ®² *îÙNtÖ=|!›ñu=kG¦¤œ|¥Ý¹vä`äþòÛ¥±‡ ¸ÑŒ £{¯µlîMâWóLëöä Ÿ¬µÝ¦éRPl’¸øÎÝò3a[CÍØ»'žgJ,7¹t¡…[#|~yÍÃw†RÞ”Üý4Ò¡ø1#R]“™,q¯ò ÓÝ[÷¹ÛËøpø7=pÞG鈶pHÏÍ=Ëô&‚4µKwk°©8>ÏY|%iÄôÁ1z8 = §&6¼a7SþzþBtÒáîTâíÇ^çÙnDàÜ­Â’ö¾¢Þ}L”F}áûH¸`-i“ƒŒŠYç]õs’€FÝüã´9Dmp,NFü[ —yC_"ûDƒdõÞÛ›~ßÇËÃ=ÏÏ:Çhw«Éo¶æÊ¸S Ä•óü½Øw\gè sb²èÀ,Ön›ÿ¾Î^¤‘¥T¿¿r;]’³§äã[{³zrÄ1ÈHòIž·Ôœün „ÆyØ­v+C¬ó]+cIæ9Q®¯Ï:ú?:”xΑ«ÑçŸÇQÊk]Dñò«Íçf„ít TÛÖ/}’¨ »ŸyÍѬdñ±P¬lÚÑ¢²O½XXÌnWQa@lšò.«H[å° Ó¤€^œ>wº×®z™¬½‘…mµRBÅït|«áø%½^²s‡â˜(¶ÅÏ)²¤NÄ6…ö$îM¾£jœ›·øã©Îœ Ç£5˜ÈÐuývö«Cv.êkg£@½[ˆ#Ôcº©‡#~<©RAGΜÁ›“æªÝÔ•Õüs¯kU–¬ó>et¤ÅLmÚŒÙü@6×eÏæ›MÙrîŠ)—gû Ëû&¨±y[MUúXíW,—,µ”´Ÿƒg²¥¶¬¥ANR3PmñÖý+—ºŸ2}7mÆ·Âq9ëW+é·û]œÚiª(í¯sÉhI;#!a® ¨Ô]%ö³U9Ó´'NìJÎSœŸÙ÷3Éò9k¦8š/³ ·4Ô…9÷º³5V œÉ-i`4ª=u­óÐÓróI¤vmk©>×ÊyÆÍû¢²4OÿÙóÅïúçZÌ­ªÃááÜåmãÆP )`9Gê)ÌšŽ.S­^ÜÖWì9‡± oB Üòõ÷=qË)ªÍ ™Q<åGõ¯_®+3X $7¬¶*÷ù4y„ôé˜eÒó¼dQ,™LS–Ÿ;2 •r:Âõ{ÞL©µÄª(ÑÜÕ×+s:wš§¤:«eWç¯QoÒ„­2`±(‡w Gí½4nƒ¿‰ÿx"-%æ*è–åCô·²‚Àôö¶ë•EK?|’`ÜùÓ’@²U A›|ð1Òí‰èEéVý‘ûÊVçI€ê‚¡O¶úÄHj&>¶TýÈìâ‘!8%™ûý„0ÒôÛF«â·Ceï'áGQÄói­¨ˆKå2éDøî¼q¥ÞÁ:Õ7[’$1fýóÎu’PýÛè@—@u”¤—DU8×Z•V‡¿9Q;ª‡NÆ¥&ÎÞxÞS”zu|Ëôäl6·Ÿ^-s;$O+™M…"ÁÎ{R¡!–øˆç1l¾Õñ Ñxþ©‹Jeë³¢9Ï·ˆòªpÔÝ¿,sØßE‡¬-ˆGò‡»YfÃf=Ú˜C†÷Â4gi#‰ùb^ÅUàë˜tÜMGj<¶°÷“=xó}›@%Å,ñ[q¿û$a¦ê/ Óf¡ñ5R§aákO32ªFÚF`—ö|-è*Ý$¡ŽÉÖ«HL±ƒO™Y{U}-µUý>çX;r“ÏNŽ"ö;f ¼~/*Æw=]ܺiEë. áPèä–"ì*Šdƒ‹5kIŽ"lOðU7Iu¡Rfptõ5‡!½Äö‚rŽ&…ŸË5E$ƒ / óKÛ1ªØCj÷Ѝ³I¨ºë×Îh,ˆª!­í\gˆA¤’„èhÓÆPìF©ÖTbÜ "5ë8xÖ1¢>=fG1ŽÍ/ø#hîô’æ´ÎÄQZÓºÓ<3Æ Ç1N;ýyßéDqò-ƒ)Cá½Ö E)佑÷öZ$b«G•ÌYïl“e£_Ä ÷Ìiíň˚kÇk–&ƒ.:¹dï€êBÜ­X,o–Uz‰·nr-4q ?-' î§³¼]¶ öã£Òæ_øE½˜#5û®¯k¼ºá#éŽÝ:–Yt‘ÕA'þõ·Ö­r‹-ÁÇcçÓz¹±IwPô]eÕ&#Ù5‘4Oò~–jJ°ª'ª/}#B5̺㄄O™Ò6ó[­u©(R …n†¹T¾ŠIÚ¤ù•¾Žž¿o<¡"ËoZòìË‹º}™‹ë7Nö¦ rûúM¨&Ô¢ír1ãŒÉ©ê8g‘B"TË?“°à*'™bðTxûž¸V¹zî*ç­}ìr9N¨WôÊÝsê‘›µv"µÛS/ ÊZ=kæä²WVÜ›ï4ÃÍfáUžŸÙ…=ŽÖ„jåH;åU5qiÞEØdqØJ{˜Ùd v™løoÇ(^|c4'‘¹Wà÷­jf¹WÑ7 Þr'$ð¾ü¢×´t9œ[¤´zpšuË$ËÛk$iŠ*P±à0%ôÜZGfÇ’£'LÚ'Aâ¶—¡dçAäºäebÕ¦—ôFÏM³þÊ%Þ•Åû >i½d­DJáLlžñ-·¥K#&÷Sñx­ó°ÚÝÖ·L1º>bn0§œ±»í øR1I.€~ëcïv·½2Ÿzrs*ƒ×çf|sµæô¥ ©NIW=‰ç‡¯Ûx÷#µ{ðNäÒôþÑÂi:¶‡¤”³]-š¡ˆßÙ’Ø!O1¾—Qzþá`‹GF1 ²¬ÊŸ-u5±Bdvå«×à¿!ËNõ™M„k\VØnû®)j‰2¦Í)ùëñÚðÙn3t°zh?3¹“=æxX=}±³QJÖ•Ì­ƒœoÔ¿¼ÿ ÷Z›Ý{&€Zaćõaî ¥«álI×O/žª¹Kvå¹°‰Ü›x[ûéùwb,UâW`¾YÒ.~*Œèy/ò`,þv¡*ÒÄÜsàªGŸsë‡'@Ü”¢½A³¼Ù‘)ó&>°—Ql9‹v “U)J<ÈÔŠšé3²¨§o7³ï0Ñ«ìlÆ××¾VTÝùnº(üfœÉ$1Ãëí]\4kÇê¯â#)Gü :tzw›`Ë= nÁiÚ]üÈ vHÛ(ÿ2%ó,ðpêþ+Ê9²hƒãØ"~ ïýè[ ëa –;Ñq§['FÈüV,ÎÁ® v]€‹›±Éüs‚µÔg*­)‡'ÝÑÒ·d:”­âºú»Œ!ùí ~åÇO ±'SÇéÝÜgÆ=º6ça]C:É îDÒ™­øãW¼‹ùZô6ú2w0Ld'Ê£Èï6¼ßµ˜¯x pº|™.p`Å¥ÓÄg9˜ßwšJ­‘ïüŒ¸sÈmv–„ ƒ±nöZ¼’koöVÏ€®&K/•n+©*ÃŽXá ¢KA“…¤ê„?óNUÛ¹´ù‹Ü²«hôÜ ƒt7šúà±öét<ÚÔ›­\”nÆ´œ©çëê%ÈüdôØiý ]ûS‚2&,¹:@Z.G+ì/±ç£‡á9[â—qB!‘±îJR2©¼”?» 1Ì™PQ‹êèx˜ª«P$w k_ì‚–»/n}Jä}ñÌ’¡©ûUa=·­dÁÁÅ¡¼ÚŒy0B¸ÙR{r yð0g²Ê®_Òp™eßT?¹ˆA$š.GåÁ!‚->Ç÷ 3CUÿx:¬[„òa9ÞXWÃ×8k¸³Û©52›qU°^ .v_ôHŒZ<–Þ„PXÖkyìDQïqÉø*R< ¹fŽêëj’"ÏÒøð„Ù°µ¥P|oäu²_¶Û¨Ûi½ofòÆ{œÑåž÷W~?î.¦¾Ò…4 ‹Ã<Øâž{Ç1¸¾kXY^þ4ÈàÛ%×ÞŒã¶Ë?~¨Îvyú¼Y¾ÅЖÊ+ÍxØ•×v‡}¯\)ýfæ­1FÚF(É:­\›9.<Ú šŸphHó)k%…Ü?ëÈÂß#y¼CJA+Äçœuå5s oŽ¢ê–FˆVfídUz­¯ Cc}ëé¤â·¸1¤³‹Ä5þ¤AN(ònJ­d+ÈóÔy“•êæÆçZÁàA%ÝÙx²^õˆ~«mdÛt»ê-5†O¾’„Cÿ‡„ÐÌnN—éäbùÕïæóC* Qêgz!ÞX~ºßwõJ¯i~©šü<‰ý ¢L=yX®nHL> È ‹Í’ÇÁ2ñGá”fíL˜»=²m÷©v|­ÒÊp0¦ké&Uúíí8>ÙŽJÂÑûiOpôVÂBà–ß(Ož¯éîÿqEÇ endstream endobj 83 0 obj << /Length1 2045 /Length2 14669 /Length3 0 /Length 15932 /Filter /FlateDecode >> stream xÚõP\ÛÖ ãîî4îîÁÝ5Ah ƒ»Kp ! îî îî®!¸»=ŽÜ{Îýþ¿ê½êªÝ{Œés͹6 …š&‹„¹½)HÆÞÎ……ƒ•] ©¬%ÏÁ`gçbegçD¢¡Ñ»Ø€þÃ#Ñ耜œÁöv‚ÿÒt]Þ8) Ë›¢²½@ÁÕÀÁààäàdgp²³ üGÑÞI t›”Y öv g$I{O'°¥•Ë[œÿ¼èÍ|Ìš$lAN`3 @èb²}‹h´hÚ›A.žÿã‚^ØÊÅÅAÍÝÝhëÌjïd)ÊÀ p»X4@Î '79à’*@[Ðߥ±"Ñ´¬ÀÎ 4í-\ÜN Àa6Ù9¿™¸Ú™ƒœoÑšòJUÝ_ÊJ)0þn€ƒ•ã¿îþ¶þÃØîOc ™™½­ÐÎlg °Û€ª2J¬..Ì ùŠ@gû7{ l4}Sø3u @FB|«ðïúœÍœÀ.άÎ`›?jdûÃÍ[›¥íÌ%ímmAv.ÎHä'v™½õÝ“íïõ¶³w·óþ²Û™[üQ†¹«›¶ØÑ$/õ·Î…ôg rð°³³ósò@އ™Û´<@ 9þ ßjðõv°wX¼•ò[€Þþ¼n €‹“+È×ûß‚ÿEHs°™ Àd ¶CúÇû ²ø ¿¿Øðžýmü8ìüþûfø6aæöv6žÿ¨ÿyÄlÒêúêjï˜þ.ù¿Âwïì=Þ,\<Nv'7€ïíÅ÷ý¨Áçñ/[y; {€À_é¾õé?)»ý=ô/à}©Ø¿M.@ÿÏ `ça7{{pü÷?MþÿMù^þ_ýÿf$ãjcó§œþ/…ÿ9Ðlãù·ÆÛ人¼m²ýÛ.Øý_U]Ð_«« 2»Úþ_©¼ ðm$ì,ß&š…ƒ›•û/ì,ö™«]̬þšš¿xí?öÍlR³wÿqüY±³ÿÙÛ’™Y¿Ý"Îo£ù§ô¶CÿWÚÎÌÞüeãäᜀžHogý†xÞo[iòøs˜l¬vö.o&€·}öNH,/€MòêOÄ÷†”ÿ‹ø¹lZÿEo2àÿ²ux›‡?Öú?,7çëüÖB°³õIÞ77@—ü¼YšþƒlfÿE¿¦}±É8ÓMy !Õ®±ˆD.õÏvŒ62c/Kö¯æíò;]‹TÐì¨)é©u»¦Nª½×RRŸ×¨~FÊùFþ]gQ=^ìbõ7'ÄEio‰kdÑð˜‰/V«_nM+ÄYùvîëŽÝîjªQe‘"x VS¬‹éÒm"ÿTY²i”ÆÃâ£OÙ3”Šä¹ÄXKßKR@ùÔ*µŒí¿ÏÔ³–¡q„zd¹‰à0p°Ù è©Çögõ܈u?;GªÁ¼,ÚU Zé½h å³öÉùôú§x ¼ýà•S½öäú;´6Ñ“¯?$‹à÷<’n~ƒ3BšU²*¯(x”wÁóÅ MÂoãжï1K¨5Ü¡k\Ÿ©x ”7·'ö~KZ`Dª{Pš N\Z÷S±*¤a?5Y “*ßÝ` ‹q<9_²CŠg;¿Ñ«Ï*JW†øân`^æ:íÒ‰JýEÉDMÏ3‹æÃš¤q{c² û¾×c|DYÀ™¶¡ŸÀ‘Qd¾áŠ&ñù;:‚WB®—ŒÍ¡xœuVÌùÆå”9[T©a¦åeϧ@Îá›þá4ë‰vãºôA8<®òxë´Skæ¹òˆyºU­.¥†)÷†°í\œä×P¦ûÅ™°:hPõ“š~ª×Åõ¨¿i“Lž÷­6ôœe%(k·iöÐãûFS('­NZ„_ëctøø°*¬¨²’©ˆSáµÆÇ#³]P`”$!É,3f~hh¯.ôü|Ñ1DÑFÃç÷ÛÙŒÆ,_Üq‡QÂðì ‘^âu4 }\ØVzaº[h¶Ï ˆÚ+)dðL`5ÆF˜<øþ:cd©b£#x~,‡¼ò@Ÿ‡ó@>ù‘š5î>[rPtêÎÜi³S?Û«‹+iTŠÈˆ’œþqµÄ3¡X¬¤rùÁ¹"ÔY*˜À¥‚›Œ‡^‘äînæÉÑ,?§P'ÿkã¡ïZÚò°<Ý‹†´ÕÊ~èG2’–H; ‡“\_pKÇgG9º¼ÑH(·k´/5Kªã6‰Áœ¥€Ê<ªÄ8”÷-ÄÃßœ;ÉísP!~œ~ÊY¡jz¦ŸìÔ‹' JeÅAr(Á°Ö¹7Œ€¡!krå¥/û·T’Ñ,&–"Døð« HZ‰5Ò²¡þaø 4yWiœ {1bKäižÔŸÎ%ñ±uhW²úNÝÔsÙ¿§ß/•v:{ïpÚø­?’‚Ó¥vÍHÂø­IXïNlŽ+»Ð}l|01ãQŠkÙJïV¾ Ñ¥Òsª #nÚÝNWÏÜ!Ù|è‘|ZØÌMÞüœNçÃ2íè‚;Ç Ú–*L"a>JGŒÖp-¥ åä$ßõ°çð$Û‘ÿ(p+e¤0 ÂA>940qBømœŽw8 2)5› ßPà¬?˜ò4då¸G؆ å|¦cßÛƒøPt€¥Üæ"Hûɲs½¯ï· “màS×^M1#Ž‹‹ž"±«´yìÆaàpQ~ï»nÈ]˜˜5[ŒŒ«ÍÎKÇûrS¡¦µ{b§àvE¢Ó~ÖíÖ˜#Sþ­œTIïHf5\×cdJ¤ö¾4¬Ñž…˜WFŠÚ˜òË^ÍEßw,î7kœ÷ð :èŠSeÀî²´œC¦ù„RÂz±è×rc·Ðn3ÓÈ¢z)Ü¡Ľ3´›”.†níÚ\ƒŽÙÍ]q ë ƒS2Î{ÿ³f[¹¾ŽÏ-¥Æjœx>«@þ£üA¿ðáëµÍnûûãý0Œ#’-‘]LÜhÄËÔ|·´™ø°ËhŒËÒÁõåQþ;mž÷ÍÆÓhÈ?'ö¯@p"¶C›C‚¯ÏM3ѦP¨RÏø¾Ã2&aÐsåì·f{;v9+Aò7áuž`M±/GPb­¦¹ãÅ+è ùŠªž¡ Ã³™—*jïòÄCËy~~˜ƒ×Úh ;NýÒ¡¬.¨6Þ:Òùá¤s̽অíÒMüc“ÈØë†±R²xhþm‰{·ÊT\°¯ÌйžBsüPä‰{Tÿ¯Ó1š@å"³î,ÿC¶œ’sSS2E&Ü´4NǵR LõÀ˜`ŒŸ&°0”Hv¿q”ÐçíÙ"CéÜ£÷ÊŒu±s’€5Eùéáö ç‘›¤hÉIè6'œ„ u´ ìÜ ¦…ºÛvË—Ü´päç×àƒvŠË:Ô:‹n1ÇZ÷–—ùtŃÙG—ÛkZØI¨,fa*ˆg†-ý¯Ì^_ï{½¢&:¢aáTÒpP$çAôg5TÕ†êR:¸Ž?’l¯€NEëÛNOOUØâ’aôÈF¨. ›¯Fì¡Q£Š.X§Þ³è–ïj)g× oO¥,î(6ÖE|¢ŠÕç‘ ·ŸÎé;ßGvûÉbF;»‘}ôOJ´.UC¶$Ùf;#¨›C¿¼‰36Ô† Ëjø™ìu@žˆ¢uÊL­S<)€ùqôdÙ`½þ*öƒôÕ›g«}½±Ð%xvXÝq¤âx1uJÖÚlìfóÄ;/ѧPãÇ=Ô³$òoü>C7I «ßÔ}èô<Ùž¢ü‡üüöèÃwyhU%ÙšCª(nbbQ)IYë-³PÛÍñ:ÖÎ"6n¦kã¹Püƒ>5ÝÚŒi¼Ï¦ŠjEii½HäáqÓ¯«ÐttÚ4ÀÚѧ:¹L«Ó ÔR¾ (­×²×O¿3@"J>è}¦c† {Œ¨ #i“›Æ’Æýy·¬â¾Ó LÅÖZ&ç–l)¯,Nçó^Ø¢—†n¦Ÿûþíí»‚¢vþZls‹M´z¯13ƒù«ÙËZ1ÌâZA!Bî¥È/·Å3„ßOªJ¼Z§ 7ðƼ@³·Ð«Ö f"^ýg×À{9“Yjü/7Ü=˜èHãQXr‹²Félt.º¯ºÏ“CO{c®$<Œ¦½ÐðO*[ƒÐÑu´3•¾KTŒ+Hs|¡"{al>õ’ùzœé3úxî)GÄÖƒtZÊÂâš“ÁÑmÖjü„¥Í¢b¥¿/ËCF»ZœŠlõ›{ŠPE×I£©Sf#玫•4UPyºdDÖ"ú(¨æù!A>ƒ £‰3–ÕÉpÆ*sêPMØ×+‚DÙE…°é‰Ë´%ž:b`Í…Åñ‡êV+Î6u‚…”³ÖÆx¼\^ ”mO¿Ôƒû^ÚÂçª ÝÁ¶?w+ fßlš(7NfY‹&ÈÉ—  IŒ+«ôÏ ØòpVäÎhäÆ," ý±P(C6!çx☤'¦°8µzàGš~IÖŨ6¿­Å®˜¾C½˜‚°¼ >ߨåTâî3ê€nŸ-´ƒ2ŠæßÀá é<+ýºuS ìÙèqh¾û¤Õ–MïñììPùØ´o¾sG·j7ï6‹®—9ßš:zRý9ø¥]DLf{ƒ"mIã%ÂÈoãáþ¤õ¤®®ÄwxнØrñà° ‘m8‘Ÿ0×~'×}ôè/A³ÔÄíò™Û 󧘞tàf•›ýQj· ãtÖX_ô¡†ýï2þûèÊ'y ð=g]×ÒùzMÈt¯Ÿ 0Ak"N⧣ LåÒ³Ý-qLknö1a‰ÏÞNßîµn·<žÆ4߸¶_[ùµñOXSº“ ¨é2W¹¾¹S¥¾qóWØ%€V[‚=¨ÛþÇÉ…Ó¥ÿ¦}{û.8Y_./êîñ¥ø¨êoÒZk*^¯©F£b°úá–Ô¢+Nð‡wïB¼4!Á+)!ž×A°Úªˆ=Y²b¶Ð“eJý'¯{óçp6j¶•Ÿ0àN—KÄí˜=ý»H¸çðF !‡{=TÒê3ð÷ƒõ€œTH1Ю.îô O €T¾°^욺í‘üßó[h¢-}K¡ØwÌ2kv—ž†rÆÏFB*hžrÚ °l«T” d³¯.Mp§¬ÅÃÅãi`÷Ì$BRoÿOÉ«UISŸ¨‰v‚rdŒÆ–T¡êíd>l량Iy;¯Š‡šm_w€õ^«ºÎ¹ÃIãæRU°zrXéÌ—3>¶û3py¬ÐØ=ÓÙ ÚqýU *m5p>¬Êó8€qUýxD',Åõ—yv’™ˆ&»ž·šæÙëja¬ùÅÑž"*QBnª˜Ñ¿H v%®@IF4ïs«¼+qE¸èÜötAŸð2t(k(L¢ÌùÂ*Ö5’0Y9öb³òÞf•6}‡+BÃ/V×ýEîUÂí£a?“<»¾¡œöJM›6eÿWò« Ï*„?W`±šÏ¸/ÒBÇWWáz®E¼ 2Ž´ycí™”hFWEž«î™´-µnƒA˜®¾¥ŽÎUEÌê[U2•bí²¶ÀtØŽ»ðÑn¦˜'ŠçÓ¡iÇ„…6¾R\¬.¦úmž8z¨ö ohy±ù“<^m_²Ë…®¡{ßI£­„ÊHk€ÒæÕv3ô³Á¬þ¤Ò²êyAÞ­§B™z"I§$4'µ°^«$¢*YÌ!Zú ùk-ž„Ý{¸ÉPÁÎøX>Àižu²%¶Ý/;G²ÃØðR$«w¼§µF›÷—H<>O‹šŠÖÈ—%¨†pÛ£¬]m©*ÝæÝÔ¾ìE;¥ÌLKAG†öó“Y7¿pŠ…h¥Âœ0?¨èï!Ê7?î×¾“Þ‡Uh§uj50EĪRÕìšñs”0 º+(53K!ü1—Ún®ÔŸgÊÞ÷e¸3êÛšU¯ÁüYFŽBa?@”qF¶Y&v‘pÛ[H’d#o¦g ÀdN_ãÍ™K¥ÝÊ‘¶M¹´#„‰fÕÝ~•Õ”Cô÷æís¦ê’ú ) ¥TÃO*PE¡=âê)îqsbúQP‘•G%®Sg„*oú#}ÑL_·¹PÛsØ8—cÃŒ°‹V`nÀ7Å_Ö¢Ò9p5z®ôã½_ú*úIbã›~“[r“OÖpÛ°ýìÕÓ€fšð‘·0 öζC‘Î4ä zoÇœæÃoHV)™ÅŒßúnRg’Q%0ß`¦±0Å2©rѤNìi9>#_-4RY2¸%óâ’AiVZj £keê”HSs žÈEÕ4±äÃ7x-¶ÅÇ«ÇçÉÞëÞNò¨›—R1É‚Z5 ü›oÈ+¬Àã/ô’ ëR¦?¯HFÒऋ=ˆ?Ò7Mê÷v*ê>'p\¤E¯}ÙËfÓ·voÏbð繸wîV@ ³˜iBûû¼¤úr¢@TºjÇŽ˜õt—RÑ0ÀËý¼*<8•´•K%l¨ç’j)Ë!î²M|E§„‘òîYª&üD`4 ±“é)Š&7} ÓnÖ³¤"…+y¶6&ßwNœ<ÛnH&¨ ‡¯4Àâ—àMJR4P¶"þb+}+ë —9“u³e,ÔB´ãJŠÏæbLÛÜZSña;0%+C4ýµ -ñŢĨÔPÔÇäõ‰äÛÈ ŒóžìmƒÔÒL†÷Ž×D^«°Cì,±à™?þ¤½™‘Ãç6ò•¨›­zÜ*(×&¦[¤¯0}#ƒÎ¹tujàÃ<Š^½Hg¡™†X  ~`ð6i©×²À…ì]õ¿ùDo“ ’9áô÷D¬ö ÿ]Ç”pv>ü“uËÃCŽrj!Ù²°3@Ì9ulË…ó³aS²<‡á¤ñ€ß&z.! T]Ũ؇±8êÝlîèþ¦2·Ámâõ»x^þ… Ôs<‹«Œ¸’.qekêØWÑ<Ó完Ç"4þ”ЬÓú}ùO‡ †/YXÐ_1:t›1£ŸDÆN[Êì½"m§µÇ¨n½ïQBމ¶»Lsà”L ¥²ø»JyŽò¦2¸áI|;.eË^ˆäLTx´ÉÕìû&¸‘ ¶½•EÓèù1Øá ¹ï—¤ê8* [G±©„ €¡ùû•Œ%$BÚÕ!DN4Œkίø!¬áÜk·¬¿³ÇŽºÓËkêy¬(ð§þlxjn­$v\'èTˆ,Ìòêéh„èñ8FYºcõ;Æ΃oÏ¡õÛÕ‹„"ÄUçD‚M’ R¤†§·¾ÆVÈY¡‘Ò³*®:‰/\$Ç!V ¼Æ"D| ZúAwZñÑY Í$ʺC´Ã!Äñƒ)9 j•c› PšçŒ‹ó™?ÄÞëêsŸ¶U£ ƒåÝþa•}|Éá+‡áÆÿúü9üÃŒA¿#º­©°Ýz@Ø:' mí»qª+H%Rãà;ÃŽ³å‡A‘}²[Ï,/ÈùHeì|É|ðQP× r™£ß~³¨çäbÕoiuv¿,x'å ÿL•†–)?<=šÍ ’üàù#a˜tdÝÒ¢lÖÔÚ¨SUùוßçÒ(.4Æð¸+Ót^ôâ)íðs«*6?‡£ÕØUÍ©½æt~ D{ z±›Á]×ë+1õ¯´x©®Ø~íZþWçÏý°–- ßs»áSêÕo°ØM"XÔ™¥¼¦QèÌ®%@µ\ވޛ˴¢ø@jwÓmË;oв!çe‚_°°JEç¿4| ¢| 8 °Û"­Ê¥¿vøÜ[ÐmÆž,’$¨ùÒ”¾æw¼Û[pódéž§S7£>“~:–©iìß'8lœ£"1þY+ß'Æ”YÌZ±EcMX¯b§:Ñc‰Ï¡Êt;T—[ðBÉÛUHiú ^¶Á*#F=73$í×ã7%Lë ÉVªr…þ9tí_ÀDhýh¾0T×(ß”VÂü]\¬ü\5Ô¢–iÝ/>Z³Y]…Oä 6 ,~¥`~2v²2)`b†ßÿsm6£¢HÔâ0aöd•8°„•Ÿ¨2ü¹ÚQÇÐ"-nÒ¾ÄÚ%Ô@zzPÔ ÖüîKsv‚ÍšÃcP}bÔyBÝØÜÚ¯a"Á¾/âÃR± û‡˜h?ΦJÉ.3šCÂHû—œÕ˜vû¬êú÷~eg©Äõz¾+F±TÜô•‰ýB¨XŠæ"ž£‚–8ÁzÑg9Ñ.ð%£Òp•JÆVµ³¬ñ‡Ü¥~]Cäþ±;@ÖÓ¸žÈ7ºu‚dÉ&ߺd3æ [C5+uï|Õi”5*"yk”5ý­ÍûHBük¹’X;¤ì¯}úTXŠ5w5?ÎWµ¬ã³=g9æb¿4n·$)Sû"Eó,9"- ëô´½ÉðH {Eú·3gK?(wͨìgðW}'è“·0ÓÃ*ÑŠðü8oOñAŠ®RÀqçüìwžöhœxàGÑ¿#ÑYmųoq=³Õr[Ñ0Î{\#?½7Q^40ª©B³—¸× ‘@Âl ŠP2SÜÒ/Nô0³4h¥•µ_ußÖ˜°šÖÿ• õ„i)}ùñ–ÅÞÜ j:lÅówÀéÁ‘|å·¢*N™-Iôë® øZn’ï¸þEôÏÔíˆâËÚ¡aí÷#1é˜}VÌÉg¼ˆÜAÑVh’ïmº…T@ï/ “}…%†<úµz£Gi 37kœT·I t¯/ªÝ2ì\‚·³RqÅõ뺧­Xa³4–9„-Rš”Ò˜¾×(ª ºš|—xyn¿>þiù-ÞqÉUCãÒM#“Ç‘¶ +iSÛ³åGD†9DL£dòXùmÌ-¶%\½3¯@ï÷?yÊ‚Á2ã8g+ çkT]&fÃÙÜ<ƒ>Ì/eÝSEEâ¶}©x-æ(2M U/6ut“ 6í"ø¬lÐ׿D}0A' 't0âïçDÓ=rA œX±øš£nψž"¾ÝzÏè…¼ÒõãÐõËã0¬íq„…àæç>‰gŸ–=«–‰<]|Œn7äïʇ)µý´pԈ毓U¨¾âÑÐîÂ%~ßgCQŸ0z蹜V| ¦…Šû`¿sÚ„¦TƒGÜ…¹5bÍâéø™“Ê6ag%Aà†E¼¾À¾‹L¶Ý¯íõ°Û•êé¹ }Ö[µ ?ªr4¤Üë(Šè"mïÂfÔ«ù äfU˳\Ô>fgø"´«(£N/‰î¦`Gs¶ì¼ÓMß«Úè€ô¶«ïQwu¿ž_½Ñ'QûHñžSÑUÃrCÛý³P…¶E57hå'avýɦT²¦¶ H²„»d¶ü²HgÔÌòxmõ,Ý_!æ/Æêp«ÂÒÍð»Ú¬Î>eÁ„ f!yf¦­ß Ï+W¹>18¸¦òY¦<×Èu±ö‰̃éŠFë¼bV¿c–:ýñqÝâ 7‰i¤‹›Äþ]áiYa_qž—Sî;$Cœ÷RŠ¢ÃuË`_Æ.ånØø)¥Ã…÷¤Íd$äßB³Ðˆ¹Èõð" 1Ѥô¬ó»‘°"-¹Pvý™tü>ÞŽ&Q“˜h_%’Àãh ´_IßíÌ~)ÚT‚A¼_ïn^ù¾“ƒø‰èxYΰÑVèÄnNžâè–èjj…îd;-A›f1ê³£ïm#ebH¾e&ÖÜô~;EðEÞUXׄAÍ)óاà\:”C¦<æ“©‚ŸúnŠÿ€ÏKn €Ð,q-\žE+B}ndðdÌœ¿X¹ëPõ+]/}jtš5±ñØû8÷ Ës~#ZÖ8’„)G?dÖ<7‰ñ ›Ûˆüq‚üû&4ÿýÓqÇÃU0;Œ °èžð=ÃqÓø Ác“å—ÁÒ<Ö`P×U€Î#ìýú!a´*î§Ð®(ùö³è.hãljƒÊе-[—vÛ¯QL¡”/OpŸ›£Üg šº¢פúi»[Ïù»Ú÷ Î}­P„êl³àUg%ï(ëÃÒÜß‘(s™`žE”-D‚LŒ Bé9[T¯.Æ´€q ޵Ÿ)g]{@i$¹”Í2¹” ?Å5pìÇÛCEÜì±ûƒv3§|ŠñÙ‘&ƒ£ùJ0ÇZ3î|Shµ: L}?Œ±Æß½² %óW›C±¬eC˜ó$»ÄT*U w¡¯lÆâ.>>›Lóu2˜’“5Ço2h­aÈs‡ÒR6Òá¨H–ÓR•=J—ÈIÝìÿÖ/r¥÷z'ªîOštÀT¢âm;ñ5~v»}Î…©m³Ôs-2Ò’ªÚVbI2@Ê-Sáþ„®8s!¿^sXkƒKFå«EËWëûÀîÆð)§qÌø‘ë?ïµ¶«£ƒ'CÓŠr+ŸØRoÌœé¦Ð:!üÚ‡’.ÉËr¹êÁ­ ÌÐÒ8ظíÇpºŽ‘Üü¾Ž.BTPލ?²É9ÐìÕ@‚¸­N퇣³¾Xž‘»o_V'f1RJÕˆõ{ðøéÁMž( ¨ÿ•ËËwõa ?ù•œF‹³©|Àä›:oa~Ïû¶F.Ùð„)¾Ô_4¸(#‚ÞšÐ×RP%ˆ–”ï”#P'©b´G2%)ÐJJx-¥–”__¤\™.ó@H ™&®‘¨Øl Ë2bA̶mÏ ‡ëöðu¾{ΉÂbe"¯áåäà=ãßÅõý’“©¿:{ë'ù°)Y „7}è£ +/&lÙM6æDCƹr1/Jke~:únÃëèðþµUv¯CÒãË÷å|¼-N§5éNmØky”¬4 7Q,ÇÛ&yq™ Íø?RZ¦H¶”ŠañH(? 20´[Ä¿¢ÚÕb7É™>L<5°«³He*Éù•·H°‘b€e«â='zÉ # ó‚Uó9!9¬IðÜÔB"»biѹª= µ¢>=«1¡ŒévÁfs|Z"¶Ñn™çRLü¸ÌFNr®xX ݸiJf,CA¢ÆÉÉ6¶\è6%Ç_ûtšÁ3•Ѽu"³Mrq¨Ih›ÖþZûä¢Ô\9$èÎ#fÜj½ Êãm(l8Ð3¦Rç3¦tÓ¸ÜHðÌ’ä]ZªìÝO[o‚¸…´L†¾êÅŠ»¬A[àÅõÍu¿>’Ï-¸[érob„ñš2dXçæ*«)rþþh#=F¸ºÜù}4&Þ3ëÃæ2ubcÞ¢âÊc¹¡DM6߇©n°¨£¬ù÷Gß3Tùí,ðr€Ñˆ2b›F´ÒôF>$ã™ jLµkOß;Dl{¶^àhòoæGUZr Ãåsb9°åXo€+~°ýOtUY^R¾²Nï´F÷ /Q®A+6 ;ÚÖôGäé‡Nêuäi¤Ã©:$àÚ#f2P ÓÌÞ×òèlyYSöÓ±‘Ø΄jæ_ŒöÇê)®ßDóyöêHÖQ9~=™ÜõÙ‹êà×¢ûн˜^èÃØî¦Í/ˆ~áK¾ñqf2%Æ<ßm¢ƒ~̲í%?¦Ùeqn®ÄéeËrô[’<,¡(ó$êüHÅ;|8ø{O¦­À°v­áaV e‹Kàxù;$áÇ„¹«é¨§FÃÕÎöVDë‚Öýålc½á@ékY¤Sk§tد'æxÆjá4A0Jh¾E(º1¯Þä{×~õûÔ\ÈÍCÌM!·'ýY$D¶µ·B˜yŸPǹ—fw8ECXóg+äDÙJ§¶àL÷¡Oœ³|¹M‘® g àohz·_…êtÉœK°~õÏ)˜ÒD¹·úÉ~ÐYú1Y+@‘Éf yS·~Axöc‘XHïØ·óÐÖ²_ ÃX"ëfŽ— ™KµvB蜖×NäÈ("‡3/ªmÂ9‡íA™UÉnÝþcâ@îñì˜aÖØ¯Ùh¬=^íe¨ÛÁ@ìmH‡Íp™cCL×]ÊÐÏlÆbˆÏ™$ 2§"‹›Šz‰ÒŸ|CX _¼Sƒë?i„LÎA[?'ðÉ\Ôp¹€ª¤O'ƒ™ô<ÓWå}˜åG0’¹¢1å:¥vÕwh¸«qxW¹4%ºžM›;ª+UéißÃël^>!$~jÁâÝA°‘ÇÜO8˜¥0V¢äS"*Óÿ|Û¤ÿ Œý„`þVöƒ+p£‹kŸé%ÊéËi÷w=â}°ÄÔöõ³&ÃÖÙÉt!~êÓË`0YwÓç\Ú|ÎæŸ=µ‹ˆ õ†zeÜ?yðçZ†áH/Ö*—¼rZ'ˆµU‹ ‚…§Z k‘Š,9è­¶1€ïëüÙðâL#‘¶·Äù›¨²ºõ, â+E²!ë.$•Ñ‚†¶VBÜáIÆ´o 5‘ŠãÐ⽟iY«Ê*}¥BÌBÆC¦fl}xºÒ­QÃv(xß ©Ëê0þðM6‚Ç™ºÒfʦ”æ§/[¤{!2¶¬=ñ(Û¤@C›/pvâ!E 5U·Hä„@>³ŸŒÞtПö¹N96Éí.{ŒŸ“>-Èõl6þªÚcßò«/·B¸Ò•®CIõç(^´ïÁ Ø}¾%MumÚŽ ºˆÎ&"Z |. ÷A'·Ö}D3Î6m¶Ñ­'/©ïÖæxLšV Br–貎Y&¾äÇzƒÆ'ñ:;D³/75cžÎWé´Ö³œ`º¬%å¬.FÍhWÿ™Ú´‹;Ö¡\VtSdë³ß (l3dW„“pZ#ÈâÌO²Í”µÅ>ôDÛWq£æéµGÝÑìxÕeˆ½¸µxnñŸFà(¦ 9¿SÇ(˜Æš—GE>yœâ ÚÚñÄ ÇýþæxZˆx÷ë~Ç/À'ß;@!-4 Êd…nýòÚ·‹·M¸¼?H"K;;U"÷óþórK5E‘ôÐg+žTšr'µ‰œ:Á’âÝýe)ïZéc[á“fŸ3󃧠У€þVäò6ÜNÝ’ ¾Í±Ô$=1^nb»¹ÙWg‚5ÁwÝ»æø«ŠÞñT²2n‡jÞµˆÏöh8"N?…\\€§ŠEã¯Úó˪"P×›„’µ%hd9¨^9ß ¨ÝÀÞ*H$¡KU·êÔfØå;Õ ŒÀ–(‹-aCÙËZütbe¹>»j–7tŒÁÛF˜NþMÌKô ô­+v÷•gÃ*©:³r£òø&l/£Ê& Ts7}ý^€)/·Ê“Ð`£%PØÕÿ^ÿ˜Ä d„\ ór|T01v²Wä—/í{h  Fª€w ­ºÖ˜N’eêzÂÙ‡œæËwô2Pò+Ì^ÝÒqÏ"@¦¶eCKª´EâzÍ÷c  ƒT¹¦€³Hû“»5Å[w÷Ì—=Äø&v÷Ø”s·ã«¬“OÉ 6ø­«/)\4šQ™=…”Š·ÍàJÿ3¬d¢{^ê÷ ù:þ1®AÎ1±½+i[³’#à‰¨KCøÏ¼5–¯„V^ Áˆ¢BJÆv.¨÷š5dzw HÖ8@uÞ߯,ÏÓ:ïd#¬¢„÷Z úîñ£ŸÍ™šÚH§«<ì…%*ИtÍa²O#yæÑ4jŒ…ÄŒ¯r‰ïå¡{$]Ra3Ê϶#¹ï=ë"ÚgÚE8ËTó„Ø×ƒŽ…P1H uØv/⃖©Ä£$\‚I™DÎ Up–^ J¶N–˜ûŸºM¡L¨òˆôwW»A¾ìåë¦î¦VÓ¢i±*õ5¼§¨·…(‡×ã )—8”àî4â j2‹9Œ–B°âp¯öi1~˜ô©íNý²´ZAtŸ÷=âaŒ¼ òSz107‚Ž Oüº¨OˆD1ÿ'g¦`Ĩ‘¯“Í2Û1¢]ÿ«WZòRMZ] Ÿ?›*þ½z +‡Û Ä~D-Ú×HÙQ;ÔÝ$ȹDüŠý]WÌãl^n²ÃLž{ä-ƒL#—ì¨0ôCNšn1òitZkÇ›ŸKßÄ·ÀyGTºŸ1vøŽé›˜7ûlÿG[Lªšºn„n‚²eZO“©FIú5XÇʵ ;Ì,‡w‡PSV¿}Eþ .‰_ö‚8’r!áœ[èqæV÷ìeq7krðmË•_´ìÚg²¼ü‹ZñpìÉØÇÇcáòÅjJ@n5±b;3ΡmZ¡3|Rc~©y3ºÎµCžéð_ëI’(ñï w…áhp˜¹ _Ûº†¿pyßœØ.zÓ %¨í}ÿ:YÛmò•›is§•×ëZÊwŒÈâc3u…ˆ+Dþ3ƒ±{7Ì€ÒX„U[Ò&3ì~šî¡«†‡Hs›V»°#Խ咦±³†˜Öm*ÿtšæh™EÆŒØñ}FT¢¡éY!µ[dzKùx§!}S,™(ÖÒ{óq™üSÏùOÉ&Ž'yXú ¥÷ßæ‹Ÿ~`dåÎ E£6çÈ´;ÖàÔ Ózq¢ôlE û㟜µ9šHÏ(ÍÒFŽØ9{\K­\ªþÂŒï Räý pu-ö{À¬¯ìr®t´ðL Ç5Â?®³ÇHÝim ˆƒgSëî]Økáð0ár’(,µ¼Îƒ´ÆÙïO‡iáˆËõ¡æéFm —"C3þ—Ã’ÖvòÎdh•?4)Õdú3¼g;¯%НáôµëT, ÜŒ¹ŠÆ¹*ðw÷$çÆXT ywQB4±a6Ú‰trؼÖ3UêHDŽs¶Qúéšï†ï·¶MØñ7îéz¥t©­`¼bú¦…Ài5ºÕÝTµ²Þ›:•íNº6kÚe Zöï·Œ™pæu‚ÓrzDO·–‰x`¼Ûþ"øs7N¥UØÛÓ„´U#¬¯â¤”ªGEdì·¢FA%A?ÞQÖ•ãCæ6qÊ_Ç ­kÄÍoL²ZUé ¨„$þü™Ùõâź7’ÓNM ÍÁŸ)ë蟳Åg·íeTqÓ[œïw‘ðº4ud¾ä57:ÒWŒ3rL¶fí´Á(ùÜê±cøEÔ:ƒËc #'K·ü˜º´'dl¡æ\Y÷ÝÄ%Ë Éå¹û²ÉuëØ ‘¨‡ß \‘Rß¹Zfp]†“µ¶¿ÿƒ¯|U'Ì;>¹ç`ôð[§ý‚HþR¯I ù4À´?2…¸ÅÇÅÒ@®Øð(¸y©qiy¨_¨ÛEêy®ˆjiv Ø–5Vw÷>¸Õòã¯Æ«¤ÇôN˜3à04RªƒÄ”",¸:wNÔN+Ñ1c1EiÝÏeºÆtdFl»Yn £BDÀ‘!ÖõèHy1ñã¹K§d´&åRÒRWlÕe(ÕÅ.'‚ƒõ`ÏîwöµÞ~û:P•‡^"(íÇWŽrñQ»Âf¹®¥º®³€\_$¦’–mTn—ý$J½ = ½Åµ`…i×ÕOtâzZ󜇸–Nx@UMKœ%¬´ZM<üw½ç8PòY÷ªVŽ8eÒÍ-¹Ó«FQÞ@/+f¦BÄ ÙÙzä\:Ë ¥«õÓ >4έ(ٖءs Ü ~3ÚÚ1Wš~‰»iÍhÀ…áV¬å¢¥mÍýin•¸íg^–!$ì*Wrè8ƒ·ß¿ç5 h¨SÙw¤¡Zñ'ð<7®÷×k²š%£v´žòˆ|/’B4ëÜÈ=š5ÌŸ U€ìÎsÛ×}¿~ç°fO1Ö¸kŽ^³ªÛü÷Q`)gBDô shcávtÇXfOýCb—Np÷UÆç ÍöïC¥KpE€‹È†á6å$ñw]ÔÁòÁD·üÐ_>…¤];‚õX3sŒÃp¯á5tø¥ûì#~-B¶è|šw‘kÿ††€–AóÂãŸJŸ ‰%¿#$F'H¡hÁàôRñ >­žæÜJ¶…²,u¹½ÔêÚÁrê÷Ã_®k– ,ûÚYhJjäGbõZÄQŸ àÃ.K=[8ÛC±ÆIo¥ÍpB¥l¸ÕTsXwžíï¿D Ýæî-|I é… b§bªc ÎŽd*á%¯×™íÞæÓ%µ·WÅPýV´Ðd¨sèb(*PÚ¦»>!C äá‚^},y"{ÎI?n¦“‘‹ÿ¥?²Ïûçªá{d k?žÂÈeæ½H_8NRۦŜ1YÅ0 ~´€„ÇoŸûpÈ2El×VOÙ†P;…„Í~ú·Ù' Ô Uy%Xɯ–«;u =E=þZ$Y¬–xå)ÛÞÉ«73ÜçÅxF”FçÜŒõŸ#=)c¬}¸ó*êÅ¥ž®ös#z±¦ƒ¶¿¸Õ-I©°­‰\mefZ¤0~” ÛǼ†\2 A7g_;i:ÀòØÂ˜†µ¬òCáØÞÉå—ãÍ£ú€ZÉX!]õŒOÞ“ÏžÑÒ95+Á`°¾ŒÊ°«”®ü99`G7lVYSñËr‹*VÄNÙ—,ƒ [Ÿ“Òö¤Ø‰¼˜ï‘OÌõ”ãáã6äà:Õ¡É\2ó4~pœAéÝ/Rl#±·Y”(C‚P ^å¼Õ§kÛªAe®m@ôàø1é^®k•Sæå Jİ©².ßJbsaB Ã{æ²tÎq+=›Uq¥ræ3À TP†9=¢ƒ…? è4~;ycf— ÐÌOüŽL¯ 0s…(ÙwÎ1øðä˜,p,╦ ïÀ_ ä ­ø¶­EGLMW‹š"{ŠXγêªp³BB‡ÙˆÓÁ•`9¹JŽd1)ÐZ+êwß®öºÏÂÅ‚zµ!ŸÊñvÄ?‰ó3~Â>cÜq'0#jwÎyžR<øàÙI¯ù:5^tO¨€ö"YN+z§Z²ï;tõÈ왼$¼®¥ÜZ»¢ëçE ZOäGQ(cÁ·šÊöÍbúë¦ÍäÖºÙmVé-…ª<ñ¨"°èíúQ}aU²»ð ¦™þæËt‡Ï1 U^b}Ù¨¥rԺȦn# …u´65|i•t>w¹ò}<õ²6R«VBS¨¡[wöveB5Ÿ`š¯m‚¯,—N²ÃS;£‹Óÿ i*• endstream endobj 85 0 obj << /Length1 2077 /Length2 13944 /Length3 0 /Length 15216 /Filter /FlateDecode >> stream xÚ÷PÛëö ãw+(îîîîî ¸»»»»w·bÅbÅ)§X‹Û¥{ïsºÏÿûfîÌ$y–?ë]ëý%ä$JªôÂfö&@ {;zf&€¨¼š3€‰‰•‰‰žœ\ äbüž\èä ²·ãù—…¨ÐØåM&fìòf(ooqµ0³˜9x˜9y˜˜,LLÜÿ1´w∻Ìò {; 3<¹¨½ƒ§ÈÂÒå-Ͼ¨L©ÌÜÜœt¹„mN Sc;€¼±‹%Ðö-£©± @ÕÞtñüŸT|–..<ŒŒîîî Æ¶Î öNÔtw‹%@è trš~S(Ûÿ¡ÆOP³9ÿ­Pµ7wq7vÞ6 S ó›‹«Ð ð– *-PtÚým,÷·àŸæ˜˜ÿîïß@v9›šÚÛ:Ûy‚ì,æ  @QBŽÁÅÃ…`lgöÛÐØÆÙþÍߨÍdclòfðWéÆ ae€ñÃø9›:\œœA6¿92þóÖfq;3Q{[[ ‹3üïúÄ@N@Ó·¾{2þs¸ÖvöîvÞÿAæ ;3óß4Ì\Õí@Ž®@i±lÞDðd@;+ èz˜Z2þN æéüKÉü[üÆÁ×ÛÁÞ`þFè 2¾}À{;».N®@_ï+þÁ33Ì@¦. ÈþOô71ÐüoüvþN €.ÓÛø1˜~¿þûMÿmÂÌìíl<ÿ˜ÿuÄŒbÚ:JÚ´ÿPþ¯RDÄÞàMÏ gae°³r8¸9¾ÿEÉôOÿò”¶3·pÿ]ì[—þS°Û?@õÏzPþ7–‚ýÛÜTÆ\‰Éôíùÿó°ÿåòÿoÆGùóÿ[‘„«Í_zª¿ þôƶ Ï,ÞæÖÕåmäíß6Áîÿšjÿ^\y ÈÕöÿj¥]ŒßvAØÎÂæ¿9K€<€fJ SË¿fão±úï=³Ù•ìA¿o=3Óÿѽ-—©õÛíáü6’©€o»ó¿ÅíLíÍ~/ ;ÀØÉÉØžém’XØÙÞÌoÛhôøkˆŒ vö.o.€7v¾s{'øßGÊÁ`þ-úqEÿ n£ø'+€Qúâ0ÊýAo~ò€Qáz‹¢ø_ÄÅ`TúƒXŒ*Ð[Õ?ˆ À¨ö½åÓø/â~Ëgü½e0ý/bËnjoóÖÐÿHØØ~Klmÿxüî4£Ù!ë[p3{c§Y0‚¾Yü}ð Þj7ÿ|+ÞâOÊ·¶Zz:Xíþeñ&ý ¾Õió/øFÂö|[`Æ?¾¬o®v®¶&¿Ïâ_!ßnFû?IßB¼=kþ¥~+Ñáú-¤ÃÛuog4ÿÃù©ÓÿÐc{#ìð¶Ÿöfÿ ÷FÑñÏtüF®@ç¿f÷¿…²ýÚ»ÍLþÅùMú¯Ö2¿±qþ“éí,mŒ-ÿeð–üO)o£Ïèâþ‡&3Ë›Àãÿ[½€Nëÿg7L]Þx¹üu}½-Îð_O# Ðh ¿²doÊbÕÒ}W/ŒïN¿7Í?O¾§™AMï½âôÉõ6•º.'hËéF8ulu}WœêZh•øÙû¤£6¼3Y¹ëÑçÉ0Qen¯ þë,öðLɉpÓ!½šÐ¾Ï³£F 5dx¯ y£+²RÆû ¤GÓPåÚdØÒžò~‡,ÂSåúXõ½À²òB“ÜE\RzÂw4è( ×7óèù3¯Ä2‰´ð¾§±¬½u¶Yâî½6ªÕXœûðÈðtp !¯Ñ'ç(¼EÓdp–½ËKc¶ø—ó˜¨À¶&‡ˆ}&zI~ðèÊI£ã0Ù8­pKN’ùv51j}F„ËÙS5r it8A^Æ¥5ww—,Rl/4Ø ‡»p¢5“w‹‡UðôÞÿ¶u­}r-{ò£qF×k\×|~k½MdCì9ÜÑS†à×>WŸO‰UvYƒ÷g«™S‡y}ÕOÃUâg®Èð°%©™(¨%Y­œäc‰× lzpuÜ]&`pzýÔºcx«êk Ž—û/l? 'u2¸d½ÜÝ Z” Ž/>õQwbš¢ Va€ípñö)æ;L ®¥ƒµy[„‚nM9¶ÈÓØøUÄ€ …J¦lE“~äTŸê¼RP{ß+J|õGþëÊÝI‚ÏÉ+úõü2&uæûu¾zŽ{ŒÖÅ4†7ŒjRˆé&ÎeS ·ìu.ò’rt…*ùÞûö$nõ~ž3¾^²b0|žŽ-X"nÙ°Û58¾v›—o›§ñ°m_ÄÞ×®MÇœ8]GbpÚèNp0÷fëóáª:È?ÊåÕ?f¬ë±ô™™e¸+S†Ú«—]€´Í±¹1X§Ð\À‰Þñ&j+ºx¶•|¿q^E˜ÛœÞ‹¿º˜9Æš !ë'ö‘S[Sx]þQQ 9Š7n#!Fjœ¦ÕÇëÛ˜t—‡¹o5¤­u-¾ìZEÜ]Ì>Òå°– "Ý]ú­0J€ýTQÀé ü)–É\*sa‘íÂU÷É]ûÓç´¬¼½\–n]—Ù/cãi«Å1Í9‚–¿2£ÚMr¾½Ð¬BÀ› 4Š"(…"†fGò¢’\VPÇUø¨ÏWœÄ˜ãÀÜWaˆµ”¸Ü¡.˜¥”ðWgç°Oýìö§Åo-9³âì'? ½¦cï`Œ¢QãÏEL¨1‚Í:F¼W_Ÿ•8j¸Mè`NqŸ úÒ¶Q$„4W€ÃŒ÷¹¸QÂ@E0>75÷j Ô;Ö ‡ä1‚†ÙÂýö€¥¯±´ ¿µW¨jG¯žÓkÍØëxŽ™àˆ:²a;óâg`´¸G6eçhåí1{„„©?¿UËΧE˜%SÌÃwfÄØ§»ÉCÖ“|iýðœ¨~ÏöFž¸ÉïHæK…ëÇÑÉ{Ç—¥åæ§ä½…| KbE"*JïŠøÅÆ d÷ªÕ}U`6%—ØëåÄþNËÌtß¾/Ñ­DM€Èb¹ý|lgâ ¨àþô3Ò|„“•WÊÔ„š0dpEï9‰ŒÈÏÆß²5GïfxÙ7rJ”l…Fi 4–ǽ6Æ‹“²M±‰ÃqX Ôáó•Üà)Þ××ïöW'êߪ¨dWŠ~…2¨cæþðKøÇ7ZÁ‘²ƒõêc¡¤Fž2*MÊ}:Èp°‘!ÉJDZŽø¶’ü¡w”*«$‹ ²‡^þ¶ ýÅ¢¶V,eÀÚᵿ6ƒ£eÆgè[müü«G› ãÊr÷É…Zu‡©2£šš_;YòÜ 0ß 1e,¾˜¸“ì¤#Nv;Ž«}I«ëƒ4 ãÑt$Ñ÷ ºw%½–T@ÁÆPî m[À ª©ÅKWÙIEm¾·¡}šJºŠ»ý\`„¾q³´˜p³¼ ,'rˆØB¦â‡ªÒfîØ¿©Š,Pï«.gEe ÒýÊ+3Û±a§4™0Ùp¤K“ºa(&×r }ƒSP°»Õ”¼‚†ut"jiX’OèùÕoñx´`Æ ÁkÿÃfðSú·Î”ñ^ ¦ÃÝD <óY£¯=J€,Ø)UÚ¹·ðûYgù]B#Ab^Ë„/ªúU:z¹Á—Õ2ªÇUæ^·|yp­§¯ÂV $P?ƒ­Ùù‡)²µ OAD+î?Ã&|pÊqsÃÜD뢕€^»P ›±GFÁ;2°Š$}U/^Ã…#Ÿ‹Å¨¹Š…s\ŒhÓ§íWŽSÞÕÖ {aí“ø¼ø×ÓÔN™¨#$@ÁR3¸HX:&.¿DÑ0A8žt6Ô „(`¨Ã ±Æos¢ p+º´ê²úÄ^°;1Aþìpþúòø• v+U3ƒÀQLnèSwœ÷ú£FÌäQ3÷|Ÿå$I™W/ƶœC)ʲȰ̯òÓ%\±%ÛqñÃ:¨“qà%ïø8·¼ëä6Ñ>ßjP“c ;´_g 9ÍT³/yµóehÓyu­÷îrÂéW×yå¯Ì_Z¬ýæšÈƽ*°mdçØ3ÅTòÍïÙc'-^5Ô'Çœ›x¹Z°Oë’ÁuTÄÃ\ÒDü‰Á]“÷14Óž®磈œµµl‹7,·ù; ‹':p›#Ÿ*Šnü€/¸Èò£Æ4Å d7‘„½nÖ[N9ÕOMü§>·ÂVQ¶A`†Ûµ+ ÌfN3Çd”jnW½À–¯¼j¬#Vd(¸ÂÐr¿®¢°q¢E{J¢PÍ ¼lm!•" ôE‘Öxï Û+¦øT›ê¼x‰”ì µéoôÜo =ÒöðMH§±RÁ_Ç`µûBÏÏr–p"ÔJ-Dšm 0Vb¹ÕŸ%ŽeêIÑuôV¡Ç¦-c¾öL÷%•_†©CpÌ,&{löÈ… 6<@$ã<ñÉFóÖ^?j¾’Oj¥„\C‘} çÁ1ãvØm–00Ë™&Z’Q¡çÐ¥W£ùÁF’;ç© fD)ßòL‰Pó®îǸ1ÅÄÜ[ǼI`öˆüáç¸4ÌoW€’>ú§±–ËlðÞ—Ô§ÃÔNiHºÒQÁìÜäÀ›]‘ü™éѧe.Ÿõ5É™¼Ís=ÞN)Dx»áo0¦,[uÄZÓ0˜Ì$‚<ÛXßÐ:ÒöP±]>}ÞÆ$Mµ‰Ríêzeå§ÀB}ã[–Ôéb§ˆVô¡ïBOC8Ü®½\K„L‚ᢇà@ͦÃFNkèN}HÈÒ§Ç0èñxñ«†hUUÍ áîi“…Q— Ô\Ï â.ó@GaŸõ¦¢é#Ü© ëÏJHתY{\d[Y˜äI%›½c âïß9¯Ê!`ˆ™…H'/qpì­ü%€í_-`päåA·êm4eªï”½Ãa_ÛÖÒq]8ºYí"•¬¶.ú<³ HUäuÜ Ôçº'Ãôlo‰°—sB ðæ7ïk­&£HÜ ùÒ\“ßÓD#£?T>¸˜9ag‹‚+x™¶ve•=±KúMùhÏŽY¢ ̪ÐÁ£võMœ½({GyöfŒ5…›+3ØpiáŸ!JÙ]·øeˆÔ®j’¥"°À¹Êµ¿µaÛµcÌÎx?5Тtß=¼Ësyýâ«ôtšâ2ˆUT&ãєʵ<:¯B°öGÏ{ÜÈuãU+Ÿ¸¥ìùQkDüS(ç€Þ¢“]P˜‚ qËñKôÌUæsDuu#BôU¢Uoú§÷µ[«û´Í°šÀ÷‹³Îò‹éÑÔ•wi?û·a+e.µ5.'²¹šOû˜ûŸaÌ>ÈÈ1c bÈ7 be›”M*÷#œ÷t˜›¶ÍÎç;5ªCà³°ñ‹=OOd×®“áTÝ»Ô?1ƒŠ( 0„e_”rÞz¼^Ç>f¼Ú錞´Ö ØpÝ·øîŸò\½t†êKÉf“:›²'t_×k¨(½ÕÁ‰—=Ãè`ååIoæ4…ëdŽ_øi’øSfknéò.dy¾ï¶Y5·b—2ÿ=¾—7^ljIËÇySk%“w~Ã`_á™ >ß•NyáïJÏׄ ©·G«T’ÍÓ}$ *?e,8+9Ý ¤Ï€áêoÊy’‡sW¿Í9eKÿº:H—³ * ×6Úê ~Õצuü%ŸXBÓ–ë׉ßçµÞɷ騾/:+–®]†Ÿ/¦ß9±eëš6Íñè«x„'ΠfÒ¢ƒ¶Øá—…fÈ¥QÔ|†WӌϦrDOˆ]Ò8Ûr|ñ ©Â>L&=N³Ÿ¢«ÃGS‡ê>äxVJnLh?|šÓLñsñþxˆ£ft˜qâ^Ýz N39¬ ©<ß$ Q†çÑòŽ·‚´tÆ0{¬åâ ½^rÔýw9"“¬~º: E;J.¬±§ÑÊšZœ÷â a”¼„/¡ÌØ€ðݰœqJ¼ŸÆ:Û‚òùêÎ{ÒÂi“µ/Bi¤Êø)îÓVÙXÉ‹–ZÌ·M¼”×å³ÐÍ¥Ž(|3Tç?ýúÙ%ûB€\¨† ÆÓøÄ†pfé´6Uj¤ÞD ŽzC7' Å5좰wà æ0iùA•–Á[Œ™]…õ s?†çÕY¯,DÏ0•«0?8ÀûjKÃÊêÝEÐõÌß gœ«(MÃ*Yƒøn5ÕÀ÷’K¶OŒ"\¦#’”†³l&ãoÔ¼iô˜Ô¦ˆÈGEV÷  ¡™RÒð^¼È]4§h57 ­nÞ‹¥+Àì ¢;u³-'/ áÝ›õT¦÷§¸Õ±c6Awæ°±ÅÌUhÛLù•@¯ÎUkZ‰\„/Y ³¶¶ÑYk¼â5urǃú9R>5ªÉõ ám€×£½°½ew„Íe{õ}]Ã(•6È×ø÷™»€ÑÛò«Udìû¨ý `ÉY/ +xÀ;m5 Ô (˜U˜_lµB5ãŒéˆ ˆüªs¬ì‹üÒ®…— ­RCZ—æBjá%dï­ò»ó]Óàåú‚Īr/%削tÕe•=3â…8_ãM0¬ÆÂ+0!Ü?¹•Aâ0má²~4ìµýÌÉx¸å¯|ù«ÉÕü×Nü%¥4œTQ׎à†£Uåe&5üxÜIÖ|#m^k¡0úÈá¬SÑNW…ÔlŠ(÷’­´ÏgN§FôŸ’÷ä<áW2N/­|›TU’ƒÍM~uJG0²;› x8ýÛÚÚ¡bɤwí)d˜‚æmœDé«Y[¾hIZßí#XŸr(whÕB>œ×~ùwÜ=IK0ãÉ€TLWøÉóŒÐî;K0xn4<¤Pî .Wé¾óÔw™wxSŸÖ~Lh2ÑQÝ9"PÔ2ð"á é-ØcãvÏ0ï{VáD/‰oÚl7š°_U ¤Æ3d¾•åQû½b’ç”™èö¢) ~¾âÅÊWqßê¯a/$ÍÓÜó à]¬•æ8‹…HÑ‚ Ô3‹:”½ÿåì˃ç­,Líþ^æØVk; ÄꣂΠ¡–íÈžhâCäwòÄwÄòØÇ‰g"옟ùþ£œÖ‚"ÇÁ##*%„ñÌÂå'ˆæÞæÄr¢Np¬K.‹ip²kIºÔ×Iy#O_ÉãÒœqAjÓ¤uèÍŸiY¯œßdH¸DÆ?ÅÙ€1¬#BØ_Í`·,ºF¸Á˶…¨ N1éðUv_ÉäÙ‹C|[:OAâÓŠ03Ê"øl·Б ÷lóÙJv¸ÅzZ0q ”5“1•þЫNWK·"ª:£‰H«µÅ,.¸]¡¯[ ‰áTº¬ÝlÈ|j@·§LŽŸà•=Àæœìw¥”#š2ݼ.²‡‚/€+—lñFå#“À “ÛŒNÁ* Ê:c ,"ÄšoSØp#…à]~Ñò{¢¢¿Š"kS®™¾:eá;gO«ŠÖîCð|ñG|Ô]x\0à#¡/e&«g—KÙ”GC“¦xÁ^L‘>c7ûƒ.Ã}F‘)ú¡03d·ÕjJÓ%‚N[^ƒµ.¡ig&ï;£¢íši¢ÙTã–u`*hh!oÍ®c?h¿ù <¿)ø‹yA¤ÎÖÉ…§¯-'Stù¨Õ»Öcúâ\m‚ù_Œ#`ÊP¦wŽXX@å.pTŒºƒB»>¼¢¥[`úÆN»‹Z×H!šítÝ¢ÑQ``ŠØ7‘ʧ‘ÚFåF2†"uÛD–e Ž—G\ˆ$¼c W3#ø½4ƒ½rò·Õ#çÙ&½)¥ò²xéÆÞ&ö²ÙÒûvsê!öíøî‹„W¬Iý‹±>‰*=Ž„‚hU”(ûàªKöÒKzƒ°kú %5‹ÑèX]Ã-ÃS«0‚Úâ—ö’ºrJ.wùrXZq·ø¨qÒÈöùÊó ÿoÉÆ¥ؼ3ÚˆqFM¶ˆ· ÓÃÀØ«óó Rçm£Ýà{»qÂÏåÙ¬û1ÀÙIª Ã_íK±ºüd§*÷m¯ù-/ëÕÐuù”;2<¦V•¬¥Aæ,ð I-<¬¢¢ ¼Š¨ãn¤|þØ£M‚Üü½ áÆIó¸£Þ˜ò]Q­7¾rûv®¹¥þ¸ÙÖò5t'·iŠ CMŽËÉ\nª˜Z}Ç–FæûMçžê¼¿Wññe»Þ®·oaOz-ý ç{@˜»L-Þãžt‚ÙÄm $Í1 riÍÏ ó<š­\*Ô8èk¦á,}Y(ÞØe‚ÌC»ö'V*IjÓ¤!ÔÎŽRÌ;V €;aj: X4ŽÇé š^êë„ÙS i`ŸN½¥÷åŒ z·0Œ½BߟMƒÓ.-ZïÍ<Ú&•±¥3Ôô¶ÏI1‘JòÂ{» tŽ]bÌîø"nÐ.û– šØ³Âm#1¥»Üøz£i꘦[“§ü´‰¹[vGÉ=Ýb˜lmX0ê\k·¤nyèA,Šä ¥>öf itܬÌד’x?ÊDzÁ¡O®/ ‹ìøA` jN¿¹ð@ÚÆ­ÖSé×Ê“Y̼.d Z§×œûwÞ9K0ÓÜiuGZˆª\§èÞ¹‰È‹¹ÚÕ2lÖXΔdN´Ù.YÏáûœÔ!Ô[¶Ñrš“Ê H»rœÉÔ5M7maË?§[I"úº_ͨâÙÏ4;ð(õ8òã7A<œu×Vïm³3 +IZ(K¡z1Y;<0ñùtgß« Î" ðNì6 2;Çxò Òå½?s‹'µaÎ@LrÍmˆìºð­j~8iÒt^ƒcMò@ Ü÷ÓŸQ~žó;}”èê³~››duŠ Ÿgòn: >\¡µìù‰)Kàµtä™%kt×+’¼ýQÒŸw¿ FM¥ùHLŸb7Ý÷O'£eZÑ…ƒþ$X'ù  §@£LeŽø“\ÿPþ#Âl?­ú)IÇ ¥x‚t_Ö²åâ¼ÆæjÏ'y˜"ãý_ÔkÖÕ?Íf¶;Ü9U»4ýOýÛX¿¡Òn­„ßž¥×‘QæN¢¹WÞ¶4|“‚ž÷97vj„v?iÿæv.ùkîÎÉÛZ°•îçWõWòëí§SëwWMœJkå‘üäë=[ê÷F˜/ ×ÀPu²ÅÝxÂPn;}¾šÞAEBJ‹OH!Õ=[ë?»&Êq£{4¹pcŸ–ìf–Ù+,sÁ¤Y«ö°LϺs3ÂÖö äV‡ßóÄaæ=qY„Qtõ†¹~TõÀdˆ}gP]Ž­i£ÀÛjù8=ö5.²¹HÂVŽ\#¬Í5èu¾ÅK#mÆc*>WÏÈTL°œ³U‹=ྠ˜ôÓµ‚k8g^#•gÝã,2¡\ëõ[ªWÄÇÕ·úÔª6÷ë Xö‡ÙqAÎìÂÌE‰žì÷`ôŽÃÏWñÝ› ¹ü=©r̶H!²èD¯žŸçšqdÅg+§fŒ(F_ï4É÷±0®Çü5Y¹IZDPÍdâ/ }ãDÝ—Õa*¬ÐËÅ?wË/imÓÈ~RŒÖ$eC´:V¬‡·N!ȉŸ* #­uH¶^=Ý[ò… ðº“}èËôü` =–”Š,‡ÒÇŠÀ{x—Þ¬DÚD<=Å)/9€Öj˜ØPe>sÂò•üh+­`5Š-™ô«–x¶dÆaiçÀµ$WÈæÒÊCþOÏÄ8afµjj?…¨“<¶´à'Ž[t·öšÞ`Úõîºì)†ut'•\V8ì{“Z?*›`úsÚmùúÙŸƒˆ5ÏW™´öù‰ò=htÁÉ艬Uø=?”âü R)6 XZ–C›ÝŒ¾òãÉHä†àó«@ éü€¤ [?Ô¾üÕ7âvÍoqCاij–"…/xt î`vÇè›\Ö{~ƒ±Áü‡û =„€®h>@Þ{½øH þr+0¡ ÛNë´ùˆ‘ÙñÀ0YEª:lj`xeÌ`¶þÙ:†œA —ãeŒÅ2èíøíGHâå³è êï¬|s©¯¿ü'I²È—R†NÂú²N4Ëc´EƒS¾ë”íh‘—·'K—HÌfâåpy1»ý2÷L„ ŒêqÉ)Ï£©× 6À|þúå´–mß›sýr:(]ñnKÙ‰<ÁoÇRë}á OKøñIR%ÞÒŠC^ŸÐ÷Õ‚-yrþSS²Û—´Éû€X º°½#9lû@©3—Gà…Ó8‚‰-¼^C;¹ŒÂufNHÿaí T»˜VᬰEÔ…RÔÒ ™£†ªEÿ°”ˬÂײc¼ñÏ_Ÿß–AÜ„©”tžz(¯dbÖðï󵤛»Ç/ÓTd»vu>±¼DdÍ¢JUHçcOÎZ”øüH½¿çËûEÈ¿NÝÔn|‡~ôH0&Îk Ø­Íš“iEŽÆ=¡'?4ï°>Ò9BNúB$ù¡¶—M¯° [”ë—ßÁÝû¡Ñ›þBâ'æÚ‹åF+>½l†84›K Åjãå»Ü›î.! wÚ^©ü…iá G =ôŸ§3~‡ê tíð°ê€¨+Ø—e¨©§_bV<{'ÏffÎ^°ˆlK‚´[Ô˜j§p Í’£Ò[óû÷É­ Ëx È1¹OrWgäôRÓ•Ú òÄ3±^ŒÞ¸lü¥îžÔ.´5¡M|Šb%ÎÏâ.^ £¸L‚Ÿ)[û#r«¿TYì‰%¾ŠîÈ6õä,:k–:úÝ~„’9…cm(¶æp7’õvk4~xMʘdeÀk)„Ш›7*/vK=€ÂŽ$HJp·ÉCŸ&­ºæ k‚­-SùŒDÖUÓšbìʾDعZ¼Åǰ8Ü™Èqvf8Ï CT‰ç^Á'ªì^exXa”wœè¥™@4ú Ü×È—ûÌUþïÜ[°Æ™êAz\SUrBkðaqùJ»,V#7ØÄP\Ÿ¡Ç‰·±^l ßYÊÖÝ5“xÑØï¦ŸÀ‡å‹…N[Ç÷XØ'J µ4¶ð;G ¹^AdR¯ØÑ'hI“$AiNa‰ ÒA-r±ÒËc)À)ƒÜE,øsôi{¬Tƒ/gS¨q{ Œl`s@Æõ|#KHêº69é/fsPLQÄE«˜ßeM:¬°¶sW§SXÖÚ]°ïN–X½À°'TÙ8ë^àŒõçí|§Rf ”ÅØÖÔÑáÖרÅY$]±a…ׄ3aJ]¤”h”ˆñCV0›íÇuÄ«®ç‘ç¨ü„vlÇe„CÞK?—Æ~ÆÓ d[­ÞÍ‘sz岃Z<Õ|U¥yâ³?ÜóðÎ8ÉŒ'¿×žøplMÞ÷Ëw̤)0Ÿ¹ê,jR¢´ËFÚúdýCUaŸ©pÓ•þ ,MËÔ4kG|V‘Gëk·ÃãÐèMaÍZDH96–¨½ð ÓyvŽe±(m©¥paE“¹ÌT ãþaZ¤?ÍPÒ=9A‘Ççlétã2ˆ…@E6t›,sË5XcןÛtv-¿‚4k(˜ÝË™‡ys‚ @¯2mƒb± ™ÎítªífÄI‹º+]²§¦H¿F)KÊ×V†Cƹ¿,æ˜ÿh QÄᩱÜJ;‡—ÖÔ|v»½1­`Êø :¨aEþ8¡±„и±(bû°”K‹¨Ó]£Ãó®ÖOV‹7S’ìºæ”èS!uå¼XgçHHŸ¼._ƒ“f?ÄÞí©Ï—y¢ÄO6¸ˬ ¸òF¢ÊzÅûЬ»=Y EiRk„;:J’˜i$´H_¶¸‰ÈÑ—“‰º#¬¡×Ê&~ù]PöY†2¨fµ )sÔy=%- ïfÜQTf°ú×Û. wò¹ehWHûêªÚfH4Ò¶,–0«ZFçP*çš?Üém ñµÎ8šl-5ÑMEq~@§:øÈ„꣞1· äí±ã³äê ‚íå/™¥…TYÿ¥ï§ï1òÁ\•VäÓŒÙëÄGwoDWÎkfþ=ÇeZ §Æ¾Äù …GMLjþö%¿Ðìˆõ:kŒLKÅ`Ç|»W%eý@$«  o¡Õ ÷ËpÀÉ1—M/㥠e+±Àû¶hF.$3æí-.A§ïqcê×ȳæ?üjƒTŽ¥Då²þÊ¢h¢'ýìw$¢?2%ÄîÆ¦*Ô0Q+ºÕ)â߬UDD@Bj’ƒj‹‡{¥Fø,˜=˜‡j%žCý®ìt7Ù¡#coT¤ n±bCÚä~)tèûp‡\“6‹>§õNôHé [^¸¨\¾0†Ú½¦QÓÄFœ ëÆ„óFY¥å¦è”¸n´>6±Ò'-1èuB9‡B7÷LYʼ×¾1ÛScxB˜yTbS/’µÙ“üP²’ÐJÐ ƒN›q«” :ê™6‹`^šúIv:óÃÝQ w5̉ˆZ^©)æ ¾m¤‡qFgÊæŠ§Ómã,áÉO+¤:ypѰý™÷n5‹pR±Âõ’zÝp¸ç{Æx…5ÉÚb3ñ‡K™¿]‚çÒ嵨S] áq=ó}eÀìÎ0#?‰= 9R`¼¯/¡yý¼ú€ªuŠ·µë¬ú³‡³ŠØç¢^u­‹¾[Üo,.U!w{°…ë×bñ7wnR‚¤Òݲžs5‡åW¯¶.¯´…*‚L=/Í/jNŒ Ìf (&f=oÆ21•±òˆEõÎx-?B‰ÝÚ>Þýg#Í‘¬Hg™ëð²RßÝ ¦­YîþyÃo–õûÍ…,>Ý$½¤€ÒÂôþÛĞȡ+ÂØ©½;J€žÖFkan ª ¶m6ºÓ­ §|ძ¸-\ŽéŽDT—Ì|ËÏ:`i±Úæî„æØW 'ÏëM‘m¨­yòå;qWö,J‚Ì‹ÜÉóy!Ókˆ›¹9N)˜þkÞëIå;5æaíò¾Mð jÔfî‰Ùsþå˜é.V³x[ïmêø}Ÿ  …3SÚÓ¥†å®9ž×}=gù:o®Q½Cæ§‘àvÏ €_@ÈÜ€¡à¶!õäC²æ–Þ¥^ ÀÌ‹¼FF¼ýå¶â;ìäÂ}ùmô£j 3ÉÒÂL•»`P®Í6-ŸÉj-ȳ±÷Ç‚ˆÃsŠ"¸à?¥a¬C÷Aº²Fº$/‹aµk9uà<Ë@f`šv¿-È1Õ­Ÿ…ƒFöhÂL„,\l߯5´ ÞÌ)Ûãy –²ÁÆday-¿ßð­ïÝë|î7²o?WZW3¯òÏÕúÁ‰}Æè3]Lýt+`*OÛkÓ÷IJŽü}»ÑÝ/Ïâ…D'ÕŠqšW¿æÁDñ…á½ï}'¬›\„ͶP.Dä­XC‰w°WãiM<ÞG1:ðci~9­©"|ž¾O_J ­Ñ•Æ3Ù–÷½Mgw]7å[š‹V–ùæº\¾ÿ@p&(;E«õ;¯DÁƒÙkµþBƒ'ÑeÛËø9"¯º/rÐÆ q¹ ‹]<±¶0[àÇî¬@*]€aïZ¿¹V•0Xš‹™x¤!ñlÁú­î(‚>ìvùÉ1*& m)òbÉÉ)°€ÐBŠZï¹)¯îÝ‚Oh73 VïVÈš±è³žøYœýOã>üé'?ñAš>¦’%Pe¬ueÝ;œÊ ýÝZŠ10Ü‹Pbõ/É_À™¨•áå•á›F4ƒ¨3œ@;iôRï{ šZ¨Ù×Ì¿f´é'nTÝûÊ)¹Àjî5<”Ú¿3™\£× d˜Feì £±Îlž°ãæuïQû´©ú°åä O:ãSÀžŒÇêVe~ä_Ò‡O%ú¦CrG‘Þy;ÏO¼&2›>rÛËó…Ô|äܾu®kÁAÅp9 Üd[à’ó"Zk÷P%ë#¯ ë™mXЇÞZ94†¸+óÅw5¿*¡œc%™Æ¢p“œŽÂúBÃyçÏ™XÎ%—OÀBf‰A ÈBGîAµý{_QÒ®àœvÒí:§³ýû¬ï¬xY×¹G%Ö â}ˆ‘à 5^·“¡L‡D­¨,ân÷F, );].|ñ-‰©f;ÇkÇ­$~†¨.ö|; é%¾‘„öO_¹Nái&ôvù-” —®ü† ^ü ùétýì¸^ø«µ=.V2í¡’Ö$ßön×w„À[õãÚð§rK;ÿ*bc>æVK¤KÙ2ɹɣqÑl%ØW¢—-,fýØÊ—Äá°ŸoÅ”f0ž|Ë ýžÜJi^n-.a¿ßÔ¶`Xª³ØvSµ"Æ›¯íýòœ|@MfÿåCáŽwU:7’Ê8*Al£ŠQiÕ7ì€0ÖâyÆ™ºíg|‰n\s\™>y7"N±y–|åvg1±/žùRLòb‡Åà‡ Øè‡÷@<Ú\ôÅÕ¯júEƒ<ý* )1gÊ˼ڋØÞVã•YõùHÓÈ0¼#"3Ìàn£óægŒ¾‹qµßãI¤¸O©;Ÿæ­YNÏf,²8×K7Q¬ý-ŠºÑFqC•lR•ñ#þOìÖ^v8è8³Ž/RÖ[I"߯ ¯W5ÉJæ¢êå¦jDë ¡.QÐ^¶ü›ÛD»u ó%A\Û‹6~K=›þ^…Öf¯ï^5CÔ.ñ¹bifEa­¿ª•‹¥rÁ]0:ÜH2‹ÙI9;Œb’Æà(¾NÀJOv½:l®ˆž„žï‚KÔõ—ú,TâìÈï7 E6&WÔ˜ž_ºRWm‘ ì‘ •@« X½§v]Ìlðy Å÷ºIÒ9Œµ]ö±HÛŸÝ~·‚<ÝÄ‹ ­ù«ŒhQ©ìtòky¶G?fʼe¿ë,¶1 ¡ÿ|#|@¾y9áöÔƒ~Ìý”fˤœ‰OfQ;Ÿ'ÜÎÆŽí?d ­xºcîˆw¶È}j !r„ªc¢C€ Z§ü*ÞÊÝTÑ•)À[5Cú^Iø!š|Úip¼MY/{ c›~ §"†–Ü»[T¿¢[{C_¥aín-ù‘ö3r nüG¹WµtžÁUû› ’RŸBBdnÉs­E”ãÑl¬±>XìnÓíçÊu®gOc€˜.MS™ÕQíwb1ü«’†Ô,{t÷М…q¥ÆÔŒŠsP)ÍÈ–Cé‘68 2¿Ã&ÖpããLç¤q0d’xfìÜ|¯äôì‰õÇy| (wW®EfÙ÷IbÝâ!OsY`Tñv¥Õ]fï9ë”nèë%3=%R¿ø0U åÉtA!kÇÀ|U…þ•)E‰®O¿c…¼#–Š/VÀ@b^=žÔX$¢€½ãÂ)™?H3ËÿpFF@P4~»S Ô(æx¥È‹u¥ZýËCT—0óZ$ÒOøS 7|úôàå;Õ¬‰,¾ÌBØ/H“é¬ÄMJw•Ž­ñÀý>†÷/–“étJŸ%0Ì_}aßËÜýDýx•FΡjí–Aý ZE†ùN±]§W"Û[ö™N¢"Öu#dêÙ>³hhC»Q~•Þ-VþN“ûÂïÝ‘š‰kþ>—µ‘nkÃ9AÍ…þÖŠ‹ü=¥‡ÃÀqÖªyÖD— -O< PÌþQ2#1HB§`ެú2‘|¦ØB}ãÊãrGË'B€1Ç„|«9- I°nÞ['¯"f¡ÉÎÞI¦°á˜†ó‡‰’L¥)ø(‹vÖô³ ¾´ðê…ì!óm„fÑE iYË ‹â 9FVBé^ÙMÜN£¬—¦üâ’ZÁºnƒÉ8PžSÇÔ,`éÆÇ(“=È×äÈ– ìÂð;C+$Ädžh«WÈj1_dˆì£Ÿ'þqg¿ðÃÕÂ: %\ …«ømû‘ö ç,ŠÑdåîìÖóhà`ÇÕàôý«~.Vh±ž Ùy¯ð‡"r„Þ VÿËÓ3úsŒ:¼§ñ˜D”††µQ³¨/š­ÂÙôOUsLÎÒB()öÀ‹ËμÁ°îÐ’ï48ï«\0gqlããM¨yœÜ|¦úýô9˜iÄqdï¶xRÂmKìMQ´M!Ií–½á±u§Šé;Ž]ñåpª~°Òóª†ý?–B• endstream endobj 87 0 obj << /Length1 1414 /Length2 1899 /Length3 0 /Length 2809 /Filter /FlateDecode >> stream xÚT 8T{OZ˜t»n¥P9Ù³YÊš±LÙe)áÒ˜9cNfÎ3g ¡î¸º‘-TR]]-¤Ù×C¶”\¥[²D¤4„¶ï ª[ß÷<ß÷Ìóœ9ïûþÞíÿÿýŽÆFWw=  ©Œê‘ðDÀÚÉÃDˆD}<‘HÆihx@(üìÇiìy|Mþ°æ4óÙÐP è„À€½€ ô’‘ i‹ ‘‰DãÏ@„gØÐB à„ìäã4¬n d¡XŸÏ¯€6}@26Þ¢;›P8 ¢Ó`À‰†²@Ö‘NcîѰoJh›±P”kB …B<ÃÇ#¼@‹Mº€BY€Èy! ¬ 8Ó8àüjxœàÁ‚øsw„‰ i<ÀlˆÂ|,E3@€uÜí.ÏçºÀüá$<éK¹ùlI!žM¦Ñé‡KƒÃ 8`Blp¡:âÑPT Á Ææ#X>-„±i`vt@¥ìh؆óûñé<ˆ‹òñ|ˆ-Ù‘ )ƒ³-̰F8Fù8É|6¤cçF˜¿Ü ÂáŸ-&3˜’5.Á†‚ Í<sá¾úA0$‰[õõ0Cé,‚¤Gœ ’$nl‡Èp.˜Ø`$ı?\8Ÿ(OF†ÿ3ð­…#‘DG0‚q_«cn9gc÷σB"F?@”ü¾¼ýŒ1ŒÀì°¯ðÙ+&89{zx9mž_ùKÐÊ ÂõH€Yß0$FƆ@ä·U\iÐüį™v0Œç†ÅNéóÀ!ó О—Ç&àÛZÎÆ[ÐþJs_¢!‘Ž=Hÿ7ÙgSþÇ%Uþ'Í¿Ÿˆ*`³gãÚs€ÿˆÓ8;lñV€bpB0%ÀßCwƒsÂu€ó}Ô¥aZ Àì/ ñ©P(Èp…P:k–snO‰ÎØ º"|HòeôHDâw1L\ô ìëÁÇ(91í|ÛѦ# ‰ÈȆFÇ£…ሓȆ†@8 S# %1@ÀÊ¥Øv‘áá$Wjl è׬E"ê„À¯&F#÷‹‰Í@@…ȬýÍt‡)q–'Ø„ŸíYÙƒ`(HÇýÕ‰ÐM£÷E—OR”…zý-dƒåõãGÄ2»ûlCwFY›M¿Ñ?×E©¾77ýä§ä󟊃¼ˆA~G3QøëZùbfÀ3݈¶ŸÌg^ð䇪*ï½ú0#Pa¬Ä­A(¶ìØ´F7øuÿýì¡ífš%—ß^b-Õº1‚—[Øò¯¸¥k·nÕ—[]AÉ®¸lu…Òq¯ÒN?nÙ2zl=uhúx]Ù°·¾;_W zz\yxx9×Aœ=l‘ñ¼ÖHÉaoСÑWk»öÝQí(qy´H;€Çõè9%¦Çxñ‹sÕh¯d´¨oGë…‹ägw·‰=ÜF¶Dëú$õãWt;ZÉ\¾ÙË#ß9êª]n¶GÏ6¶í€UàåæÉsÛÔöð-s콪^kmhé|àÙ¦½I?’$Zi4êvŸ® I~-~™[¸86þéøLWÄÌi®å ûíWo¬k`ÔìŠmSÁ®èÛ©»Ê¨Ä甼K¿i5O„5îN±W-â?.xD»¡xÊÒ¨¶GoÓŸºèÚøZ£'Ë:mœå NÛV'ec¾Ã»ôÈíÙÌO*Y=‹Š‡,(:W“ï$-oJèz±Òm’QTÕGÀ¥^y'H=f5Õ¨/:yZº9ñ¯3Zq‰ ëö9u«Ì§ÛHqhÑî…¿X¦øwíkŒÈîëw®K(.>kÈ$)­Ï^íYtAñ¶§‘qÄ;)·Ž‡Ç÷êU'˜Ê ²ÔWü?ôéØI%:È´?3¹fð×õÒ²ï—Ô·x-fL–.×Ûâ’h…‹g:"|gC€å:ó æ*¢¡²[/¢ï^tlM+ýó9yAôÇ8'õž>êIö[J˜ÜT›fûÃͽí«ÞYü\—`{Eî|ëáC9¿Vq 65vˆ¬«]3Êt”ÝiÝi”΃—BÚP¬âç}U&;©ó´AMÙöV=¹FuNiƒÂÚõë6BÇÓ:SB-ïœ]Ó~·n‹Å–’Š.š‰¿J&3?ª»HùÁ€ê8C\üçCT,Ý/eŸÔ{çGçãoÞWàFÕv¬Ò]í“ë±J®¸Y8QÙSÇn®mþ=W|gB&ë\ŠK aÆŒ þ(Çíàx^l²WP|2pý>èð4(ddÊøXÑ:Á[g™ÛÉ\Õz éøè©Èàhß]|Oÿ]&±Äùå„wPÛ@Ëpû5)Z95)xú|Gb7à«Ñ¹Õäó¶nMé‹9Z5Äh~±5}ˆóº„ÓòÛ~|Ú'Õ]ìE6¯¢©pÊË£™AÄGwÚ½ËÈQÊŸRæW¤ZóÔµs,˜”"ÅT)ñ%p‘õù¥ ~¦´”=¥RòÓÒ§â«+LÓUÝržË‹Ë´OZ[ÚEª¡XÔ;E/‚×9†®õÜ-Hr9ŸòR7zeŒ=Rq ”þI– }&ÄKï`^ȋڷ3í1W8M59™ÑÝ:0Ué$zÜGq’\+7—j¶y$K_•ý1ý+ ‡¼÷‘J£¢Ÿ ™ËžòjîV ±~HzÕ´&‡Ý(âø?‰Ü„&ÎŒ¸ù˜??¢Rx¸¹ÿa-U¨æÞ¿ÃbOvó²Ã¯DÉjæb}ùØ¥åï«åm«ŸÁkm›…þÇ®öȪ(tþD±¹µ k1U>>ëÆPã^|{jÃáĦ½Ä—#í·J6Öï fFËW‡Ó·ÞY²Q&(sq°Â’ë-Çó'³ïÔ¬KÕ0(ßëšµá¥i¬^fÓd[ÿôk#µÿ] š±Eý›³2_Ÿ1ë˜ÑûP\Ö«í åÂmXöÇÖ£ò•†û=.Wú$g’-ÜÌ_mQúÇM?Ť2 ¦Ó‘±,¿ ‚ø’w 6½Mvûñç'KÊC™išÔä+Þøìr޹דDÐaÕÖÊV†äNyˆA!`PÚ);ÌZ§xzË¿_r‘Á endstream endobj 89 0 obj << /Length1 1352 /Length2 1258 /Length3 0 /Length 2105 /Filter /FlateDecode >> stream xÚS Ti–Ž+"ü;3‘3I7È‘x`4(xB“t %éŽIçDYEEEQÑeTFÇ•CDŽAŽÇ "·¸‚Œ×ðtEÜN(ξ·ûòÞŸþª¾ª¿ê¯¯è apED4êMà$fBÀô‚!A.Lr¦Ñé¡)AGí4z*W`Îù„±\Ž"$eã!$E8ðSJì`7ìÎ à AìQ"!ç¢ÂD@À~Ž*hôå„,^ŽÅÄ’0ö ì„öf³Ýtá€+Eå˜Á!cQ)u£‘€Bˆ¡dü¸v‹bIRÆa±Ôj5‘*˜„OÏ¡L´¶”® ³@ÝP0–¥½ 4^†êœ°ÖLõ”(#d@Lµ&ab”ú£%* H¹MJüÔ1Ñ`ˆ0! ¢Ñ §}ÌN™Qñ¦æ/Ç4`-DÉö7öµžR˜ˆÀ%ñ麳ü¸«BW8ê[s.[Fh@"v…€î€!gý‘4>S0‚é+ù$š‹ à>R0õR£E«ô*°Ó¯ˆ=Ÿ+ ´‹»R_¹BBê€ÿoÁëBþ›ÎµYþ§Ô?¯È[)‘èüv#„?ù)&‰×3P4âsB8:²²T„)¥Ÿ{ù$Bm‘Œ=¦ðÆ4¨(#…±#BÑÙQJÿãc½p!!Ò.г«@är$žFMˆB® ¦6J„jtB,&NT)É$ &ä4íH ÀB ­I‡\(ä2†ÜP:F±=th\ B¥\Ní’nÊT}£X·¸(ªA…´æ{„paêÆS+Þsçª=7ÝðWI¾_¿RµÛP>ûÁžoÿeúk\AA1Áñ¾–ýlfíªª¸döVì ¦óÙoûg6tLê[ö^å±xiù쥤ʹ4˪.šïQe™T±›Á­Ï Ê»ñ}áºëw™¿}N¶Ç¼ú-H'´¶äJ˜ómU©}s’¯Û[Ù¤²™Üx[loòä÷ùÈû&nêÚ•ý:ã=nQÇKžçWàô‹kö gc_¯ØžÉÆ×¬7ñË bŸþái»š} µ™díG]É\¯šŽÿeësö¿Ó6G›ØõTDò»Ë2#Š=ûioÑ£;+Í?ŸP 9­m°\3¡zeÓipþ™ƒ‹ÁyÛÜæ<±©°Ú&X²ãBÂÑÆÞÃÕ·ì ö–Ã;ëS[Êï±ã}—5'øΦ9ž°Š*M­{rçu›1FÞ®ùÑzrj…(Çé÷l ÊMø{& Œò.{·„Žú󨾼\?Èþ!ëtAc•uŠû±Õ6à ÕçMÞ@‘ÂÜ®ïVÜÞ¿\ïS¾rŠÈ¶Hhh˜µ¼rPSô؇Vwß Ùdâ)×®w;*=_V¿ååؼ¸èóüîÚþ¿íjT–2öZϪQÄùÖ{;jRVǃ»“áê’§þ~¹qd¿Ïé\`DH„ÛñˆsØ•Œo—íÓ|( ¾ðwcCÑ÷‡Ó'/ÜÉ<ÖâòƒkÄ“ŸW>È\\à0ÙzûÂÌ'PþùSþ¹Û:rï¬-Y2uãkàë7ƒÙ¯~ÏÜõ¨õ’ 2¯fNÍ›=½ô§ƒÐ™G,Xe† Óë2Më¬Ì.ˉ_vs—_=j‘\²´Â±{v]•iš5ÉT÷t®±ÊSÄm}}ËáàðŽ+ý­Ä4(Å ×Û¬£^>ÅOxù˨n|–¥{á£Þæ–#7ŒÒ¯»NœõxþÄöoøý‰ä/<> endobj 12 0 obj << /Type /ObjStm /N 67 /First 535 /Length 2997 /Filter /FlateDecode >> stream xÚíZ[oÔÈ~Ÿ_Ñï+&}¿Hh¥\Ù%@ÄCŒ  ( Òž¾ªê±{<1ÄCاEL¹]]]÷®.;¶J+£JR&(k³2^9›”uÊgŒ Ù*UÌFÙ RÖÊ• .Y•\fÎ)ƒX¥Œ5Z¹¨ŒÓE¹^:+þÁa¾(VÞ+“RTër ʃ¾£<„ê’f>+°ø% -@’+^ÄæU°ÊùXTp ÓA–Wü× ñ×Õ]˜…¬¢§É"n´JÚj­J^ãêU “Q¥”0ŸU*É€Heqµ*;(•¼ÊÁùTÏ ëA /àF«¢KPpS±Ù«âiQT%BH&7a=Ç9z¹Ð/énuŠižÑi1&‚î-4Ò-µlh›£¤î w&’82˜ DÆ­ïèûU=ƒT¬¬õm rÇ6V·QŽÅè‘ù–’äv7õÒ¨´J|+rM,st5ÅQU~„”ìNäV—3»œ Q$ÆÖ9ñCuÇ]~¶åa ‚.\ѨRº0lW¡#’•DJ#­•Ù¤{+‡Bé<%µöB‘\DRU^2öôçtŒY3Lð𥤠«zJKÛy¤5vyæ ­ðœØíØiN~òc-ëc™¿g~‚I¥_ÙS tl™Ëœ©‘·ŠHàqd¼Œ"ÖmìRµáè.°ÛXÓ–Ý©$ó­Ø¥¼áfI|ÞJjSh÷¼ÀÌ^ÈTÊ“dEW$û*l”i©dʕɟ6bœ’¡øY¦4™¸ ¢ÃY$·„Îb. ÀÓ&T80(œ¢…ÔÈÞì99%ÀêÙÀ*Ø9=܉( ~ŒœðÖ7Ò:l\& º«÷‘Fã iN¥ˆJ´7$;Ã|Úl™6¥wä(Ôq‡bc(E]aG“+²/¤7o’4(³vÄ'’mGm*4—ÓÁJz#À§F&ŠÀI/çH¶¤A¨ÚÒ‰Ó”2}fxÙXXƒg?[¨ 9æÈQð‘¼í3iêèRœÓƒ?éìá5¡‹8Ç2I¦çvÄ<²çÄqì×H¾ †ðˆL–MË™KG.g.WEŠos9ÿŒlðÛaõd¤p14¤¯ÀJ‘%;È—\pä ÖRNØ_FÒ°u³|¦ñšü%P8¶³.p)¯Ü¾§é]`åÙ@‘ÕÒ&y>®àß²´9І¢¼Ár–:Â2úò½7ŠdG´tˆäÒp’ÝÀë«KGŒD¨JJ†¥p‘n0‘w^ë×Ö+­M‚¡˜qܺ»êï×®!¬DN"T3§ñ 󳦋XÍ·\#ïèHóäÊ?Þ5mÁ“6 7Ç{s` ~´Ûû Ñ–Fº/Úrq6¢æü黆µî£í~q÷Ñ–²¶û¨µ ™t b»­ö’^¼Á‰ny÷v¢,«Âe…ùŽ×VîÜ}ˆÃ+ÿ î4ÚvâÃò@ë Ž0³fÜD±+1µ=аJ-®p»!•IÒÌÖ¶ŒÇY2eÜðïï—üà]iŸkÈã€î殿ºZ 2-×–™Î+‚ÉÜhg40tÖP Ó9E'½$/ÕØ¢=2 ÐY*‰Í+‹¦(rîÍ"ɼ“¨ 0uœQÊBíËéÁ)óÎÁÆHs&Z0L\WDóØŒ‡VzÑîúS«Ž‘¡ôjê Á.ýÀëØa ?Õ•µPx>_|`è馮æôt´ºCy›àж–ØènÌŠîtÛén­\Ûó¤ÝzôäÅé«#Ñ|¤¸S¾Óƒ‰¥'£ðóšÖöèWe'½æw³b¸íeûé²mÜ@ö„„ËÓe±l瀇 vÚj+5½–k¾ 7ŠËTÛ@ò°È^K5Ù®Ï4¿Á.v2«²óZª¹Ñpë RmЋ „¯åšnek×Ë68}ÐI dO¨mnƒ\4áñ^ïÓ-„é‡gù@øze[q»é«KÜ äÃãxUxÑß yô}ªßR\è+ÂkúŒðuÝ×€¥~BùçåûkõF¾c4ò¹»ur‘/Þ­|ïèùö;¼Ýo'|¼|dèýø”åBù’¶~·8X±{ãˇ™,]JÉÿï@¯Œ endstream endobj 94 0 obj << /Type /XRef /Index [0 95] /Size 95 /W [1 3 1] /Root 92 0 R /Info 93 0 R /ID [<44F5611CA5BE190AB0C0F1D42D073217> <44F5611CA5BE190AB0C0F1D42D073217>] /Length 260 /Filter /FlateDecode >> stream xÚÌ;/ÃaÅñsþ®¥uW·¢(þ(Z—*u ñ&H,^Ýbñ%l‰M,^‹ÑÂNÎY>ùþNž<ð€$¡Z‹bẢY±*Š¢ÌðxêÇë¢J"zõV+¢$–DED¢šHåü®VÔéŸõ¢ŽÈ~û\¢ˆ½5‰Q(úÜIÑL”½Í‹‘"vÞ¼µŠ6Ñ.:D§èÝ"-zD¯èýb@dÄ ±—ñCÄù•k˜xª¸²ÄgÉ5BòÄ5Jî¿»ÆÈ³È•#o¶]ãäsÞ5A~|¹&®˜!¾uM1¸¦®w]3 w÷®¼Ø[ G`x¹Ä?ÉÉ%š endstream endobj startxref 182173 %%EOF gp2c-0.0.12/doc/type.tex0000644000175000017500000004516213645577722011650 00000000000000\documentclass[a4paper]{article} \usepackage[latin1]{inputenc} %I want this document to compile if latex2html is not installed \usepackage{ifthen} \ifthenelse{\boolean{true}}{% %Currently this is always true, but see below. \newcommand{\link}[2]{#1} \newcommand{\gpcc}{{\tt gp2c}} %HEVEA \renewcommand{\link}[2]{\ahref{#2}{#1}} }{% %If we use latex2html, we must set the boolean to false so that this branch is %used. However current latex2html version does not know about ifthen and so %just read *both* branch so it is *not* necessary. \usepackage{html} \newcommand{\link}[2]{\htmladdnormallink{#1}{#2}} \newcommand{\gpcc}{gp2c} } %Use \gpcc only for large fonts.(titles,sections) \newcommand{\pathlink}[1]{\link{\path{#1}}{#1}} \newcommand{\path}[1]{\texttt{#1}} \newcommand{\gp}[1]{\textit{#1}} \newcommand{\pari}[1]{\textsf{#1}} \newcommand{\cmd}[1]{{\noindent\bf #1}} \newcommand{\typ}[1]{\texttt{t\_#1}} \title{\gpcc\ types and the description system} \author{By Bill Allombert} \begin{document} \maketitle \tableofcontents \section{\gpcc\ types} \subsection{Introduction} The main feature GP2C adds above GP is the use of types. Types give a semantic to PARI objects, so that GP2C can generate code that use specialized (hence faster) PARI functions instead of generic ones. Please read the section 'Advanced use of GP2C' in the GP2C manual for how to use the GP2C types and examples. Such types are used in conjunctions with so-called \emph{descriptions} which are stored in the field 'Description:' of the file \path{pari.desc} and provide the actual C code to use depending of the types of the arguments. They are described in Section~\ref{description}. Abstractly, a GP2C type is a set of pairs $(A,B)$ where $A$ is a mathematical object and $B$ its computer representation. Two different types can contain the same mathematical object, with a different computer representation. For example the type \gp{bool} is the set \{(true,1L), (false,0L)\}, \emph{i.e.}~true and false with true coded by the C-long integer \(1\) and false coded by the C-long integer \(0\); the type \gp{negbool} is the set \{(true,0L), (false,1L)\} which is the same set of mathematical objects, but now true is coded by the C-long integer \(0\) and false by the C-long integer \(1\). For each GP2C type, there exists a C type $Ct$ such that for all pairs $(A,B)$ belonging to the type, the C type of $B$ is $Ct$. This C type is specified by the description \pari{\_typedef}. The GP2C types are preordered. Abstractly, we say that $t_1\prec t_2$ if and only if there is a map $f$ such that $(A,B)\mapsto (A,f(B))$ defines a one-to-one mapping from $t_1$ to $t_2$. Practically we restrict the relation $\prec$ to make it a partial order such that any two types have an upper bound. This partial order is defined by the chains in the description \pari{\_type\_preorder}. It can be printed by running \verb!gp2c -t!. \begin{figure}[htbp] \begin{center} \[ %HEVEA \begin{toimage} \unitlength=1.mm \begin{picture}(12,50)(-6,0) \put(6,50){\makebox[0mm]{gen}} \put(6,44){\line(0,1){5}} \put(6,40){\makebox[0mm]{mp}} \put(-2,44){\line(1,1){5}} \put(-3,40){\makebox[0mm]{vec}} \put(-9,44){\line(2,1){12}} \put(-9,40){\makebox[0mm]{pol}} \put(-9,34){\line(0,1){5}} \put(-9,30){\makebox[0mm]{var}} \put(12,30){\makebox[-1.5mm]{real}} \put(12,34){\line(-1,1){5}} \put(0,30){\makebox[-1.5mm]{int}} \put(0,34){\line(1,1){5}} \put(0,20){\makebox[1mm]{small}} \put(0,24){\line(0,1){5}} \put(0,10){\makebox[1mm]{bool}} \put(-8,17){\line(1,1){4}} \put(-15,15){\makebox[1mm]{negbool}} \put(-4,11){\line(-1,1){4}} \put(0,14){\line(0,1){5}} \put(0,00){\makebox[1mm]{void}} \put(5,01){\line(1,4){7}} \put(0,04){\line(0,1){5}} \end{picture} %HEVEA \end{toimage} %HEVEA \imageflush \] \caption{Example of type preorder} \label{fig:type} \end{center} \end{figure} The process of converting a mathematical object from one type to another is called casting. The casting methods known to GP2C are given by the \pari{\_cast} description. \subsection{List of types} In this section, we list the types known to PARI/GP. The current list is available in the description \pari{\_typedef}. \subsubsection{Basic types} \begin{description} \item[small] Small integers represented by C \pari{long} integers. \item[int] Multi-precision integers represented by \typ{INT} GENs. \item[real] Multi-precision floating point real numbers represented by \typ{REAL} GENs. \item[mp] Multi-precision numbers. Union of the types \gp{int} and \gp{real}. \item[vecsmall] Vectors of small integers represented by \typ{VECSMALL} GENs. \item[vec] Vectors and matrices of PARI objects, represented by \typ{VEC}, \typ{COL} or \typ{MAT} GENs. \item[var] Polynomial variables represented by their variable number which is a C \pari{long} integer. This is associated to the prototype code 'n'. \item[pol] Polynomials represented by \typ{POL} GENs. \item[genstr] Strings represented by \typ{STR} GENs. \item[list] GP lists represented by \typ{LIST} GENs. \item[gen] Generic PARI objects represented by GENs. \end{description} \subsubsection{Special types} \begin{description} \item[void] This type is a set with only one element called \gp{void}. This is the return type of functions not returning anything. GP allows to cast it to \(0\). \item[bool] Boolean values represented as C \pari{long} integers, where 1 is true and 0 is false. \item[negbool] Negated boolean values represented as C \pari{long} integers, where 0 is true and 1 is false. \item[lg] Vector lengths represented by the \pari{lg} macro output, i.e. a C \pari{long} integer equal to the actual length plus one. \item[str] C strings represented by C \pari{const char *} strings. \item[typ] GEN types represented by C \pari{long} integers, as returned by the \pari{typ()} macro. \end{description} \subsubsection{Internal types} The following types are mainly for internal use inside GP2C. \begin{description} \item[empty] This type is the empty set. No individual object can be of this type but a set of objects can. In fact this is a default type for an unspecified set of objects. \item[small\_int] Small integers represented by C \pari{int} integers. This is only available for compatibility with PARI function returning \pari{int} (instead of \pari{long}). \item[bptr] Byte pointer. This is used for the \pari{primepointer} global variable. \item[func\_GG] function with protype \pari{GEN f(GEN,GEN)}. Used by \gp{forvec}. \item[pari\_sp] This is the stack pointer type \pari{pari\_sp}. \end{description} \subsubsection{Types for data structure.} These types are mainly defined to allow the use of inline member functions. \begin{description} \item[nf] Number field as returned by \gp{nfinit}. \item[bnf] Big number field as returned by \gp{bnfinit}. \item[bnr] Ray class field as returned by \gp{bnrinit}. \item[ell] Elliptic curve as returned by \gp{ellinit}. \item[bell] Big elliptic curve as returned by \gp{ellinit}. \item[clgp] Class group as returned by the 'clgp' member function. \item[prid] Prime ideal as returned by \gp{idealprimedec}. \item[gal] Galois group as returned by \gp{galoisinit}. \end{description} \subsection{C-Type} A \textit{C-Type} is just a level of indirection toward real C types. C-types are defined by the descriptions \pari{\_decl\_base} and \pari{\_decl\_ext}. Each type belongs to a C-type as specified by the description \pari{\_typedef}. \section{The description system}\label{description} \subsection{Introduction} The description system is a way to describe the PARI application programming interface in a way understandable by both the GP2C compiler and human beings. The present document is mostly addressed to this second category. We start by a simple example: The description of the GP function \gp{sqr} is \begin{verbatim} (int):int sqri($1) (mp):mp gsqr($1) (gen):gen gsqr($1) \end{verbatim} Each line is called a \textit{rule}, which in this case consists of three parts. Let us consider the first one: the parts \verb!(int)!, \verb!:int! and \verb!sqri($1)! are respectively called the \textit{pattern}, \textit{type}, and \textit{action} part. When GP2C compiles \gp{sqr(1)}, it computes the types of the arguments (here~\gp{1} is of type \gp{small}) and matches them against the patterns from top to bottom. The ``best'' rule is used; in case of a tie, the topmost rule wins. Here, all three rules apply, and the first rule wins. Since the type of this rule is \gp{int}, GP2C sets the type of the expression \gp{sqr(1)} to \gp{int}. The action part is \verb!sqri($1)!, so GP2C generates the C code \pari{sqri(\$1)} where \pari{\$1} is replaced by the code of the argument \gp{1} cast to the pattern type (\gp{int}). The result is the C code \pari{sqri(gen\_1)}. Now a more complex example: the description of the GP function \gp{exp} is \begin{verbatim} (real):real mpexp($1) (mp):mp:prec gexp($1, prec) (gen):gen:prec gexp($1, prec) \end{verbatim} When GP2C compiles \gp{exp(1)}, it looks for the "best" rules. The first rule cannot be used, because there is no way to cast a \gp{small} to a \gp{real}, so it uses the second rule. This time the result will be of type \gp{mp}. The extra part \verb!:prec! is called a mode. The mode `prec' states that the action part will use the special `prec' variable that holds the current real precision. This is obvious from the action part code, but GP2C do not parse the action part so it needs this mode. Note that the last rule is also valid and has the same action part so would generate the exact same code. However, the type of the expression would be less precise. The description of the GP function \gp{matdet} is \begin{verbatim} (gen, ?0):gen det($1) (gen, 1):gen det2($1) (gen, #small):gen $"incorrect flag in matdet" (gen, small):gen det0($1, $2) \end{verbatim} We see several new pattern atoms: \begin{itemize} \item \gp{1} matches a literal $1$, e.g. \gp{matdet(M,1)} would match the second rule. \item \gp{?0} matches an optional literal $0$: \gp{matdet(M)}, \gp{matdet(M,0)} and \gp{matdet(M,)} all match the first rule. \item \gp{\#small} matches an unspecified literal \gp{small}. \end{itemize} Finally, we also see a new action \gp{\$"\dots"}, which causes GP2C to display the error message and abort. \subsection{Definitions} We now give a formal definition of descriptions. \subsubsection{Description} A description is a line-separated list of \textit{rules}. \subsubsection{Rule} A rule is a line of the form \begin{quote} (\textit{pattern})\textit{:type}\textit{:modelist} \textit{action} \end{quote} Only the pattern part is mandatory, though most rules also include an action and a type. \subsubsection{Pattern} A pattern is a comma-separated list of \textit{pattern atoms}. \subsubsection{Type} The type of a rule is a standard GP2C type. \subsubsection{Modelist} A modelist is a colon-separated list of \textit{modes}. \subsubsection{Action} An action is a string (normally a piece of C code) that can include \textit{replacement strings}. Replacement strings start by a \$ and are substituted according to the replacement rules. \subsection{Pattern atom} A pattern atom is one of the following, where \gp{type} is any GP2C type, \gp{n} any small integer, \gp{"str"} any character string and \gp{ctype} any C-type. A pattern atom can match an object. \begin{itemize} \item \gp{type}. This matches any object of type comparable to \gp{type}. \item \gp{n}. This matches a constant small integer value equal to \gp{n}. \item \gp{?n}. This matches an optional \gp{small} value which defaults to \gp{n}. \item \gp{?type}. This matches an optional \gp{type} value with standard default value. \item \gp{"str"}. This matches a constant character string equal to \gp{str}. \item \gp{\&type}. This matches a reference (the GP \gp{\&x} construction) to an object of type equal or less than \gp{type} referencing the same data type. \item \textit{nothing}. This matches a missing argument. \item \gp{\#type}. This matches a constant value of type \gp{type}. \item \gp{...} This matches any number of arguments matching the previous atom. This must be the last atom of the pattern. This allows to implement functions taking an unlimited number of arguments. \item \gp{C!ctype}. This matches any object of C-type \gp{ctype}. \item \gp{@type}. This matches a variable of type \gp{type}. This is mainly used for expressions that evaluate their arguments several times. \item \gp{*type}. This matches an lvalue of type \gp{type}. This is used in constructions that modify their arguments. \end{itemize} \subsection{Matching} The best rule is determined as follows: \begin{enumerate} \item The result of matching a pattern atom against some GP code is either 'reject' or 'match'. \item There are three matching levels: 'partial', 'normal' and 'perfect'. \item A pattern matches if all the atoms match. \item A rule matches if its pattern matches. \item The best rule is the matching rule with the higher number of normal and perfect matches. In case of a tie, the highest number of perfect matches wins. If there is still a tie, the topmost rule wins. \end{enumerate} When matching the pattern atoms \gp{type} and \gp{?type}, the matching level is determined as follows: \begin{itemize} \item a perfect match occurs when the type of the object is exactly \gp{type}, \item a normal match when the type is less than \gp{type}, \item a partial match when the type is bigger than \gp{type}. \item Rejection happens when the types are uncomparable. \end{itemize} Other pattern atoms always result in a reject or a perfect match. \subsection{Mode} Modes are used in descriptions to give more information to GP2C about the action part. They are usually useless to human beings that are smart enough to understand the action part. The current list of modes is: \begin{description} \item[prec] The action uses the \pari{prec} variable. \item[parens] The action does not have top precedence. GP2C will put it between parentheses when needed (see \$()) \item[copy] The action returns data that access memory belonging to other objects. GP2C will generate calls to \pari{gcopy()} when needed. \end{description} %\begin{description} %\item[long] The action returns a \pari{GEN} casted to \pari{long}. GP2C will %generate type casting if needed. This is not supported anymore. %\item[semicolon] The action is a full block and does not need a trailing %semicolon. %\item[brace] The action does not need to be put inside brace. %\item[else] This is an if-else block. This is used by GP2C in conjunction %with brace to add braces around if-else blocks. %\end{description} %The following modes are defined but currently ignored. %\begin{description} %\item[var] (ignored) value cannot be determined at compile time %\item[sidef] (ignored) The statement has a side-effect. %\item[term] (ignored) The statement terminate the function. %\end{description} \subsection{Lists of replacement strings} The following special sequences can occur in the action part: \begin{itemize} \item \pari{\$n}. This is replaced by the \(n\)-th argument of the function. \item \pari{\$(n)}. This is replaced by the \(n\)-th argument of the function between parenthesis if it has the parens mode. \item \pari{\$type:n}. This is replaced by the \(n\)-th argument of the function cast to type \gp{type}. \item \pari{\$(type:n)}. Combination of \$(n) and \$type:n. \item \pari{\$\%n}. This is replaced by the \(n\)-th argument of the function, which must be a constant string, with all \% characters doubled and no quotes. This is for use inside format specification. \item \pari{\$prec}: short cut for \pari{\${prec}}. \item \pari{\$bitprec}: short cut for \pari{\${bitprec}}. \item \pari{\$"message"}. Signals an invalid condition. GP2C will abort by printing the error message \pari{message}. \item \pari{\$\{RPN sequence\}} The RPN sequence is a space separated list of RPN commands that will be evaluated by the GP2C internal RPN evaluator. If the stack is empty at the end of the evaluation, this is replaced by the empty string, else this is replaced by the integer at the top of the stack. Some RPN commands generate text, in that case it is pasted just before the \$ sign. \end{itemize} \subsection{Lists of RPN commands} The commands are evaluated with respect to a stack of integer values, initially empty. The exact list of command supported by a particular GP2C version is the \pari{\%accepted\_command} hash in the script \path{scripts/822\_desc.pl.in}. \begin{description} \item[\gp{literal integer}] push the integer at the top of the stack. \item[:\gp{type}] push the type \gp{type} at the top of the stack. \item[add, sub, mul, div, mod] 2-ary arithmetic operators \item[neg] 1-ary arithmetic operator \item[and, or, xor] 2-ary logical operators \item[not] 1-ary logical operator \item[type] pop an integer $n$ and push the type of the $n$-th argument. \item[value] pop an integer $n$ and push the value of the $n$-th argument, provided it is a constant integer. \item[code] pop an integer $n$ and generate the C code for the $n$-th argument. \item[cast] pop an integer $n$ and a type $t$ and generate the C code for the $n$-th argument cast to type $t$. \item[parens] this is a flag requesting \cmd{code} and \cmd{cast} to enclose the C code between parenthesis if the argument has the \gp{parens} mode. \item[str\_format, str\_raw] pop an integer $n$ such that the $n$-th argument is a constant string and display the string without leading and ending ". Furthermore \cmd{str\_format} will display the string in a way suitable for inclusion in a format string by quoting meta-characters. \item[prec] display the local precision (in prec format). \item[bitprec] display the local precision in bit. \end{description} The following RPN commands are useful with the \gp{...} pattern atom to implement functions that take an unlimited number of arguments. \begin{description} \item[nbarg] push the actual number of arguments of the function. \item[format\_string, format\_args] pop an integer $n$ such that the $n$-th argument corresponds to a \gp{...} pattern atom and generate a format string and a list of arguments, see the description of the GP function \gp{print}. \item[code, cast] If the integer $n$ corresponds to a \gp{...} pattern atom, generate a comma-separated list of C code for the arguments $n-1$, $n$, $n+1$, \ldots, \cmd{nbarg}, by matching each argument against the $n-1$ pattern atom. \item[stdref] this is a flag requesting \cmd{code} and \cmd{type} to prepend a '\&' before each arguments. \end{description} The following RPN commands are useful to implement functions that take closures as arguments. \begin{description} \item[wrapper, cookie] pop an integer $n$ and generate a call to the wrapper (resp. the cookie associated to the wrapper) for the $n$-th argument. The wrapper generated depends on the wrapper prototype in the Wrapper field. The cookie is the list of local variables seen by the closure. \end{description} \end{document} gp2c-0.0.12/doc/type.html0000644000175000017500000010756213645577731012017 00000000000000 gp2c types and the description system

gp2c types and the description system

By Bill Allombert

Contents

1  gp2c types

1.1  Introduction

The main feature GP2C adds above GP is the use of types. Types give a semantic to PARI objects, so that GP2C can generate code that use specialized (hence faster) PARI functions instead of generic ones. Please read the section ’Advanced use of GP2C’ in the GP2C manual for how to use the GP2C types and examples.

Such types are used in conjunctions with so-called descriptions which are stored in the field ’Description:’ of the file pari.desc and provide the actual C code to use depending of the types of the arguments. They are described in Section 2.

Abstractly, a GP2C type is a set of pairs (A,B) where A is a mathematical object and B its computer representation. Two different types can contain the same mathematical object, with a different computer representation. For example the type bool is the set {(true,1L), (false,0L)}, i.e. true and false with true coded by the C-long integer 1 and false coded by the C-long integer 0; the type negbool is the set {(true,0L), (false,1L)} which is the same set of mathematical objects, but now true is coded by the C-long integer 0 and false by the C-long integer 1.

For each GP2C type, there exists a C type Ct such that for all pairs (A,B) belonging to the type, the C type of B is Ct. This C type is specified by the description _typedef.

The GP2C types are preordered. Abstractly, we say that t1t2 if and only if there is a map f such that (A,B)↦ (A,f(B)) defines a one-to-one mapping from t1 to t2. Practically we restrict the relation ≺ to make it a partial order such that any two types have an upper bound. This partial order is defined by the chains in the description _type_preorder. It can be printed by running gp2c -t.


Figure 1: Example of type preorder

The process of converting a mathematical object from one type to another is called casting. The casting methods known to GP2C are given by the _cast description.

1.2  List of types

In this section, we list the types known to PARI/GP. The current list is available in the description _typedef.

1.2.1  Basic types

small
Small integers represented by C long integers.
int
Multi-precision integers represented by t_INT GENs.
real
Multi-precision floating point real numbers represented by t_REAL GENs.
mp
Multi-precision numbers. Union of the types int and real.
vecsmall
Vectors of small integers represented by t_VECSMALL GENs.
vec
Vectors and matrices of PARI objects, represented by t_VEC, t_COL or t_MAT GENs.
var
Polynomial variables represented by their variable number which is a C long integer. This is associated to the prototype code ’n’.
pol
Polynomials represented by t_POL GENs.
genstr
Strings represented by t_STR GENs.
list
GP lists represented by t_LIST GENs.
gen
Generic PARI objects represented by GENs.

1.2.2  Special types

void
This type is a set with only one element called void. This is the return type of functions not returning anything. GP allows to cast it to 0.
bool
Boolean values represented as C long integers, where 1 is true and 0 is false.
negbool
Negated boolean values represented as C long integers, where 0 is true and 1 is false.
lg
Vector lengths represented by the lg macro output, i.e. a C long integer equal to the actual length plus one.
str
C strings represented by C const char * strings.
typ
GEN types represented by C long integers, as returned by the typ() macro.

1.2.3  Internal types

The following types are mainly for internal use inside GP2C.

empty
This type is the empty set. No individual object can be of this type but a set of objects can. In fact this is a default type for an unspecified set of objects.
small_int
Small integers represented by C int integers. This is only available for compatibility with PARI function returning int (instead of long).
bptr
Byte pointer. This is used for the primepointer global variable.
func_GG
function with protype GEN f(GEN,GEN). Used by forvec.
pari_sp
This is the stack pointer type pari_sp.

1.2.4  Types for data structure.

These types are mainly defined to allow the use of inline member functions.

nf
Number field as returned by nfinit.
bnf
Big number field as returned by bnfinit.
bnr
Ray class field as returned by bnrinit.
ell
Elliptic curve as returned by ellinit.
bell
Big elliptic curve as returned by ellinit.
clgp
Class group as returned by the ’clgp’ member function.
prid
Prime ideal as returned by idealprimedec.
gal
Galois group as returned by galoisinit.

1.3  C-Type

A C-Type is just a level of indirection toward real C types. C-types are defined by the descriptions _decl_base and _decl_ext. Each type belongs to a C-type as specified by the description _typedef.

2  The description system

2.1  Introduction

The description system is a way to describe the PARI application programming interface in a way understandable by both the GP2C compiler and human beings. The present document is mostly addressed to this second category. We start by a simple example:

The description of the GP function sqr is

 (int):int      sqri($1)
 (mp):mp        gsqr($1)
 (gen):gen      gsqr($1)

Each line is called a rule, which in this case consists of three parts. Let us consider the first one: the parts (int), :int and sqri($1) are respectively called the pattern, type, and action part.

When GP2C compiles sqr(1), it computes the types of the arguments (here 1 is of type small) and matches them against the patterns from top to bottom. The “best” rule is used; in case of a tie, the topmost rule wins. Here, all three rules apply, and the first rule wins. Since the type of this rule is int, GP2C sets the type of the expression sqr(1) to int. The action part is sqri($1), so GP2C generates the C code sqri($1) where $1 is replaced by the code of the argument 1 cast to the pattern type (int). The result is the C code sqri(gen_1).

Now a more complex example: the description of the GP function exp is

 (real):real    mpexp($1)
 (mp):mp:prec   gexp($1, prec)
 (gen):gen:prec gexp($1, prec)

When GP2C compiles exp(1), it looks for the "best" rules. The first rule cannot be used, because there is no way to cast a small to a real, so it uses the second rule. This time the result will be of type mp. The extra part :prec is called a mode. The mode ‘prec’ states that the action part will use the special ‘prec’ variable that holds the current real precision. This is obvious from the action part code, but GP2C do not parse the action part so it needs this mode. Note that the last rule is also valid and has the same action part so would generate the exact same code. However, the type of the expression would be less precise.

The description of the GP function matdet is

 (gen, ?0):gen      det($1)
 (gen, 1):gen       det2($1)
 (gen, #small):gen  $"incorrect flag in matdet"
 (gen, small):gen   det0($1, $2)

We see several new pattern atoms:

  • 1 matches a literal 1, e.g. matdet(M,1) would match the second rule.
  • ?0 matches an optional literal 0: matdet(M), matdet(M,0) and matdet(M,) all match the first rule.
  • #small matches an unspecified literal small.

Finally, we also see a new action $"…", which causes GP2C to display the error message and abort.

2.2  Definitions

We now give a formal definition of descriptions.

2.2.1  Description

A description is a line-separated list of rules.

2.2.2  Rule

A rule is a line of the form

(pattern):type:modelist action

Only the pattern part is mandatory, though most rules also include an action and a type.

2.2.3  Pattern

A pattern is a comma-separated list of pattern atoms.

2.2.4  Type

The type of a rule is a standard GP2C type.

2.2.5  Modelist

A modelist is a colon-separated list of modes.

2.2.6  Action

An action is a string (normally a piece of C code) that can include replacement strings. Replacement strings start by a $ and are substituted according to the replacement rules.

2.3  Pattern atom

A pattern atom is one of the following, where type is any GP2C type, n any small integer, "str" any character string and ctype any C-type. A pattern atom can match an object.

  • type. This matches any object of type comparable to type.
  • n. This matches a constant small integer value equal to n.
  • ?n. This matches an optional small value which defaults to n.
  • ?type. This matches an optional type value with standard default value.
  • "str". This matches a constant character string equal to str.
  • &type. This matches a reference (the GP &x construction) to an object of type equal or less than type referencing the same data type.
  • nothing. This matches a missing argument.
  • #type. This matches a constant value of type type.
  • ... This matches any number of arguments matching the previous atom. This must be the last atom of the pattern. This allows to implement functions taking an unlimited number of arguments.
  • C!ctype. This matches any object of C-type ctype.
  • @type. This matches a variable of type type. This is mainly used for expressions that evaluate their arguments several times.
  • *type. This matches an lvalue of type type. This is used in constructions that modify their arguments.

2.4  Matching

The best rule is determined as follows:

  1. The result of matching a pattern atom against some GP code is either ’reject’ or ’match’.
  2. There are three matching levels: ’partial’, ’normal’ and ’perfect’.
  3. A pattern matches if all the atoms match.
  4. A rule matches if its pattern matches.
  5. The best rule is the matching rule with the higher number of normal and perfect matches. In case of a tie, the highest number of perfect matches wins. If there is still a tie, the topmost rule wins.

When matching the pattern atoms type and ?type, the matching level is determined as follows:

  • a perfect match occurs when the type of the object is exactly type,
  • a normal match when the type is less than type,
  • a partial match when the type is bigger than type.
  • Rejection happens when the types are uncomparable.

Other pattern atoms always result in a reject or a perfect match.

2.5  Mode

Modes are used in descriptions to give more information to GP2C about the action part. They are usually useless to human beings that are smart enough to understand the action part. The current list of modes is:

prec
The action uses the prec variable.
parens
The action does not have top precedence. GP2C will put it between parentheses when needed (see $())
copy
The action returns data that access memory belonging to other objects. GP2C will generate calls to gcopy() when needed.

2.6  Lists of replacement strings

The following special sequences can occur in the action part:

  • $n. This is replaced by the n-th argument of the function.
  • $(n). This is replaced by the n-th argument of the function between parenthesis if it has the parens mode.
  • $type:n. This is replaced by the n-th argument of the function cast to type type.
  • $(type:n). Combination of $(n) and $type:n.
  • $%n. This is replaced by the n-th argument of the function, which must be a constant string, with all % characters doubled and no quotes. This is for use inside format specification.
  • $prec: short cut for $prec.
  • $bitprec: short cut for $bitprec.
  • $"message". Signals an invalid condition. GP2C will abort by printing the error message message.
  • ${RPN sequence} The RPN sequence is a space separated list of RPN commands that will be evaluated by the GP2C internal RPN evaluator. If the stack is empty at the end of the evaluation, this is replaced by the empty string, else this is replaced by the integer at the top of the stack. Some RPN commands generate text, in that case it is pasted just before the $ sign.

2.7  Lists of RPN commands

The commands are evaluated with respect to a stack of integer values, initially empty. The exact list of command supported by a particular GP2C version is the %accepted_command hash in the script scripts/822_desc.pl.in.

literal integer
push the integer at the top of the stack.
:type
push the type type at the top of the stack.
add, sub, mul, div, mod
2-ary arithmetic operators
neg
1-ary arithmetic operator
and, or, xor
2-ary logical operators
not
1-ary logical operator
type
pop an integer n and push the type of the n-th argument.
value
pop an integer n and push the value of the n-th argument, provided it is a constant integer.
code
pop an integer n and generate the C code for the n-th argument.
cast
pop an integer n and a type t and generate the C code for the n-th argument cast to type t.
parens
this is a flag requesting code and cast to enclose the C code between parenthesis if the argument has the parens mode.
str_format, str_raw
pop an integer n such that the n-th argument is a constant string and display the string without leading and ending ". Furthermore str_format will display the string in a way suitable for inclusion in a format string by quoting meta-characters.
prec
display the local precision (in prec format).
bitprec
display the local precision in bit.

The following RPN commands are useful with the ... pattern atom to implement functions that take an unlimited number of arguments.

nbarg
push the actual number of arguments of the function.
format_string, format_args
pop an integer n such that the n-th argument corresponds to a ... pattern atom and generate a format string and a list of arguments, see the description of the GP function print.
code, cast
If the integer n corresponds to a ... pattern atom, generate a comma-separated list of C code for the arguments n−1, n, n+1, …, nbarg, by matching each argument against the n−1 pattern atom.
stdref
this is a flag requesting code and type to prepend a ’&’ before each arguments.

The following RPN commands are useful to implement functions that take closures as arguments.

wrapper, cookie
pop an integer n and generate a call to the wrapper (resp. the cookie associated to the wrapper) for the n-th argument. The wrapper generated depends on the wrapper prototype in the Wrapper field. The cookie is the list of local variables seen by the closure.

This document was translated from LATEX by HEVEA.
gp2c-0.0.12/doc/gp2c-dbg.1.in0000644000175000017500000000312113623476440012175 00000000000000.TH GP2C-DBG "1" "November 2001" "GP to C compiler driver" PARI .SH NAME GP2C-DBG \- The GP to C debugger driver .SH DESCRIPTION gp2c-dbg .I [gp2c options] [file.gp] .PP Compile \fIfile.gp\fR with \fBgp2c\fR and launch a debugger session of gp where the functions of \fIfile.gp\fR are loaded. [gp2c options] are passed to \fBgp2c\fR. .PP gp2c-dbg .I file.c .PP Compile \fIfile.c\fR and launch a debugger session of \fBgp\fR where the functions of \fIfile.c\fR are loaded. The file \fIfile.c\fR must have suitable \fPGP;install()\fR lines. .SH "USAGE" .PP Since there is no debugger for the GP language, \fBgp2c-dbg\fR allows to debug GP scripts with the C debugger. To catch \fBPARI\fR errors, you can set a break point on the function "pari_err". Note that your functions will not be loaded until \fBgp\fR read the .run file. .SH "FILES" .I file.gp.c The C output of \fBgp2c\fR. .TP .I file.gp.so The GP loadable module. .TP .I file.gp.run The commands to load the module. Once a module is compiled, you can load it inside a \fBgp\fR session by running this script. .SH "ENVIRONMENT" .TP .I GP2C Path to the gp2c compiler, default: @mybindir@/gp2c .TP .I GP_DBG Path to the gp calculator, default: @GP_PATH@ .TP .I GP2C_DBG Command to start the debugger, default: "gdb --args" .SH "COPYING" Copyright 2000-2018 The PARI Group .PP GP2C is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for GP2C. .SH "SEE ALSO" The GP2C manual, .IR gp2c-run(1), .IR gp2c(1), .IR gp(1), .IR gdb(1) gp2c-0.0.12/doc/gp2c-run.1.in0000644000175000017500000000331513623476440012252 00000000000000.TH GP2C-RUN "1" "November 2001" "GP to C compiler driver" PARI .SH NAME GP2C-RUN \- The GP to C compiler driver .SH DESCRIPTION gp2c-run \fI[gp2c options] [file.gp]\fR .PP Compile \fIfile.gp\fR with \fBgp2c\fR and launch a \fBgp\fR session where the functions of functions of \fIfile.gp\fR are preloaded. Any options are passed to \fBgp2c\fR. .PP gp2c-run \fIfile.c\fR .PP Compile \fIfile.c\fR and launch a \fBgp\fR session where the functions of \fIfile.c\fR are preloaded. the file \fIfile.c\fR must have suitable \fPGP;install()\fR lines. .PP This is especially useful if you manually modify the \fIfile.gp.c\fR produced by \fBgp2c-run\fR. In this case it is advised to rename it to \fIfile.c\fR to avoid subsequent calls of \fBgp2c-run\fR to overwrite your changes. .SH "FILES" .I file.gp.c The C output of \fBgp2c\fR. .TP .I file.gp.so The GP loadable module. .TP .I file.gp.run The commands to load the module. Once a module is compiled, you can load it inside a \fBgp\fR session by running this script. .SH "ENVIRONMENT" .TP .I GP2C Path to the \fBgp2c\fR compiler, default: @mybindir@/gp2c .TP .I GP Path to the \fIgp\fR calculator, default: @GP_PATH@ .SH "FILES" .I file.gp.c The C output of \fBgp2c\fR. .TP .I file.gp.so The GP loadable module. .TP .I file.gp.run The commands to load the module. Once a module is compiled, you can load it inside a \fBgp\fR session by running this script. .SH "COPYING" Copyright 2000-2018 The PARI Group .PP GP2C is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for GP2C. .SH "SEE ALSO" The GP2C manual, .IR gp2c(1), .IR gp2c-dbg(1), .IR gp(1), .IR gcc(1) gp2c-0.0.12/doc/Makefile.in0000644000175000017500000004051013751742674012200 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = gp2c-run.1 gp2c-dbg.1 CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gp2c-dbg.1.in \ $(srcdir)/gp2c-run.1.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ man_MANS = gp2c.1 gp2c-run.1 $(GP2C_DBG1) EXTRA_MANS = gp2c-dbg.1 GP2C_DOC = gp2c.dvi gp2c.html gp2c001.png TYPE_DOC = type.dvi type.html type001.png PDF_DOC = gp2c.pdf type.pdf ALL_DOC = gp2c.ps type.ps $(PDF_DOC) GP2C_CRUFT = gp2c.aux gp2c.haux gp2c.htoc gp2c.image.tex gp2c.log gp2c.toc TYPE_CRUFT = type.aux type.haux type.htoc type.image.tex type.log type.toc EXTRA_DIST = gp2c.1 gp2c.tex type.tex $(GP2C_DOC) $(TYPE_DOC) $(PDF_DOC) MAINTAINERCLEANFILES = $(GP2C_DOC) $(TYPE_DOC) $(ALL_DOC) $(GP2C_CRUFT) $(TYPE_CRUFT) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): gp2c-run.1: $(top_builddir)/config.status $(srcdir)/gp2c-run.1.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ gp2c-dbg.1: $(top_builddir)/config.status $(srcdir)/gp2c-dbg.1.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$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 $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local uninstall-man uninstall-man1 .PRECIOUS: Makefile all: gp2c.dvi gp2c.aux: $(srcdir)/gp2c.tex latex $(srcdir)/gp2c.tex latex $(srcdir)/gp2c.tex type.dvi type.aux: $(srcdir)/type.tex latex $(srcdir)/type.tex latex $(srcdir)/type.tex gp2c.pdf: $(srcdir)/gp2c.tex pdflatex $(srcdir)/gp2c.tex pdflatex $(srcdir)/gp2c.tex type.pdf: $(srcdir)/type.tex pdflatex $(srcdir)/type.tex pdflatex $(srcdir)/type.tex gp2c.ps: gp2c.dvi dvips gp2c.dvi -o gp2c.ps type.ps: type.dvi dvips type.dvi -o type.ps gp2c.html: $(srcdir)/gp2c.tex hevea -fix $(srcdir)/gp2c.tex type.html: $(srcdir)/type.tex hevea -fix $(srcdir)/type.tex doc: gp2c.dvi type.dvi dochtml: gp2c.html type.html docall: $(ALL_DOC) gp2c.html type.html gzip -c gp2c.ps > gp2c.ps.gz gzip -c type.ps > type.ps.gz install-data-local: $(INSTALL) -d $(DESTDIR)$(docdir) for i in $(GP2C_DOC) $(TYPE_DOC) $(PDF_DOC); do \ if test -f $(srcdir)/$$i; then \ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(docdir); \ fi \ done; uninstall-local: rm -r $(DESTDIR)$(docdir) # 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: gp2c-0.0.12/doc/type.dvi0000644000175000017500000007333413645577727011641 00000000000000÷ƒ’À;è TeX output 2020.04.15:1436‹ÿÿÿÿ ª ýs o ýÞ‘[7÷ó߆µTG® cmtt12ºgp2c–7tóDÓítG®G®cmr17¹tŒqypsŽes“and“the“description“systemŽŸ’³RóX«Q cmr12»By–ê¨Bill“Allom¬rbSŽertŽŽŽŽŽŸˆ‹’½0April–ê¨15,“2020ŽŸ+Ä‘5óÂÖN ff cmbx12ÅCon•ŒÌten“tsŽ©‘5óò"V cmbx10Æ1Ž‘Dóßê cmmi10µA;‘ª¨B‘€q²)“where‘?áµA“²is“a“mathematicalŽ¡‘5ob‘Ž8ject–Z-and“µB‘Úž²its“computer“represen•¸ãtation.‘€PTw“o›Z-di eren“t˜t“ypGes˜can˜con“tain˜theŽ¡‘5same–Åímathematical›Åìob‘Ž8ject,‘â›with“a˜di erenš¸ãt“computer“represen˜tation.‘AùF‘ÿ*ªor“exam-Ž¡‘5ple–v]the›v\t¸ãypGe“Êb–ÿ}'o“ol‘~æ²is–v]the˜set“ó !",š cmsy10¸f²(true,1L),“(false,0L)¸g²,‘~žÊi.e.“²true“and“false˜with“trueŽ¡‘5coGded–"æbš¸ãy“the“C-long“in˜teger‘"å1“and“false“coGded“b˜y“the“C-long“in˜teger‘"å0;‘3¶the“t˜ypGeŽ¡‘5Êne–ÿ}'gb“o“ol‘Ur²is›Lêthe–Léset“¸f²(true,0L),˜(false,1L)¸g“²whic¸ãh“is˜the“same“set˜of“mathematicalŽ¡‘5ob‘Ž8jects,‘…but–{no¸ãw›{true“is“coGded˜b¸ãy“the“C-long˜in¸ãteger“0˜and“false“b¸ãy˜the“C-longŽ¡‘5in¸ãteger‘UU1.Ž¡‘DF‘ÿ*ªor‘B¿eac•¸ãh›B¾GP2C‘Bºt“ypGe,‘Fwthere˜exists–B¿a“C‘B¹tš¸ãypGe“µC‘·t“²suc˜h›B¾that“for“all˜pairs“(µA;‘ª¨B‘€q²)Ž¡‘5bšGelonging–Îqto‘Îpthe“t•¸ãyp˜e,‘ì·the‘ÎpC‘ÎRt“yp˜e‘Îpof–ÎqµB‘Ná²is“µC‘·t².‘ÝThis“C‘ÎQt¸ãyp˜e‘Îpis“sp˜eci ed‘Îpb¸ãy“theŽ¡‘5description‘îí‰ffŽ‘îïó m#½R cmss10Ët¸ãypGedef².Ž¡‘DThe–GP2C‘ tš¸ãypGes“are–preordered.‘Z Abstractly‘ÿ*ª,‘[w˜e“sa˜y›that“µtŸÿóÙ“ Rcmr7±1Ž‘C‹¸‘ǵtŸÿ±2Ž‘вif“and˜onlyŽ¡‘5if–U¬there›U­is“a“map˜µf‘i;²suc¸ãh“that˜(µA;–ª¨B›€q²)‘Ç©¸7!‘Ǫ²(µA;“f‘²(µB˜²))–U¬de nes“a‘U­one-to-one“mappingŽ¡‘5from›®µtŸÿ±1Ž‘*t²to–®µtŸÿ±2Ž‘|s².‘{ËPractically“w¸ãe˜restrict˜the˜relation“¸˜²to˜mak¸ãe˜it“a˜partial˜orderŽ¡‘5sucš¸ãh–Aithat“an˜y‘Ajt˜w˜o“t˜ypGes“ha˜v˜e“an“upp•Ger›Ajb“ound.‘6This–Aipartial˜order“is“de nedŽ¡‘5bš¸ãy–0$the“c˜hains“in“the“description‘ɼ‰ffŽ‘ɾËt˜ypGe‘™˜‰ffŽ‘™šp˜reo˜rder².‘4It“can“bGe“prin˜ted“b˜y“runningŽ¡‘5Çgp2c‘?ý-t².Ž Ón ÿ:Êã ™CV’ëQ ÿq¼ªgenŽŽ’ò_ Ÿ‚Îü„9ïfeŽŽ’ë ‰ŸŽ0ˆmpŽŽ’ÛÏ:Ÿ‚ÎüóäO£ line10¬Ž’à ) ÿ~–«ŽŽ’ÒŸŽ0ˆ²v¸ãecŽŽ’Çä…Ÿ‚Îü¬Ž’Ñä… ÿ}ÎüŽ’Ûä… ÿxÎüŽ’à ) ÿv½ŽŽ’ÁJŸŽ0ˆ²pGolŽŽ’DZSŸŸBÚ„9ïfeŽŽ’Á¼Ÿª¤fv‘ÿqÇarŽŽ’ùp‘Ÿª¤frealŽŽ’ù¤¤ŸŸBÚ¬@Ž’õjµŸ› ‰@ŽŽ’ÙdÑŸª¤f²in¸ãtŽŽ’ဟŸBÚ¬Ž’å¹ïŸ› ‰ŽŽ’×…ŸÇD²smallŽŽ’áLΟ»¶¸„9ïfeŽŽ’ÙzhŸãŒ"b•Go“olŽŽ’ʼèŸÏ¡m¬Ž’ÌtŸÎ@&ŽŽ’§LšŸÕR3²negb•Go“olŽŽ’ÌtŸà³¿¬@Ž’Ê¼èŸßRx@ŽŽ’áLΟØ*–„9ïfeŽŽ’ÙÁ…²v¸ãoidŽŽ’ï¹ïŸý'¬Ž’ò9ïŸó'Ž’ô¹ïŸé'Ž’÷9ïŸß'Ž’ù¹ïŸÕ'Ž’ü9ïŸË'Ž’þ¹ïŸÁ'Ž’$¤Ÿ·~¨ŽŽ’áLΟôžt„9ïfeŽŽŽŽŽŽŸ ’“‡²Figure–UU1:‘qÇExample“of“t¸ãypGe“preorderŽŽŽŸÇ‘DThe–¹prošGcess“of“con•¸ãv“erting–¹a“mathematical‘¸ob‘Ž8ject“from“one“t¸ãyp˜e“to“anotherŽ¡‘5is–µ…called“casting.‘’VThe“casting“methoGds“knoš¸ãwn“to“GP2C‘µlare‘µ„giv˜en“b˜y“the‘O‰ffŽ‘OËcastŽ¡‘5²description.ŽŸþ6‘5É1.2Ž‘SÀList–€of“t yp`esŽ©uT‘5²In–Gthis“section,‘«±wš¸ãe“list“the“t˜ypGes“kno˜wn“to“P–ÿ*ªARI/GP“.–GThe“curren˜t“list“is“a˜v‘ÿqÇailableŽ¡‘5in–UUthe“description‘îí‰ffŽ‘îïËt¸ãypGedef².ŽŸþ6‘5Æ1.2.1Ž‘X#‚Basic‘ÕTt®9ypQÇesަ‘5smallŽŽ‘T3²Small–UUinš¸ãtegers“represen˜ted“b˜y“C“Ëlong‘xâ²in˜tegers.ŽŽŸ’ß2ŽŽŒ‹ ª ýs o ý´‘5Æin®9tŽŽ‘G¼m²Multi-precision–UUinš¸ãtegers“represen˜ted“b˜y‘xâÇt‘¡E‰ff&fŽ‘Ç«INT“²GENs.ޤ‘5ÆrealŽŽ‘Lʤ²Multi-precision–UU oating“pGoinš¸ãt“real“n˜um˜bGers“represen˜ted“b˜y‘xâÇt‘¡E‰ff&fŽ‘Ç«REAL“²GENs.Ž¡‘5ÆmpŽŽ‘IøÞ²Multi-precision›UUn•¸ãum“bGers.‘qÇUnion˜of˜the˜t“ypGes˜Êint‘H-²and˜Êr–ÿ}'e“al².Ž¡‘5Æv®9ecsmallŽŽ‘d:õ²V‘ÿ*ªectors–UUof“small“inš¸ãtegers“represen˜ted“b˜y‘xâÇt‘¡E‰ff&fŽ‘Ç«VECSMALL“²GENs.Ž¡‘5Æv®9ecŽŽ‘J!²V›ÿ*ªectors–Wæand“matrices“of“P˜ARI‘W¥ob‘Ž8jects,‘Š—represen•¸ãted‘Wåb“y‘{sÇt‘¡E‰ff&fŽ–Ç«VEC²,›WæÇt‘¡E‰ff&fŽ“COL‘W¦²or˜Çt‘¡E‰ff&fŽ“MATŽ© ‘N²GENs.Ž¡‘5Æv‘ÿ\rarŽŽ‘IÁÁ²P•¸ãolynomial›uÛv‘ÿqÇariables‘uÚrepresen“ted˜b“y‘uÚtheir˜v‘ÿqÇariable˜n“um“bGer‘uÚwhic“h˜is‘uÚa˜Cަ‘NËlong‘xâ²inš¸ãteger.‘qÇThis–UUis“assoGciated“to“the“protot˜ypšGe“co˜de“'n'.Ž¡‘5ÆpQÇolŽŽ‘I§²P•¸ãolynomials›UUrepresen“ted˜b“y‘xâÇt‘¡E‰ff&fŽ‘Ç«POL˜²GENs.Ž¡‘5ÆgenstrŽŽ‘Y'm²Strings–UUrepresenš¸ãted“b˜y‘xâÇt‘¡E‰ff&fŽ‘Ç«STR“²GENs.Ž¡‘5ÆlistŽŽ‘Ieª²GP–UUlists“represenš¸ãted“b˜y‘xâÇt‘¡E‰ff&fŽ‘Ç«LIST“²GENs.Ž¡‘5ÆgenŽŽ‘KhÞ²Generic–UUP‘ÿ*ªARI“ob‘Ž8jects“represenš¸ãted“b˜y“GENs.ŽŸþ6‘5Æ1.2.2Ž‘X#‚Sp•QÇecial‘ÕTt®9yp“esŽŸuT‘5v®9oidŽŽ‘ON²This–áTt¸ãypGe›áUis“a“set“with˜only“one“elemen¸ãt“called˜Êvoid².‘ÄThis˜is“the“returnަ‘Ntš¸ãypGe–UUof“functions“not“returning“an˜ything.‘qÇGP“allo˜ws“to“cast“it“to“0.Ž¡‘5Æb•QÇo“olŽŽ‘O¸Ü²BoGolean–av‘ÿqÇalues“represenš¸ãted‘bas“C‘.Ëlong‘>î²in˜tegers,‘Läwhere“1“is“true‘band“0“isަ‘Nfalse.Ž¡‘5Ænegb•QÇo“olŽŽ‘a!º²Negated›©¨b•Go“olean˜v‘ÿqÇalues˜represen•¸ãted‘©§as˜C‘©}Ëlong‘Í5²in“tegers,‘Ëýwhere˜0˜is˜trueަ‘Nand–UU1“is“false.Ž¡‘5ÆlgŽŽ‘BñIJV‘ÿ*ªector–”…lengths‘”„represenš¸ãted“b˜y“the“Ëlg›¸²macro“output,‘»i.e.‘1‚a“C‘”TËlong˜²in¸ãteger“equalަ‘Nto–UUthe“actual“length“plus“one.Ž¡‘5ÆstrŽŽ‘G¾²C–UUstrings“represenš¸ãted“b˜y“C“Ëconst“cha˜r“*“²strings.Ž¡‘5Æt®9ypŽŽ‘Jœl²GEN‘ï²t•¸ãypGes›ïÌrepresen“ted˜b“y‘ïÍC‘ï²Ëlong‘Y²in“tegers,‘as˜returned˜b“y˜the˜Ët“yp()˜²macro.ŽŸþ6‘5Æ1.2.3Ž‘X#‚In•®9ternal‘ÕTt“ypQÇesŽŸuT‘5²The–UUfolloš¸ãwing“t˜ypGes“are“mainly“for“in˜ternal“use“inside“GP2C.Ž¡‘5Æempt®9yŽŽ‘Yw²This– Ütš¸ãypGe“is“the“empt˜y“set.‘›[No“individual“ob‘Ž8ject“can“bGe“of“this“t˜ypGeަ‘Nbut–µa›µset“of“ob‘Ž8jects“can.‘‘ In˜fact“this“is˜a“default“t¸ãypGe“for˜an“unspGeci edަ‘Nset–UUof“ob‘Ž8jects.Ž¡‘5Æsmall‘°¡‰ffs4Ž‘#Õin®9tŽŽ‘eùu²Small›Ìfin•¸ãtegers‘Ìerepresen“ted˜b“y‘ÌeC‘ÌGËint˜²in“tegers.‘ÖøThis˜is‘Ìeonly˜a“v‘ÿqÇailableަ‘Nfor–UUcompatibilit¸ãy“with“P‘ÿ*ªARI“function“returning‘xâËint“²(instead“of‘rËlong#²).Ž¡‘5ÆbptrŽŽ‘Oük²Byte–UUpGoinš¸ãter.‘qÇThis“is“used“for“the“Ëp˜rimepGointer‘xâ²global“v‘ÿqÇariable.Ž¡‘5Æfunc‘°¡‰ffs4Ž‘#ÕGGŽŽ‘e 8²function–UUwith“protš¸ãypGe“ËGEN“f(GEN,GEN)².“Used“b˜y“Êforve‘ÿ}'c².Ž¡‘5Æpari‘°¡‰ffs4Ž‘#ÕspŽŽ‘\ùy²This–UUis“the“stacš¸ãk“pGoin˜ter“t˜ypGe“Ëpa˜ri‘™˜‰ffŽ‘™šsp².ŽŽŸ’ß3ŽŽŒ‹+ï ª ýs o ý´‘5Æ1.2.4Ž‘X#‚T®9ypQÇes–ÕTfor“data“structure.ŽŸuT‘5²These–UUtš¸ãypGes“are“mainly“de ned“to“allo˜w“the“use“of“inline“mem˜bGer“functions.ŽŸÏ‘5ÆnfŽŽ‘Cç²Numš¸ãbGer–UU eld“as“returned“b˜y“Ên nit².ޤŸ‘5ÆbnfŽŽ‘JJ¥²Big›UUn•¸ãum“bGer˜ eld˜as˜returned˜b“y˜Êbn nit².Ž© ‘5ÆbnrŽŽ‘Kƒ‰²Raš¸ãy–UUclass“ eld“as“returned“b˜y“Êbnrinit².Ž¡‘5ÆellŽŽ‘E¨à²Elliptic–UUcurvš¸ãe“as“returned“b˜y“Êel‘‚Ølinit².Ž¡‘5ÆbQÇellŽŽ‘L^3²Big–UUelliptic“curvš¸ãe“as“returned“b˜y“Êel‘‚Ølinit².Ž¡‘5ÆclgpŽŽ‘NqÀ²Class–UUgroup“as“returned“bš¸ãy“the“'clgp'“mem˜bGer“function.ަ‘5ÆpridŽŽ‘NµO²Prime–UUideal“as“returned“b¸ãy“Êide–ÿ}'alprime“de“c².Ž¡‘5ÆgalŽŽ‘HˆÝ²Galois–UUgroup“as“returned“b¸ãy“Êgaloisinit².ŽŸ›‘5É1.3Ž‘SÀC-T yp`eŽ©uT‘5²A‘/0ÊC-T‘ÿ;¼yp‘ÿ}'e‘ï–²is–/:just“a“levš¸ãel“of“indirection“to˜w˜ard‘/;real“C‘/0t˜yp•Ges.‘eC-t˜yp“es–/:are“de nedޤ ‘5b¸ãy–«úthe“descriptions‘E’‰ffŽ–E”Ëdecl‘™˜‰ffŽ›™šbase‘«û²and‘E’‰ffŽ“Ëdecl‘™˜‰ffŽ˜ext².‘u¶Eac•¸ãh›«út“yp•Ge˜b“elongs‘«ûto˜a˜C-t¸ãyp“e˜asŽ¡‘5spGeci ed–UUbš¸ãy“the“description‘îí‰ffŽ‘îïËt˜ypGedef².ŽŸ ±*‘5Å2Ž‘MLËThe–ffdescription“systemŽŸç‘5É2.1Ž‘SÀIn tro`ductionަ‘5²The–ëOdescription›ëNsystem“is“a“w•¸ãa“y˜to–ëOdescribGe“the˜P‘ÿ*ªARI‘ë4application“programmingŽ¡‘5inš¸ãterface–‰-in“a‘‰,w˜a˜y“understandable“b˜y“bGoth›‰,the“GP2C‘‰ compiler˜and“h¸ãuman“bGe-Ž¡‘5ings.‘V»The›öûpresen•¸ãt‘öüdoGcumen“t˜is–öümostly˜addressed“to˜this“second˜category–ÿ*ª.‘V»W“eŽ¡‘5start–UUb¸ãy“a“simple“example:Ž¡‘DThe–UUdescription“of“the“GP“function“Êsqr‘hâ²isŽ©?>‘:?ýÇ(int):int‘îsqri($1)Ž¡‘:?ý(mp):mp‘)ÿègsqr($1)Ž¡‘:?ý(gen):gen‘îgsqr($1)ŽŸ??‘D²Eac¸ãh–nline›nis“called“a˜Êrule²,‘´-whic¸ãh“in“this˜case“consists“of˜three“parts.‘»ÏLetŽ¡‘5us–f„consider›fƒthe“ rst“one:‘”$the“parts˜Ç(int)²,‘jÏÇ:int“²and“Çsqri($1)˜²are“respGectiv¸ãelyŽ¡‘5called–UUthe“Êp›ÿ}'attern²,“Êtyp˜e²,“and“Êaction‘¸²part.Ž¡‘DWhen–×GP2C‘¨compiles›ÖÊsqr(1)²,‘Šit“computes˜the“t¸ãypGes“of˜the“argumen¸ãts˜(here“Ê1Ž¡‘5²is–ÕÂof›ÕÃt¸ãypGe“Êsmal‘‚Øl‘‰²)˜and“matc¸ãhes˜them“against˜the“patterns˜from“top˜to“bGottom.Ž¡‘5The–q\bGest"›qrule“is˜used;‘~Þin˜case“of“a˜tie,‘wòthe˜topmost“rule˜wins.‘ÄÙHere,‘wñall“threeŽ¡‘5rules–ªapply‘ÿ*ª,‘ Ìand›©the“ rst“rule˜wins.‘[äSince˜the“t¸ãypGe˜of“this“rule˜is“Êint²,‘ ÌGP2C‘™setsŽ¡‘5the–%•t¸ãypGe›%”of“the˜expression“Êsqr(1)‘„'²to“Êint².‘aÜThe˜action“part˜is“Çsqri($1)²,‘/!so“GP2CŽ¡‘5generates–6Wthe›6XC‘6OcoGde“Ësqri($1)˜²where“Ë$1“²is“replaced˜b¸ãy“the“coGde“of˜the“argumen¸ãtŽ¡‘5Ê1‘°[²cast–UUto“the“pattern“t¸ãypšGe“(Êint‘òز).‘qÇThe“result“is“the“C“co˜de“Ësqri(gen‘™˜‰ffŽ‘™š1)².Ž¡‘DNo¸ãw–UUa“more“complex“example:‘qÇthe“description“of“the“GP“function“Êexp‘öí²isަ‘:?ýÇ(real):real‘ÿômpexp($1)Ž¡‘:?ý(mp):mp:prec‘¿÷gexp($1,‘?ýprec)Ž¡‘:?ý(gen):gen:prec–?ýgexp($1,“prec)ŽŽŸ’ß²4ŽŽŒ‹8_ ª ýs o ý´‘5²When–ÄÞGP2C‘Ĺcompiles“Êexp(1)²,‘áÃit“lošGoks“for“the“"b˜est"“rules.‘AŸThe“ rst“rule“cannotޤ ‘5b•Ge›Aused,‘Eb“ecause˜there˜is˜no˜w•¸ãa“y˜to˜cast˜a˜Êsmal‘‚Øl‘J&²to˜a˜Êr–ÿ}'e“al²,‘Eso˜it˜uses˜the˜secondŽ¡‘5rule.‘#ÙThis–ætime“the“result“will‘æbšGe“of“t¸ãyp˜e“Êmp².‘#ÙThe“extra“part‘æÇ:prec“²is“calledŽ¡‘5a–xomošGde.‘ÛThe“mo˜de›xp`prec'“states“that“the˜action“part“will“use˜the“spGecial“`prec'Ž¡‘5v‘ÿqÇariable–Âthat“holds“the“currenš¸ãt“real“precision.‘·×This“is“ob˜vious“from“the“actionŽ¡‘5part–jŽcošGde,‘oÜbut“GP2C‘j‰do“not“parse“the“action“part“so‘jit“needs“this“mo˜de.‘±rNoteŽ¡‘5that–•the“last“rule›”is“also“v‘ÿqÇalid“and“has“the“same“action˜part“so“w¸ãould“generateŽ¡‘5the–3exact›4same“coGde.‘WgHo•¸ãw“ev“er,‘the˜t“ypGe–3of˜the“expression˜w¸ãould“bGe˜less“precise.Ž¡‘DThe–UUdescription“of“the“GP“function“Êmatdet‘H-²isŽ©ó%‘:?ýÇ(gen,‘?ý?0):gen‘îdet($1)Ž¡‘:?ý(gen,‘?ý1):gen‘$¿ëdet2($1)Ž¡‘:?ý(gen,–?ý#small):gen‘ ú$"incorrect“flag“in“matdet"Ž¡‘:?ý(gen,–?ýsmall):gen‘¿÷det0($1,“$2)ŽŸó&‘5²W‘ÿ*ªe–UUsee“sev¸ãeral“new“pattern“atoms:ަ‘D¸ŽŽŽ‘NÊ1‘°[²matcš¸ãhes–UUa“literal“1,“e.g.‘qÇÊmatdet(M,1)‘³è²w˜ould“matc˜h“the“second“rule.Ž©y“‘D¸ŽŽŽ‘NÊ?0‘´z²matc¸ãhes–Ytan›Ysoptional“literal“0:‘ó×Êmatdet(M)²,˜Êmatdet(M,0)‘¸²and“Êmatdet(M,)Ž¡‘N²all–UUmatc¸ãh“the“ rst“rule.ަ‘D¸ŽŽŽ‘NÊ#smal›‚Øl‘]Þ²matc¸ãhes–UUan“unspGeci ed“literal“Êsmal˜l².Ž©ó%‘5Finally‘ÿ*ª,›«ïw¸ãe–gjalso“see“a“new“action“ó!p®0J cmsl10Ì$Ê".–ˆˆ.“.“"²,˜whicš¸ãh–gjcauses“GP2C‘g#to“displa˜y“theŽ¡‘5error–UUmessage“and“abGort.ŽŸÄV‘5É2.2Ž‘SÀDe nitionsޤuT‘5²W‘ÿ*ªe–UUnoš¸ãw“giv˜e“a“formal“de nition“of“descriptions.ŽŸÄV‘5Æ2.2.1Ž‘X#‚DescriptionŽ¡‘5²A–UUdescription“is“a“line-separated“list“of“Êrules².ŽŸÄU‘5Æ2.2.2Ž‘X#‚RuleŽ¡‘5²A–UUrule“is“a“line“of“the“formŽŸó&‘N(Êp–ÿ}'attern‘Äc²)Ê:typ“e‘À[:mo“delist‘H-actionަ‘5²Only–ÈBthe›ÈApattern“part“is˜mandatory‘ÿ*ª,‘äýthough“most˜rules“also“include˜an“actionŽŸ ‘5and–UUa“t¸ãypGe.Ž©ÄV‘5Æ2.2.3Ž‘X#‚P®9atternŽ¡‘5²A–UUpattern“is“a“comma-separated“list“of“Êp‘ÿ}'attern‘“çatoms².ŽŸÄU‘5Æ2.2.4Ž‘X#‚T®9ypQÇeŽ¡‘5²The–UUtš¸ãypGe“of“a“rule“is“a“standard“GP2C“t˜ypGe.ަ‘5Æ2.2.5Ž‘X#‚MoQÇdelistŽ¡‘5²A–UUmoGdelist“is“a“colon-separated“list“of“Êmo‘ÿ}'des².ŽŽŸ’ß5ŽŽŒ‹D| ª ýs o ý´‘5Æ2.2.6Ž‘X#‚ActionŽ©uT‘5²An–,Íaction›,Ìis“a“string˜(normally“a“piece˜of“C‘,ÂcoGde)“that“can˜include“Êr–ÿ}'eplac“ementޤ ‘5strings².‘Replacemenš¸ãt–‹“strings“start“b˜y“a‘‹’$“and“are“substituted“according“to“theŽ¡‘5replacemen¸ãt‘UUrules.ŽŸËŠ‘5É2.3Ž‘SÀP attern‘€atomަ‘5²A‘ Úpattern› atom– is“one˜of“the˜folloš¸ãwing,‘75where“Êtyp‘ÿ}'e‘Êc²is“an˜y‘ GP2C‘ Út˜ypGe,‘75Ên‘Îl²an˜yŽ¡‘5small›ûin•¸ãteger,‘ !Ê"str"‘­H²an“y˜c“haracter˜string˜and‘ûÊctyp‘ÿ}'e‘»o²an“y˜C-t“ypGe.‘S±A‘úýpattern˜atomŽ¡‘5can–UUmatc¸ãh“an“ob‘Ž8ject.ŽŸÙÑD¸ŽŽŽ‘NÊtyp‘ÿ}'e².‘qÇThis–UUmatcš¸ãhes“an˜y“ob‘Ž8ject“of“t˜ypGe“comparable“to“Êtyp‘ÿ}'e².ޤŠN‘D¸ŽŽŽ‘NÊn².‘qÇThis–UUmatcš¸ãhes“a“constan˜t“small“in˜teger“v‘ÿqÇalue“equal“to“Ên².Ž¡‘D¸ŽŽŽ‘NÊ?n².‘qÇThis–UUmatcš¸ãhes“an“optional“Êsmal‘‚Øl‘]Þ²v‘ÿqÇalue“whic˜h“defaults“to“Ên².Ž¡‘D¸ŽŽŽ‘NÊ?typ›ÿ}'e².‘qÇThis–UUmatc¸ãhes“an“optional“Êtyp˜e‘°²v›ÿqÇalue“with“standard“default“v˜alue.Ž¡‘D¸ŽŽŽ‘NÊ"str"².‘qÇThis–UUmatcš¸ãhes“a“constan˜t“c˜haracter“string“equal“to“Êstr².Ž¡‘D¸ŽŽŽ‘NÊ&typ‘ÿ}'e².‘ÃThis–ÅÇmatc¸ãhes›ÅÆa“reference˜(the“GP‘Å©Ê&x‘ú ²construction)˜to“an˜ob‘Ž8jectŽ© ‘Nof–UUtš¸ãypGe“equal“or“less“than“Êtyp‘ÿ}'e‘°²referencing“the“same“data“t˜ypGe.Ž¡‘D¸ŽŽŽ‘NÊnothing².‘qÇThis–UUmatcš¸ãhes“a“missing“argumen˜t.Ž¡‘D¸ŽŽŽ‘NÊ#typ‘ÿ}'e².‘qÇThis–UUmatcš¸ãhes“a“constan˜t“v‘ÿqÇalue“of“t˜ypGe“Êtyp‘ÿ}'e².ŽŸŠM‘D¸ŽŽŽ‘NÊ...‘f¸²This–¦ûmatcš¸ãhes“an˜y“n˜um˜bGer‘¦úof“argumen˜ts“matc˜hing“the‘¦úprevious“atom.ަ‘NThis–¤ m¸ãust›¤bGe“the“last˜atom“of˜the“pattern.‘]ðThis“allo¸ãws˜to“implemen¸ãtަ‘Nfunctions–UUtaking“an“unlimited“n•¸ãum“bGer–UUof“argumen¸ãts.Ž¡‘D¸ŽŽŽ‘NÊC!ctyp‘ÿ}'e².‘qÇThis–UUmatcš¸ãhes“an˜y“ob‘Ž8ject“of“C-t˜ypGe“Êctyp‘ÿ}'e².Ž¡‘D¸ŽŽŽ‘NÊ@typ‘ÿ}'e².‘h,This–§wmatc¸ãhes›§va“v‘ÿqÇariable˜of“t¸ãypGe“Êtyp‘ÿ}'e².‘h,This˜is“mainly˜used“forަ‘Nexpressions–UUthat“ev‘ÿqÇaluate“their“argumenš¸ãts“sev˜eral“times.Ž¡‘D¸ŽŽŽ‘NÊ*typ‘ÿ}'e².‘éThis–}>matcš¸ãhes‘}=an“lv‘ÿqÇalue“of“t˜ypGe›}=Êtyp‘ÿ}'e².‘éThis“is“used˜in“constructionsަ‘Nthat–UUmoGdify“their“argumen¸ãts.ŽŸËŠ‘5É2.4Ž‘SÀMatc hingŽŸuT‘5²The–UUbGest“rule“is“determined“as“follo¸ãws:ŽŸœ‘A8ä1.ŽŽŽ‘NThe–I1result›I2of“matc¸ãhing“a˜pattern“atom“against˜some“GP‘HòcoGde˜is“eitherަ‘N'reject'–UUor“'matc¸ãh'.Ž¡‘A8ä2.ŽŽŽ‘NThere–UUare“three“matcš¸ãhing“lev˜els:‘qÇ'partial',“'normal'“and“'pGerfect'.Ž¡‘A8ä3.ŽŽŽ‘NA–UUpattern“matcš¸ãhes“if“all“the“atoms“matc˜h.Ž¡‘A8ä4.ŽŽŽ‘NA–UUrule“matcš¸ãhes“if“its“pattern“matc˜hes.Ž¡‘A8ä5.ŽŽŽ‘NThe–:„bGest›:…rule“is˜the“matc¸ãhing“rule˜with“the“higher˜n•¸ãum“bGer–:„of˜normal“andަ‘NpGerfect–³¤matc¸ãhes.‘Œ²In“case›³£of“a˜tie,‘Ë7the“highest˜n•¸ãum“b•Ger‘³¤of˜p“erfect‘³¤matc¸ãhesަ‘Nwins.‘qÇIf–UUthere“is“still“a“tie,“the“topmost“rule“wins.ŽŽŸ’ß6ŽŽŒ‹N6 ª ýs o ý´‘D²When–¬fmatc¸ãhing›¬gthe“pattern˜atoms“Êtyp›ÿ}'e‘l²and“Ê?typ˜e²,‘+the“matc•¸ãhing‘¬glev“el‘¬fisŽŸ ‘5determined–UUas“follo¸ãws:Ž©¸Ä‘D¸ŽŽŽ‘N²a–UUpšGerfect“matc¸ãh“o˜ccurs“when“the“t¸ãyp˜e“of“the“ob‘Ž8ject“is“exactly“Êtyp‘ÿ}'e²,ޤÜb‘D¸ŽŽŽ‘N²a–UUnormal“matcš¸ãh“when“the“t˜ypGe“is“less“than“Êtyp‘ÿ}'e²,Ž¡‘D¸ŽŽŽ‘N²a–UUpartial“matcš¸ãh“when“the“t˜ypGe“is“bigger“than“Êtyp‘ÿ}'e².ŽŸÜa‘D¸ŽŽŽ‘N²Rejection–UUhappšGens“when“the“t¸ãyp˜es“are“uncomparable.ަ‘5Other–UUpattern“atoms“alw•¸ãa“ys–UUresult“in“a“reject“or“a“pGerfect“matc¸ãh.ŽŸ€¨‘5É2.5Ž‘SÀMo`deŽŸuT‘5²MoGdes–*÷are›*øused“in˜descriptions“to˜giv¸ãe“more“information˜to“GP2C‘*ÁabGout“theޤ ‘5action–Çpart.‘ÇThey“are“usually“useless›Çto“h¸ãuman“bGeings“that˜are“smart“enoughŽ¡‘5to–UUunderstand“the“action“part.‘qÇThe“curren¸ãt“list“of“moGdes“is:ަ‘5ÆprecŽŽ‘OÁ²The–UUaction“uses“the“Ëp¸ãrec“²v‘ÿqÇariable.Ž©Üb‘5ÆparensŽŽ‘Zé2²The–ö‹action“došGes“not“ha•¸ãv“e–ö‹top“precedence.‘UiGP2C‘öbwill“put“it“b˜et•¸ãw“eenŽ¡‘Nparen¸ãtheses–UUwhen“needed“(see“$())ަ‘5Æcop®9yŽŽ‘Pÿø²The–‡action›‡returns“data“that˜access“memory“bGelonging“to˜other“ob‘Ž8jects.Ž¡‘NGP2C–UUwill“generate“calls“to“Ëgcop¸ãy()“²when“needed.ŽŸ€¨‘5É2.6Ž‘SÀLists–€of“replacemen t“stringsŽŸuT‘5²The–UUfollo¸ãwing“spšGecial“sequences“can“o˜ccur“in“the“action“part:ŽŸ¸Ä‘D¸ŽŽŽ‘NË$n².‘qÇThis–UUis“replaced“bš¸ãy“the“µn²-th“argumen˜t“of“the“function.ަ‘D¸ŽŽŽ‘NË$(n)².‘ d{This–û‘is“replaced“bš¸ãy“the“µn²-th“argumen˜t“of“the“function“bGet˜w˜eenŽ¡‘Nparen¸ãthesis–UUif“it“has“the“parens“moGde.ަ‘D¸ŽŽŽ‘NË$tš¸ãypGe:n².‘9£This‘¬êis–¬éreplaced“b˜y“the‘¬êµn²-th“argumen˜t“of“the“function‘¬êcast“to“t˜ypGeŽ¡‘NÊtyp‘ÿ}'e².ަ‘D¸ŽŽŽ‘NË$(t•¸ãypšGe:n)².‘qÇCom“bination–UUof“$(n)“and“$t¸ãyp˜e:n.ŽŸÜa‘D¸ŽŽŽ‘NË$%n².‘%EThis–‘*is“replaced›‘)b¸ãy“the“µn²-th˜argumen¸ãt“of“the˜function,‘ whicš¸ãh“m˜ustŽ¡‘NbGe–¨©a›¨¨constan¸ãt“string,‘½~with˜all“%“c¸ãharacters“doubled˜and“no“quotes.‘kÂThisŽ¡‘Nis–UUfor“use“inside“format“spGeci cation.ަ‘D¸ŽŽŽ‘NË$pš¸ãrec²:‘qÇshort–UUcut“for“Ë$p˜rec².ަ‘D¸ŽŽŽ‘NË$bitpš¸ãrec²:‘qÇshort–UUcut“for“Ë$bitp˜rec².ަ‘D¸ŽŽŽ‘NË$"message"².›÷ˆSignals–,•an‘,–in¸ãv‘ÿqÇalid“condition.˜GP2C‘,^will“abGort‘,–bš¸ãy“prin˜tingŽ¡‘Nthe–UUerror“message“Ëmessage².ަ‘D¸ŽŽŽ‘NË$¸fËRPN–¢Msequence¸g›¢£²The‘¢¢RPN“sequence˜is˜a˜space˜separated‘¢¢list˜of˜RPNŽ¡‘Ncommands–Ûcthat“will“bGe“ev‘ÿqÇaluated‘Ûdbš¸ãy“the“GP2C‘Û@in˜ternal“RPN‘ÛAev‘ÿqÇaluator.Ž¡‘NIf–vnthe“stacš¸ãk“is“empt˜y‘voat“the“end“of“the“ev‘ÿqÇaluation,‘~µthis“is“replaced“b˜y“theŽ¡‘Nemptš¸ãy–²¤string,‘Éøelse“this“is“replaced“b˜y“the“in˜teger“at“the“top“of“the“stac˜k.Ž¡‘NSome–ˆiRPN‘ˆ[commands›ˆhgenerate“text,‘•-in“that˜case“it˜is“pasted˜just“bGeforeŽ¡‘Nthe–UU$“sign.ŽŽŸ’ß7ŽŽŒ‹ZC ª ýs o ý´‘5É2.7Ž‘SÀLists–€of“RPN“commandsŽŸuT‘5²The–N±commands›N°are“ev‘ÿqÇaluated˜with“respGect˜to“a“stac¸ãk˜of“in¸ãteger˜v‘ÿqÇalues,‘Pinitiallyޤ ‘5empt¸ãy‘ÿ*ª.‘fUThe–¦Úexact“list›¦Ùof“command“suppGorted˜bš¸ãy“a“particular“GP2C‘¦Äv˜ersion“isŽ¡‘5the–UUË%accepted‘™˜‰ffŽ‘™šcommand“²hash“in“the“script“Çscripts/822‘¡E‰ff&fŽ‘Ç«desc.pl.in².ŽŸ‘5ó"F C– cmbxti10Íliter–ÿi>al‘$øinte“gerŽŽ‘~Ž ²push–UUthe“inš¸ãteger“at“the“top“of“the“stac˜k.ޤ‘5Æ:Ítyp‘ÿi>eŽŽ‘R'òpush–UUthe“tš¸ãypGe“Êtyp‘ÿ}'e‘°²at“the“top“of“the“stac˜k.Ž¡‘5Æadd,–ÕTsub,“m®9ul,“div,“moQÇdŽŽ’²U„²2-ary–UUarithmetic“opGeratorsŽ¡‘5ÆnegŽŽ‘KhÞ²1-ary–UUarithmetic“opGeratorŽ¡‘5Æand,–ÕTor,“xorŽŽ‘uw²2-ary–UUlogical“opGeratorsŽ¡‘5ÆnotŽŽ‘Jœl²1-ary–UUlogical“opGeratorŽ¡‘5Æt®9ypQÇeŽŽ‘P3‡²pGop–UUan“inš¸ãteger“µn“²and“push“the“t˜ypGe“of“the“µn²-th“argumen˜t.Ž¡‘5Æv‘ÿ\ralueŽŽ‘Sßö²pGop–ˆan“in¸ãteger›‰µn“²and“push“the“v‘ÿqÇalue“of˜the“µn²-th“argumen•¸ãt,‘pro“vided–ˆit“isŽ© ‘Na–UUconstanš¸ãt“in˜teger.Ž¡‘5ÆcoQÇdeŽŽ‘PײpšGop–UUan“in¸ãteger“µn“²and“generate“the“C“co˜de“for“the“µn²-th“argumen¸ãt.Ž¡‘5ÆcastŽŽ‘Mµ§²pGop–Iåan›Iæin¸ãteger“µn˜²and“a˜t¸ãypGe“µt˜²and“generate˜the“C‘IãcoGde˜for“the˜µn²-th“argu-ަ‘Nmenš¸ãt–UUcast“to“t˜ypGe“µt².Ž¡‘5ÆparensŽŽ‘Zé2²this–m is›mŸa“ ag˜requesting“ÆcoQÇde˜²and“Æcast˜²to“enclose“the˜C‘m™cošGde“b˜et•¸ãw“eenަ‘Nparenš¸ãthesis–UUif“the“argumen˜t“has“the“Êp–ÿ}'ar“ens‘'v²moGde.Ž¡‘5Æstr‘°¡‰ffs4Ž–#Õformat,‘ÕTstr‘°¡‰ffs4Ž“ra®9wŽŽ’˜Á$²pGop–¶ºan“inš¸ãteger“µn“²suc˜h“that‘¶»the“µn²-th“argumen˜t“is“a“con-ަ‘Nstanš¸ãt–âdstring“and“displa˜y“the“string“without“leading“and“ending“".‘KwF‘ÿ*ªurther-ަ‘Nmore–:Æstr‘°¡‰ffs4Ž‘#Õformat“²will‘:displaš¸ãy“the“string“in“a“w˜a˜y‘:suitable“for“inclusion“inަ‘Na–UUformat“string“bš¸ãy“quoting“meta-c˜haracters.Ž¡‘5ÆprecŽŽ‘OÁ²displa¸ãy–UUthe“loGcal“precision“(in“prec“format).Ž¡‘5ÆbitprecŽŽ‘]õ²displa¸ãy–UUthe“loGcal“precision“in“bit.ŽŸ‘DThe›Ákfollo¸ãwing–ÁlRPN‘ÁOcommands“are˜useful˜with“the˜Ê...‘¶ ²pattern˜atom“to˜im-ަ‘5plemenš¸ãt–UUfunctions“that“tak˜e“an“unlimited“n˜um˜bGer“of“argumen˜ts.Ž¡‘5Æn®9bargŽŽ‘VˆÙ²push–UUthe“actual“n•¸ãum“bGer–UUof“argumen¸ãts“of“the“function.Ž¡‘5Æformat‘°¡‰ffs4Ž–#Õstring,‘ÕTformat‘°¡‰ffs4Ž“argsŽŽ’¾Iù²pGop–+ían“inš¸ãteger‘+ìµn“²suc˜h“that“the‘+ìµn²-th“argumen˜tަ‘NcorrespGonds–RRto›RSa“Ê...‘pDzpattern“atom˜and“generate˜a“format˜string“and˜a“listަ‘Nof–UUargumen¸ãts,“see“the“description“of“the“GP“function“Êprint².Ž¡‘5ÆcoQÇde,‘ÕTcastŽŽ‘k“Ö²If– Õthe“in¸ãteger‘ Öµn“²correspGonds“to“a“Ê...‘ ˜H²pattern“atom,‘zµgenerate“aަ‘Ncomma-separated–"list“of“C‘òcoGde“for“the“argumen¸ãts“µn›¶½¸‘¶¾²1,–AUµn²,“µn˜²+‘¶¾1,“.–ªª.“.“,ަ‘NÆn®9barg²,–UUbš¸ãy“matc˜hing“eac˜h“argumen˜t“against“the“µn–8ณ²1–UUpattern“atom.Ž¡‘5ÆstdrefŽŽ‘Vêü²this–his“a“ ag“requesting“ÆcošQÇde“²and‘iÆt®9yp˜e“²to“prepšGend“a“'&'“b˜efore“eac¸ãhަ‘Nargumen¸ãts.ŽŽŸ’ß8ŽŽŒ‹ f= ª ýs o ý´‘5²The›=ffollo¸ãwing–=gRPN‘=`commands“are˜useful“to˜implemen¸ãt“functions˜that“tak¸ãe˜clo-ޤ ‘5sures–UUas“argumen¸ãts.ŽŸ‘5Æwrapp•QÇer,‘ÕTco“okieŽŽ’Š:²pGop–»çan›»èin¸ãteger“µn“²and˜generate“a˜call“to“the˜wrappGer“(resp.Ž¡‘Nthe–—ScošGokie“asso˜ciated“to‘—Rthe“wrapp˜er)“for“the“µn²-th“argumen¸ãt.‘2qThe“wrapp˜erŽ¡‘Ngenerated–ÞÍdepšGends“on“the“wrapp˜er“protot¸ãyp˜e‘ÞÎin“the“W‘ÿ*ªrapp˜er“ eld.‘/TheŽ¡‘NcošGokie–UUis“the“list“of“lo˜cal“v‘ÿqÇariables“seen“b¸ãy“the“closure.ŽŽŸ’ß9ŽŽŒørÞƒ’À;誎 ó"F C– cmbxti10ó!p®0J cmsl10ó m#½R cmss10óý': cmti10óÂÖN  cmbx12ó߆µTff cmtt12óßê cmmi10óKñ`y cmr10óÙ“ Rcmr7óäO£ line10ùu?ßßßßßßßgp2c-0.0.12/doc/gp2c.10000644000175000017500000000412513623476440011043 00000000000000.TH GP2C "1" "January 2005" "GP to C compiler" PARI .SH NAME GP2C \- The GP to C compiler .SH DESCRIPTION gp2c [-ghfltvydWSTGV] [-i N] [-o ] [-p ] [file.gp] gp2c is a program that translate GP code to C code that use the libpari library. It tries to generate code looking like the PARI source code. .SS "user option:" .HP \fB\-o\fR : Place output in file . .HP \fB\-g\fR : Generate automatic garbage collection code. .HP \fB\-iN\fR: Set indentation level to N spaces (default 2). .HP \fB\-W\fR : Output warning about types and global variables usage. .HP \fB\-C\fR : Generate range checking code. .HP \fB\-L\fR : Generate #line directive for better C compiler messages. .HP \fB\-p\fR : Prefix user-defined symbol by to avoid conflict. .HP \fB\-s\fR : Add suffix to GP install names of functions. .HP \fB\-S\fR: Assume strict declarations for functions. .SS "query options:" .HP \fB\-h\fR : This help. .HP \fB\-f\fR : Dump information about functions to stderr. .HP \fB\-l\fR : Output the list of functions known to the compiler. .HP \fB\-t\fR : Output the table of types known to the compiler. .HP \fB\-v\fR : Output version information and exit. .SS "debugging options:" .HP \fB\-d\fR : Increase debugging level. .HP \fB\-y\fR : Switch parser to debug mode. .HP \fB\-T\fR : Output syntactic tree in treetool format. .HP \fB\-TT\fR : Output syntactic tree in VCG/GRL format. .HP \fB\-G\fR : Generate GP code in place of C code. Don't smile. .HP \fB\-V\fR : Do not clean up variables. .PP file.gp: file to be processed, default to stdin. The generated C code is output to stdout unless option \fB\-o\fR is used. See the script \fIgp2c-run\fR for an automated compilation process. .SH "COPYING" Copyright 2000-2018 The PARI Group .PP GP2C is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for GP2C. .SH "AUTHOR" Bill Allombert .SH "SEE ALSO" .IR gp2c-run(1), .IR gp2c-dbg(1), .IR gp(1), .IR gcc(1) gp2c-0.0.12/doc/gp2c001.png0000644000175000017500000001244013307765252011710 00000000000000‰PNG  IHDRŒÑÃÞ¢ $iCCPiccxÚ••gP“YÇïó<é…@B‡PC‘*%€”Z(Ò«¨@èPElˆ¸+Šˆ4EQ@ÁU)²VD±°((bA7È" ¬W”ôÑyßÙûŸ¹÷üæ?gî=÷œ‚8X¼´'&¥ ¼ì˜AÁLðƒÂøi)OO7ðz?  åxoø÷"DD¦ñ—âÂÒÊå§Ò€²—X3+=e™/1=<þ+Ÿ]fÁRK|c™£¿ñèלo,úšãëÍ]z )úÿÿ{ï²T8‚ôبÈl¦OrTzV˜ ’™¶Ü —Ëô$GÅ&DþPð¿Jþ¥Gf§/GnrÊAltL:óÿ5204ßgñÖëk!FÿÿÎgYß½äzس {¾{á•tî@úñwOm©¯”|:îð3™ß<Ôò†@t *кÀ˜K` € ð¾ ¬|d\° €"°ìU 4€&Ð NƒNp\×Ámp ƒ'@&À+ ïÁ<AXˆ Ñ H R‡t #ˆ YCä A¡P4”e@¹Ðv¨*…ª :¨ ú:]nBƒÐ#h š†þ†>ÁL‚é°¬ëÃl˜»Â¾ðZ8N…sà|x7\×Ã'àø |†…ð+xa ʈ.ÂF¸ˆŒD!d3Rˆ”#õH+Òô!÷!2ƒ|DaP4¥‹²D9£üP|T*j3ªU…:Žê@õ¢î¡ÆP"Ô4-ÖA[ yè@t4: ]€.G7¢ÛÑ×ÐÃè ô{ ÃÀ°0fgL&³SŒ9ˆiÃ\Æ bÆ1³X,V«ƒµÂz`ðéØl%ööv;ý€#â”pF8G\0. —‡+Ç5ã.â†p“¸y¼8^o÷ÀGà7àKð ønüü~ž A`¬¾„8Â6B¡•p0JxK$UˆæD/b,q+±‚xŠxƒ8FüH¢’´I\R)ƒ´›tŒt™ôˆô–L&kmÉÁätònrù*ùùƒMLOŒ'!¶E¬Z¬ClHì5OQ§p(ë(9”rÊÊÊŒ8^\Cœ+&¾Y¼Züœøˆø¬MÂPÂC"Q¢X¢Yâ¦ÄKÕ :P#¨ùÔ#Ô«ÔqBS¥qi|ÚvZím‚Ž¡³è@IR%%ý%³%«%/H CƒÁc$0J§Ÿ¤¤8R‘R»¤Z¥†¤æ¤å¤m¥#¥ ¥Û¤‡¥?É0edâeöÊtÊ<•EÉjËzÉfÉ’½&;#G—³”ãËÊ–{,ËkË{Ëo”?"ß/?« ¨à¤¢P©pUaF‘¡h«§X¦xQqZ‰¦d­«T¦tIé%S’Éa&0+˜½L‘²¼²³r†rò€ò¼ KÅO%O¥Må©*A•­¥Z¦Ú£*RSRsWËUkQ{¬ŽWg«Ç¨PïSŸÓ`ihìÔèÔ˜bI³x¬V kT“¬i£™ªY¯y_ £ÅÖŠ×:¨uWÖ6юѮ־£ë˜êÄêÔ\^a¾"iEýŠ]’.G7S·EwL¡ç¦—§×©÷Z_M?X¯~Ÿþƒƒƒ'†TCÃ<Ãnÿ´øFÕF÷W’W:®Ü²²kåcãHãCÆMh&î&;MzL>›š™ L[M§ÍÔÌBÍjÌFØt¶'»˜}Ãmng¾Åü¼ùG S‹t‹ÓYêZÆ[6[N­b­Š\Õ°jÜJÅ*̪ÎJhÍ´µ>l-´Q¶ ³©·yn«jaÛh;ÉÑâÄqNp^ÛØ ìÚíæ¸ÜMÜËöˆ½“}¡ý€ÕÁÏ¡ÊᙣŠc´c‹£ÈÉÄi£Óeg´³«ó^çžÏkâ‰\Ì\6¹ôº’\}\«\Ÿ»i» ܺÝaw÷}ÕW'­îô<}O=Yž©ž¿za¼<½ª½^xzçz÷ùÐ|Öû4û¼÷µó-ñ}â§é—á×ãOññoòŸ °( ên ¼$ÔŒ ön ž]ã°fÿš‰“‚kYk³×Þ\'».aÝ…õ”õaëÏ„¢CB›CÂ<ÂêÃfÃyá5á">—€ÿ*Â6¢,b:Ò*²4r2Ê*ª4j*Ú*z_ôtŒMLyÌL,7¶*öMœs\mÜ\¼Gü±øÅ„€„¶D\bhâ¹$jR|Ro²brvò`ŠNJAŠ0Õ"uªHà*hLƒÒÖ¦u¥Ó—>Åþ ÍŒc™Ö™Õ™²ü³ÎdKd'e÷oÐÞ°kÃdŽcÎѨü=¹Ê¹ÛrÇ6q6Õm†6‡oîÙ¢º%ËÄV§­Ç·¶Åoû-Ï ¯4ïÝö€íÝù ù[óÇw8íh)+Œì´ÜYûê§ØŸv­ÜU¹ëKaDá­"ƒ¢ò¢…b~ñ­Ÿ ®øyqwÔîÓ’C{0{’ö<Øk³÷x©DiNéø>÷}e̲²wû×ï¿Yn\^{€p 〰­¢«R­rOåBULÕpµ]u[|Í®š¹ƒ‡Ùj­U¨-ªýt8öðÃ:§ºŽzúò#˜#™G^4ø7ôemj”m,jü|,é˜ð¸÷ñÞ&³¦¦fùæ’¸%£eúDȉ»'íOvµê¶Öµ1ÚŠNS§^þú˃Ӯ§{ΰϴžU?[ÓNk/ì€:6tˆ:c:…]A]ƒç\Îõt[v·ÿª÷ë±óÊç«/H^(¹H¸˜qñRÎ¥ÙË)—g®D_ïYßóäjàÕû½^½×\¯Ý¸îxýj§ïÒ «çoZÜïþíáÕÃü< >Œx8õ(áћǙçŸlE>ZþLþYýïZ¿· M…ÆìÇúŸû<2ÎõGÚ ù/È/Ê'•&›¦Œ¦ÎO;Nß}¹æåÄ«”Wó3JüYóZóõÙ¿lÿêŠ&ÞÞ,þ]üVæí±wÆïzf=gŸ½O|??WøAæÃñì}Ÿ>MÎg-`*>k}îþâúet1qqñ?.¢¼r)Ô• cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿ‡Ì¿ pHYsaa¨?§itIMEâ -.¥nJ, ßIDATxÚí];’ã8 Õx—N°U¼ãÎu®l)ÙÆŒœ»jÓML؉ãÎ|…¹B¯ÅLÙÔ_H"º<ã¯üü€ BUå)ME¦^þ5÷ù¶J$Tü‹Œgê ªÐ@ÇÁ±¢µ4®CD+Øø\ö¶¥ºÝ‘/àÎ>›¶·6I‰‡?ΙӂɗPu@A ,u‘rÊÉñ Thl§B4íZqÜ0} ª•¯‰û¼ºú}Ëï0£Šn-Q‡Þ#X µ¬ˆ’»0~: [5wõøYÚ-Ò‰DüEqÿ­Ýši Æ?¤Ÿ½’™ ç5,uCÝ Æfˆ0BNÞ£_M/HqçÆ¼Øù?Œ éi¨Üç=‡cî~sjÅ]1œŸqW×Á^&4NA ¡bAAÅÏ9?”íuæ*š6 e!ÃBàù6î…8ˆóXªáÌÇ‘ÔÝg€Š0ó¼vT¬cr¶É~d' nÌ ã}9Ìb9…ø I¦†âî°iO6†:çhssLb¹ç`”]ž·ñ­é#B²¸Âª"Q(a—Ý]z"ÎàÅî6¤†2PËÄ=í½5ÏE¶ ï©O¸£éñ´ Lçqyó<Íéxõ`«3âq5Âö•—Q¯ÈSð°tôãÕ$k^µKÌ…mÄiÒ`ºdÝMx™¯°ÂÛã“×ÇG ÀÅMÅjµÁÌ­àê‰Oru£êžÌ° üðmû¶<÷H@(‚­´Ò½ ò2ú³ÍæáCkÞ_…Ûj-‡£Ê×V#KÊæ{ÛêXE"KˆÖž.Üd4I ?»ÄŸËaÆ;sQ–(Ɉ,‚ÌË”‰ÆË¹· Úçè ˜àvtRÙçV,pr1ltKAÝ¢Q#Jˆ¸%˜[Ÿ`ø—“gR¿]¯zögQ€#ž¦LFg¡|ÜPÄëÈ|)/Rñ¤%t¦æ,žëvM4â2@ òŒ Ù?+`ò™ßŽÆQÑm|íOŸb AqjXã_ jQPÐjßD‰wÁóRìèÕrH^îÂé==/5À Cž †â}ï Qs+Ve­|¦ƒ…ÌeØWãPMëh;'µâ!óV¡ßPÂ…ßÕ_0†ÆÖ˜ö²¼@Ìò>–Ó€ëÁ yÀHV(í›ÕdÒd‰b.ùùÐP   ­LÑŠTî›cvFÑK¡:Ý(ÁèeT¹ôÙX#b™‹ S%ø-%çJL,¢ò‰Ï’ªêZq0D¹`d´\‡½W•uóÈ Á šœ¢áE¿™†ñE× ös k…nåmšÀ5¼Ü Š3ç^PÃY ædQÙ<`Æ–È>Óƒ™Z­ûL fnáð3´` ó# ˜¥(ŽfM,œ¤ØrÙËΊˆÝ4Œ,Ï–~²äï=J–Ñ.RÚÓu[éRoY†H×Y!åy´"†&]ÀU¡ýÙe·üÍÅçÁEu5S9ã=PpOs¤eu1††AÓBHg0$0 ˜ Ig$0;l¾D@ ‘É—Ç¦Š“£i y‹aê\`hê]ú(.i›‰Èލ;¼nSA}¿3DÕ‹ßÅ­s…«ªçiÔ÷Ûã³-(ÉXY2ü›Š•%`pªÄãøû³svÀÃ(/6þ§o>vi¶` ›æ ;€ÌÜ 0Ïý×j¸ÎäσÑÕßmÿì|ExpÑž³k‰º`«ôæ‡F½¾Ð˜i%[_^`‚Ö_`"U£„›Y6Ç/ƒ³tsH›ÎR0QÃðg éÙp¯5œ Û”.P0e†9¤Þ¶Æ«©mkÉæJh黾œCÊ:p8³ë)0H`0$0€¸…†Aƒ!¤3 .©Uv=2k-õKÈ €áy4F÷“±ow﬊O3ˆ,PxMðtAøPÌfvºAÒ-—ž ‹o)ELE@:÷V3ÕjÕ¤%NÝÚÊíñÿY,bpç RÕ_\ehe§èF‘DÕkäˆcfHïcÉQ‰Aêg7ýgc×CF”'Aˆ9Ü5*kwÐ+$vÝ»Ÿ;¥Î°-ÌÙâòßãïôfHlb¤áûö!íÈ.ÖiRvKLçTÿÝ_|™èµ¾SbЛSu#e7ÄŒ›Œ)›&FšËå¦úB‰ÑëZã½géÜÕÑÚ…ßÊÔh¤3võ0Æò#*­h?€R«Æ°>Ád¾¶öBë¯)L>HlJ,Ù‰é® ÕíâÅJ'Z±…V^“[²¯·>nÔFÜß_v…)}Üæ¡gWñmwÑ&ÿKq¯ÅÕoXÒç¶i†«3<)ÀÉáYILN\bNÕ÷â •|Â*øç HHC 0r8(R‘–ßÌ ‡ÌA’€–” EЉ"÷«O‘êL”ª¨V@‡…lf—M”ш1³¸Tik|%YLÁ3KAÖÌì²eÑY\ô’y]þ•ÔZ£Kûm²¾:g"qGé 2‹[‹&ëD´foT^vI]¥|çßF—©Öä²ÊÛULÏì² å!‹¥w'qó:¬c“vË•ä¼èKjbÚmï<àE_ÒÓn}§ /ú’’˜Ëö·òbFéˆ)„Þ¯¾·[ô%„uÝ2{ýˆÃé‹kz Áê¯3'XlÈÀ¢ÀðÙ|‹CÞSAÄ5‘11$½MWÄ…iP5V Ú‰¬Ã¤^ÄlÀºÚÔkƒ¼w%¦UšC•Wq#¼¾¼t ¡5óec¾a<Û)e v$%Ü”€íKSƒ«_çÓ>æÃ¡kËš(Ó|oRùøD_¢vä[34ê÷ú_hçÑ—÷6WÏXïͱ¸x'í7Þ4â:åQ¸•`žK_†•ÙkØkz«ÖüÆ­|Ä0?áj¾:le{g­6÷iÈÝRþð$b‚úm*ïͱÐK9žx¤Ÿ£û!FK¨æX>õØ An introduction to gp2c

An introduction to gp2c

By Bill Allombert and Ariel Pacetti

Contents

1  What is gp2c?

The gp2c compiler is a package for translating GP routines into the C programming language, so that they can be compiled and used with the PARI system or the GP calculator.

The main advantage of doing this is to speed up computations and to include your own routines within the preexisting GP ones. It may also find bugs in GP scripts.

This package (including the latest versions) can be obtained at the URL:
http://pari.math.u-bordeaux.fr/download.html#gp2c

1.1  Installing gp2c

After downloading the file gp2c-x.y.zplt.tar.gz (where x,y,z and t depend on the version), you first have to unzip the file with the command:

gunzip gp2c-x.y.zplt.tar.gz

This will create the new file gp2c-x.y.zplt.tar. Next you have to extract the files with the tar program:

tar -xvf gp2c-x.y.zplt.tar

Note: You can do both steps at once with GNU tar by using the command:

tar -zxvf gp2c-x.y.zplt.tar.gz

This creates a directory gp2c-x.y.zplt, which contains the main gp2c files. Now you have to install the program.

You need the file pari.cfg. This file can be found in the PARI object directory and is installed in $prefix/lib/pari/.

Copy or link this file in the gp2c directory, be sure to call it pari.cfg.

ln -s .../lib/pari/pari.cfg pari.cfg

Run ./configure, which will search for the PARI version and some other configuration tools of the system. To install the program, type make, and the program will be compiled. You can then run make check to verify that everything has gone fine (a bunch of OK’s should show up). All of this is completely standard, and you are now ready to use gp2c.

You can use gp2c directly from this directory or you can install it by running make install as root. If you do not install it, you can run it from the gp2c directory by typing ./gp2c

2  A gp2c tutorial

2.1  How can I compile and run my scripts?

The simplest way to use gp2c is to call gp2c-run. If you want to know what happens in detail, see next section.

To make the examples easier to follow, please move to the gp2c directory and link the root of your PARI source there:

ln -s .../pari .

As an example, we will take the file pari/examples/squfof.gp, which is a simple implementation of the well-known SQUFOF factoring method of D. Shanks.

We just run the command:

./gp2c-run pari/examples/squfof.gp

After a little processing we get a GP session. But this session is special, because it contains the compiled squfof function. Hence we can do the following:

parisize = 4000000, primelimit = 500000
? squfof(3097180303181)
[419]
i = 596
Qfb(133225, 1719841, -261451, 0.E-28)
%1 = 1691693

Let’s try a bigger example:

? squfof(122294051504814979)
[20137]
  ***   the PARI stack overflows !
  current stack size: 4.0 Mbytes
  [hint] you can increase GP stack with allocatemem()
? allocatemem()
  ***   Warning: doubling stack size; new stack = 8.0 MBytes.
? squfof(122294051504814979)
[20137]
[20137, 3445]
i = 46474
Qfb(321233929, 131349818, -367273962, 0.E-28)
%2 = 73823023

We need a large stack because by default gp2c does not generate code to handle the stack (the so-called gerepile code). To instruct gp2c to add gerepile code automatically, we must use the -g option. So quit this GP session and launch a new one with -g. Oh well, before that type

ls pari/examples/squfof.gp*

pari/examples/squfof.gp    pari/examples/squfof.gp.run
pari/examples/squfof.gp.c  pari/examples/squfof.gp.so
pari/examples/squfof.gp.o

These are the files generated by gp2c-run:

  • pari/examples/squfof.gp.c is the C file generated by gp2c.
  • pari/examples/squfof.gp.o is the object file generated by the C compiler.
  • pari/examples/squfof.gp.so is the shared library generated by the linker.
  • pari/examples/squfof.gp.run is a file that contains the commands needed to load the compiled functions inside GP.

It is the shared library which is used by GP.

Now let’s continue:

./gp2c-run -g pari/examples/squfof.gp

parisize = 4000000, primelimit = 500000
? squfof(122294051504814979)
[20137]
[20137, 3445]
i = 46474
Qfb(321233929, 131349818, -367273962, 0.E-28)
%1 = 73823023

This time it works with no difficulty using the default stack. We would like to know how much faster the compiled code runs, so we need to load the non compiled squfof file in GP:

? \r pari/examples/squfof.gp
  ***   unexpected character: squfof(n)=if(isprime(n),retur
                                       ^--------------------

Why?? Because squfof already exists as an installed function and GP refuses to overwrite it. To solve this problem, we will add a suffix to the name of the compiled function under GP. Quit the session and type:

./gp2c-run -g -s_c pari/examples/squfof.gp

Now the function squfof is named squfof_c instead, so we can do

parisize = 4000000, primelimit = 500000
? \r pari/examples/squfof.gp
? #
   timer = 1 (on)
? squfof(122294051504814979)
[20137]
[20137, 3445]
i = 46474
Qfb(321233929, 131349818, -367273962, 0.E-28)
time = 5,810 ms.
%1 = 73823023
? squfof_c(122294051504814979)
[20137]
[20137, 3445]
i = 46474
Qfb(321233929, 131349818, -367273962, 0.E-28)
time = 560 ms.
%2 = 73823023

So the compiled version is more than ten times faster than the noncompiled one. However for more complex examples, compiled code usually runs only three times faster on average.

An extra trick: once you have run gp2c-run on your script, it is compiled and you can use the compiled version outside gp2c-run in any GP session by loading the file with extension .gp.run. For example quit the gp2c-run session and start gp and do

parisize = 4000000, primelimit = 500000
? \r pari/examples/squfof.gp.run

Now you have access to the compiled function squfof_c as well.

2.2  How can I compile directly with gp2c?

Now we want to compile directly with gp2c to understand what happens. We should run the command

./gp2c pari/examples/squfof.gp > squfof.gp.c

This creates a file squfof.gp.c in the gp2c directory. Now read this file with your favorite editor.

The first line is highly system-dependent, but should be similar to:

/*-*- compile-command: "/usr/bin/gcc -c -o pari/examples/squfof.gp.o
  -O3 -Wall -I/usr/local/include pari/examples/squfof.gp.c
  && /usr/bin/gcc -o pari/examples/squfof.gp.so
  -shared   pari/examples/squfof.gp.o"; -*-*/

This is the command needed to compile this C file to an object file with the C compiler and then to make a shared library with the linker. If you use emacs, typing ’M-x compile’ will know about this command, so you will just need to type Return to compile.

The second line is

#include <pari/pari.h>

This includes the PARI header files. It is important that the header files come from the same PARI version as GP, else it will create problems.

The next lines are

/*
GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");
GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so");
*/

The characters "GP;" denote a command that should be read by GP at start-up. Here, the install() commands above must be given to GP to let it know about functions defined by the library. gp2c-run copy such commands to the file ./pari/examples/squfof.gp.run.

Please read the entry about the install() command in the PARI manual.

The init_squfof function is an initialization function that is created automatically by gp2c to hold codes that is outside any function. Since in our case there are none, this is a dummy function. In other cases, it is essential. The next lines are

GEN squfof(GEN n, long prec);
void init_squfof(void);
/*End of prototype*/

This is the C prototypes of your functions. The rest of the file is the C code proper.

For teaching purpose, let’s run the command

./gp2c -s_c pari/examples/squfof.gp > squfof2.gp.c

and look at the difference between squfof.gp.c and squfof2.gp.c:

diff -u squfof.gp.c squfof2.gp.c

--- squfof.gp.c Tue Feb 26 13:44:42 2002
+++ squfof2.gp.c        Tue Feb 26 13:44:49 2002
@@ -1,8 +1,8 @@
 /*-*- compile-command: "/usr/bin/gcc -c -o pari/examples/squfof.gp.o
  -DMEMSTEP=1048576 -g -Wall -Wno-implicit  -I/usr/local/include
  pari/examples/squfof.gp.c && /usr/bin/ld -o pari/examples/squfof.gp.so
  -shared   pari/examples/squfof.gp.o"; -*-*/
 #include <pari/pari.h>
 /*
-GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");
-GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so");
+GP;install("squfof","D0,G,p","squfof_c","./pari/...les/squfof.gp.so");
+GP;install("init_squfof","v","init_squfof_c","./par.../squfof.gp.so");
 */
 GEN squfof(GEN n, long prec);
 void init_squfof(void);

If you are not familiar with the diff utility, the above means that only the two lines starting with GP;install have changed. In fact squfof is still named squfof in the C file, but the install command tells GP to rename it squfof_c in the GP session.

2.3  Using gp2c to find errors in GP scripts

The gp2c compiler can also be used to find errors in GP programs. For that we should use the -W option like in

./gp2c -W pari/examples/squfof.gp > squfof.gp.c

Warning:pari/examples/squfof.gp:7:variable undeclared
p
Warning:pari/examples/squfof.gp:11:variable undeclared
dd
Warning:pari/examples/squfof.gp:11:variable undeclared
d
Warning:pari/examples/squfof.gp:11:variable undeclared
b
...
Warning:pari/examples/squfof.gp:45:variable undeclared
b1

This option lists variables that are used but not declared. It is important to declare all your variables with my(), or with global(). For gp2c, undeclared variables are taken to be “formal variables” for polynomials. For example if you write a function to build a second degree polynomial like

pol(a,b,c)=a*x^2+b*x+c

you must not declare ’x’ here, since it stands for the formal variable x.

2.4  Using compiled functions in a new program

One you have successfully compiled and tested your functions you may want to reuse them in another GP program.

The best way is to copy the install commands of the functions you use at the start of the new program so that reading it will automatically load the compiled functions.

As an example, we write a simple program fact.gp that reads

install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");
fact_mersenne(p)=squfof(2^p-1)

and run GP:

parisize = 4000000, primelimit = 500000
? \rfact
? fact_mersenne(67)
i = 2418
Qfb(10825778209, 4021505768, -13258245519, 0.E-28)
%1 = 193707721

So all goes well. But what is even better is that gp2c understands the install command and will be able to compile this new program.

Also this particular example will fail because as stated above, PARI/GP already has a squfof function, and the linker will pick the wrong one, which is unfortunate.

So use the -p option to gp2c-run to change squfof to my_squfof.

./gp2c-run -pmy_ -g pari/examples/squfof.gp

This option prefixes my_ to every GP name in the program so as to avoid name clashes. Change fact.gp to

install("my_squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");
fact_mersenne(p)=squfof(2^p-1)

and run

./gp2c-run -g fact.gp

parisize = 4000000, primelimit = 500000
? fact_mersenne(67)
i = 2418
Qfb(10825778209, 4021505768, -13258245519, 0.E-28)
%1 = 193707721

Nice isn’t it?

But it gets even better: instead of writing the install command directly in your script you can just load the squfof.gp.run using \r: just change fact.gp to

\r ./pari/examples/squfof.gp.run
fact_mersenne(p)=squfof(2^p-1)

2.5  Hand-editing the C file generated by gp2c

If you have some experience in PARI programming, you may want to manually edit the C file generated by gp2c, for example to improve memory handling. Here some tips:

  • If you preserve the install() at the start of the file, you can use the command gp2c-run file.c to recompile your file and start a new GP session with your functions added, just as you use gp2c-run with GP scripts.
  • More generally, gp2c-run automatically passes any line in the C file starting with ’GP;’ to GP at start-up.
  • As explained in Section 2.2, under emacs you can type ’M-x compile’ to recompile the shared library.

3  Advanced use of gp2c

3.1  gp2c types

Internally gp2c assign types to objects. The most common types are given below:

namedescription
voidlike in C
boolboolean, true (1) or false (0)
negboolantiboolean, true (0) or false (1)
smallC integer long
intmultiprecision integer
realmultiprecision floating point
mpmultiprecision number
varvariable
polpolynomial
vecsmallvector of C long (t_VECSMALL)
vecvector and matrices (excluding vecsmall)
listGP lists
strcharacters string as a char *
genstrcharacters string as a GEN (t_STR)
gengeneric PARI object (GEN)
lglength of object (returned by length)
typtype of object (returned by type)

Table 1: Types preorder

Types are preordered as in Table 1. The complete preorder known by gp2c can be accessed by running gp2c -t.

Variables are typed. A variable can only take values having a type equal or lower than its type. By default, variables are of type gen.

3.2  Type declaration

To declare a variable as belonging to type type, use:

function(x:type,y:type=2)
my(x:type, y:type=2)
global(x:type, y:type=2)
for(i:type=...

To declare several variables of the same type type at once, use:

my(x, y=2):type
global(x, y=2):type

You can even mix the two ways:

my(x, y:type2=2):type1

will declare x to be of type type1 and y of type type2.

3.3  Effect of types declaration on default values

Under GP, all GP variables start with a default value, which is 0 for a local variable and ’v for a global variable v.

The gp2c compiler follows this rule for variables declared without a type. However, when a variable is declared with a type, gp2c will not assign it a default value. This means that the declaration my(g) is equivalent to my(g:gen=0), but not to my(g:gen), my(g) is equivalent to my(g:gen=’g), but not to my(g:gen), and f(g)=... is equivalent to f(g:gen=0)=..., but not to f(g:gen)=....

This rule was chosen for several reasons:

  • The default value (0 or ’v) might not be an object suitable for the type in question. For example, my(v:vec) declares v as being of type vec. It would make no sense to initialize v to 0 since 0 does not belong to type vec. Similarly global(N:int) declares N as being of type int. It would make no sense to initialize N to ’N since ’N does not belong to type int.
  • This allows defining GP functions with mandatory arguments. This way, GP will issue an error if a mandatory argument is missing. Without this rule, there is no way to tell apart 0 from a missing argument.
  • This allows telling gp2c not to generate useless default values.

3.4  Type casting

Sometimes, we know a more precise type than the one the transtyping algorithm can derive. For example if x is a real number, its logarithm might be complex. However, if we are sure x is positive, the logarithm will be real.

To force an expression to belong to type type, use the syntax:
expr:type
gp2c will check types consistency and output warnings if necessary. For example
f(x:int)=my(r:real); r=log(x^2+1)
gp2c will complain that the logarithm might not be real. Since x^2+1 is always positive, we can write:
f(x:int)=my(r:real); r=log(x^2+1):real

3.5  Example of optimisation

Declaring the types of variables allow gp2c to perform some optimisations. For example, the following piece of GP code

rho(n)=
{
  my(x,y);

  x=2; y=5;
  while(gcd(y-x,n)==1,
    x=(x^2+1)%n;
    y=(y^2+1)%n; y=(y^2+1)%n
   );
  gcd(n,y-x)
}

generates the following output:

GEN
rho(GEN n)
{
  GEN x = gen_0, y = gen_0;
  x = gen_2;
  y = stoi(5);
  while (gequal1(ggcd(gsub(y, x), n)))
  {
    x = gmod(gaddgs(gsqr(x), 1), n);
    y = gmod(gaddgs(gsqr(y), 1), n);
    y = gmod(gaddgs(gsqr(y), 1), n);
  }
  return ggcd(n, gsub(y, x));
}

The functions gsqr, gaddgs, gmod, ggcd are generic PARI functions that handle gen objects. Since we only want to factor integers with this method, we can declare n, x   y of type int:

rho(n:int)=
{
my(x:int,y:int);

  x=2; y=5;
  while(gcd(y-x,n)==1,
    x=(x^2+1)%n;
    y=(y^2+1)%n; y=(y^2+1)%n
   );
  gcd(n,y-x)
}

The new C code output by gp2c is:

GEN
rho(GEN n)        /* int */
{
  GEN x, y;       /* int */
  if (typ(n) != t_INT)
    pari_err(typeer, "rho");
  x = gen_2;
  y = stoi(5);
  while (gequal1(gcdii(subii(y, x), n)))
  {
    x = modii(addis(sqri(x), 1), n);
    y = modii(addis(sqri(y), 1), n);
    y = modii(addis(sqri(y), 1), n);
  }
  return gcdii(n, subii(y, x));
}

Now, the code now uses the more specific functions sqri, addis, modii and gcdii.

The most efficient way to use typing is to declare some variables of type small. This way, these variables will be implemented by C long variables, which are faster than PARI integers and do not require garbage collecting. However, you will not be protected from integer overflow. For that reason, gp2c will automatically declare some loop indices of type small when the range cannot cause overflow. Sometimes gp2c can be too conservative but you can force a loop index to be small with the syntax for(i:small=a,b,...).

3.6  Types and member functions

For use with members functions, gp2c provides the following types:

nf
for ordinary number fields, i.e., a result given by the GP function nfinit.
bnf
for big number fields, i.e., a result given by the GP function bnfinit which includes class and unit group data.
bnr
for ray class groups, i.e., a result given by the GP function bnrinit.
ell
for elliptic curves, i.e., a result given by the GP function ellinit.
gal
for galois extensions, i.e., a result given by the GP function galoisinit.
prid
for prime ideals, i.e., a component of the result given by the GP function idealprimedec.

Members functions on typed objects are much more efficient.

4  Common problems

4.1  Meta-commands.

Meta-commands (commands starting with a \) other than \r are currently ignored by gp2c, though a warning will be issued, because it is not clear what they should do in a compiled program. Instead you probably want to run the meta-command in the GP session itself.

The meta-command \rinclude is replaced with the content of the file include (or include.gp) when gp2c reads the file. If you would prefer gp2c to link include.so to the program instead, see Section 2.4.

4.2  Unsupported functions.

Some GP functions are not yet available to C programs, so the compiler cannot handle them. If you use them you will get the error "unhandled letter in prototype". These are currently forfactored and forsquarefree.

The functions forell, forsubgroup and forqfvec are currently not implemented as an iterator but as a procedure with callbacks, which limits what you can do inside the loop.

The forstep function is supported when the step is a number. If it is a vector, you must add a tag :vec to make GP know about it like in

f(x)=
{
  my(v);
  v=[2,4,6,6,6,6,6,2,4,6,6]
  forstep(y=7,x,v:vec,print(y))
}

This is not needed if the step is a vector or a variable of type vec, but is needed if the step is only an expression which evaluates to a vector.

Some functions are passed to GP by gp2c-run at start-up (using the GP; syntax) instead of being translated in C: install and addhelp. In practice, they can be considered as supported.

Also the functions read, eval, kill may compile fine but have a surprising behaviour in some case, because they may modify the state of the GP interpreter, not of the compiled program. Please see Section 4.4 for details. For example f(n)=eval("n^2") is very different from f(n)=n^2. To read files at compile-time use \r instead of read.

4.3  Dynamically-scoped local variables.

Currenlty gp2c does not support dynamically-scoped local variables declared with local(). Instead local() is treated as an alias for my() which declares statically-scoped local variables.

Supporting dynamically-scoped local variables is cumbersome to do in C.

4.4  Memory handling and global variables.

While a lot of work has been done to ensure that gp2c handles global variables properly, the use of global variables is still a lot of trouble, so try to avoid them if you do not understand the implications on memory handling.

First, there is a common practice to use undeclared variables as formal variables, for example we assume x=’x and write a*x+b instead of a*’x+b. So gp2c will not raise an undeclared variable to the rank of global variable unless you declare it with the global() command, or you use it at toplevel (i.e. outside any function). See also Section 2.3

Second, global variables seen by a compiled function are C variables, not GP variables. There is no connection between the two. You may well have two variables with the same name and a different content. Currently GP knows only how to install functions, not variables, so you need to write compiled functions in order to access global variables under GP.

Basically, global variables are allocated in the main stack which is destroyed each time GP prints a new prompt. This means you must put all your commands on the same line. Also global variables must be initialized using the init_<filename> function before being used, and are only supported with the -g flag.

So you end up doing gp2c-run -g global.gp

parisize = 4000000, primelimit = 500000
? init_global();myfunction(args);

Note that nothing prevents you from calling init_global in the GP program. In that case, you can omit the parentheses (i.e, write init_global, not init_global()) so that you can still run your noncompiled program.

Another way to handle global variables is to use the clone function which copies a PARI object to the heap, hence avoids its destruction when GP prints a new prompt. You can use unclone to free a clone. Please read the PARI/GP manual for more information about clone.

A good use of clone is for initializing constant variables: for example in test/gp/initfunc.gp, the vector T is initialized by

T=clone([4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0])

You must still run the init_<filename> after starting GP, but after that you can use T safely.

GP itself currently does not know about clone and unclone, but you can use dummy functions

clone(x)=x
unclone(x)=while(0,)

when running uncompiled.

4.5  Support for t_VECSMALL

When accessing the component of a t_VECSMALL, it is necessary that that the object has been declared of type vecsmall.

For example my(v); v = vecsort(V,,1); print(v[1]) does not work, but my(v:vecsmall); v = vecsort(V,,1); print(v[1]) or my(v:vecsmall); v = vecsort(V,,1); print(v:vecsmall[1]) works.

4.6  GP lists

GP lists and maps are not fully supported by gp2c. A partial support is available with the list type. You must tell gp2c that a variable will contain a list or a map by using L:list inside a declaration, where L is the name of the variable as explained in Section 3.

Currently, assigning to a list element (L[2]=x) will not work and lists and maps will not be freed unless you explicitly use listkill.

Note: The PARI user’s manual states that lists are useless in library mode.

4.7  The install command

The install command is interpreted as a gp2c directive. This allows using installed function in compiled programs, see Section 2.4.

However this has some side-effects:

  • If present, the lib argument must be a string, not an expression that evaluate to a string.
  • The install command is not compiled, instead it is added to the list of functions to install.

4.8  What about main() ?

There are two different issues with main(): first this is reserved function name in C, so using it with gp2c will cause a name clash. To avoid this, either rename it or use the flag -p.

Secondy gp2c has no support for generating stand-alone GP programs. However adding manually a main() C function is not difficult in general.

5  Command-line options of gp2c

Here is a brief description of the main options of gp2c, which can be seen with ./gp2c -h.

In Section 2.1 we saw how to use the -g option.

  • -g tells gp2c to generate gerepile calls to clean up the PARI stack and reduce memory usage. You will probably need this option, although the C code will be easier to read or hand-edit without it.
  • -ofile tells gp2c to write the generated C file to the file file instead of the standard output.
  • -iN allows you to change the indentation of the generated C file. So if you want 4 spaces, just use the -i4 option with gp2c. The default is 2.
  • -C adds code to perform range checking for GP constructs like x[a] and x[a,b]. This also checks whether x has the correct type. By default gp2c does not perform such check, which can lead to a runtime crash with invalid code. This option causes a small runtime penalty and a large C code readability penalty.
  • -L adds compiler directives to the code so that warning and error found by the compiler are prefixed with the line number in the original GP file instead of the C file.
  • -W is useful for debugging the .gp file, in the sense that it detects if some local variables are undeclared. For example, if the file algorithm.gp has a routine like
    radical(x)=F=factor(x)[,1];prod(i=1,length(F),F[i])
    

    The variable ’F’ is undeclared in this routine, so when running gp2c with the -W option it prints

    Warning:algorithm.gp:1:variable undeclared F

    At present, an undeclared variable is taken to be a "formal variable" for polynomials by gp2c, so do not declare it if that is what you intend. For example in pol(a,b,c)=a*x^2+b*x+c you must not declare x since it stands for the formal variable ’x.

  • -pprefix A problem with C is that it is subject to name clashes, i.e., if a GP variable in your routine has the same name as a C symbol in the pari library, the compiler will report strange errors. So this option changes ALL user variables and user routine names by adding a prefix prefix to them. For example the GP routine add(x,y) with -pmy_ will become the C function my_add(x,y).

    Try this option each time the compiler fails to compile gp2c output to see if there is a name conflict. If this is the case, change the name in your GP script. It may be difficult to find conflicting names if your compiler is not verbose enough and if you are not familiar with the PARI code and C in general.

    Example of conflicting names are top,bot,prec,un, but there are thousands of others and they may be system-dependent.

  • -ssuffix: Add suffix to the names of the installed functions under GP. This is to avoid clashes with the original GP script. For example, if you want to compare timings you may want to use the option -s_c This does not affect the C code, only the install commands.
  • -S: Assume strict prototypes for functions. This is related to the ’strictargs’ GP default. This makes all arguments of functions defined in the file mandatory unless the function supplies an explicit default value. This does not affect the C code, only the prototype code in the install commands. In this example, the prototype code changes from "D0,G,DG" to "GDG".
    test(data,flag=0)={CODE}
    
  • -h gives the help.
  • -v gives the gp2c version.
  • -l prints a list of all the GP functions known by the compiler. So if a routine contains a GP routine not on this list, gp2c will show an error when trying to translate it.

    Reasons why a GP function may not be known by the compiler are:

    • The function is not part of the PARI library. See Section 4.2
    • You use the old PARI 1.39 function names instead of the new ones. gp2c currently does not know about the ’compat’ default. Use whatnow under GP to get the current name. For example, mod() is now Mod().
    • You use a GP function that does not exists in the GP version gp2c was compiled against. Please recompile gp2c against this GP version.

      Normally no functions are added between two stable releases of GP with the same minor version number (say 2.1.1 and 2.1.2) so there is no need to recompile gp2c when you upgrade. But if you use the developement versions, you need to recompile. Also some new developement versions may break old versions of gp2c, so upgrade gp2c at the same time.

      However, if you want to compile scripts which do not use the new functions, you do not need to recompile. Note that you may use the GP environment variables to tell gp2c-run which GP to use.

  • -t Output the table of types known to the compiler, see Section 3.

This document was translated from LATEX by HEVEA.
gp2c-0.0.12/doc/gp2c.dvi0000644000175000017500000014023013645577671011477 00000000000000÷ƒ’À;è TeX output 2020.04.15:1436‹ÿÿÿÿ ª ýs o ýÞ’‹áoóDÓítG®G®cmr17¹An–7tinŒqtrosŽduction“to“ó߆µTG® cmtt12ºgp2cŽŸ’…8ÇóX«Q cmr12»By–ê¨Bill“Allomš¬rbSŽert“and“Ariel“P˜acettiŽŽŽŽŽŸˆ‹’½0April–ê¨15,“2020ŽŸ+Ä‘5óÂÖN ff cmbx12ÅCon•ŒÌten“tsޤ‘5óò"V cmbx10Æ1Ž‘DWhat–ÕTis“óßê‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¢9ŽŽ¦‘D3.5Ž‘[Example–UUof“optimisation‘[Í‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡10ŽŽ¦‘D3.6Ž‘[Tš¸ãypGes–UUand“mem˜bGer“functions‘¿G‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡11ŽŽ¡‘5Æ4Ž‘DCommon‘ÕTproblems’ßu11ŽŽ¦‘D²4.1Ž‘[Meta-commands.‘ã‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡11ŽŽ¦‘D4.2Ž‘[UnsuppGorted‘UUfunctions.‘"ì‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡12ŽŽ¦‘D4.3Ž‘[Dynamically-scop•Ged›UUlo“cal˜v‘ÿqÇariables.‘)Õ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡12ŽŽ¦‘D4.4Ž‘[Memory–UUhandling“and“global“v‘ÿqÇariables.‘›‰‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡12ŽŽ¦‘D4.5Ž‘[SuppGort–UUfor“óm#½R cmss10Èt‘™˜‰ffŽ‘™šVECSMALL‘c‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡13ŽŽ¦‘D4.6Ž‘[GP‘UUlists‘u‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡13ŽŽ¦‘D4.7Ž‘[The‘UUóý': cmti10Éinstal‘‚Øl‘]Þ²command>‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡14ŽŽ¦‘D4.8Ž‘[What–UUabGout“Èmain()“²?‘j‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡14ŽŽ¡‘5Æ5Ž‘DCommand-line–ÕToptions“of“Çgp2c’¦ÈÇÆ14ŽŽŸ!Ä‘5Å1Ž‘MLËWhat–ffis“ó߆µTff cmtt12Êgp2cÅ?ŽŸç‘5²The–Ô†Çgp2c“²compiler“is“a“pacš¸ãk‘ÿqÇage‘Ô‡for“translating“GP‘Ôeroutines“in˜to“the‘Ô‡C‘Ôeprogram-ަ‘5ming–·language,‘Ïlso›·that“they“can“bGe˜compiled“and“used“with˜the“P‘ÿ*ªARI‘¶èsystemަ‘5or–UUthe“GP“calculator.ŽŽŸ’ß1ŽŽŒ‹* ª ýs o ý´‘D²The–Œmain“adv‘ÿqÇan¸ãtage“of“doing“this“is“to“spGeed“up“computations“and“to“includeޤ ‘5y•¸ãour›!o“wn˜routines‘!within˜the˜preexisting˜GP‘!ones.‘`ZIt˜ma“y˜also˜ nd‘!bugs˜in˜GPŽ¡‘5scripts.Ž¡‘DThis–UUpacš¸ãk‘ÿqÇage“(including“the“latest“v˜ersions)“can“bGe“obtained“at“the“URL:Ž¡‘5Çhttp://pari.math.u-bordeaux.fr/download.html#gp2cŽŸþ6‘5ó ÂÖN  cmbx12Ë1.1Ž‘SÀInstalling‘€ó!߆µT cmtt12Ìgp2cŽ©uT‘5²After–ŠØdo¸ãwnloading“the“ le“Çgp2c-ó"ßêcreates“a‘j=directory‘ËÇgp2c-Íx.y.z–¼rÇplÍt“²,‘™Cwhic•¸ãh›j>con“tains˜the‘j=main˜Çgp2c˜² les.Ž¡‘5No•¸ãw›UUy“ou˜ha“v“e˜to˜install˜the˜program.Ž¡‘DY‘ÿ*ªou–»Áneed›»Âthe“ le˜Çpari.cfg².‘¥ This˜ le“can˜bGe“found˜in“the˜P‘ÿ*ªARI‘»eob‘Ž8jectŽ¡‘5directory–UUand“is“installed“in“$pre x/lib/pari/.Ž¡‘DCop¸ãy–UUor“link“this“ le“in“the“Çgp2c“²directory‘ÿ*ª,“bGe“sure“to“call“it“Çpari.cfg².Ž¡‘5Æln–ÕT-s“.../lib/pari/pari.cfg“pari.cfgŽ¡‘D²Run– VÆ./con gure²,‘6Vwhicš¸ãh“will“searc˜h“for“the“P‘ÿ*ªARI‘ (v˜ersion“and“some“otherŽ¡‘5con guration–¹htošGols“of“the“system.‘žT‘ÿ*ªo“install“the“program,‘lt¸ãyp˜e“Æmak®9e²,‘landŽ¡‘5the–ÿ program›ÿ!will“bGe˜compiled.‘o)Y‘ÿ*ªou˜can“then˜run“Æmak•®9e‘˜˜c“hec“k–ÿ ²to˜v¸ãerify“thatŽ¡‘5evš¸ãerything–Ö¨has“gone“ ne“(a“bunc˜h“of“OK's“should‘Ö§sho˜w“up).‘õÀAll“of“this“isŽ¡‘5completely–UUstandard,“and“yš¸ãou“are“no˜w“ready“to“use“Çgp2c².Ž¡‘DY‘ÿ*ªou–Ÿ|can“use›Ÿ{Çgp2c“²directly“from“this˜directory“or“y¸ãou“can“install˜it“b¸ãy“runningŽ¡‘5Æmak®9e‘ŸÀinstall›[²as–ZroGot.‘×If“y¸ãou“do˜not“install“it,‘1[y¸ãou˜can“run“it“from˜the“Çgp2cŽ¡‘5²directory–UUbš¸ãy“t˜yping“Æ./gp2cŽŸ!Ä‘5Å2Ž‘MLËA–ffÊgp2c“ÅtutorialŽŸç‘5Ë2.1Ž‘SÀHoš w–€can“I“compile“and“run“m˜y“scripts?ަ‘5²The›ÐQsimplest‘ÐPw•¸ãa“y˜to–ÐPuse˜Çgp2c˜²is“to˜call“Çgp2c-run².‘âºIf˜yš¸ãou“w˜an˜t‘ÐQto“kno˜w‘ÐQwhatŽ¡‘5happGens–UUin“detail,“see“next“section.Ž¡‘DT‘ÿ*ªo– /makš¸ãe“the“examples“easier“to“follo˜w,‘9åplease“mo˜v˜e“to“the“Çgp2c“²directoryŽ¡‘5and–UUlink“the“roGot“of“y¸ãour“P‘ÿ*ªARI“source“there:Ž¡‘5Æln–ÕT-s“.../pari“.Ž¡‘D²As›KŸan–K example,‘É1w¸ãe“will˜tak¸ãe“the˜ le“Çpari/examples/squfof.gp²,‘É1whic¸ãhŽ¡‘5is–‘Êa›‘Ësimple“implemen¸ãtation˜of“the˜w•¸ãell-kno“wn‘‘ÊSQUF“OF‘‘yfactoring˜methoGd‘‘ÊofŽ¡‘5D.‘UUShanks.Ž¡‘DW‘ÿ*ªe–UUjust“run“the“command:Ž¡‘5Æ./gp2c-run‘ÕTpari/examples/squfof.gpŽ¡‘D²After–M…a“little“prošGcessing“w¸ãe“get“a“GP‘MDsession.‘ZWBut“this“session“is“sp˜ecial,Ž¡‘5bGecause–rÀit“conš¸ãtains“the‘rÁcompiled“Ésqufof‘‘T²function.‘&@Hence“w˜e‘rÁcan“do“the“follo˜wing:ŽŸ‘5Çparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?‘?ýsqufof(3097180303181)ŽŽŸ’ß²2ŽŽŒ‹ ª ýs o ý´‘5Ç[419]ޤ ‘5i–?ý=“596Ž¡‘5Qfb(133225,–?ý1719841,“-261451,“0.E-28)Ž¡‘5%1–?ý=“1691693ŽŸ‘5²Let's–UUtry“a“bigger“example:Ž©‘5Ç?‘?ýsqufof(122294051504814979)Ž¡‘5[20137]Ž¡‘?ú***‘¿÷the–?ýPARI“stack“overflows“!Ž¡‘?úcurrent–?ýstack“size:“4.0“MbytesŽ¡‘?ú[hint]–?ýyou“can“increase“GP“stack“with“allocatemem()Ž¡‘5?‘?ýallocatemem()Ž¡‘?ú***‘¿÷Warning:–?ýdoubling“stack“size;“new“stack“=“8.0“MBytes.Ž¡‘5?‘?ýsqufof(122294051504814979)Ž¡‘5[20137]Ž¡‘5[20137,‘?ý3445]Ž¡‘5i–?ý=“46474Ž¡‘5Qfb(321233929,–?ý131349818,“-367273962,“0.E-28)Ž¡‘5%2–?ý=“73823023ަ‘5²W‘ÿ*ªe–Ï;need“a“large“stacš¸ãk“bGecause“b˜y“default‘Ï<Çgp2c“²došGes“not“generate“co˜de“to“handleŽ¡‘5the–pÃstac¸ãk›pÄ(the“so-called˜Ègerepile˜²coGde).‘ÄT‘ÿ*ªo“instruct˜Çgp2c˜²to“add“Çgerepile˜²coGdeŽ¡‘5automatically‘ÿ*ª,‘fw•¸ãe›ëm“ust–êuse“the˜Æ-g“²option.‘[NSo˜quit“this˜GP‘Ùsession“and˜launc¸ãh“aŽ¡‘5new–UUone“with“-g.‘qÇOh“wš¸ãell,“bGefore“that“t˜ypGeŽ¡‘5Æls‘ÕTpari/examples/squfof.gp*ަ‘5Çpari/examples/squfof.gp‘ÿôpari/examples/squfof.gp.runŽ¡‘5pari/examples/squfof.gp.c‘ úpari/examples/squfof.gp.soŽ¡‘5pari/examples/squfof.gp.oަ‘D²These–UUare“the“ les“generated“b¸ãy‘xâÇgp2c-run²:ަ‘Dó !",š cmsy10¸ŽŽŽ‘N²pari/examples/squfof.gp.c–UUis“the“C“ le“generated“b¸ãy‘xâÇgp2c².ަ‘D¸ŽŽŽ‘N²pari/examples/squfof.gp.o–UUis“the“ob‘Ž8ject“ le“generated“b¸ãy“the“C“compiler.ަ‘D¸ŽŽŽ‘N²pari/examples/squfof.gp.so–UUis“the“shared“library“generated“bš¸ãy“the“link˜er.ަ‘D¸ŽŽŽ‘N²pari/examples/squfof.gp.run–ePis›eOa“ le˜that“con¸ãtains˜the“commands˜neededŽ¡‘Nto–UUload“the“compiled“functions“inside“GP‘ÿ*ª.ަ‘5It–UUis“the“shared“library“whicš¸ãh“is“used“b˜y“GP‘ÿ*ª.Ž¡‘DNoš¸ãw–UUlet's“con˜tin˜ue:Ž¡‘5Æ./gp2c-run–ÕT-g“pari/examples/squfof.gpަ‘5Çparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?‘?ýsqufof(122294051504814979)Ž¡‘5[20137]Ž¡‘5[20137,‘?ý3445]Ž¡‘5i–?ý=“46474Ž¡‘5Qfb(321233929,–?ý131349818,“-367273962,“0.E-28)Ž¡‘5%1–?ý=“73823023ŽŽŸ’ß²3ŽŽŒ‹&ô ª ýs o ý´‘D²This–P"time›P!it“w¸ãorks˜with“no˜dicult¸ãy“using“the˜default“stac•¸ãk.‘p W‘ÿ*ªe˜w“ould‘P"lik“eޤ ‘5to›Ákno•¸ãw‘Á‚ho“w˜m“uc“h–Á‚faster˜the˜compiled“coGde˜runs,‘Üso˜w¸ãe˜need“to˜load“the˜nonŽ¡‘5compiled–UUÉsqufof‘sé² le“in“GP:Ž©‘5Ç?–?ý\r“pari/examples/squfof.gpŽ¡‘?ú***‘¿÷unexpected–?ýcharacter:“squfof(n)=if(isprime(n),returŽ¡’¿‹^--------------------ަ‘5²Wh¸ãy??‘âBecause–ÐÉsqufof‘already“exists“as‘Ðan“installed“function“and“GP‘ÏörefusesŽ¡‘5to›£¥o•¸ãv“erwrite˜it.‘\¶T‘ÿ*ªo˜solv“e˜this˜problem,‘·9w“e˜will˜add˜a˜sux‘£¤to˜the˜name˜of˜theŽ¡‘5compiled–UUfunction“under“GP‘ÿ*ª.“Quit“the“session“and“t¸ãypGe:Ž¡‘5Æ./gp2c-run–ÕT-g“-s‘°¡‰ffs4Ž‘#Õc“pari/examples/squfof.gpŽ¡‘D²Noš¸ãw–UUthe“function“squfof“is“named“squfof‘™˜‰ffŽ‘™šc“instead,“so“w˜e“can“doŽ©‘5Çparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?–?ý\r“pari/examples/squfof.gpŽ¡‘5?‘?ý#Ž¡‘D¿÷timer–?ý=“1“(on)Ž¡‘5?‘?ýsqufof(122294051504814979)Ž¡‘5[20137]Ž¡‘5[20137,‘?ý3445]Ž¡‘5i–?ý=“46474Ž¡‘5Qfb(321233929,–?ý131349818,“-367273962,“0.E-28)Ž¡‘5time–?ý=“5,810“ms.Ž¡‘5%1–?ý=“73823023Ž¡‘5?‘?ýsqufof_c(122294051504814979)Ž¡‘5[20137]Ž¡‘5[20137,‘?ý3445]Ž¡‘5i–?ý=“46474Ž¡‘5Qfb(321233929,–?ý131349818,“-367273962,“0.E-28)Ž¡‘5time–?ý=“560“ms.Ž¡‘5%2–?ý=“73823023ަ‘5²So–Yxthe›Ywcompiled“v¸ãersion“is˜more“than“ten˜times“faster“than˜the“noncompiledŽ¡‘5one.‘†£Ho•¸ãw“ev“er–±Ÿfor›±žmore“complex˜examples,‘°compiled“coGde˜usually“runs˜onlyŽ¡‘5three–UUtimes“faster“on“a•¸ãv“erage.Ž¡‘DAn–½ extra‘½¡tricš¸ãk:‘B^once“y˜ou“ha˜v˜e›½¡run“Çgp2c-run“²on˜y¸ãour“script,‘׳it˜is“compiledŽ¡‘5and–ÆØyš¸ãou“can‘Æ×use“the“compiled“v˜ersion“outside‘Æ×Çgp2c-run“²in“an˜y“GP‘ƺsession“b˜yŽ¡‘5loading–çëthe“ le“with“extension“Ç.gp.run².‘MOF‘ÿ*ªor“example“quit“the“Çgp2c-run“²sessionŽ¡‘5and–UUstart“Çgp“²and“doŽ©‘5Çparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?–?ý\r“pari/examples/squfof.gp.runަ‘D²No•¸ãw›UUy“ou˜ha“v“e˜access˜to˜the˜compiled˜function˜Ésqufof‘‰ffŽ‘®c‘æ ²as˜w“ell.ŽŸþ6‘5Ë2.2Ž‘SÀHo w–€can“I“compile“directly“with“Ìgp2cË?ŽŸuT‘5²No•¸ãw› €w“e˜w“an“t˜to– compile˜directly˜with˜Çgp2c˜²to˜understand˜what“happGens.‘SHW‘ÿ*ªeŽ¡‘5should–UUrun“the“commandŽ¡‘DÆ./gp2c–ÕTpari/examples/squfof.gp“Ç>“Æsqufof.gp.cŽŽŸ’ß²4ŽŽŒ‹/w ª ýs o ý´‘D²This–_Âcreates“a›_Á le“squfof.gp.c“in“the“Çgp2c˜²directory‘ÿ*ª.‘‘No¸ãw“read˜this“ le“withޤ ‘5y•¸ãour›UUfa“v“orite˜editor.Ž¡‘DThe–UU rst“line“is“highly“system-depšGenden¸ãt,“but“should“b˜e“similar“to:ŽŸ ‘5ó%ߤN cmtt9Ð/*-*-–¹–compile-command:“"/usr/bin/gcc“-c“-o“pari/examples/squfof.gp.oޤ ‘>s,-O3–¹–-Wall“-I/usr/local/include“pari/examples/squfof.gp.cŽ¡‘>s,&&–¹–/usr/bin/gcc“-o“pari/examples/squfof.gp.soŽ¡‘>s,-shared‘,Âpari/examples/squfof.gp.o";‘¹–-*-*/ŽŸ ‘D²This–Vis›Uthe“command˜needed“to“compile˜this“C‘G le“to“an˜ob‘Ž8ject“ le˜with“theޤ ‘5C‘æcompiler›æ3and–æ4then“to˜mak¸ãe“a“shared“library˜with“the“linkš¸ãer.‘L¼If“y˜ou‘æ3use“Çemacs²,Ž¡‘5tš¸ãyping–Ý£'M-x‘ݤcompile'“will“kno˜w“abGout‘ݤthis“command,‘ÿ·so“y˜ou“will“just‘ݤneed“toŽ¡‘5t¸ãypGe–UUÇReturn“²to“compile.Ž¡‘DThe–UUsecond“line“isޤ³3‘5Ç#include‘?ýŽ¡‘5²This–fÞincludes›fÝthe“P‘ÿ*ªARI‘fØheader“ les.‘¦`It“is˜impGortan¸ãt“that˜the“header˜ les“comeŽ© ‘5from–UUthe“same“P›ÿ*ªARI“v¸ãersion“as“GP˜,“else“it“will“create“problems.ޤ ‘DThe–UUnext“lines“areŽŸ³4‘5Ð/*Ž¡‘5GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");Ž¡‘5GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so");Ž¡‘5*/ŽŸ³3‘D²The–”*c¸ãharacters›”)"GP;"“denote˜a“command˜that“should˜bGe“read˜b¸ãy“GP‘“×atަ‘5start-up.‘J]Here,‘„èthe›H2Éinstal‘‚Øl()‘¦Å²commands‘H1abGo•¸ãv“e˜m“ust˜bGe‘H1giv“en˜to˜GP‘Góto‘H1let˜itަ‘5knoš¸ãw–ûÝabGout“functions“de ned‘ûÞb˜y“the“library‘ÿ*ª.‘SôÇgp2c-run‘ûÞ²cop˜y“suc˜h“commands“toަ‘5the–UU le“Ç./pari/examples/squfof.gp.run².ަ‘DPlease–UUread“the“enš¸ãtry“abGout“the“Éinstal‘‚Øl()‘³è²command“in“the“P‘ÿ*ªARI“man˜ual.ަ‘DThe–PÉinit‘‰ffŽ‘®squfof‘n¨²function›Pis“an“initialization“function“that˜is“created“auto-ަ‘5matically–WŒb¸ãy“Çgp2c›W²to“hold“coGdes“that“is˜outside“an¸ãy“function.‘xlSince˜in“our“caseަ‘5there–ôare›ônone,‘Ãthis“is˜a“dumm¸ãy˜function.‘NIn“other˜cases,‘Ãit“is˜essen¸ãtial.‘NTheަ‘5next–UUlines“areޤ ‘5ÇGEN–?ýsqufof(GEN“n,“long“prec);ަ‘5void‘?ýinit_squfof(void);ަ‘5/*End–?ýof“prototype*/Ž¡‘5²This–ñdis›ñethe“C‘ñ“Æsqufof2.gp.cަ‘D²and–UUlošGok“at“the“di erence“b˜et•¸ãw“een–UUsqufof.gp.c“and“squfof2.gp.c:ޤ ‘5Ædi –ÕT-u“squfof.gp.c“squfof2.gp.cŽŸ³3‘5Ð---–¹–squfof.gp.c“Tue“Feb“26“13:44:42“2002Ž¡‘5+++–¹–squfof2.gp.c‘%̰Tue“Feb“26“13:44:49“2002Ž¡‘5@@–¹–-1,8“+1,8“@@Ž¡‘9¹–/*-*-–¹–compile-command:“"/usr/bin/gcc“-c“-o“pari/examples/squfof.gp.oŽ¡‘>s,-DMEMSTEP=1048576–¹–-g“-Wall“-Wno-implicit‘ s,-I/usr/local/includeŽ¡‘>s,pari/examples/squfof.gp.c–¹–&&“/usr/bin/ld“-o“pari/examples/squfof.gp.soŽ¡‘>s,-shared‘,Âpari/examples/squfof.gp.o";‘¹–-*-*/ŽŽŸ’ß²5ŽŽŒ‹9( ª ýs o ý´‘9¹–Ð#include‘¹–ޤ ‘9¹–/*Ž¡‘5-GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");Ž¡‘5-GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so");Ž¡‘5+GP;install("squfof","D0,G,p","squfof_c","./pari/...les/squfof.gp.so");Ž¡‘5+GP;install("init_squfof","v","init_squfof_c","./par.../squfof.gp.so");Ž¡‘9¹–*/Ž¡‘9¹–GEN–¹–squfof(GEN“n,“long“prec);Ž¡‘9¹–void‘¹–init_squfof(void);Ž©‘D²If–P,yš¸ãou“are“not‘P+familiar“with“the“Çdiff“²utilit˜y‘ÿ*ª,‘Q4the“abGo˜v˜e‘P+means“that“only“theޤ ‘5t•¸ãw“o–ÝAlines›ÝBstarting“with˜ÉGP;instal‘‚Øl‘åʲha•¸ãv“e˜c“hanged.‘ ŒIn–ÝAfact˜Ésqufof‘ûÕ²is˜still“namedŽ¡‘5Ésqufof‘žm²in›Úthe–ÙC‘Î le,‘Š{but“the“install˜command“tells“GP‘Ïto“rename“it˜Ésqufof‘‰ffŽ‘®c‘²inŽ¡‘5the–UUGP“session.ŽŸþ6‘5Ë2.3Ž‘SÀUsing–€Ìgp2c“Ëto“ nd“errors“in“GP“scriptsŽŸuT‘5²The–7Çgp2c“²compiler›8can“also“bGe“used˜to“ nd“errors“in˜GP‘"programs.‘V¾F‘ÿ*ªor“that“w¸ãeŽ¡‘5should–UUuse“the“-W“option“lik¸ãe“inŽ¡‘DÆ./gp2c–ÕT-W“pari/examples/squfof.gp“Ç>“Æsqufof.gp.cަ‘5ÇWarning:pari/examples/squfof.gp:7:variable‘?ýundeclaredŽ¡‘5pŽ¡‘5Warning:pari/examples/squfof.gp:11:variable‘?ýundeclaredŽ¡‘5ddŽ¡‘5Warning:pari/examples/squfof.gp:11:variable‘?ýundeclaredŽ¡‘5dŽ¡‘5Warning:pari/examples/squfof.gp:11:variable‘?ýundeclaredŽ¡‘5bŽ¡‘5...Ž¡‘5Warning:pari/examples/squfof.gp:45:variable‘?ýundeclaredŽ¡‘5b1ަ‘D²This–ï¼option“lists“v‘ÿqÇariables“that“are“used“but‘ï»not“declared.‘@üIt“is“impGortan¸ãtŽ¡‘5to–™declare“all“y¸ãour“v‘ÿqÇariables‘™with“Émy()²,›ªor“with“Églob‘ÿ}'al()².‘=F‘ÿ*ªor“Çgp2c²,˜undeclaredŽ¡‘5v‘ÿqÇariables–Óoare›Óntak¸ãen“to“bGe˜\formal“v‘ÿqÇariables"“for˜pGolynomials.‘F{F‘ÿ*ªor“example˜if“y¸ãouŽ¡‘5write–UUa“function“to“build“a“second“degree“pGolynomial“lik¸ãeަ’§À!Çpol(a,b,c)=a*x^2+b*x+cަ‘5²y•¸ãou›UUm“ust˜not˜declare˜'x'˜here,˜since˜it˜stands˜for˜the˜formal˜v‘ÿqÇariable˜Éx².ŽŸþ6‘5Ë2.4Ž‘SÀUsing–€compiled“functions“in“a“new“programŽŸuT‘5²One›dy•¸ãou‘eha“v“e˜successfully–ecompiled˜and“tested˜y¸ãour“functions˜yš¸ãou“ma˜y‘dw˜an˜t“toŽ¡‘5reuse–UUthem“in“another“GP“program.Ž¡‘DThe›ÁibGest‘Ájw•¸ãa“y˜is˜to˜cop“y–Ájthe˜install˜commands˜of“the˜functions˜y¸ãou˜use“at˜theŽ¡‘5start–¸of›¹the“new“program˜so“that“reading“it˜will“automatically“load˜the“compiledŽ¡‘5functions.ޤ ‘DAs–UUan“example,“w¸ãe“write“a“simple“program“Çfact.gp“²that“readsŽŸ‘5Ðinstall("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");Ž¡‘5fact_mersenne(p)=squfof(2^p-1)ŽŽŸ’ß²6ŽŽŒ‹E ª ýs o ý´‘D²and–UUrun“GP:Ž©‘5Çparisize–?ý=“4000000,“primelimit“=“500000ޤ ‘5?‘?ý\rfactŽ¡‘5?‘?ýfact_mersenne(67)Ž¡‘5i–?ý=“2418Ž¡‘5Qfb(10825778209,–?ý4021505768,“-13258245519,“0.E-28)Ž¡‘5%1–?ý=“193707721ަ‘D²So–Àˆall›À‡goGes“w¸ãell.‘@.But˜what“is˜ev¸ãen“bGetter“is˜that“Çgp2c“²understands˜the“Éinstal‘‚ØlŽ¡‘5²command–UUand“will“bGe“able“to“compile“this“new“program.Ž¡‘DAlso–†ìthis›†íparticular“example“will“fail˜bšGecause“as“stated“ab˜o•¸ãv“e,‘ÓRP‘ÿ*ªARI/GPŽ¡‘5already–çhas›èa“Èsqufof‘O¯²function,‘° and“the˜linkš¸ãer“will“pic˜k›èthe“wrong˜one,‘° whic¸ãh“isŽ¡‘5unfortunate.Ž¡‘DSo–UUuse“the“-p“option“to“Çgp2c-run“²to“c¸ãhange“Ésqufof‘sé²to“Émy‘‰ffŽ‘®squfof².Ž¡‘8ÕTÆ./gp2c-run–ÕT-pm®9y‘°¡‰ffs4Ž‘ù)-g“pari/examples/squfof.gpޤ ‘D²This–ÙÚoption“pre xes“mš¸ãy‘™˜‰ffŽ‘stto“ev˜ery“GP‘Ù¸name‘ÙÛin“the“program“so“as“to“a˜v˜oidŽ¡‘5name–UUclashes.‘qÇChange“Çfact.gp“²toŽŸ‘5Ðinstall("my_squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");Ž¡‘5fact_mersenne(p)=squfof(2^p-1)ަ‘D²and‘UUrunޤ ‘5Æ./gp2c-run–ÕT-g“fact.gpަ‘5Çparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?‘?ýfact_mersenne(67)Ž¡‘5i–?ý=“2418Ž¡‘5Qfb(10825778209,–?ý4021505768,“-13258245519,“0.E-28)Ž¡‘5%1–?ý=“193707721ަ‘D²Nice–UUisn't“it?ޤ ‘DBut–¤ˆit“gets“ev¸ãen“bGetter:‘-instead“of“writing“the“Éinstal‘‚Øl‘­²command“directly“inŽ¡‘5yš¸ãour–Â-script“y˜ou›Â.can“just“load“the“Çsqufof.gp.run“²using˜Ç\r²:‘(3just“c¸ãhange“Çfact.gpŽ¡‘5²toŽŸ‘5Ð\r‘¹–./pari/examples/squfof.gp.runŽ¡‘5fact_mersenne(p)=squfof(2^p-1)ŽŸþ6‘5Ë2.5Ž‘SÀHand-editing–€the“C“ le“generated“b y“Ìgp2cŽŸuT‘5²If›( y•¸ãou‘(ha“v“e˜some˜expGerience‘(in˜P‘ÿ*ªARI‘(programming,‘1*y“ou˜ma“y˜w“an“t‘(to˜man“uallyޤ ‘5edit›1îthe–1ïC‘1µ le“generated˜b¸ãy“Çgp2c²,‘ifor˜example“to˜impro•¸ãv“e‘1ïmemory˜handling.Ž¡‘5Here–UUsome“tips:ަ‘D¸ŽŽŽ‘N²If›~ y•¸ãou‘~ preserv“e˜the–~ Éinstal‘‚Øl()‘Üœ²at˜the“start˜of“the˜ le,‘ˆ6y¸ãou“can˜use“the˜com-Ž¡‘Nmand–pºÆgp2c-run‘ôÔÎ leÆ.c“²to›p¹recompile“y¸ãour˜ le“and“start˜a“new˜GP‘p³sessionŽ¡‘Nwith–UUyš¸ãour“functions“added,“just“as“y˜ou“use“Ægp2c-run“²with“GP“scripts.ަ‘D¸ŽŽŽ‘N²More–Šàgenerally‘ÿ*ª,‘³^Ægp2c-run“²automatically“passes“an¸ãy“line“in‘Šßthe“C‘Š­ le“start-Ž¡‘Ning–UUwith“'GP;'“to“GP“at“start-up.ަ‘D¸ŽŽŽ‘N²As–n±explained“in“Section›n²2.2,‘uunder“Æemacs“²y¸ãou“can˜t¸ãypGe“'M-x“compile'“toŽ¡‘Nrecompile–UUthe“shared“library‘ÿ*ª.ŽŽŸ’ß7ŽŽŒ‹P& ª ýs o ý´‘5Å3Ž‘MLËAdv‘ÿ™anced–ffuse“of“Êgp2cŽŸç‘5Ë3.1Ž‘SÀÌgp2c‘€Ët yp`esŽ©uT‘5²Inš¸ãternally–­ñÇgp2c“²assign“t˜ypGes›­ðto“ob‘Ž8jects.‘{›The“most˜common“tš¸ãypGes“are“giv˜enޤ ‘5bGelo¸ãw:ŽŸo³3Ÿ™³1‘Jname‘É៙œ„ ffŽ‘{RodescriptionŽŽ‘DŸ‰ffð³&Ÿfd‘Évoid‘;³Ÿ™œ„ ffŽ‘7Ro²lik¸ãe–UUin“CŽŽ¡‘Éb–ÿ}'o“ol‘Ä=Ÿ™œ„ ffŽ‘7Ro²b•Go“olean,–UUtrue“(1)“or“false“(0)ŽŽ¡‘Éne–ÿ}'gb“o“ol‘ t Ÿ™œ„ ffŽ‘7Ro²an¸ãtib•Go“olean,–UUtrue“(0)“or“false“(1)ŽŽ¡‘Ésmal‘‚Øl‘BŸ™œ„ ffŽ‘7Ro²C–UUin¸ãteger“ÈlongŽŽ¡‘Éint‘gŸ™œ„ ffŽ‘7Ro²m•¸ãultiprecision‘UUin“tegerŽŽ¡‘Ér–ÿ}'e“al‘©8Ÿ™œ„ ffŽ‘7Ro²mš¸ãultiprecision–UU oating“pGoin˜tŽŽ¡‘Émp‘ÕJŸ™œ„ ffŽ‘7Ro²m•¸ãultiprecision‘UUn“um“bGerŽŽ¡‘Évar‘1¾Ÿ™œ„ ffŽ‘7Ro²v‘ÿqÇariableŽŽ¡‘Ép‘ÿ}'ol‘ÚûŸ™œ„ ffŽ‘7Ro²pGolynomialŽŽ¡‘Éve‘ÿ}'csmal‘‚Øl‘ÕVŸ™œ„ ffŽ‘7Ro²v¸ãector–UUof“C“long“(Èt‘™˜‰ffŽ‘™šVECSMALL²)ŽŽ¡‘Éve‘ÿ}'c‘ÕNŸ™œ„ ffŽ‘7Ro²v¸ãector–UUand“matrices“(excluding“Éve‘ÿ}'csmal‘‚Øl‘‰²)ŽŽ¡‘Élist‘·Ÿ™œ„ ffŽ‘7Ro²GP‘UUlistsŽŽ¡‘Éstr‘~ŠŸ™œ„ ffŽ‘7Ro²cš¸ãharacters–UUstring“as“a“Ècha˜r“*ŽŽ¡‘Égenstr‘¬Ÿ™œ„ ffŽ‘7Ro²c¸ãharacters–UUstring“as“a“ÈGEN“²(Èt‘™˜‰ffŽ‘™šSTR²)ŽŽ¡‘Égen‘LÄŸ™œ„ ffŽ‘7Ro²generic–UUP‘ÿ*ªARI“ob‘Ž8ject“(ÈGEN²)ŽŽ¡‘Élg‘#÷kŸ™œ„ ffŽ‘7Ro²length–UUof“ob‘Ž8ject“(returned“b¸ãy“Élength‘Äc²)ŽŽ¡‘Étyp‘ÕLŸ™œ„ ffŽ‘7Ro²tš¸ãypGe–UUof“ob‘Ž8ject“(returned“b˜y“Étyp‘ÿ}'e‘À[²)ŽŽŽŽŽ "%ì ÿRÊã CV’ëQ ÿq¼ªgenŽŽ’ò_ Ÿ‚Îü„9ïfeŽŽ’ë ‰ŸŽ0ˆmpŽŽ’ÛÏ:Ÿ‚ÎüóäO£ line10¬Ž’à ) ÿ~–«ŽŽ’ÒŸŽ0ˆ²v¸ãecŽŽ’Çä…Ÿ‚Îü¬Ž’Ñä… ÿ}ÎüŽ’Ûä… ÿxÎüŽ’à ) ÿv½ŽŽ’ÁJŸŽ0ˆ²pGolŽŽ’DZSŸŸBÚ„9ïfeŽŽ’Á¼Ÿª¤fv‘ÿqÇarŽŽ’ùp‘Ÿª¤frealŽŽ’ù¤¤ŸŸBÚ¬@Ž’õjµŸ› ‰@ŽŽ’ÙdÑŸª¤f²in¸ãtŽŽ’ဟŸBÚ¬Ž’å¹ïŸ› ‰ŽŽ’×…ŸÇD²smallŽŽ’áLΟ»¶¸„9ïfeŽŽ’ÙzhŸãŒ"b•Go“olŽŽ’ʼèŸÏ¡m¬Ž’ÌtŸÎ@&ŽŽ’§LšŸÕR3²negb•Go“olŽŽ’ÌtŸà³¿¬@Ž’Ê¼èŸßRx@ŽŽ’áLΟØ*–„9ïfeŽŽ’ÙÁ…²v¸ãoidŽŽ’ï¹ïŸý'¬Ž’ò9ïŸó'Ž’ô¹ïŸé'Ž’÷9ïŸß'Ž’ù¹ïŸÕ'Ž’ü9ïŸË'Ž’þ¹ïŸÁ'Ž’$¤Ÿ·~¨ŽŽ’áLΟôžt„9ïfeŽŽŽŽŽŽŸ’¬_û²T‘ÿ*ªable–UU1:‘qÇT¸ãypGes“preorderŽŽŽŸ/b‘DT¸ãypGes–[îare“preordered›[ïas“in“T‘ÿ*ªable“1.‘…“The“complete“preorder˜knoš¸ãwn“b˜y“Çgp2cŽ¡‘5²can–UUbGe“accessed“b¸ãy“running“Ægp2c‘ÕT-t².Ž¡‘DV‘ÿ*ªariables–Jñare“tš¸ãypGed.‘nPA‘Jïv‘ÿqÇariable“can“only“tak˜e“v‘ÿqÇalues“ha˜ving“a“t˜ypGe“equal“orŽ¡‘5lo•¸ãw“er–UUthan“its“tš¸ãypGe.‘qÇBy“default,“v‘ÿqÇariables“are“of“t˜ypGe“Égen².ŽŸª…‘5Ë3.2Ž‘SÀT yp`e‘€declarationަ‘5²T‘ÿ*ªo–UUdeclare“a“v‘ÿqÇariable“as“bšGelonging“to“t¸ãyp˜e“Étyp‘ÿ}'e²,“use:ŽŸ{7‘NÉfunction‘Äc²(xÉ:typ–ÿ}'e²,yÉ:typ“e‘À[²=2)Ž¡‘Nm¸ãy(xÉ:typ–ÿ}'e²,‘UUyÉ:typ“e‘À[²=2)ŽŽŸ’ß8ŽŽŒ‹ Z‘ ª ýs o ý´‘N²global(xÉ:typ–ÿ}'e²,‘UUyÉ:typ“e‘À[²=2)Ž© ‘Nfor(iÉ:typ‘ÿ}'e‘À[²=...ޤ‘DT‘ÿ*ªo–UUdeclare“sevš¸ãeral“v‘ÿqÇariables“of“the“same“t˜ypGe“Étyp‘ÿ}'e‘°²at“once,“use:Ž¡‘Nm¸ãy(x,‘UUy=2)É:typ‘ÿ}'eަ‘N²global(x,‘UUy=2)É:typ‘ÿ}'eŽ¡‘D²Y‘ÿ*ªou–UUcan“evš¸ãen“mix“the“t˜w˜o“w˜a˜ys:Ž¡‘Nm¸ãy(x,‘UUy:Étyp–ÿ}'e2‘[²=2)É:typ“e1Ž¡‘5²will–UUdeclare“Éx‘‰™²to“bšGe“of“t¸ãyp˜e“Étyp‘ÿ}'e1‘°[²and“Éy‘7Ò²of“t¸ãyp˜e“Étyp‘ÿ}'e2².ŽŸþ6‘5Ë3.3Ž‘SÀE ect–€of“t yp`es“declaration“on“default“v‘ÿ@aluesŽŸuT‘5²Under–6GP‘ÿ*ª,›5all“GP‘v‘ÿqÇariables“start˜with“a˜default“v‘ÿqÇalue,‘Kmwhic¸ãh“is˜É0‘u<²for˜a“loGcalަ‘5v›ÿqÇariable–UUand“É'v‘hâ²for“a“global“v˜ariable“Év².ަ‘DThe–4Çgp2c“²compiler“folloš¸ãws“this“rule“for“v‘ÿqÇariables“declared“without“a“t˜ypGe.ަ‘5Ho•¸ãw“ev“er,‘€øwhen–Kàa›Káv‘ÿqÇariable“is˜declared“with“a˜t¸ãypGe,‘€øÇgp2c“²will˜not“assign“it˜a“defaultަ‘5v‘ÿqÇalue.‘B]This–Çmeans›Çthat“the˜declaration“Émy(g)‘%©²is˜equiv‘ÿqÇalen¸ãt“to˜Émy(g:gen=0)²,‘ãŠbutަ‘5not–Ùžto“Émy(g:gen)²,‘ú±Émy(g)‘81²is“equiv‘ÿqÇalen¸ãt›ÙŸto“Émy(g:gen='g)²,‘ú°but˜not“to“Émy(g:gen)²,ަ‘5and–UUÉf(g)=...‘qDzis“equiv‘ÿqÇalen¸ãt“to“Éf(g:gen=0)=...²,“but“not“to“Éf(g:gen)=...².ަ‘DThis–UUrule“wš¸ãas“c˜hosen“for“sev˜eral“reasons:Ž¡‘D¸ŽŽŽ‘N²The–¯÷default“v‘ÿqÇalue“(É0‘ ý²or“É'v‘²)“mighš¸ãt“not‘¯öbGe“an“ob‘Ž8ject“suitable“for“the“t˜ypGeަ‘Nin–Jquestion.‘u¨F‘ÿ*ªor“example,‘,HÉmy(v:ve‘ÿ}'c)‘_Þ²declares“Év‘زas“bšGeing‘Kof“t¸ãyp˜e‘KÉve‘ÿ}'c².‘u§Itަ‘Nw•¸ãould›0mak“e–/no˜sense“to˜initialize˜Év‘¢¼²to˜É0‘ê5²since˜É0‘ê6²doGes“not˜bGelong“to˜t¸ãypGeަ‘NÉve–ÿ}'c².‘; Similarly›±'Églob“al(N:int)‘º²declares˜ÉN‘T‹²as˜b•Geing˜of‘±&t¸ãyp“e˜Éint².‘; It˜w•¸ãould˜mak“eަ‘Nno–UUsense“to“initialize“ÉN›øã²to“É'N˜²since“É'N˜²došGes“not“b˜elong“to“t¸ãyp˜e“Éint².Ž¡‘D¸ŽŽŽ‘N²This–b’alloš¸ãws“de ning–b“GP‘bŽfunctions“with–b’mandatory“argumen˜ts.‘™This“w˜a˜y‘ÿ*ª,ަ‘NGP‘q|will–qƒissue›q„an“error˜if“a“mandatory˜argumen¸ãt“is“missing.‘ÆSWithout“thisަ‘Nrule,–UUthere“is“no“w•¸ãa“y–UUto“tell“apart“É0‘°[²from“a“missing“argumen¸ãt.Ž¡‘D¸ŽŽŽ‘N²This–UUallo¸ãws“telling“Çgp2c“²not“to“generate“useless“default“v‘ÿqÇalues.ŽŸþ6‘5Ë3.4Ž‘SÀT yp`e‘€castingŽŸuT‘5²Sometimes,‘¶:w•¸ãe›Žskno“w‘Žra˜more˜precise˜t“ypGe–Žrthan˜the˜one˜the“transt¸ãyping˜algorithmަ‘5can–\,derivš¸ãe.‘†KF‘ÿ*ªor“example“if“Éx‘p²is‘\+a“real“n˜um˜bGer,‘]âits“logarithm‘\+migh˜t“bGe“complex.ަ‘5Ho•¸ãw“ev“er,–UUif“wš¸ãe“are“sure“Éx‘‰™²is“pGositiv˜e,“the“logarithm“will“bGe“real.ަ‘DT‘ÿ*ªo–UUforce“an“expression“to“bšGelong“to“t¸ãyp˜e“Étyp‘ÿ}'e²,“use“the“syn¸ãtax:ަ‘5Éexpr‘:typ‘ÿ}'eަ‘5Çgp2c›{ܲwill‘{Ýc•¸ãhec“k˜t“ypGes˜consistency‘{Ýand˜output˜w“arnings˜if‘{Ýnecessary–ÿ*ª.‘)JF“or˜exampleަ‘5Éf(x:int)=my(r:r–ÿ}'e“al);‘“çr=lo“g(x^2+1)ަ‘5Çgp2c–Øç²will“complain“that“the‘Øælogarithm“mighš¸ãt“not“bGe“real.‘HMSince“Éx^2+1‘3í²is“alw˜a˜ysަ‘5pGositiv•¸ãe,›UUw“e˜can˜write:ަ‘5Éf(x:int)=my(r:r–ÿ}'e“al);‘“çr=lo“g(x^2+1):r“e“alŽŽŸ’ß²9ŽŽŒ‹ f8 ª ýs o ý´‘5Ë3.5Ž‘SÀExample–€of“optimisationŽŸuT‘5²Declaring–$vthe“tš¸ãypGes“of“v‘ÿqÇariables“allo˜w“Çgp2c“²to“pGerform“some“optimisations.‘a}F‘ÿ*ªorޤ ‘5example,–UUthe“follo¸ãwing“piece“of“GP“coGdeŽ©¡‘5Çrho(n)=Ž¡‘5{Ž¡‘?úmy(x,y);Ž¡¡‘?úx=2;‘?ýy=5;Ž¡‘?úwhile(gcd(y-x,n)==1,Ž¡‘Iÿôx=(x^2+1)%n;Ž¡‘Iÿôy=(y^2+1)%n;‘?ýy=(y^2+1)%nŽ¡‘D¿÷);Ž¡‘?úgcd(n,y-x)Ž¡‘5}ަ‘D²generates–UUthe“follo¸ãwing“output:ަ‘5ÇGENŽ¡‘5rho(GEN‘?ýn)Ž¡‘5{Ž¡‘?úGEN–?ýx“=“gen_0,“y“=“gen_0;Ž¡‘?úx–?ý=“gen_2;Ž¡‘?úy–?ý=“stoi(5);Ž¡‘?úwhile–?ý(gequal1(ggcd(gsub(y,“x),“n)))Ž¡‘?ú{Ž¡‘Iÿôx–?ý=“gmod(gaddgs(gsqr(x),“1),“n);Ž¡‘Iÿôy–?ý=“gmod(gaddgs(gsqr(y),“1),“n);Ž¡‘Iÿôy–?ý=“gmod(gaddgs(gsqr(y),“1),“n);Ž¡‘?ú}Ž¡‘?úreturn–?ýggcd(n,“gsub(y,“x));Ž¡‘5}ަ‘D²The–Å&functions“Ègsqr²,‘!Ègaddgs²,–!ÈgmoGd²,“Èggcd‘Å%²are–Å&generic“P‘ÿ*ªARI‘ÄÇfunctions“thatŽ¡‘5handle–&åÉgen‘ëI²ob‘Ž8jects.‘bLSince›&æw¸ãe“only˜w•¸ãan“t–&åto“factor˜in¸ãtegers“with˜this“methoGd,‘0/w¸ãeŽ¡‘5can–UUdeclare“Én²,“Éx‘‰™y‘7Ò²of“t¸ãypGe“Éint‘òز:Ž¡‘5Çrho(nÍ:int‘¼rÇ)=Ž¡‘5{Ž¡‘?úmy(xÍ:intÇ,yÍ:int‘¼rÇ);Ž©‘?úx=2;‘?ýy=5;Ž¡‘?úwhile(gcd(y-x,n)==1,Ž¡‘Iÿôx=(x^2+1)%n;Ž¡‘Iÿôy=(y^2+1)%n;‘?ýy=(y^2+1)%nŽ¡‘D¿÷);Ž¡‘?úgcd(n,y-x)Ž¡‘5}ަ‘D²The–UUnew“C“coGde“output“b¸ãy“Çgp2c“²is:ŽŽŸ’Üÿ10ŽŽŒ‹ r× ª ýs o ý´‘5ÇGENޤ ‘5rho(GEN–?ýn)‘)ÿè/*“int“*/Ž¡‘5{Ž¡‘?úGEN–?ýx,“y;‘$¿ë/*“int“*/Ž¡‘?úif–?ý(typ(n)“!=“t_INT)Ž¡‘Iÿôpari_err(typeer,‘?ý"rho");Ž¡‘?úx–?ý=“gen_2;Ž¡‘?úy–?ý=“stoi(5);Ž¡‘?úwhile–?ý(gequal1(gcdii(subii(y,“x),“n)))Ž¡‘?ú{Ž¡‘Iÿôx–?ý=“modii(addis(sqri(x),“1),“n);Ž¡‘Iÿôy–?ý=“modii(addis(sqri(y),“1),“n);Ž¡‘Iÿôy–?ý=“modii(addis(sqri(y),“1),“n);Ž¡‘?ú}Ž¡‘?úreturn–?ýgcdii(n,“subii(y,“x));Ž¡‘5}Ž©ÆÜ‘D²No•¸ãw,‘h´the›1¡coGde‘1 no“w˜uses˜the˜more˜sp•Geci c˜functions˜Èsqri²,‘h³Èaddis²,‘h´Èmo“dii˜²andŽ¡‘5Ègcdii².Ž¡‘DThe–e¼most‘e»ecienš¸ãt“w˜a˜y›e»to“use˜t¸ãyping“is˜to“declare˜some“v‘ÿqÇariables˜of“t¸ãypGeŽ¡‘5Ésmal‘‚Øl².‘RXThis‘÷w•¸ãa“y‘ÿ*ª,‘ ãthese–÷v‘ÿqÇariables“will“bGe“implemenš¸ãted“b˜y‘÷C‘öîÈlong‘“²v‘ÿqÇariables,‘ ãwhic˜hŽ¡‘5are–†faster›†than“P‘ÿ*ªARI‘…öin¸ãtegers“and˜do“not“require˜garbage“collecting.‘ÏHo•¸ãw“ev“er,Ž¡‘5y¸ãou–Ÿ/will›Ÿ.not“bGe˜protected“from˜inš¸ãteger“o˜v˜er o˜w.‘OTF‘ÿ*ªor‘Ÿ.that“reason,‘ñ¤Çgp2c“²willŽ¡‘5automatically–ö)declare›ö*some“loGop“indices˜of“t¸ãypGe˜Ésmal‘‚Øl‘þ²²when“the˜range“cannotŽ¡‘5cause›Ío•¸ãv“er o“w.‘­0Sometimes–ÎÇgp2c˜²can“b•Ge˜to“o˜conserv‘ÿqÇativ•¸ãe‘Îbut˜y“ou˜can‘Îforce˜aŽ¡‘5lošGop–UUindex“to“b˜e“Ésmal›‚Øl‘]Þ²with“the“syn¸ãtax“Éfor(i:smal˜l=a,b,...)².ŽŸœ2‘5Ë3.6Ž‘SÀTš yp`es–€and“mem˜b`er“functionsŽŸuT‘5²F‘ÿ*ªor–UUuse“with“memš¸ãbGers“functions,“Çgp2c“²pro˜vides“the“follo˜wing“t˜ypGes:ަ‘5ÆnfŽŽ‘Cç²for–UUordinary“n•¸ãum“bGer–UU elds,“i.e.,“a“result“givš¸ãen“b˜y“the“GP“function“Én nit².Ž©X‘5ÆbnfŽŽ‘JJ¥²for›Vhbig‘Vin•¸ãum“bGer˜ elds,–V­i.e.,“a–Viresult˜givš¸ãen“b˜y–Vhthe“GP“function‘ViÉbn nit‘I@²whic˜hŽ¡‘Nincludes–UUclass“and“unit“group“data.ŽŸW‘5ÆbnrŽŽ‘Kƒ‰²for–UUraš¸ãy“class“groups,“i.e.,“a“result“giv˜en“b˜y“the“GP“function“Ébnrinit².ަ‘5ÆellŽŽ‘E¨à²for–UUelliptic“curvš¸ães,“i.e.,“a“result“giv˜en“b˜y“the“GP“function“Éel‘‚Ølinit².ަ‘5ÆgalŽŽ‘HˆÝ²for–UUgalois“extensions,“i.e.,“a“result“givš¸ãen“b˜y“the“GP“function“Égaloisinit².ަ‘5ÆpridŽŽ‘NµO²for›Ddprime–Deideals,‘GÈi.e.,‘GÇa“compGonen¸ãt˜of“the˜result“giv•¸ãen˜b“y˜the‘DeGP‘D`functionŽ¡‘NÉide–ÿ}'alprime“de“c².ŽŸÆÜ‘DMemš¸ãbGers–UUfunctions“on“t˜ypGed“ob‘Ž8jects“are“m˜uc˜h“more“ecien˜t.ŽŸ ¯À‘5Å4Ž‘MLËCommon‘ffproblemsŽŸç‘5Ë4.1Ž‘SÀMeta-commands.ŽŸuT‘5²Meta-commands–ì(commands›ìstarting“with˜a“Ç\²)˜other“than˜Ç\r“²are˜curren¸ãtlyŽ¡‘5ignored–‡×bš¸ãy“Çgp2c²,‘”wthough“a“w˜arning“will“b•Ge›‡Öissued,‘”xb“ecause–‡×it˜is“not“clear“whatŽŽŸ’Üÿ11ŽŽŒ‹ xb ª ýs o ý´‘5²they–µshould›µdo“in“a˜compiled“program.‘‘Instead“y¸ãou˜probably“w•¸ãan“t–µto˜run“theޤ ‘5meta-command–UUin“the“GP“session“itself.Ž¡‘DThe–ª`meta-command›ªaÇ\rÉinclude‘j»²is“replaced˜with“the˜con•¸ãten“t–ª`of“the˜ le“ÉincludeŽ¡‘5²(or–ìxÉinclude².gp)“when‘ìyÇgp2c“²reads“the“ le.‘ 71If“yš¸ãou“w˜ould“prefer‘ìyÇgp2c“²to“linkŽ¡‘5Éinclude².so–UUto“the“program“instead,“see“Section“2.4.ŽŸþ6‘5Ë4.2Ž‘SÀUnsupp`orted‘€functions.ŽŸuT‘5²Some–ÜÛGP›ܸfunctions“are“not“y•¸ãet‘ÜÚa“v‘ÿqÇailable–ÜÛto“C˜programs,‘þ¼so“the“compiler“can-Ž¡‘5not–àáhandle“them.‘jIf“yš¸ãou‘ààuse“them“y˜ou“will›ààget“the“error“"unhandled˜letter“inŽ¡‘5prototš¸ãypGe".‘qÇThese–UUare“curren˜tly“Éforfactor–ÿ}'e“d‘]Þ²and‘UUÉforsquar“efr“e“e².Ž¡‘DThe‘ÃÔfunctions›ÃÕÉfor–ÿ}'el‘‚Øl²,‘àîÉforsub“gr“oup‘el²and˜Éfor“qfve“c‘Tвare–ÃÔcurren¸ãtly˜not“implemen¸ãtedŽ¡‘5as–YPan›YQiterator“but“as“a˜proGcedure“with“callbac•¸ãks,‘ZPwhic“h–YPlimits“what“y¸ãou˜can“doŽ¡‘5inside–UUthe“loGop.Ž¡‘DThe–Š¿Éforstep‘,X²function“is›ŠÀsuppGorted“when“the˜step“is˜a“n•¸ãum“bGer.‘.@If˜it–Š¿is˜a“v¸ãector,Ž¡‘5y•¸ãou›UUm“ust˜add˜a˜tag˜É:ve‘ÿ}'c‘æ ²to˜mak“e˜GP˜kno“w˜abGout˜it˜lik“e˜inŽ©‘5Çf(x)=Ž¡‘5{Ž¡‘?úmy(v);Ž¡‘?úv=[2,4,6,6,6,6,6,2,4,6,6]Ž¡‘?úforstep(y=7,x,v:vec,print(y))Ž¡‘5}ަ‘D²This–×is“not“needed›Øif“the“step“is“a“v¸ãector˜or“a“v‘ÿqÇariable“of“tš¸ãypGe“v˜ec,‘Eøbut“isŽ¡‘5needed–UUif“the“step“is“only“an“expression“whicš¸ãh“ev‘ÿqÇaluates“to“a“v˜ector.Ž¡‘DSome– 2functions› 3are“passed˜to“GP‘ b¸ãy‘,ÀÇgp2c-run“²at˜start-up“(using˜the“ÈGP;Ž¡‘5²syn¸ãtax)–iãinstead›iäof“bGeing˜translated“in˜C:“Éinstal‘‚Øl‘rm²and“Éaddhelp².‘¯rIn˜practice,‘otheyŽ¡‘5can–UUbšGe“considered“as“supp˜orted.Ž¡‘DAlso–B|the“functions“Ér–ÿ}'e“ad,–¤¡eval,“kil‘‚Øl‘K²maš¸ãy–B|compile“ ne“but“ha˜v˜e“a“surprisingŽ¡‘5bšGeha¸ãviour–-[in‘-Zsome“case,‘c\b˜ecause‘-Zthey“ma¸ãy“mo˜dify›-Zthe“state“of˜the“GP‘-#in¸ãter-Ž¡‘5preter,‘œnnot–[of›[the“compiled“program.‘‚ÑPlease“see“Section“4.4˜for“details.‘‚ÑF‘ÿ*ªorŽ¡‘5example–ÂÇf(n)=eval("n^2")›Á²is“v•¸ãery˜di eren“t–Âfrom˜Çf(n)=n^2².‘€ T‘ÿ*ªo˜read“ les˜atŽ¡‘5compile-time–UUuse“Ç\r“²instead“of“Ér–ÿ}'e“ad².Ž©þ6‘5Ë4.3Ž‘SÀDynamically-scop•`ed›€lo“cal˜v‘ÿ@ariables.ŽŸuT‘5²Currenlt¸ãy–OÇgp2c›O²doGes“not˜suppšGort“dynamically-scop˜ed‘Olo˜cal“v‘ÿqÇariables‘OdeclaredŽ¡‘5with›¦Élo–ÿ}'c“al()².‘ ǼInstead˜Élo“c“al()‘{:²is˜treated˜as–§an˜alias“for˜Émy()‘{:²whic¸ãh˜declaresŽ¡‘5statically-scop•Ged›UUlo“cal˜v‘ÿqÇariables.Ž¡‘DSupp•Gorting›UUdynamically-scop“ed˜lo“cal˜v‘ÿqÇariables˜is˜cum¸ãb“ersome˜to˜do˜in˜C.ަ‘5Ë4.4Ž‘SÀMemory–€handling“and“global“v‘ÿ@ariables.ŽŸuT‘5²While–3Ka“lot“of“w¸ãork“has“bGeen“done“to“ensure“that“Çgp2c“²handles“global“v‘ÿqÇariablesŽ¡‘5propGerly‘ÿ*ª,‘‚the–Œuse›of“global˜v‘ÿqÇariables“is˜still“a˜lot˜of“trouble,‘‚so“try˜to“a•¸ãv“oid˜themŽ¡‘5if–UUy¸ãou“do“not“understand“the“implications“on“memory“handling.Ž¡‘DFirst,‘Ýthere–ÿ¿is“a›ÿ¾common“practice“to“use“undeclared“v‘ÿqÇariables˜as“formal“v‘ÿqÇari-Ž¡‘5ables,‘ùgfor–âlexample“w¸ãe“assume“Éx='x‘°²and“write“Éa*x+b‘„²instead“of“Éa*'x+b².‘KySo“Çgp2cŽ¡‘5²will–݆not“raise›݇an“undeclared“v‘ÿqÇariable“to˜the“rank“of“global˜v‘ÿqÇariable“unless“y¸ãouŽŽŸ’Üÿ12ŽŽŒ‹ ‚á ª ýs o ý´‘5²declare–*Òit›*Ówith“the“Églob‘ÿ}'al()‘‰f²command,‘3Sor“y¸ãou˜use“it“at˜toplevš¸ãel“(i.e.‘cœoutside“an˜yޤ ‘5function).‘qÇSee–UUalso“Section“2.3Ž¡‘DSecond,‘‹Kglobal–MMv‘ÿqÇariables›MNseen“b¸ãy“a˜compiled“function“are˜C‘M v‘ÿqÇariables,‘‹KnotŽ¡‘5GP‘@âv‘ÿqÇariables.‘jøThere–@èis›@çno“connection˜bGet•¸ãw“een‘@èthe˜t“w“o.‘jøY‘ÿ*ªou‘@èma“y˜w“ell‘@èha“v“e˜t“w“oŽ¡‘5v‘ÿqÇariables–³Ãwith›³Äthe“same˜name“and˜a“di erenš¸ãt“con˜ten˜t.‘;íCurren˜tly“GP‘³›kno˜ws“onlyŽ¡‘5hoš¸ãw–Möto“install“functions,‘Opnot“v‘ÿqÇariables,‘Ooso“y˜ou‘M÷need“to“write“compiled“functionsŽ¡‘5in–UUorder“to“access“global“v‘ÿqÇariables“under“GP‘ÿ*ª.Ž¡‘DBasically‘ÿ*ª,‘]global–óÞv‘ÿqÇariables›óßare“alloGcated˜in“the˜main“stac•¸ãk˜whic“h‘óÞis˜destro“y“edŽ¡‘5eac•¸ãh› 9time‘ :GP‘ prin“ts˜a˜new˜prompt.‘–tThis˜means‘ :y“ou˜m“ust˜put˜all‘ :y“our˜com-Ž¡‘5mands–{on“the›zsame“line.‘ð9Also˜global“v‘ÿqÇariables“m¸ãust“bGe˜initialized“using“theŽ¡‘5Éinit‘‰ffŽ‘®Ç–ãæ²function“b•Gefore›ãåb“eing–ãæused,‘ú–and“are“only“suppGorted˜with“the“-gŽ¡‘5 ag.Ž¡‘DSo–UUy¸ãou“end“up“doing“Ægp2c-run–ÕT-g“global.gpŽ©–‘5Çparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?‘?ýinit_global();myfunction(args);ަ‘D²Note–TÒthat‘TÓnothing“prev•¸ãen“ts›TÒy“ou˜from–TÓcalling˜Éinit‘‰ffŽ‘®glob‘ÿ}'al‘][²in“the˜GP˜program.Ž¡‘5In–Euthat›Etcase,‘{Õy¸ãou“can“omit˜the“paren¸ãtheses“(i.e,–{Õwrite˜Éinit‘‰ffŽ›®glob‘ÿ}'al²,“not‘EuÉinit‘‰ffŽ˜glob‘ÿ}'al()^“²)Ž¡‘5so–UUthat“yš¸ãou“can“still“run“y˜our“noncompiled“program.Ž¡‘DAnother›ò’w•¸ãa“y–ò‘to˜handle“global˜v‘ÿqÇariables“is˜to“use˜the“Éclone‘²í²function“whic¸ãhŽ¡‘5copies›Dða–DïP‘ÿ*ªARI‘Dìob‘Ž8ject“to˜the“heap,‘H8hence“a•¸ãv“oids˜its‘Dïdestruction˜when˜GP‘Dëprin“tsŽ¡‘5a–Inew“prompt.›mµY‘ÿ*ªou“can“use“Éunclone‘ x²to“free“a“clone.˜Please“read“the“P‘ÿ*ªARI/GPŽ¡‘5man¸ãual–UUfor“more“information“abGout“Éclone².Ž¡‘DA‘“”go•Go“d–“æuse“of“Éclone‘TA²is“for“initializing‘“çconstan¸ãt“v‘ÿqÇariables:‘îéfor“example“inŽ¡‘5Çtest/gp/initfunc.gp²,–UUthe“vš¸ãector“ÉT‘©ó²is“initialized“b˜yަ‘5ÇT=clone([4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0])ŽŸ•‘5²Y›ÿ*ªou–)m¸ãust“still‘)run“the“Éinit‘‰ffŽ‘®Ç“²after“starting“GP˜,‘)but“after“that“y¸ãouŽ¡‘5can–UUuse“ÉT‘©ó²safely‘ÿ*ª.Ž¡‘DGP‘í'itself–íAcurrenš¸ãtly“doGes“not“kno˜w“abGout“Éclone‘­œ²and“Éunclone²,‘but“y˜ou“can“useŽ¡‘5dumm¸ãy‘UUfunctionsަ‘5Çclone(x)=xŽ¡‘5unclone(x)=while(0,)ަ‘5²when–UUrunning“uncompiled.ŽŸ±ë‘5Ë4.5Ž‘SÀSupp`ort–€for“ó&ñkAH cmssbx10Ñt‘ʾ‰ffõÆŽ‘À„VECSMALLŽ©uT‘5²When–C/accessing›C0the“compGonen¸ãt˜of“a“Èt‘™˜‰ffŽ‘™šVECSMALL²,˜it“is˜necessary“that˜that“theŽ¡‘5ob‘Ž8ject–UUhas“bšGeen“declared“of“t¸ãyp˜e“Éve‘ÿ}'csmal‘‚Øl².Ž¡‘DF‘ÿ*ªor‘Î3example‘ ¼ÓÉmy(v);››ûv–îŸ=“ve‘ÿ}'csort(V,,1);˜print(v[1])‘ e²doGes‘Î3not‘Î4w¸ãork,‘,jbutŽ¡‘5Émy(v:ve–ÿ}'csmal‘‚Øl);›2"v‘¨=‘¨ve“csort(V,,1);˜print(v[1])‘ ˆ"²or‘ )ŽÉmy(v:ve“csmal‘‚Øl);˜v‘¨=‘¨ve“c-Ž¡‘5sort(V,,1);‘“çprint(v:ve‘ÿ}'csmal‘‚Øl[1])‘Gϲw¸ãorks.ŽŸ±ê‘5Ë4.6Ž‘SÀGP‘€listsަ‘5²GP‘P lists–PLand›PKmaps“are˜not“fully˜suppGorted˜b¸ãy“Çgp2c².‘ÄA‘P partial˜suppGort“is˜a¸ãv‘ÿqÇailableŽ¡‘5with–éWthe‘éVÉlist‘Ü/²tš¸ãypGe.‘-ÌY‘ÿ*ªou“m˜ust›éVtell“Çgp2c“²that˜a“v‘ÿqÇariable“will˜con¸ãtain“a“list˜or“aŽ¡‘5map–' b¸ãy“using“ÉL:list‘á²inside“a“declaration,‘0Lwhere“ÉL‘&ý²is“the“name“of“the“v‘ÿqÇariable“asŽ¡‘5explained–UUin“Section“3.ŽŽŸ’Üÿ13ŽŽŒ‹u ª ýs o ý´‘D²Currenš¸ãtly‘ÿ*ª,‘í¾assigning–ÏBto“a“list‘ÏCelemen˜t“(ÉL[2]=x‘4D²)“will‘ÏCnot“w˜ork“and‘ÏClists“andޤ ‘5maps–UUwill“not“bGe“freed“unless“y¸ãou“explicitly“use“Élistkil‘‚Øl².Ž¡‘DNote:‘q'The–TP‘ÿ*ªARI›Tuser's“man¸ãual“states˜that“lists˜are“useless“in˜library“moGde.Ž©±X‘5Ë4.7Ž‘SÀThe‘€ó'F C– cmbxti10Òinstal‘´çl‘Í©ËcommandŽŸuT‘5²The–ùSÉinstal‘‚Øl‘ܲcommand“is“inš¸ãterpreted“as“a‘ùRÇgp2c“²directiv˜e.‘ ]ÁThis“allo˜ws“usingŽ¡‘5installed–UUfunction“in“compiled“programs,“see“Section“2.4.Ž¡‘DHo•¸ãw“ev“er–UUthis“has“some“side-e ects:ŽŸšî‘D¸ŽŽŽ‘N²If›ñípresen•¸ãt,‘Ythe‘ñìÉlib‘“…²argumen“t˜m“ust˜bGe–ñìa˜string,‘Ynot˜an“expression˜thatŽ¡‘Nev‘ÿqÇaluate–UUto“a“string.ŽŸMw‘D¸ŽŽŽ‘N²The–6Éinstal‘‚Øl‘> ²command“is“not“compiled,‘nGinstead“it“is“added“to“the“list“ofŽ¡‘Nfunctions–UUto“install.ަ‘5Ë4.8Ž‘SÀWhat–€ab`out“Ñmain()“Ë?ŽŸuT‘5²There›–kare‘–jt•¸ãw“o˜di eren“t˜issues––jwith˜Èmain()²:‘óó rst“this˜is˜reserv¸ãed“function˜nameŽ¡‘5in–Ä™C,“so›Äšusing“it“with“Çgp2c“²will“cause˜a“name“clash.‘A‰T‘ÿ*ªo“a•¸ãv“oid–Ä™this,‘áŒeither“renameŽ¡‘5it–UUor“use“the“ ag“-p.Ž¡‘DSecondy–kÒÇgp2c›kÓ²has“no“suppGort˜for“generating“stand-alone“GP‘k˜programs.‘#ñHo¸ãw-Ž¡‘5evš¸ãer–UUadding“man˜ually“a“Èmain()“²C“function“is“not“dicult“in“general.ŽŸ Äç‘5Å5Ž‘MLËCommand-line–ffoptions“of“Êgp2cŽŸç‘5²Here–D‚is›Dƒa“brief˜description“of˜the“main˜options“of‘ ŸÇgp2c²,‘Gàwhic¸ãh˜can“bGe˜seen“withŽ¡‘5Ç./gp2c‘?ý-h².Ž¡‘DIn–UUSection“2.1“wš¸ãe“sa˜w“ho˜w“to“use“the“Ç-g“²option.ŽŸšî‘D¸ŽŽŽ‘N²-g–o›tells“Çgp2c›oœ²to“generate“Ègerepile“²calls“to˜clean“up“the“P‘ÿ*ªARI‘oSstac¸ãk“andŽ¡‘Nreduce–¹¿memory›¹¾usage.‘ŸY‘ÿ*ªou“will˜probably“need“this˜option,‘ÒÙalthough“theŽ¡‘NC–UUcošGde“will“b˜e“easier“to“read“or“hand-edit“without“it.Ž©Mw‘D¸ŽŽŽ‘N²-oÉ le‘̲tells–RpÇgp2c›Rq²to“write˜the“generated˜C“ le˜to“the˜ le“É le‘̲instead“of˜theŽ¡‘Nstandard‘UUoutput.ަ‘D¸ŽŽŽ‘N²-iN‘þPallo•¸ãws›þgy“ou‘þfto˜c“hange‘þfthe˜inden“tation–þfof˜the“generated˜C‘þP le.‘TÍSo˜if“y¸ãouŽ¡‘Nw•¸ãan“t–UU4“spaces,“just“use“the“Ç-i4“²option“with“Çgp2c².‘qÇThe“default“is“2.ަ‘D¸ŽŽŽ‘N²-C‘ئadds‘ØÉcošGde–ØÈto“p˜erform“range“c•¸ãhec“king–ØÉfor›ØÈGP‘ئconstructs“lik¸ãe˜Éx[a]‘æK²andŽ¡‘NÉx[a,b]².‘öèThis›¶also‘µc•¸ãhec“ks˜whether–µÉx‘µú²has“the“correct˜t¸ãypGe.‘öèBy˜default“Çgp2cŽ¡‘N²do•Ges›È×not‘ÈØp“erform˜suc•¸ãh˜c“hec“k,‘%¸whic“h˜can˜lead‘ÈØto˜a˜run“time‘ÈØcrash˜withŽ¡‘Nin¸ãv‘ÿqÇalid–÷ÜcoGde.‘Y]This›÷Ýoption“causes˜a“small“run•¸ãtime˜pGenalt“y–÷Üand“a˜large“CŽ¡‘NcošGde–UUreadabilit¸ãy“p˜enalt¸ãy‘ÿ*ª.ަ‘D¸ŽŽŽ‘N²-L‘Ç–adds–dzcompiler“directivš¸ães“to‘Ç´the“coGde“so“that“w˜arning‘Ç´and“error“foundŽ¡‘Nbš¸ãy–…0the“compiler“are“pre xed‘…1with“the“line“n˜um˜bGer“in“the“original“GP‘…$ leŽ¡‘Ninstead–UUof“the“C“ le.ަ‘D¸ŽŽŽ‘N²-W‘(™is–(¤useful“for“debugging“the›(¥.gp“ le,‘1”in“the“sense“that˜it“detects“if“someŽ¡‘NloGcal–`]v‘ÿqÇariables“are“undeclared.‘’ßF‘ÿ*ªor‘`\example,‘cif“the“ le“Çalgorithm.gp“²hasŽ¡‘Na–UUroutine“lik¸ãeŽŽŸ’Üÿ14ŽŽŒ‹ží ª ýs o ý´‘NÇradical(x)=F=factor(x)[,1];prod(i=1,length(F),F[i])ŽŸ‘N²The–'‡v‘ÿqÇariable“'F'‘'|is“undeclared“in“this“routine,‘0±so“when“running‘KÇgp2c“²withŽ© ‘Nthe–UUÇ-W“²option“it“prin¸ãtsޤ‘NÆW‘ÿ «arning:algorithm.gp:1:v‘ÿ\rariable–ÕTundeclared“FŽ¡‘N²A•¸ãt› Épresen“t,‘³¥an˜undeclared˜v‘ÿqÇariable‘ Èis˜tak“en˜to– ÈbGe˜a˜"formal“v‘ÿqÇariable"˜forަ‘NpGolynomials–Þ.b¸ãy‘»Çgp2c²,‘@dso“do›Þ/not“declare“it“if“that“is˜what“yš¸ãou“in˜tend.ަ‘NF‘ÿ*ªor–zexample›{in“Çpol(a,b,c)=a*x^2+b*x+c˜²yš¸ãou“m˜ust›{not“declare˜Éx‘4¾²since˜itަ‘Nstands–UUfor“the“formal“v‘ÿqÇariable“É'x².ŽŸ‘D¸ŽŽŽ‘N²-pÉpr‘ÿ}'e x‘Ý­²A‘©Sproblem–©iwith“C‘©Tis‘©hthat“it“is“sub‘Ž8ject“to“name“clashes,–¾ni.e.,“if‘©iaަ‘NGP‘&v‘ÿqÇariable–&)in›&(y¸ãour“routine˜has˜the“same˜name“as˜a˜C‘&sym¸ãbGol˜in“the˜pariަ‘Nlibrary‘ÿ*ª,‘¥Hthe–bcompiler“will›brepGort“strange˜errors.‘˜So“this˜option“c¸ãhangesަ‘NALL‘Âuser–îv‘ÿqÇariables›ïand“user“routine˜names“b¸ãy˜adding“a“pre x˜Épr‘ÿ}'e x‘62²toަ‘Nthem.‘n> stream xÚÕYKoÛF¾ûWðHåvßSa»n›"ÜÆiI4EËDIQ%©¸ú÷}"%:F‚8¶éåìîÌ7ïÑÙÕÉ¿…(<ºº‰(!ˆ IÉÕ2ºZFïãÓõ"a˜ÆÅzAeÜ5õ"çr›uE>uõâãÕïpšŸF˜@DòûsVš2ÁEFjÉ RFG ÕHê©Ïvp4ÜsV”¥}SñiYÖÕ‚êøÐqÞtž"]/ýËiSäöÒÒ¥YÞu…½2I{Cœ‹ Ö¦)J¿‘ˆü6Š)ö,R`‘#Æe`D‘˜F §È`ãO8ñ‰»Ü?Ú°SGI¥ÝˆáN”h¿ƒ,CEü÷mjy×,.úMf´Ih$`Çl““)F†’žè'€Dp¬áG:¦L@™ÜÂa8AÀ Á”ƯÖm—–e±^Ͱ"%2г2áÄ ,dOƒ‰Àø»>¸1ßî0"4é àv`L4J½FOg°£ q*R#GjðnÛÕM‘‚URVÖ³1á‚Þ'ʤƒ2«­áßq1g©uOÆâWþ‘Q\W0{çžÆ;|l¶\LÅ;ÿÞfM±éZ°.£Í7‡ú>à­×LÅ£_+Þ²hò¬+ƒ8wEw;£(VN {ÀÊ­¿Ñ‘¿q-¿í:`¸&!Ú…×C|XÀç];ïÆÂ2ÿ€|ñù@Ý!öî-„CÀmê¦õëE€þ×Kÿ-Š¢ìûø·CEzT”Í3ô>Å›Œ3<˜üÍvírØL©§]çwþÿMS¯š´Z$ŠÇ£·zÙ z«'MòeÑ9XÜÝû>ß«©Ìýû*_çMÚåAk×ÖcvsV¯2ü!«ˆþȱ0`±š ¹b( WyX¸ËO iÃWæ·àõ­ ¹O­õÍœÐ#Í Êd 2°ž ÃPJ`f¦*cˆÌå(ÿ"ïs:Ûø2§µåyмúéuÆúµwb˜'fCä¿Cb{ž•)Xº«B¥QÌë#>F0àCúÐ~>Î —yÙÁ¸} 8°»6Áůû7é¶ìü?ŸBÄ©M•[»Q<‚‰9±Ì¼Xü~½fië#!òéuóm,êsPôaþâ¿´Ú”ùTÁõ¦+ª¢ Úü\Íñ,LŸ`“àyAåœÎÛƒ:´Ê'=ÞQ¦ÖüŸ‹Æ½´d¶Yà\ù´Wà>u×Uå\R»ÚâºÌ+ã)4›Ãaã³ú£Æ`ò¡â“wiuM¶À“dæ»ÉÐÃrˆ©àݺÝn¼õÔMwTÌÁ1*ƒç’â>#çl³Ã‡ˆÿónVE½ù.i³:øK·¬Ý¿™m÷ášG0' “òéüÿÁø`²UÝì¼ßßBGâe9”èC X•õõ}Òqòäé÷Û‘9c¬ïÇ YI$…Úy@qrquòàˆ@¥ˆ‘0:¢J#Æ¢¬:yÿGKø·#_îeAI© ¼•ÑÛ“?NÎì$orD$´r'Fü]œ¿}súúõqˆI¥Ÿb„ó¥Á–…>˜C{DÌ¡Fú Ó·¥eÑ7¶7•F¼Àâðë:2VÕ'_h½i’‘p(4÷Âá\—ÇÆÂÂz  ©ì_ñUsƒ 1 cÁIÉÄ£da\kG¾,©·Ýœ{Ĥéq©Òbý dC6š%1C^(vGuH6íÙž𱣠ö}¾éç/šßÓ°sˆ¢4ìv,†õ@5°6â3FÜ6ïPQÉa$OÈ~&¯Ä0“·?fìwk„R3|Lî ‰‘bç„€¡0[oe[€©nÛG¤uzA¨DRv0©ÙÿËMê endstream endobj 17 0 obj << /Length 2631 /Filter /FlateDecode >> stream xÚÅYëoã¸ÿ¾E€¨ D´H‘z,PöÚî]ÚbﺗEQôúA±i[YrõØÄùë;á^6çŠõ ©Ñ3ü̓ãoïß-?&7)K#ÝÜonx˜²XF7q1.Ò›ûõÍ?½û^øB)oŸå%RÒËÖ_0‘• ‘xm¶µ Õ†^¯«¼ÜÒT»Ë¢è)½¶¢qs€gâi½¦qw ÷«jèڬͫÒ~™•–¥]pÏ~—«¢[ëÅ¿îÿ|ãsÉR)áÉYªíúˆ[«ºzá‡<„¯`ôTÒ ®º6/uC£§öhß´¨*‡Zëç¼i8ñÝVP {&î5láË0öîZz³Ïp# ²¢©ˆú9à÷ôC·µ‹ö ‚XÔ ˜ï½YÕù¡…ðÝL¹¨?´fÂF³ÕBÄÞãBEž9œü9Pˆö‚Õw´o¤‹¬ÕMK¬_qÓFŸ$r²2÷Ê~äqb_e%tx4¨Z€$ŠÏ¬h2&_>ÿõ=ª²üÁæ<¶]ÛÞ/—‡¬ÎÙ>kw¬óªz­³î™mêåºz*‹*[³]»/~³=ˆ•ß’Áœ"fI’LÎ`÷œ åÝ•M›ZÅ|Æ£égiÀ‚8¯ÍW£ð©‡ø–Éç ­ƒ|Ø´qfO@Ã=’í-l-€F8Úa Îc– 1]Ý'¶PMØ8¦¸žÙ‘½8„íyÏu(‚xÀd4°´!Љ°ÏÚ¬fÛ—s{È€q9ˆAà=ítm ù„3,IÇßoâ„«F=:þ¹ ž2•œl|*#fq"û÷kmà ‰º¯LÂÉÍPW•3ÈJëuAÁK¯mL!<ɺw£qþÞ™ŒÃUô¦+_òÉt 3‰áçä5DÀ=¨ÞûÌT·“@±í¥'á 1Ñä“(d‘ræÄî*Tg€™Ê«ËS³Ïd„, £«€ñ“ˆEBÍõ°ñ,ˆÁETä­j qŠfÉ40Yê'š¹ìG"dOÞäGüM~$®ûÑ57âS³8P€ë<˜W"ï“~nIév ø ÒÐ8±™(þÜb‡¤tKˆ"aQÏ->g2dCÈ›ƒñüˆãˆ¥I:hëÒâb îw¨«mí]PöSÅžl+« ÍþóWTasÛ Súßîè*¸ã_nWjàLbž©?U­~xÿX€&tŒÒ&ÒÀd ó¤„ZûðiõÁ¸„¢| SU¹ÒDÙcê»O_\ H«×Ï Âd<°<ôµ ÈìÊ\êýîÕä )X”ÈKùò¦“Œ!Jñôÿr’î0•FL¥Ò¦@_œÌ¼æÖy­WmU]Q)™àñÿ0»ÿú¨4Uüxx ÉMD÷´ËWˆ‚Õ°²Å}^Z5 𕹸*ÎB)^¯Ÿ :‡£ÇÚàÃlj†ã§@úDŧI~-çæTæ¤U‹Uµ]jpP‡i°žEʱ¼œsÁj%S»®6[G±ÄY"ÃIœO"iA5‘o5ñ‰¡ÐFŽMÕaQ¾¦Q^Î6z?¢>ßѨ‚OáVð €Ò^“àvÎÃÓˆYc+sÓB[õ× kI*ííµž¿…ûîöyYä¦X_^6ëªC]@rU“(ÂûêWë"9,5&¢y–pA®` à4âqTŒtë¸Å4]m)ÂéDyë|ÊäsîŽ ‚B*Jæ–+JCÑ>‰ôc£Á‡å Ž0̺7à:–Ï]銰P‹!-°å `.·]_ÓO™„c!'qD >#Òä*´!RÎêé› BA=~að+-~ƒY Nø¹”V{M#È™º&„CNÒ“’bÔÀôÐ75! ” ±s1q%á5GÈÀ{ã¢Â»7^ ±eÆnc ˜@aEfðn/.#§!‹G@ì³ÇE(<‡!i<10JÏÆ«LÊÎò.Ù2èwèHÓá‚ âa[-987¨I‰ñORüF @@€Ä’Øë ˆ,ŒÓ3e| Ie…ôN›Ç£# ÁyEc¶®hE{ðùæHë¶»¬/etéhôå?bÜA‚»¬!b[•š(ÓˆhdHbO¦4” €ã‡¿üÎJhvUW¬Úf#u¼"FÒÈû`,ŒÜ$ k8OG“_èV6ö¬ÊuV¯om¥\Ÿ]:!@×6<–cZ =(FÖÇ“kgã ›•Hy%lÓF„ÍͯïB\H˜œÄ ÷Ò ë.yµ8P#l4JÝÔÕ)cXjLá`’À C >x¤g;|× Z’З¾8/‡æÐÉmPÎOôŸb}¬:ÎQ®«qƒÌÖ²!¨EïSÜ»ÛÐüpÞ8XWô,«–ˆ1üà Å˜ËÓQ]œµžk´éùèI6DÊU…ŠÍÝüõ¦ªø¤rRG(®Ô›É¬jŠ< °dRöíªiûºÿˆŒ&cÌ,åÉè•Mþb|Yy¿§ÜNðwK£Cïu‘ïÑ,&ex\ ÿ†Hm¼ƒ€³Æ<ä_nþe=V”²ªGplCå|ïþtÿî?E†÷¯ endstream endobj 22 0 obj << /Length 1304 /Filter /FlateDecode >> stream xÚÅW[oÛ6~ϯðŠÉAÅð&JÚ0 kÑvé6}Hó K´­E–\‰ZæýúêPŠˉ‹v˜a@‡â!y¾ïܨ‹‹«×<žÅ$V\Í«ã’D”ÏBªƒ™E6»ö®%‹oæ7‹gtæ3Fâ À‰|î<ð¾ÃG«)¥ßVË4 L΃ç¨ÊBG’¹‘Ï“A?¢ä•Ï#XÂF»)ÜíÉT a5¯^G@`‡e,Äe?ióu3÷…ž©÷V^‚ãe¾^ëeýw²ÝúÜoÄŒµFÜÙñ=žß|lWÕªÃÇ9%XP1‡ñGÈ52B$”Q"Ï_^^Î}„g6y÷ÃïoÝ&IoQ¬þÒõª¨î~5uVÚÖµ.ÍÑÚ&ÿPv¢$…Ÿ—{£›I‹7yinPk_µ(¤I‰B^¦µNgê›wG‡ÝåfƒRRUš½Õ[ËÙÀ?âaLñ©5S÷>©Ë¼\;ŒYÕ. Nòð-Š¥¾;švQ ½°‘ ›ƒ/“S.?„”ÁÙ(• åT¹|œq!b÷))˜qÄ¢>)… y( üÏKwø3>:=”O'f—GnÝûyi7‡x@g(%ø(’zíæ¬Sæ<ònq¸„Gh×1ˆÃ¶Ñý[ÐØ£œéUÒf"“YÅ8XÒY°ÞñôØL.H8¨d•ÝÓƒä@;+ƒÂZ—º†ÐÄQŠZ™šnH½MRf…Æá”¨ƒcêº,¯b´Cë¥û¹ÊO-ZÈ ©3WÐCPT’ ¾¥k½ËñØ10Je¯7ØlýJæ¾ •·°.©ðؼlLݦS4F‚Ð(x‚EI ¨zã6M²lb?ÁH¨Î ÂÃ#û‘_Rõ€ß¤5Õ61y Üí-6hÁ¸wg¹¶ôÒÐÛZ¹m Žº€²‚¥-=´r‘@Z÷6øëc#'Šª^£Ú™¼*-½ByÌYÇ.lÿ±ÍMPÞ dë§}6ºi` „P(’¶„ ½+H,E2&Ø8Jô® Ù®V•;bûÊ_[kÀ¿nÜTGFQ> stream xÚÍXKÛ6¾ï¯Pƒ5—oJÚ ’´= ²@IZ(² +KŽÙM}g8”lÙJ´‡vk>†œ÷Ç=¹½ºy–D)K­´Ñí6*eNÛÈqË„L£ÛMô:¾Ý•Ýj­”ˆûr_àHÆeO+÷+™ÄM{×ÓµˆËPnhcS¾áÂæCÕãO´8teýžèú]‹m†T~ÒõY¾’.¾c«µÖ*þm•¨¸˜8»¸€Wµ¡;ªò//Voo‰ÖB³Tkø,5†4éQgã; (ïqfâ]ƒW…É7ÏuG+۬닖’˜°˜7ûCYZÎá^8¶ ›íPw×0LlÜ¡AZ¾'éü‰ºÏöa·j²Í“º©½.|®ÅÄönž)qâ?-·xÂîðm¶DvêeÅ™Un¤ÇèÊUÅe¿:~þâ;:1p<·v’9.£µiDBǯÖFšøPº¥á!kË›â!Ûª¢»!!ØûƒWEp¦­˜ëóèÑ#°’…‡ºx8y¶Á›ò]Öf0m¿£9Ýõ†^Ã?ñ}éÇewh!0§åë¶è‡–Ø¥Š)?Kü~_/ü]Zi-¹bi¢‚ºŽÿ¶óüÕN’ø ú·È³¡+Üá4³Bü­;brZVµE¶Á Iàæ‡²ë1·g­e5ý–5¤GE1ÓíPç}ÙÔ¸ËÏ_Ðo[lAÆ.ä7Ìó™Y| ZûÔøècµ½o˾ å²‡$4ÊÆ·˜„¶kªcTô'¤€Ñ¡mÞUųÀÉcäÃÎ}YU4Ê6›0— ˆá*ÏA…d€…:Û‡Ø0p+¾˜>¢OÌqpQo|6û(_%:f4y9¦,aöꦣdQÜöpð_ŒirêÏ3yØÍûƒÌ× è ¯ò€ïÚ;ãêéíÕ‡+Œ‰HrÍÀ9‘q K¸òýÕë·<ÚÀ&èÉTšD÷žt)¦}WÑ««—WOÉgRHî˜ÑÒ_eyˆÞœD˜2£÷2KÏòÀ:æR;Wê× @•>ìÔØjŒw–ŽHÑ‹›Ùö… ”°LêÈXË#¾d é™ÎM0Ï«”I0¼Éy´€:õlsMRu ­Nq kyÔØ4KP(RÍ´t8`© VA»v埡Õ÷ô£¹ÿ»àˆPU•{ ¶"ãifálÿ ¾žÅ^8ü ¡a6=Ã^|ÑÛ™$"ð4m<œÈX8üø•…{k8c¸N„N]:]p&ØkÉ…ro?¿Ì¥´6o—ÌRÎmlµÓK—½Ü¾CÁ”R©T¦áZ¡Àœi"’0€TsV±~¦Y¸lå0{”^h­ÏŠW G Ú)±âË<÷Î<©^g¡q‚±òWq=•¯öI £ž²5ë¦JÖÅEU±àxÈ'¢¤ÎÖ@f`ñ*K’ð™G2xK…÷À£Cßrü—‚"ÿ<ûòA“MÙB»^} 80{=?aOùIi˜Pæ4c–Ä’€O|Ê—ÇK¹ÆÏSБ‹„©Qîc,Ø“ ~lõ¡™ MåQ+OuÀC“ó¤w‚é9x^Ê ¥Gš‘Ù€ '¤´OFàw¿Ë‚8»ìÚȺó͵¿pQÉ–:3ÇÐn× UWj)«pöÈè²)]zj©3]j ý—‹Îpn V‘“Æ?,ðM!ÊçIƒ‰¾`¼5´}Ü€o•aZèÐc†ýÛû% endstream endobj 29 0 obj << /Length 2113 /Filter /FlateDecode >> stream xÚµX_sÛ6÷§Ð¸3 •˜I€$èÜuzm\n&=_£™>´Z‚-6©”ß§ï.vA‘íæfî$üábw±Øýíß-Ïoô,Y%³åí,”™HU2KƒD„Q6[®g¿xËMÑÎ})SoÕ˜¼3s?ôx"§æ× T¥Á¾öÚOûÛúVÜíÄŠ>µÝÆÌ[þcñø$Æ™âY@¢îvÑŠˆ†ZEJDZ:šuјUW7s-=1÷Uœx?ÖóH{¤(¹v"Is=Ð0õŠnƒBf~˜i¥)tB‘Å1ñDVõ¾AbéÝæó(õîí\St†fͺ „å*‘)5æ±Ü0!ÊmÚÊ+‹Š§I-émŠ»MùH_ÛǶ3[mvsDšjm*”Ý]í;£N»©÷åš'V{†9Û¢ÌYñ®¾$KJ=Ó`ÊD¡)}§mˆXiÒvñÒéÏý8нU½Ý¥ñ¡ÝæÕú’fÏû¶YÜÕânµ¢)ßµ5µ»¼)æs¾Ý•¦]œ ¶6Ê„ c€‰Ø«üJæðs^–Ü}g•õ*/Eµ*÷kó<{ë-à#Ö_M‹&´þmÛzŠŸßnòÆ€ÅÃ8}f§ç¯Y˜sqêűˆÁóý(ëQd…‘çÚÎ:tøpz•±A·ž‡wìtW÷´xhŽƒãõ=5½ëãÇšVækðŸß! N‰mœ ݃÷ }ÄDYà”hhdUÇ,­¸WS»Í?ÎÉg-!5ÎÂØ/‹Øh“C„Û1éÁÌIELxïné/ öíâHØDšENÌ6_µ˜÷D´}©‚ÁþúÖ¡ÈÇ]Qݱtê½xïÆ^âLò‚æ tsœÿXÕØ4Ê)†kÞ0æ„ìÿ*Õ4Ûo‰ÓÔû}ß2ð–5Íuw+ÌÈqj (‚hMÜÖ2ݾ©N $ÁŠAÊÖ±uxË„Œ¾ŠD˜ÆO@ckVµuðcd<Õèàw™°SÈè«@üņ%þ‰Í7§Ú¼6ž ~“:‡q(Ý/f£'@ ŽrÇuir‡U®ÊWõ AmÃõðXÝ©c† ¤'ò¿ôL-â$;òLÆÐêH«1$o)ìóÒmT"’Ñi’2‹m–…”ue!ëw(X¨âyjc{w‡áz·hÛ­Ó >4K°¼®ˆ¸FAD µÌßÖ ïÈLÛr,èç–ÅElì f¢¨qƒ< êP0ŒÎ,à;¯|{õ#U€ä™³ýTuAmYcqn/~Yô@‰ûºXÙ Ó#CüðäªÅË«Š—A`°”º«»Ç™JùÁä0SýÁrÀÄ÷Ô·aÑÎ P.¼Xd§ÂÚ ^.Ê€¬1ö†Ð/tŸEíáÕ‘&qïëO"hÊN½p6yƒxX»W “SR¢ëV™û†kçÖ\p iº\CbÖ¾Òê¾k˜œå¸î((6Æár$áV?žZÙ—Š(J…Žäóè©d:FÏ‘äP `d•DŒž,Ú¥G«ù8EN%¸j%‡ ë7ÛÌD útD¼¢þydì~Pj†B«#ÀìÓWIG\äš½;Êfë|EÚ0TõOPDøreøŒŽžåAJ‹;ÿ„ÈÓkz9±-ê’AðÚk°:’¤å„ F—Ž`tÝð}!Ì'–{¾^¾17Ô‰jCy©Ô¥Šx6¢©’ÿÕ«WCάT—pŸÿSÞÙó¼¿ý–Ÿ›Â M½W}¾á ¼¢§ãUÿÿ·>ªÐ~xõþÃòêú¯a tœò>ý»ÓÀŸ«Ú‡ÛsY¬0©„¾Ó¯‚yúв>y,×_´-pÒãwAý¿|Äð ݈ª-Ë9vÐôáZÁ endstream endobj 33 0 obj << /Length 1788 /Filter /FlateDecode >> stream xÚ½ÙŽÛ6ð}¿BØ>DÞ¬iQ¤®¤ дÉ"}hSt‹<ä‚,Ék!º"É{ü}g8¤,Ùr“Hl‘ÃÑÜõüúlõR„VÈ"ß—ÖõÆânÄ<'²Çg°¶®Së­ýC^%Å.ÍKÏõ웸ÍWøÇ¶ÏﯳkÉy}u¡ KÉ'˜-¯^?Í«®‹âã9çÝçݦޜ_žÿê\^]6° L±Xe÷qÙY·¢vÓ°®>‡—ùÓ9Þ‡ ò*ï?4oá7…h.Œ±¯dðø+5ø˜L¨½¿Eƒ=—Ñ`Æ« ë W/~'!d?€ªKzuuC«¦Í’“ZÜÖyJh#i‘  o­^†V±çú*öæ @A:¯6‹¥Ü~X¸¡]ïpãÚq›´ª{Zlâ2/ò¸¥ó»¼ß¼ßfÄByÄHDÌ÷#YñHóÍæXW2×u ήú= ñ°…}¹'O­KnñO XfqÕJ¿µ°uU1¨`žäF‡!°À1Ü.ŽU–ãBôm<ÑØ$¸ÞÆÕM–²ÅÒw¤ýª"q6qÒÏ à0/ô EŠ‚c¾‚3î+TÌ‹‚Wq™¥3ôÁæ’I7˜Úí$‡…Π^Ž¢{Žö!,~¡Ç;‡Ë"C{Ò^ïú,š´I게«T£dEÑÑòê5(šr(íCÁ\•¡9ƒ•ŸÍ0…`‘Ñ4é°{&3Ô–®N›Ó›¸­ ZŸœéIðäNâu¡'§]•fIÝ+ZæHÛfø%œ4ý?˜L€þwᱞ ô_Ô“Þ·±æ3£‹‰ÞQt\oU'‹ä>"ÙÐõ|»ð|[3Ö †°¢'&ß#ÓŒDc@Œ˜ØAîWløæe•#€$À¢×ÓÆL®©bâ;†$mt£‹pü2»–v ¸70OM а8r°|ÀÇ¿™šC€*7ö_ß§òtš¼ä,”ûZ[Ôë…‡…ó4á2'Rž¡¿÷•p¦˜ã-(üB1‡2³µà!´t#nÝ©Éüï‚Êò¸èãOªW¸¥Rà¡ ðrS·%tx8¡wN° Z‘P‹‡ª.sh-تK›p„­sƒ6ù†^4“÷L&ܵy¯kzLµ~³«SùÅ<׻ܴŒØŒI]iPšÝ´™n$:^”º@ÿÈu™)óÍB™sÏÔÒZÅ@|¹¾Tw”Ÿâ‹ûîãõÅýã.§4tþŽ®Ò.q³ëzYß;Ä([çÑý#‚n³V °„i&Ñǹ~æÇ*íh­Ü3é Æ¡¸çÙLô ˜®÷ýí~fž‡ÉŽïc}f\‚ŽH00Ñ4šiLN¦15é)EOQÆÑƒTL*»£…9ŽEs¦£ÔªÏݑѹ8¼Àq·KМÜîºÍ®ÀÀx Ô‘t€F39,ú¬ë ( é–NÆ ò-cºè©5aù 힎!¬g\›éqH 3Kís 1DÌVMx£ùX‡zÖ\MÆã«´‡èÇðÃ-‰¤eD||ª2¡|ÕŒN{"ãíï.Õwýf½!”Þ°û€u´uœ² –ÂRß‹û=¯“=F]ZÇüü=?2¸0!£6]mÐ ƒ6‹S“JocÜhïúºŒû<=µúE§fÁ>ZfŠÚ~}Üø¹3^%G꺩Sþn¸ÿË£ ‰Jì(fg׈þ»x½†ÜI;ƒåþÆn>1e%}™|Þ[º0ÒûÂì‹Ì÷½ïúEeÿXfm—UU†,U÷_„ÜÍ’ÏwkîGLø”)pPAßÜ‹ÿÆV{­ endstream endobj 36 0 obj << /Length 2056 /Filter /FlateDecode >> stream xÚÍX[oÜ6~÷¯,¬,Z¼ŠjQIÚ¤)ÐEºñ[Û-ä­V·Jš:Ó_¿çðPÉ#ÇY, ì<Œx9<ä¹ä«›‹ë76HYj„ nö—)K” ’Ø0.ÒàfüfõnI)ÃîPSãíû/6¿Ü|ýHN‹#®Xª|aLhZÜf]Ñå›H ~E»ßõÚ®¨ò²¨ŠaA¤ îÄÀ“³Tâù5üÌ¥êöÙvXÐè NÿZå]Ÿ×uþs¬c“À?_[Q,vŠÛ5ª÷·È†ÇVè$±"N¯F™×±NŒõ—B[¡´æ#M̾„}êÿà‹ðT&q’Nª^˜i®h¯”Í&‰³²¤ÆØ0ï©û°I˜—%ÛD ¸¿: ~ü>ó­ÂSæ:Òšz·ÄeònI6àÂs/à:RrÎë®Ûs„dÆÈ‘æPïÀBøÙÄ:§5Àç´(,V㚢† ©æayÎ?’ܰ4±Ko›ªšœÙ7TøP ÆpÈ‹êçoKß"„åm1 Þ£°Uç4ßvÍ]—UÌÙv2Ñlÿ—e¬”W+-0>†b{(³ŽfòYÕâ&Ø¡£!Ù>+Jó‡Üf‡ÞSež(dÈw~ŒÈš üý‰9¸ ²2|¿±*|ù¯MÄÃw×oß»³Fk‡ÍÊ.ÏvG͈ð÷†‡™·K›EI„éõLoJ3n&¯üÎN÷Y}·'¸äyƒÈ˜™ÌŸ3â‚ñd"©ŽHrñíÍÅÞqÀiÚª@+ã2Ѷºøé—8ØÁ$¤7&S<8Ò*,ýÅA|¸øñâVžÅf2•ÞÈ)É3Τ™ˆõx0æõ»HNf„Zv=):’ÍUm¤W°ÌØ@K0Â?-—rjœÉµ8‰à–¥Ò8V °r‰îèX¯)äÑ_spÜþºÇ¦“œÝµ+¹-IG·A0Kün(Y}ò<‹…JWs?Wa¬ #´ ´P,æâSÒ 0wº”viÈæ¼åræ´–ê Fô‘º|Ü·Î*Œk §Ó…“ÀeTêôžMæ¥Ùf>Ç%aSì|> ๤#cü>=eÖßç=VB¥Ã׳8ZÄh Xè!ˆ$Ví)•ê,lv7º‘ãGè #®¢V"œxQ%gqõâ›øêíU i„]Ï%½ƒõÍ „_Nxb&ðöi‘ô+ZŒ}ñï6â#ya,pàJÈ­¥Ê³ˆsޝ–Ú\h=þñãß… Íÿ+6ô«ÿYl½ë}}9P]*†¯×¼ÆCip¿€#ó¡§À5õfÀð 8UlœCf e·ÙCW •fõ°CȘ¤üó ä&Ú¤˷Cy¤5%Èlp—1K)(IspÖ„ý¶+ÚÚ~†:Û¬¦Æo‡ÞÏ— J¸@©ËʮIJôb˜®–ö$†»ÖD|èQK+xZ3•N@ÁÝyVŒ3e&¥€9ŸŸ™ÐÏiN[¦žMr‘Œ@yéR‹«É.^f9:±óÚ§Ó˜×ÏÿšÁ7PШÖú)˜†ÂÊáßÇDùnôËd¬8ÐxM,›¥ºËë¼#d-Ý}Hr*¢×o¸™ï'4wù“7Ÿh¤B%|"Úw,|æ|’k05Š9šîWÂ`.ÿØRøuE^oý´«Ÿðõÿõ|­@XÄÃ<ïbÂ*#Tà:ØŸ‡ÿF\•刔ÐÌŠÖq-ÿ¡JÑõRÒ§1êû£>qh¦OœºE!k$,@Æç.’à-b¢Á;Žâ!@x➆çnWÛ£@ø-`lšìš¹ªqiå.Uƒhû=;¸”ܱñÆ.žˆe’þ.ï|šõ†Bô_´½,áê™4 ZJÎEÄÖtUvŽ¢æ&Ô1â¼>ï&GQéyÖB*ÉZšÅXZÒ:8î×àSÁÈß5V@ƒp¥Ã4ûG$d{t=¸—N;Ќˮؠ‹Ô|Ñù6U4â9Ÿ~-\Þ?‡!ò‰]¿W ŸÝ’,T…I¯ÞAÏÙ¡Nw ¶â‚p¦$‹šR!T¢é¹º§zƒ½)½@›ª4ÀN‡8FzY€†ƒÊH✲ïá“bbÈjö‘>Ã=¹álWpÅñÒíß-²Ý.ß]Q›J…í‰øä`þ¢»¢ •CŠÏ¸Ã&LŸ4t:ž ö¢òÛ³•0‰ðnbÓd‰D?#P~h0…V>ß`Êüyµ"‡±ÌèÏP ŸJevš*Š­cívj³¾wÏmZûTé' qøÃ`ŠÆ¯st¤{MýÑ#°íaô|®™4æueKÊI•*¼]òðËËéÉa¦`Ia+G·vUÓ¤¾ÿ6!½DQønÕ–ˆ¹£®+Eà±ò­¿Â `ý î\îÅoÍ¥«© ìäU¶íWR’8½oœvð4à´ßNz0wùCôÑSQd^R@ Öcì~ô4c÷êçÓzŸu¹¿•Åm—uνÆ7#Å–x)\Âuœ’ñÞýŸÃÙâ endstream endobj 40 0 obj << /Length 2155 /Filter /FlateDecode >> stream xÚµY[ãÄ~Ÿ_áGáÞ¾w{¥#±»ÚE 8â°/Àƒ'ñd‰=$Î,óïÏ×'¶ãñMx‰÷¥ª¾ª®[¿Ÿß¼ùÄMÂ$Ród~—0.‰¥<1TÆód¾L~MÅ,cŒ«ôÝòq¦yZT‹r9Ë„Qéa_†—únöûüû7Ÿ˜îí&aÂ$4ì³zà‹0Íe$WÊOËÚyÄ2©vÚó4YP¢…ziKžš³vV3,}z«,-÷a¾Mr’k®=*'¯³DØ(õwՌ۴)wU±ÙKkÿ³™`çÕ0væq|xnºÖT‡ßMYT_ö›Ý¡ o¿QE~Xø[wÅfß™AýŒ E®J'îêBÉ)'+¯!9Ü¥QmEpëË -2" †°‚À~[là^roJ0BÈ®Á¬8¬%ÚSUo×Á/ÂÕþâ"ÿÄCèëW¢Ž0;KX4m¤AÒ#ªxoÏ„¢#ÎË‚üá”Tž ÀFTžªŽ,ÎŽòAÒ¥ÅMN¸Ã¢+À/?|þñÝ?œç™ Y±<æ™Ï f%áTŒ*fBÔÆ®cHŒCÙ¸:Šj±-šÝzáRØ6–/6‡åz4ZÀÒ€Ð1µ³>7XÀì‹`q#¹a}°6ëýD’9êuÕ¹õ)­§úíOÑBA}©?Þ7ŽLZK¸ŠN¥ÕÄÄšiáTz_ìŠê¦}P+øˆ‘E ŠÏ‘Ó•ãìÛjeq_¸½¢i|5jÍÈÔ%S}­ÊjZp××Q‘ÁS¨kKþíÇÿŽÔ‘ð¦c±cî µ³‘ÞI`:Ò(®ò5ÞI ®eÚô!ø<ÿùœqæÌ8Ñ1ÁÚYÎÏT9¡G”ì<WÑ£†·¶Gš%|OÐÕO3+Òw?ëW”k_”ŸÓ˜6QòS1©MÄ7}(Þjè; Õ&Ò!®’žHå ÿ–fY­šûˆÂ]Œ§Å ]Ùv•oaÊ­ïGŒzlJ?šjÜþÜæ5²Wû¢›¦¨×Å¥æi"•B¡j¹ŽéKÚ‚·×~™+$»™+2–6¼]Î/Í€8}=1væ¨fCà•뎸(Ä,Ÿ8d‚ ¢µJ¤ë¾dONE<”ÀFšD8ÀÚ9T o>ñžµƒ)„NàîL8rNýKp}ºÜEõGm<°ké÷RȆºYÆEJ¨Rd¢›&@1oqêp?Â#‚[¸Nªk\Âú­¾Ù)´è'Õc9%# ‰€@öi…|28ŠP<¨0eÞ¯=f™äF¤»²Íè»P)u¶‡Ô7Á¤œf¼bdçó@^nH+ Zám5ï{$ç¤`ºF?o]ZÏô¡)“ˆ‡m/×eƒcØ"òj&?Iû*Cçp.®(¨k0ŠaÌDÝMu•Õ.ÇQ\@àÀï´Ñ È+Í ¡R¶m°U¿ùtNº]5¢Óá®RŸAŽ;ëd¯E.‡ôÜ2"•éœÚØtí3‚N­Ü†šÕ°êxrÏØ #ü_ÞŒŒh>àyUžs¤ÔêU¨Âü ÂW‚(]ÕÜ%4¾ÉàÃ{‹S/%>Ã>ŸB×§Œ¹ëî¬wËÐ6q®žÕ"Õú­ž®„ÐáºÁ½´ËCPÓ1ýÕ±‰­'òȉN'Ї÷aQo6e3Ø-üû³ 7q«n¼ìÝÏÔ­Vêé šÌeÅ&ï—N‹"öÚo»Ñ¼X¸hºt_.ÛaOÚæÂù¡ªŽ5*·ƒÐÍlÿ®(C’fÍHyŠôœ“}5 9ê–ÁÍ/^Ÿ¡oäæyÔ^zéÈÒá+‘Ì:^i¿ßäg‰ñRW›§0©)Ž·øŽ%*-6‡–N(ÏC}ãèÆEGª&ÀFÓò¯ƒ+Åýæ­9!|e‰×N³Ð¬ó6÷­ÖM,Ÿš®©z¡Túþ)Œ-Ë»â°ib—=0|ÂÆ)p7ÈËú)ÛyÆÅ…@8:©-äJƒdK£ûÚ:»ßäÒÅnëC¡jÝ ðx¯:ï^O†ûÔe¹Ø ˜l¯»ú$iÿ¢ÒŸêºÅÀ­k 6H9Ðö±•§¿j…ƒÉÒØþjê#Ø“ð0Tþô’|e ;VDQ?‡}ùv´ê1±8ÜÅJéÝ¡ZŒc8&i·H ìêÚ#¼ôöyN9œ¬>îöõXŽ…ëK¶B`dljÿá§4"t-|§úé9îá<$Óÿœýôh)ÁÜýk¤Ð(¿¡Œ#ui‹gÛF´ÿÈŸrO endstream endobj 44 0 obj << /Length 2507 /Filter /FlateDecode >> stream xÚ­YKãÈ ¾Ï¯èÛÈHw­ê¡zt0—;Éæ°X`;»  qËned©W’û‘_²XzvÙíYäbY¥R‹üH~¤þr÷á»ÏöÊ1§…¾ºÛ]qå˜IÝ•I5ãÂ]ÝÝ_ýšì«æK^ý–féËæ_wÿî³ä³WdƸÒW)ͽí_7O š9_[¤Lj;L¼ÞÜH)“×ÈŠœ3yÙŠœq>Nü$@D޳®n¬aÎè«XÊe=ß5-ž¡ŒíhY¦Ý·ïÈ£ý@mZYئâL|z·±2iè˜÷ŶÊÛ‚nºâi#LR´yEO›L'y[æ_ª¢Ã!•4;zÔ? /凂õað.Eì0Î2é²Aȳ‡‘V óòž6jêmqM;»â–Î'RÇ,Wá€A¡/ˆÇÅ`ÍÉ+¡24þ%6½ 3¦›!ðÝ´d©3—ìd`¦^éo³#í±ÍkúìîåËÂ6Á"ÏøÌýŒós¯žŽ4ˆÛÊ%>ÖêSà <¹¹˜f™pkƒŠˆE%3YÄ!ÖÑL§êŠxDG<å̸•–žËªZâ:bp{ŒÞþòviac_÷% š¸» ð™coÐ9‹0,5£ròú>ê;LšQª×˜Ô©-1:)šÛ h¢J0 Xÿû ¦&Ã0š Ìù‚ðR0“`3f­¥©’É xŒÈ’ïK¹,¶èÌ&# áÚo$÷ÂŇ#Ûå}ÙÔar=<ØåÇ*¬ð´Ñ"É«#¼õFÜ`±†døG}_´›ÅÓä¯?¡]ÓMŽ` £þ á.›…;êú¼íéïsÙ?„ñÂ'q»ڋƒ‹K˜ýPnᕲ‹¨_@6°SHHß„§sƒD1 MªÆCo áš‚!X%V!jà ¶q„ešM üø‘EÄøBÄXN‹R$|›6";¹” 3¢.²“bÙþC"ãÊ˳Ý=„õAG‹ô!Ô(èþQl#€ÎXšŽÎ¹me5€d×T YŒœýCþµGT¢Ÿ!q0G7!þÜÃ]êÆ@…BƒùýáŒME^‡¿ýú‡*0fP"¡Õ¤ñG¡>óí§ µ8ŸevDͰyñû± ¢5@ÃþMŒ€ËO™0lv»/êOi|KðK¡ÍŒ ë’/Ç ' çbÐSHà^ÛÒfq dÊ· âû+É2©§ý#GbFŠËÔçæ[£þPÊ•þLrNzɘþ>žØ4›q1§÷ÎzúMÎë ”¯„û6]™…®ÀD ®ÔÊ—dùݨÉÏ/w“À&Î﵉œ´™ÍÑè¹@ÀP&ƒìV`Œo <–«UµDê„4@ê<µ]¦æ‘y·Ðf|3 ÝjW¹œ è¤Zç‚A¤Q6ó0¼Eh=`Øî0¬yLd¾ú±cõ£’¶È»¦îñ…3/ ÆŒwµ11Jæ¦xyç9¹v3£m×Ñè*$¢6«˜–òÈ{·'|ZCÙ7ê6dÑ›“À8­;Ck°“¢R¥Ü«ÈyYïé‰1æ½ÚÂdà¹ãjád@Bžê‚ µ†ä‘ ßLY$* 1ù Üïꆮ]Qwa¨Ce]öe^•ÿ–þÀÞ&ÇêF¤ó¢+ `ÐÏ'€“ú»²ÞÆï¹Òb•{"ؾ0ñ§ïéO0ZÕ ÕæJxÏj7‚ƒbº.·ž2ù¹<”€Á*Ö¡B’<å:ää¸2u(~¼-ëþDŠ4óàpãrìh„#CU.æàä!TxŒã=b\óŸ-O˜‰©é£û¹©}4ôCOëûnGsÄp€´×¤š)@vÁs/ŒQ7C: ˆc†ÎBÜÁÖžS`2sïaœ›1Ö|Œ-’© P®&þþ:sœÃ9Ç$ p>ÓÄ»­¾;9ü›L÷6ËB€8þ’-q‹5~ƒ(x÷÷¼®ê’ä|éã»c½Å¼ÒÑ0•GøàL-ï›ö5¬×î‡ÀR;„›Ng»ßð¨ÞX`ºÄ—ßQ©¡W¥2`n'JQ…kѶ>UâÓ]xD—¹<8êåÁ¬7r=õòàdXŽŠrB=òÏ¡ ÅG¾¦ˆ‡äézl#¶ÁÊcq<è@÷èZT=åØ9‰§îÔÙ ‹ô-TýáeJ.^û¦¤bès q -‰î£sd™¤J¨ОI>R¡ÑcLÒ@¦}§<}¹!4i°ÆÊ¢¢ºGßqÁ¶õÞg’²ïTÍ>§ùÛ9—zÞ˜Ö¾U/CËLh°·¹´Ÿä3Ünö |løÒslã±²ÍtÔu¹®SÉÜM)•d߯K‹s˱·¯ö5iU8¯³Lk»ª gߺ úØgªéíâ€ñ¤©—al•ø&ï|7ñ`²S)vú#àGr¹*£#ã¿®½RpË_nãt’3eVt¦Mmø‚"’X—tå'ûyÒéU?OÙPK¾Ãý•†šAâ§à±îÊ®/êí+M¶‡ÿyèS΢dÒbRîè)ŸÔŬ“·>›¢£òYɇ=„½³nø ÂM'X”8¾ñð2ÐáOT¶·-™*D˜ùŸ‘ÓÛ¤ýžìý[ÿâ‰þC5™]iÔfäº9–¹Âª¡‰i‡ðfî€3( ø^ÞRƒ¦ñoÈ9€[¨NPEàÀ|êYùóEZMHë.ŒËçÕÀð{âPSfLó•Æ}}fÆšÏpÊ"†ö•~ÿVgc‘qRí ø‡Ìi ’¦!ë9œ÷áû»ÿèÙ endstream endobj 47 0 obj << /Length 1018 /Filter /FlateDecode >> stream xÚÝWKâF¾Ï¯àÉVì^÷ÓíqÈcf•¢UÂ-/yLŽÀfm°¢ýï©~Øè„ÙUN9@7]Õ_½»Š¯ožI:Ãeœ“Ùb5Ä!™Yš„I6[,g?ñ0Ƙðàé”ïö[Æ4åA½rë¾+we›we]…¿.¾ó,gÊ1™ÅX"*Ö·ªØæMY­á.fA·Qn’4è÷a ‹jõ™´?C.¸”¿lR¾ÝÖ!‘ÁÑ MϱàˆI’Äõž·j ˜ìxºÚJÒòe šUÝììI[ï”Ófbf‹Â˜Q<‡’u£áµ™âTÀFûSXde=¥Î\Ê‚U=`]´}© G5†ÃÑ»÷v-j£×Ry¬ÿRŠdJ­¼fSÿ’ð¤‚/<7z%N!nþ2‡8ALàKÊ®×7O‘^ðãp—P”aËpš“Ç0æýœ?^€;k›r«4ʺXê¥O‘UeŽ£³àK¹§¹‘ûùkÖ/ªGŸÞ½áê§\N•«s ޽8[å!:}«4ÖŒ.¢/}¼Í%ÌPƸ ذt€ªRMÞ™|½øúÐíÝ[Olcò»§|þq×Tã—j4ã~ˆ3²¹{²ËÜ.`ÊïIä¼}KñFëø£zÁ×vu©à8å7 f™Mš©‡|‹ÍÖ…pÝ^LF8M8£‰O†Ïßü«=»ÚÊÊ—Ëuk¥~hLO¤ákÉÞ’é_‰Ü¿™ÿçȱÇ%½Y¨ºCS9‰cQ¹ß¾È\Ëø¼j[èòbi¬Uah{&“‹B ’O¾¶Þž"ÊñÀyPRxkåbœéé.IÁîÁ¤#ÌÎ=ð$ŠhB^¯øÜÛìà]q,yã|ež¨²°?Þ‡’_ýøÝèÆ@ÂAWÂN;Ú46yç–I$Ò«´ØäÕrëÅ%(0‘ѵ Üã}7²Ô/'"øCÝÐo*«Âµã£~DÍ^€zÛ~ršWú»³'¶µ‹`•tjsVZµV›'Že·qü›²µ7vªÛÔf Yêö³A¦í! âM¶ Ù<éK3åø¼À Ì|0ÑãŽDr“€S9ÆÞ%Æ”ºÏ—Xމ3LvÌ‚ ºIÇ'ŠR1^,«ÎƒM ôF炸…†ÑÄÉäÓ…ió<½…^`‚Ĺ6ÏNÌ Úú‰cŽO‹dš¡ÿ¤ÅSÔ{pœÔOµÆ=ƒ)¼oœéêAüîäÅ?gòÿ³ÉËøJLzÎõJíÌõÍõ=»ìþÅ–…ç¿„7Ìô÷þKv®˜ÖÔi )Ó ÑŒYN4åáiñð7Š.M[ endstream endobj 50 0 obj << /Length 1963 /Filter /FlateDecode >> stream xÚÅXYã6~Ÿ_Ñ›'9hsÄKGyÈ™lÈ Húm³Èmk¡Ã¡ät‹ýï[Å¢%ËfwÏò`‹"‹u|u°¨¿?¼yû^äw9Ë‘Ü=lï¸P,‹Å]'ŒÃÊCu÷¯èûï>¬þýðÏ»ønÍ9˵¦i»ïuŒ«k-tÔÁ_­•ˆãèí—4Ww# ¾|bñ_7Éc¦îW’Y¦ÛøtOÏÓ»ÕZ&©þTÖõ–VQÅñtÀ‡Wgÿö5=Ç?|xpÓ“"K6‡ÂÖµž1Öëó˜ÿî|ç¶®{ŸˆÒ‹Ú™î£xRõ´ ƾFizf/±yÜ×™­Û™ßŽEÃݰ¬j·y8nhpòê>!·û G¯¸å%‹ÚÞK+ªªœØß¬›¸”Ư%Ïs>ý•œCNþ_ÈCÖŒGÛy¿Ÿ}Òy†aß\Ká1oßg—¹ªX®å,%‘}èW"‹±R<÷ÆåcTö«µH£Ê¿vD/<ŽƒhšÈaªí­§n£)WkÕ+ÇUIkÛcWŽuß ¤šŒ/tR3'€‹S 1j~¦¹°IŸx8‡Ý2œ‰ì“™´DGœR&t6‰ëª¯µªä*œ‡æåLÎ’ùV1™Šåö»ŠA¹a¤‘˜“²6úÉÏ=â¸À¿MŒ==Á09‚«N‡º?íh­–´•)›ÂzyCßú¿¯´Ž Ò›Æøývb 6ãá—ˆLaxaÒÐ Ä6šÌ‚å\Ͱ€ ¦"Offº–±ÂÐD+Ež\ëŠSuÓÐî …+½Ôí¡1­ÑTg B÷}Œ\¨I½¦ïvb¦3y¦…’I!¯/”èíÉë"…P—é$ç©E´-†ÑXK0´èhö'4ÿ›Ÿ ·Ú[±3v J P·Tõôìú‘„š˜ËhWØM±ó’ʾi $m·Üu,¢øJ€ÎýÝýÛûPA;áZg%ÂÃ#'R%rÆ_¶A "ŽD[Û·4º0‚&zŒX/B^“6 [&yôè=%à2ÒÈšbè;Ÿè‹æEÆ‚%Ù”Á»ƒ(¾ÓL‹)+)ÎERdLð«8.Žcßc]M1#!f¦ ÂÊ aÕP…í´PwU]bxâ¦N¾–J jY>Í—’(e3áãÞt^ÂÞ+f‹nç‡eµkz‹ÂQ ÆÓ|ikYP!‰³È¹!ä–$É¢_Àæ±nÍð‡äΔ|ÅP0æì)1ÞQèÆã/©«Wq´TÂ!c,åÙX“b~Óq¤Á Hæ¹ímé9þlU€œ¸*à—†Î“gžhˆzH©¦ø¾ud¶š-~Åg"Ñsä{/Ã9 „ 'Êâ)$‡C™Î90 ;ˆú«Yà×Åýæž1vnê–Â3ðxœ-#ð]zG0WÉ…†ÜP)–+¦ã”H%K ~8´)+HJ _x¸Ð†fœŠ ZÓâò†V-M^u—ú`}ɘÌücÊuÄÅ!Î)Ç^L1âJ ¬OüCÕ€+Í•¿‹ g(\.òëÊ W¾ÙBå¤4€âé×.ÓyøÊ«-ÎÆ$‡<åË­Û[¡ Ÿ½K"z[Õ]aOôÖaµ<.€ lÊLS¹Ãã—vOj4cÍplFï|uçȦópaí÷?-«,ƒD:kÜ¡ ]=–Ð~å×—-{ª„e2q(ÅŠ7!”°×ãâ %0¡Þ}@ê u Pê£ »ª @êE€ÍD>u›ç!’‚ÅBÌÕ|Ù:äâê6Pwesœ‚¤aðæ¸|ÄBIdŽí¾°UÅX=€%9NÉ2?+lƒÍÛ\ì¦0µÅDjÖÆ‹þŒ¨\€þÇ¢RçL'Ù º­ÃQ™38^ŽJ\Åz Ši…'Lç·É ´õzËÑRÞÝà!Ÿ Â?!Ku|[ÆŸÏ€ëA9‡¬W‹TÝMðòÍÚ &@Û×>VÍÓhºÊ÷ç"LKy™–Ðï¸KëƒçT0­'¿‘jad$Z#_)b.™X†ËÁÖUç二1@ìºIíceŠÆÁŸaq÷"GYö-;}7]qÞ5šð„S“G†Æ„0¾„PÌW!ÚâE;aâ… ZÇp˜é«ŠT™DVÑ0Ä ¸qÜš¯3h>õÕ½8I™-Ê_>ôÉÕ}8}ìa+ôŒÿˈßL; ZwTøBK3½õyµ¼}_ôJpyÇ ¾¼õBíÖ‰Ç@ùFéÛ¾mZÐAK×Âv5\ÐÁé˜qo®bÜ3øÑŒÅœÜB9Ø«ÍÓ‚ºÝ\¸ï‚—32ÆÂŽ®wÁuê¬pTZ'ƒ¥|ÊŒ_¹T721÷£þÓ/ðë!’, Ý]ö–{Â;yà ášÉ¹Y¦OÀª¨õ~ YÂøôÂßWë]î¬è ìãüV•Ã}‘¿Ò!Æ,ß—€#ß÷ÇÝÞßÃéAß-lGí!N¸[2É÷7|©‡áh*Ïǯø«—[Ïdôô—z<äMá¿<â]mÏ&ðkœfYæûuîšÿ7ß=¼ù?„úÍ endstream endobj 53 0 obj << /Length 2688 /Filter /FlateDecode >> stream xÚ•YYãÆ~ß_1ØsœQ›}lÚØ‡d“5 À;Al $jD EÊþý.¾[I)ò$aÆåP¬6íáP4x’Ö̬6x%žøñ3·=±Ú÷UÛ¸C_Ö;Ad¥¹1KÚHA¥ÙòØýÝ'ÛY¢6ðiÌý"µéx“–s±Ç¤rÚU5›zÜ–¼oþ:Ú%ÏÛzf +(ë‚$_nq2¾V Z˜Ñ4Ú´,Æ𠥉“íîb×/±4uâ1ÕšüM&WZ*‘ljWên'q¼z&ÒT¿}õô2›¶‰§#”÷+“«èënt-x“a/¬§£Ú\SU‰°ÊSí@!{¦Iâ0¹vâ¥Í•Œ~Úñ¤×W:žh¸vìÊ]Ùø!ùiûJ§=¨êxD]5ÏѤµH•Z*æaß²¢“=ÍMÂêd0d§¼§/Ýž/åf𦢄îÂÙ³¢˜?>q¥2a­åsA…AO¥J¢6ýx< ðÝP’/H¢ÝØé^\ßÍÛ íÜÒ—ö€ÜØ”ØfÑÌ`úœgŠÎmiÚ;ôvåà–qðrŸ¤QQÕàtJž&‘ÀÞÜ8ô ÇQïVY` Ý<:Ð ÁcÉhòIŽíÁ_ðI¡cLcK:†<œÐHÉ'Â`ìg¹wö™0øZÕ5÷žÊÁïäNÙumÇÝ÷#pÕðÁ[žªËa(ÝrÕ„†ÛÀ3œv‚ÇBá½V1è‰/P –3èÂf캒ý ¸ð€¹%Rëµp×v»b3ƒ úð£ÅÕ³'1|â Ç»Ù%Ý\èLÍÈö¿SÝMÄU°Š$@ç‚°R x0¥C?»Ð²kNR%TžÎ8¡Óáy ©¯D¬¼ÿ{LDªçôúq$Ÿˆp;wÒ"ÖoÈË‚i&\þ¶{¡78&IÇè¹QøÜSœ÷¯+ÎàpKu8ÖåÁéD¹u†‘¥v)áV'h<ÔV ™Å@Ê £õ88]›¶qúIj¹)·#kaâ¢ö6E]¯!4†çþÁ­î« ZמéÕÕ‚ý´T Ü;ÛQq,è ˜8Éjë À¹Q ‹l "=«TP•Ó|þÞCxc­D’z£˜¼&™FвÅ{°Å9Š–ÔãŸ$°ø°à†Þl< ¬Öt™²CÓ—ì¥ðÓj~øBNíúß;Í„Š/ÕLÂ&:ÐQýÀB,¶¯.6OAYˆgËøþ¦îªXÈÌ΃*’>Ïx± øÜ´ÈÉW§jkß8L Ûºz¦ò®*?V2¶"‘u]äÒE¿â WÄ.BŠôVFƒK({Â/_ðËB_¾|øY=˜‡Ôÿ¹Ñ¯¡ÍN©âéCöðúðÂÛ<»ªh!€E·àÇ©î¯Å$ Á–m½$~pÝáw`Â׸>»èì]¢à|ÌÜôc^“t˜}“Ë|ya'OG¤jÇŽƒ(*”‘$d®0³)z|,£óé£MAع ƒ ÷Y4 þl«ÝÉïstP^ž#/x^³lé°§r¸¬[&+é„ýKX"áJç¹5× €!&¦½·<}.ôdðŸë²èÝ>J±ãÓGÜo„áÙ9sDYåùXï(|º·:âÚÁe +_ D—G¥s‘10…݆Â.j ŽÞ7ÿVï§·T›A¾‘ÏË,&Vîõ»¶(Š.§\‡'w]{ð’g’/ÀBÀsJaÍ,#Y¥I=’ ø”Ž<—‰¥+N8þÀÇ:Ûm.TнÐj¨ήQ­®YÍRaÎjV®Zz-2+箎})PÕ¸¶`ˆ™ Zp€68r“/ò±«²‚„üÆZsYWЮ®ð×SS*þ§U¿i¹Â0••k…i_îS=†·K)»­K„jN >©ß,ñ(é#ã–­—Q{““3ÍЙòÌöêZøÝ–k—áµp<ÇAŽô¶ÜÔü]–Ir‡ %¡¬éúùhêÕN"”ïG†¶!•Šüœæcý,³¾èPˆvöÿ=bŸ9G´ÓDbØ.9fã  IEð‹ÆuU¸}»p9ânœxdØ}óŠIî u亓¶ƒ’*ªú"Þ¢{½'%³÷Ä1ùšCë—YfßÞTœß; ʬ;”áôSu‡ò4›:\„HݶË:ûÇ<¥ hÀùdÀÆð?ÊCÛØ>©XÅWÉ’ˆëøÐyªÛȭᱠ1©»Œn[òtÜ¿öòµŠ YCSSe:¡åÊn÷Ì£=áè¸ÛcÃmÛ8:$h˦çJÎíÙ/_8 %Aybó†§{Uä²ãÁßúK[g}3±H¥¾*ä¹·ï +±&BX8%]"W¡C€ÖŸBáo¦> stream xÚ­Ymoܸþî_±eÀ«ð]bÚ´H‚ËኴHãŠ"ò®ìÕE+mWÚ8î¯ï¼P¯+Û9\c"¹93œyæêÍõÅ‹wéÊÇÞ)·º¾]IeâT¨U"\,•_]oWŸ¢m¾)³c~¹Ö2‰ŠŸ.º/Ú´»üòóõ_^¼Ór´RªboÔJðwe}sie”•¿+à¿äWÆ{k;Ñ¿±©÷û¬Ú^ÁJDõ‘÷z¸TiTŸ¸sj:™.eÔr3 ϶>”ùWœ—<‚q_®ö°FÛÛœuɪK…kƒH«µ”ilÁFì­einOÕ¦-ê %ÇŒ‰>æø¶6 SScKÃM⎊5-( b¶L¬I7c Ù&+Q,}½´6ÊŽEvSæ 5y^q놥¤vưҡ(ó-÷:)Ã<2l¼Å‡Äµ]¿vØ»ªÛ õXJÇRþøo§B‘ö*ºÞÍa}‘cÀ¬¢ág…ÆPD«ªÞ0~s¹ÆÓhñLîé`òŠg¢Ñ”á·:ló¯ËTóyÃÏû zà—x‰²äŸvÚ†Ï{ºVÕ¤¡˜žÀÄ Y"ƒG«D°@Øh²}hU¡.\my(ãǶøEHAرåAP·nà j£tôöt즕¼Ú_øfCîÖUù°$öŽg¡‡Ë“Û‰¨¨š6#KÀà-œKpvyÖ-`ìZ ãa ]Ÿ‡#âûb„0„ðK•ßwSàŒÐëœõªEÃÃû<«Â'îì±sjZîN-O'ŸÂFð#÷àü×K‡p«[t_~’ÉŒñ!p¨,*ÄàÄ›è5'öhÅüˆphû³|Vt@ UÑYYü—0~=5Eu7ì~ž˜Î\´ ¼øáúâ?~+ ¾%b£Íʦ.N·Úì/>}«-üzÇÚ§«{šº_éXÀZbU®>^üýâ fTHœ£”jtl<­d“„7ýã-BÊŸÎÓ µ±Lû48@ºJ}§úmM>’('•±O)QF[p+t¼4Àü”uï¶P«9´b}do‡±€‚Ðb‡ÆúŽ5ÑqšL­Ðg³»Çãñcˆöº˜(¯¶!°üÜÖ¨YBMáC¤¶çµYO)Ü <»ìßÂûcÓ¯¥HbCkÊé!¾à\ 8ÌåÚBžxÅ#èß÷ ÄöyYì‘ìŒ&Yš³äûæ èLÿf‰:žó‡ýÈ<ˆìx×ÐðùÁ÷öÉú·šQWÃiµÀùŽ;‡c`9=ÌÌ­£[n!2ö–ž…ô6NlïuËA¡ûHxÍJpécPLöÓÖ€—;ZÊ©9G<·Jc•ÊA¼Î&Á8ÄTÈõÝ1Û³?®•Mbçì]ÂPBS‘=±µÉšƒФ·‡©5ù¿”s|(X¼çA %ÕMZ2 ‰óÜâJ¡’g,î ˜,.dœ:ó»,îÀ€d¸”ƒ¥ž7¹Ž½î="høâ\λ§U1ʃó¸ÿ‡*F«Xzù˜*OT*6&íäìæ¬Àu|œê´u¤¾ <3*òmÚ‚¹—Žœ†ø ¤¥©« F¡ŒÐ験™:쀾Æh'öƒÜ—íI0R’šŸ;@ùcÁå„>§;:’ñ«\DÁ{ËÙRiÇÕc𦬫|ÁW’X¤îü”1±ÐÓ©$ üå„2Çq%§©ûŽrÂs^vÛb2a³cË ½?„Š;7§`†ÑtNƒØêÒ `âc¨ogpž…°_F;mc“¤ßí?Mv›sA‚Ò¸~º%Ý£@ð¸çå-¶U´™]·x¬4¸‚j¸K7#8µ»~áá§Ñ*B.õÏ¡„‹…ë'a¶°R ÍäyÐ×±¶c"¦…ä#BÉûBž4&Êê{ÃCºu°Ð ¶§ý¾cÃÇ·83›EM„ß0È^}[JŒA—a€’ºâê»B3dbæTU_휪îò)‚&+ÞW…E­Ä઄ºì#ºSò‡ÄÈò‰øñ R@=¢ûs[ emàd0ˆ %É“¡ìÍœÇNvS:…Hh-©þáíÇ¿¾~ÿþÜF ‹Ž•°d*†Ûùîº{T¾Rcc ÔÈÑ…;tÕ_Râ8ä@~/XBLr²¤zÒ)Œ²ظzÊXÆû™!Æ›)°ÉJ°Ø{ýœ`Cgô8 @‰"(UrWåhŒìøÐÝ1gí´¿ßuq"]ìå¬ Öé¢_»o*ð]RZ¸é|5|( éÌ‹I•Bín­`“Ãð©äkŽe̦Ù#Å‚ÖBiœ\Z½@…+§Tè¥8„ðTô|bø˜81=àî0R¿ò5/Ž×På?: !˜pâÏWWr4)3ý$Éá~(çG Œb(›T†/Ç/x)#‚¼sÑ¡ÊwPØÎX*kðòÌ–œÒ“NΑNðÀ™jY'%¾G'Õ›¼r‘8AØ )gfþíB®ƒËBTÖÌ«Ö3´MG ¼ì4åíø—Œ?)©Xôl·;‘f~×Ýì »€ÂTTö–EÓ6¥€×(£dólÔ6ÜeÂØ>;4Üâ[MøS9~9•”íñÛÆü~ÆnúO}ó{Z¯b«åø¶qá”eÓ>ò€ ¬7P‚ò)úÐ0ÛšGŠNbþR……yQbaÞŽ Øqršá#«—O°·½Ï¡¥–‚ Š+7ùŒðLG•*l4ð`Ú¿°Û L%\úŒ© ]vû2êzIª—“Š> stream xÚ­Yێܸ}÷WÌ[Ô€E‹7Q2ÙAœu°X,’לnv·bu«¡‹gæï·ŠEê񣃯€ŸD‘Y¬Ë©SÔOwoÞ}(nJVæ"¿¹ÛßpY2£ò“匋òænwó)¹ÚÖ7¢HúúiSÈäí&•¥Ll×U‡su>ÀkÁ“¾¡§ÅG–ÔU×S‡«Ý&åÉ)¬Ad:Û|¾û×»’Ï0+Jq“ÑÖ¿|ŸÿúHóærÊŒ•½ Í´àK•»¯ƒs ¤TŸ"XàflE£)i+å% „oUë ñÆ™Ôßo(ÿJ¼ Nñ&BÁŒ¢é.€Ôè©o8¥_ß›ÔÆïúå÷v·saõ៶ؠԈ­fOŠÕ’I~¥Ø1ÁgI« C'ä < ,¶Ž™¢C1³A³ ù;¶ÿ ÈЖóe8ð­Æt²Õ·Ï¸k0Êç˜÷·5U†å z ~útàlc£㸡Ž]åc³HtV]7ø<퇪?†#d‹`Ñ,‡˜}ñ 84¬4cd½§p€}UÛ…†ø½éÙn8a äL‚› ì1¹ g{rdn^H–s} ˜˜Mrû–žOŠyÀYß…N†Ïé¬ È/ ù âÃÎÓ‰Óà’[; FaÓÒ¾^\«mwdè±yr‡D!Hf7´ý™›jGSQ?(z!zq&˜m:<$ ž‹«ÃÑ´u.‚vh€´=Ðhzy9@²hλ§õȼS¼ªØ,ÎñyB(h@Ïn¸\<ž6mO={”wv­íÉV8µLImÝœuüó7zÆ,‡ åjLYàA))Èäž[\£ì˜É‚‹‡ ŽÓHψWÊH–‘iÆ‹òÛ"R”ãÜÛç9\%1™Žl؇h¾ê~D*ßOš™ã”bRåÛÉœ8P® í§LÝ2§u…JD¸j.ñe’J>_Rd1¢øÿvNã,à.¬!ùüL@$ˆvásxý}[¹=õì\·m«KÐt4{šCž ¨Ù04JKóžû¤€dž›×bª1:.²#ô˜cµE«iõ­ {Þ{*D º_€ŒT€þuyEì$Õ`ƒôø\ ñl:Ô`@, } .0cp Õ&VO@IlÏÏšñe¢ HXỹbÀV¢Péa…8É9·"ã¬òn °õÝ„6õeUïêº[C JʯQr©ÆRÄsX1 ‹[‰k­˜Ð¬ #¥^ iÍÊrLå[‹"’´ qšmí<„®áB]DY cª±°ÍûÞ+h®3°Á•3µn7l}øÊääN/üŒ{ÚV:É}VhR(´‡Ê{{_‡ÎT_›‘ÉC«A^†vĨ€5lÝ›áp¤/‚§xê>“(ÀÙ¶ñP¾sÑ‚+dT¡Ì_T÷ÎvÕXH*Ö:»›§-,,­Ü.f³qI*¢bÿ©pÚ¬0a`V™˜.G¸Zó¼ë(F|Éa3“¿â°Ê‹ôWýq“Ô+õCøæv\Lïö¾ª«qY©¢¾§Í€tüÀ|ð —"B‡nH[z[ÜІðéÕ2^»qœî|½ŠmïÜÎëÊ ¶´MØjß Ö]ié>jCÇ< ™˜ð®qÀᕪz¤;Aβü2ÔvТ"ö´™Š˜°œ/§æß4mu¨Îþo„¦ÂŸxî‹cÞ—!韛cÜΩÆ´åïx³–SÎàxãöCMm‚eÅ»25$4ØáB ’ ³)/Iói;w.öyóâ†á¹‹7S½#¸Ç±=íë/¾WŒ[“ïléO ñÛVÀÂ釉ÿvÀTÀ:¶Vn‡¨MòÁ³ø–FÝ£=]HrxóûÊè¤Ð˜¶%å”j9&”úÆî'TÈ3}çø—²˜C6U¢™bÒ_2ÎNn£[ päqàóäà ³s¼2-~ úŠ{òæwoþj\… endstream endobj 64 0 obj << /Length 2684 /Filter /FlateDecode >> stream xÚ­YKÛF¾Ï¯|1•H »›ÍÇ,|˜ØÃA€Mârp¼@HIÜP¤–¤<3ö¿§ª«š‰ÈL{Q?YU]]¯Zßß]}w+ÓEê§‘ŒwÛ…S?ÒED¾€•»lñÙkLVlLù[ ƒGøonßlͦ«›~æóJ|ùDZ©3œ)ÞˆU™W»n£[\_Ý~.¾`gùåî‡ïn“Ç`±–ÚOE¼îöùr­„ö¾.µöLS˜û’g^ß¾ÆNä-Mœª,ß”¦É3­w{·£©O]Qå+¥^[ÓúÃ>¯xýTUEµ#©&бöU”€xV¬ÝQn.e—¡D¡ÛóPt{ÜJS?Tr±ÂOµ¦åNvÉGľÐ=›õ¯—L„òãD¸õ±+j”^)¯è° ½c³xx{]Ë<ÆÖ*ðS•‚8 èèüºL#P/žþÚ”»ºáþîx-®¿.#5Ò|¢¦Š†ñíì5Zê‚Èß,eâ¡x@êØä-('ð"âÀ3­LèÂî<q†{‘Ðvæw$ó‡]Míýr ‡æ½†šWÛº9˜ò’â+š‚e{KÁôzŽ@*ñêò©ª…)o˜DÀè?ÍÜ[,ᆣgÌÔ.û›ƒ³k©­†IìeÜVuÇp‰páYû‚׊-µÝÞ¸ð¡ŸyBÕ'^&}çUæ“I¦ÊW:žùv w Úû¼üÑŽVí0€Ï/žVî4ÇÚÆ³º_mlL0ß<þK~{ÿÍã·3š"ñƒÁÌ{Q‘×U|j;Yu`‡-ƒh)1"G‰’Þë/¹%~"¤[o‹jãNÕ±{& P˜(£íL•µäX[«ð¬ÎF#š!›Rj™.ÅJú"Mÿ×3Æ~÷¶ãӺNjq8Q t`R²ˆ¿"¾$†½þZÖlj@pJwqÍRƒ¡­pF2™€YÇnï zLŸÔpÔ l”³½·ØÄì¢Û&ö ×òJ{??üw¾áòßÈ«Ì!§\v»Ï[´$B¯ðsßu·´ÉÐý©Ø—©‹®‰úá§>mDÓ´Qp¬g£k&™{Ãù¢sÙ§%Á Wõ=· ãŒíñqç“5`ŠDu9åÙÓ;‚HsQ§,îÓ<-“FüI¨oSŽE™78JAíeIóMΡªéh¢íSíø«¼iê¦õ—ë8 ¼O5MRBÄžKHrƒ Ùã§íœh7?þû¾i…[~K‹à4´æv‰Aµ8@õñÖ{ä÷D»M–aÞ%Ô@šåÄ€e"|Å/6áQ¾K#› `G˜\¤ä¨* Õ(Êt a@wkbкó͸¾Ö6ï3o8¤EH«§yè£R_'ú>œ%o)ýH‹Á¿K%)#]½¿»úÏ. Ä”¯e¸Ð~Ò8YlWŸ¿‹ áj}•&‹»õ°PìãåâÓÕÏWß#s„ûñ%$r¤Ç©“ío­/ó)ˆâª CœÁž·@OÕÆši-ó5 ©ô0s6)$d/¹ÐRøTu68|’NÏ6a&¥(ÐäæD†/¼§,*žÄk8#h)ÉTÝ¡7tN‡=çtØÏÍÃÅž÷¨DÚm;éÈíqzkŠ’©`ÌÄ–7ÌaVŒi*Ÿ%ÊOÒ>_€)OÝ”AkQˆ»ÓHø é$Øb<–)‘¼É©KgÑ™±¡¨‰½M]£êbÓ¡§%|ì?v߸–uߘÖbö ôH[ß&{EEíàqÞ:ÔÚMSI’ØûˆÙHï`82á€Í›Y²G›SÉ;mÞ‚CO•Q8 h8ÅA»6uA;Î>btÉvïEì3#óW‹|¬ÆÛQaP¸>íöÔ·AX…š¸ÁİpµáO[Á¶­9eašæŒ:¸ŸÐo~ùH£MmYgù„eÀP3X<—z—WycJ¿_Üä½ ¯hïõ–ÀÙ™q‰®Xx- 4L*ÖÈW"âýq¾„’ÑÄ/©@¤ò kº›!_ ž#Ô sÄkhò9@ eßË霪 ¤ÓpT\¨Ê•£çÞ3S¾~;WŸZ rɳ!#Æq8õl{à¤5h Ó}Ã$Ì=QoðXŠ0´Om—Öƒ(@¸ô›…¹„]ÿ6Èmgr/`Â>•¶'tÛÇù‚}Øv aÜî&Ëf1ÔöÑó#(Fôm@ÄtQ*Š]$À.ªv²VTPs”%¿8t’·ÃCü±y ²Ñ <Ò§ÁFN{‡I牦Žg£‰æYKˆÈp;6†ÔEFK=ØÆuv­Øý5â bWT¶Þ ÷Àl;u`ñRHx V/¡ê„‚F‚ˆøÄ\PƒÞLæ02¬ÄœÉja)BKƒ!®Á`0BýÊ=;à‡LíÔ:J{îp>žÁZ bI45³s”¥ý Õ •h-âo¢,9E‰EKHJAkynæLd‡wô´‡È((çįØÿ«òÉ•ÀKç`¼Vƽé“5ƒq¯œPÜ’ÞႈæKßô(G…èåQáÓ57­-#O ÷Œ†2©Àã‡ÄжC…árg­èHA¬¥uû€õN f…)ë·\Õ4yiº<£I´9œ¤"&^[®ëYk7Í®ÅÍD“‹CeùÖØ@K3\?ðóÅâ ¦öÝéÓËßÒ&J\¶AÚQDÁaf+¦Ê=3eD–ª‰îQü™”ø ½ aÔ¯2ÓÕpqxª  l ¦‘=#œoGíéx, +6Œì³lÎarc_ `–ÏL*ßËSn!šBÝ™X#ë÷ˆ$#+Çi¾†­Çc+eÄVŽxgl-£L"ñ˜‚ý4¶‡¨5Ça&wDv^#ÏX»7äÒóY1Å^kè}´¯ÀÒ½v«IF‡‹vÏWs§ÂoÇȇ=ØnibÛÔ¢ðê]°ú°z÷á3­çnåÕØàÏT&øÈ¯üTðëp—·V\`Mfµ-ÍîM`ßÿxûÏwïÿû@ÁyyDؓ컂 4cÉQüS ¡òøÿ„&_G,)ž8v—ZÑ"¢èÙ¿dØ›—-8جР¾,þ¡³¤¡cÃïÆüZdhº,ÚŽzYìBÉ_ðk=ŽàÊ(æàôïU*Zåçt~”âO]14y´JéÍÛ 1ciÓD+&©MaÙJi—„\°íV.SÚ¾} “·°‡g]ÍÕÖBúúÙÿƒ´/d<<èX-ÑvOZ`ᘩµÇÿ»á$ÖXÀG©ž•ÿ­B+jž¨ÄÄ´\»9Sµ˜Ü_Bs×/¹i) À–‡=_ 56ÿÕ­E› ¬¢ùÞW\FžÿÑMã¦ûQÐ;Û¨ìEÞM~=Âàì2H¦6üÇlý‹ågÏL–qÁ9Q¹ÚC¡i¸GµÎH¼QÕ £þiÖânŒ¸ŸrÞø)1µ*2ðƒP—Ö¾{5ÚAÈ?mêl endstream endobj 67 0 obj << /Length 1174 /Filter /FlateDecode >> stream xÚ•VKoÜ6¾ûWì-`1âC¢tL€º mк‡¢éAÞ¥½B´âBoŒþùÎpFZm½IЃ­áp8üæõqßßß¼½Ó妒U¡‹ÍýãF™¬”Û¸¬JW›ûÝæ/ñOò÷ýOoï.ì2é²j“‘ÁŸIiD˜’ÔäZL‰C’*áq­Ä¸÷´Ú ÐüÝo?ÒJIS‘åãÔmÇ&t¤ïêƒHlºaô5Ÿô]üvI¼K‰¹ $A†Θ³Mª”¬òœ@?õöu`Ú@üåØvê{ß%ºcûÞ3%v!Ia¡e™èÂHúO]@»­ê‡h¦‘Ì,l¼Ù†Ã±ß°3ÿXOí(“Ô#þ<2jÈVRWj†tÚ×cŠf›T;#5Tá"¬.œ®D¥¤;»˜ºï€Õâûø…"Z?ù‘ Â*¤Àº `—‰»¤´"°+ÿ¹>[{-åd ]Å÷BeÚ}Ìò þÔ¸•tVÏæÍÀs‚_ûOuQI“s" :öó7o)¤ƒ¬ñ-sǬ-Rã¤-,øÍeeÿÿ0”b< 5}b¾á»nuÈ,Ô”¤uwÁ’º ÿ¹FV6ñT§²jñûŒ)òý€®_O€vGQÌH¯O@:[]´Õ ×€@ÛB`7­ßá*õSŠ=¡rñ¡õ5;½gË+X”SRå_‡Ãh ýlÃ÷ëqß $aèø…Ð‡.i>Tee®°|0Ô¶$/¿„þP·qšó{ ¾ÅRÔuïI¤ƒSŠì²£-l“Ø‹(úŽlϪ@¦ÃX?´ì¨÷1/ìŸ8¬@ìˆô?Ìtj ´©©ržÂª ©ˆ¥T]<Ø[×<*â´NüÏh{:‹³0Ô¨!K-¡´Ww»³Nlj‰ú!zî6¡\å°®ˆµÎ‰Îc fdÍW»\és©¿Ð¹, w&BL<^ð‚•ljÃÅt|êë2TéŒxŒ—7‹mɶ.N'uŠ)d”rQL¾UêO½Õ†#¤„¢CBÄíUþ‡[dò|u ìs&`6b&@³dP¥ïÚ!Å~>uº–戥œ±”Œ¥$,î is½qñÐûú‰ñ5¾~ºó wèL–Î}£BðëA/Ä“Q Šm© ¿]Ÿ¤ê’²£ÓÔÀSùÐXPð  ›?N—K†pÀ9ùŸ ,ÇhêeÖÕ1Llç®’™YZ Û¾9ŽŸÙ7[<°§åŽD¶FãÈúÑÕž…/Ts¡[Œ-;#3ºŠnñK ±‘PykÝHÖ ·Ñ“'~RÀæÂçÒ ¸ Ç Ýí/GšËÈ=uûsÓ‡nIýò‹öŸdÊH °ß é \«@£oÛkSosY–SŸöS÷º¯ÀNÙa•~¼d†9_añcÜ¿~×´†î,ñ]€/Wàc¦ÜëûP2óu)‡ùë4§¹/!ÐýÜÌò`y¡`Â^˜-8óÄnvÕá\Éþ–Þ³ûßýüK´†Z^ÁôT@…©…‰³ÚPUàæÍw÷7ÿA‘ÿ endstream endobj 83 0 obj << /Length1 2036 /Length2 15324 /Length3 0 /Length 16570 /Filter /FlateDecode >> stream xÚ÷P\kÓ ãÜ%ÜÝÝ]‚;A‡A÷ Á- ‡à.Á‚»»»»»^Îyåäýþ¿êÞšª™½ºW÷ÓúìJRe5FQ3 P dfdebáˆ+Ši³²XXØ™XXØ))Õ­À¶ÀÿÈ)5NÎV {¾?âN@cð›LÂüFTÙä\l¬ìV.>Vn> ïˆ '>€„±«•@‘ ²:#RŠƒ<œ¬,,Áoçüç@cJ `åååføÛ jt²25¶(ƒ-vo'šÛÔ@¦V@°Çÿ¸ °ƒø˜™ÝÜܘŒíœ™@NB´ 7+°%@è tršþJ dlüwjLˆ”uK+ç)Ô@æ`7c' àM`ke ´w~3q±7:ÞN¨É*>:íÿEVøðïâX™XÿëîßÖ9²²ÿÛØØÔdç`lïaeo0·²>J)0ÝÁ c{³¿ˆÆ¶Î 7{cWc+[c“7Âß¡¤DUÆoþ;?gS'+°3“³•í_92ÿåæ­Ì’öfâ ;; =Øñ¯ø$¬œ€¦ou÷`þwsmìAnö^ÿAæVöfæ¥aæâÀ¬aoå蔕ø7çM„øÌp²°°psñ€Ž »©%ó_¨{8ÿV²þ%~ËÁÇËä0Kèce|ûAôr6vÀN.@¯?ÿ‹YYfV¦`€ ÐÂÊñïob ù¿ð[ÿ¬Üz,oãÇ `ùëóß'ƒ· 3ÙÛzüCÿ»ÅÌšr’âjòôÿNù¿J11;À‹‘“ ÀÈÆÉ`eåâp¿=øü¯ec«Çñ‡­¬½9Àû¯pßêôŸ]ÿ=4ÿ^ZÀÿúR½M.@óÏ ë³p²˜¾}±þ÷¿MþÿMù_^þ_ýÿF$åbkû·žæ_„ÿ½±•­Ç¿o“ë~ÛEÐÛ.Øÿ_ªð_«+²5û¿:Y°ñÛ.ˆÚ[Øþ·ŒVÎRVî@3e+°©å¿Æå_r¿ÍÖʨ r¶úëj0²²°üÝÛv™Ú¼]Îo3ù· ø¶<ÿ{¤¤½)Èì¯-c{ë°±““±â[“ß'À‹õmÍ€îO1€™É~3¼%ç09!þÕQ.N³è_¢!n³ø7 €Y꿈çM§õ_Äû†Œÿ‹8ØÞó[ͬœmþ¡ð˜MþA¼fÓÿ"Î7)Èö-ëÿHþJžÙìÈ `þÃçzC×ý¿6ö7‘½™±³åFoq˜ÿß\˜ÿÿRZýã’ý/èúÇéA.N¸{£Xü9ÌÿÆñV9KKàŸ9¼É¬þ€oE²ù¾%mû|«ˆÝÁ¾åÿ‡«¿‚ýsØ÷í=ò‡ú-X‡Ôoåqx«>è¾½œ˜ÿéì_Èèü÷¤ýÃyËè|YßÂwþÇé[ôζÿS_Ö·sþiÁÛ63ƒ-€”ð-°èƒ7.À· ¸þÑ7ºûðÍŸÇð-EÏ¿áÿL¼©‹“ÓÛ½ÿ÷ôÖÿÿà¿_2@ ;Ðq~dÊd]Ô|W!JèÆ¸="8I¹­•LËè5ïôÛå>‘¶üÇçU§ÑÄþô¥MIšk‘’g¯Ã†ø/_Uš½Ÿ ãTÇ·›çÆp{FsE«»‰Þ}`TÙñ~vôÖ °n€l•£ÌttáAUÎÆºsë’v¯î.Z ™ÙVÙ)ç’Gz*š`ŒÒˆÔÈŸ¢Ì2I›Æ'ƒ3!Ðaž¹£M]ßLbfŒ¾’ÈÅÑ#úE±çyé®±EßO{.—¨³9·PèâA_cSy‰í}“Ûõ*ø¹*8›ÎÓ·Ô?-¯I@櫌ïTÈ(˜ê¯ÐŠEÑ–áfšêd«i:ª ¢&©Fð ¦,6ÿZFÞ_`˜öÁÊïþ™œH-^ÒŒþw;qÛщF+w| >kÔîˆñ ÖFKš/×Ó=s±ñ¸´l¢9Ä ù‚ÒG܉aµ,IÕ~稚\/½î×,¦Ÿ·ŒÖÐÖ_¼‚íôWøºÜyð”GM”kö¾ž?çµÆZöëÕV`_㎡¶ð†nŽÙ^Ø¿ÖqŸ1Ȳቡ§ñôÉ%¯²LcÛ9ЀÒSy0Ó>"ý0Þ-Œ:ùœÖr\$¼¨r‚yÄq T‰B2˜ gJqð3þ ü#`‹ç$´Ï÷Kã½K®ÄW]=»”OÌ}Ƶ“K;~3Iµ¶W}ñÓ¸Û`_*­ïÁ%n Ƽ˜Ê펖ë*þßG2qÛ¬]ËÆiƒO œ+UÉžÇÊ{ƒÉŸb'mD¿ïŸauåý”eÎ✤Rn%岫¿ó®3)ùúkNV8"(ÈÑŽ#XOÖl ‚_t\åç³I~õ]RÎT£4ãeEg‚ßÜó7îPSHIüâ•&×lÊ»qµ ï×3I~ðö,nÕͶJåOWªDþ(OÂÌó@@v†0Ž^(#ºÀÝ2#,DVœž“†>úÖïÆO7¾jˉԊ$%…"¦µõÀ¬FLúÒ •ËFW{D75lDÉçÛpa«Qü¾>H6ûJXÏ­êýÆé;*Ý]£|‚ñÂŒ–• dg3 ÔÏ$jÜz:ç=”‰±u3Þ)1ãµÜôÏÁ zÑCÆqß,ªX›žÌÑàõ÷áYößq«Ž~ ùþ¤€gA>Hjç¶ÂÖDÞd?è´Náñ:®Žy¬ŸðÕ`Ì«X;ßèõ£›I:Ñ «®dkÑ[ùŽMìÀb©ÆíÒĦMª" )@©$ßÜš?ÚL˜<Ö–Œžë¨˜¨Ãj'Æëþƒî~åä8‰` ‹AMe •ígSöc u})¾Q•JDP ßêÆrC—-=‹ oˆAóÙ9Ã!óBAž¾×{=ú ÉpòžúHŬG4(£ULOë åEøú×të"wžìÔù?©Æ¹~±%-Á…·RÂÒÓ$^}·ñ7ªÂ—X}a®êƒJ´¡Á쎱IFw(GÝ|Úë|ø‚¿1]©/à{ ƒexS8_ó‚ƒðˆeJÙ†æKƒMº€(ç:댊æ“ÜËë8ã¶3¶æµ™É‚Y6â<òC1(åÝ• c§Ãç]ê0ªðEª*o`ÝÕG}'"?oÎDÅüzN²êÏt-åh­DG ‘#‰Ñ‘Õ M —æÖô qG-¿[!o3úÓÈÜY:n-É¡‹W]ôD|Ö÷æÉfûÍdã$éÞ1¬[w vº]™ÚÁî 8…ïNãm$Ûul³Ëú˜}abÊ!íV÷^‹Ç&Âûý$)”ßÄ­•@±¶/—%óÀÖþBˆ¼$Qç}GÕœÚym#´g•ÖÜ1„å^yhÒàÒ!Lø3d¼2¾ÀrªÙàœæÙ–ø´-jŠâׄ"M<‰œÝ#`j[Øs:ZGì©&.óË ºR!ª€ &íÛ¸»DjÉ`L;³ÏÖb zà·M¼í ŒÓü5,õi£Ðê·LFf“dW4|³uW-†bãFÝDtu†tÿL9T^6´®oªønb„ Šd„xÓ:{¬ÏÌÛëù[Wþ†$V\ é}€ø“žûа{™}‡¸#y-¹ºU#ú•ÕÖ,ó¹Õ6] °¼ÑBzVúü3á«Ï¾ÿHk\ZÉW‘Üß‘B32åþ%í‡÷§…‹vö¼C¬)Œ_n·3q õÐã¡ KŽ»Q:‘wÁÖÜHìÝŠËž?ƒvÖ…uÏ~‰ì<¨b+‹Y ]næ-º†jJMë‹ZÚT‚’ëÊ`×ÐðÀÀA¥ÀœžÒÁµö…)ɾWqÍçå€òlz 㘽µ @ØóÐI¤¬šôΧÿ œkÐXl_ÏݯÐä}dKŠhxÎÅ_ô4a‡eÙD¼fÄW׬ðj.wg(sñé‹^ ËV¬wc%)šè‰#Ré<°ÕöŠÛ $Ô*ÌÈgWù:ÆøšÅc|õ¸?#šüZA À‚°ºJÈ­ÿŒ >ã,["`J$‰îi&˜k„Á+@ë˜ñÖSý¾^)Ä …T”æôëÙݲÌÒƒtÓFsP­¯Œû‹,ÒºeŸ±ú×kìeÐaÀmP4M²–™³†ìà©ÁÃd º¢÷$ì÷83¹;}"UÔbi´_f4è«J1›ê½ÈpmïõÃ6}e<šˆ)w§g¢§‚‚£wN×Í­O~7tÛvî×4ÀÛ’‚ú=¤÷/™bué&<þc ãÚ(3)Š…¿k"K1çò70­¢×’#h{N ‘3}·–Y/¿#uÌÆ|‡à÷3c(ÿ4É•·mžÆ Üæ0Rà}VfÓ¬ÊÓÈ]{E,d… ZW |j ªþ‘¦4‘ýA¤©Âs/ͨ\OLêKË ƒ唯‡Í{X5b@ÿf:Š {û:»<ýºãR“¢E/[¯=ò98Ù\ƒŸ€ã%"ª*@κá2þ!¨:.Î¢é ‰EÒ*he …”’Hã=v[³eX^aÓÍT€íz¯a6£ºµ20;Ÿ°^³–òû#¾ÞXhüˆ¡¾p´xP /˜™¿! ¹–lGõC©ÝrGYF*mÙM!vªd´¾SŸ+rûäx<(!o Âcs&lžVl(üL¿EdÁ"`?rTNØ éè8ŸtÅÃñif|`­u\"£îƒñ/7òfn}Û˜Wi~*f±.i¡£Ó‚í| Ýi“#äçTüô­ósáY`dqH‹ D>{¹w¡ ]Ž1ïzv­9?uñB)©jVË¡í–rqÖ.bí«(ÖG+°tz]úÀ3~߈aBñ8zê#6É´ÀbúüY¢w°O99°ÄUׄæøýnÞ2ØY^!¾¸¶­CÆ/ŠçD°ÉÈ-þ'΋³ skh†ãÍ]#ÓBR#]Iá®ñ*_ú­Ñ2^0ÞCÅ?”¥qáP¦›úC“çöúÖÆ"%…~ÜEBM„Å}¡6žWcý~1 üØéBrAqþdE†¿ìQãËPèûNü,/ÞwCµ'Þ¨™ðÙš,~¾¯DÞ& E…/ìÇ€l`‘õà“dȹ‰:í Z9Z&YTHµP­Ûþ²ëcõº7ÇÁW:‘IgáED«»ÐQˆ“î }§wQ¼¨¢Åkº÷®ôEpå â[M‰#ôD‹Ü{D0¹‹OÌ÷dP}nÕ(Hô™×—Ý~êD’6ð0€'gAˆœÖ¶Î·³(!Œÿ¾pO“zñ£éÛg”¶*²óâÃï/x^£2ž5´˜ˆ®)L *…ÏCÞ†Ó/Lý%™ñ®ÆkjÛIüÜ”C6üЛ ÈbbF'`›\Ÿw’Ûhµþú¡2ª(=ÃdR)ÇÚè_¼—ÍÅ1+ÍÓø$ù MeºŒÓ²*Æ1Î"„t ÌþPüÞwè‡.4G àä¤öT }Xȵ1ß7ô‡)s¦ÌÞh1=qô¥˜Ý~#÷2nºÚw¶ÓçºónÉ„^#1kètÓ(óFt#×^²úÌ :¨¾ð—:òÅBa–TXB•`3úùÏY]8Elz†Ùv9 É8è.ì¢W3©2<ô(©ÑKú¿{PŸd%ÖËMòõò®¤|þˆ«±Xk6 )K…çÊqµ2¥»-Ua>âÌU)ú‰¯˜å†àšTMö*›~ƒÖßd¥ˆ¦ÕVj—®;\‡ûi>jaÎ(©ÒAM˜²ÞÊ{0âì ¡‡p‹k"pOÈ­(xÿc‚Ϲ̾öýç1ôºñ"76ŽôÙà63f“ _=Úò{x Žü,ö½çei*f¥ÀJ´D¢yþÒfð×È$>ÈH|‡½äìû7Åï8Ì^ïòFKüsX˜L “6­Iu7£E"rwP>ß¼xzÌØNѾ>“UϮ峰F7Û–5ì@)'ól¹¦PI>´þi›»ž_×ø0*oO¯ƒ¤îIÞe‚:κÑ Ó·ö¤Ð<Ô¸/$O7^Úô|Åk²ïít.w›Lf”È;,B¯?ùW±Zc~ý¢Ø:ÿ4•)Ä óƒ‰Hêq)!ò{%d‚t'^#¶u Ä ®ÕˆZI ÚA adq²Zé°E‹þf}ÇcxÊáò8 ½%ÓlÒþüá¸WXúî¡þ«¬äS3ñ¡™,þ›Cbé®–ŠÿÜžn]rÑšxü¬ÂêÓ t £dƒT«ªBÑ»Ï/þòs"ÞóZ¥)“WÌÊJÕpŸÆÙéX䯷ö»ž—z~ÑúLB—Éí+ZMPp>ðœ¶X‹;³‰×r3ȧe M§ #Œ4ŒÒfî$†r¬ ? .±’Cv€‹¿5üÂÑ%Ñ6MS¾ó ûÅ ÈÙG0¾ø¼õ)¯›ã§Ÿ‹h2ÖšèãÏc@—1Ê'ÇsÔ§Ìâ *^¬Õ¤°k„ÝÞbÊìV·Aá„èÅk‘eï67¸~9R/G!Î>tÚÏsò?­óS.M ü|SxÚD6cÛ“Ùër¬¶ÙÒ¾|¦L„äåV9£ðôýÔÑ%d§Ð© ´É{ëvXÝNr„0ž¥…%Ñx¢•`ž˜ámN+7çP½a+:×nhBAp#'F3Tõ$DÐr¡u\_ó<`Ý ^#°[nª­¦î*ã¬aH tÇ»ÃÑò Lu!|¥œIêØŽU1˜u ™EøÎ˜§ :þøý [®«¸D‚Tw±eZ^‚°´ýö€f[ [¿7Ÿ)mdLf¿…]7´"¸P.æºZ™û.>‘|8F•¾ÞTc½˜H]}’&–¤îIRþ“Ù"eMÙÅ‹Z“|wQ•7·ã·iég‚¹Ô‡tŠ5Ͱq¥¬–¹[» .G6}Ù¿µ¤ÈÆ%ˆáÖ£\²PcvÚ.ÄL$H%î=9îj˜©uVîÂíùO:I~üÕûa| #¥31V¿ª0%.žG;^h‘¶V’¢æ|…xáð=Éð`šEë^¡9CŸþÜÌé嚀>sבÿbv6N©0W O y¶çÊ´9“ö‚_ Õ¬¦³ju£GtžzŸþˆ‡‡ŠÚ¡ËÆi¨¶çKºÝþ<»ûìU˜•Y¯#*€šÃËôrdvr\™ÎŠE>´oáíØ0}ÉiØœ4/gÇmÍ•d­!°/"ú ÿî»°EtŒRœcÈA D:mWŒzÞð»nSˆ6Ìå‚dUµ†Qùa¾CŽœKì%5„o>óüìßj’jŸ F"b@Wè5¯ædœ"¢ï²wÎM± >Ü´hÍÐi~Œ!V,/Ì0¨Y"Ôf²‡—0JhOßyVïÑK{Ç#d™Æ;HJÇ-®;.þˆ¶ˆÍ·{7mP«hŸóš„àJS!QÅ\sµ `RŒá·1k¶q:¯ZÊ¿(*,l,ש©Ž¶þâñio±ôõ—EŽïÚw£*]¶È½õ±PïØ1¯-Q9Ó$Õ»\dG{3š´Å)¿n@ÃFêErâ10K—2_Š-¼kÓP„B«øîüøQúƒ*qE¯–, ™ª÷Y¾ÖKÓÒÄäÁLOÅaØiÊ& ½ÈHõ´ú²’z¯ð^dîâI€q“\±»‡oAŸ‹Cm¶7J£0çiÁ+…­ó³’™@ytùØÚ¾F±â Ï qЉd«Ê¡ æ6:˜©Ãœk÷ýÑLV§öÐroÝv–û¦ßhÆG«ÙX£_NÌú¦ Ñ05¾!r‰€[AùÑm¶ Ì_?·Ò÷‘KQ-ˆdì>Î'eš ò"(Çf¶¼‡¯$uô&Ž#&ö/}ĶZì‘-èâIWÕP+ðÀe;ؤ·"ýú•²ìjå"°7&•jC[Àq’Ä'æùܯ,V³‘ÒÛk4Íw™×Íø*Ì\é'“3ƒüd.éÞ9Ÿ£ ψ±æ[ÿÐòlØd¤?Þ&:ÊüJê/üóç莒ïeOÇYÈÜÔ;pP[û`ŠÍ¾ùÙ Ð9£õÈÕ|&8nÎþÑbþ~šÎÔõ£á\°og¦ý/cyeKW3 ²2ü”ŒîdŒ°î6»„(\õmîÈ(,_¾/ÔjC‹|Y*Ù¹ÌK›Ý?4ìU95|25²lÙŠÈŠ#L¤\í  oIXuj+ q£žÇß'^d³žº„À²`{Š"8\aÜç#p$´¥$?âU ~q‡fquÅZ¥ó´†kÝeGOÎÿ¬‘H畆·³Š#‚Ɖ$¸öTNVb—¾mÇ;´ÍçÄX×µP°wp§4GaÇ‘>ãÕppÈ"†äÝ*~Bf‚èÊCt\Nùb’HöICuX2'†’tæ„f\9p+q(OØœzfýeáÉ%E /vâ Šl—-ÆÎ‹ÞP¯½qÛTócû:Í*¤c!§ÝãvI²‰?dÿž×#kE®lÄýÓpŒ¬=×O%ÀYœÉh¾¿¡¸âãl|>ïˆ,â-aR±ƒ\1Ú÷C&(}ê"zu´%w<ЯKyþ•q›<Ÿ6~ôkç‡q{l1ÆcJ³¨ˆ›J¤?6Á.›^xNž ®`®ü^¨Ò2yäÉöAT-˜ Îé,úN2xè´ÔîcÉÈÝgãýEx( Ñ¢aG‡CÛER¶ŸÂ{2±Œ ìºjO{  lAÐ÷²×Ý“ó6kÍG°¼à ”ÄE©ƒ ÛLã†,¦æâT  Wl+Îûi×6ÂàˆÉ(5å ÒñÕÆ]ÈßÎïxIüËrÕ:êåoðqŸ ™¦º— /„¨©,¶Ën,‚:²žî¨¤»Õe`D—mñºßMƒà_Š*[”¯ø¶¢cBÇtWcŠy;HP¿SôÐZ¸ZkOÛ‰¦LUæ´@ ´a¿¡WÒb!(䋸Ðu‡DûU´©ªææ¹ë…'Ág—~E-­7iÉS¼ÆòÀí„v“†nöÚ÷ YËzÜÆÆÿìT©ÂG>ÏR/Ð…0rfø­¡2~­ ¨É¦}h:¯#‰#i63‘Tm æã°L“d]0ÿFKaˆL%v¼`4Í“‰æâéiÕ¦ ·n‡³¯¨Ý|¶I8¼VQÊz#룊(ñÑgýsµ» ­-?ÊiW }-ÇõQÇ $ñ‹F:&‹ws÷Ë®S‘èrM œß©_ ½/H|&±@)««ˆ:abpHp8_“«'J(Ú8Í æ£©Œl+s º=R¶¸µ·…vIÏ.Ã3£ë¾zmk"O`|þª—aF3ŽVã5I –®w‡“F©0QR½Àç -{3GÌÿ9 s«ÑȺªy¶øk‡n®…óèJ.´k}â„øšœ"‚8Ö#âÅëhŽ<×nzîÇÐbj<Ë9IUÌ\D;C{A4K­¦ÈW- =¸%ÙÛ F H¿«G4Ñ©5vÍ×u‡˜ÇOm|Žnu¤†ÃVªª;`©Y¢CNCÆ`ÁËGì,* , èPŠäjýéçv‰+Qþ»³gÁ‰išùƒ•å \úvìù¬›[*ª³¶tÙ'O7ú*¨^†¦Âü¥§&k Gw±)½ï# ›–—/M]Íf]Z¹Í=mh‘}±xéšÂZ£þeRçyÅ#.ÁJ¥U×tçÆŽ¹þ½²s"Þy;éd•+/†{Îûѧ&'¦þM´G£ÚQ'š~̯˜n»a§øªÚ²VÀF$/?5JWÙçïv`°¬iYN ²,;9÷¾“VÇz³µ_Gèë#ŽKÑ¢=õƒ‡»kÙöu Ù¸wQzÉëSâ×oLÿ~E­w)9 n§©UŽã#¨œ}XE ÏàJx7 MDªÉ6B/MMzA骩¢kÓƒ[Æ«úé÷Kï ±ŽŽTˆÈt"&‰Ë3ۆᙕѦ³à0IïWÜe¢§oò €/Ç®Ö.Q×3µ!¢Ò{°Ú d)VO”U£½Ü+笸•¿˜ÂÊ`M'ySH‘§f­>:;¥A~ˆæô˜Éœq/ü H#“3ò[N¨߮ۥ˜£W8R=¥}Íübr æ†iëO°оˆR4ü¶!ŽvÝ‘F _©óüø‰Üûw3Ÿö,ÿõi›½òÒl§vb›7¸ô(ÉÏÞ]j–§¡’ $·,ÅÃŒÈ@œ‡ í/­MyzNÉŸâšÍŒòµÑ—;Jò–Íf%´ˆ>wàÅQOG4Ìä<—MƒÏí(ÓôÚÊ´A¯l û¾¢º?8½çìeû»÷ñÉ”¥ï:]Ì ²á‰tÚé¬B®.½¼%r[ñR ».ª1z¬²Ä“ÀÍÜ"s)¾e{½ó4-‘c±‰üªFm’+9 À{R"Æm€Éœ_ËSå•^–Þ‹ÄÊÆIOjV#II‰Uƒä¨&GŠ’b¨BãŠÄÅ vµˆ¨è5ØÌÙE±tüøÃwÙwðÄ øûˆeïÐP q€†yq'gÁ!ñ»G÷/¼t å„Ãî ¿PêÌÑš¿l¢)ÇB¨ ùÕ6õ°OÚiIV¿f›fé=Ø>ŽÇƒf.‡Gs«z¦;Gq^=/ÔÄ;­jt+{(1›7¶¹Oü9ÜõÄ_´©¿¾„ô”qÛ}¸'‡ÒñzEÜ5)ªBœú ýP\Ê FéE©Sê@í1¹p'À¯µCÜ¿.7óút†Ä9´h%šÔOöµkp3£%ð·S47E R¬¦%Ö{®¶á¬ìŠÄòU” ±†åh­ÌGt“Eþ³þ ¶p/˜åÖí׈kJOõïò…!v®Ìšóù§Û{i=‹¢µ¢ŒŽdžä{ä¸êŒ+§ö…!Ÿ÷‚¯GzÌüÇkw²šZíi¶•¢¼ðc ¬ÈýÝÉ>\QÐå—â–ì’M²Öð¦Ó¸¶< ©õÚk¨BƒÑxã B»;ΖòA…’Î_•nÕƒ5Åyøâê+ÝXTph¸EŒ¢C¤};͵ÃwYïlÚ¯‹cŒtx)¦wF¡úÍþ69¬ÂÂ'g¼ƒ¶×:Ê.fuùAÍ áÔJòñ& ÏD@ þÞã{ ¬)0ˆF'RŽCü@¸ú=5¨h@bXQ$Ò$­§L%'>!¿-òäef“éÚØã׌ijŽQµkfkë$êiÈÿñ¶ú¹‡ËWl½ø½¸/þp©ìbú$tk(B\߉‚'ÕÜ]CÞÇnÐ5Ãft7ÑsÃ`Âÿ¡ëöwPâÍÝLèK¡°!7Ô­³R4…¦ö/ϰê=¹/Üù¯Æ¿Ž}Mž£k‚s¬uÊZÓedLgRã­ÆÄÝ—qrçîßù¨s ¶Ý-j•Ë{¥€²Ørz̸‘ùcá>©ER솀J©×Ly¤½oCÉyôÌ åc®wðÂL¸ä=éÊÝrmö rO ñð£Ê(ã7)í¤7¨*ægß÷cV½Å äwÑU=ó:'K»Íø° æ˜b;5að[ÂÌ}È}¹ª\¬pûâ‚BÑ$Ú%ËõKdÐøOœ¨šŸ_€é™ŠÎAjÁwïÚòQ9ž—a`f ûˆl8޶-Ñï\cú+yM†öR#ô I3Ø[B>G Àî¸4íîþBt›~Åå7„'Ý´¾¬6—ܘx5öÑò!–j vsŒ"ý”FÓ¶¬ãåf! r‘<¤<àüñ¹¯Û‰ Ž-¿ 5¿ü‰`´ÁÊêÛÑ\­`”e·Ãp¹¡Á»GßO]Â''U#J(¥ik=;}Hƒ,ÚœàÒ¢1%[R³Qøü¦Ÿ»‰‘:$ø–F–³¹Çå-áÂÊ©¿ÔS#–‘R­^!¼.%÷ ²ön6\F©^Â~mÏa½“YŠàÑ6ëRëBL¸¥w*ï¡ýB0ˆ”êŸÜQ™l¶ï(µ©BØìu+¥ÆÄÀº¨ðdÂ[AFI×Þ@$Ÿ1ëø­Wáf]½dÝòûE.2ÅñÕt6SŽ}HBÓ{ž0x9Øm‰ž_˜žas(ò5ÒsKè¶â"0/Wï'¶˜ ±LªCâÇ2ò ¤ø+WBx¢2ìp‘¦5{kùõ—2CÂ'2¼£éXÂàD.ê4s›Ê+åd‰'xhhŠ˜òJk ½Òåö~8çšµú8K >.Q§˜‹È¤›NÛühv9`þpõ9ƒftBN>e"ÐßUgd·ÛÕ÷ …Rª¦LŸðN®ëXf®{ Þp,dVJ{²ÀÛ êè„'£¡¯Ö›¶wȘÖ~ ‘£¾ë̸;|öÂÇÁ5¸³Þì5{£ï Œôø“yÕ¡Q°µ(5lXõSô ÃÇP½+Oò0ý¸#þ©TK¤«Ø ­ê=¨–5 @7—p«:W{A·»4ûþºÌ†à&^dk¹ý¤ýÍFKÒIÕÇ%“å)tmú\®á£Ç.€)rP+º\ècvÆÅÒ [ÃÈÓ ÌŠW6y+N@ËVf ¾;#0ÿ‰zrÄýnŸ†¿ªV©×`üx¥G¾ëb¸—†‰Ú°ïñzX¥Òßò…Bo󨨅ke­amXj¤_›;'ø¦j{ùŒEÛ1Éôyùñ¢@ÞnãµAnNí#åv€DʉðÉh8ðTÉözØAwˆúØ*5úœ–þêxŽfñCÁ‡#HÂõaNªK¼¢Ã“JH¢‘Vp”#4C=ù;•™ž´K[½™ŠOÂ:/Æ柈Øì5f¨ìÏõ»Ï2Èfï¼NùIñ,˜ é.V*^°æ'ôJ*LÁùÃç rÖ_6:ô EÞQé¿ÛÝ}h»ý0—‚Iïìg”Ž`~ÕDÃ-Mü¦Ïñ]ZàƒÁË«$UÁh‡×wf Rù|C>ø‘Js¼þ[ìô3î²ø÷Ðò}8µ:ÛL,pÑ‹$ÑÍ„ÆjÿøŠþSw»1Ž«ñ]Ƹ7ôƒ÷ñAÏ'BºQç yÚãòh%2¦Â˜DãHŸUªQÃˆŠ OB¥x‡ëÁö\G&ÓÏ+b•G”‹i\¬/˜›¨THûTÒ{ ?‡Îë·ËÔ xFG„uDø 83àï>¸”ÿvë|†qæŸÚSgYþ Û6hbÕ;y-!Zú´áug.7“#´ÇõŒœ+÷öPVQÉzQèôi­ ²3KÚžÃÝ3] dBn­‡EýTv…“k—OšÊ!_ì{?o•Ëþìëew”4fЦˆµÑx–š~qoäaî{ê-o` c‚í$Ñ»˜L‰Ù²9°sŸv¹Ó¶'¸"_ÝŒ£M§×ídl2ºÁhü* ®”zçO7ØùÚ‚2v)¾æÌÕ7}®&ûõ„Šò²©ëÛúM)nZ×¥ÑÁë{±²°ã¼µúOŸ]%\>6vêÔ^Œø/â}§¡õ6—É&Z°K{×¼JëšôR®«‡¼²}tö%6±kÛ€é4²"¯ý;%ŠºŸw²O gMu‚;J]\#pKƒ—ˆ#-Ìk ;æYã+ÀÉ'ø†3 —¤;œ’F8¢°0&˾NA 6¿ˆg PÕÏ·'©Tê±Bý=kë:M]tOB³¨€×Hc çûñâÖin[Ù—–b)ä;·SRß½Ù;ñO]ªÝOäJçý·†àúrʃ\®ØeÇ%2å ÚéÑõøÃøfKì®qUŒIºxgƹ’ÈdÏöÐt¾Á'×Í­ÅîṴ̈û©;Dª—Ž@t ûþb)ár‘¯>òuè[·”;nÕ`ŠÇÓ§"ìÏå3lœB“ÝÝûdØá›º{Ù†wB«­–¿ó$ðÒû;,~¾$4ºÅŸö¢7 Öý…ù>øm"wæÑîèÅûæà¢ˆÂÑð§ú«.z݇‚˜ßKi™>N#ë¿V¡kÅâT@^sAÀUÒÑe_—øs>^/* 4”2ŽÍnóèž¿O“pLB׿²òDøLj‡ ÍîÎmù<ªÇñÌÅL^>9ÿÚ97Á XLòÇQ ÓáCx—é.ˆñŠÜ~ðë¤Ç 'q:I‘ŸLÒODÙÓLè”±I@O6gáã9mÂÂFrñË8C`g¡bYHß÷`AÎO·l¦/iH×DGìûnÂüÛÑñ+vØ6µJçùÖFB]¢[GƒCG~²xt‰9[¹”ùл±Ifáè-%P2½D¬‘ãƒŽà ¢°sšFc› œ“l<™ö4§\;†ªÔø(?;Š/cÏîÝ Ôkƒ/4ŸG}H<¿JBuxQ>!Ó7; ÍåaþÐZuþ,m–š¶÷ûsf;RRwa½ÑKâòùJ5iåÏ\”úÚ5U¢ÍÏ?˜•ŸÎŒ XND·Úahá€G"uüêiáz¿y,èÀL|ê aª Ù·¬–tàíÿg6ð5öôp¹e‚¡Ã„{Öñ^†Ì`/¯g¨°Æï·ln&³¤¦0iy~Ž¿^a D Cá¤i¶íÕXË8IJñ’‹'V®“5Ÿ¸Ý8’ТΓPŵ¾Xl ¸ÖiS™|½ûåçVR†Cå `Þ2TK?öÎkþ"Ý•}ð‡þ!ùèúƒ–•”JuÐ3™¨ÚÍ­€¼WÿXŒÒu®PAM\¹ÓÀ’Wÿ7=›²Jÿ¬""{}“ü§S°„@?ÀgßÖ@J„çÌuIWìt|u*¡O`l‹’…‡©ø½T4ý •ªG“T…;õ°÷Š+CÃÃ8j.Kºqù%ÁºaãaÓ•Å/]£fT‹ÖY¾ÁCbÉG°ÿðÚh®è˜)¤Wävi­0¤Á¡þ¯[BÁÉäi*s׿ü2à)F˜ˆAå „¦²±vµØ¬Ÿ2žd©3{òГPû0Àó$åïêlQ(nžÆ*aò¯6Ù±W’˜}Û7ý†À¬Î²¨nQIáHªRMCqNb|>Ô.…ÃK³åÚ|²aXÞ½—,‰1k>‹ô® »ÿb]ó©P" ·‘²‚³ì;í9U‘Õ„©øä¹~[ý»ÂTãœ9Ixh† ^M À`ÚÓÞXÁ]Où¼&öÛãgxˆ”x_9ÅöÜÕ•óáªÄüµ/ù÷Ã%Æ„eëÙÂ"»;Àž›2»ÛÀÃuº‚ÔA2¥ã Æå©OS`sÅ^Ç ö€ŠèwõjÊ#\p"˜*dÉ…C5¡VXÚ.\v<ÿêçåÕd=‘zÈñÅ~…ÒÃ+,Œ·(–c¿÷T«Ôt gh1)—Ê•:îÊ{åª/ç Z„`câ*¾E’¦—È8¹ee<À.Díëœüž‡u*ó¹RkÑŸêÊ$Óµ‘Ñ3DÂe”û[“¹TC–j•¾ª¸•sâS¦ÇØ#ñGPsÇ©´5ó ¿F´CH¶UP„r¾’êóT-·V|^„æ õ? ÒNœeŠUªÇyß³\NMÛ¡OÁqž“ÔáöjCEƒïo¯»|q þm>SùÃR[ÚN?áT«Æ7A“ÄAZùœ–x–;YéìœI-l†úÇÅ.Ý(ÕWo¶F¨î½…ù:ˆñ#?hÎãµ\iwâÀª’Ó3ÔÏNOŸ:INŽƒ1µ½°°m`#z±>ØÙ÷ýþ­«)1Øß¶ä¢Pëÿ ¦ÛûA§MÇ¡A74DhHî-ÚôÀ–MÇ^kÙˆÛé¯a@^îØÅuí? ‡¤3:O®zD¯›šÅ&¸‚´XUgÂÖ!5¹Rȱ^XýÖb6DQ³˜ œ—ŒÙ}É/ª'b‡æÐ!{TÓëÆÿÙ]ÄžüÒÊDFT>–_ý•y¨í»†ÇoêrŠÖh¨*Öœ’íÞw*£¸Ú*ÒÉŠ5Œš¾“¿ö·‡ŠNrŠ“òæfè¦?BLí ¤Ñ¨ézà85¶%Åãç¤ÎZÚ'3ºÆ8à›,UÒÊãÜ„QX²Š‚¶ŸÂG§Âx4,Pàš _¬ÄXV‡þÒ,/Ýd*t´?ÛÆ^˜±Ïû**ôâW×ûºŠ-àä.›…)Øst·Ê©— bT±„ÒëLM}ßBîRWÎ`ÂCÝÔOU™®Ï;I5.# í¿B½68bEÛ1œfø[¯ºÏ.¤kü’ÚÚ†Ó3Œ1¨`fý„£«x‰,tÆ]åá®b—»}©.é«£ùÀHÓÈí÷Y%TmÑíýò† »(òÐaxoÇTÌ3£úM¦šv·rUTŽkôŒ ZôÓfå 12¹´jô+Ö~¨t2¥_2§6BqE6ÞdŸa…ê+=އ:óV8JçD5×Ìh›BHpŒÄ"åeÜïÊ¡¥8ä*i{9+«)ÜÔ·h£S’ á±YÙÑæŠôûi1)ž’9„·o5eÀT?.΢»t½U¿é”`öbdÄ'}ÅÞ•BØøÑ7Îñ£…ZB_%õ2·™Öªx/†VÔº²Ö¨Ð^þÂÏ~Çùl†QÞâÀ5òð$üPålÖ"6yœÐÑ(8ŸÌÐŽ7ò’G<®˜2ÓCÞñ]“-=÷Ú©¿$pmp+>½ì§<Ò6Z«ÿÈ„Ã ï †­Òs{@u.55àu‘¸tÊTöPúý\ý”µBÙ†fÊ›®P4,û ÊñÖÖ×ÞsO‘€„·!å·ßw×{`>ï¶ÈQ¿SwÛ˜¢VaÔ}¯Ù"·šë"á¶ËÌ帋}s<©o'ùëִ̈́~ׇ‚OàÜm¶—ªÊ$2à‹a©ñ7áDwPË‚œ:H°‰öÀ”8=¨ø’ðå,æ{gl#‚  þax{!-xÅŽ2’f&x .6…£®¦´á‹…çÂÓoÎz’hwˆtxs Po–ÕÞ‡Ôf=a¼Ãok¦Ï9ü[lñ,Y˜a‘#EªØ ëu±å*š ÜÕ»%0ÄÖdÝ˲¨ïîᅦ¬ ž1E/Oå7¢²y…~]F_—¦¢^.5K¦ñv µY6Úr”Œæìü¾ºùíöƒKqyòq቉ÒE2eÊw«ýfO9ÊVÏ(dîO`"˜çže”uS¯£{§¶Ðî®Îé]ŒúUb‚Àþ »¥õ£ÔÚ0Œ°„ÖT½6mÓ÷ŽbGfOøÚœ»ºYTyý©z’‚‡EŽÜ½fcÓ™°¼œT‡;L-2)K/ÿ€à ?.ùÝvp_ï:8Re½ôL ¯Ö´Õ2y–•uò@+Ħb㸭iI¬.è—EósC¥ýì~jöÂr/ï=¤²³‡åoÎý‹³U‰Bê-XÓŸüaé²c¥7˜b»×šlžó²¡‡ÊŠÚr6ì §cÕQÁâKq9¯ÑáØÑ|Üä‰$Yk"B…{vK¦¤¥š*ë,úû¦—¼x¯Ýe”óeX«æ†Èò~Nm±Œs(¿ôõB° „ó‰<à04¤æ¥S5}ȶ‚ˆm³¶MŸpá÷TãØJuøß³¨²z‘À"©)»‹€…Sõ …ºCÞó]o#>á EO«^&dhÌâ¢$›Ñµ¬ żäL2Ál°}Fû™‘‚Ö˜{¶7±†_™gÜiÖ×ÁSóãÇžÔzº„M$‹‹8Œù¯^Æø\&EÔ6} wŒ |^$›À |Š} Ï× ‰!¦W7dŒ @šzd¼¬ÔÅ­nõ¬{z»}4äq½§œ‡rsè!¬³rù8wŠÍçR$NŠ[‰½–´  ;‡ã û¬NORó1¿àùæQïôÀÉÙº[~ù™ËÒ>4g°Ò¹u4 øÐ€h„‡í§qܯ„D-ýIÃLxÉé<¿#¶V›¿ˆÆËQÚNWIꯧá‰ÍL\—12ú8MRøÃHË~J±ðöðû«,OÒ§²ËùçæÏí.†‰÷%\«ÿ †K; endstream endobj 85 0 obj << /Length1 2089 /Length2 14617 /Length3 0 /Length 15878 /Filter /FlateDecode >> stream xÚõPÚÒ Cpw·ÁÝÝÝ݃3Ààîî$HpÁww îA‚Ü]9çÜ›s¿ÿ¯z¯¨fu¯îÝ«w÷JRuFQ3”ƒ½+#+ @\Qì=+€……‰…… ž’RÃÊÕô;<¥ÈÙÅÊÁžï_ qgÐõÍ&t}#*:ØäÜl¬ìV.>Vn> ïˆÎ|  »•@‘ ç`r§wpôr¶²°t};ç?_4¦´V^^n†¿Â¢v g+S =@èj ²{;Ñh Pw0µ¹zýO KWWG>ff&  “ƒ³…-ÀÃÊÕ r9»ƒÌ¿%”€v ¤1ÁS4,­\þv¨;˜»zA€7ƒ­•)ÈÞå-ÄÍÞ ä x; .«PvÙÿMVø›Àø§9V&Öÿ¦û'úw"+û¿‚¦¦vŽ@{/+{ €¹•- ,¥ÀäêéÊÚ›ý&m]Þâî@+[ Éá¯Ò)QUðMá?ú\L­]]˜\¬lkdþæ­Í’öfâvv {WøßõIX9ƒLßúîÅüÏåÚØ;xØûü™[Ù›™ÿ–aææÈ¬ioåä’•ø‡óf‚ÿc³¹8YXX¸¹x 'ÈÓÔ’ù÷^Ž ¿œ¬¿Íoü|æo2@~Væ ·ð>.@wÀÕÙ äçóoÇÿ"xVV€™•©+Àdaeÿ'û›dþ7~»g+O€ËÛø±X~ÿý÷›ÁÛ„™9ØÛzý¡ÿuÅÌ*JjâªôÿHþ¯SLÌÁàÃÈÉ`dãd°²²ó¸9Y~ÿ›GhõO,beíͼ—ûÖ§ÿ”ìþÏ Ðü³ ´€ÿÍ¥äð6¹ ÍŸA×gád1}û`ýÿ<î…üÿ›òßYþ_ýÿV$åfkû—ŸæoÂÿhgeëõãmrÝ\ß¶@Ñámìÿ/Uô÷êŠ9Øšý_Ÿ¬+ðmDí-lÿÛF+)+O™Š•«©åßãò·]ó÷¢ÙZÙƒT\¬~?-FV–ÿã{Û.S›·çÃåm&ÿrÞ–ç”´7u0û½elœ\ ³3Ð žåm”Ø89>¬oëhòükŠÌLö®o!€7q~sgøß7ÊÅ `ýmúq˜Åÿ ³ÄÄ `–ü/âf0KÿAlf™?ˆÀ,û½åTü/âayÔ?è©þq˜5þ ·Ê4ÿ ·,ÚÿE¼oø½Õiò½Õiú_ô»§Ìfÿ‚ouƒþ ßZÆü÷uþ!¼I1ÿßèæÿ‚¿VÂÙC÷åûíwpsþWº7ŠÅ¿à›DËÿBŽ7‰–^Ž–oìÆ›Íê_ðM›í¿à›8»U÷&î_±¿«uø“ýûöÛó/÷[uŽÜoÚßÐáOw¸ÞŠ}{]þÇ?ao5ÿKë[.ÿF ÷)à|£»¼=^ÞúÓà·'€ÙÕÒô¯¦½‰põpøWÀÛíºý ¾µÀý_ðM–Ç¿nä-ú_‡±½¥÷ú þÏš˜º9;¿ýXüõ½íÐð_¿L 'È~iÞÁ”?Ôº&´í®J”Àƒqg\p†rG;–ÑgɹÝí&™¶òsðºóhòPêÊ–$͵È2ɳÏasLDK¢jë£ï“Q‚ÚÔN+üâ$vÿÄ×CÑÚïDp„Œ"»¾ÏN¾ZA6Íàr”9Nn<È*yw}ÒžµßK~Œ†Ïï¨îVrÉ#<•L3~ÔŒÑ*š¥Ì5ÉšÃ%ƒve$‚¥C?óD™½¾™AÏžx%‘K ‡÷;úÈ^à£û“-ö~Î{µLƒÍ¥ O—â}tŠÊGl?EgÁç[aœ\xt¡9‘á|£P; Љ£š´sI ddbc÷—Qx ÊÖTxœ©ê&¥ØÐ/[õì\ôœZî¢égV£|xÕŽ½glïèòÙÏÎ!Âý6®Ç*l齟l‰C¯i„¡;ö#öS¸ñòú¿óúOS×}z IXd3ÉuÕëöz"w¼ã¾;÷›˜¶‡ý¢w¥¡s,¤1 F8Dfµ$Íæ‡6>þ¢=Ø_þj#NPüqê¼õhõº\§7òk¯Ò—CÓáeCÝ{Äw?œ4vÜBÍJô@S±Ö|rÝö#òQälêyUzI‡ß³ÄLÐ…GËÁƒBk¸+¿_S"ó¨ñ›",®ŠnUˆøÆë¦Š§? ü2«3ûä;%[2y&cèñA¥¢tD.!qÊšUÊ®˜ßÉ4:yÙ)DŽ͵P1K$¦§8tDV/êŒKƒW¦<€õ%q3„MóÅ£òõ| þ©Ž"~»wrSC[‰I¼€FkZÿTiw—0§½§‰ jVTøÂÖÕ¥»X1\¥ñ¶¡#ÖË\ÝëÛÆ|§ÉO´±^c^7"ÇØþ•ÍÁø*%7çyZA7ËâØ¹àéA‰ñ¥Ü–n•ÙhÃ"?ÜÆ&¨®®YømÆoãÞštc?ˆÙËöüo¶d ü,ïóÿùbšƒ¾ h ÷íg$©9¯‘ÊA¥¬Ô×â›r!¨ÅÝ4Œä†4˜XŽÄ6"oÐ;MXz9Üc¨{<4·%…¸®"óiÉ–®iv”€O‡°žQˆÐqˆû&¹I¡å±n`Q÷Ë€¸í€íõýuYz«Y:ë×1>æ €)æ|ûŠßÇ\dÕqú3^v-@G²êGÛùCéŠú†M$n0R~’wà^Nô»¥çHÓruÉ¢‡PÐp»î·ÖÌΓsËŸCt‰TPi9ªÌçé•ß}põp¦èÅ©éRX戯y¤µ“œ?r¨ˆb$yXštÈܳ[Iú…×ë¡Øyß&«aÝQÍ;¤ÙÉäkæí9¼èÔïÁ‘ýn"­¤µ¸<€à8v5áî¨Þºª† s{,JjN7¤?踇Ü”ÛÆMÆüOžŒVåàžÅƒe…8Ï  4½]ŠêŽýÜŒSK:ȸ¿ÈwÌ @œÜîµ^l‡¯òx)¢}..â¿úæ¸Ó÷0I„²ç.í&ËS$ãaæïÃ¥·Øj2R¦W]z³$pZΨ½F&ôh 5ŽšVÔ²%„P=yIè+Ö¡©óÊ,ž©~l›Ër6¿’.2|ÒçäŒH&ßZrÇÒ Ó™¨£ÅÚÖßV/0$¬ó·oN/WÄÿÈÀC•Ï Dê7£xI]MF0teÖFZôšè èìÃ-‚½,ãhR•÷¡] Ó–h3juÀ,ëf:.%ã[…2‚PDT>)¼šÄù–Ý;B‘quÊDV Qy?²îm‚\˜­n:}ë÷tLK‰£°(o®Ì†²Z´ù@£4[§_ÉXzmwÈŽ¹pCT+möŠÑ°±Åj¡þY#s<ƒ¸Æ;̘D{ßùèV ßåFi[gv½ÍQÿ«É»ØTÁ%"ûNCZªÌ}ÿ)l7FX;Ré.Z‹®©J ÊêôDÁüÒ\j–¹H!l4Éu|Ô8F𳂴)vàjpí¬ßŽ“ U¶–¤ÆœîÌñõpÿ[ñá[ öXæ‚”GÀà)ˆ“:Öà" N·KeŒØq9£ZÿhÃÊ]À&of)XLÎȪ€Î­žý`jCùÕÀÚ»ØCXÌ™Ÿó!<äd ØIAô9"¢só5óÐÜ”¸˜ì„ ôâà:DÉzÞ¢ë ¥ÖÐe¼ço¯ȬßCµ¾wxVtÆ_<¬¬;ÊšSx"Û'=¢3Ç¥Ï$×L˜~‡È ÌŽÞµåÉrÎENÐù $½Œü°E>ˆñøŒ0”<äV€m’×Äœ¸.ÝY»BQ¹Õ/Ö76ÙØš£¸qì Žg.Ä¿åÈtÀÓD=8\â®`Êá,ÞÂkØR“¤×ðÉpµH1¶¨ˆ<ÑX-v‹ËœÒl’SÂbº¬má+ÛVeôN+2¶¥€-êî"ÓùV¿<ö¦½ÈŸÍ2^ßõŒœ†£Rº ¯ûgêC€î#ïf hbO—áùv.€l-_…§0VV|Ârv¶¤³ç¿ÀŠÔðõçÚ–=|wîòì/uH·LkE™·^É¡µå®tŒÊ‚ 7ŸÄ2 Ÿ\ð3^bCKû©S}o7lܨO=2QŸ+S½‚À¤ÒB×{ëØˆ1›ûüdéÖêpÄÄ'„¼„3”†À¡Ú8RÑŸø6“«M$÷r´ BY¦µÎîMBÈ"ä¤XÌLâø-Gx¯£ÙkæÒ†£e6Ÿh|özÇøVàaÓë_Ö Ar‹&øÉ#¦AsÂXÕÙO£–C·.ôèãyQýFõ.™_úÕkp²ö‰€®ß¼¬À«Ï§F_š)ë.¤Øñž,P ² Ö¢©òý|dÏ–°´4þ¨Ÿíìf&´~ÎkÕ,J`Ôq‰ï e4•njs­”9}Gboœ÷ྀ5GË–‘ü#ýÓ6ù1×ý”ÏË)ìSéÞfEƒ¾”ûµæ‘6Bg í <¥'”žEÝ,êq˜5—º8Â,Ö Ù§O†6¶â5§^(-+”„/$´“”ö ÚsRŸ•™Á0Qӽʆ0g÷ü/uÚ‹—I¬dó‚( ³ÅG42é–‹cC§CÌ‘S£Ö{µê~Ó/ÇrÞS.áQs ÛQóÖ8pßÖjý½3|œDõÁÔ¦-)h£ù¼•ÔåV½­ ¿ô% |"ªï'$¦Ö˜ôŸ”×…ÅzPaŠ †–SÁö§òçݤê-XsïÞ4|%ƒ ê mxϹG h ¡4 TB]¬)¦üÈ µ9ïͺbá.¼ÈÁUË$s“€}HúrY¯tõÜm·©ÌAô­s©ÃdõuçkóGp×\© ¯‹ÝÚësªSŸKU=zÝ(¹OyNMðôÍ"§[vö ëÖŠö’沈vßÔ¤‰*5!Ëët+yz2î”Âp¾å¿fÉ£Fñô}#-ùŽ£$(‡uºG½ ÊtcÓå# 2Ø“*¼CÁl’·EiªV¾aßF I²u‘‘Ë‹‰ÉE²¢„âf¤‘uÁÚ€HBuBúªdHUä&ë{}Jÿ:ÏR\O†À‡o†£sV^ÚÃU¡éq­L&¹ð@4yvq((×+ÐO’ƒ2¥GæÉ‚ †¶õŒ~­ëãü±÷j„)ñ˜gd€ºA®®{ÌHia†äßo²µ/¯=[z¨™ã~~“=¬”žwà ˜XÁí½³jxÚ+ß0ÝÊï‚¢g¶Ë™òÇ„ð»eÜÍAèP‚ú¬…¡mÚê7‰ñ+,'F8 G‹Á,\Ÿ‚¿°Ì•PC­‹S‘§[â( iR!ÛEÇ'R¢Žœá.DÂX¬oÍßHa_€j6œM=6&/‰˜B호ƒœ!¾Y1GÃg7CF~~JJ"¯pu è •ùAqrS.¶¤ïÚ0³É6ØDR—y@˜ŒŠ%£ßøðël& TtÚvIù,–0`Ý|Þ-à…Ç f ±=$Ì×ur©2ÆŽÄÅ®:a@æÂ[ö½ÐÄÛ¯Ñc(ö¹kÝÙõ¹2ª%ŒznÛ¬6½.šë´ɲ­°øÏTuò¤L,®¿hË âQÍÏ®çf/¹“¡cm§ì3=vÞ |FðBê¼Ëm:[óÀe#oæó™lãZË]๯*˜µq>÷— “Œ-°»š=Ïp/¬4aèÑËð, ÚDÕ iLûéL¨€ÓØEý@Â>Âg\ Ê-çÿžÞh7­C\z[T«ÏÕ JbÍ ©£Žnž%p“.Èmê‡÷•É6NUpZÁa©³ÎÔqaRTUvååž,ØÅ ¾æ{*˱\ñ‹Ê{—?gµÇÙª —qïâÁ‘½¥+ŸVJ9Óã¥ÏÏ^æíFê¯dKBLÆ7øb\Ò{ðσ‡bÉÄOƒfïOâë1¯c›ßKúU> Ûi£·ígÛÚªcp=C[9| ú$%PÏ>›þ¤ ñ²º©D‰½¦ mè1Ž»Ýë“I%Y×g#@‰üEpžA(ö­ºQÖ· >Ûn9³Ò\¾ØÊƳwâÝmWß@˜aXªõ·;¶WËg,hÜrn•©>tIYŽ\~Ò-Ú)+a‚4xé6ÀÉ mÀ²¤ôúfšëÉ`•Ø®„³ÿÖ[ðîGþÎ €.: Ñy.jMaØ7›ŠÐ¿ìärø˜v\9»ØµßŒ/ÙÃ&=§‡:l^Wä%Èý^/5æ—º65W«œè·Gék9æS q¢XÒºM¿¤­@HEùZÑF]¾›¼Žn¤„?ÌÑ )ÕÜ5¾hõìÄFKuìñÝe÷æç Í|«ZpžRÜåÓ:.ÃÛ¤3ÙÑÞ¶²Ä7”0º 5îõ‹Í²S>&ˆCÿñô;XªòÇð¥z ¸$0%ÞZiAzàx;0—ùa!¼•¦þ¾bxæÕ™·Ä²ibp—h3ß¾}šAÞ_`eÄ3mÓÍ ¨D~®jŠÃ3iO‘¢gTÜSÞòâ©©×­h¶w|¨Ú‘þ²f^ 3YïÁ·ºJ>‚Le°¯ØÂŸI×È•pý´i¨Ø3íõ(mÖ|­@XÄEZCI,¿æø3!cËÞ±›XÁ_[‚Þ×eØL[𫢯‹Ƥæ=”¼tA yß ÷Ôû£36*j™=Ò¸hŠÜå:tò ?“?xœ„üøÈŠC°ná$¾‡‰çeÛ!véSh6³]rÏpg?AªäÏ6V×SlLqwxöhŹ3zC®Ûʼn[Ë/ß;HëÔd*h4â?°y3ZÂbÀ”ÌV2ÕB~00©pwæoßàŒ¼ªÞlñŽ‹'hù¥¼ý¹¾Ùµmò=Û‰†^™ˆ áÛULhúÂía¦æc¤ RJ4g$8 ­‚‰mP†¢¡ž-VSàØ§°^à6v$ t~Ÿóî÷80C÷¶[Ìdb‘~P4I êî®»Éß µDíJö;”§•ÍŒŒJaƒ˜ó§ ñHÚ¼Ž½v 9TÏeuÇ`SÆù†ÙÜšÔY⑎ÒAþ·÷–ì¬#3gTj¾Èdüݯ»¾S$çEn$}N˜¡0ºå¢JAEÓÞxÎXñ‡”WK¯ºZï V¢ ‚sI(ÞçP¦(F›‡ë3gà~*§«U‹ #t3o –ŵŒ 5à•jë’˜¼¬ÿHûÅÎ᣷˜Ù5g|´LK»^À×À¬nÉàøÒÈ,ô$x}ß«‡d3Ãù2‘ëF®<¯‘f@tL»ÑXVmßš’Sˆ`5÷ƒWìr`xwÁÍs³²ëóð=ce½»¦"•’^ •ÀýFàÆ ·õ ý›G–j%Æ.^V¸‡XìC ôWÌÖ,qÉÅy¬6ZÌ]ëc’ ‘i^ˆa}õ£³ò%!ù3ƒqDÔŸ×ðB“RàÏïv¬LÌE‹¦«u˜IýŸÆt6¯„ñÉtµâ¢œQoãÄbpðã~eŽd/6Õ_A‡öÓf"|ygÍ;0ÌÆÈC¹×¶f.Ð)²¬±5Àv%ü; ·ØÁpôÁ^¸yT±˜{Àí™â»«ã,}uÑWÐæÂJÎõ92}ë+šk5ºü1/q‘–4¹È$ËvÉöI9Üã9±U¾,™2KO¾Ø§;T¿™ú<•³eµBNÞV¼µÆù/…ÙÓ üÅã~ˆi:üÑ¿tžB­½”X§Ž’yÚ-s©]6´v•‡§çÛ2ErçÒºøâÌo>p…vÇ—›ná…eí…‰E‘ì*•o0 .aº§œ¤­è߃m·ÌrÞ[ÎÎï>@h—®”|g\é¼NäƒI 6ãþú<ÿ½øK—Y ›Kÿ¤UDñ jhÁñ墯Œbõ©£+õwU2bõg¹"¼Ç,+”~VË”ºÐ¼{:«áúävÆ(ð´+ðHKy)Ö…Ÿ3/Îk®ÄîùÈ»„CrŠ…ùrMÈã¼Û NJé£/õÕÐESjëÄ‹ŠÊr¼Äå€s}c—úvëâ*αó‘—½°-|Žc ºªL’o%aRK¿, tç¢ÆÅošTÆH.ZªRQ¡“‚¯Ü1nÜcÝ ðüö•ChäÃBœÙTž SîÍi[ÅŽ2áBbæðªïy Z~¢Ymï’»WS«G”žXA@«j¾ð•Ca0=%nõ˜É3ÈÑð.Ö%ûñh¤5>êMÊ'§ JìtJùª½íátÂrï ½|>Y«™_f»²»g½ÑµÔ·³M³IP©èœÙ+üù*/98ÍVÄ«8&\ëªhèߨØUå²ÛÔu‡*/D"‰º¶koÿP#·±@±~°ÀŒ,,æèü~2s˜ÉŠâ™ aeAK‹ÜŸ¦ëÑ ™%áá)“ONB®u#åôô¾äb=Šº·w@Õ#ÜD9KØXÈñÕˆœJ«_6›Âfˆ âi›?4üSÊ’äf ÿŠ"è4Õð° z?“A$•„Ìi yV@þuˆ¯¾¹ÏrNàÈWŒÜ·ãÌÑá§%ìøI@ŽßSnÌ#ÿ«× ]™z‰]£4è ‡Ik? Þ…Àf¼štÚ]!çz?ØÜ¶¤‹™ úþGûõK´a Ÿâ–@3i  ¡ŠÂ#Y†¢Õ ÕˆM½¸Æm£ÅýîÏ͵ïm¶ƒé)¸òzѲ†ý×öÏÃV˜Ûž0ûì×JÕ™ –h2Tgnh,pgS¾@c4‚»d!^“¶&¡¾ªÌŠßÃçÐÚ3rÝËó· (ܦã~µtAªœ‡Ë^5ŽI‘4÷6Ëê1°V“u ¢R€Ùh‡ÛCÜžSì“þ‚¸HhªÎ¤ô· ]ÅÚ¿£`ß9´¹fý­,1sáygŽs‚c1fã*W:³]³ÀCýí}Éî ÈXå]YC™ÔÔB‚²XNt,3Éñµ d2TøG#¢^-õ姸—:¡hò`ƒnþO~?bÎhƒŽÌ„lsŠ+7ëá¦~¡„«{º®^n×efžùp#´iä­šž;‘Ì󘩖ö„¦É&BRòñ“Ò—ïsýaä2§ßÁÌ?ó`‡è³¼òÅXG³`Æ2¨«žáWÁ]Ê$»«—JåR.ðSÈF[Œ09¼ÓA%º'RóO&ñ->XD©ÍëT©"¾r–Š`W¤Rqœ°.B~žÀ* r‡ 娙vþΊ{]¿¡´µè.eaøÜfí9«Ò©ò¬=KOJ3v¹Ük†mï&5sÉÏ+2Ü\{©š`›Èc²4z½B͉½ÑÝR3›ùCíwYˆî–ô°)GeÒÊf$è lÞ¥IÿP.0Y²'µÛú§÷*§>…«_ ¯Ôâà TÊÑ>Å‘ ¹‡rwÍÅ̇2„v˜„ŽÉê$k·/Þâ™üêN1is1™Ý…bƒÊ³eÈÄ=IQ‰EÚ/Ônâ*´ŸÈ韠 zg)辤rG^"u åˆËƒÆ€U³}w»¤ÓÊ:ê€Ðg=¿Ÿ÷×Oh·ªDìJ?YÝŽ”{·4–4ìmò5¢ñj’S÷؇Ü* .ºÆ¯È„":©—xã™ÜýiŠ˜(Q^ øÊeòÁz—,[_} ÖÚ<ïŠÆ«žÐDÌ¿Ðf5v·:%¼ù\üŸ­+I –"kÙQSü²r¸0Xä|§ªiÐ×NU~lTb™ÂWÅmˆpÒª‘…<*Fù6"Ô·7ùé»[û•Ò‚N¬(( êЖ äçõÉy<¯IÏÚLÝÕï„ßÑÃMµ”­aëÜÕœ{§Œ ×_µÔ~Wý@D…2ÒLRágþk=TÈ(ÜЂ­>Ï ²£póB‘·8›Y“ä#"ˆˆmDR¿Æºœp¥Æu](x×þÙbxõ}×tÇwþ>ØU\h æþž©¥íÓ/6˜Û¡éB“~ÄÃòn2žñÏQŸh¢ ¬^ uLmÖlf_ãtîvº8¢jèÌn¾[^ ùȾ×~$É¡Š6«ž0mÈg²Ê¯AÒ+¡ZŸˆ%ˆ£ØNݰ-à÷Õ&Háj5]9Ý„¸‰ƒ”\ð¿™bªã`ßxßàM”¹| ìŪß}}}ž¬^ NL±Ê ËÙQý²’I!:ÏŠía<æ×wq~ßJL¥‘°¾0™à£Õ™]«ÚïguF5ôŽ»ÇУ¼¶bA;ˆ<—•à50ØÎ³ƒl[Oõ4¬c/þëøçWα…Žñ_"óVæ®ÇãÖägìÐ;f.õûF»<…Ë–[ ƨž8ñÊ £® U4H¤¦ÉxÖ†à€IѲÎ-ù²ŒMI! ÚLŒ…¬šPõ¬,üQãAÏw-ì¿DÈlŸnfâš8˜Áœpä–JÐ7­¿@»ì `&Œnd[³'«éoø:A$¼Ÿñ)—àR¸k“ ÉG~ž5ÿ¤t6û£˜7©áʳ”1UÓ'hÍo¹Ìpü¶üR_!Øš<Ý8¯3Zì!¨~˜¹é2E5™í:Ll~Œ{áˆjÎýFSY%¤€*êñÿ•žÄjÒð¶ï#ÔÞ¨©ú>N®@õùœêæžëñyh~ItçW&Þ BÂY‘•†.”3B~2wçÜ+ÂBˆRàÌÌóôsp)m$£~툣p’ñ'ÉÀüdsÄw¶½¯*Võ´›wœN î4èS¿Tm-aŽJ¿·?ÆÕHÈ&¸ña£„Ú®nå'OÛ¹†ù#ñg†—¿bšµùmÁ=ól¢W¥Àžë:_/JgV½JI¾»ÔÔ‚éagæ‰.lâo' ¼žç,Æåºâ÷œèÒþ8TÂb ¡³ë³S6ž7dÌp¯Y[#2/ÃR€¥Ë®-õ3þÊ9z%b‚û¸ÈçG÷ ]ãKX»Þ3ß°–ó럭µw¡ÓÂ2´í0fG´ØRQbÀy|çr ‹:•Óx 4ÊÖqÁËFùKCʹ |Mƒ·X$ilé–Ò<¤ ¼«Ùéë4â(JÿÖÖÙöçÂIH×ê(aEIËõõûä«Ä OLÕ÷ *{|'R _¾Ûí{é6Ã!Ú°äFÚcÆ/KvG^&ÅúH1¾óìz[ôX{íˆB:Â9íÇ– ]›DšTâà›}Û‡‘2ühŠˆuüã2™X`C²IS¿M­«ŒäÞÒïÄóK­Ø5²¸Úï:'N‹GýL‰9HD©š£Öµh/•@³hÏ?õd š8Ö[Ÿ 3à~÷™q[Õx½>4ö´P›¥Y‘ âz|ø +%åýÓøû 5Ú 8"È.WZ=…Ž‹9rV\nŸö$‚ÈŸP ÈÄ‘üŸxèí3é dåÉoîÏjÛ¾µAá — c YsíÆ;ÂÞ”֟#¦ ù•3šj ƒ~ºp Ç*ðž&KTäÛOa6ùCð_}GM'Ï¢8-Em䬌¿¦òöÓ¦šO2ÕºÔP (?V`âéÚ±ÊS<·&Ú=/@Çq4@Ücj¹‡<û†îK¥«^Dô)Gۇ͓æs´]Ó=uN_Êr4vm5vjü[塎\ä×I®¥®ô“*<õç_)]±\B»¦5·_ù8+­"M.ô´V/Ç¿ÝT‡IJÙ¨ûÑÈ[·¨PÎ>èŒ!(;•‹æ,ˆ.É:$Œ¨Î[áítèM5bC‚X§$_ºfÆóÛ•w86 \´MÅÚŽ)Á@eµÏ¦¨ƒÊûÒÇ >H¹Ÿì\ç]#®FÔ9¸hHÈcO#4O.ØÓMu› ÛaÄoo!gˆÞ»–“í/ïÕ ³¾´\7ɸ1lçþx0ø^q~P¤?¡ÁÛ),ÇÞ‰¢ÇÅ:¸PÇf׫—EoŸÚ£t5vCúÅÑü—ZæôÙEqYªvR£ð™<úg§M¿¬̸û=h±äwËßßÛvlĉø7#Ó[?ò¸š©Q¨+èS'Þ·ÍÒ•êþ´JâtA® ó^±‹†&Ÿ¢·R}À!dº’€ÊüAÕÏHÛ ÔªÎ£ïÛY͉¯Š:;…0| •ºeWÅÜŠÚztÿ:O^D`>%¯“(ÍI欢* YYŠMÂos­…RÀµñ:Ô¤ïh~ÊŠÕ¸åº@Ã[H¿õ@ü¼;D {tá~/ÀTãCÁ\w—–°‹ˆ°³íó+;âÈ %_¥IBÔ„ûÎû‹gÙ¬ø±ìzæëq#­Ü#ÛàóþˆÙ§’¦=+Ô¾HȲhPÍг¼OácçW{\͹åM©ÛÉs°KŽpaY39vÁN/°ók ™ÄD_ Q[¾Ö0‡v\R)ÐÐY3n¦Ì!þ˯m ´eE܈ã ̾<ÃWeU_YäFCØö¶å5W?ôã×pL µÊ!V7šöËñ݃Ħü ê…Ü”YäÍ…]¡f„Øy©AµM ÅX§Õ“ËÃǯß\Š$!ó™µÃõsÈ¿¢o*£¨ÜšîVcÀ{ô˜ÀÎÕÜ•RêxC©×¿GÉÎ…ÜÀ÷°þáÔ`n½Ðè< &“8{soîÃ?׃\ê]6|÷½É³c<²¢¹]֮ॗot÷²#ƒƒ ¡}U£ÃZdNDͺ‚‹4¡Áœ^…ﱚLtœ©¦ÞÑP¸€^±ûžQ¸?C§†+ €f‹ŠŸ,å‚)”¥o(&܇]Õó°YtìÀH÷â‚>Ë´‡ö:—ÎQÅ&ÈÔËn8@LùcYA™Ï¨2ýÜ+ZM³rÍf#ÂŒTÌ; ê?™VÉ•¼3šÑ@.’ÉÅa %&šMÀ˜AŠ0ôkQ¬ÁD÷#%ÇPÅÊv,”C.ï]ŽÈ­»ð#üìo£»ïð ËÑ¡LCñ“±Ãê!߉_ohg°*Þ5*måiÓœ¾ÝM9¬ïOÇkåx ­lpÀ)VâØêM¨Ò/ÈÑ©å‡Å¤mVß±‘æ2  ¸¦S€&æ„þ®ì' ŒÅÅö— „þGôÏéäw“yë­'3ðe¡SÌŸƒ„ ÷°Z[c=èyñ‡ƒÙ€·yˆæK:áìPJ¦aÙÔÁÇ7¨°$0pŸóÌíâŸl¯Wæ!š£ã5ì¹ ­ù½ÓuÔý’¤’-Ê+ti3.”ñõ{£¹ô{*m޵Ñ'âEã<³×°n†¼·—ñÏù“8NÔ®sP}ún`×ÑEa»ýÐÁ@÷»in†¦¶l:»‡¡UDJ¯cG=z2樵?UkWâýre" Ûå›%,`· 0a\ © qïO¦TÈàÇ/:©ÝV’ú¤sWj£5Ë& f‡Ó~-æä&\^šX¡æ: CõÜE(I¼õûÕȽéÙÊáþ©r|C&q7gí…ùnz³ýÊ[7Ð$ÖýWüörúv`KÔ¼6fç=,¸é ººr xë'ÖÖù|ñãxWÍÅ€KÎØÕ‹ÞåYùï?D7ë¶§3O‰º×¿ŠŒúä:\Á ûÙØ1|Ín­$E ®ºö(#@83–¬¥|žKÅëü³¬rß*@Þ9€å†î^@~sæ?ây˸Óq•b¡VÅ{"µ°S7-S< ¥=J±$ÌüiYur½¿&·£‘¯ÀD‡b8²vnº 6[{ò›aÙçÕ Æœi ùÊ}nûe®|mÔÎ(”°ºiÁjå Ä*¦]Ù©Lü¯/1öµ`³ ì’¦y\jÈödeùÒW RJ:4ˆDÓÑtÚýœvº£è’aËõÑ‘2B¥#†ë]®Ê¬"`¢H…øàT·Ìþ¡2¹x<;à«‹þ"æ’ààaâ¡ë*Jn¥€»°n¨ÚÓÄMÈ•Š!t˜u‚ÞmF~\“+ÿÙ¢,„-¸b³¡eÏ^NC ÷*©b1ŠÎæVÑ;OC+ÛÅYï—[ ÐX'¹NêíXošZÁÙœÆÈ‘çø˜Vpb/lËXȬ:Ýo¢±¡­z ¦±Â5lèŒDü|Ÿƒ›¸_Ì߸•à ¬ø­†îB<Ñá·#ãõB»NÎô,A:YÈ«€ÌÈ¿÷k#àIU\@Œyá$–s»Ó]K¹ å¯öHJ N´"Ö M¯Æ„£%ÀÏÝpÑJ›ùƒ»ú4a„| ›° 3˜ÞÉ#ÜØô>€«£1 ·3ÑLJÍf&?-š¯ù^l‰°h…Î(‰6¹AË ”¡–ïìžžÛZç•5ÏÞ>L–„O&.½ñ0u U,ª;Øú•®Töœš é‚çÔíšHu]wªÛô.{²Æ SÙG¸’LR óyšãdÜ%ÄQß‚(Éš[X™)(úÓp”Z‡‚6. HÜmüj*=í‚ÛÁœùP9‚û|wõ±±——ô±cÏajrî›J¡ƒXKjt¾Zb|i ¿¹´8¨¹Øêåõ$Œà«ƈõÄ»ëÞ‹êòÖ» ã•“z ¸‡Ã&ê¹OÀvëXvÔMršêìµ'20NékžùÇŠfÜ9N˜¶€vÅ”¨õs$µ'«¬IlFJu":‘”ü´Þ—yR\\ñöê@*à´y Ût>ô¨*ÿa€ËÕsdouœ£ÒY‹è$ï‰qÕ±z#ŸÚÎõr7’ëΤ*¦.LÖ¼y\‰bŸ<|·nìÏÕ/DI­=~ßaNª%1yÜÝ «IVkÉÀ¸Ø§š2“0•¤ü…ìŸ KÅÒ| [a’xÆ#Ü3„ £V?wV”O mÑRÂ.^Ýü´:µùØxoçfTWc+ÕÂo¹¬[° BenÎmÆ wF’bG°KÚ V[À’†ˆ˜êM¨H®È„ðUù›åÊ„<@9ãÝ™—ÈÍÆF-2iÜÜ ’?ï‡e0ÝÆt{m„y’bZ/VÓ’½£µ…¢‹õë£e'‘Z×X(Ôé¯Í‘1Þ’ydÓ¢¥Ë…iÅÎXõìÕ“Ç1:é›Fq½RD x‡•,¼}ÃTÈÏ)Ä,?`~H¬ÍV,ÎÜÓN{¦:&_›ÃÁ°ÛÆR®!SuÂAH6Z Ó3•½ 5¦È‰Ãuãħd?ÜÈöËØ÷]_Þ J‰¹x4‰±±rå-KÝCe=Cñi*_ý#Þª]§¹gk j] ¤XažK9KóM¼Žr}œµïW{Ê|ÁîéÓÏbHÄgëÇuôÏ\‚#èÌïvPWHô˜n+-¬,cúõwé^  ž:2›Æ¼ƒÕǹŒ)áϺòðÓÞÌðÈŸ<°02ýl¾ê6Iºånüð%JÛ­¤Lú¹0Qù •¥§Õ]5¿—µªÕ«pqþXB°â‡ö#Ú† R4aC*éû¶=?zš I׵ݲ– —êÀÂ6/ìÙ¾>ä-—ÂÚŒƒßtSûÕ\3Tó!÷ù-˜ŠtGŽ‘VãÞ¨Éóó ]Ó5áu™áó3 ‰ A#Þ76ÆbæNJ‡Îa,Ÿäxì—ñ3—™”õ'ü•¸³”Âìžü®³QÌpØÍ Õ?!‰oÈ*ŠyŽú–6é €Ÿ¦^ê|½Öm‰é©'Û>È}ž}º…sô¶¿×U:×|MSla¤€Ø–¶Áƒ ¾<·§&¿ëÇzáÎ gªvß÷d™š¸¦ëP•Cˆ—7–ðQj)°Œ+\HH·cŠ™bÍA?ühÈäÛ÷áŒeÈçpŒ4ŸÚPqwÇ_m?Û®r.єҵ¤KGMhÛ–(çÌ&Ñhÿ‡…Å” þÞ}Ò`„iúðPV±ã¶CqpµîÎô 3­>ÓÚÌÕu÷¹™IÏþLàž;#mÚ÷!®Âý¯ªžm¤Þà&‹µöFbt÷óQv-Žw×q;Ö9ý´ý€GRT'×ÉÞfÈöÅÔ_Ð~D¡_uÃ0kö{(Ü•Á²u®¯ ñïOCœñ›÷žk%ï¯($R½·ìœ(ÔXQßY_m÷F -eõÅêΑ`•¥` õäz ûõ‚'D…ËXY„Lç6ß'Oçy>a½"’AH¬´ƒïŸñ Q9Ô;ì· î‹¬±Y¶$wJo¸EUqxü°‹{aO5¼$Œ–É) ×Ìíà©°37¨™w!|Š:† ]¢J*Î> stream xÚWuT”Ý·¦K.Aºaè”é Aj€!f`fhi””–Tiîî%¥AºARîè÷ý¾øÝûÇ]³Ö;ï³÷³÷ÙûœgŸµ^}9[¨5H Aððó% šòƪü@(È  à±°€Π¿=x,F  …Hüƒ£Y!6E+’ª …ÔÜü‚~ ~Q  Šÿ‡…I­<À¶M^€‚ã±(@]½a`{r¥ÿ¼Øm8üââ¢Ü¿Ãr. ØÆ дB8€\+ÚX9ô¡6`Âû_)Ø¥W >>OOO^+8/f/ÍÁ ð#z 8æ²üj eåú«9^<€þ‡Kj‡ð´‚Hƒ3Ø#ƒÜ!¶ ¹>@_U í ‚üAÖøƒÀ øs{ü¼ü¥û3úW"0äw°• ÔÅÕ â †ØìÀÎ €¶²/ Á °‚Øþ"Z9áÈx++°³•5’ð»x+€²œ.À ÙãŸÂm``WœvþÕ%߯4ÈV‚Ø*@]\@ïW}Š`ȹóÞ|±ê ñýÛ!¶v¿Z±uwå3„€ÝÜAªŠ²&¼¿mö @ŠŠò@n—߯E ¼]A¿¿ÍÈ>ü}]¡®;d+ °ù‡ç ·ò0w¿ï?ÿFxüü[° ` ²CðþÎŽ4ƒìþÀHÀÀ^3 R„üà¯ß_oæHÙB!ÎÞÓ4Ÿº¡–¡¶×_Mÿå–—‡z|yÄ<Â@¿€¨@TXàÿïL:Và?+ùG¬*Ä ÿ£`äNý§h?•Àþç pþK ŠT0Àþ·àŸ…6Èÿÿ[ö¿Cþ/µÿÊòÿüפìîìü›ÁþÊÿbX¹€½ÿä 5ìŽ@΃&9ÿ¦>ý1ÆòPgÛÿö©"¬S!±G*›‡_ˆ(ô‡ W{luÀ‡?”ó‡Ýð×Ü9ƒ! (üë®AFÿåC›ò>#åùÛBÎÒ¿×U‚Ø@m €°À ³òÆCž6 |ù‘Ói òú-h/Š@†úì 0¼_G+. à³úeúø‘rãý |vàx…|ÿ„b>ç¿!R}|¿ €ÏyÐPÛ0ñð@$ñÅñ^ÿ€ÈR¼ÿ‘µøü†ÿê߯C^ ¿¥ŠÜœÿàß7ä²Á›‚ÚH†8V…´\VÈÑxòl|"è;yu†ód]‰ÚcK7HAêÇ©`NäŒ\Çäfäe’=»z'c  “ÅW¿7‘³5-˜vÖkÜ~£$®öàî›êíí¦–‚[{Šo zžg²”ÜnÇ_2vK±6”]”:|Ãf«ÛçÅGû‰M%&&ˆÒ*—ÑZ&_)71Ù¦Ê ?‘ý|ðPyçǛޫ}sÅܨà•74»»®êg»Ò©Û]"Ô-G,ë]JT×qìAg-!ìÖða¤Rõí´™ë~oŠ“™7jÃkßû? Cˆk[“òkmIÂTë $ÊT«sziøÍnæ¡7•´ðÚ²šÑ«„l,–›ÑíqƸušd#èm u÷­ˆá;²T‘6ŒGn»Ë¯Î:åõúåŸrQ1—;´û½\Ýû˜¼x.xXM|ãû¶Õ—Ô††¹–J‚‘\:šíªÃ»ÎRGk¾ÙD7ÏUÃ…!K‘d1ÌU·-)g¯>ŽGOá‰:f¨õZ}xöFyêæèDdG:ªÚEÄî·2‚^^ú™|寧HwÏMÃ_|ç±áLhIð$‹ ´œ½ÈzþåŽ ÆãI_óIöèdž¼~ùé¶ßòÌ=<‚fµO“–ÓËI® ã.rœZ7ð°÷#I§¢ ^Li¿Ü%Ý$d6-f¬õs@mÞ²‡6Ì?8Y-àÑ×—x OdÆg»cmŽò´«’Nä¶}kø¥‚òÁE Üì9ŠˆÂpÃ’ïmYí®Aü0·þ9ÀA”wø’TJ‡ž0ln@æ‡)Š+)nùúCaO¹ý^Æ“ÒŬ™nŒþЧ@µenBî’™±T=+kû§U>Ѷ$;!$J8ÂÝi¨k¿ÉNãfTKFï¡%›òù€òdð üDG¡¤jwY'Î+˜ŸÐïTô AïàgJïö‘ó½_ÎyÜÊã3Q;mÄ7±•T“xº˜– ’l"m‚°PåPåƒÔŸ-&ïßó”ã‹ËI¢P+ÇËÜ^Ä¥ô´çåj40/LŽî˜n²§fmÁ‰‚¥\gŽDÌÛÛ’|Õ {ÃG͜ǖj˜¥¬G¡´ÖbU ÞËa/Òg §ÉÔŠyÔxʦ÷ßê;¢†ö§ Ò(P*˹0ŽšR?eýœ¡;‰_Èo:B«Z¯R¾Ÿ', #îÕÂ,<þxúfxS%YåÐ"³×¼“F½[iæJN}ô¾sàkŸdáAÜqC{rµA}»ç—é©;c vKfeRïõ‰Do>>üy™W%áæÁ³èÍí²º‡ô¾Á±I™6Mµ<‚M@ai5MžY×[W[AÁFØ4ÛÃÐ*Rv‰š<Ò4ñ ÂÛ2*Ôe”m|Ó³òNѺg8í6a_°Œ ’Îå´ORëÝKÏSè‹›^¯3£$[LÑ^æ±å¡}¼T³@ÙEûÛÓÔCvêmÏLÁgæÄƒ©¦– QÒ”Ò$ÌF3-Ê)eÜJõ±ãc,ƒdPË0»+×>¶©é©W¡a¾×_W‹B=šG˜e+~bËÉšƒ&#å bÖu9µu90±I›%`û²é_EkYlEÃx D +·ÚUŠÞmÙäöæ‡Wpô£CNÜŒ0×"f¯¼ƒ†œßˆªßÚ¡ŒÁ k(ËeTãªÅÖ2ÓOt›U(Ds™åÙµ1X$_å=.[ ¹{ºÏW"ôžy‚æ~ß·üÀ‘âD +dŽ¥×äS‚”šÍ ˜FñŠ…SëÊt™'ò²Tܺ ™j JF”`Æ–W>Ÿnx™ÝdÓ«»ç´l\…Æò݃ ÂLÎôŒ)ËjÐfL‡·+þ^«ß ÔÕwÉŸx‘Q ¬+t O‘õ´%àqã$ò]5˜_‘ad&Ê}Ç5¼íLpèTç4^L9õE `­ÿiCCbl»©½:7ÙgFìm,[&Û¢K:Ç3Lzío»´_ÎfÖh¤ðòí‡Ò”YÉ]–fy‰úSd£ 0)ºLvÞÇ&ɤËïô„XêçˆH˜Í ÚszP¡çš»«gš÷e_Œ¸ïhe[={Ósð*F[8šOÇMßHóbO¾IÖöz‘ ¼ojo41ŠÊñ¸8„•ý„²|ÇCYv4?Våñ/"ðÛoìa])äàzûÜ­£;ü;n‘öøóV¢lZlr@|\1ý[ÿ¸JeŽ£5IýÊé«¢!vX¤O !>Û!éÏw½±s_ù{LQý?>|uqL' K$Ö ¥ò ‡+ *À*6jnÞ½GÈô*´W¦Š¡]pã-`¨Ëϲt”b'5ìò*Ú§­Ù©¶0.“¡qÔcÚN9t‹DG¢\^Mí3´ôkÎ0å°]>ìnf5€dëuEÆ™xb¬èÅ¿´ÅjèhsÀÆ+@C”ù°ILJi4ÿ5EÌCg¶5µzL¨è—¯ memÚ\róÂañ¤:‡&ý¤`¢ÅûlÁ oâ_îý§J X§Œk))«$SvÞöˆ˜˜•­õYÖì¬0w¦Ê«æÈ]7Ås%Óä‰Z¾+ù¯K"\yD;½ú7Û?ãD&}Q ÀKÖ{x|mÑ®¨‘ÂÁ»Â”_@°¨wkÚ4¬NÔ½©8ô`iñ/éàcòöÙIÇN¾:÷,>Ìí¾a»f’ö?z”Çe§¢¿cßQ<Ä¢jðÜiGßjQÞi•õÑ lpn›°´øŠ«AÝ6nö¥xELx_[;ê(>—¼SðB²H±híüÔ¿'Dk¬LUÞÁ¸÷¡«AL¸|8JÀËF y%$Î}@×GTô:?~*&•ÀBÎ*žHw‡µ}2[ùô%ðâ2>‚5†Å|#)¥ ºa¾CÆ¥=kŸ'¢½éõ=B¼»¯_bhÐ Žþ SØþÒ3B3ÊÜ=µ<˜IlÜz¯‚ÆÆ£™–7~°6Þ,R1’ÛøNœ~á³'w‰7¸‘í^xüÃÔO±Ο?únë* ç¹1›8,Öæ&û°žrÐêÍ·³ÏÅ£mx>°£ÙýbÎk/Å›(²’ÜôžCK~¸pLÏñÖzs§‘;±¢“h).Áгeãgw;ƒe\dÿm¯áD{+„ÒQÇ¥ûE»ÒýtÚ×8Ɖ¯uYÝ“0}ŸzoA¾YßdnŽŸZAõlx~%¡•Ã>nE™2|W%k»þ| “fÉSë«XwŸR 0õÉ(8žgˆKpKÏ2]­xxVã1´”¯äÓûJÏyãqkå~ã3ͯ¹Or‹Cô®'íñPKì’/ÃVškJ&¼žB<ê5ckÜM‹è’¯´2jy‡æ0öœØa:â6†ûu¡ªê•€ÅÍZÆoÝvÚ¯ÜBï“suæÆgQFµöötå>>—OÙ“?4kƒ•Sç½ß¶Ì¥UXØ„và(=Ï#¡$Mˆ­%ë>,tÍ‹í£ ¾ì ö1¥4ßc]óÌF§·•ÛÝ­9qH’Â"‚·Ì ~ª÷äy{43c¿d8¶S#Eä\Ä[V.EaDÚ¦ÁÁËV†0àô<þÊ ±Ø‹7Ñžõ—¦è$¡O8iÌ£Ô—[(î(×í’üßé>.–?B«ˆ¹ˆñ@±­Ò „_<~ƒüŽ3`¾ÙÄ`»OÖôu#a\mñØËý»¹QbÄúÎò'mÉúÄ·2 š)vþ'{æ@v­‡·‹¦Ñ0’ü–TÓw8ƒáò~ÎB^By~¤`zf¸â]zìêy‚Ø‘RXëê±›«¾£¼“eaÈÏû×¶¥ÒÙ¤ èw:~ {³ür/äFÇ™zrc|xNQ²7ëTªÈ²:ôªðYáwŽJ 9Aq˜%=°oÄœiÜ-¬Ï ó˜Ïœ&qzæÄ¤/èþ } Çlëà|µÑm†¬Üé€ —¾ïý%‡sí•Ðóæ"MÝOòÌpB¯ ‚±ï¢g÷·“ý=qrÓo»‚œ¯EÞ<~ÿðôë\|Ò‡!ÿ\ ¶ ›œÈRÊM:T7X=h«§…KIäãÇL¹¢§ž?ƳeÅž ¡oYrÎ¥hÄëVi²K(´)™Áx…JÏSìœù<ÔzXm­W~‰Ÿ¾–1ôܶX}óxÃ#M…ô¥5‰l6·¯£*óÊkÅ2áªìTÊí× _¤Õî?Ú*4aF)åÐ#ó#Cq ¾`åúÜØW¼§tâ‘ÜC,°'JÞÇôAonV`˜CeÄö‡r o?j 5Ц0v¡8AèyœnÕÃy¼ *¶ÃÖ{Ù·cÏy#LåüØšü›}_neÏõzmw³#,¥j*©¥Gyz’œš¾œÐÙé´Š¶ø:)g·³œ ×Ph4ì(µŠ¸å\u`:ß,1X„ÿh‹7àcC0Rñ¶V»6b6•×›GtÜ\u4Iý¨é2Rs—»ÉýxNÖAmGŠÎ“»3%ÕNï§A²Ðd°üÂg:|êT6Ëšy¾XÅÃ*î!a³Hüåõ»:¼üÎR‡ëâUÁm£3:±Œ†Œò®ÊÄîbX0ÏÈvRÓÆýÕä¬îºüú44íäc¢c…ôæD–èö@ö'/¹Ó¼9M|Õì¨ÇébâŒ#KÏ8$ü½ÛbŒ7•IÛýp £¡Û”õo‚ç3¢]¾ç›ÁcT‚ü³°¼}Ã#Iß穯aÚP’Ùd‚³¸è6L4i™Þc ¿1’,4Ûž|=‹÷ù¦Èy˜ùó eN¹¨çi¹L³¼.rØþ7õNñ±ùß?JÝÞ¿Õaìc|=½äyšÕ» ìJ½ ;÷%®ä>Y5 ¯ÿL€ô®¾ÁX%r¹j%Ý3lºž^/-èZ$¨(‚&?X”‰DV²¡;¼ð¼\áºÿÕÑ¢}+ ï’a»"1x9Ö}êg(裿ÍÖaVxnUÉIêÈ¿Š†¾²é‘ϘÓVqÞþ¸‘µ§æÛ«"×&N’²ÚѾS¾¬dHJMßëf «Â7î¶"J{ñ„ïR¯|M§±¢±ò©R7oøç•«‘4ÖŽYù½¡çï|˜ ÐëiÑ-V¾6T¹,?ºCmº¾üâ&|§nÖç(¼R&oùRŠ»Ë‹NÜØTûéYšÿa³K“/I,ª½sÄëŸJ †S“9-Zì•*Iõð²fH,ê¾%¨EÊ„íÉR†º{Ö(›A>6Ƀ|¨Å|O C¦ÃÓüŸúD7grF~~w¤ˆ¶z­Dh2Oäâ.vxhÕ¥Û¬¨´$VXI¦z ŸïÚç›Ýú•VG]Ú€Õ†haçJoL¡µÏ ‹h6 —Ra8­ùÀßÒ[Œfýîm6 ê–Ò©7¶z5o1ácóG›²|,pÇBmé3gØfè‚zÖSêê'‘¹ƒ)ñ¤ïÜ$iÞúÖ¿\|ÏNÞvu/_,=Š –Ýî(*Þ¹S:ªšºY:fíx¨çVUzöãQ–2ã4»~”ý™°þPözÙ og«“›$L¶«ÃžH¥Ÿ×*Ä”Ìáù$fs%E\K㯰/(‡-1=ÑD{0‹I®PÖe^P(H¾[üv%ÂÕíµ!Kí+ÝU{ÛÆÐñÜ“–BÜCHà®?‡Ö£'çzÊÄ^Æ—…wt–ìWÑÊ\fZ]5'ÇZç—è‰;¯¼ÉõžÍ†ŒVÈ®<þú–OÉ`0Í**¨Oh†[ž`Ïi.Î.£®±L1W!„;·^P›ˆˆz‰™þgA˜ù~ˆ4µ0Hm6¯I(òI¾ÛeÂFˆFxGÉFñÊvˆóÜ´ë±XlZs‹u±Ÿã%rËóÝÙ&ð>a’>,, c…¯Ç† çøÑ”­XmyAÔFïZ¦a˜Ò±ðy®½<¹/IÉMÝ}•³T沬*A?Pã”°Y}Â×í«(ä TG ¨´ Ôöæ’¦ü:W²ð´=ã6õG+CqÑ3Ñ(–ìé[Õ¨íW~Fª³%Ï3|wíµð+?Ôyt’ôë¥åè'Åæ×NoIésИ¼^;dtyQ_ä\í^&eDý&‹š<õð.QŽt耥Ùmm̌⃶ÇéÕ úïúвÛÞÝ/š3´Û NL—/Œ«÷ȇƒ¼.H'—)©¢Ñ eî(>ù“6¸ävq¼l­EL´méœYb,²?â®ëx6¶‰;.Œq%<=Ôñ¼0¤i@™ç-® ÿ‡NÚ°ù«‹¼3óœ]ÖsúžæÝŒ´²4Ê“@œÃÕæjNü~.GTDõ%Ó3®EHŽðÌ›Óþ)–TNåNõlCÆÀWÏþva“Æ~7³…éç:6”d¿‰ãËÌ „bˆç•Ut2¡_¦½È`D öj+Ö6Y¦f=[˜ãNçƒÔ0ö‹iqsþ­FfÊ:þ²-&-Ñ+&w€¤jg…r»XНE7§v(÷~¸PŠ®9§Àëãëu/û£ä.Óe)^Uâ„aù×7LgÕÄÙ3Ѥp‘=*Š}êmFð):çk?îm=Nóš,'‰mêWÔš­gOœO+HD¬Ç¿ËΦ°óùfkê¤\Nñ{4G~V1 Îá¨ÌIs1µñaWÄd¯ØBáôõéòvàr¬2±c EìMçoDY¾ ý4¤¢oï1›’»í|¬“©:ï"ýÈäKåãkpFc  ÌZÛr l¼>Ñtï@9ʃÞb42˜<8 (Ä`”½ÉWP§/°©Y:|~MÚ4È1´¿»£õNKRôZ§Ë sææy`“o>ûêt\ò=Kºÿ÷‹pŸEü¶w‹â…+ëOǸ*±²`ºGÓo‚]wîØÏui6ó‚o¿?s¬÷“Š%";ˆ:önnE\8ìÛ·^R)´Î j}!&ô»ÔÂS‰{öÀ¬9•2ý-q¬Pyf¯þŒ "Äç2$‹s6&™sEYF~ëÇl)þ~£«ç;o´ë%Ö;ÇVnÓ-¬’4ŠQ&@L4 û&rŽM72HX9¬œêsÉMT¢ÓµÍ¼X$ÄËÇ”ÜYWÃû=#â$îvèŽ?Þ@>=ÃÃ*·ï*j5«y ÏÏ$f©±wÄ9ñ:é¥]°ÊØåJ«¶O`É -Øœ¯¢0LoÄÏ€ŽÏÄB4³E™QªZe|2Ѓãí…”Ì[؇fOn^P†Ý8Áå©ObÑs\Ì $z{¦5~ÀYÓñ½5È0EeæŠ_u¾¼÷HêÖ E8»Õ¦2”•JLÆ0´.è®öØnúmƒ¦Ü7ëV×2·IoÔPŒÔ‰@ÖÄ‹ØW6-Úë'Xoí?úC)VÂýº æÚzhwGÁkkg¬Èïc³4.ïöxu¦¨½Ÿ ’KËv£ÏÏlLgçÅ$n¦Y¯gœ\§Ñ„éP¯JñƒðXD—hU©%–Щâa—{AËYá$`M+CˆÉ„ß3{ü›:Žä4œa2–Å—\>¯!4ÐÙêíŸMÞÏ (“ð­Ð11£j€œâ4w'O³/}IaáæpɶÎåiaýtk ²Á§ZÒnCU€×·ì¢ß²_Þá=oññ£˜Øšì\uäºÛÑ$æõ §_gþÄ'äf0’e?ܯÚ?àÃÕÜŠn¼'vt3Ðæ¤ÍöÌîR`T£®X^Ìe?ˤMo‘qf2âüÒEèæ½’wn|þ™XG†ÿDÚ# ‘‹°·þØ)GœÎHsEăm×·´×"B¿ññ ®Ó{ê)Y¶ùøWrBÚÍßt:‰ãsɜРš_0ã|¹„Γ±ßÿÖ»FüM}Ï¡U‹Âmh“Ë®½>Ýþ0À¤áòª»ávhgbMd„b£L4mÔò«ƒoo/ WCÍÚa5KñLãIôwM5óÐÓ’äÅ…M¬:ûMŸvÒš÷Š_þ”'‰ž×ig*;ìyáQk3;ôfMs«Í:+Ê V`SÖN1±P-iŠÝôØ8 ÛÎWΩ6ˆÇXÌ\Qޏ7ج ¼Ût´(Î?#oG™[ê½ñãáI/^vÓH®]ÂЊ‚1Ù§3^^y–ôÐK×Þ]ÿz’¯¯ZpfP£â@× €òÓÚ¶¾ûF®1e¬j·´Ïî¡×\mY§6ù?¾“·é… =Ø$èÀùމÿhr=/‘NOwX„ óÛ¼÷©“Ýmâ£UámUzÙï(Õž8R¨‘؆éÓ÷RÏ_ ªéD±·ðLXÃojbZCÄõ®ê‚÷TlE뫈Z´Úí\èWÀÜK”…L©¶àÜÓû/©ô²Å$iKíÒÆbÙ*äß옩X©^—©Î™¬òñ‹9Í›Vcå~ö|`&(LžA¹ x5×·P;Xgú©éÙY|ZU§‰~°Ï{f¼Õ»–ÞÔ/zσèdÄ6ŒÕ­}…¨7\êD OdD ƒ}‡(sT-Ek›ªŸ@Þr|–¯vpzÀi\O-¦ÓΔ4ÓfVеcý3SfFçåtqc¤q¤ßSÉO$?…‰JCã+±Ëq~ØóÎ'  úÍFÓ ‘ˆ)-›®L ¾˜—Ü·ÉÝÛõ\—|MæˆÓgMBÅc¯Õ Ú¼UQ"²ˆ44jź¯ÂA(ò–u8öر}ˆ‚tô©v´®Žá{²Z6¤$&FNÂååòç…Ìë0%R:ãˆ2 ¡N »˜UÂÛG:Á¢nBc²Ú}”¯‹¦?´¼K»á£xUXI‹¹›)@0º¾Å¦2 Xt ÷d*˜º×½†Ï$^»|S°ë숹·îÛd£EÒøÉ¯öÛJŒÃ.µ_mªu(­[ ÑWΓ›…Z±˜×Τ9‚™›±x$‘y´*ŽŽ¯½9bšGÈiL>o0Q\>wnkò( HŠò¡jüæäK¯Äû%>bÊ6›ŠœÖ²^x&d­>šIQö4Ú’¬y¿éRò•si]ë:§(öpÍðó_iÜ£6AÜ£·õ;¸‡{UðX²˜D¢ íéy §¤£EwE…c®q<ó"ë®ãqqÎàõê©¿lö5ƒ5a‡4k¶›ƒçppõ~—úE—~ q/÷ô·‡i#ù‡µ´ÊÜé°w-G ¥ñ$"Íð~ &w`“‡ð4—bø½h¢gRtCKv«…üW…/›Òùéî%µÒ÷44} ,€SMàmœŽàÏ*X¢(¦mu¶‘à˜ˆHÚ/ ÍÉ«L6—:C`ŠQ6×D¾ö»k+^BSèçÌE×Þî‚^Ù<Òeº`•»Èmצ„e’pƒ |±š!¤ù¹`ÇIõг ï¦Æ2Û ,üÞÎwµTWØ~kìâõÂÞIÄ´jlzÖž`¢,%±©C§8nps"TYhåËk)„ïI‹r ñ·—(x&AÌò÷z¿Ë4QGÏš‘莤NÞh~´ôÂÉ|¸Œ‘ö€Ò½²ÄÙ¯Bù„ˆ²& ›÷­?é|¿í×FǨòy]Câ ®û– b[ô†ù½ˆ  M^5º[:}¯.³Õ¨oóÒg——ö€•Öa£wTAœù¶fv R{ÔmØ%oe_e»Ô1F¡b–es Ï AL‘É—Ê}Ðí÷´ÝÞ w-^*?`¯¤íý¦ß+fmYnç?À½`”ÙR%y ·Å¦ï‰Ì¾©Óàqý¤¿bÙ»+1ÏÖ˜¾ƒ¸nzé nÞÒY.÷áˆìEÞ‹ÄóOl(Ws‘wyŸ1¿¯¦¤ã¨Ïž£.k÷«ÄÝkG©†ëۤёO®ô£ÒµTÜÎ侂ˆaá oBî>¥¼Ê y~†¹§bœ<Í“^>\VæB+zH]Úù ìº+›XΛ5Ê1ù¼ÑhtÜæL­Q9iWÌõ·§Œ2Æ~ºr|?> stream xÚT 8TýÛ¶ïEŠuÄDÌj[eßÊ2Ù³”1s˜“1gš…™¥B^ü¥"J–ˆlQÒb§—D¥·ÒòÒ¢²DI"z“ÿ¡ýý¾ëú¾k®ëÌyžç~–û÷»ŸƒR'¹c,©ph38o X;;zxð¯Åãõ¤P(ˆC¤P^ ‹ Á Ó_ Ö,ÌA|6d‚t†ÀV. è¢)ÁÈôðx“ï@˜e ØÃ!*àŒ¶Â -…²†™|Bã ¾¿Ú”ÁÄĽ”X†,ˆBfÎd C:RÈtÀ¦@ ‡ÿ[ íM4‡iŠÃEDD`Éal,Ì Ù² D@à²AV8HI.ä0ð;7¬ ð Aì¯w8˜Afâ CÁFr¸ *Èö€»£àÊ_ÁN_hàÛé,áG¹oÙ‹… ÆR2™BØdb„Á\휰 ÔE ™Î†‘|r8¢“ƒÀÒìdÀÎr;@F(~#Ȧ° &‡eCôE’¸Å2È9Û2¨ÖpXÈà°¥ç³X 9x>îûý†2àFä3bPƒ‰P¹Lœ'ÚÃm¾—ÔO_È ñx¼‘‘ î@…†[láÁg‚KA¢aÉ„™@0BŒ†‚AäO*’M‹ FGþøÝ’"*DáA`ÄúYqƒÁ_mD,ˆøáüâïÇ["2*Ì ó—nçI²÷Ùê­ûó¨•Ì"‘®=}}€H4ˆ&D ú÷2$2ômŒ_2Á0`òuZ䘾OþMÚßVd#ð{-Ñ.hÿ”º?ÞOA„ÿ·à—Rþ7/Vù¿¥þï‘ì¸tú@ûâÈaÿ ‚ˆ—ËAÁFÖño¨7øu}A*Ä ûwÔ‘CFÂ’‚ˆC0Àâ ¾ú!¶Ä©$ˆC¡-iä«Ûsqãè$Álhñ#ƒ$áñÿŠ!kF E>$lDšK!Ù¢ßÛÚ2(0uqÝô ‰™Å"ó¥ðˆ¢ô ‘«Gö’ ò–Ä à° ˜ƒ¤Åh fI-Þ¬¡1€£Àt¤=â^òð†úi"ŠÂýŒ¹>˜ú ñq~šzHï“àø¿˜znï’ù —ÅBÖzIqÉïöÒ7y EêQL1;°ûü†ÙjK•Ì«[úíDÏ™î:©Tºà ¬P›‹RèYƒ‚iãc¹6¤nÚ–*?agaÁ„tÛT£ˆP«F¬¸üʃòB‡ÖŒc/lr1•y'¡Ý;‰o_s8E)+oÔšßá0¡^>³µÅú¦¼{¬£6ë;<²ÇULemùéJIב¾&ŠŸâߺ:Ð÷m7»×ÕdƒßŸ˜%½µ¹îΜÖV_éºñ++åï÷]³Zfs/Á^Šsþ]ÊŽ³F¦M7›õ>Ñ·Y4 ¶ ‹“󵆧ÐÅ]9 gìÓÐ|­ª\’ÄsN[]9 ›?[¶òdüη!q^·÷~†ê¾nÙ)?ý³#Î ¥ø–6K°6ïªôâm‚rSõ¨$ì§³ÔvÒ¡¨‡2•L™8®ô¼… Ý'Ý¿í¹€­7Ï/Q5Q“o0‰éU½ÑØ ßÈ[¦% “€¾u!£,ñ­žD}bÕa;Ÿ‚3'øØjÞ–[!Ìk­ QáA•Š$¹³ü»;Î&-Ͻإ3uZk½f]‡¸ ä•Tþ®BoÀì%ï~óéÏ%B V÷‡©kªåÁ{ãVÓ•ÿcYñPì[ß; »ŽÏ§Ý=½P}¹À çòÍ×;ÒÐ)H³Í;=çªW«ªu6<.¹«Æ]'(³¬Þq·f©ã¸èê&Z |öÊ.¶ýä±ûŒ-là\剣]¯tòZHc/6á–P?˜z¾˜[³²^a÷NÎçA-›ggÒ¡ ¡ï£ÄÞöb;tÛ3x[aôʆØùA9¥ñzGÙ+öõ ÐpÉÞOn,Pð¯º9€Å´¦|¶ZµÕô5…—[7z+s˜G9Wä²lÞCõQñt‘´FhÀU»¾†øƒ>J.]Ï×ÖØ™–»æÂﯾ15üIšÓQ•¹§9¸2mK݈îÒ~¿¿N¾y2\¢)ݽ{sö†E›Rð|X¥'°ÿ¼Hþ¾×üŠ3·rBJ>6Ñ©âKg|œ|ô¹/¼^¸V¼l6NðÁhÏ¡îJüu=!'£äÄÛäÐgþ™¥x wN¼¸ª—q–) (éjèÿ'd²Ž‘¹L´ËI p䕜ikºáÝÑ%¼œR#Ín¥€›2~1ëö´Ç´ÔªõÃ:á®VÔ—»ÿÉÆµçNïŠC»4÷Jã2°Ç Á\Ï"xlÕµò…YÊüJNÿ@ÝrlÍ• åä¶§“¶¶÷rEd\Ej›ŒW¤»Ø}‹²Ð1º^6–¹'+Óv‘{\ës#9ß!,R÷ÊI7ß+MGü›ÏÃEðZ™/W“‰ífñ(ûÜ®7_$~±<†2°ªt€Tu쟊ΔØ1ï ÉžÀR¾}9kÄ࡟+ºbzƒ$gd[À[»A=£½·êÎ}V»âqOu(â©j‚*úäA±m‘c¨—CÔò”î2†¨˜'K/G_”Ȥ^ñ§hW” `éÚk¦„ƒeT…ñ²ÑXœ°/$£¯£Ï-†ö'žˆÜ3!²ÆWìüahÝÄY©Íw¾ÌK¾Ÿlاßl>\ñ²Fs…ôë{â4÷¤ jefN‚Ÿ.y>¾ø%ï'z‚¦=[{…6v£^Sð¥rgÅèauõXùNuåóן¨ä€é±ùù9îÁ«ô~Ž(ÊþPs5<»ÞÎY¬?všÀ˜Ùû…`h)47ЩmLFP˜¼ÊOmâZ|­‡Þóö‘Å"bÞ>ú­5oZ ‡vlÃ]5wÛÒºA$½"°¥bY“LN•Z[a¨[°Jët·»–noSä9› û£*³o])8va0Np—[Î2AYDILfk› ãŒË^­‡/µËŽª®zÐZ)ï85u¹Ê¨gýÀÂ^Ý9ÊÕ]­5ÌO–úøU‡"í2†1ð¹?å[Çž ½\kÈ?*jŽ}˜ßЧ½¹ÄC]ǯMd㊼w2¨£Zœ6?̓º)%Ášñ©ÏB`~æ£u,Ùç÷óöW¾ð¬¦ã-›®ÞOmÞaHÆÄÑjß@µ{d¼íç©k<Ï?u"tGVÁ;ãÊL£ù·¸•ä>̨-=(pLnd>à›®t呱¬§Î»¬÷þÇöz‘¦ƒ©9¢FRQ;bQèðêåNA³˜`7þ‹?w©7å‹}!B؆r™‚RÖÆKÚí‰Ùn™7Ó¾©;S®L'…k1Á,´LõØÅÛ/Øýƒ/Íê9³yåˆ9“Ò¼€ÚoÈ«ŠL S"“W£²Gu^Ž\¿ßnµ“>ŽŠaøá™ÏýËH)b2>݈>³'-­¾¨?=6lõâ‰E¢øÛW%Ê61Š'ÓÂïª.Ãܯ—{5Õ,¤׿ZgH@†þª kdxmäœ}9m¨‡-.é>oñ³o² “$Ï /k’¶~¬“)ëØ!x®'±#Ët‰?÷¤YÉØÉú±q[ÁôúsubRÚú¿„œŽæÈ>›ë¨æô©¢ÃyŠ É¡GDºd2°%Ûâ`øôúë‡ÊÌÜ*ÌÊ¥!‘¡Nõ]‘Ø;§))L\Ô{º.gU_Ñ{œ„bÓ}Åĉ™Ò€Öþ\g~\ö­÷»1»Ö)ä¯"´¢ƒ‚d£dãï¿ú{Ô|.|’$ÚΑ$J=³‰|tØÇiÓ「ãï[ÊbÔŒ¥q\ÿ¹ÕÚÕšÕÚº{ó«VÍD‡SÎ’…S³r¶vŸi|åmqô1Ï)\CèùGôL­l‰2_A³âÉ.¿å’‘ÒtÑþo²í÷¶æ>RLÚ~æ] y¾@r’ø~«ŽW“uY!˜HLiœÚckuy·éêë³M©—)#F¡6òj"ä™0u¿½¼ÚÜM4]ì…b+ኡtëí?ÕÝdã“yÙš–jó'áH/Žæ¦0÷…·×:ݾ|ðòïu^X»á±ÅæÍC!â6§6Gö])´ôÙp®ÚÊX±2.¦õïà(JãÆ¬©¬iÿÆ í\cÒŽñŠMÁºe……-ês"b—p½2“i#j[¬ïÅyß´Òˆ|M.DÍX¥£æß@‰Œ:½É,uwW¿“.»ÚOF _™68yÀé­c©£9¹MX_ï¿Õð†´‡Ôi¹Yš‹R²JP]iÏtOèG‹œ/QUŠ.aÇV¶8¿c²ó‚Š"l½ŒF?½¨Ƹñ_v»Í¦ endstream endobj 91 0 obj << /Length1 2580 /Length2 22916 /Length3 0 /Length 24374 /Filter /FlateDecode >> stream xÚŒ¸T” Û.Lww3tw‡twwÃ4Cw)R Ò­ÒÝÝ!ÝH‡t Òuƽ÷÷ºßïÿ×:g±Ìu×uç33ÐQih³IÚ¸Xå\œÁl\ìœÂiU-.N'';''7 ìüGŒB§t÷¹8 ÿË@Úh †Èd,Á;Ug€’§#€‹ÀÅ/Ì% ÌÉ àæäúCwa€Œ¥È ÊPrqz ÐI»¸úºƒììÁšÿy `´fp °þåtºƒ¬-ª–`{ „ÑÚÒ íb ‚}ÿ+£¨=ì*ÌÁáííÍnéäÁîân'ÆÄ ðíZ@ »Ðð»`€š¥ðïÊØQè:ö ¿åÚ.¶`oKw "pY= žÎ6@w„ ­¨Pw:ÿm¬ò·+àŸÞ¸Ø¹þîïß@Î9[Z[»8¹Z:û‚œí¶ G @]N…ìfX:Ûü6´tôpø[zY‚-­ en “ÔXB ü§<kw+؃Ýäø»DŽßa ]–u¶‘vqr:ƒ=P~ç'rZCÚîËñ÷d_;»x;ûÿlAÎ6¶¿‹°ñtåÐu¹yeþ1ˆPþÈì€`''§€èúXÛsü¯ãë üKÉõ[ © ÐßÕÅ` )²Bþ ø{Xz`wO` ÿ¿ÿP¸¸6 k0À hrFù"Úþ!ÃwùŒ9!»ÇàüýóŸW¦õ²qqvôýcþ×|9t4 T4Xþ®ø?:))€?/'€›Àõ{É /ÿ;Œ†%èŸ4þå«èlëú;[H›þ'c¯€ñŸã`üw,5ÈÖŒ–Ü„“Óò‹ëÿyÕÿrùÿÛðßQþoKþ¿’óttüKÍø—þÿ£¶t9úþcYZO0äT] gàü¿Mõ­*Ðäéô¿µŠ`KÈ!H:Û9þ§ 9ÐF¶¶ÿ{[þ–ëþ¾2G3PÃÅôû±`ƒŒæé §eýòèð€¬ä_* ärþ›RÖÙÚÅæ÷‰qóñ,ÝÝ-}Q C† >€?äm€>-1€ƒÝÙ q@Ê غ¸£üž(?€Cò·èoÄàúƒÒ €CæpÈþ p8äþ .‡üÄ àPøƒxŠ„]ù‚°«üAvÕ?®öAØÕÿƒ!ì„]ó‚°kýAví?ˆr3$Ý?’‹ÞÉEÿ‚°þ At–$O«?biýÄÑY»8BFý?^Þß'§?þ¿w€Ãæ?’†‹££¥û¿, ÿ…Xü½“ÿÍo½›'ä”þ¸@º`ûB lÿyCÐüÛøäãù ½þ0rýü Î÷ÛÜÅóß B ìþ!ñíÿ” i³½¯«=Ðù_Ù¿ø9!%9ü Büú_ÒÅ—i±Ó¿Jƒ´ïOd>ˆ«3äŽþ¥‡Ôîò'ˆ³Ë©!ŸþQC‚¹BÞ¶úËËõÔý¿ÚÎ ÉÚò@s±ùW8H'Üþ æ7òzüuíÿYîßB0ÐÆÊñ¿hxxÿ(þ›‰GèÍ‹¹~ò_cà‚tÕãO+ N@'Ð/ ßo ×¿†Á âyëùOYz8ZzØÿ+0¤Ò?´g:ØÞø¯•„´ ìíò/H ÏAȽþ!™yÿkû Þ>ÿ‚ð¾ÿ‚vùýIÉèþ7Õ=­=Ý!ÿõÎyhþþësè´FYšw±‰p¨‰h»­’$õfû1þj†î‡þ'&6ÿ%÷vÏ{ ÄL•™aëî×’‡{°V¶e¯$¾S>ù5×!¾mIÖl}x4OÔšúÑŠ²8I00Qx$YÛOŽLƦ#±ðä ú¶ºS‰.×ÍSC#÷Ö»OÞ§¶¿dyôÍüÍÝJ~eÔÇ’i¶8ÝX“Ð/³tyVYsDÔ`6r$fœsÌ٫뜜‰J¥D”Àã8ž"£ î÷ws~«e:Ü]Ä´ÄFDä°W8£SôþRû)J„ þ_‹V}šE‹(sÐYSWذØ÷¹3*AZ1νÕ^£K\;¹ ¤¸;ÉÕÅxæîÔêø•­æ1¸àjž×@òý[©Õ¶k½n[‡T²ïBÓµ/€YtCû£¦nÿ‡:·Õá‘¶›7©-·Ã#ÛÝú_ÄûÅÉì¼¹˜eí£W–…3ÈSáKÀc0]ú@E<,Öï^á-#EýÃ~JÝ“pmrr Â÷B’òåü|X^®Ö±1‹½àècþίöbÕ™z~^HlÏ#k‘ù†1/C¶û]ÞZ<ƒ¦H °~6¼„ã|£œ€]¦Ø—R%i‹oñç m¯¢|ï…Šáh“0_‡;¡öS½rÝÖ¾Mªã¶±ýúÐ!©ðÈ>¡k›ý­ëÒR)3ü½»órï(©á÷›:yï:´Brº<ÔÓä%c`>ßlÏõ"[ÑœèHyQ95Æcê뼺ßëúüèÍZ¢(CÇP´¤Ú¯| ú6`ÉtQ¦¨—¸*D‚àÝUcwM»ú-#Z&Öê{ºÌÝeXóöáF½ŸÏ$R¤Ú:·ù4~P½ ÓcÛTߦ¶iýËM¾ðö5DøbÓ`é©¶CÒ/×_1ÆF?ÛF7­ézKÖ}'«Î˜®ÂIÑ ¶ópâ‰+ ‹2×TŠXð^擳¶ü²$î)ã›^Ux˜Ô¬á]‰F–¾2é2„¦]—Ò=DžÜ}äÿ˜3í#Ÿ§éå§®lU›p56öÆó¤$†f%;üR_´Ò8”¸о×_!¿…&To²w²ëhn^aŽ4ù2†£xCnÁΛZŽïC¼÷Oí(ڀʗPMÑñ½ñTTÔ)‹ Ñ, .Î⤴ÑÖ§³ºÆ»Å̵aûóµÜˆõòƒ¤úúªª ñab ñK”#TóÑ\xã—‚>¢¼\sä—¯À· Pß1ÑEøÓš›Ý•=¹xÒu¥¡àAéu àòš©™Àk_"Šùç k :“u·³“––]^u^/*ã óÅ–üª³ÚÊGü]ëÎuòÒ U¥;ÕCβÑx/þu¢ó&·½÷·átjâW7°²t¦ •ÙW”‰‡™ºY åG”ý-£¤¤ä³ÛQ(È}—1¢•Þôr«sÎè¥Vð+jÐÒ:>Ü—5±%nwÍdžcnIˆ•Gè¹éì>XUú½½Q%Ncõt R-ãî#ò[óLJË};ËÏœÞÊü½¿½têE¨süëºx_òk&¢o7›&çv9àrzñâí÷}¿œtŽ¼Û“wÛhsmÔL¤›2 Ç¿«_ÏOHésûPî ºQ©ØLWl“ºípéqÄI½’¨þuBÅ™Ôm˜çâwG{r7y3B×WÞ95Œï½¹¶ÉmêRÒ»¨0W´ÿ†é¹Ÿ'åt*‡@(\Ï…´˜bƒT<äËÖõ} @.‡þ5‚HÅ™Oû›¾˜íh¦ª2[Þïö«Ð!Ñ«!†¤ÆÑ§6ÅG{µûºyÿuÆ'.X/ë9'|xPýç.ú!jÕãC§>‰Fý¹7åD…åN+VtœKŸà™ï-Òûò’ד9l¯z³Ûé4d¹ó„)ô$™´¥T8vEKNùpK¤³% Öo²E*ü¿u¡2Ò´,À;Ë!$Q#Å@}‚Šô×ZtIÂîîÓ!dÜ1×?‡±’|VpQE5ÇŸIÕÇ^&KlG÷ÝQÝá)Í­6k¿±gS"I¨såqdAÉý¤üÐÀãKA“¶m©ªº0)ßoô´j ëTöÒâ7+Œ€ŒãXrWJÝ£$V„[Ô“Š×—" ÜÓcJ€[ÑZ³æ…®}9ÓÂ!h"(jo•‹„-i×ÈbßoW› ñ¹…ûLdnù¾)Ù“àgBD¬‹£? Ò Póf>Á\–Ÿ‡Da]ÃÒkÊXw ß¼*g oÀ¨”‹‚¹dg0§2^•eÐÊ5äˆÿjÉ(rh¹&Á¾žžÈb^ÛXÔ :N…:»zöˆµMP°tž"ü¸÷M¤]Î+“WÔr÷Êr·:yVŸ;ôBß;2:ÚUtg}·š.[¥jÚ/™K™ûf²ùtgÉ«ÉEX5(ÚrÓ+jú2ZHò0{}’ïaó>ÃÃ/± ±¼`¯PxžL%ÛØô=öy‰;jtQ~I¸—šLGŒª¼€­¢ è™>YrÑŽtÓÙ‘ßú­r¼œzý…¨2ò#±Bõ÷’’D#^o’ƒ×¦óé÷êo ,Ô1,CéŸüNߕϪ x&ÆOç!ƒ–¦=‘­²Iz¤Qûü$Šærx Q|Ù/Œs}š·VÁ\’žå%Yh®’ìÆ¼Ú‹ÜVÞX¬àâÂS5 ‘=™ÌhÍ*j?uEÐN©‹€«I¡·1Žá–<ŠÙ*ŸlÅØÊ~2>YŽùJsŠ|ýÍæùA#…$šc#îÔ)—ÅŠ 'û¥'Ëéöõý¥˜È9k°ßpÝŠKkåz®ìç'0ìù!b}.9Ÿ‰ÓÙýÔu€Ý³Sb\½žïUýwì©,jS¿ ¢Ô/®^ÝèYäoÓ®û¿²»K ½£Åwn2”.—æºï—ØHÐÜ|„š|­öv6F¹ :wF¤ ëp6Ù1Tîžu1Ví2ú3´ÈÆf‘ÍsYÏà tR9Öã:s[´èÀç¼Ûý¸¸%°]Ÿ…DëåãÑ¥e-"õòí7Ú‡ûèð5“ÇåŠ\4Úû¶¦°ÃƒiKÚ©§xxÚn4„„Žâ<„ÞB3Xl—S »׿VûPt<ä1s5ø¡‘RÁ6-ÓŒ\5’ž›×§ØÑu—v–[ÿ ·Æ{5ràX]Èê¥àµúçÜ‘1ý^f9ÓUŽÏ¾%±šÕÈQÃL4?öÊ1—¬€t~Æí›©®mÌ T- ßhÓéÔªµ( ÄW"±h¥Í»e<^õãžºÛªÉЊbn ßjÜÿB—ƒÖ•Í?¾|Ž=ŸQïšÃTˆe¨©ƒ6Ò”ÇT\ÚÓ켤dveè£ïx̵wÎB«&>0d˜]¶ìiÐéýÉ`à<»žÆálîüVI%‰1E¥f/÷Ûd:Jy½¹¿²\ýúò¹Ùë «µçà ‚ •ÊS¤eËBÝ<èæ~ÿÇ(¯­3•õ•–Ý|Þä_\ŸhƒqÝ$_N=>âõ \^8­Ã2§µ¾*¾ñ¸:wÉÀ³’ðOôGE¢’–¦Œñ'´Fb×6j8>£Øå$tFݰr´óÐødCË6er]9>›A¯"êÚ ‡Ó„鈋ДQ'¸Ï>Ü—ÒÀb;>èçûÕ+œrÓ¼FʯbämΛ_Üâ^³mH0‡—mW o{  - ¨‰ç PR–ßÙy/Q!¢ Ý üC6”ðÕ6 ú™“V~çè"5P–ŒL™’åEÅy·ß-÷! muýþ´XvÝÒ8*ÌöVÇ7D!2?àQÿ±NdYžbË—šGêßÒåãîí¦‚ õL©1Â-WÊxÚ‰5ŸÚ­P‰«·€R«ÔÓe½ìitƒã¯b|MV °˜qÅ–àX²¼GS¨0¥­)?}Ô½“o¨ž8ÚkøÀ¡çZÿkŒJŸ–”¹–”¥cç‘O­yî‚a–p Ÿê—J¸õÝÓe¼³hDÜ÷­å˜õ¤Á_8 #7ú—ò¨×,>œÉÐë“… •ìÌk4Ó"(¬ÙÃ+–·!ͱ/’ý”XtÆ/uOÁ2ÿuì¼Úƒ„Þ¡þ¸ –TƒgSAwN‰I‡7_#03\¶ÃKªÊ&ˆ‰³ ¨š<ùª,õvíœØ×нBY™Ø„"öaß±SÓ5ñ Ii~ð S×›†¬»ú¢ Ž8Dmb4³æ+á0œRµƒÄ!žOim¸,#§üˆÈx þ²¦ÌûâÁ¯ušÏ³±D²EÜHw·é¢Pñ˜I?.im–.² ®Þ à0Œ6÷*O©RŠê÷‘ˆŽŒ?gêi‘(Z€Ãš?8œ\Õø” õŸ€ÑL½Ë‹k–Ñ )åFÍ3•¼žqºý}{½¿¾"à馨¾¥~<>„º£š…VDš5üñu&‡X™nߺH¶²é˜â!ã•ÔÒ¨¢)iˆ6× €ær¦ÛcÔXóŠ}‰!Û° m÷g_K>€ª†¡|ñܤ…\™)\ñ¡!AL¤_HÒêú# Êmf¢jVoxã°Œ‚ÃÛ|¬m|wü0Ÿ•”]ö±ï“ó••y¯S+¾;ö‰Ð§TÒˆî}O¯º&0ÙNíÈùeX46Šço+ZCIh+Чˆ¾À·%½œ¡qC³äÂÈL¶õªKxú/-Ë%©|}Û¶…ΰàe[SøœÃ§„YM¨>Ï¿Ûä° äYOÉ8úöyp›Z¾8»|ÁVÕc q–Ò@_÷)ðñº¾±É°¯>Î 5dvÎalJ¡ã,F]áixì=¥ù]CŒÈþÛšñ‹àÄ-¥&¯<ŒšPÓÚ%ÄÌei{ñP¾4Ñm¢'òÖ“oUÝ?%’ˉ²Ó-ËêBØðÒ$ƒ­£ß8ºèCש2^Ä#¸C5~¡Y¶X˜t6ôwX¶à p„ñ"¯°haPtÌ} Þ¨¦úQ÷˜w5£Ñ3rìÿ!A¶òÓÙ«qWË}3ÔÐEû#õ×°Y§Û®·÷h傞¾+´î)«—=Ql­ÝzYøº}ƒ¨žVMç²îIo»Ž1tYË¡;À¹L» a…‹ÜõȾeÆ s z蹜^dzÛ$X™çþF›¼pÔæÏ>¿ðìÈ #ºxݯÅ.( ôI¿m3¢oRq¾t!j:[M <¯ˆ* Ž6ÄÛœð”’n Øfx"nÈAÛ + ¡¶áO¯›´Ø2®ž¼BØqÆ´·{dZG—})‰’ òÑ ¯æ¥kËûêÍ*å=ùÌå3oë—¸>?`‚9bgQŸ7âF·ÎQ6xßUs•;G™?Ȉº"°ìÚ–Ø ÙÓ’ßí‡6•8S½³X4›n–W¾á+E(ôŽàĈ5í žPº²©LÑ<Àž)[ˆ,ê¾ÒõX¤äŸ®v{”ˆ·x}k03y|Çœ„?ÿ¤9²ùUÍÊ6’e¹­c-"Û…9né‹.r›ßԥݡݘåÎûÏ:¹Ü©4Ñ^\ƒ{ßÕ¦’²I˜{æ6˜!»ë^qnÓžÞ¯ écù éfÝ“n*@—šÌOº'—Ah7EII“bÇL…—i Î Ù0-_Ë%¨üeÞh‰rpƒŸTûÝyüøòðZHÑàW’mAqæìÖËÄÓ îÒgÙã/)XC쇛T]“½ÔÌJËÚ]ß )*‘ÈöáÏ–ÑÉé§—$÷•ÐXJw£:›[‘p¾ã¼ºJQËûAËïU£M¢cˆýŽf™¨B%õ…wüËéžxÔÃõñMï]°¡ž¼Ê<+Ë~™üsá†GS±[]/Üð5´}l?fÙÝE™_„L1X爓ž‘³¯º(!æÀ$ªoo±£Ú%ö²?ü´ Ü8Ñ“Qš Hmi1À œú"í=D8 3$9´jKôó© éƒF |4õL›òõ Íx¢Nn#†ÜͽÉÉÓÙl2,9 ,ªHrWÀ¡@Ƥ/ ]Ás–ÿE³ÿiòC–&Ï•ˆMÓ{JžKJíQá+ì“eº&°R""‡ØHžúËi&¹»ÞZh±iU3B›ÓÖYNw½iˆcÖ,ŸK–ñ^Þ¤œ«ýW\Pq´Iµšf·â…ÂìØ¯IÊ.qá‰E¹3Â=µTDmƒîUÎjÑ2¦Vû ýy„Ðv^Ûf9™FûøeöÅZ&3mø)6ŠHgïÀ'VÔ(#µ&YüIiè_•7¨†¨qZðÀz¿žÙësž¶i”†EðÉó³á&ŸE<¡\y†Ow\8¬nv@ ƒARýàÛy LÝy,~ETÊ´ˆ½•k±Gáa=ó˜a±¹ÏBÌŠœ3õ&Ôþ‹øHg<ºßý~{îÈeÚÂŽ.F^i¬a’MˆÄ {Ô-ʼ÷fª8·Ãþ†ï6+¼aã@SÔ\¹‚eè6ˆZ”Ùæá‚ÎÖ,‘„¢ +/¿M] 9ùf·äþÀèÂÏ# 2,° Oe®N7ºH8ĶdΩíK$ÏYüü¹6*wß+âÄyãZ›ÆÅäG¥L“•ZŠr² ëãïD!w˜ßÀ\S’{îÏÑø]SÏÄ£J^=¬Ê”ÐÈu‘õÖ2Q>=fhFÔ¯¬‰êv“Á…}_·f¹¦Û¨F>Qk]‘ÒæzsÞ] W’MÝ;ß—Yk·¯sжºcfU¬ß„°ÌXÃL ˆõF(»ÝgÂŽMÞŽ4ÃS£r/ï5ô+-zCOèž*"i£(MjÁˆÂæ€æ÷3ùæx9ú©ÌKÂ<ªÌF¼°ª_¤ýC#f¬B²Dž!¼ oåž°vrzTöŒ{qRAC ›°’âÄpG˜­FnGV5qÁ4}HêÝV-”éOn:QÍæÝ­ ]X{³MŠíƒÑãªà‚Ašïƒþ6Ÿ]½§"È¡@÷ CJ$!÷ä1]g¿oüÚ¦—¯4Ì·OBßÕëÚ4u\5‹Ô´Œ¿Dߨ»>é«ó—°Û l–“HPí-¤îKš‘Tî)£V¬H7ŠÐWFç#[9àwµYšô»Ñ›póèGh¯Ç¤h¬f8Q(ƒäïPeEÞ—P ¥Á©¥N˵áwýÚ±q¹½³ï—Yô…–nTàÑtÞú2²Ã:ŠaoL MŽÜПÊ x~¾Ô×ÃßÑð²ÅÐTDmRTFm•ÌKÅ™Ÿf*µ&‡Jï“§ÄÒ’)8œåŸŸÖÏN]cÎ|ïEH!ÑÙ–ph*d³pÔŒÕÔï$GôŠmücTË<ÚÞ^ÿ™;µê·b`OÚ(7uHšeÔúü‹vI¿žÞ›1¬1T"6±m C©ñÊ·CB9ß™µ3+—~Åo <Ú’ƒ~s}W<¶³*%åzî'vÔl&Dƒöý£ÎDVçhJ=¾‰ç§ùl¼)ËMî>Rm]˜FèÀA©/Xè鉦Ìñ‡~ܼÅÖ7׃*¼´?¹—åªJ¼E-¶¾n0a”•š÷.¡qæâ)N^ž-…·:Ú6ª\åë8Û0Ù?Ÿé½Bi£_!/xÆÛªáÑËxÁŸ7„‰Ùö’ݲ>ðY€|²=ÛóMÂZG« Ìîk¶Ç¶÷•ïÑϯ8Ÿß×Ûyý[öNî" H §fr±áŽn¿Ä´ƒ ø™çóì¤;õ^¹,ç0{䡫‰Ö5±uá÷ [ú ¤Aµâ+Êê­€\€ÛÕ.3Öû pfiÖl1¯‹Ì¹‡UbNН jœÁ×Ólý8 É¡IÕ¨òŒOÿpE„î(·-°Ñ&{%ާEÞçC·sRôEJë yð+Ó³œ—hòË•ñFÜ„ïSë}˜x>߸=¨yÙÏúJ“ÈE®<ºÔ„{ùU¢Ló›Î/_ YtL°™&©ŠÐnýqdº10kelç(]µÁ~{¯øB!¦#UÖ µ'Z¯*Jo[ÚNša-(÷¢Z³<ºüõ$´ÿhòLAõ^·•fÑü1\³C‰IHÚ1 ’Yè÷C¥8çdšUkócˆ=Þ1±\9v×ÑÌòµ¾º[Y·˜ûFTvÎÔÉÉÞ£‚“á(•õÛIÜLýý\,Qÿ<ú ÎóžÙ8PaÊYX&WÙ$ßfƒ{UñSÌÚ‹ ^•îGK°§»aÑ sB¹°Ã7 YNGÆ>°l\\?5%´ª¯úkiÓ"îArÃUÍõ÷=Áh?èÇ7­iÇk{؆áÞMy3ìÒƒ×m- …ÛÓr¹ž…rc•૯âS1û;î¥õ‹©Ào›ÜÏ^B'þÏJ€Z}yA~TÇð¯e®–¤ˆÉ¦“RòîèT"‰ÊdÊÔ Q-L¹tf‡ ÃUŸ¯»è%†’c>N]Ò´Ï…^R›7ðÌd ]ݧAÀ„¥Kwì˜âþŒ½êʦ%B¦\³ÕšfãÌs+ËJ±8\é™=(.éÂùä#Þ+<*”öECÅŸy­ zòœ™¶èpÆ…Ï™3å6(t`fpðwÃ)Z3·Ëº¼µÝ\Û¥L,¬0_óÛc¡‰û7¿~`˜‘w‡È“¤ëS¡+Å”…a1Έ6zNJ7 tð¡S¿£¡D C-•}·_µ€Ì»oÑO05!x^Îö̧î½~äB:ùºJ·×Q6n ÆÌ„okAg] æ8…å¨É)·èæ0úáÍ5iX©àùöSí’?E†uìÝV³‘v²fÖ}9}’í{!’5Çb@ ^ÿª†Óv³êÃåE0ÑZ2náL«:FQVC‹0¾W°}‹LƒC„ÕKFÓ&u¸Í«Œ/½·ÓžÄt©ð‡T1¨?5͸g5øåœcnnÒ¢ŸŒlæD'ן’êY£°µ÷Mò4®»F͸›\FEÓÿ*§œøÆZÞ0øQÅ ½’ú¦ï…þÖiøWíKÔÆ:²÷$Áf«Õ[@Ÿ’语ÖOöµÁQ‹6ÝÇTä ^Ãè; Ä šÑ2Ìé7òœ¦^—Ô=èhïjàÓå]ªÜzMÊ 0[ÔÃv3- õž+Ö-()xD—`‚‹£é Y½¶/iŠR\@jhÉÑÖ°ÛÞù/ Lfä5Âb'H„¬Ó/㈉ºjã)ÌÅÚálÈj §€´žå5So1¬Z“ ÄÐð=^Ýú[wˆp„ñGYš1Ö\ÎIí3÷ηüwIš÷s©&T&¿WUß“ýc7ÍQaw àg(… ,²ý·)šˆÐ…Ùë´¸ð\…mxd¯¤Ç]B°Ž~æ¿¢è¤êÐþö´áOÀFø‰–Oc¥I†/&û+ļªÔ °móÐ?"+jUk—öLcïBDX/VqB©C¦•Ï ‡c×Qã\uB+Õ™œ<ÒÆ,d‡HÄ Úï:·¥ œ˜{Sá^GðIþmÍfÃwÉwu²½þü×õ²½éë=š_¢Šh l ÊÜùó8û[èÞ&K•[çíÆ4uyhˆãt%ÜlÇ=ʽ­ TÓšÖ òµ½„ƒä•î¶S]ù>*S¹Ûøy…‡3ð-!wœ!XÙ ’Ô3˜Û³Ó0Þvµý4ªh6ðNŠc‘Êþ¤ƒîJM½9;6IwŒBášéÙÐÅä)†Ò¹>NTÅÈoöÔÕ¿‡ùF›Â› ¼Úff=èo–ìú²lH<>ë*ª¶+í÷ÝIS«$dz¤) ‹”1Äa±q'H\zmòžé†,ûJrFQø• +ºâ²·Sj\Gׯr¦ªiÑq`«8®™ °ë®áPÝÃø‡®hš¤Ž;ŒK—j\Jb×OAv†éqóƒwê'ï'ŒÑ8 ÕÕ);„bQ†%(ÈÖRåðª)y™;6´¥ØPKé¨õȱÀA»*)a% ºâŠÉ}DüU9ƒê°žbU+" ÓÖ Ø¥šÒxâædPã$–ä½=;x:B:ÿ€$6†Î mNBÛl‰KPDÓæùør ­´¸Ú.c)GeÓÖÃé€gIiG¹k’õB”X«?l  ;ä˘.Át+öÌýz›´.;bÙ‡–¦Yµ7ÆÈ\nŒå(pcëð´DŽ]ë(Š/Uw%°7Á#þãø«bUO?ÒÁªúd“˜ÛÕª[í•1·ß7^ÏûT³9iµ¶‡êC­v‚ñи¿ÔôۛƸ<4ÀºØE°{Oˆ¼×oA‰>†þ,ü+r°B© lýâ‰ÁiK'ÉŽÛw«´$s‚ÓÀ7ØÃ —Þƒ§ãéV9{·,;̉Û %Ý *ŒùÊ·‘í¼];öVrÞþñ6aqÁ'\¯NëGãYÏP´¸¬Áà^9¹Ew§ñÇqÖwh¬O<¡BÀÅDåæÑ‘‘z·Š‰‘K bïwÉ*¥­íw–΀†jÍ€ªX™Œ‚2¯‹W,BØ…³Rh)o¹å,½eØYÕáßcë¼K¼ß Æ>«`hó+ÙCEúQÐ+zâMù|iô2´IÆ{þ©¾y€²rÖÅö#¾8ÉÊ1µ’oíÙ7O3߃lòøÓŽ«žo~àE•»Üa⯕ùãÓoÀ*úo=UalYš&† @û%/»Ûô™ôl+üñ-ïÃݼ£àß¾»^X"!Aßµya¯è(4®ä‡ÌŠ6³™ÚÊÜhiùX~*èVYÁ ! Í}›â‘ ³†q†!…ËJÞt|žöMp¬*Ùʈz©úê¢*ÈŸ*] æ©ôãaypÅO¥‹§ã¾uê®b÷‘žeÍzᄂl‹Ä›Qì¯wÜ'ŒLsŠ,Ãþ´'ÞÓß¹„)Î+WzYÛ%¡*×+œæ¤Í’¨ß¨£qò܉0Úþ\’Î23$Ñ‘¶l ûEÀVZÃngŸ_ígkß§…'øb,ì¨;º5„œ†q–M¨B=lz¦FÞä$Ú³“8;sùS|Ÿ ©i¨Úýê}T½â̦r”þm?¯T +Cú7ßèÃ>ºéäÓ­k²e•Ë>ð7õÁ'JІu‰Íªü#Õsþg(JØÆhÖ¢DdE™ž ©ð_mE“j†;3fsxIÁÀy3’‰-m»ÈfÒ ÙüÛi[:¥ðì(×UR¿!€; â=®ñMÁ—vƒE˜·¶˜©²Tu*kb‹/Ç™3ë¨áóÆ;XY6-øô†!—ÛwmÀ ãŠS»ƒüåmEÅŸÑn2³‰ËPL9ļ>rŽþZòᇡ´'º"oâ;é§’Ô¡é =f—û{żóŒáß±½wS˸¯)S­ÿ¡–HÚ0mŸ7&`ÆšCÙ‘‚‘@Vgâ eéDñz}Ý3¦¥6:&þY ]ªTúÍY #ò£pˆ¡¢cŠåPÖÍ^½&b¤æŒâÈ…fR±#âi¾͆Da¯ÇÊïaPÔbN—/IgÄ®æähW>f”ñ¤a2ñ)ËÝ„›IAi†ˆˆ>#‹Ô› u¨F«3ðÎ?3WéÜ¿Z}̨½ü2JÁ>œà‚õµ¸ºà£¿ËKõ=üñeŽ2Ïãñ%MìôY{¡Û†ôèäZrºÈœLJ³‹îGòh¡ÄB£!¸£c/¬ú°ÓZÞž¦ÌYþýØ 5ÿfÅ8·oaHCóôî\žóÖ`KvãØâ_º¹µM ðÏ$ëÛ§±¥<èÕŸ 3ؼ cÖ.BËJÌÕÀ[Fê\( Š-Ç+7RCà”]5–.Šjܹì%Á U¨=졯áИ¿`ç&áï¤éfØóÜÙËZÌöŽ!o©Øé&~eiûš!ž·+s¤Gÿ¨UY‰ ¥³ ÿór”(¡ÈG¿Y¹Ý×í¦CÌ"¹DëûÍqÈt"8Ì[DÃÓØ K–I~?З'ù1<ªj5s¼æ„kîT /““s?ªåÞÜP.U“´Iª£;(Påu)pÄ7=(5”¸£ü¿ßGhs„Þ}¡A] á|좛#5À0Þ…SŽ:Cû`|³´_ T;ä"ûAè-çÆå£ôè|A ¥k°¬Z›ôTÇšÎozu^R Wü°ß+#š½|Èx`¾dS)—ˆqÄ6ÍRpï'&³`$u¹Òeb…‚!©_?íÍÏX}½l¦2Jš¶ÚG$3æœÉ­ §X¶90ð*v‡º /U¬È»lü%䱦ãÝSº¥FÄð™5>Öÿìéiøh#ðž·ÙñüÜØ£ÿÉ.4ºSÆ0]œ­ ðÊŒ$›ÐdžuüÛ¢tNo.#}Ðì·®æâç #r®!Q+D3ûoÛÜÊ¥|n~KXI×?B7”—–•‘sX`*XøFÜŒä²a~Z™ìžöÏi³(ƒØ¼„ÏÙ£GB­³š-Uëż”éßé3èI¶ÇŒíÃÊ5»šþP•^@6ÁﬖÓ"Ÿ”Ù)æϵkæ‰´Ö ðI•ò– ?Šu÷¸Iã¥åO³aU<ï0 œî~>cÂcíä^vûÜüTÁ •«Ê ϸFM¿-Þ’Ív¶L䩸_l[ªé$2•xe¹ŽRl?[­%ƒÏŒÎï‚n‰)§±¾)Ö‹ÀjÙ&X –øÀH§K’¿€6³ÊZèg%“ì!éÝ„š* ÀÃÌ¥1~¤ú¼‡Ã‡\ô‘°.1Þ_“¡iU~¡ÙÔÎxÖvÑòJÞ?¨Yµˆ6äŸÿdŠŽ¾ýb»)êJ{_ g~QN@‰s”ëÿP¡L)×6 [nÇD†èÌDg¥íHæ4sÞÖMlmÇ££õÿ+û¥€³$Jxg2° – Hk·³µÉ_Y—Ö;¦ ‰Ã™<ïaŸHÓÁšú°ªëY¥B†+¼Ÿ7¿¬7„ýµèÄžy;B!¸¥üº´ÜÈÞè}&ˆîÄËÂ"êG6/X¿ ;˜|øx…‰È:qËðº‚ļ/›Ó•Lh16н€0Æc6Ÿ­öP)ëk3æ±<|YgBçf‘·i(}v"¬âBk`ð~Þ×J<ªh²îc\ÉP[7«ÜPˆn$`BÿÊÉs\fŠÌ— ¤t¡/ÏüÉy‘¹ÕN¹Î^¤ÆsMЫ:÷ê°œ°öÈ€‘`裩sæÇ²ìä•{?”dšyšÐH4èWf­‰¡~š@äq¤4EñîõuÐPùŠÍZæRƒbQíf/è&Ô ÿKôg-½!>5©…‹Ÿ½É|±Ò¬|I_‘‘½0cËVáCÂ]v*Ê07BIJ4ÅÍ|ϰã@œŒA­º¨üäù­­Ê¢Ó!ù‡@'mÍ8)¦h7}µö<´¼T¬ã Ü9’ÞŒþ[›×¾Ñ¡Ç=?aàÜ´P»[rZt'GÒ5ͤ…vÉÝsºâaBh° ®9—ë!q~!­²_á^c ‡‡ÿàÝ\[#Õr©ÉŒ ÙYØŒå[$¤ÄÎwB° ÐOŽ ëõ;&~nE„fÀ‰äªPˆ„P^Ýö´Ê§˜ÉÁSžŽSøV¢~r.HÀß!º@=0ùFbô¦ìá›Àª!íúua„p—÷»1·PMœ¡SváA¸[¤†}êµÚGƒ4¸¦}Ó™ÜU»\úÆk>mï{@å¡\ë[™dîôÆø‡þ‰Ly'Ožƒ€œpùedÕÉ3œÉ_W˜'%7Î7ZÏÃ~Rc±U0¶¼J©‡kï Jžj4ÄmHÌ{òCÉ^}w8ýU½ .žêQÞº ?p]ÑYõh¾hxcøXAá7F]T2[=·X¡lBÓúvY=wþ5ý î9ô íYs(]üî‹SàuyõP‰L.V4ÓÈâNZìzHA‘HÌûZűbâÑŒqŸwâ+σPTàmGWH%M«&éYN“âqV­6¬Èó?Óa¤³ÝE’vËõä­Q =Q$ß…—û-à"› Oå>Û€T¬4OêÁé)l#Ööº8|³bõÇ|æ‰ R\Ôzöüí¥þkæJùpˆ¤ &…ñoÜ}F¾8v èôÑ”]"R‰Oª6‰Ý4Ï&{Ëî'Ây9&y®ó2?4ªÜØ® òÅ‘®²õ8è'à²0Ï«§³^wo õóað*fÖŽ·¶• °÷ùÞ\v<ºqDƒF´N:ºíJt<Ð?Ä0´Cph«š4õH[av²À òN¨óûrdL´ìx÷ô\£ök®R>¸Yxù˜'Q+ÃæŽü©†9Kà\Ø=~&ÀB+àn¦¢ÁÎnPL&åìî- œ›­XÖ¬ù0g1^ˆÒ`™OÖîÞMé/€ÐÓ—0Æ—`Iø7â é.kªVóMÔ–Go0‘ c‹¹iäµW;Ù2?“Úž5?¨ `ý|›ªœ!òêÔ¥?í£ã<½l ä{èISÎífÒ£ ‹Tîå…1UL÷ÎtµÞp‰Òý~“/]ÅÜ(øÄÌÁ!éžWôݰ樷ç>Ó­™s— þÛܹníÂ'G'̢щÐSO#› 8“Šw€NÚtª8F8£©ÓD€ÝGYâƒlS½bé›}øAÙÂÓãî!è^+ײÑÜ7£q´…6âeПuí‚.9ÏQÝ£©¾lQ Õ½ÂOÔÉ=®|>oIæ½ÖÆÆ5ëС‘FcQ±ª¥é}±wMÅÚëæ"‰|†›û”Õ©ÿóÉmãçÙ<°zdî9êÅÃ3é]qþB©Çì)ÑÞž]¼Ò”ÕÈ—¾Mä9þ-*J¾û‰Ý©áÕÔ …K t¯îáÊ>†îŒþÙN]zøì Øc¹„ë©ÓW2B(ËÏ™%æ_‹ÃTys†â‰ ܼ{|Ñ‘™üv¤>é#K9V)mÖ~›×"¸à±j{oó­œPöÐ Q€óWuˆc\S¶ëÈ‘3É—w ¸ÀnžY+Èð íÙ6<¤HVÞt-L™6Ž©ÀgQuGLþjú)xnú¹RAmPuUã@Ÿšz™:nØÐZSû˜…´#®;w:§QÕïRó¥Îpa1è+о´_¿X™hÍ ‹B2ä\3_õ#`°3x¶EZ'ôŠÄÔóÝpV™%rÖ†;• :KŽU³Ô&%°r8_°YF²“PpãžØF9Çkº¨cæÁ K¹´›Å¬ñíÌçÎÐK<ÇV³DØ­ÙX˜ðG*5¦˜oÚ"Üï*Åï`ÃöšL¢âz(‰\X¬±^ç)×=^d§gõÜ´µYg!,Ýê„­Ž»8ÝÕÔÀšýb‡> —Ìu`¿No Yçõzã[Î$Òý @lrÜ‚‘WËM›Ïæ¼²ý±ôZåžžhAlÕ!nOÿÆeÐ(ÿ å!ƒ3í·J„9íº|h´ý¶Þ›Ž´`Ô“¢½ÜÕPm[ÈÄ÷mþI„9žþ'£H¦nÅ =Þ~!YåÕ]† $ N}õ¦«~Ø~ãâtN—Á¥pWQ|½íê/û'î™,`ßé±vÏø‹!›ŽšÞçFç¼[š—÷à%¸™3%±Ñ9MÖ`°Ï¡|¶5Œ¿È1ïã…ïÌX³…Çn=ÜÐ@}Y~ïg @üfÖ'–ð®$KpnëͯìÅEo/ÛjµÆ!4µ3ÙtBhÄN>—;Œsø'ëö¤Áæóh‘UéyJ0q~ùK®*¬>9 »«‹²HX·A~-Žç@uYcl<ÕËIX­hÜŽoêØkjd õѾ¶úâ²x9;c%Tº2ÀOcS ©v­\ØùÑÀàã~†Ù1•²¯6éZ‹¬¡ë<,ÒëÛ¯Ðã៯ rfkp2Ûó7î{Þfö­å´a¿Æ*A44¬cÝ5ñZ¹—àÉÔ›(%dä÷ôįúÄn,áZÆœÖõ±çìô[”ä«Q×ÀóÔâ2{Åt»<ÆÌ·µ½”TŠ#» Ú-Ã_êš–>ãòÖrEF˜ 9}JÊË£mx©ÆÚh| §¸„ E0ÌÉ…J¼ã·c“›xgEJ>N44Æñìilß`+½JæµÏ§&ô0á‚ço9ßì¢gÌ®8uâ85tM$ñ?ù õ‘3ÔAyÙ†{ÀaŸÈ¥ß³¡úåñ»›Gw7™©€lhÉ­;£”¸J'ët˜x<ŒºyPBχ ·fõ>Ù¦õ‘ÒR¯ý+¨ÉêdAÄ«~Žþh„ ýYïê}ÞZüÜCõÇJNhP}á+~q=¯Ooj:…?š1,R’‡Ê¦6u/ÜM¿]C5~Hgy_ñ˜,Ǫ‹(ßn7‹F˜ôš;yfHŸ¨X“^ùIìŒÒñgC⬌E–¿ZGçJªÇ–ÞB ¹'‡_ç·›FƬS“½Ñ™0æoÕJh_¢_c=6–Нr,I{,¬˜ 8Œ¥À{¹'DËu¿›ÝqŸ¿´GéRSŽëκv:ùQhý$¡úº"{ YJV”Jn˦+uƈLéÁÍ/5ä´t&dʳeÈ4=h-^eÛŽvKSÀMjÏ~ª*‰ñ™H=Áx|‡Ùmó€V&â&NÄìÿ…áˆäNkÖžäÁÄ‘\i±Þëý ¦¸Ï Ær¡¦îÎÓgi¼uVáXÐjßr/xeDHHòT(µX3­À?­ö(šžM°ŠPפøGÜ—…½L+?W‘7pl¿£ 4ÒË_mE+ëÀ<Õ!–Ø2BŒG¨ÉXvÀ“Gô޾£¯»ŸM¬ñ9Íu:~‡lí·˜}+>Ê3=6`ò=iÏ'Z}.ÔP¥FËÊzµÕV!§Ú­©3·°NìÔÀXDo›·}£tOùž[ÓäÄ%‘†b }”0*£ë\ij#Cuô Dkø “ÚŒ£ñUÖü50†útï.Îó=¥ª!vW0õÎð†jëTNŒõÕÌðóW¨È™]8ëãÉ|‚7µéz…ê\pJg'I·ÁÝôŒˆ DØZÚŸƒ´lüí¾PXež2o4uŒ5i‘ÜŒÊgÏsßÅÙŒ¯Ã•_îëõÅÇ"8×tl'e ·2Ì0¨ÜËù-”w²§È98©Ýˆ®ÖÔ>$*G7wòv—t¦§I5 /|ÆO;éi&cœBY½W©à×÷&Õ´Êq̨ÝËMZYõ ‹ûËì]ʨ݊Dáè™öƒ*ÝÜVW€“¥LØÓ!\6Q‹´žìæ¹ 3Qʸ¼Ær¾E£]Á ,ˆ—äW2}Ž›CT¹ù2Šf{±ã{þÍù°àÜ.þ lʯ‰®Aû–åZdxÒbú aûÅîc.Ÿr¸yJ¶¡2Å@v<ŽSБ¼<óÑlÍɸ¨™³y‚ÀÔ*½J}’ÈùÒóI ú—‡¢WùÍ'ÀÞFÏ4œâçB¸î%€ûVßnØýÖŒH1K¡7$Õ‰ÒÎç/oj>rÄÚdÛ®.(v…=¨c[Nðóƒº3j ýb¿§øs倇ïÊ?*Ä„×}Š)úôk7Ü·¼v=Dì¨=³ð~‚°5¾mKjfÁ¯:‘.‚âÛ·Ë2[(«€‡(åÂí讞÷ø¦ô›ÜŸ«ëÒLî}J±aôö}<ùRwáT|Òûžpùì^ÃY3¿|cÃà‡C%T¾ U[s¯õ 'Øú7šç"‘0]¿³íIþŸk”â’võ«{œ]•Z|D†ñãzuñYÅÆÿÏ ŒÊj|ïè=3µR–·Gü–Ÿ~\ÑÞƒÝ$(mlIï:á+@2(~¡dÇ~}ª‹ã~ÏlÓñåÇeL]WüôN‰ê¿›F:î­Ô%£‡æöx4p{Î ö9£=aöC«7`ì,݃ V;ÜÏí׎7—þžô` Grï.c®õóí9‚ë¥>ÏS€Ÿ5 Ý´øñä`x—ÿÞÊ߃–B;Ræ,‹»ä®7½IàºÒÍQ@"ø 1%»1“ñÁŸJ(ôÄ•I¡ˆœ¦  `Ñ(nX>“}Ùç´ÐÄ«U¤•ÍIòÔ5rVÜÔŽ÷ŽãÊΨ+nôÔÝ3ĆDB°I°(å…aÝ :@(˲¢Ö^·¥é/× Ñ⤠{.^n:p¢$Ôi¯¬œëq£CÏ;F[ÛRÍF~¡AŽæc†‚1«_¢ñM8垊ýó:>þÔÐP=<<ó—oS”¾Ò‹ñùCÜöI:ûÚw€îÎ»ÖØúœÃðŸ<ºßldýP©gtË)†ó£éWíeéÛyZt輂£ˆ?»Æà‹3T´àˆ. n_Å6u Ö#»Jz/Dí«}xª[gÃñ~Ѩn«E =aò#, !éäúN,ýÐKo…XMç%5çµ †Š+#FS±|R˜ry—ªuÄ ß€Ç´ÕnöCTGÖgUÁÁgŽðf=fÁÏðtîñ¥ÇßeªŒ5$†L'ç°ÄGwÝ®úV²p4Kb} ýM/èý’ÁªJñ÷`f¶q)Ôõó2`îå?.?¦ìÂÅCvw »òë:!¸x„ìvb1ì „ÜAØôÏÂÜCÍYíÃúÈÝô+@UM6šN0¢qØW[Dúö´¥’”öÊe'jV-úåßêåñ“â"Ï{êçÚNå©ã#¬î[ Ó¤‚¥h—w²½‚m£à2pX1÷½«×³œjÚ¸mµ ˜aêÔ­š5–k}¶@#®½9Š~ƒÇYØeFÆ'ú¥$]Ì-'YKóÉë;bx®º°ý‘¾iÙg?8Ü3¨èÆ °nbre'V޾fþèþÄ‘…ƒ8–;"ûQ»`šÎùe¿1€úâ@i£r<¬û\´Õ¶¶UH”÷“ï¶äYM·%“NÀµÈxè×|Y/@Ñœf+}<‡GyÖîÅP&|(ÑF×`rt5÷a ð+æ yÄS’T©]Iîë\˜îIððÁ­yq]êøÖݾC‘f’ï/“é<ÿW52k>ØVÝÆ¥='keèéõ`z"¤6 ÙeݳÙgäv˜+æèF—"V5m`tc¢m:}æWÕÇ{;rãÛ¾†Àaq§ñkÉ¡4_dž••T˜Úä‡D©Œ%ñÁä¾¥u·S0¹ú@3t¿Nš }Äw9Â8ŒñY¸ ¶¹Z8Häö˜èë{ÖÅUÊ yƒL&tË–Ò;á Ql°zLk+Û¡6Ÿâd ‘ÎX]Çe ;$äÈœXš¬,“zYà~:ü¸&œ¶Ñ§_‡¶ UÖ¼€HN4 ôÿÀ'*i¡÷cŽö¥Ž5êÁö:EºF ›‚W¦Pë퀽oôR*lÈZ}ÿ4ú+r!ƒª“4˜X¥ü½ÄoçÃ>²ÈÖ+á­:´Ò-ÓFA€¥h“ø¶–d¹ÒS»ªáXBü3¼×BKÊØ€Ù¸Â×ߨ’Héšm͸1ç…§:§‚ÏtT]⽋†Äü”·ªY÷”eÎ m‘?ºrmÛŽVx* Ÿøñ°@:Ú›½°HÜÑDt¾k¼ –ÐbÃåœf~ݼ? “ðÜvz)зºv}Wò¡YéurêtW5‹Ä0¢É1½h‰©¦‚¼ŸPu©Tz‘-Ç”ð¨ uÝß.Âîég¨(XÿMF˜7¥ÛüŽ?Äø—Ek¦B#éX!3Æ–U¤Ÿ"$\—¯ÅÁê#w±ä¬dAËÝB:;iqSŸí~Åö±à5àˆ×~f€¦í=N¬Y óUJ­ã6Ô¹joJ I¨ß–îP²™/Æ”zÛb~®Œ*15yG—ÏøøMͬæPªk[O*{¾,¬3›]<3eP¯=¼Ä’|7—e*Ú¤h9óW÷+¶ úwX4ùõæ ¡Ö£¢¼äï7© @)¢ãëO–ñF%A˜î†dí—u ÏžMš–¨wÏô±Æä!âî¥62ŠWG¹Ï0ä|ˆ,ä!q ?_[ü®Kë{ý)³Q˜iê>q|g™ÕÉ#zvär`jùø33j%¡w`Tæ@—4-¢¼èž³5×yI´¹ÓvlºÔ9å!kcÞG‚N~“±ÉìH Î:ˆ‰î\8Ö’|¼œ{á»Y88R«ƒßßXûP8$[LXÚ3Š»e!ˆ¯îvH§)-\Àá†v ¸¥+ˆ›+hGw»q‘ë(ˆ®÷7R‡K¥†mæe™?Äη µ¬lº‡x¼¬…MÄ•½ ëS¿uxU;T²Ò{"¸/EÂ(‰‚Y!}©Íåt.7:é¬^2+–^ø)§ýJ»†÷þ/ížbíÐ$"F‰l Ñ·9xw\û ãR;úåÌ}”nõÁò;6A;¿$TÇàBÃJ™}šm^ ] •¯8:ÝêT»EƼ0ï%ùöqÓho©{SýÃBtZ& Ú ÎÔßF—+Ɔr4ìqÄÐAìë¶ÇÏØ>%…PÃüÚÍ×âB†÷Lé¬3þp[E—²ä¿Å$¾ÚŒElÞÏ€‰ó« žÜ!£iÅ(ãÖ"°¥^½+r×Kù„«]±^{;W:WÅóç~PËl¬órUInÜÄžÖDi…ï'R í½Â¼*bÉV†AߎІ:jVmDm)‡hêà·ïhÛ"Æf4E »]C_üVæ‚ÔKœ:YöÎGñ Ñ>¥bËØ¦à%+Œ~æðÐ夢ÝXçÖ†nƒ¿)eèGÁwÆ;„}Ü<b]bðbÐ$Ó¥E[[aNÞ“Ûí§•]®´7˜ÕòdÞ@”yÀÄä!ÒË—eÁùÄpe›Jº’SSÈBõsl?Ÿ¸†J±€n´qtž¥‡\Ø|Z?¥àJÛÎÈ0¤ñP°WìwÏUå*«ðÝiAµô ã÷Ož™ 9Ñâ†tU¸kw n°±Q–ÃØ–À"Eè?wÆ#ywœ† è^KÏ追^¿“éÉU¯vÁ¾XwÖãìà2±R21ÍÈ…(ÍbTÀ½ubó1r!Vãñö>¶ã£Ò&nÀpúû€NV¸­êy&À—|¯Àè ÒFÁKŒ2#ß?Nè;µÂLŒ¬Ò–1‘¼yŠ,«t¹¶–ߢPe+?´¬É·iÑÄ'åwžç±ãºïøÛw‡±iö¤™Y=ŽÞTî }‹ëzèÔ¯C Øct[i6(‰DmüÎËo´úT좆ó׸›ÁG™ødVZ± ûð¼;SЀ*iíH Û¢Æh>'iŒ1¾Àiùp¹tëqy©‘nR@:vªvFr-ª:PhÄåyTJŽl(sÏ׆ 3üô Y±é `okzJ¥ì?ª.VGŽP¦mSÍ(T%D§‚oEÅЖžø?è„ÕʇMØÈ|GrbÌûþ\P¢HÎøå„íæWò§ï<{ê€|±T…¾ô„ö…D†9‡.½2ˆÑÌ͸Ma1í)+‡~°Â&ìŸJ]åe½ÛnJP-È>bÓ™aÆÊ©Üc\ûKÑ÷ÊÛôÊ­†Æ‚IZ!ìIµÂHÈ‚»ªÏwÏÆ¿\¢…QPLv†±’½X#ši~”ìL‰GÃÙ'Ò’[¹É½>©¶}A£()ÝËGógo^óhE Hh’Í…û£j4HËõMQyƒj³Ê]lû$ìÛöà Q‡¦P­0ë“~EuïÄ9aÉœÿßïhEˆ±ì§x§¯ÅË0"ioöŽ·4Îä8´xŒä§#`l!Œ¿ò©)Ñí9y1ûIBåx.zßÜd ]D!˜u‚"õ~f{¨æoìá–¸R˜›-‡<õÿù±PùÍØX3%‹»Du23žèFy†Â|7‘i:¯éÛO«GÙ¹º…¦üÄ£EsÐè´¸F€Q¬.œÉÇ@öWÕ„AÖd WÃ9Hl8Ç¥dDž€@àT>£õu€ã¿…îxúPåYvNoåP?w>>Äø ð‰Î æêmƒÞOòC6…%fg1)nDƒÙÕйw>‹ÍŸIJClQóX6-}„»_áíŽ_òŒ‰ñM~ „¹ ´V]@Dfþî äOá¿úfÜ2øVÆ$vïT¶ÖŽ%¢¬ ´hÑy *)`m*G]&ޤDÇסÈ*C9&Ò?OßKõtfÒ„Úë´7!½þ=ÖµÛU‘ÌØ!êéX¬Evx²Ø2Êø›_¬Ä#K“/#…W¥Cgd ç.¥ÃÏ_åqÌùÓÔÝ6«â½Ç@êÈ"= üSÆ[Â"($†ûPY ¨’qðÚ³Jv„¥e9²WAÏ”‡ %  U›OJ7¨)}¦øm›$ÑUm7áGº6}:ü*Êó}Þ|ÉŸu- ¥»VõUm‡BœkNðtü¿—U+¿˜…’ÁʲۈDÝØ×&ñ×Qå¤@×-—ž;­vêq–゚'|ÌPüW6Ó¬¤Ï±ÒšfÄ2¦G.£î!”FO?û¾0Ä>ô—õäØ5ÓV£¾a+‡®<äø¢««ÜE<Áøø92dMš8¦²ì°f} ;Äq—ÒJ ©3ŽI‰$ÉMú“xðqò£ö‰BùhpöNY°<Ü7>¦dU9þ–¥îc4Á.ù ´5¥°ˆn¦Ö@ñè’ Tvy±Ò·õ¶À5©8BI­a@Òs” ŠlG¾á½nÝ’\©Åþµ‰E–±~%ï¤K…O„`ë¨ÌÒç1Æí/ÙŒ3iaëGï Ee³Ø™³FX>ˆ´ß?'=ä„bˆƒäÝAWâGõ›cS¹°žá »ƒ>U-X/ÞÞ pÎ-OüéÑn£Ñà*\?¸;Ç?. ® •6M‹«Žû V`qãk êñÈ›tƵ>i§Î lsEs&KÚßíŠa!èÅ]¢^JAø®Z®¦<'±8þ/S~xÖz¾l’”/?/±²Õ m^ÂøŒ Ðð 1zyûå‡Rõν¼Ç—ú ©½‡ª8¸ª2ýµ¹ofº–ð½Dåó×p•7ÖÁ²E)ÏhùWŸ­†$­K÷H>)ð a× ØQê2\ÕšCWÚ ˆSظgÔÛÊŒ¦þÑ|™¶8<ý6º±¹^=ä¡WTGÌó»jÀ…Šä =Ã·Ð Š³ù«~Ù•¡mÐÐ~¢?|@›èè(‡Û –§ðºÓÃѤ-ëú‘T:­K'm ñ ú¯©žpMçé+åÌ™Lã¾U޵ ¿ ËØ*ÉâGÎ!¬­ 4p–~¶b1¹@æ70Î}8RŸ´žA^ø~󾮿¯ùþ5Ыs¸È~ÉÅ¥CÒ _«ª4Hk:+Ü^™Üºv4∨f>í†Ë!1¦²Jwr°oûlÈ{©û°âŠ%¸qªvùQôe§¿/õü2ÆŽÝB¨]cö9Ñ wb[½LÖ¨XVrZ¢Ï¾K‰lMCšª&™é %áÀf¹|,ì¤S;Œ §om¨ô¨Ç™>ªûÝDq9®ï~IUçqêÍY`j´MFr<›,þ†?üÙ À³hxÇ'awkܳ¼¢ÃŠ4GÍÏû‘ßÁ—X†BMj—ͳ܆kl•RÄ|°µ—”0+¨óU ús‘[<á‚-J–ó8ó~y" l‡1LÀTÅÛ‹É8~ŸçuÝ?ëD‰Èµ¾ÕY8*{y1X`Ú æHÁ€“Zžò77vÜÎ:ÕxJÐÐøáéEìE¢ÛùL]ø€ÿ (3Œ¶˜©/x°¦¿U}@c:;3CíìÍøE$$7Íc0ב;n™klQ¸%š€1hœ«ýbdÖYD1£¹hðÀñPèw¸ÇAXó­ _šØBWˆ™¸w*%5’ÎŒœ8\(žQè©4ÿŠ+Áæ ÇÞÐvß’ {Çë&Ë×ú\4sFQìK¼ìøüYܬ–(7Ê@íºä­b7OBwU™ù}̺;/–¼+û˜'³B… ¦rGÔº]¡UÍ1{+𼿱دw…M#Ùš/lyV÷¯ì.¦×Ãçä35B/Öþ:ã‰ñ Í&J¯ ¨a÷YÀM¨–ÚÌs—§$[Aosk¡íÐz ©2å\r'Ù#óÌŸOÓssõÝš‡€e+‡I˦Œa›Œ’vÜ» oË‚žfÚç_`CýZNuñZ*m\ùò‘ò\aC‘€F}êGºwÖHú‡#µ$¡§lG|ó ¼ìn—YX«E0ä®JwŽÒû+ì_9{!Þ ê‚ÛAEï ª[t:Šâ;½p·—¤·õ«Ög†|Æ“úeÅavÈ0~€-¾`µŽÿ³yå4¥¥âº®öpŽùõë– 6éC/Ãި̋٩©ÍMíãü®2V`Ò?—:š®R‹(¶ K2£Zª/.sÏø¿ ü°èx†Q¦ÿ;Ù|2Îu@;Å=ܱ¯¤`óØ‘ŠwHW{ôdë7i‰<«ÌU€åUº°¤ÖS&NÇG‡šnȼ1 ºˆ’¡ö¨°"î[h 0«‹eámƒ3ß” TEtŸ.NäL‚E³§Òîk¨å dü`ç…”¯ÕÝ™8¯d‡CüŒ§¼î†dí—PsJ¿&ÔáO•±•9Ë"¾_Ð"z1B>¸#Ù¦–Übi>-n=á¯%˺FãÍm W쥥~7}>—0B`•…gŠóØÔàÆß€ð™‚‚ºµ3¾qf¥,š‹åö}öÆ‹›Ùu€?yYâΜœç†Zò]G¥¹Ò! ´´¦3.šÉeÂ6›Å‹»õ §Ð\=2;ñyEÿrõFù-lá6Q¦_º]yW•IjjŠÄÄ_úÚÀŒm^ÐQÓŒÞ7©|CM´£WgøÎ«]é˜ ëØôZy885—`­[óˆZB[í{í%Árù¼Áø pësË Äœs-³,¢è¥QµhÖ:2«ÀobÂkìžT&/xU…}S×+ 5å—¾Û¨g¶ÕÄ̰¾iŠS®Ö–è·!™Y ‡É‚L¾én˜¹í>t*/®›¢¶¿«À}tŒ.í5:LS"|åYúË‚8o­_í«š² ²lÌ„h൉Ò!} ~J-js“ÓC–u, œ:xY&,N;#_gJ#=ø.É­ûìlòײ’sŒú¡Y®4”Qk=°Ü|:Àò“gÁ1 â¹,ÎùV‚ΚØÊ®@à87"Á~(!ÐIsà€Þ$ˆFcåþ¯fÔˆãëÌœšÝï@ç( $>µ@Š@ÙòÊk Ž aHå_Ç–ñî3¯ X—}L k›ïìí$]+7êÙŽ¶™;ZA4ÜVÓÐÐs¤“Ò§žö¨ü¬VŒÜ+!™’ftè›ÑäK¦¶/¦B4ß異|&AØuü˱§±Ž&þ` Ý1I_q†ÏÃcoÅ2VìCð(ìs ù:ͽÃ0p½0ÚX“•j_¹LTÚ˜Ôý> E…zÝD('`>‘`RY“ÈRHÆ–h[¶Í³®ël»ôÕ´\ùÊÙ™;™†¡ºÔ§Ñ[i{.Rï$ˆú¨œÑ¬¯<§³´(§Ô_bPãÖ ­C¸{Åâ8lm]/¥½#²Ë ·¿’zXúQÕq©ïÄNíó¢êë€ýW¿•(üz£C^!\F›Uç•GÊòÒû UuXÂD=ÁúuëÑÍ÷‘a9jïEäøû~ÁãàüÂúä¹ât,‹ GL(§”±D‡õ!ÃÓÖ*£ßøLe»¤¿8°aÝsd@x=|+ž»Lå̆õ ˆQ?ê Ð80•CÙQ…Ø#}m6Ò™ý½÷Óˆ ¤Gà‚Ê?"½³}›Û“+kË/ÿ,盞kí%¥tÉåó<é:<é«@;ÿ±UHØýãcáé 2gÞs'¿úølŽ.à…@^òp¨`±΋ƒM»m[z ©öSò×ó¿ñÇ+NUâÍÈч~wï >Þ€ç$¹Uû&°#òݼ÷¢¯ê9…µ®L­Þ]È õŽ*ËÉ45ªüô–<’µ3½Û¿YÎ%9sH=RF§ó~~©&m¹‚zAÓO¶`¡‡A–iBLö€‡sÙ®‹aD' óˆ)±‰þ£ÁR®‘…b ¢NmkFØKñVlä¬ßûÜ«‰Á)ÿ»l‰èšíü šU¹*1™~1ÀÆãë0Êös4žafSé÷öcieº9ÞE-ä;6¤üü¤Ï­ÀéØƒ+˜»‘°:›·µ( gÊæVy CwQ\˜Ayk÷„¼áˆÄI#Á/®ëÂö!éÎð—„d„¡5/víhÆÌÔ×§Õ^ZžÇÓ)p*Õ%Q„ ^ætþè¶ÎШ-`Ë%¥À"\”ªdòçN3¹—» DE=ÈA›ÎŒþE²:z®ÏWË¥Àl.šrꀾö%9"8ï[máH(C:²I0ýè ’AtÑ®Vbš<Rü ïz…ªª endstream endobj 93 0 obj << /Length1 1681 /Length2 9442 /Length3 0 /Length 10532 /Filter /FlateDecode >> stream xÚ´Tê6LHÒ H×ÐÝ %Ý(1  1C—tJw·‚€t‡H‡„tw‹HKˆðá9çžsîýÿµ¾oÍZ3óìxÞ½ßýì—‘NS‡SÆny‡¹pòpErjÚ<¼ äÅbdÔ…ºØCþ2c1êCÎP8Lô_rÈåÁ&ryˆSƒÃ*®ö> ((àEþGˆäAnPK€@ƒ8c1ÊÁ=Pk—‡cþóÀfðˆˆqü‘q€  `  r±8<œÙtà`(ÄÅó¿(XÄm\\E¹¹ÝÝݹ@Î\p„µ$+ÀêbІ8CnKÀï†ê ÈŸqa1tm ÎÚuàV.î ð`°‡‚!0ç‡ W˜%x8 £ü áýüâÏÀ_wàáâù›î¯ìßDPØÉ 0îà‚yBaÖ+¨= ñü—‹‡ ³ü²w†?äƒÜ@P{ÅCÀ•ƒÏe´ ‡ÿjÏŒ€:º8s9Cí·Èý›æá–`–rpÌÅëw}òPüpížÜNÖw‡yÿ¬ 0K«ßMXº:rëÁ N®eù¿BLXÿج!. ($€8 `îßôºžŽ?œ<¿Íøz;ÂVM@|¡V‡,ogà‚p…øzÿÛñß‹‡` », ÖPÖ?ìfˆÕŸøaø¨à%ðA{<àïÏßÿLäe ‡Ù{þþÇ|¹õµå4”ôØÿìøoŸ¬,ÜàÍÉÇàäàˆ „€ßÿfÑAÿªøOª2Ì ù³Ø‡[úOÁnÍŸå¯Ý`ü7—:üA´Ë?‚¾xþŸ•þGÊÿŸÀ³üß4þ¿=wµ·ÿÃÍò‡ÿÿã9@í=ÿ xЬ«ËƒþÕà[ûßPÈŸ;«±„º:ü¯WÙô°20kû¿¯êüê±Ô„º€mþËŸv½ßKf…A4áÎÐ߯ €“üßÃfí^çEþá‚<,ΩÃ-o¯€ „@€<±€Bâxó<¬¢%Äã ¸¹`p—‡ÀC{¾+8ë÷DÜ2¿M"A·ìßHàÖü‰¸Aÿ a·Å?HÀ þñó? ‡Íü'úwgÜ–ÿ‚<nÈßP€ÀmuƒüËÿPô_ðá0ûÁ‡Óþ<ܰÁnø?µ<Ä>¼½ÿró¸ÿjEü >\€Ë?…=0»¸ÿCÆÃûÀíù÷CY^ÄŸþÿš Øxx—þØ›‡‘ýÿñB 0Öü ,l[ÜvU%Céι=*1ɸmÆÊé=hw½ÁÅHf­Ì \EüIìzº´©Àr!½@ûËû ¹#¬%Q«õ§Ï­Y¼öøv+ÖÜ’¾±¢™Ú^jL*N]éŸ_N>úv¨ÍÈ*ŒyN®Â¸š„Wî=е½¥‹Ã¡3ÛZ;•‚ªØ·¥œÑzQ¯Чó-²§ÉèÑ]8©³{àM]ü˜$È»§U‰gÇòýÍ÷ÖÛx7æzÚk¹\—×ùù3rc2jÔ ‚áq&oÙ½ÒYï’·«ˆáÔi’ö‘u‡$û=¯muí+Äþ©)ã˜( 97*‘ò›¨Õ¥‡bºtþìã%•UåS¡f g轆½P­€6¶ÈvçMn­× q![˜¶ qr--¬[ Œ9·– 7¼pÛºÿ6štåU?xyh™¨¾I×\º¹ÝÃ:«Æ=`Y—npÉc@yêDÅk"Üm“Ížèøœ ïëØq¶t 7ENf¬¯”Ø«jIΕÇf§|CR›MíúC¤™"š!9+#¯™¯^»ß̤fû›5³r¯µ×ë*¼÷ë&Q©^é½Lå‡<á,ü"L%ŒØ˜ëF”°õWÅ/ë¢ò+aë*á1w,¡gºÎF>ž™rŹJ­udñpÔí“s4â^MæÇPšŠÔu݉«¶°¡ù|Ž|ïÝXó/QàX%ÏùéÔ†B*Ùn 4Mõ8H©Ñê½c6ìÞ?ôÛ‰hƒ’ã Š‘{j^¸4=Ú,@!‘¼¯ž[rÜ¥á ÐѯBöí}÷i¥tf ´é™õöów@Ÿæu?ÎM¹ %±è{˜2p„„uDE)¢hãõzìðlŠUœOgœìIˆeGŠJ7Ò é '¶7Œ”!›âî̪ yTâˆvî,ùjïŽY÷o‹¼®ü²ï²o¯wCìEWj†ú)ÅfE»zå7ýcœ¥@á\±³¯C­f—ùÚkr¸Ù[¨ñC²{eS%'ªV&—5g4­,ìe&zk9Qµ^D·Ä/4Ï£h2 bǤã&í\½Ë¦SB¦~`[K a\ s çZæûaÂäqå{¶áÂgëtKÖ´Ú¨dJþ:HTebÚúH‡zkþߤèìßE«Í—óZjì-r…èö%’Ý4¸%ú±J5£¾•{¼š—¢oA$dºa—™óþBE¬üKýSÛÙ“ùhEªOïŠÖæ}2¦ºiÂõŠîÁ#«{¸ƒ%öS~뉂6‚h/1yçWë¿äÆÑЯ¹églØ·iú0²ê÷7á:·Ì–eSH0µ°vËIÎUbºÓ‚ͨ ‡kÒÑÂ5¤ÊHZ Ùè:j`Î(E§%L}î®ÈgMí'Ö†mù½iÉ~Ž9BÑÌû 'QoýìÂõ“àFšÜÌFŠ^#Ý fíó¨~ Û ¤\ø µZ)Ì÷Å],;Òq¢¨Æ]=÷°ù¥tÐîdîdÌ61ñ SL]™ n°,ΛágeF é*%bL™x?k ‰²Vù™øŠzêO7ñCAŒ)Åù-i—h'ÃÐ(ÉõÁXGeÒŒU,4†çnÉC;B¾eϸY«¶?7$>cN!?øÂ·dnǦ‹ÓÀRñÞ$§OP@{Žóe'‹Â‡o2*t|΢h6™‚¯K…Ã8hÆw¥ ÎuêãQuà/¥'\\‹×’8a]á“§Y’ZaLÍ”)ýÛÃÍ^°4ÜŽðP;¹’*+'Îùä_A‚Np ¶4Gv®Ö¶öÆyÊØQ)>QÞ·.ó'óžL”ÏÓéÜÅ8ÑáVµ>çR›Äõ&{¿.–!„ÝX$TH¹õ©²«¤ömVö 2å=û–ù3NÛ“à+ƒ#ÞåX*Œ"èܶŠKw+é"Œl© ?Lx{*׫º7[.òixŠÞ”ôõ¿öÓ"B0c:Ó^¼î  Y«ê‰ïƒP‡û¬h~~Jn‹ õûoÌé?PU»ø¶ÛñON÷«Ê4lÆTdúÓ3jÛ$M‹ DÜr'ã<Ù(1˜•\š&+D-ÕŽR “^LR=òºéBn-éÚµ±‘“2ýÂ3êÙNòÐ:¶DvòHu*zå- íæº),žUÝèŸô‡–šº¤ðûÚ@âW”ÔÃ=J”ßrh4b2¯½%_÷/¨¥ ÍÄ ¾U×øJ¶ÀàBÂÒÐÍy¬¿ÍÙÊÒH§RßhüÑÓp³½„ΤÒkvIz–«Áÿý51ŽÀaÒgl¢ü‹:3ļÒöþ'ëÀâJnÄnqàÓ=ë‘JMÆÄ7€r˯)Ÿ<ò¦d~zÓ†ZÆò n,—Y‚ÙDs®àÑ–æá2j7šÁQ¡œ°¢ø°ýJ—G & õo#úì­™'!%©ðöR,, ÇÙ40âžTëéÚÜ/Û»uˆ´Rš±"_O‘?s”ËÌè; ~Ê>ÌÒ¤ƒ9ݶ ùSÿM‚†cþP¿ Xμe:o˜ÓSã_!,Pn$ÃÒ˼ŸΣ’ÍŠCQI˜4)1“RpŒ‰Y9áD¾ª¼þÊÌúÙŒžú£¯ªQ~%{½åŒ¤)xEÿ`PÁ¸Ï…cà!9k9ô*Ä A[ûa2W†ÿŽ*,+pǶÓœê±k—¦íTø‰"¯y/Ù’yF¤|±øÍ´ 6ÿ „mT*I|•_`ǰVá.Õ騽^w?’ØýkÝ¥>›„zñ m²ÇQãýöÖ'a“#qBúÔ„}®!¾=RnÏ«ù†ïýh¨ýM¯¢Cõ$ŠŠƒi:`aŸ’¶êE߇¸¥­/ °ÿ —ŽÆj#¡­5R'‹É€Ø[Ÿr©}ÑìþI)îZOq=wjº+àÉ6Oâœ@®g¼p-%7NË º~Ëfeñù|qs÷i@`öS6Óç¾´ R8š”;1Mþœè·G¯S(º_Û'e%<~îF¥ß P=žãzŠñŠÙ¨àG_̹q`d.a4uDøŒÏFV{/îŠBo½Á_«í5¬‘ðB B‹`ûûe$J;ÙËÄ@ mWH1é­ä¶bÏö[/¤›J[ÍÏ•¶»I$Ú ®BuNO¾µ^Ù:Øc…FfðåÒ-“‹ ‚(¢¡˜ûOÍ]{„éjžQÔ‚•\ëé¥ßj ‰½ö],Ák¿²” Ž x<„;œrý„Öºå#²½Þ-Üíí¯È\vüZz-F/‰žg%zHÈ®âÄ*‚ÚŠ©?†ê–†ÃÜV¶jI/®»[sk'ˆLÊ%4å|ƒo—Ìx—ú§ì~]2ô¡`ï‹Aª…fÐÞ*§\Eµµ¬:¹[â`Fþ¤%_=ÊÌÐéløðÆ$>ÿ"=#öç½P´ »d}m—œ1<¯Æ,ó¦xQ[RŽªeUÍÔ÷Æ$Ôò…¬k‹{Ú@/`ZQ… ïhê£N4ЇhOΣÞñªå¯*­.u@”viUÙ³µ|Ä»RUÔAä £…2RzDŽð¿zs(ü¹ñ0Ø¿:l @Àîõ´è]{¶¼»#}™˜íI•Ì£›˜£æ:Ú¯ŒáVsM¸«¯‘þ’«Ž·Ûö$,{½âªÄ°Ï"Œ;¦.T pÃ[åV&¥Á¶ÛKªYQxÏ%ü|ÎG™¤ã®sô•¯bÜœ{^l¬Š‚üK²dø¤~Äpi?Í•ÅE^EÛHEéùhœ–°7ëQ?«CŒK̇EÄUPÂâ~Õí ˜'r¬­sO›"Ĥ(D†æŽñ$µ²Ôg¡Aå«—YñÖ©¡ŽÞ¡“fxéÀ)¥I–Ïu®í“o½|2u‡ë6õ•Õ6+­ØV ƒ»ˆ1†Á» ¦â©YÚ#nœîlÛjxs±á×g)<úïp aR[*²V!yäÙÔÚïP0 Þ[J uü6Ø,!Èy”Ö½¯Û°„?rÎÄÌ~ i!’¾bñý–Iv±C¢›…®‹­–š¬ù¡:ÐüÈq*<ßÜ+ÊûŽ93+Ü'∘=#ë3©øwq—ÙõŒùÎáU{e%ê¼eçìn‰#g^ÕðÆð#Ò~E<*£¥ïÙ¢g«:Þ¿x™ÞØí̶¾ž{í`gåV"'¼<ÔOú䉈®£±t¬)~ÐpjqpTȱ±Œ·!9PëEY­PM‘ã§'$–Ò»¬Ú&÷6R /B¥¾y¦9¹ïHÁ½jO3—+o¸ªË*á1C®=Ž!íÕ7(%Ž¢3œ‚d¶žqûù:_yŽdg²,úŠðD¶?m9ϧ…÷ _º¢E윓îV9÷*>ñ UD*wª‚”ÇÀ´úÉA-‚‘òÑfÞpFÆ«G2_†O…åÊó _¼U‘m^üÀ¿ÈÔ~}]èp/(óÓMsƒ•P±òvs[“Œ¯ÆÊ„1VÃ%À/¶y{“ÌÞªMÆc#Ÿ@rp&7d½žÖ·A:Ül¬±fóíý™Ón +Ãõè¬UFÔÌOö|Ògƒq¼;P³ô÷²Ù^nŽÌ©LäöûMÀì{þãQ-ÁuhlAC×õÛj”Àæ¶ÐËüÙW#wèð>Úų˜3‡}¬÷ou_¶¡ÎÏ€‚˜{1 çG%Øó¸ö]Ìê'8˜ýßui².œ})ÎA°Mâ¯ó„8Î>ËæÒó¦æŒj(” <äF…R8-ä¥`Ì5†}œ6#,ÓÐòWÖGùö)P'»[ž­å>ó™PÓ¾iä4¢\«Äy/&¸£vãÓ›ÛmýúÔÿÒàZú²Úþ”Þ6>`M‘n¯€÷Í=±±©s&˜Ý?ÊÏñÜr¡ÖО(VÞЕ–¨ G»™Æ‚W òáÉvdvöjª½hè!Ü,³—ªÓ!H~¥Mœžç™ª0¹ŽÙ…šÞDi;v«+ÂCv¤™XŒ¨l˜?7Ñõéw¦{­¨EêìJTÅ%¢žÁ(‘—)‚&ì2¯3ïz¢C¦¢9ö¢{¦¯he gžgÏÙÕq[¼ºØÜ«qS^¾ÜDiÄFÍ×"X!8ËF–¯žúzöÓîÊ9¥ÀF²!Ã<$>ý^³Šåµ-£fEhÓÀ $V½¢}ò‹€q)”ôì°­úãëw?-Ç¿gꌴq½@bj§‘A}ö4*0zŠñ&FüJ‡^‘…~§w£ôú×E}èú7´ÁODÉO‘¼BQE妲Ó'nùS6-4•êo(E¦'\,×Gó(.ä^*yDnáµíëÖŒL” ";Çqv;êD¡—uÊÕÖä9‰b¢Šˆx@Àè&Ú“Þ^rÕ¨a-Rž-:3\;ìkº æ·æôs€Ì>»ø,;^™LÉm&ª Óšå=rm¯q +üˆýÖ+k[™åDf0 YMKñÊÍ·¦1“txÝùnÓÛsØ*tñÕlâÕÜ:5(](jÃ"¾†Ô/µùÖodxÙÕƒ,è7Üž b*\$¼<âÂË4VW”§¤ÞìÚ¥µ!#Ž*ô¡%8VÝ•˜xÃ%À¢º~C<)ÉŽÄÎßê9-]B¼‚–óEvúûK#Ú¦¶¤ ÌrjNó[ü¨äˆ¤ø“‘xº·Åœ>ï/´õÕ‚˜–Ïðm£/ËÜ+ ¹-¢Y¹Ì¹~œ>qù”ˆeNv2àž³÷£.ƳmÀƒy/B´³×ü`×[D+U(wó¡dî]î®lêýW¸vHàÈìô{ý©N‘r¥.'á*ÞÁ¢1|¾“‚ÑÓÓY¿éÌó‚ ® töRi&¼öÈøW=ã&Ÿ²- Vóé ÔWÞ:΃º¿¬bÛìc—a­“X òÑ8uŽ{rÑ“ª3jüí©oZOIn!Åïm gÔS¢’{ÓÄ;ÈéÍ5Š5j¹ÜQnf¿¬ˆ4^-%À·í˨ó1BÕâ§Ø‘'6†ŒÍ}'…omßÈûÓ‰v2“Ãy›p&ÔñíD›ï©˜ŒF¤0gd(ªŸõhë¢Ê;1À>VZd*¢ì¯© Ôæ!|ÁoGŸô¯â#»Xvz·¹P¥ŒxˆF¡TG,µÕž:öô¸Õ†àÊzºA=Ë´VGб\W’æÁfB©‡Ý2Á—‚ V£G|ÎÛ.©T_r¸Ã«f#Tî×Á8M!ÆiºS?w¯ÀæÓÈ]7IßmǤ n°Gñ±K il«VÂÚ1d¨wÐâµNõªÎÙó^ó¨F’Ö(GlÂâ­åDŠXJ‚²v%Öw]¶r#ã?ŸÀô¢™-ð.º ¼…qG¬+ˆ,ûYUˆ¶¾¤¯$>3ø†§2Ò‡R »æ%0Æú >fUìê©ôzÑØ<›i;+{»Jæùrú[¥‚÷‘ý…¨F_0êu£2eéÓ+ÖU¿gç×ÇHŸmæ‡D&Š¡š]!*HZ¾"j%ë/xp«†?—ž4è7¨T’I¥Š~1Œ§ŽÑQT”—Ù­¯ÜÛ5YC^ÕkO»ñ]2ÊÑ]:Aº¬ÒÙ÷–vôøÌ~°1VîæøŒÂ}#“«oÃ7Ê×{ÖÊ®æ3h‰P56{ªH j¼ ^®ÛdoPzfC½ùª†>²‘$¥txm8„ÿ’8Ä7HÉŽUó†ôßDµÕ¼×¼­íÒ jª²:‹EAþÐÁ.í©B|™…Þr¬¸òî%Ͼþc±þ8æwtº˜t±É0j‘°Çç¬yì6´£UÛ)yMí'V–e¦ëª?J>ñ*0{:@Zûõ±ónZª]‹hvPŒ¼ïñfm~bÂ]x_rüÔa‰œWÊ;ˆ¡2#xM•—EÁ^²ÆæÙ(_€,.Tƒ•hm#ò´Ü.Ñ—{¯äÉŠºÐAÎݵgè˜;ßeKz¯°SCÑâa‚Ñ¤ÛÆÈô}™œ™•#%8¨ÐðL— w e8ù..ÐvõŸCˆ'ËΫ|Ñyº*´¤±–*2ÆßUR¼J,é ð1Y^D²<¸›h »ˆ Èí^:’OÑ+áZµ•NfCÂ?Q%(ä­l Š‘À¶ÚôãOɩ•¤&Òû·éq<Ú°ˆ‰ØO;Åï7ƒ@óÑ1O?ú©(·;¬éÍ9ñd לU&׫8?û‘^(\œO›ñ‚[Ü —峨%?^bšÃ·™Õ ¶« ©-,Gz\™ÍÇJvÔM)Äב“ÙCdÙ‡ë×[§KÔ4剪JIºê`rÒ¼¦Xoãø>»¶ÂjÀº‘—Ö)Š.)J¢ ^5Q³ß=´‡ï‹Ìfä^_Éxܾ"wá¤×´ï£3ÃŽ,â$ÌÒn,»ë5²¦Æ‰;:¸‚p ªé„Igûœ2Â;U Òôd •¶¬IžÍ§ƒ>~ØO?2„SU›¡ L•žac¦*”pï­Gg0ßøë÷wÉèh"v÷Æ 8Ò® ï¥: öçB"v 9¸QØ9´pV3_^¢±r8|q–¾Ï,QëGÈÆíG¶lœQ?g©&~UÜ8µ•Ù‡m;x©©6J0jµkr3ª"ó ØúQFè³ÌÜMËÄWÂÚ»!áý“7DüêjúÔµvìéíçCRì£øI$/”mšòõ—U‚–ôP „v¾vhy§µ+ 2)UQ.›9•h£ÀIOÎ9¦ž®%g‹p¾ôc, ¯?£ó`º•ŸZGM TçHÛÆª„êdK…½*A²—ô¸,J6-V¡7Jë°ŽÛ)Ä!‘Æ ‘ÉmîVÛª¤yÑ^A[)qþ2”±£÷â{ÊÚâ‚Eb•›/ku¹Ì9&š‡6Çkœ€fÕÖÕËäØCõŽýŒŠkXsœ©+ŠÉµ²ÿæ®àÆäjÄÊÜ*+Œxdõ„Ù6¬¶a2çÆIª®.-ã:²_³ ú•âPHÁé.Ý„bqºÅcì[Û§Ÿ¡bsYugV<ޏÕi?9ËÙˤ.¹¬ËßÄ2…ÓQØöz½i‰›¨ðp¥#Zã3¦ÊXQ[ GçVËïñ}³œa@yïfð–ÍÊ£÷Qøc9ÛaZ]–±é('1̹Ϧ™-¢©ýš(³’ZèôŽÝ4™rõã_šC0ÅVJ.Ð;>ìΔe¿ÓZN`n2 Š™'mŽæH¨-ÛH9!¤â¦å•™D2QEPî[j6kö°ÏÅŠª]8%œKÝ8Ì*zŽ6½«†¿ÕÌH¢(>Ë‹O³~|^F'?¸íØÉ<ü“÷2 S—iëFù Å?•üyez>âU±ÕÚ]Ú7TÀMÇ*ÕMû®{uPïÑ8uC¸Øé{屦¸y]Vã’ð 'i~]ÞA½WØÕ LèjëOp£S­ ÑøÝP´‚‰•ESø2¤À:a29sïÜð6¸‡ ÞÐEàvø.ur“6a3s9ŸûG§%zy]œ®ßL¦‹üÄóqÝ7gj†6o%ÒõÞo>¶Ñ¡©#Ÿ¯ÐÜ$¹l c*…ÅŸåGåH®e6 l`w;(bÚ´}Õ[‡e'œJܧs“sfÔ EkG'!y¶h½ë4ø&èw¶Æ¡tÆg¾=mÂD÷”D ø¡úIþ|“é×¶™)‡ö—„e²ŠÃÓË6îf>7-ºXÒÓFžrŸn¸.öËNò"7Wj&’òÉÅJd‚n90ƒy 1O“£IL½h Vj€#(›èù9 ÿ—aWÊòS¿¼ìèÈ÷nÈ«‡}é¸5ÒÞçØc¼µðä¸_yèéQ´ŽÌØ…À`F›êêÀÖ >XµÙ g•AK{ýú{b§‘õ7\d¡_}oϤ˿ŽKFµ{`¿ùyˆ33·[^WÕ/útZ3}5úU¯¨’—}kÿ¦‚ŠÒÜõ•0£ZÃ*jÕ=¦[ Gïû-?wN« V~“>¤¨çNei™Ö›6YZ(Qm%›­ŸŽ­2_Þ?îaWÓ3lxßé8ÀòqêŠLYŸ¼Ãy¬fÐEÄeyFáÎ)c¦4B& Þúö´·XžÚôÀŸÜüb"÷]ÓžëÅøjŽHj"¿ “ÿ²‘ÙVßf²ÃO®òj¢Üç¢ FÜ<@ÔJùvîbG‚9ƒ}=*5'Nù)Ø/‹þ`Êu|ga.TµSù¡ošX½å²T¯ÈG¤¦s0‚Æöšº¿ÌÍtáˆGž\Id×ï6Á\WWàЪ=Ú™,)Ȩî{‚ûnÌŸ$™=¼Å=Uks\¢<\Þµ),*ÁÝèê¼ú‘ÅW)-‹àM¨!>f4ÖB¾(ÓQtÒ+Z0ǼÏX!ª$`I‰3òS;¿ÿL.Ëí÷¸Š$lILv”“×<ÊJþuu‰­EÀÝé½S)öJ÷ħ_ÀþsŽ ìÍïU»ï$¯rŠÖ 5Ê“‚éÑ6ˆÑçÍw£f } ?Å:´Åã(½\®Ìx“¼7zZ7Éó!Â#ž‰•ÖÎ7ñÉL{Ø$·ª#"ÈåGòãr,±Yþð›Â ç76"?…²[õ¬n1ãÇJ¬îYNÉy[´ OR&30UŸQX°—±· ú¶8‘GïÏÅÛ'»Íko•šÄ,î ÌÐÆ~!œ—½–,j6ûñg,÷¸¹®„p Œ%¨:‰Øà(åãùZœvþ¶v=ïÈö—;.œ ##Q昑_-â)O:’8>0óEËBÉŸ_M'[›®&Q[¿ Ë–ŽrÈ<@R&ŒÃø2¼ßQ(æÏ•`Ö#Ë=Þ–À;í7›²6Š:%D¦}¹•†áõ˜ÿ%¶XɽZ 3'hÛ+ÞÙlÏñ:u…K÷ó©³ÏÐV÷Å€ðÂöгl©û5Äg7Séƒ!•™ñÔCÊ[åZúQ‚Åã6³¬RØ;Ú±sðë 1¥~ÞÌx#™GØý¾:ˆ—˜|çzTç•ÀŽ7÷ÓþÕ4ÝÙžÀ×–s[Šù2‡Ãiúi‘Þ²Ó/Ü1’ø8HÓú¹C*Ï ?Ò‹œk›´§hŸ°ÖÛì4˜¶kè>SM³•;f±ý ÷iP~W?ÔR–²éÔ Üç˜Év+0b€L|1D@ -š!“y¾±´VËGüÿÕE0 endstream endobj 95 0 obj << /Length1 1481 /Length2 7279 /Length3 0 /Length 8274 /Filter /FlateDecode >> stream xÚ¶P\Û.ŒC 8A‚Mpgpww×` 0È îînÁ ,x·Á‚—àÁ]Ã#ɹ÷œsÿ¿ê½ÚU³÷×ýu¯îµ¾^5´/ÔµX%,aæ`YÔ••ƒ (RÑäà\l@ ':-­6ÄÕü—VììAÿArƒ\mÒ ×Gž Pt³pp8x9ø@'(ð"ÌY r‡XTØŠ0(ØV æèå ±¶q}\æ?Ÿ F‡€Ëïp€„Øb‚T@®6`‡Ç-@ö-˜ìêõ¯ Â6®®Ž‚ììl 6˜³µ(# Àâjл€ÝÁ–€_ TAà?±¡Ó´m .ìZ0+W3ðh°‡X€¡.nPK°3àqq€–‚2@Í ýCVþC`üµ76Žÿ¦û+úW"ôw0ÈÂæà‚zA Ö+ˆ= &«ÌæêéÊA-Aö.°Çx;b2$ü®•Ѐü«= gˆ£« › ÄþW‹ì¿Ò<î² ÔR æà†ºº ÿªOâ ¶xÜv/ö?'k…y@}þV¨¥Õ¯&,ÝÙu '7°‚ô_”Gúß6k°+€ò ðÀN°§… û¯ôÚ^ŽàßNŽ_æÇü|aŽ«Ç&À~+ðã ÝÇä¸:»ý|þéø7BçàXB,\æ`kýïìf°ÕüxøÎOÀKà£ö8À_Ï¿Œåe ƒÚ{ýMÿ}¾ìÒª2úRºÌ:þ¯ORæ ðaåâ°ròÜ<>n€ß¿³¨ƒ Uü;Tjü)öq—þS°û_çÏð×l0þKö(Z0€áoy€?ÿÏJÿòÿ'ð_Yþoÿß‚dÝìí»~ûÿ?nÄÞë/£fÝ\õ¯{œèÿRõÀfVl qsø_¯‚+èq$ ÖöÿÝFˆ‹,Äl©qµ°ù#–?v_Cf‚Õa._· €•üßãdYØ=Þ.Šüí?ο—”ZÀ,M'/äì òB> ‰“‡àÃñ8Š–`Ïß°³Aa®!€ÇöüV0gô_'ÊË`—øeúìÿE¿êa·ü|äBþ†^è? €öÈ `wþä°»þòØÝ~Ãucáæìü8Ï¿õöØêðïË ö[ ÏÏÀ,„BmkCÛ®ª%H=X·FE&i·ô2Y}æÛÝn°PSß¿^q¾Hýܳ¸!Ãp.¾@yïó£¹5¢å•Fë­ïi’æøV+úܾ±¢zÉŸ±j‹ó½wòÕ ²Cl†ÿ¨HûÆÉK½ÿÊ£GÎóCoù×áð™-oïy•0îÊ'Xãtb‚J¦hóÍs¦‰©P\YÉјðŽ<±§Î/&ñòÆ(“˜Ñýö⸊} W9㯧½—*µ9]:IhH ‰ÉÏñ†Çé|$wÒ‰f}J߯à4± qÜ+æïE¡Ï)¾`0Ù üäc;ªÔ…*½w±Mç oúv臂vä-Û&U‡óM/Ì@γK¤ÅAƒ –ò—ÍÇðâ£ïÕ´Û¾âxI!Ä<sرÜÿÌ9AP×0·<ÑÅÍSk®¨«ãȺ@¦7Êù½¤®ÖîŠú¤XªÜBÁä¯ê™|ØKÙ]ßÒEÍbLÑNÚZIðâ„°‚…¯bgdµUÖoÇt‹KUäÖ¨7gǽ åÚS,Žc_hW믥_úYÛ9 äÈãía&ûTݳKøD^‰^…k†í_¤uÓmèMïžsí\0y®ÛL´­pGÔ“+x¤9b& çJóÏpéí¸gõ¿»W `» »ƒ}YŠÔ©5V‘ýÔÀr·²Ûߢ×rÌ¢ýašÒ¼Íl™mPÛ …”÷—Áò†LASN\˜±|æ®ð'K(Y§Vì«ËÀ:æÏ*úS€¯ÿÏ_¼ 5Æ'ÓxÄXñù ñP|{Ènô7Çs£Y yÌ’ó,NBÕ®йŒ¥ÕaDLt qδô2>Ϋ—IªF Aʆ6e G¢–LÀêSÁötßç‚&‹ÏÎe½M<Þ ÎYŠß~[ ¨º£NOÐ{/Ûn®P=vÖKzÍ‹;3êâñb,EžOI@ep‚ ¡&ß]?öü]ïš(£UIÔØÏré2Ÿ-‹šçdDãùb†¶[dÓB‡Ò' T?úS}b¸G¢RÌÀä™Ô®²û¾‰Xë…ãâ©Ên{Ê-´|±ozO/"²͉°™u*¶rhÛÍ+´?»2`èÕ` EXl©B5ùÁûnY;¡§—šä<3 ò•;F¾‰û0¤kÔË]ªOý[L}!z¯JCÒáÚ™Bå¾ .jO‡¦oÚ]¡ðÍ~šbÍû³ñg½šU¶$c ¢Î¸”• ?ÛL= Ïòz¿ÜÔÛƒ°”'õø’5—Ñ#a’øš$ŽÔ6­K(¸X»וLW"Î?ªœ]ÌûêHG/gVLÇ0ì3õÎuM¨{:täV;Sì>[‹ác×Ô&yÆ×®*ÉîFðÔãJŸ3èÒ_oP7¦Ðbri# Ù=©ëú~M©-Túr§£ƒbzCB¡C©_ƒã¸úi9ؼU÷qh ¢¹vXß÷Ó¿phx1VàšžŨ¤±,kÃqt·2I‘‡§¢ÅÚ‘/1ÈZN¾*rLŠ!(~~òv¡.Œ5_^x•m„;Š¿UZqyÞÐ|îC€Ü”'‘]ëbpØç^ƒ¾ ‘Uܾ»Y‰]L/Ô&2ðW]Y‡Å(‘ƒPÊ ››+”Ø’,»a¶‹ÃÛ-é· ÀRâ%nq}‘Àq.‹“Ö‡%þÚ¡º-4;ªî+kÙ™7­øÞí¬M©Fôˆ…LI«pºÄpš×¹nßœÒwCŠÓØÄíÝ P"VùðÚÝ|8³½K ¾ÉíU”‹¶ÁBáj…C˜±åR·ð»§ÜxøU_ÎËÏbD~6_äº5ëŠhÂN§ÌJP·—sÞé^O?/6£Ágõn0ç›Ï½§·ÝV Aa‰¢lÁv¸oÇ7º;Ø&‡9‹Åõª éUu*6Âh…£O’Ø"2ŒåLŒêéó/ ­Eìë˜f´–àN¯û=Ú^$&ÛkèMy1݃Ùpœ[ŽleD³ceÅ[£v˜¿”­’Íþ’fËë‰ÄU"ÇAÙiõ33Õ¾Äùj ¤Ê \æ=Ž@‰B¬û§þ}î!pì½c*éM€Lbcv•eá‘íi :,EgaN˜rÚbs¯¨þZŸ¼ƒ]øªÝ³a [ÿA*+¯Iå B_yƒªS´,c)‘]2<ЀªâÁcj0ìT”ÒNym#ZþfkÞ¢9Þ:fö&½‚jÔϘ8‘794Ú³¨S‹~žÓ+ïàh–.¦ºÀ¹åÚf‹x¢Q¢5³¿_wL;z¨X#5õiéDÁO¹3!JëeGÕRÖÊΫRnåòƒ”ݪ˜tü<¶’J*">`ž}º­îXdËD-Xá–Ås°K•/àÓWÝ ÏïØKM)‰a3AÎKªØ5¶0;$‰È†–úLÊ €Øç1ákM ßË%¾ìÉ|²€÷kFÍuà’žÔS®qí7k:kœrøH“C Û”jNç!©óU‹faWBXãYöÏ_gòóšrªˆèÑ)Ðø~™¥gm™/?…{­YsåÇ}ryaëˆÌ¼Ùø‘ ©E¸&·ã¹Æô9`÷Y¤¦È'…/<å/›uö87K/ÝcÙ¯“^ê§G‡ÏTp×x•‰ÇZ`R¿ÍÖÉØöJÄÈZýuQeJã±ã^=Ñ“¦§‘b/;¬?Ò~yõ5†*ê°àÿ4Ú~ôk•·2~ƨà­K‰Eû¡ ÊVºH¯º/œáƒ óê»áM&)pA–)u®¨›_’À¢€ÍZ™€F^îãþ ©Æä¹Á£#ªv÷ŠYAÙˆ/®ŽûÝ v¯¸–SBu·$8Æ>óKpÀ>ùš ¿}`+Â/ÙI–üh=€"^{Ž·ù 02YFBìþU'B]/x‘(ýú'†ÛVΔÕsÝÂéç(M«%èˆAÁó´kyzIŽ‘x>@GtËiñ,ªxA¦^µàwEðB髯àî.Õ R»ÕŠÝpý<´@û– /±œÕÒ¡ù•ò;wÖ“÷ àâ VRTÄ Æt1±:ݧqör/©rF¤„h:òKQÊ]‘÷ê5&ŠñГ'x—µ+N;­Æ®›Î²,†¥#Z‘$Ñ& ._²K%]Ú⩉ѼȆá׿ïDròaù¹”k_ˆáUC(ýÅ=²…ÿMkgçDÌÖ³Cs/¡@8/…~½Elͦ8ì¾)œ˜ËӋ陎uÎTÑáû£<Þ9ٛ祸>ÃÁÀ°óÖcº$i)º¡þ•£–‹$ªò)OÜ13ÜEƪthóñ˜ÉRº¶º_ö~â‘NdÝ‚êpÈ5ä)cG ”É.Þ«Šíö¦·#7Elx9íŽymá¡-4âm;¢Ù±f’#¤<yÖ¸iA‰„´´eØUéÔ‰6Q"õãARpZ8[’÷ãß;¶66:Ö/VfN™e'QÌWýAWÚXk’Ä;M®‚¢¨ôL~Ë:(¶|2ÓÃk²gN¸Þѯ.õ¸¦~ ?¾ã…BZ[)£6­-y#U ø”Çúž.€^rq9–c—æF=Ãçrçªô©q ýºQvŸQ™â6-W|>dz:4•6ãs¯‡Ýùv-ö³²¼”’ˆ ¤wU (gˆhu¢=ÓéèšÏ B²üÚÂ¥´ZU:kZηB°v‘å Ò Æ…ŸË©épÛZVµ}°äÿ,M¶e¤¾éj¬àZLWoHPÍçK¿Dà´®(ï­Ò¬å©±wJ{ÞBÙs{*6=5;µ†à›X£Xÿ‰&ؼèA÷d.#ì‹Ûî;Ìަb¹]îú,OFüm£ Ëo(‹û…ßFÎ೑ëøfž‰JV…àìkÉ„x¬‹|E¦±}XÖ9 zý Ü”Fþ”o‡bk–oLNˆ¥ï©Ý€>Üzi×…ÿ`( ¹ dPa÷xíË1yzkð6ÄMRéϳ›ªœHãÛuÍu»žæ%²r6О?}çnøJF ¥%ê³õ¼ñwl«Øï§úãœëïØìêVk÷À¤ –5LbáÒM úÓõ®§Z˜‘DÀ3Õ×¥ã(RbõÍ«ªþOƒdÈcê-e……ûT’ÖvÎ}Û0ø´Ý­ÌõJ£--6Jzƒ¢Kö¿Fïaª7±¥ N]¾_’“zÓCh_˜Â§ÑÌbTѸCR¢ ÂÅa˜­¿Ï¸!p9x±Äÿt½3DCùtÙrVº+Vi¤Ž¼˜ìù@-¹ž V¯÷4.çàØWW‚ªéÉøSê³éheÍUö·%è¶IlKõ‡¡73ŽŸ²t¡è~θ“îü0Ac:íÙ¯åÍÞ·IãÑ›.WM`°†e/×÷㪠3ÝÝ&Ž*f;¹ö£î;¥—Ó::Bçåê¼O6š £IÜ·W¹SP);©Ü”P¡6>A`œó,|s…³Ã|)ªÑÀ‚«<Ñœ4<Ò­‹ÓrúRÂÑ£,@weN–n×"4cÒ®zäÍÚìÌÖ¥â`Ôf“”VYMÃ5DÓã"ã+´¾‰,§hÕÌEÛH3E…ºÖú{o µ£ýàBɲO†Ï[â³LúÏ:_b˜­@($’.`‡|Ñ!Ú¥}É+ 4N2Oû&PnYrÍ…@“ôç$ıµüÐ!‡‚˜–F¦Ïß7v©Ñ–I(Îm’Íï2?Úiý`ËÞôV€{`Ik59{7™a¥QÜó¾©àM"›‚Jö¬tšv§ô1“}¹Ô¬¿Gu jË[Å©=M戞WUš¿ ™ôËK¶Ê†'(¸ÜÝw«¬À+#ZC‡ôfÔ¥—TÝWrŠì]½à%‰UáÄíìÓ¡%F¸J~‘'ùs§Ì¡ž—ï/¡è-ÞF~¹ j/7ëNdg¦›õ»¹„ÅHv–zåGÂUH’uÊX,›‘Ìy½ÒÏú¢VÎHò³üŸ­¾Ï<‚Œ|Þò”6«sÒð°*uLk—-ÿÚt]NÍ 'Nè÷¥[ä@’â…ÙÝ1ã~a‡ÕC;Ìá­{Ô)¶mT]-Tð ø{nñ¤ÃÂAU‚)WèdTTöûQ,¯­1Ê>-j¬ñÆ'Z‚±…þEò¶cºq½ù µ'7ö²”Ìݺv‚w#¬|YM)]o„ rúØ%/Ì„j#³¯ÌÖJÝEHAŽ™›ý%2 5Bªàç‰-o$iô÷cýw‘©ÑUÌñµB%.cd‰ùÙ®–bé8,Ä©³‰^D/JŠ Ôœýì[Ÿ7&ºŸD–ã‡ÞÔI;¥¬ÿ@¹S)Ä/ŸÒØS4ÇÍzg¢=Yÿô“­ÕÉð²ÍyI;=Ç25À® 1Û>E¢¼–õb2j$7gbp›<Ø3ÿ–H¾ã9 rU7q4cQÃnÞK ½ …Òuì@·œSÒÉŽf`1¦ÃN÷7_ÍÔ]yøuŽ–%O Ãk 8>açM߸`ûú:T,×^ߌÙXž‰/—_\^‚§0´¥pé"ߤ— Ɔ—„&ýhðÉ܈‘hCÑrÐûð-=И‡*æÞYÆ}~+’ú†lÁæ8ÿuv§½6Ž¢~C‹@f;¹b”ú ·dä±Ó@s†—]¡ÉÀSð¾î{§Ï]øƒÕ[;ÝŽ1Η¼Fvß'X2÷&‚ÙÊî  Oå“ÑQ"?¦0™s‚§ó¡üðïø½Ô‘»Fnޱi7‘1lZúÜ _Q@.t¦ø²’C pìU¦–#Œçåišíûœ¤«7R0úr¥P ÀÙkm¼&¼#…qÒÄ×Ò”ŽJEDéï˜ÀQu:-0jÙRÔa5ÔýÃ//ùnl¬á×3îŽjµ0}‚Œ[SÖFðÌ$Î(•ÅI+¨ÙFC÷Ð@»-¯-^”ÀDÊ?–ÏÒ¦{ò'ædP8žÞ%«Píß#j)â;Ÿ8¤èUg¼§ŸKúiæ­N Qކž·ÕgÜPèm‚h9‰¹`!îR=øÔþ8`Õ{ÃLÝ$ƒréðr–"Î}z$r‚ö.\XÓ¸Äê…¼ø¾‹âØÇ©ž‹”HÜÅ_¾rË¿–™r;W§˜›YxF©þý0|4¹#¼•p(´»ƒ™|¦<ìúu‚]ðKÜCÖ7N¯Rn´%¿a¶S/‡àï¿•©/ª ̓¾Y‚±‹^¢Ë8oËÚ€‹wzª+åéve¥ç¢1VÓÌjT)×áØ¤:3/ ߈¦š(=9[íÑÊUÊÄF£V.\†”½]W%ïVéÕ‹ÑppÇi+™Ô»¡ .ƒŽdã Ùj:N‘ÙÐ}þ¦"k7œª1ÅЫ…ýá‘V㨳?Íåð!º‰:•e1ÀåЉxul;¹Ýҹⵋ³q+ÓÎDx/O*›N`ÊsÂbû`b"ßíö³&«£ŽáÅ~S÷*?Ê%^Ùl/!yúœ´,Òúè£ãJw5 wªF»Çá èÕ‚LDuÛ,é…\4æ¨@–>4ôG (χñì ëg„w%aŒ9·Fnð7Á_"¾]yÙ^õŸÐå)•O9kaÅr÷Äk¡5,‰˜Ô¨s8½’%ZHÀS¹º¶#÷m7ꥴÜc_©›Ë0f>¯Ÿñy5,±ùD%›eˆˆD/e²“ŠNmí‚4Gö¬;D.zÜTÖšoÓ®¾1ÒI¬ ŽÄ¸ò ŒS sª_n&é\MQÁbT¹ãÜ•¯ÑŸkHÙ÷œ.г¨7(BZܶ<„Þ¸qµ^äíîÎ¶Í ëúͲ¢ÜõúûÂoáL£î “ qÒY=a Áœßš×&£i¹Ó:,bJÌÏš' ä̉Þô‰NfÆŒ®P•\&¥¹Z8`"úQãEŒüÆÍiGÓãTåÚ*ÆâZ3áKk£,”~ȽúãÉÃѲ?iRïµÙ&îÛ%ßM«܌ŜÔé e%;z16 ÷Úž$ži© ²‹¼‹ÚYÇ4l‡§1.?)"¬BE' ¥´Ò?¾i‰ÇVu¹Ÿh´Åg_ZfJáЯŽ;Í^SOÂ2œ;[[¶\Û‰7¯ANˆÿnKU^T$åÎ¥‚õê+å‘ÖÆ†sàÛa£…‹–íTöEŒÝkè§/ɘX¾Ý‘2Í]P¯üB3Îm M¤iìÎ*ÁĶ_ûÜ;Ž·½­äTmä{_Cý„ÍHã}hÔmmåN¤i™€ñg DÛùÜw“üŽUä•a\qV%Û¦RÁß 1öˆ2>µYŸ‰Fz ¡Ó+ghÅOFf0 $ä.Øxçø}ûâÔäy\³íº¡!ô¡™¹þ¾üÚ?%{}%‡!âƒyP¨|ÞMÛ[ âV+l®–.+±YÑàÝåw^‡ÐµŽe£qÏ=aò×Ù3“~…x¡×v•Ú9ßÌxÞ/ßÈÕ¾ÇEGbJ”äe*÷ˆ[Ïc›+ßS&¼^yK¯ÙdPJßÜù—V3¬ÞÌ {fû£•ÐI~NK§Mõð6éêÅô@NUö)Ó[ëŠ'Éõ2bnÕŒNù*’AUS%K!;ÅŒ2èËZ+„„bŒ×îäu«[i×âG÷¯¦†%’“ÞD ‚ÄÔp‰GÒŸ©´Êœ´ÊúâéµÑßm§ª G†Ã$—Ë,¯ZBM”Û3½É‚‰+_NW¸›É#æª/fnG,Ôê3®¾ìöœ1â÷–: Ô„7WoÿÜÌ+—ç‘(Œô“1Í_mŠlÉlFÒˆ«°Ln` @^ „M$WV­­Ÿ#Î5¤þ^ÿñ§`ðp"áÈ„HÔÕ„\—ûÎ×`“aÇŒ®u>÷’ u¾eÈ„\áZšÕÐ'¡‚¹ÊÄrn©XÇ{é—%È_£0X5[PS[ÈÎtö{=Âè¿YSt¶jO¤Mé8Mº eãTº‰}<Še•ÎFO­³3Ø)ÃCWÙ¬È;]MŽ+!ã};$èuy‘,wÛ?¤sQ>…—ŠÎÆÍBŽoˆ6\—žÜ#T9"„¼+ExÛùQÈÜÃÆGI‰î.Ô™á“ê¡ùöºEÌÈL=<ÇG<Ö‚}ˆ jË×d±ê0@\ùöCL˜VÔ÷„²O'–ÿ¾`ä±®8¥/úÅTÝtE“Uo©¼ÅÇ£KM«è<¶Bjðñžù­éVìæ_ѾZ'x ùê´. ÞhLšS…_Ëz«ýéŠ",¡ø)A¤¶ÕgIm=`ßï¢ ÓG•‚«Wî¹Cû†C®2ã(ÈÓB„ëÞ³ÅÓøÅò6j—Ñ‘>¯FÂT0O#©ãò'´ìBJIþµõ~à z2+»juŠÜ·XcF-‡!‡ ;­gÆ*ËÉç––ûƒŽv­D‰ªÐÓ®;cú;)¤ír…QÕKä}fÍdE Ù~r¦çÈ+E3g²Aöo¬“Câz\R,5ª~|VÍÇ6¬Ÿ\¼«ËÖÂ1 ÜUEíJ1WAüT²EõŠ 3!-ÅŠ›R&4?[•×Óc׃IÌéÐáv,b#ô € • 1زÃÿ©"®Oû‹og§á C}ŸˆxUYvMñ=xZ}p-ûî‹×“fç…•¸¥žnØð0YËCªü>cBlG”b qªš‹–'½õvš;‚Ò‹ìKmÂÖß-øGwîö—b#÷'5‡9¦Ò_q]´E‚„Pb‡.ÑÜbç›R…Çža(³rö"’¿ r’䌼Îm2ÒQÇ‘6$ݧ/#>‹×†*Æ$±æå‹RtYÂÉܹ޷Çoó w–²”<£w—öè'…ÇgŒ¤­¼‚gÍe¯rëÚcýˆ¡C®Ì—±óÔ™bsZÀ>’õÃpDwÒ~C’ÁŒÀÏÎñ&ž(='Åãýóh†9c+Vþß …$à+•¶–­œbÔ‹4: ž#ÔÖÕqu(smSn«eæ}ÏÍÁÿ¹ ´ endstream endobj 97 0 obj << /Length1 1942 /Length2 10071 /Length3 0 /Length 11259 /Filter /FlateDecode >> stream xÚ·T”k6ŒH HwRÒC7HJ·t 0ÀPCwHw ÒÝ% ]Ò H#ÝHHJ7Â7žsÞ£ïûÿk}ßšµfžkçµ÷½÷ý¬¡¥RQg3ƒš€¥¡vÎ,ì¬@€„¢º:;r²¨´´gð䨴š`G'ÔNà G0È&“9à ¡v9;'€G€Wpüÿ1„: $A®3€"+@jvB¥•€Ú{8B,,ayþóxiÊ`çççeþË f v„˜‚ìŠ gK°-,£)È 5…€=þ+ÄK!Kgg{66777V­+ÔÑB„àq¶¨ÀŽ®`3À¯’J [ð?¥±¢Ò4,!N+Ô¡æÎn G0&°˜‚íœ`..vf`G,;@]V l¶ûÛXáofÀ?Ͱ³²ÿîï_ v9ƒLM¡¶ö ;ˆÀb(K+°:»;3@vf¿ A6NP˜?ȱ™À þ¢H‹©@° ÿ©ÏÉÔbïìÄê±ùU#Û¯0°6KÙ™I@mmÁvÎN¨¿øIBÁ¦°¾{°ýs¸ÖvP7;¯ÿ sˆ™ù¯2Ì\ìÙÞØA\À²’ÿØÀD¨¿e`g7ärÀ°»©%Û¯öà¿”ì¿Ä°|¼ì¡ösX`ˆ9öƒêårœ]À>^*þ¡²³Ì ¦Î°Äõwt˜lþ7†¿#Ä „;øëóï“lÂÌ v6¿Íÿ:b6mqe%¦JþW).ux±ð°X8¸~~~/7?Àç¿Ã¨€ ÿÐøÃUÖÎ àÿ›-¬Mÿaìúϼüg?ÿK \0àåï9×rMa_ìÿÏÓþ—ËÿßÿŠòóÿe$íbcó—þåßÿ=Èbãñlp]œaK …­‚ÝÿšjÿÞ\E°ÄÅöµ²Î Ø2ˆÙYØüÛHˆ“4Äl¦q6µü{^þ–¿ùµi6;° Ô òën°°ÿ£ƒ­—©5ìþp‚ å_*0l{þ;¥”)Ôìךqpó@ŽŽ T l–8¸¹^ì°}4»ÿ5Æ6V;¨3Ì+Ï`uDýu¦<Ü6±_¢¿/€Mâ7â°Iý‹xÙl¯#›ÂoóSüølJÿ"> l6#›ÚoÄ `Sÿ¸l¿,ƒæ¿ˆ–ô/â‚E9ÁN âdýÛ–Öä7‚‘7ýí »’l‡øÕl6³? ¬<ð–Áü#jñ„…³üšùˆØüaLlCØr²Ùýay¡@X^ûß´a¶ö°;ÚÎlîü[Êþôïíúí #éð„‘tüÂH:ý aW›Øb µþÉÖô?#ºîòrÀè¸ÿa<<þ‚ÿ5’¦.Ž0nÎ]°yýþë5»ƒMQçg ¦‚AV5Am×Õb¤n,[#H«ëíáq:}aÜÎt³9^– Èi¯'ÄÍ> %«Ì•†LÌx“2þ¸u×ïÊð_I’Év†“êÛ?fɼ9ë²S˜AI,Æx“Ã7°âUÉ1õôè´fîƒy»9¿Wnülwú®Ë¿°]bQ%‘:G‹eµïÃGêPѬ;ÑÑÇŠÁqÔKqÑ}3ö>s%ÞE|㱡“úeyy £¿/™ó4O¾§ŠçC.1ž§UÖлÏÄøñrNptâÜ—¥ œGS=p9C_&Ð}LT{ÎU3“]Ÿ†?En6Õ~J²¯ÙøƒR¡) …„O*Íà&lÂú€ ìjE(éŸo‰©IÂäꙣ oW/(1ÁñŽˆšºêçXA”Ö…ÏÇš/}A`Üâ~Q‰Ap‡éõ mPê:~-w%Ù{}˜ÎË‹× w³£áËÖw$‰‚$‰ÛÎ| 𢠀ä‹ÊÀùÏXæZßévøµ>K…JðvâÒŸpß«>qBkƒžihG@\WæÈdý—!Eœ<)ä5ïÑÉ%Év:ø~ì•æºóOùIåž;?õÚGuñF¶ goY1m¸öŒà¾ I0̸•|ÅnâNP]?¸ŸÿÊhãUŠç3‹`‚•€yƒ•3D 3ú„É“¥6µÊ¥i€µO 6¿¾«[½L »%Õ5´—ëº0¾V\ïg¡‹\Êô#ùeÅs)$Ëpõ¡Uõ ?Høi¾¥oZìå†7úçY@γí¬]ߨ™²´YX¡Væ­ºwq™âìj¾ Cô±ÿ!–È@kÌä?dwÃÔFiún³ožø©ÕtIj_áPa-Ј´ÅôÜno™|L®/¡ðyÀJyþ±—a{ÄÒÙ1€)³Í!w™¥Y ‚±]-Ôü1yhwÆjL:X,…éÆ~XsŽñ¨¶Ëø“z°ˆ·¤éÁÞ¾ëóøˆ ¦v·oó ;.µø}fzT>kþªvŠ'7 q.üm‚pEõp­eaVr%u;Ö‡eŒ…fþ\êÖ6õN“Y>~\ÏŠ:oŸ‘ÚœE?º~Y”¦ÛÕ\Òá#·JÅì÷t½hËßúuû-Ó:&-!h$ù?Ц &Ûs¨ŠiÉ9ð^òàÕYe›/ˆJf 3VóxÆvƒÎmÓ~‰ &T†¤l‘(XÉî_˜èÆ26,IP-ž"M¥;Ä9WR"!„¨ÔÏz­£™Â|žŸÃ ¤!k\BU=›ø™ïõ4£0”ÏB[ÏÑY˜t‹ü•·Ó +Y>ýò˜äýf[ö¥I=±V–¢¦úê‰ë™á-‘–%Æ›c‰!–ð•ŠCeѮʣ¶*|g5${ɇèݼ¡‰½ýž”9{"òÚ^Ï«§7gæ÷ûòÜ Š]¶Ê ß wýl+ée(¨µõ¯úw]ïtIt¦³ª#>bòcƒE𠑉oKÁÖå3B,<Ÿè¦ÈåE£þì Ì#Ožméž¹a£¹¿Ÿ.Ý œP*<Ä•£û©µÇŠó« fõ’xÚú§­üçÄ]Ëòê …áõöEè$l—||ÊÊïD‹ê÷õß„a¤j6úG²¹†yã”—,ú[­’P…ÌŠÞñïô;ªJ•u¾=§*YØ“R»/ßÄDülO¼R¾ g-7¸gJˆ5é{ô^#ï=Áè(AY­X¢Q1^:+•Cb™µ‡Êý³N‹Â¡ÛvRzTcpKÕd–Û¡u‘ì•„Žh¬aý6„¤7B[,‘qÙ)‹ØÚ”Ÿ,¾xÁ?1[0GÞ"!åœßâÇ#w%Šˆhïפ€QgC‹‹¼ÏE7ì8„¸_6îå?3pc•kÈ9wz–ôŠÜI³DÒ0 1ÿ” dÄ»<ƒ¤¡Qí› â,Ö¦¤6Ø,vò‹¨¥d™uTM—׉ÉY§Í2ÿ,ðÕ£^‡ãÄ»^³;¼Å»¾ÈŒè[F•{P"éyäkp~ã2rFècSðM#ž¼³šª^öH?Fêrßuk3ð32é"p‰Jœ>AôT& 4[ö+sîŒÈË“+BzøÞÔ:£Šï>‡$õ‚¼rÒ¨y‚AWNÜ …„?—L\Lùæ¶(2•T ebv,KýÛÞÕ€3¬ƒÓ™w+¦ 9lÔ=¾‚sX{“ºv‹OÑzO2¦¶uÔF†% ¸ —3ÍÚeø~Íæ¡:»V£R|Q«úÄyñ¼½¡+˜¤å’t3h`jD^á/pÍŠøÃ>>øÕ”ÆxNò|¬­Ú§[׈\Þ¬ð*ƒ.Éœ‹Ðê˜Û†µß«¾Ï“]È4ΰj $(PÉ®õÄ>+õ[®†Çk*ع~{¿óC²zI¹H³”-¤Î”´ ÞsÖk€S€\ÈùŠlôÕú7]ãÏÍ:V]œß.27ÜK€ò2kýâNœú}Ò'¤°Žº[KM½”ËÒ¯ž¼”Õ„¼¸¶L˜Éœì2dâU:w^^'Cô¿   sÂ×9'Bï/ñ–ó+Á¨k´”øô¯^ãÍY23PCô缕±eË*Rç2BZfÇÔá“ wÄ‹!ê˜¶ÏæY‡:k¯Œ²ï-éô{®hV-´R+2á6r¸Ç4Ò‰¦ª'xZSkäášû›¹ C1¨G’ñP­Rù7XÊ·NøŸ~Hâ8½ú:àÆ©Š]6ó¼ôº(3FòDý¸ö9ÉpqvOš‰…)QA¯üd§Ö˜4˜Œ´”känÞùûžÖЭϊ¾z¯G\`†‰’&Ä€:] dpFU]ñدJÔ!¦ëoÙV EB .ñUnJú±ŸÀ yÆ÷ÐZÂÜÈýÄ—1$¼Û<À»¨9îáyä¿ëº©Ý›#š×í~wõóߤ÷k3“Õõ†¢â{¶-16ÙDÑ{볕­4ß1f®'ؾe¾ÀE×¥àѧó—~ YgëÅŸN%‰N‚&w×êófÀ蟨™‡ü´õ,?7þ`[a§_pÝA3õÂîIýwÍ‘ÒäöøYIœÄ¹‘`¯nv_2Þ­u­çš"W©ñ‘Óãœ(ëëÑ' †Î— B3_^ :Ø{MÖâQ”Õ~ŠFÒo•í‚$ÊM~NT4Iñvþ®¨¢ýâgÃ\wÏèiÐø%€*Óø›ºA„æûωRÛQ(œšÜqD°é¹0&eäà}7å ‡UàTœ„ÁkOaôi;x3>¹÷ð"ÃÚ¡–¤¥ZV‚8ù“A±ð¢E9h?¨ž¨-ïî%ù'Æç˜€l:ZžRÊñYÉŽÓ°"6ùO¾x=5箇1ÏJ%*a“)Ÿ$®ßÆ-HÃ;¯;wæ@ÔªÍÁЪôÁ3\ÄBÁz~oy˜kÍ쌇 õ#¾þ›&YA$@·ußn^´ñ•®e!9„ó'ñ÷Vž5^[¥^Óc20AšÞòé<Ú‰–1©Ø§„z7dȦ-s¥í|Ád׋¯t’T0(¢JxàÜìèþF¾x<¡§±T/bDad>ôÉ‚DVÊÚT~Åq>æž+Ž%¡‰NõŽ$qê9kÃ-Èé›Û”;·hpæ}Ô 5б/&;û(ÝbiØáKëãÐ^š‹×; ¢ GðW·]ò†ì#z¤w/»]‡I¡O}Q_•ܰwjÊ_œcNb›^³šÝfyºÙã´"‚öîöÐVàN%Ž…’ âù·ÑU|vPBä<54s]fõMe'žØ3bØöEùº³Jáöä\(ŽÞeº©Š1n¢È™†¶ 3$Ž%©¢Œed¬\'·òOŠ&äc¶{‰ò¢Ñra¥ß¾ØøXˆ­±W¼ùºµ\à‡U"œÝÜC[‚Dg ±Âœ_ˆ$¥¶.’å¢x%S°¯‚ÕžêcÎGZüÑy˜þ´0Ó5°mPVÙs¾ßY'‹d6AfÕ ç  åzASl«K’¼ÿGÁ ÕÙŠH;oë›9Zë÷³õExçº6F^/‰´ªO!¹ZÃè¢ëMdº:[)ƒR"â’Ó¢ƒûüé+ µÉF18¸Ï×mB^òkFŠPF*äFÛŠþÐH§”«ÞÿŒÉ8P"–ô걫”ÀR'Î k‰ÔʼnU³µÄy˜^‡}é%“2-3vx#Þ*I…¨¦sõÑ_2r `v,×r=‚Þü*ÍÏBVeR|Xbâk \Oý¬|‹/ÔÒ{³ÝSÑq£ï÷…æ¬æ ÂJUÎæ¯ªØž¼d –ßßN°§îÆë8s² ?q“µÅa±‡¯sâî")N Žê°t ¥W]#Ѭ’'>WQÜVå¦ô7Ca©špsí ºÝ Fç&Y{£e!xÔ1vzǼ¨·ÂÚ=Ý*²Ÿ\‘a‘)Ëü>Jº‘QÓŸcü@)h¥ ·:½%±Ië.t)+0‡çú€¢˜”Xèì³þðª[íÚü-8SÎE¹ÝìùNïþ ·SKëS› )xÆJæùçÝa(@ÕÈgÂü¾Ù핬'¹¯»wâ1†.¹há)H ŒCÎÛnF­-Ä*iºÛho¢Ä,}KŸ.PR†BQÈs<¥õõ(÷Ÿ‚YÓϲñÓiµ)­j¢"дi_j|´ç>'b¨dÿì&ifãËw;ÿ²7õÜIÌ hÙÛhz!$B»?aEº‘Þ°ÄîWÚÅ1™N5ÛYÅ~,¹ìÉõã=Œõ·_Æ‹¨»'“X“ß’˜óúª•Òº…¬.„¯.´sú†J-ààñÆs=ÏÏQ›H¸õæš.…F˜â\ßa¹]ûîÊ8¢Ée† Üö®á+Ï pldée8úúpúM:¼Þ èÿjBBJ'a¥$å0„kÉß+ŘÖÀ`[÷2üʉ™ªþÆbÕB•¤4êé‰Ù;W¹÷ÛÛswLÏÍ ?:TQ²í§G³’5ñÄ’BynáŽv=õÜ&÷Úà ’‰_Ä4KúuNJV$¸Gl!¿IX}¶T^=M¦&Oók/lˆ…Ó>žïÔ*Ñ–äµ¾¨ÿÀù„þìÙ6‹*ÃôÝâÚê\);¨dñ}‹ˆ¤c {ü6Ž­\¨"õðc@ÔËÛ É>–öqB`ÅÁ~­úå÷iäÂGŠiz9AyT‚4ŽÌ³<ØÓU ³Ññ! ýÍñÍ7v×øè=dý6$-jÑë~è@hðPJÄ™Y>e61ÇAŒ*âCÔ&×øVýVê¤q2¥PÅrÙŽÂÓöªP÷¯1 pêõû£·‚šâ@’o¶±ŽÏß2·ßÃw6?RŠsV; cJÁ_¥÷Ä^>åriÉcɮĔ,gÝ+h2Ÿx´\̪ŒsÒ!þte<[ê>;*«"‡‹!œ¢´úáÔC=ØBû!ƒ<ö=®Ë¨?m#Ý Šé¶ü]Ì …Ëö4JïhßóÓøê²ãˆòx%ÃM -qê7©Q-΋ˆP…@£r P©^v }õNï…¸¸­¬ÐyÓ±.ÂzWÝíHm÷iß¹‹|Òþ kóØz#fD”3~-?@ÅGÞÞàÕˆ’ä2R-¦ijx èRlç(ÜŒ¥ÈÒ>\¼ÊÏíYÜsÔ˜„¾u[_5¨ÜVÖê ›S_—?àéîtH¯é0k*A»wÒuåTw|y>:'L×NC“Ú­j–ápWÑNAR3—ócÚR]Ï G§:GK¤aÎ52H¡öBfP]o¢!lF½”çç‚atÞ‰ñž„Ï u­ »Eôp R–5gõ¼À3>º[:²ëü¼7‡ |GËû wRÜ9aj*âÙˆÛ_Ïaÿ° ÒtÉæ-lÜ={Ä¢jæMÖIêK÷¤Î3G¡"-?³&È6è a¦Yë-ãØ*½J¼gäbM_•‘bßÏùñ3H³{'È{„ý…ŽæÌ"lÞT»¯©ÒK™=PW$Ñ%bDfǰˆ¾½LJ>NùØù¢¶ÊUzMDw¹4Œ8fãò6Ѱ/–pšþ-Å„:®¨ò®þ¢ZƒSa;û– 6Évµ3‚JÖZŇ6‰åíój§Ž‰&]ÅñbA *•?†„™‡¨W… Ï溾µRm4}¯è¢:‹ùùÂŒ_ûðüXà çOEZ¡›kñ”P–Žoý·h#!ºAú&Ž[×ëëû"—¶vw,„bo‰È#HÈÙ”Â;•äJ³7+‰¦{äݽQ,¶… ,Ô‡ƒ>r¥¥¼bó‹Íõ³ÔO/ïöÍÝt›Î«³¼ÇþàÓéÛ=\q×gD¶ܪþ`PÅK¦Û55·sk8$K‡ñz‘€ÿk7ÌÚº‰ë,bÆ„šÂ¹KaÁÚMó»v¯³,”8@xÎá©Åĉb¿Bü˜D^œEûë¼]­6->ß|.²ð%5JN-Sxy4ÕælØæB/{•ø(µ¨çe×}°á{v _ô8$RÏQ>^ÛêšOÎB£bÔ-þºofb.?W:}ÉYÎç©›ë•üô°a ^á*îÔ} ‰~­oô¿Z¿yóËA® |Ü\õ]ъϲ„`0„%.޳G/Í5.Ò¡>7Œ)m´—ÅóxËÌçò9|¬HeÏÕ '/ÒP,D‰"çìD" §í½—4¨(r₎YxNÌ+‡úásÞ½ã²ö˜Ô#JëÞ~ÂQC}í÷]+$ItÖg G ¸:ÇO‹Ji0ÙClñ64ÓØÀ;ºK‚ÏYE¿çäËo!ò´5ÕãØÿ(›ÔoDg)äTûˆ§ DÒ]Æ™ŽO ӌޤrëªË^¦#Ä®шÏþFƸ¹xGŸî›ì&gí·”©(À’øv#¥¤r¢¹trõˆ8ÌŒÆöY…Ôözã¾ÏIíÕÎ1ùèùQGßæ¥ë‡­Pú£‚r¾ ÍË|?”HňÑ/dG¤¨„´m‰Õ’Ýo¶áÓÎ^7/ÑÙÇ%+`ÏfôÇ~,\ñ½–õcâ¼hãêý‚\bMÕ<ÄaèxÀèû踻á°cþX²Œv8Ÿ±ÇîôÔÀ &f|3QáØ”!MXÅüŽOàsŸy'JuMC~¡PÀ’·X²kŽCJ#~?÷ªòYÿ“å§q5TG£y‡’¥8 ˜«×î ‚v ^*ŒÛp &_ͰYPQÞÓŽŽ¨ôD£+Å!ßs:”•عÍÐG¹ZaøŸ‹Œ `›ó‡Â­’¤LGß>ÿP\p!Ïú4Œ£Tª®È@šæƒ?ú¸&#à0JïÖLQÎd%¦ÒG*§ü½Ìªž B–žî}â#{.évÆ#ËöÂO!3Íšñ„·¥îßI±€3a?d_Ypú";ºNf)D~ëD•jhfË™[í¸®cìH л'O¿™ /¢¢aÑI}”²o/¡SoqµÁ¹Æ%zê§ZWä±ìÃïæ™v»]<FþˆÌW§é+ÕºSeM)쌀&~ì×· —G¾&PWLi\©I&ßL€c;ùVçïâK8*ËémèO)æÉ2·«wßwÐ#7H彦YÚ4Í§Šˆ\æË~A‚XäÙÅ£è³áñ n¿EÞ8«h‹½rÝöÖ—Nt+þsgÉs#uâWÁ4¨ºYøcÃ=“mû‹™Œ ÔXmM™jG©ˆBŸ)jÔâDÔ Šó“%Ý£±ãV…²”ÿëïS×\vè–(¶~z^3tdú)ñŠöÈæÕæ?|°÷ Ìîh¬HÛ‹% âaˆžÈß@.‡f¤Uzâ¯_+Ϩ³Ÿ‚o‡T ³ "L‘³Ågpk(Íè^!ç£V?oY£lÝ8ÓZ£ã.9DÁIÃl¯GggT²¤’Ñ0‰èOt‹Ùқ˰&ˆ–71ç*޵p0EvT‘á&¸¶,%ªjFÖßõkêÏTr|Ò»¼Ò” 6ÂP« \A)hijϸLir¾t³Î&LÍÅöš(ß’)ÖDáž-\hÚ6"<›ÄýJ=ø\’ä›ÖæHá¶Ü:ÉOñɼ+—ârÚ¼veÿÕº`mò°\@ˆ´A"¾—ÏS.Y¿×'‘§ÜgÎ}ûH1%OZ±iQظ<ê+÷ú„"¨6hoT®ty×J=ƒS+ýZlmm>elëd¤Hu]ª(½Ë¥®Æàsp‡Ón«…3‹ünYÁ{kq¨…Z8«rå¡»cñK­¶ ø‚'t»é¥OWñËé±é×ï÷TÚToÆQ–êã¿´ñvÔ_™-ª%)¨·{fá½àOB™ÍÀ m ­{­¬þªØ½ÒAÜexxM·„{‚›1ývöƒyžˆÅujðìxÊ|ˆ2½Lús¼WèLE¦þBdÚìê†sp|:=°†¸ŠÌZJß¶ùÀ¥`( íüV‡úE§<ô?8¦½§¤X{¥v4Iú D•Æ@ïJá¸@³Ùµóéà󫬤ïÞŸ;Ù„ÜùqxIØ‚÷BÜß/²Á»YŠû¡yp˜ú Ä-¡>’õÂ1M=ñ·2Lx8šŸjH6z*éOgû}ï°ÿî§òžzîG)Ô Ÿ;Kõ·S%·ECǼ1sÑ·57,!Äã·L劈vîgIÊýØÜý<䔫uJNŽä;[2NyìutW1Ðé~“‚eº>Ísx=d)¡˜´z*$ÜDÿ…«q²i4©Ä…ÿ½1cìÇ%$Óé|º<<ÙšS5ÜÈÊÖí¥rÆ!·らÜz®>¢FÙeÞ+îPmå’hþÉ]­ûd^ ÜX*–Œo†|y_ʆQF‘ ¸Â5 ô‚.‹úök?C›êËS¸€e}¢¯º“kìKœ_Ð\ÚÛïÄ Œ¸Ê{¦lÌ»íS†o €VscNš<‰‘à•£l×ì;«uX¾Y:> ,tRŸb&V[ãK;2Q޹“® }fº&¿È#z9«ÕºhmÑH£/†ªX5A­O^5ÄÓì<ÑqHh5]!ûlŒÌM®Ü…r½y#.Uº`õq …@#¤¿‰5'ïÂÚÀúëµ–»Q]S·&HIÓËô©ä•rr êÃÉ™qÀÒþ ¯6îKY­,Á®6M¥Ÿç­Pǰ+”³¢íJ¯÷Ã,—…ðNùè¼M“Çàñ÷:±ª5hþŠFk¡™·^pؘTÇS*œË?Ç68T0Ud vSãú(h˜˜¿)Ülò èakÇWç7iÜÝôM‚ ½rg$+ætжä÷κm;ŒÒè«&o#Ì_±6œª§Ø1 pf Éß"ÁS¥*ç™9 ’?¯hõpÝÌÒÝûzÓÆ~ýÙT‰”ÞD‡Ü>p.²ÛÉÜpúæþ¢¾½Y°§»Ý‹g¾þ­MDí3Q«.™&‰FEz5W¼Ãép f¹ü’7Ëškþ×¢Üv˜ ,>·"!¿ò”’ÌêÙt9ø”NrÎ}7R——Qdè$ã± 2MnWúSu½+ —…TQßP½¹âLõ_>yñêH¹gtH˜, K%!ø¸1ìiÑYgá‰úÏëÆNƤƒ‰#…΋†ûñ;øo/Ü›k¶?û÷P†+$&¡ëX¼ÍèºfóÑð°6·¯ÔÎRxz=2)k˜îéÞ»F0Mœ$?˜¶d×ầ‰“ܤÑ86ð¼AÌÏÎïÕ‚ÇЗì«"šp—ùû7’¶-ŽhQÿOÔÍ'1ßcAÏIFê© pAW{bóFy1TE¬ÎÓH˜ÙØWû›E¡ÒûƒÚ(Ö %É1Ô`å–I\"7,î¶;~ýÆ9'kýÈÜ©·“iü=ÇÇÐȺFtþ8ªÜ Iþ•¼‘½‰ö—Œef8cèÇÕÆÔkëàó½|F¶MtL˜ñµ³PbøW·ÏÍ®Ÿ˜~žo15¼ã¹Ñÿ˜Æ:ÏsÆÿÆì‹²·žð‚×rN¬®}‚îga„Ô;¼>žH3œÈãÊnáâ5¹aJª1Wej¦X*c!%K¢Ýh'qŠ}XÿÏééê÷N‰$oŸ¬ß‡U,*Ègô=Μr²/¶"¢ü)èNvºSÒ–šÄ÷âñá?­Ôˆ3¢Œóv>{!¬²“wôO‡¾ ý$uùðdÈf´šÅ|)û¬Ž¶ÁIÂR¹ËËHa|µÒRà³ÛLž©”-tDi)qò ¸>L—ûxp§Nû¡çaí½Ò 4OÍÞ#6ÖYüÙ© ¥¬}YA(Ä¡Tžô!ñÝá#o‹Á5w$ÄÚE†ä"±ZQÉ>yˆÜîcîõ$Ü«wé‘ډ~y êÔ¶Áy"ÇÄxQ®Ç³i޵›S°u¯µJÁ¬¢Ï –(é»^Òg£/·$Ãeß®à@ eÆÅO·­Êb^Ý¥ÌûaKêj½…PócvQm°÷ ZÕf¼ÒN͈°ê –n•¾ÐtìX›YB%é×è?_ÚL4âTÅíò‹n‰– è´#JZ¿Ùðž­úéâ•…(Æ ðŒ‚“—Q±Mô,¤v¾©†fχ÷°ÊÌÜêrà„"a÷è©ò™£’,Þ]V² €Ôèõ´¥‚&Ek|+â K9ÙŠ_ƒi·é4PbcÁsªÝÁ÷ð5ðø1ZƒGÓÇ*Ÿå¼Etùð¨#­]Yûíè»è‚Úði*ó÷‰÷éCXš ` =¢±«L¬÷ç·ûj.…]u]ϱ2if†ñkó¬o¤ïi~F xl÷bÈ! °º²÷<‰Ãâ ™Oz]fŠ£û$ ÒÝÔÄ`æu³w}á¹'°=À $ºÙ¬ ûä£}š`"Ù]=cÿ¬`ßäAö¶Nîg­ûËÛòÛ”\Uà–¿sYUò¹!†N˜0ÇQ"ÂÓ"+óÇm2å±ñ¥cÒª¡àÊ,©gQþ„”—òva¥ü©ó6žÂ¬2SÇLAM C€¶íd61~¡–+¹€^·çª‡Nª‡µ®;Ê('ï±×ž.F]ùÑàAÎÌí ÞØv£KZJ.¾•ìtþÂz Ó„´£|¯yæ† 4§ÜÅü6£å×<¾ÊŽm¡R—ŽUo¼ÙZ8V•ÈGâGˆh?<Ü´Ïû”»®¶³Üpe=zžÐÀá;wí*Çõë¨+è_ˆ¦®«Ò!»LH.³0›••Ù/Š:IÛÑÂ5PHí§[; w”¿§zxκ›1|½ à`Âç¬v\Ø‹ÿ3òÙ÷Ï¥tü.Í)òÝ»žß³²óíôÕ«ÏV¦]Y¯ÐŸögŸ9&\Øc]qñë)ö´ó(ˆ$‚ yjRœ~Ù«·­Ú¡üÆè¯Vд±’RGr¸™ âÆi1xçãÝ–™e^‚Ö¥\GùüHüŒo.7{‘öS¶rsfCnŒIÌû¼bfí OOïñ¿)m~’M¢Ä¾´¤=ÍA—%oUÇêNSf•ש]ÇI¿Žæº<ªŽ L¢ðçm¥{´ª t;)_ó“'RÔû í,ñ¸JQ–ŸÙ÷Œ»*J»÷¶&Ý7T^k]@X$uY1úSU‘rwƒ©µþí¬&ê‘GK“ºŠˆé}³ÎcÇ}ð ë}]‹{‡*FÒaédp6™º¹úw,R‚+ά»ùyYL‚a8ÜÙvή±)¯ œ…æw_¨¨FÎÛ½»´“ÎLΜééh¼PTkž/{MР œO_Wâû¸_¢¿Ä¹ÄèË:óù1‰³™õIùþäð“ã8pU.1WÁ¥ÛZ~4‹cmëõ„‰k]RžÖ“Ñ„ ¢çUWŽš±Ò@‘m2f­CÍ&þÛŒO…Tâÿ$j=Z endstream endobj 99 0 obj << /Length1 1588 /Length2 7897 /Length3 0 /Length 8929 /Filter /FlateDecode >> stream xÚteXj6(%Ò)½tÃ.ÝÝÝH³ÀKì²´€´t7Ò‚( %  ’’Ò ÒÒùá9ç=ç=ï÷ýø®½®Ý½gî™yfž{fz}nY;¸ D Crƒx€byM}}¹§ äçù°™™  HÈ?lf# ‡‰ýG#ïm `ä=U¨yº@üHX ð¢ÿ!Âb°Ô ÉPƒÃ ØÌòp7_ÔÁy_é?l¶ì¨¨0×áYWj †4ÁHGˆë}E[° @n … }ÿ•‚M‰tãåõööæ»zðÀRì\o(Ò ñ€ ¼ v€ßm´À®¿›ãÁf8B=þtéÃí‘Þ`popÚB`÷Až0;p_ ¯ªÐvƒÀþ$küIàü5ˆôwº¿¢'‚ÂþÛÚÂ]ÝÀ0_(Ì`u´•4x>H.f÷›vñ€ßǃ½ÀP°Í=áÃJ²ºð}uèa‹€º!=x< .¿»äýæ~Њ0;y¸«+†ôÀþ}>(b{?y_Þ¿¯Ø÷†ùÿƒí¡0;ûß­Øyºñ îžU…¿X÷&ìl$@Š…wÄÇÖ‘÷w_7ÈNÐoó}þnp7€ý}+¨=äþÛßì žÿÿvüaƒ@;¨-`q€Â°ÿÉ~o†Øÿ‰ïU€€úÌ€÷"€¿?ÿ³¸×™æâûý‹æÕÐQÑTQàü»é¿Ýrrp€?·0ÀÍ'€€¢¢a àß™tÀпNò_±ª0{8@ôÏßOê?‡öúK l- ;àß¹´à÷ †Øþ¼9Ph{ÿúÿ–ý!ÿ/µÿÎòÿ!øÿ=“’§‹Ë ¶ÿPþ/Øêâûç^ÞÈû}Єßoì©Æ?×Xîb÷¿>U$ø~+da.ê¡õØé@‘¶ŽŠæO»áï•s :pèïgÀ ÿÇw¿g¶Î÷O‰Ç½2ÿpAî×èß%a¶p»ßûÆ'(#`_ìû‹¾G‚ÐýbÚA|þÐ2€—GÞ‡î› ØÃØ¿oUHÀ+ûÛô'ðÊÿƒD¼Š#a¡{¡ýƒî™š#~¯þ?èžiô7½g‚ÿF à}AèÁû®ÿÀ{ñòÂþ†÷Èíþ­‚¹@ì‘ÿXAYÿ”×?±÷eÿ„ÿš­'âž‹üCÇ÷ãûþãy‚@| ¶Ø3Sp[ñ0§Ú°–ójY*oîµ! ôýÌó§|ÜC%–XÈnÅ1«¥dý—¹³êo”fº@J–NŸµäÜÏóæ¿ýò_­£«÷8å¦SÚt ³Iœº;EHñ?£f˜ÂoB)4N—£+Ct£èÐÄ´=’¶sèÖgÆÆZÛ9âÍBòZIX-¼E«µ­úu®µ¨Ñî²òƒM¯ÁšàñÖüeׄЕXó¨ ­lu‰Ö ìdïw‹=ý½s„]4í1Áj^!kLHBEñ^jÌwFsEx×ùe^;ÙDþ6ÊÄ2;vÝog|?æŠùh æèÕµa%qûw*uL_iÁÓßd9òãÐu\êø޵/F¹¼âß»ÑöxX/®ôU´e`ëGáí þ2W$@†Î ùtÓé3Mйf*ÔgiMWD™öFá}-ù¤$kLÈCU˜ÂµIîsm¶³,í·¤ª]ÚL–9W»v²_b-”âšF‹ @SÖË‚5Uý©¿?PvvásLoû,²T)Bõ\õG¼VÌP#hÖËToŠm/ªÆ»$7Ûp+$ðøX¦ÐlI°Ýß.fåK0§`¼fäMu%Ù›?ÔŽGxÒ"¼¥ˆÁµ†všÄ~¡zë‹QÝ\¥M’¤y:Ü}ô™}ÌÕ3ßÈpaæ®3e½ÐlD Š¿@à±}'[<¬œ.¾ë b—²ƒÏ4õ$»ïõ•2·Ö¥µÃ3;Ï@â‹è÷0M¨8µ"š%½rû‡ìçN%qgïFJóÆH*ÞTfžÙ„Æ6}u¿©–>À™ŸŽ:¯€Ý`Î}é‘¢;«|©Hí6V)µî©\ ºyת¤YLÛŽa&ÚK*’X÷._Úæ\êEV¸E¤Ò4<ÄÒòÊ"é²üÁU¥­•n°)93ÎÀ+§ ·ÑI¬ \þ|ì¨êØr•¡?é2 ·ÌìF‘/ –ÍðEÒáÜ*àã·E«µ8©b™$>Ù@h,NbFÔÅ9æóy‡ûû˜çY•!*ÌYJS&Kð+ÕdvfáüŸÑ«tOƒš°8*Þ~æ˜/" ¼S÷Ú©ý™zh>Zè±,9R•µ5À·.5þú%s€p‘-ØõçBºö‘üwn#Ún^*“§– Áƒ¯¸/o½o8ã]Ž’k{s$‘¼6xMc&Ò²Uîݱ/1nßlUi½ò2Ã.4ÖNÏ#á‡S¥=œ:g‰}ï]E¯ŠnÀ5È—Ç¿0à òY »´ML˜­+]M–~U¥©(ʳ“Ṹªyiׯ9‹ò(1MÎÛÔÉ¥+Þ»ÙÑà0ЦØo>IFñýˆ¬^BÐöCÒ¾ãÖçè÷cgÉ´€,¸ ±&±|â=¬s6½W”öáiÇ{q?º1ïA"jJ»I`&=·Dùúä˜\À•Ø?«bñºS܃ps#ÝX‹ïÇ|‡3qÙ ð›­X 2øj¶Â ¹}¦_aÑåG`>1>/•´©1Âàd¡…HÙÎð¬ŒðÐÑ´@Œ½Ý©z" †'X¡¦ë1/H¨¾n7ü¨Ìy^ƒNß%":M’ Ô S0nºSI+“£›¢ˆÓ‰b0q3Ï7ÑN`Ž}¤²tSv Ѝ¤DàXÇç?H¾ÖÖ–ËÿQ;Ä’Å~šcß$â="ê|¨É°ÒŽ™k+ùùA“¸ØW —«<"óûò-å-V]ÞOõÌžâ‹Ö‚PÊÜ>þs¦a²Àý“uè\G<8Š-Ä¡^“Q³qc"ÇåÛÖ$z—÷ø«±Sh¸ÀÏÌè„hd*Û¼2}jï7±Ø (Æ—oºQÄù}7+C÷Ñ__4É4­ó‡†åëä¡nŒhßeÓv¾d‘j‡Öè<, I’{GüIâm†m ˆ8ëñ…µ…7¢|ÙˆeÊ0§.)æ{¹ŽèeEZ-,áÐЗÌglç’ XäkY_ѹÉ[ÁeùýcòOIp2Q»¿ú%œÒÏ[„õÀΕ´£JU}úÉ¢m]Z—OÄ ùV£»ÈÏ]!ÿŠŽ‚>¹˜ í’=+iÈÚ/°Þ1ûËfÖm“‹ ¬F¥¶YMÍ©ž˜R—·sâdÄ“H9{ÖZ!£M×s]©GÎRãÍ jGÓ¬o0c—HÝ%òØ á¿ft>ìÐ&e/·½|ú×ìN¦¯-¶6)…‰Ý7\éã:ZÙ£»|qMý¦Ô7b rmDYFî>˜~Àsóäè[ÆKMŸo. zÆøƒ'æ|’;Šü*š`‚ÁˆWÄén\·{(B§“ÒçõÜNjJ–¹Æñý]¡ý%oR¤½Ï¶Ö«~®š}cJÛ¨†¶9ñ]Üsø†£Œé”Ƀ•â.¤‚{γ_n£†¸âš„ÔEN=(QÜ©¥žÌaÛk/‘ ÊòÊDmºr] Õd/õ™ô£87¯„±{g8}ç~ˆÃè‹lÍå´ÿ:ƒ{èhj–I]¸ÀÌÁJßQÑ”–™u»øòñ,[:ÞJ"*y2M–ùÈdw­wiK«å±” äð—ìƒù=W4}:Û:-04=¡Xíë—ÃX³xìoS‚+Áb}9×;¦—a{ú93ÆhéEíþûÃ5{cBèf.º¿º>ÄMjåfÓšû¯³ÜÈz 8úœQº­º¹fNaÄbx¸lkäëºWªèœÔ¼ ŽžîÄÑøÿúäã›VØZa·fíÀ°p¥ñꦊÄåW± Iš_¾„ñË“² šô#´ÑʾȈÒãÑËïÃZÜØXªr3`š‰co¥  ˆ¹ZÁÕ}7ʰOEÇW­Æý' vµ†HÁÉ}ÙâÅšCíxóÓÎ>¼­úgŸë]xc¶uƒR][t±ÝH2äËСG¶`ÉÞ‚ˆ - в­«,93/ð:éç”Ë4Ñ’­:9aÒÂø‘øRÿ®!£¶5á[•©~Ï|†½ÅÌë²l¾øxâæ¯Íà-â Ã'X¬*¤ì„ô'UUHUé‚cÖ”³=‡Ÿ6ÉØ œÁgû£GEô(몠ԮYð-DíãÆÿSsáâðóšQ]Eûø%=s8Go%ÿÝŒ©å ÜK¯ÂÝ­Hy]ý„¶ ÞÊÓ_Qê?Þ¢OS9Ú)µ¼þ.ÞÓÛ1x8°|íÆb«6–ZþÆ?3¿¯+<‰ot$»?QKާ/çÝYÆ'_Úü ¨4Ü¡%ÎèìwL¥6b¾²BåÉ•/_î鉥¤TkÎ!ÜE%\RÛ´Å;.«89zk(ð:–Ï£¾g‡bA T²–ÐùŸ(Fú2øð2…HÖJ&ìfÉhîßîù„cøÅ–Ltˆòxpe¡*o`@|2ÚzF†©Þià êTËð$ÜñaÊVï,n&º%L¨¾öÃK¾²·ß³2gO#1¢ù"DúL¹•Ì®ßËlœcBO&3¨ÄS“ƒpUõàQc–^ÇçÏ7e‡¯Ó82ŸWXfë²—V\iŽ ÎÛ¾ÉB_ÞzPzä–½©ÕpæM K³1V Ø~0œ¶uö“™2Ð%ǥ؈ûCÊ·U•8š>}aÉGäìŒyù@ì{ùE”¼†È«´Öül= º÷/U9s|vrZ ³žw#T4kxó™Xö( OpæÑH. @õùÛ(ÚwÌ{Oó“2‚:ýß¡ ^f_›Æçd«ž*MØ&|›ýdá,BË‹Zÿt?ãÕØá«’‚ÍÃ…ÐØ–TÉöêÈùá¦<+/è?hc¿ Œåw«Ç´ÍÚ²^ªaÑ{Ÿr¥ÄOó(%.Tß+'ØL`&Uf2¸ÇÆ*«Sä°4¬¡{KCír;!Ú ·ŽÆ`µ˜8ì‡å¯¥ðªgÔ—ÚZ(4‚éµíÇö(u–Îx¬«™ˆ…ª—n?Äm÷«^8›KpYñEžÆVŠ;š¯”=ëýz¹zÓÄw2½&Ä(^ú4ÍôãS/_ó®XMÇæ5¼öp¶x”’òùÈ“-å¨W>à’9åÞIÂKWõ“ƒ˜ž,þB‹ú–:YG½~s޼b€ŠØ`ßTIN|º]îøþÎÏ¥› ±Öé³”¼šY;ˆ.Ø÷:È÷ÆôyÿÄë”=ÝÇNKNé#p·£Ò¼Ÿ6 «Ï¹ÄJ,2ùTªÒxõúü¢Sƒ7_ëGÊ|Ün/yK“;fÑÍãÂýÚxlMs÷†gŽÊÜæ÷#À -¿ Åñ[nž*IÁn¶›¬Ù! §)ù|D…EÅjôßhâr_ÎP®ÕãT®½o,{É|qÔ¥å5e½Ã:õ”NqÅg*¿ Ì´DÈ[IÁY=»À1Ù¸¼ƒ–2±½pô·'¯á¦è}¶UBÉþÆÿ°´~<³¦ŒÖÌüd£2¶(mXÁV·Ï¿’£ŒèVâDº²½_vytx¥®Îúu¡šŠäʺH â ¸5ÓRùÓÆ²}®´~›ËoB‘™™mÈ‘º}Ëv£Ú<Æ¿-ƨ~”ð–p2.É¿÷—šñöþ‚Yq›!ª”zÇIì„ôþ";-ƒ]bµcœÎ ]‹ÒÃŒ3 ›÷Mã,RýÕøÇÎ`áAÉŽw6GþU ¸ë’ƃد啕2~uÒŒ––ä á¬ÞXDto{_hŸçHµÕH§Ž@b|tÛý-üc|C¦bug»á¦O¦DÜK³º™°i×RY õ—Έrñ¥?×KÌ•ˆ1½Fû­-˜…¯U}ºiV[-D§³MÂjŽýψ«u2Gû~=âN²aÕj§>õ¿úÚ¶Ez38µÑ8="·ùtÜÉ)‚£Á1¤^ù‹ý@•³m«í¾qñ*PI>w‚O ÿ=ž¡ÈÄ_ ¼îÁ1jÓéH<#Ê‹aA ¢ø~Íû6 JŒ³íAdi­M€DæyjSéûñzf–;©å­§Žq÷ò‹ÚM ¢'<[_%o´öo+¦L{ÝiC§,¸=‚^0<\)=”Ù0’õwM}Y¸½ê¶éà8²‘¾uWeÝp´¶÷’ëÊÑÚþS@Ðs¼Ùo8²ìp"¹$2ž4º5>¯‰U ÐÜGlãï(Üê®Í9BŒëœ”PWs>ýôKÜl0i)¢[Îj,¿µ’çÒ«JÛCnž¤ð?'e`>ت·(8PÀ¬ ‘ëÖWka2æÐ°ì¶ÿ©Í™p39òú. ·ž4Àô˜…>-ˆ±¥U$PqhÖ@Úo?¹üñѯôÄ® æd’G‰ˆ¹öò ¥ÆñYÀHægƒ”Å–0(]Þêýxmù+Q—Tà‡}–/îÓ ÿct>£¿úy(ý–ð' bçÂyvB&úФ»›¤PËúvHÓGh¼ç¨&GœÐ£l|¿Ÿˆðiáp–¯ôŒâŸz‹5æw¼»Û“šëêmP¯§Â&{  ÑT’Hrã1KÖ×PAnNh¶;áé– 6ÏEïÍÁFtoï~3„ f|ŸíŒ£ˆ¢~30=_a~ó±iDÝYîW²Šiµ¶nWñyë û­ö¡ŠyÏ6ö^÷7]Óòªjwúý*ðþ§âÛWܽÍ!k±2ŸÏyLnö½ÛÄƯÀÇ ñ MÝ6«|ã~½z\Ð/L_„ÀÕû¼ÀC$9@7é_0áÁýUnTK LšYµQÐE£É¤/‹À¹Ôvë:¢™Ž[3ûCfå’Ú¡ÂC,ææþLÉôå™5;àæÏ<3D_cšô׬Œ¹ ÊE1/ŠžÛI*Åóïéó®’qB¹Ú‡…%Ã?‹wM_}Kuæu•9ήÒõr@yW…6éÕ²ù™û;e.£\ß¼ðõ¬ ‘ÙAJqú‰^äsr3Eê2ò×~êØ4·„òî´¸ÑBC^T™„™uò ¯Z‘ vY“jÞo6ôÔÇÓØxWĘMë&”‚xæ¼àÙ*)j¤ÑN‹h´YþD]FC¤ì³DA‡–¦=A;É)§NO6!nb.äÀ“úeš¾ye£*þZFò@«‹jáÑ·®#JtÅVrh X*Œ2&Æ&¤ÞŽ¥·¬>,‡Î¡‚§—*qÓOò[Þ´…Xèꥷ¹Y¶Z„VÇL”n8ÓŸÔ2±äû”ÁOKL²7÷“Å>w/ŸØç{’j—]âVÅGœhÈ£ùìápæ”<·} ì¢ÅD¦$2UßÂó‹Ýºê|«bº™«64«z`ïÞÙ‹ïkÆ)ÐÝ-¡?¹uмùá#ùQɵȵŒï`ïWðÌðÇ9*PÅd¼Bý—¥;­–E²êüXå=«¸;swACß=.ì&oà›Y†ù}ሦx|°PÛÎ$¶:»@å6g¬CµÓþh ;NÖDãN ”%ªß‘]ŒzÝ5»²}¦Ìˆ!Goªu=Fîþp:=õ!zɑҪFÝÜ]ÏÁÔÖ6&iAÏøÌªHüŽU¥4笗¸Ë"¨þ$³æ›eå! %_–aK¤Tè‘•øzÊÌÕO®ÙŽž×ã“®äx‘´É²wIxaÄuo—Š•ÂU[ž ÈÎrno`bSŠo„p¿¬Í%-#î4œ¶·æ‹‰'מÏvŠÝõúb„¹i¦fÁË<&±kò¸Æaf‰³ѵS |?vÚsîr•–÷XáŸ@wÕŸ˜› ¹ök…ÛKvö©ØòojìV/¬®=î¼TïH®ö?¾÷E%ä’e]s]òÔŽ0öUFãÉ¢iB?¢8òúµ?¨aB2Ìr¤]{¸t(,SØ©+&Ó4èù1ÊÓÛ²ê"KAw lL0§’™îm†Ãû#iÆ;w‹Ï³¸½9-}ªh^‘×óx¿£³·ña8o&á¾»—>Ú…£RÓ‰Üáô3ÊõknÜÈOµé ¥tËÃù.ÈO–T•õÚ>c¯üt­§~œ¨Ý®§ã>º‘ÀÜ»Ï^QŸÎ¯Ðï×Ä"ÌQA(êâÈÞ» $v˜¿ÿUÆEÖ ¡VËžÚ,×XO–Èä²Úr'¿z°eGÓìfìçèz ·8,ZÌH†õÌ1Ò,™´õâ@Ö=;®†ëa=Z Å.#úƒ§1Ò‚ç»mþÍŽÇ-Õõì£$ðù—-ååŽÒ<Â)~7Uº~4ò.{Ÿu¸dˆÛ»®2_¸2ƒIš„IFÂÖºÖ÷hÉvƒ ¹9wêÕÜÏlTÂhÖDÕ›o­)úìZÈIŸ3ûŒn|´¢½1JZÚòÔæ_[äÇz/ÔWN”¢¶°ú{|‘D&óÇõo†ÈrÜÑ.z~)v¯Š~Ç´ù£ŸÇ³¹@ –1¨dT£àÕ«¬H>ŒI‘Ÿ¤¢øjjÇ):ä¥nOM‘Ö½N”¤šƒ Oóˆg¤=×sh ¿Ì‘‘‹¬ 2"~çôâ.cï%%ß51H‚hí1Ú*öGÃãúþïp;‹ObÏç—êf‰ý;‚«º¹öbµXS(`tO7Ó˰¤‹E\žÏ $òø\ª9ä´éB1Îæ_z³³…þc³îKL3¹Ü¬¾jñFšRû-‹rW»aã°éˆ¹Jðµ ±|$Ͷ)q•<¨íI¶¡I¯C?ó&bk¹äÏ!ÚœæÚ³ë+ªÃÂòöæˆÌÅ)¢ÎnjeÁèœ{. Ø®¹ŠFß¼_V\£Õ”›@0‰ãP”††ß,EÓÎÅTŠ”óíäa0Õ díXyÆæE~­]Ž*ô¬Ò{pjç‚—²–]ê˜ÓÊ.D1Vqá‘^YÂqëèR¦ßÉPW“½2 %þƧ ”íJdºÐtˆ¸.$ªSMõBÛŸ\9|žEôAíÝ.Y !Ýë[Aèô›GªÎ5‚Õ”¸Wåï—\\À%ÞgÚBjia‘„O¡1ptãVŠS\±uÎÐääD²¥³æÁWÎÙíaäX(=š ¡ß‰î´RÀ»·§°²Cö-½¢ ‹üÍI-§`Ea3Æ®æt¥,NQmy tTZj½ÁÁM7ZÐ2 ¢%yÐO:²+Qø£È:'ñÙh¢û°B:‡øÁq>¤lq¯_ǯ•=X= ›Ð_´}‚¬¯|Ò¸Îë Ä VAÝh±ä®|+œY/ªú(‚¶óL˜xÃÚ÷Ưÿk¬ßf ø®Dâð­à·ž¯Z+1ŽÈ»ÏãÙÊÉG¢Ë íçQÙ)Þ_Ï^/æYt?N¸½³|#í…káÿXðnßBÄØª±´ %Ó¾bYCû'—RÙŽ ¼¯%nÕÃ37ìÍit­å‡X "îƒÜ$Œ§º×šölã?æ©xuò>¾n;!79mK4«Il¼Iç Æ¬Ï? y|Ù~,Po¥Ãšèá%fMC/=)èlÔŽi#óº5Ĉ ‰øA嬱h mÁdXŽ,»w;zÆâ­€¸ˆÁæ™eùÇ–ùmæoü£“ lŸ¦™8~PÈÚrqL|6ÉTó(2ð¯0ÓùeÓjƒ£Ÿ]”7Neü /´»«ƒL(C2Çà¶žÞÍíx¥'Р±8ü‰>Zo ZïÊkqLí/å'KÛÙ>rP,½˜¢|#áò]2ë­dMÆ¥²Î@7½‚iͼVn›‚S£…Â23¦5³…ÜOM<<©Åݓף­½fžÍ”¦1·E"ué1_0®×  Ïkx7wp}¬9” 8ûñ-n6´CøÝÕL_óꇌ££íŠ%[»â2lÌÃëgW¥×uÍóû(ƒÏñ•ß7Ëû{©Rñ>¦júj\º¶µµèCxì8‹eËÓƒd½u „’0¼²[(6Ð~ÍdHøÂ†·©•ÉÖÓ‚ó^O:ŒÔ¼8,}‡Ìbðxl"u}®¾$„E=|[¨½ ´cÓ\OLÀ]0ßûRÃDlD·yøJ{ÇæQVsKiã ÇvëÒ†Žˆ¬Ee¼¥J£ÄçqéŽ ?EŒFZ¥í:.îñ<è¦IK=ñ‡ã)Šî|– Èa7†i¢t"™­<%¯¶FM™ß&¤ˆiIjìÃÔC7qVDNºÐ<æPÍw¼Á»!Ë­Âﵺr\],¥!¾3¶ÜÓ’( ×wè»Â X½¨½‹›'"=OõÚq¦vZד÷ÐX=o=Gbßõüª×þñŽò…¶jT;àòSe=ä‡Í(¸9‹7,ÐrìÖªÁå¹ÊµE:òdg‚ã{'Õ%Ê“~aùéa„Éœh°n)?}^Õóf1¼;ƒêã5ÓRø«óâj–š ]ÄÅËûX|É'(¬KÔ*P‹"8‚| Šder|Ûª†©¤fë©Û¬¦µ@¹±Ÿ†.ójª·œNtêvù¯Ê²“p딩«Ã-B?¾ì‡˜ÞÅCó‘Âü©>ˆæ]a x­Ô賯ww ý¯×Þ'MV¯•ÛŸ[×µ'mÙ=VÑoŽ% ¥z„ªCáVøËimżZ<5‡…ÿ×y>†¹ltF…Ð$ Z¡«mGÇ2“Bé÷2,è}þÀ¤ëÜÚ høt`ª»qò0¼«0¬Ä…´Ô§ª©®ÌMëiµO"‰dp΃ m“3~_M·S¿"â1ÂCh¿]f²i÷i«‡½»ÉQWmãÐh?€Ú ¦àœ=åÁ±¼æöä¤ÎûûʇðÕãB)ÁŠƒ€}/‹æV”»‰:ê&i÷ú-Ø•ÜZ™_8ÖXFŠ'nôpõ YÊ‹ú­‚BågÛ4·/¿ïhášu?kœÝV´²>«ø,b{¼ÇÖXZ‰èÄ WÛÑ]¾52ÛA ZWÑñ¯Ž‰5ôìXïþ ©@–ßýž®É endstream endobj 101 0 obj << /Length1 1381 /Length2 6029 /Length3 0 /Length 6979 /Filter /FlateDecode >> stream xÚx4\íÚ¶ ZÔhчèu†èÑ{ôNDc0ŒÌèD¯Ñ{ !: ¢÷ ¢G¢'J‚ñMòæ=ç¼çÿ×ú¾5kíÙÏ}_w{žëÚ3ks°ê (Ø!m¡ªHZ$”(išƒ€ PD&âà0‚¡áпíD&Pw ‰ú„’;ŒÆØ”Áh P‰<ð€@"˜H\ ’‘îRe°'Ì -x€D@QDJHWw˜ƒ#Sçï[7„’”çÿPpºÃ `@Œv„º`*BÀp€!ƒ¢}þ‘‚û¾#í*%$äåå%vA "Ýdyø^0´#ÀŠ‚º{Bí¿Fè€] F$â9ÂP9 ‘öh/°;€1Àa(… ñ@ØAݘêC -€®+ñXë/?àÏæ@‚ ¥ûý+ ñ; ]\ÁÂ`ƒCºªZ‚ho4?Œ°ûÃQHL<Ø ƒƒm1€ß­ƒª ú0fÂ?ó¡ î0W4JƒÿšQèWÌ6« ì”..PEô«?e˜;‚Ùw¡?‡ëŒ@z!üþ^ÙÃvö¿Æ°óp2FÀÜ< Ê0Ñ¿mP4@()&& @ÝPoˆ£Ð¯F>®ÐßÎßfÌ ~®HW€=f hÌŠù"òC=¡´»4Àï?ÿ\@; °…:ÀDÿÎŽ1CíÿZcÎßæ °bè}þug‰a˜÷ù7ü÷ ©©*˜¨ñýù_NEE¤7ÀO@X )€@ 1€¸¸( àŸyôÀ°?}üG¬Â ü«]Ì>ýݲçpÿàŸ¹tæBÜÿ&ú# (‚¹€þÏtÿòÿcù¯,ÿ+Ñÿ»#U8ü·Ÿû/Àÿã»Àà>æz 1*ÐFb´€øo¨)ô/éjCí`.ÿíÕ@ƒ1jP@8`-º'¼÷—†R…yCíô`hˆã_¬ùËnüKopª‡DÁ~=a0Q@àù0"ƒ8cž"( 5»  ý³® ‚´û%6aQ1ØÝìC„9kÌJà¨Òêý›Ì!A `f Ø#݉~,H d‹Ù# Á1v¢ä†x¸»c„ö›˜Â¯« õ†Bˆægé0§Waíç5 ^›#x+«Ñ‰æ}Q¢hÎÙg~ŽZøÙj“nŠ6v/î gèÍ•GLÌø3ð~9õ~Ô¼œ®žÆRé[W<(ü~Üíe¶CÒ;Œ‰gD¯S$é3‘ÙXàZp¥˜Î\†‹÷ˆl¿Ü*ºêDm?”ܸJNÉYÓÐq y»ØOÌYÙWÑCæÈão»[dzi]a?ÅŸ)¶ÇÒ}÷Y·ˆÏZZz›Ûß—!rT¨Ù[-ö"‚’ŽÊ÷kÞpòuRîƒ&§¢è©RyZ"]±Kç2Žøò©Âþ¶¤¥à[ºß5zÔ!Egdòz–­7rŒ¾ ‘ÜiNŽvä¯É`W䨶Ã:Ê<¨ç÷âÒ0ðê:¯µ§¥egæZØ ±øCE¬¶ÆïœÛÄe'„-ÓdàŸ+ŠéÁ™]‡íM.ï§(é9(õ4ptXV=†ïò ~{Þ«4cIAœ|j~Û>ÔyˆdÿÂD=œhÖ‘½ûf'©ICôô=… ¯ŠºVsÙeÍ“—0hŸ‡«×Ö©&ýP^rnœ-ÁD„¬ÀˆbÖHk+S‡Ð\*\!hŠœ”ÒùK9ÓË…*±wÏdBšeÒ$‚€Ço(ëï%×®ßÒïù~Ó*ÑÖýPH˜ÀJ3¿ó¡£M©×ô½DXãnâå'EóÉàCñ™å|ÅŸÆÖ”eåÛÇýˆÿ¶}Òpo¦PõÚ5¸nýüSÇÃþxÆÌ×ã{½\iÛÞê §¸‡”¶CjRlaÅðÊÆÑV¥¥~êhc‹~°VûI3{Ï;ûÆ“ïÄ ‹3é{Á®VŸt\T¸)*n“qÍ…KЬ¿Ðâ”ôÃ%Ž2 T&ù&q›<Þ"<ƒÄr´o$Ú€Ëi.ÐîZ°?iŽ¡¨»Ps=<íe\¢l­ez0à 9Ã)Q•øá©'òᣙ®Ø[dWí—ǻۖ¦n Ê!Ú-xQæ÷VJ#š) ͦߚé©j] ¯[ ·ÜzÑRŽTOó#ÑzOÒQ îpuµ{Ðù·!IÎO/LuX˜ ²URJö³Z¦°O~p¦®gÂYT¯ijQ`8‚^2«æÙ~-y1À 'Q:·”/öp„1zÚO#CùìÇîäjïî³ÔœÁå!¼ËQl_^XTmYV¸Dl¿‡•†iVèNƳjÜŠ}5õêÇöo?­ÑS¦ÒY]ï¾fxÈsß­@ó¾+¥œºeü,×ÏýÛ7ý°È¦j'­óXÂ·Š¿h¬nªPÖóbMºŽuÁdyü'‰RëU¨ ².cѳ5o/Y®§.•E:5·Vføƒ,Xÿzieç#¶ÊïiÙ´û7= ”ÒæŠqsõ•‰èH§ä­ùóh†sÉ:œoÓÄÙÚ÷4Îõ¬°+ê²¼æ³)Kì4Õ}¹!g"¡Þ?™cƒ÷ ‡Œõ4êìý4GËGPôáÄ_FÌ«Û ö…ö<»Æ, Z~Ì17kqèÈïf©‡F¤Ü¾¿¬Çÿàùðb gÒ4?{=›£q©¶ÜIÝ®ÜjŠ+ïL˜¸'é,­Ì¢°®F–"_¤“,ju(’m´Y'aß ÷Ñ/‰ mÑå «'©ŠOmMr††©]$ø>§<>¶ÿì9nE¡ìøáäþF¡_VÖšbÚðÎLÀÅëþù<”°=—Ò±ÏòZõÀË©—ò–f‰”Z½¸W(ÝÖ Í¨Ë{κ2´û?+ågŒÉeàüKzH•'Ë´[ÎØï³xIÅ Üp,XñöÎ.šFç>M=B¶…XͲ7qÆnYRHÀÓ6šP-œaaÝB‰kkV<Ù¬F›o‚À$ÇØ«U_æÇëVi‚; Ù ¤>¥]zXaF)ˆe‰)ÊP,z"³ŒÖ ^d%ÔŽµ³…Oœ•SZ áøEMôÊçO¥ó=ă‘Þ¸*‡€G]ƒ‹ëõS§ý*HtÊC°9Pß+>æ°ZfWuŠhB66«L6FB»ÀåÙ–'Ÿä¦ù‰±÷lÑð”LGr±¤kÝ(ÏëR<ƒÏïê$ V8zû¬ú®g„݉ g-îbgíÝÒÅuÓ?uõoxÎ1K:ûPÄÓ4¨'û¸JÓ+ήRœèöA¹ãR‡a–UK9¶¾jJrl!þÐ¥b/ÖOµé#bqÃÅzŸØ·šZ¤®;Þó vÄ«ÜûTlÇUÕ»ÙÅ ÐÒHüVKˆ¡Àñ5> r¾‹!vî-±ËpxõÃKú7…Z¤c¯Oæã ÃÇ cHªy쪘-õâ÷­šNŽóx2¿á»åñÍ.BÌ}ÒúFÚŠósnQZk¿‹½²¯ÃÞ6Á»bà:É«?-G– ‘ÙÉ-ÕšQãRr‡š‡†¿9sÖ1m0½¯:wÿ“b@]úgçºÅ^üƒ}î…é1+á9r ¶ÂåÕžKXVì(Ùg¸¿K(rêí^ù=:ýÍVêa>O)ýSÿíî“é¯+1jeUpñM{S*ße÷|ë}™jl~\÷†#Ì´%Ü]wzÓj#è|…>Ô5ÎûNjõ> óo‰V¾ÁÜO€ìû*Peßµ1†þ¡áEó±ÂÀjdATÝÛUº¹f…Ô–î4¼³vTýªÀË(Ø5ª]È®Í[ÿ -O(±/éÄòr^ˆ¼Ã|®â'(K€±Å÷„°™æ~×WöšÈÁºnߎö=Þ–èïóï*–µ»vò1ÊŽ îm0qØÊX¥s+}ç 4D—tœt0÷º5û†¤ïͶM£(¥å@¡7èÇ­I}™7K‘L¼û’±ýîcÓO NÕÆûš§”ÞN­‚„üx#ç|¶ š™W_‰{5ràÊZúqD‚ÏõÈ“ö£®ûãæ+xP=Ð9il¾xp,¯ŠèÝ »È¯EÈøt?K¥ YöŸ8ª„¾¬ãQ¼Ï‘­XS7bÞ èüÞ)y<’HèÓôÒwXŠsÍåYQ’†ÎÄD=íÙ­%Ö2‰~|òöúòÜ…„ %±ä Úd+±Il+·~©ßc ¤ßp}}ÚÏ<„JÆõ4 MÀaœyÉóu‹±Ð¨`«äÔ¤™_è\Yù.Æi)°²€ô¥­P{É´ÊâÝ”° .7ÕÿÌá6uçÁ«–9³"ú´†ðMçsAÜ©»Ñ})w‹˜B•謁Ivu­Vå­,ûV»œéyà®;e7ŠGÜ*¢˜Ä±— å­fØ3“úÖ¹-;О-Å;²¬Åd=GÝ+™Ì Nv’æcò£nFòŒ/($;ôÖhòî›iö`/š4rùÎ?<~§À´ÀCˆør:v«nÚ¨=•¢7+qQkt…ôÁîÁÑg+eXÙ•EÉ¡êþÓÍÂ=¬_©–#/üs°Òïâ}5 ÛµŸ0ŽÙqÓ 8»œô—¹ŽÍÆüŸéÕõ×ëÅû„Ê–üZʰ±™ÂKÄÄçàªÄ_Ãß-ãïT),J¡4"žómš8ù ½º!cŽ‘' l4,ܺ6OŸG4ЇÄááe%Ls–ñZÅ3 $q]Bä±ÈÖî\r6 úß_í+Ê8ëdž ß¯¹}½3_Á— !}Ôx¿à±—Ëê~–ñç`IWVëNìRýö…o\%:9jõ«73eI±ûÊF^;YÖßF‹˜É>(ð•›WÞ’Ñ9¿Ña‹ aŠós£µ5ç–e›—àýô¤spĹÌGä¹sŽõt­¾ÞC’ ìµÖrnYDÜÁH½k÷ÌO%™z¨¸÷‰Wð<Ýj… ;µÉê¶#=:÷Ô×™ÝÙ™ÝòÞn55î!ľ¹à¢š¼M ×4]þhøø‡ÈÓÓ W¸~õ³ý­¬h\ÛÕ2j!×ã ÇÏRÜ:U'$p­N+P$w!v)õßã_ºhÆûqúJߟîÊà v9Z·€‰¿£©ßÍ}þ•‹—æÊÍ,Èèâ}Ÿa:ÖùHˆ@®\Ø…Ž'oxÌþ¤¥z?mu­ðÜç.÷zµ Ç‚_y)k»>s®µâÝrb¿­XÉW5íþä@eåÀ=±à «É§ÿœý‚ý• ýÇÙ\¹;y¹¥H}:éÎ4ã4¯v€:c/}Öçâ-Tz˪2m!=ýŠ‘x§ó§jšszŽuuê-šq5†¬w¢‚”h|—'í · ïO¥§Æ^ß°¹‡ùUVÍ<àj¿Z]b· 0 Ä# Á_|TD±¦#ìl_>Fz<yH¾S乺Óu¨¹hê—«=µ,"7›W®}dù]Ê”NšŠÂ“%1œ<ó¦ÙšôÍ0E–dÂèR3ÊA½U i¹|V£¢(€à­&ÍΩ±åÆËÐd™ ³˜Ÿ·®’Eë_ǹi£e}dª#x׃m•p:[‘t ûÜk à\ç}%i—Ç7œÍå2jcï†è¥pŠ£Ñdاj¾Òš÷Ž'☥›×I_|0LKïñì>¼ü¦ô¸N®ëAh›P²*›˜±` Pvû„þTŽmhªrBf7ø+êóò~¨7òåêlë;¯K1Ý%Á€'yAèÝá@QŠÃB“µáò:¾*Šâ¦ª¯/™ÄcêŒQ!Ù/gÊû}¶7‡Þ¤àåÇ*‰^ª¹;¬ã½!}Çž™Ëé_“ÐÐCð8mI­bcN"/c‡¤ OÛss…Û‰]º¾ ù:VˆøºŸc9jÙ§ýÎôN¸î\}” ©`ì󸇄´ã™HûNw·~r…l¿i½ œ#}-ÀBvþH;ð)d†[jšP+w±Nù0ë³f”C$nyß§¢žòm2JùØ\£ªTÀ4ø”£_ÓßF_3àcáÛõ#åˆÜ”hÒ€cΠ«7’‚W3¥mÛ¶ôžŠ¾@•.>9âAÑ’(N¸ä‰Y‹žì8Âá„PCu[J®:—ˆgh¬; é'uVr±(þX©+.ìlzá\\XÞ=lVÍúê S M.uÏ}ãÒW³:‹ZH;§EÔ,©y¤,qÖ]ú¯éh.³4;jI>ñÚC <‚,»X ¿>Ë£X—–§B‘t·ú¿’çµÍÆSÛÑ{Ò=1ÇŽÀ3O?ýÉâ…t¥<ùœÅš¥òF喝ªòÎØ'=2ɵ£l9Ý)Š1OcGûæõ¾ÄŸH+Zé'è–§ˆ|ïâU¼%RêhÃaoZÑè'ݹηÖŃþ´yOÄ’ÉþzÅ&$@@’Z_èMñ¦v4(On®{`pg²¦á3ùžãŽeL‰íaáÕç¶Jëáûç#éý|¸ä{hÆžŠ‹±ÜÚ(º?Ëuå‹8´“4B–?“ Kæ<ñB#¦Ñ·Ù®Oôi›¨RE¯Gùœ56…M%eíÓÊ›äãçoODБ•×­N%½þl¥õ['_gˆò-¨§´bó±ãÍoS×ñÌ!EÅ©W~¦ÜåÄWO~„Å_å=ꂪFyï«çÝWÕ¤X߈œ»9²ïXz«å¡Øøp,þå GCÓ‡·HqFÜájª9’)Ûøà¥³ù´ ¯Šf?×]ÑÛóêµVưj.‹D³YmN|wpû) ¬µWéç–ve“ù9d™ÌqVCíO+ ï¯Çê~ÿºks{ˆ Ô59Ó¯y¥LCŒV)]óJ GÈ«æ© ~å‡!Ã÷ì/õ0O(i'5Óxgz~ì,a Wm^ιÉIò˜-lC%Ev$¿QÚ—¬ØóÇ9ËBµ‘Å>dÏò Šæ–aLï·R‰æsˆöôž–ò°ÓO¢ñxècMõÊÈŽ-¥â¹-ßv·n„å¼Úû#—˜×Ѻ˜Ù+%ò.eMf]|ºîHûny/Kû“¬á‹ÀÇ»± Õ­ÈD<«Öts<'«…oxù^l5/_ ç—¨lïžæÜ°ÈñõKžfÇ…‚ª§E3ì öl¸ûÂåýenú˜ÊvFmÈ^$UoûÈoõ]·¯^ü~¥Ð«.=ñK?¼ï£h+^gåôNh=¼)_ùþ @À®w±ÃccçVÏö[fà—Ç—!jVÙE‘Àú8ÚÞöçVÓ/SïðLg ø5é&´ÔèÎ\“”õÔ“y¿ý´KÀ¥ßGpâ¥è0ž´Ö~exÕ–—Ã6[ϱ=<õ•n©ÍÔð™~¤2{³{x'ÚÕ½ÌY›¸IO¾Êùú™HZ&¼w(mx¶õ†ƒ)xŸç“«ÁÀùòüë ¶; D™*ÐdÑs¾7ó5¨Ò‡G\ôTµ-¥ß2?nÛFé¿¢?9¬1„ßÎwê;$ÒÑûâ{Òa‘/­=æ¤Ôô}¤CU¶}¹~F£²ƒÏ¿5ž¤Ñ¦ERòP ?€ ˜|,’š¤7žžh–E;Ma#ëÒ7m}ª{õm"鯮ïVAHó±$µÒœóråÃÜÜeÂÞŽÌ®øíTó;Yõ§çowøDC+ª1iB¹r—ïb²VI,Á(Áz¡kŠÜ4ñ¹$¸ÎE•îÿºªžsú¼Úc# A;!çc¦Î"/ýŒx‹[¹._k¦p¿ïm•Sô¤ð õ¥/Xîæ_ésùÎÒ¨Œùq܋ƿe­v9š+‹ú°õô¡–§lO;§ø©×¯>d|#ÅÑ$}œ#ƊYð¹‚#Ô!ZM>†˜¿v Zópk{ûˆŸZòeز`nlÚªY8üY4gÞ’£ÈÉšdzUëъ臯·so±2jìm'Ô¿z©ª¹÷-âÑ(¤i’É,3+àë(2·´dÙ3X-HV‰øAòÕµû&ÑŽg4Ü>’çQcL©”É«wúf…ÝÈÔì³@À½i–çTó1&Ç‘ |®ã>/gÍútC¶8ë× ËËÝD̺5µœ¡×ßÊKk#5û;bOŸ¯ØâwÅÊE5å§ ¤Ã&¶=wNUYÆT¦ÅêÉ#Ž,Ù5˜Æ¥ÃI˜üMê,(E|A$Õ6ˆQÅÏA,›iÚѪ…¢Æe†U-ÝÏ³Õæ©§¿Ëai§Õ« ÓŠUo¤ò>Ë û@\Ù€¾%hz|MøB×[Эi2—:÷:¯sPý•Ó… endstream endobj 103 0 obj << /Length1 2204 /Length2 16628 /Length3 0 /Length 17963 /Filter /FlateDecode >> stream xÚŒõPjÖŠ"Á!¸hÜÝÝÝ$HKãîÜÝÝ!¸»×àÜ‚ÃåÌ™™œùß«º·¨jzmYÛ¿¦$UQg5µ3JÙÙ‚Y™Xøâв¬,v&6DJJ Øø9"¥ÐÑ dgË÷ qG øM&a~3T´³È9[XÙ¬\|¬Ü|,,6ÞÿÚ9ò$Œ\@¦E&€œ-Ð ‘RÜÎÞÝdn~‹óŸ¯Z+//7ÿÜ¢6@G‰‘-@Ñl´y‹hbd P·3ÁîÿCA#`Ûó13»ºº2Ù81Ù9š Ñ2\A` €Ð èè4üU2@ÉÈøïÒ˜) §¿êvf`W#G àM` 2Ú:½¹8ÛšoÑê² e{ í߯ 0þÝ+ëéþíýÈö_ÎF&&v6öF¶î [s€ÈP–R`»F¶¦Y;Ù½ù¹¬Œß þ•º@JT`ôVá¿ës2qÙƒ˜œ@ÖÕÈüÍ[›%mMÅíll€¶`'Ä¿ò“9MÞúîÎüïáZÙÚ¹Úzþ™lMÍþ*ÃÔÙžYÓäà ”•ø·Í›ñÌp²°°ð°ñ€ ›‰ó_4ÜíÿR²þ%~«ÁÛÓÞÎ`öVÐd|û‡èédä€ÞžÿTü/Bde˜‚LÀc 9Èñû›hö7~›¿#È ð‰åmýX,ýý÷›þÛ†™ÚÙZ»ÿ1ÿ׈™¥•ÕÕÅéÿ]ò•bbvnOFvN#' €••ÀýöÅûyTŒ@ÿÎã¾²¶fvÞ¿Ó}ëÓRvù÷Ðüû@hÿË¥d÷¶¹@ÍŸE×cád1yû`ýÿ¼îÿrùÿ·å±ü¿.úÿÍHÊÙÚú_zš¿ þôF6 k÷[¼m®3øí íÞnÁöÿšjÿ>]E )ÈÙæÿjeÁFo× jkþ¶ÑŒ¬L,ËANR 7 © lbñ÷Öü-×üëÞ¬A¶@;'Ð_/Ì› Ëÿѽ™‰ÕÛ+âô¶šÿRßnèãJښؙþullœ\#GG#wÄ·Y¿!N€'ëÛUšÝþµÌf&[;ð› à­Fo€™#â_ƒåf0Kÿ%úq˜þ î·ÝúƒxÌJÿE<,f•?ˆÀ¬ñ½±hýñ¾±ýq°½!§·&ƒœ¬þ˜¼QÿAo);™Xßg3ð9ûåïÖ¼f“?è-£‰³™õ[íÿs¾Å0±³~ëóSùËðí-ù“Ü_`6ý|Ëø_Èõrp~ÛÔ?oÕ˜ýo„ff ?ø/í? Ë[æÿ€oæ²á|Cîö@ÛX¼ÉþéÿÖI«À·Šþ™Ë[lþÀ·—€ùToo³ÝŸ`o¶o¿NÿP¿¥jÿGýækÿöaû?ýç`ý·ô»Ïñ6mû·yÚýiÇ[¡öÖÎNÿà“8ü²¿…wp¶ûk þÉÄúWÿßÊÿÃÁùæä´ýïYYßÂÿ¡x;f°«Ý?Ôo=sþ|ë™Ë?à§ë?æõæíöøV°û?à[<þÔøÆätü;Ôÿœ¤‰³ã[“Àÿz;ßîõ?ø_?†@ ÐqiÞ΄?Ȳ6¨í®Z”Еqw‚eà2â^{Gße_5@\àþŠ=ïË¢h×ìÞ—û Œ#¶â×&++ƒŸ^)_øp–êÛ`ÌŒ·¼¦0ŽœœÙöä;;?~f·55Ç9kVr½™¡Åep¸ØK?” j®¼­°8ƒ£n¥”sk`¹”´™Bøëнüuú/¡äƒ.ùÏS€ÊI¼Çš€ë¶ c§1uarþ Ù©K™Ë(Y5óf™Á èþ$hñ²ó Ñ,7cê-~ºN‰âïK ìœÔ¥=eeÒ˜‚RH}‹RÓÇAµLYèò^ 5ÃÓß 4œ2fR FÓ0UÔ¯<X§MF¿:~1ˆµØöU „ÈŒ‚³\°6\ ˜×hæ·õ¢Ê Q’¢F\<‘håyqMžŽIó‚r°“ƙۨ™[†0¾1AÔœâöš>dÛͳ^ ôi~1”ë›Gì Ϭ1BvQ ³7‚VHd,.ÂË5ßo õ_¶nŠxâS%”LéÎÜd|—E ôZÉuBŸ™Í<·l†ê¿Õ @…áy<Õƒ^Ó­3ε“^ƒ?hÖŒ™ÅF •yOæ8D˜0‹”'x†ÕrõøœýŽSï¬-í«s¹¡ˆ¯»Õ‘Q\Ô*G"榒di-©Æ A¬À³A\–•³s•:çCN|öƨuöÉ«mƒØ"®ØÎKä½éÜí­!W,†3c2Ƹœ*Û&ðmE‘&žAn:*9ÞñÏ™%“'É#ÄX~È*Mɦè)ÕÑuœ«f¯œÐAcñ÷IsÀ¢aaà³|¤¡˜8œÓq! ÓŽtŠ:Ry÷²d[‰`¡ó¢ÉOPÀÔoD­3øƒÊÓN1Åc_f©Sc5áÆ²0AØ·ïñÃf*¬✂EEeá£,Çípn‹ªcŸAT¥ñUíæüXÉ]àÇ«¸¹=µ n†¡êFf"·üÓGÉ¢"‚’åìór¨DÅî}èW‡Ó‹e[dþXæ‹ß: ÙÅéŠß!]?šVƒØÏz´¾¤ì‘ÑSÐpν÷bŠW»=ýúyQúS¶Ûä"‘"¯Uã 7ž%<àBã5eÜs*¼Ç·<9v)QÊ#‘«ì¯?H6®~˜2ûA•égš_õù°þ,Ð{ §üg;©MˆÅé,‹ó“êǺiž,B¾™vu¸L?é^¦ã;É ”ñåaI&ŒÖ{¨†iu?å›’Ê”ªøÏχ:NÒ¢duÛ”û¨±ãIdÓ§­¯ _µ¸¹1*-ȳÈ Sà4&'#rÀÈïÄ!‰Í3f¿«©=³ç®x+šxî¹LŒÍöO‘.©Òc¶˜¶uÔŸw«ã%‡ÌáZzÇNõSÜgíô!¡ vþ6-™ÒÚÔ¯l,ÉÓ-:§+ŠüÆ1‘5jñ™ÏœPÕ<5߬´‘8ÄKÖB^)AwA1XÚ–Ž±åî®—(æU†È—Dót'‹ÉPu½f¾˜.e0Ì'}O̓häââäû*¬î‡æHÎÖtŒ€þ•þJÿ¤£Ä§<¤6òçÑb_÷‹– >²æ{\Ÿ±‰Í(,ÀÊåG(Œç>ÿ‡+œÎ~ËÅm¹Àú»Å» Ò/û¥E´îߘ 0á§e½Î˜+Ykñ]ü ’AZ} ÉÇz ™¶¤`йÅ_Áúqg긃ޥ›ãÑÃ?.A`@FBó¸Vêþ­D¸´jåÁ© "ÄI"\ÉAÌI'Otw7ûä`R[¤UÜtä½>ا²2*Ký¢&i±ú}ú‘˜¨ÕÒ–Ôþ4ÏÔÚií CÿM(Šíáæ}b'|í²¨ò¤u\[ *Ÿ<îùS+áhªS‰].2Ä÷G ðåã¡ÑŽü¿ ß$>ï%´v^fÅ%}³“VX%k³Ë<Æ© ¯E@¯.I”õ/Du µš™í… Ž}˜ºÛZò‹Ù iÆTK þ“Ñ0z¾œG]³L½ê Ô,ÝxGévÒ„woÍœc¯¤IÆA½Qƒ¹GiåO;üÉd ‘0}¤Üò,µýFÉk•ëú m‹ú>ˆÅñv})4lÙÅœN•ºƒ=… /2qÉjWo±½ôþö‚ÃJ–Jv*û+—`U>çAùd×ökz[ñY—Îßó`;ˆÌº¾$£:÷=8|]<žÓv€Ónm÷ùädŽ®éhf`[l}¡ íˆ0¬Ír쎠P—ïá´M¸ä’GŽçSA>òûW £lÌd'¨XWf¾EY\9$”´j”#Ækë=ü6507’šeB¯ø†b;˜(Úß¼ëçÀÀ½MÀ/ÇxöyœÚ:,0XGžÐY Z$fí(`´¸ _l–r÷Ý×1´Œ>‹p õÎKç§ cÞ‘æõ{%µÇ VxJy‚³A¦í¶¯ÇÆ<}¹)âž *ØÎ'¼Hï(É;ÒX1Æû¿£_Èk¢Ë®x´g-í˜ÝoÖ:íã@tR—¤H\¥©ØFŒ ð%t¢Qo¦d&n;¡]fg.‘„t’8B.ñûg©6ÉÀú.šì—Ã9-=1@«ßŒ‰Ùî}Ï[ld,ÃY½ž[Ë UØp¼ÖŒxŽ †}ÂFǬjU6sØÝ퇢m î¢cG!\¥¸¤ÍƆ^E¡]• ÿ\ç¹ÓäüÔb8óþR÷4íá5VÐfdóa$€ïõ¹™u6 ͸ E¢÷×{Tês(ô|gË­É~ÓŽm®Új`—ìï0ûzwºð˜§0®NÝÔáòx ŠxEQÍÓâúº™Ÿ"d~â¤b»¸8ÊÅikú¨=IñÒ©¨Ê§2Ù6Ö¥wÚ5áZø»•ùÊEIJYpâuÃP!A$¤à¶ÔµWéG3l·Ôª©?|KìHÄ©ë—Á½³ ÊïFŠÅ&½Ù¾G̹§DÆÆÄ¾òôØiilëeffèª_ƒÐº?ü#C´=ÀR@]°cŽ¡vÚG‚/7 ÓÆÌ7ª-.H ·k¼xŒØüð>!Õú” Ÿ¶ž ˆù€H¿X|Ûaþ’—†ôüô«ƒ´Ö¼ÅÚ¬Wءε5¼.Ÿûqî|{C3 •Í @ñL»¥›Ìà‘|ßïñeª3 n¯°Š’•4!b0»±º.D›ÌÞyò osm¤æÈZüsÛñé©SD<”É £ ܸùªfÀRòe\Œqæ9׉j.V÷H6÷³èöLÂìŽtã§ ×—o%ª ˆÐÛ|Oq4Ÿ"z}Š¥Ñ£œ\ˆ-}SFâ¬ÊT̉¶™ÏñêaçQ¯~ÇêkBg7v'xü"‰CÖ8c Ð*™æE·?]ùø³á:úíë/&çVÇϦ"pÐܨªÃXåÉRÊi+“‰ß›§žù^Ejß Ñpô±\ÄE-(Pi8sÜy…xŽDyxì~¡²ŽÞ忯. ÏQQBuþ’Ÿý³uj»%VËÊIÐÚÅx}2ŠgØ«v¨W¯ÝÒóüGq•‘,vúMõ{í­võ¦hÔ™VýÄÌ7Š! ïoÈm7Ò7O@A3/Ôý í†Ú— ÉÏ¿›J›We]¾aìžrŸù™¡Ë·ÕÑ;µæHxd³9]ôÿ4þâ ï>ôíèßåµõµÐ`ž_j¦Òyý:;\°–³¢ñ•AD#0˜ßµ éå¶d?ë´ºÔc¨m¦hgò—pîzÍꛉ ÇàùÑνÌç¹Ï¸‰¿9úÐP'¿l`È,I¤3Sƒáµ_µŸ§Gžö'œ‰8éŒû¡áðxŸ”¶†¡£ê©f«¼—›È3èàWç¹B÷C™½Ä tØÒýfGµqºH]E“Ž ­††©5DÔ§‚¢*Û­TxÌðËZ„„Ë®*‚Ç»l~òÌ ›ûòz(B??DQ$Í. G,,žÔ(¨+¡pöH ®Ó†’/ð@½†ÇãfÍk` •*çU¡š1oVùrŠ3Š`ÒãVô4EŸ:¿Â˜ ˆâŽÔ¯Už#njñ+f¯Opz€_ mÎ@/íra ‹5úG® ›îƒ^…Ñ¢œß›&…ŠMÓÙVBßdd+ÐEND†U5†¿tÏ!˜ó±VeÎ)e&áÍÂãô} 1É‚7!ç9cèy%§~`°iôÁ5í‰×ŸUnùR7‡Y9s‡rùÂü^0Tà\d£ŽMcÀ ºc®ÈÊ Šg‹=¸ë¼,yëw¡€{“Û‘éî“FShÛ³“#@ɲùÐtóëõš ì‚WèªNæB[Êø/ r÷B@b‡ °ÔöiÚ"7¢ÚK„ÏÆÃ ÜiÛ#PUUûè s©õR `¿‘£?U€ûm¾ãN¦÷øÑW”òð¸™Éa‚Þ-¬#°YíbwœÒkM7“=1u¤fwNÌsUõ$‹ºg«ïY¾øY<Îå#eôMcŸ4V´ÛAnø]Õòƒí-á×¶¼œüR¯ý-ìí^Y´îIMŸöŠÃnµ3ê¡Ï—P«’åÎ2¹2g “¦¯0ËöovÀ^»ï§—ŽW¾ß?ÓÚ}´ëÁƒ…öf÷ è\ŽýR“*©ñ°®äñŠ—b0>$ £fN!´ê‡ zt'ì¡Þ úµšì~£©Œð±/[Z8Ãzº\aðôuáÖZŦʽöl¥Ô^Ä–ÁÝ·‡ˆcgÜ©r„¯ßM)­!÷0P^Ljüþ+´3Ø•¦ñiÂÚY[¿=Vp°°õ^¨u`9óŽAjÝöÊ]ßLÆðÙ€_é½»Œæ7æ5r2Zâ¹Wp3ìSɨ_IédÈ5Ü-3ÿƒ§ï/dwñë5dqc¯/SxHhM­)ü5Û Ü˜VÝqñù;¯òG꬗íÉ;rF¼ kÚ]Ny£ñ“¦Õ0ð:2éz¦+ß,;|iÙÝV)mŸ©­ؾòÊEU6jXzk²œö leN¡)sÝÎz‚éÞç­æ…¦8–áúºwV<"ïŸÂ«†‘ƒW3¼wHî‰[…’8 o9äP+u†¿ìÚv£NyèÛ—· Å“|Mdîû6]5˼j½úÉz*}‹#\Í'ZÛUŒ4ïúÛí£­þ½,§«®¾Œ æjm;¿&Ù`2ÉuàF¤>^÷* FË9ÇeZÈäÝlß çÇŒcM®h;zÊñ5Áçê;@&UkËp º³w™ƒSu@W1ƒêVµT•°Z‡´Q:LçÝ*hƒ`7SØÙýéÈ8ÐmÊLW!&Z]õ6_5Ds•‘«¸r¸Ôò^§n |Nªm†ï:pÚd#ª4Öæ§°y½ÝýüqNwZaEù¢0ÿÖ]®\5Ž–¨Kš ‚B@g°Í‚ZA™¸úÝþûôS’×:QÛO°Ó!|]±ÑÜ€³|«sLÛ=[â£$˜°2D 1®³:Ë–Ãe"·È!cá€ZÙòoÊÁvÈë×[ÊrÅç·ù¿ë^ö£“fg$ ÃùByˆ­Z^Ø„Cñ4RÞ2<¨êî#ȶ<Õ‰IÂÈuP9¶}4FÀ©VVàŸõqâ5"¿+,31IÂÿ>ŸÒaª0˜oÌ28Ú‰þ%uÝ¢ÿãÂy­Z –\Ñ @ˆnVºI*z Û“_œh-k¢c@gH_ åÊO¡ÚÊ•´Iº²ÅŤ&½ý:.¬- ‚ìÏ?dKÑþà…(ÏŸTW2 ¨D‚v‹©$½ÇÎý:ˆŒ‚¤8.z“2Ë_u»8áýÞøu›¥#—™m%:̉–Ö³xõÝoÐï’Äõ/鬨jý‹7šI¼þÄÊA¢èØæs’éZkæî~5hú)/Y3ã Ï‹ dÉœ°}ÎÀO¶ i^<úÄUâÙ ¸mbsZÃdtJg›‡“Ìã«Öé>× ?­ÄÀe¨„Dˆ#‰µf^^Ñ*ÌIJ,£õ¬þ8#PWŸ€°#+‡#”ê¥Âi2/=^?ú9 M÷ßôw‘|ùÝ./¬S1“Â-ú:аÊdt’H#NºøR¸ûžh, V²Ä`É’ò¤yZ÷¤¿çL^ûùëeZÔzâ~³®X¤#›‰×—óòÞU WÄh¢íëõ’à͆ Qå¬i=fRÜ×[ONI 'Ó}Å_Î÷ëLÜF&¿±]¢µ<—°Ç&îõý$Í#̬„gßr ¾?žÁ4ÄN¦/ºÐ{™™_R&}ËJØâçëóP ’C§¸éóí Æ¼Ú0¨Éª<¢\ññò-m$o¥íu2g³ogò·ì8ÀeRu"µÕVêm$eg¥¿và¥Å½˜•ºë y}~}"J–rÚ—¾m”XžÍðÜñ˜ÊÆi°ž#ä;÷åĶ31 °l'Yýò{«ÛR ùæ³ñ–ý‡×w–ìÚ{]j¸ï…®_$³ß›½Ö£õüÜÚ a† Ù¿æûÛŸÆú]&\pæd88P ûT¸î× X眸'«Ö‡‡r,Å”"â'€°SÊĘ-’_¿9A–UÚpÈg5Ÿª¾r\Xo"†b7‡#j°¹Üex[‹ðç],Ïb`ÊP–ÑYJDÁ ›°ª-e"Y(ßx¥'ã±ø=ORHöYá¬ÿÑ7ýÖl èdô_]öÚ-èQO‚g­åv63šä·ž÷(‹!Ž'Û=ƹ°Š{~?øS}%Üǹ’ði]pDSO²%i‰ ëSÕ 7Ðç$~÷C‘fk°‚r:‰4j£9c»«?N J%ÐËFçyõ .ðƒLÊ oËå®^Oª³Ã^^ÚŠZŠÃäqÕEŸ©©Ú¹©Vj€y!¤þÒ4Ô´YjáU·N6?r\t|]¿ïVZ¦+¤g•M ÆvãÉ-|]‰¡]éëëDyN¾ROJÐþøÅ QÛñ”{󇾇 ã\öNK¢Lí-œ+Œ1>y4(„#ß›#5Êöþ~«Å/:ÒñÞœ:eoîG½Û;O²4¥c¶qo/Fxwt<ìè§Ofé{¸ÍÝqЌޒDZv=~g=bÇsü@…ûÃüнÀÑ>ŒCÎà5³Ç 52g•½Õu+(ñÌÖ¢4¿5"¤uA6…„ASÈmYböå­ï÷f˜]ÌYó èvM…½è ›/`-ŠÇÆ2j'­O÷kç·äÖ„£ß3h›F;í\C0fµÊ€p-…3à¼Fñ—#-?¡*g¾Ï+âTŠã)\„~ 4I®(«µ1‹çdìvÕ³Ó+ÃjïWŠˆ~`{Ýs—~äç6Qöª¿ÂiÈôlÉls&]þTyW9Ó,³ÅŠp™Êð´k=—­×¦jêõê4pØ)ßnjuâç7+&¾/ü@n,ÓZ£ˆÒ3ãS"Æ«Á8C¼))Ó«²¤¨†âdj§11h9âÖ dˇ&TcÛµÖ].GœFµô:{òŸ¾Ý Ç ¯h5` ãÌ®d×!‚.ˬR#”XÎèD ݽóÜÀ§n.òn|,]xš#PÂø<ùò‚¬ ïl*·zj‡¼ço²ÛMžNíÕw[ÏgðqŠZ틈†\ÞÖ¦Ÿ)TNË#ibÛ°ãÄ4m y(Ú@¿¯^¾ù &ðs²®¶»Ö£Rc/°'Ý(:ÿdõl ž,þ£ÃöûppB^ev ýi4WP¢ÓÈw{'ö=TÍ@¿&ÌÙwy®z„O\F¡¾÷ÍÊ¿õ#ÖVl:W‘!k›éý€,\Ÿ|Û9Ö7"î¡„ð‚ÒÌû¤åBÉËŽ]¡Yõ3Pv k-:ᇿgïØ¾Z3-1j ÌíhûcàâQy(ÃM<àƒ$'ë Ô×`¼Ü:¡<¿7RI¹Jû°ÝwG!‡Áž˜|4&ö-Éä}¤jšÑÃÍô“°ö óG•:ßµ_Š‚ S}µ.¢ƒÁ×°ô´XÝŸ “¦ï]ìÉéÐ;­'6 %ý&R¥“"‡åüÛºöDw¤<ü²‚£L¶ Ö™|R´OÙ&IJJV2ÚØ¡ Ÿˆ ;ð;„%?þd %ÏÚl4%Ì«x Ù_8;=HiŸ+o÷ìSòqæÚÿ=@JɸqNÛ¿ÀÍt)ûeÞ-‚™É–7ÄØP±Øàºí 1o·ö”®Gé´ºt6¡%·|{ÅoÚJÇ?Î4sÓüïCÍsEì.…+Ó¡ĶðzŒÈhOžqOö³^'Œh’Ê÷Eº:,²=£ù'ä}Rtc€f·Lž­éÇß$>Ù¡¥´nw7š.Ы0É!‡§ÎŒ.}eÒæ=G2?˜Îo|b,·/ aòýåÏòFLö#¨gD?ÏB1‹JŽØæ2¡¥ Ù§6Áä¼Ëz¤Ödðòc˜Õ.õø2™BíÏ­ñzL¸"|zb·ðÀƲËH½Ü]U-øÍ\ÞqE6E{ÔNa5é¸åÓoBЩÿ»’$LÉïó?±¬Çkp2{wÑQÈØ~-¹|¬çݶ"®ºþ.Э®©ÃH°q`Wòå½jË'hÌÛ¦ ¹Ø­1šÏ3–4ñÜ”Q¯ß¼Vï '‡ÉJMìøÙ=‹š-ÙñÇgf®QÀ5ÌRý¥Žá¯ta:MÊØgEÑìƒƵœÖͺ¿(23 à·Ä²õ!?¦²ùeÌ}¸g[;ñnúºÇPKý‘4û™ù$#N.- ÇŽ!%NI7¡cnß®×di>¡;«6´ËÂAdèeBÂ÷Lß9žñ“ô²¯ö_““Íb¹ü|è;‚ܱė/ù(ÍGøAÊÖË(KµoÖLüDb5°fÄ;Êâö"!}¶âsÔ¼=W~„“åãã£Ê }¯]{WS„à½Gu³ŸUŒ3 i«7˜áéw—ø¹kÑ’l01:ûvÉP”Òw] ›hß>ègøÞ¾ÛÝÄ-m†°FïFæÕ†‚™¼=Xþƒ¼Ç©6½VÄÆ­Ýy0*ƒ5¸Ö¶¸¦cüç¯Ò­d&*)¶ÂÆZîé´Ø˜anµÏQ8–f‘¨Ä¡ÐÉËH['ýò–÷y™Ìƒ°…ë<ŠêvQh$7QôõSô2ˆO¿ jÈziÙ èþŽuxêyë`Ì€1™¯faMsuöƒŒQv¡NŽ5žójSþ¶JÆÒô†ùÚÂ4¥…S?ÄXµHÑ.^y(F°GùÀ;JÒÃÍã)gŒÂ ê„)g†¿(Ťؾ_o>G³|“Ûî姯d9•:qWË×¾fÙFÚ¶´\L-¤02?%»5…u±§q,6G-\Šå¶ìZ €1Ô›MÁŒP±»gí˜íeø€]íêšrFà»?¸€ ›ŸpISí÷´Š}üÈmCù3—Cç)Q¼³Ö’¦^“@T¨.¯e¤á¤%G×d^"Ä^”©ø>¬ÿ‰H+¯[éÃÝÜøšöô;ü]õOã-εۓz¯vtr,4ök"+Iw£òÜAÎ9⩈Ñ­ŒtïSL¤[/|/öY¹0õ`_·µGQ”©}tL=(£u·ËyɈšÐ˜,“d:ã†/{Q`’’՜ۣp­+ØÊ>ož—}i&…wçr/Mï ­e‹OgUJîå›â™ê@ÌFçV_ö)º£=ü›߿f–\v:À”ºÀ¾€O½¢Ñ çPô;@¶<Æ1W¦ó+2F¯È&žGÜÔ¨¦Mg9]²R"}ç¼O§ŸDàºvûCàâ+x—}º÷+–wekOù‹ŽH‘ B‡”m’kI_æ¿§ ¡«¹P˜Äí|âBr‹”süp‡¥1Ã5N0·¯!Õ7N=ÆÃÕ« ´è»¦Ì¦Þà»VÉ%¶ë‹¶Céu(â´8­µšl³uô“” ¾2¬ áôÚ+æ¿rHíwÝ“U8Ì–~{K¸ <ÜLÝ y>§Ø%|[p·Âk„ aHFéÑß;´sµ“ÅuoÜ…–žbê#ÃKΚ$Çlç×2ûotèÖ ÒzvoõçwÚƒ…5W–¦­zŒ§¥¢õ¯cXföÏjXó´5¼]u=â…wã°,uÕ:’áãtä%©hÞÖ…§ÁÎ*3#ÚÖ’å‹t`Í­,'bX‹g.оf¹ÁZ•×Dz¤Œ³SeAIa•"²¡¾­³=l…¾p€e™ìOš±Ó)ßþ€5œ2 x(ã,ëD±æÌ“V·½õuG…풾؅ ¡õÌŸP‘øì¨Ž t¡vBë·»‘è+ ‘¬¶£_Ó³£e‡¤'ˆ!ã]­Být*"d | wö×ãË—#3Xmê°û§³KyÒÊ™•„³BãYÇ´Ñ—œ1NH°ã „ƒˆtÖlHc¡ùH–îM­:#º ÑLþ•™¼ªƒB¼m Â#>n³M ü‹eßx¢>õˆÁö×ǤrÕbÃU’71T—ÆÎVÁåkˆº3M|/å·GÑ-30ö°MyÓN.\d¼¹(–šÄÏç®GwýÈBÝ’/¢R™1¨é#_wò‰k?8£ræv‡ÃCyÜô¯w”ËÛŽå£Ì¥-ËZ,1Ô¤2 ©GW$Î{ÍâÆd­wÀŸB<(Ô$cÍÅ+d¬â*O²Bô­ŸÓ‘\Ïk"WOLÞÀ| =¿£@YÆ¡6îu14êºs†WÓ=¬+§hÇŸ[töÞ!ûJ!<‹^ºŒVpüNž¿ôlîá¼jýÜÝ퀙3ž>A òRªé4œã¼VY“´›ß¤þ7`{ Á®z"dÇ¢éޒЮ¿Æô:-¬…‡•ˆ"µ]¡sm|Gt”ÜC.ÊñÑ/æN¬e6^1úH€ù»ƒT²ñÁ¡RÞÀ¼½ÍÃP1}k¦Ó=›¨‘M~â*ô ô\Q£•¬Íó$Mf‘¾ÊCÆg6G?yPP²@„¸„?Ò—-0×´ÑIŒ6+~p^M]æ/ý|ZÜPEb«¡+4I©‘ûÓ PÍWc‘á…ßÐHÍ+ÜÒ ð3Üèlœt»È©ÄêôÖ\hŠ©íý ö”ð#ì ý3x} WÙ9C*-¿ü2Ð><²µ‰ÏF©ŠÁŒzýJ霅-\ü¢r‹§E™@óÍäú5ÃtX¦£˜ü]pÆ~³½= ›~¨¿;ý{¾SÄ0áD(Áv «N¨àa‰Hp™úÀİɀ[<ÖÝ“oÈû\]ÎføÍdz'Ýaß²ƒíÁX­JßÈËÁÖ>58°ò°™8]±KNõÝ.·g­7ÙÒ…~à ­öÜŒ;±‹ù–gªƒ¼\¢ã’™ƒ,9?I?0¼s"-z÷ÁMÅ‚læÓ×ntHЧªEc¶™Ì`†5uUs öÃÖÛ€Ò{ä§3gÌ€ÙÐ!?–&½ŒOm¬ÛðºxW(³zø°¹qHâJ’z5ñµÁåìò¿e>;Ï';ÌÉÅÒÂ"ZĖο_RbR\Ü'òÁf–„·Vðú5t>¡Ü‰LCÇ…>–ÿ8xþÉ[©Ë‡ˆ=|ª¢ÙÍúÝ&Yð"~!z)];¨¶‰?’ï N¡áÈ$K‹„ VŽ_éÏ2ÛŠï®òΟÜñøZ[Äé5…ï–•c¹&Ù±/uÄEK M'ËzaqÆçb+ô~v8c„¨Ž"q>éÚ쌴 ÂÚÔ»÷«¹á(»³R„Lg”†–æÊOE´LaÁ"E4-h)ÚpƒÖ <ûŒ‹*9’©1Ð $u'v¯ü-ò(ÆpY¿}ÙZ¸ª;ØJî5 ðwòMYõ^´R­LÛ i‡cÍŽA¬¢O÷Ð{³¤âªXÊœ™þF²Á,9"ç°±*£·úzß<@»a›ÐG8ˆtµS< SøVû{‹\ùÙeí‡ )2˜£.{9gýµ#¾©H ÐòHOÑŒ]Dý:gv]yzÚ¬ó¬åa zƒy}[áƒõHrJÀgPÜEHQ¬Ÿû©lœ@5Zm«E}˜¦mœšZ¦°DâmR˜ÓJšüXÆŒôü5=iê¨ÓÇÐg'¾TAüEjZ)¥tJÎs6Xø‡ªæb{ÍP¸ÜÏþñWK'@K£×ØÔ#2«Ÿr£÷(fß[N#5æ@]÷[¨Z*¶Ã¢KÌæ8É£ä8Žêåïµ—œÍ¸nøž|ůn?s’£ó‡)æNëÚþðû,þâ|.gy6â<Ïôí‰FýÌ!rÕŽ¼–Àà,åI‰ëKs Gñ;( ÜõCà ¬}bž]¥›Õ&œÕ|øM¬(H‰ö`yÐá´Åý“µê9ŠÞÉŒlV™Íëïp ížôžB2ZÙä¨z lÚ»×I˜DH-æóÅZÄ#rYWdL^Æ0Ê”Ê<¯­î1½¨‰#cïýª™¤J¥1«nÃÆV>Ä'K|ìrðy’U· Ú¹l_NzœL(Øž9/qG?A9¸çů¹KÒyưáë°f1J3 /ð†±BÚx¤Üõp9çUÅmµZ“›ËÅó«NGLÖ¨ÜmÝã´yå—&8Œ:öåÑŒ2,f4Žb o<®m觉¦yV ”šù¡U`ã %ÃÅÙZ2º 1È 7%ݳì,ó^ÚOV2ceX—?$•W´ž1Ë ÙÃv«)™ÖS#¨¼ìjúð4Úµ˜™~"5ê(e¥¾5*ùJÊA@1YYÀe•½è £Þ%k4A~æA:X–,‚$k©§ëdhéOÃþ`ïH·¢ˆ"JCÎZýEúäwzÒ¶Èv$ ñrw™j1]kÛ(Rr-Õ»çöÎÄÔDÂ8ÈŸ©Ðˆ¬åÙÇMT­f¢ óVÓªê1³JË%Pד,ð$Èf+§Qª¸wYùúåÇ"©²Ì}ë/Îe³‰Ës—åÕ‰)©Ú–òÍPtµ¢P%ía‚ÞÇl•±Î°ú¸š/¨“ÉÒaŽ·ê«GpYpeËÞ÷£fìxÈÏ-ÄýÊ“…9\óô š8öË¿ò}wx¼´OÌ‘Yþ‹ }ÙJ¦GÜjÁ²øâ#BUmI]Ÿö(ª2T¤ºÙÞ·ýíw¼QB¨[Ž›à=kxˆ‡½#ðsš…â0>U¤‡Å.þÎó%EžUçÕMo‘Y–Ϧ¾˜Ñ¯ÒF|½ 2lÈN^µàçN.Æñ-aîƒÔQÃü…,G6&;„Æ6û^œ²›Töb 1²Ýu¹kéà×eDˆé/'Tùx.Yžë¢ïá;D›{jh‘cá’ý4-JœQl÷Ðëö;(ÆmJ‰ò‘t-ép€ëòUO¡ÐPœGÐøÛ£­9ÒŒ;s§À‚²ò.­^…Üá›®}õz |÷Dwk›&:l›s†¾ÌùUÙÜI©®P±ÐZW…’l¡!ÞÆñ´^¡ÐHÊ͹ˆ\0Ÿv (Š-K´TêTœ‹ó®òû’tŒíù¶‘ö1£oÓ˜b2SÓm&vJã…Gs,Z–æ§FtgT„V§‰ˆ{›$±»ûvÁhSõD¢ØX°ê/|¶øó sòS8ù½«hlœ!óÆÇÙ õ-áÈFmy8^:_ÈÛEÚëÇØ\¯ ²ãº¢±x•ǽ­ë‡ÆäRèä>R94'û†§ã ƒ’¨ía‹ð~>â:\wKçÆöle›'Ü,¯Ô.*ªçÐdÈ›4í3H@Øf©EÎ?¢‹¯DÏÓ¼²ùéÛ2‹hO Õ;–Âs¯²åL3'¨w–Œå„UŸ(eŸ ‚¤w2Ãþ®Íø„£dG]cCQ|˜þAjîÜÚ GaÍRÕ‘Ëz¡´ìÌbvÌ,ŠÃË@ØôI(¬=þ« Rh¸øˆ'.ÿÞƒŠBP^ż›?@F¢·W ëzϱóÚÐ)ìl{‰—ä‚–,ŠÚ>Dܼà÷ÎbHÿŸˆöE'jÿ_l_9«KkOT§cP]ßAa}Bãzê6÷“þjeƒç^:ð(k (sAŒû`”80FVOd¤ÖÒŸÐ}ɬ>(íLœÒµ¸Ä8&~Ã×\jëJVÓ31‹ ï©Òß5¼Pê|ý‘¯Å· |ލÂ=êòBöøhò -U²†ÕP@¬ÐÓIUÂò{bJ™/‰_C{Œ'êa#“ŒVöú…Á¿ÃZÆ~ã„:6Îy=§lóØ;èá¬7•”ó]ûÑtLìwùuU¬•!¯¯42ÐIjà¨y,ˆAá£xg;n'úˆj¯ójòÑC òU;º\’žvÏj~WYÇ nÆ8·jòK*¨˜LÔŒ®€$¯W÷G”Ë(ËÇËøýÒ#ÑHiMÿn öO6ßúQ™_\€ïü'ÏÏU†ˆYWÅ” ¢Fˆ¹Š[2 í6uÐ “Ƭñ‹ÛÞ Ì)~Ç×nàâ×[-„t KºØ½ÁXEb=ŸWoawµœâ>{Ãsx=Ûoub•oÛpl²œq[‹£UitC‘ºª8„×m…f‘Š#½¦Û?rÕ†Öj`¨¿.Æ`A% cK¥¤Á~\aN¹LRkYC]V½ÅNÈ»žIXö³ÿ¾á~*Ýb €t™.Vů®•ù”€†ªŸô!J)°…~%ÍN…ŸIÇ»xmš÷éÜn>†§™5ÑAS{áfDóÏ賓ìTNcÓX3Ñ‚ÿQ]ïÉŠþÇå‚9ŒNmãqG[ér~ÚˆY^"À§ ¹åUÇù9Ë}˜jŠ¢ží1ÉbrË…nòSåFÉN‡õê§w®‹æ²pÚ”lžjÊ_¯‚ËU¬ ßuœŸ]½uëßo±wÏ“.´¿VPw"·iØd†oÂaÜ'ÔY{h_)bLémdãFJP€›&ÌV–8Eø€ÜŸæ qëÍì)‘·´‡–|%³™Å!^©¾µ3@Cïðb’¼`§AHßÎ’ÿµçÖØ\íCˆêix O°=ÿQf’d™3ñ*G-Kú /«g˜K­.|²âoË‘®Ù¦¯T·fgr¦*Þ¥â96 ¨²s5ÆÄ x}9>|Q #‚ÃfçuG†ŒñùD{;æ×o}&NŸŠ]…õ$wþr›&AyjR‡‹©¨ÞÑ«·= l4DK¸2TàÃ:Ô™¯Ä’m€Å͉ xók ‡kXO¾/ZJÁS/ebç))¹}Ãía1›bFäBt÷7Z²{`ûC~?24¹úz_?‹¬Ü\­¶¬G$Ü<Ë}ªó„´[óØ>Ó£iËáP5å§pJFôÈi2"ur¯Ÿâ^ð˃1¶º.•)Æ‹éÈb’lÛÝ} Ëû„ÙP¡â 29®zˆþó¸Äú£’Œ5ìâ¿X¹dJ‚çEú  ^ö€¢I.¸™Ä¤ZI,zrËæÚÑkÌÞêVžbH8ü3T)éõ6ìkdÇËåÓ»in1”ƒŠXuØŽç†,J«õë—ÛGp˜Ï6þŒ{Θ½zjÄfŠpè,3døDeëÃTIÅçÉ8+ Ôý­2ÅsØ$pñÇ_†ùw!²Èd£Ë¬l>Ëqs/Rïéô°^D«u•b{<3‘3ZOWÊ8¯Ž»ž¹EþfqÒS«ñ›+v»;)mù9—Àˆò.¨—…´~ûãfFŠJ÷Ww–®ßå_"V²)ËDIsÄvÉc“ÑxhÃ5ïc­\R!ÐÖMØéµoŠ)µd¼pšH²Ô•5º¨Núêé½€Ï(@Óíº4‰àû‘’«Aò@êô͸0ß0fŒ{£av»Ô±%ÏÐh‹”Nbå‚5a¬Gh «åRãku¬PJaªÀ^³Ô‰“8G—4ho…†«÷19"M1ÒL÷Á49i×íË/Iîx•Dí­…¶„dºRrE7î­p–y£\ˆWˆvEÉwxPGjjèå耫ëœî‡m sŽwší~6ò°’´¼ï–Êè`VÔÔº4Âó:SB;-òÞŸÛù}z.SR69Û¦aúÄ{RDç篂؇ÕcCbtç?4w{ÙDv|“ ƒ…xŽ"­Zþû$ÍäÌôñ«Ê\ Y°èŽj"VbR뢺À"UkïÔô[9—Û‹i¬É L„´ð óâò ¡Ù¬C5WX¬“qŸ€À•âjEÁÌ®Ù×ë¬3Fgù•‹Ot…b´¤KU>!ɶª³J^OMبLž¨Âz ÇÅHîø´žûÎÊiêeB…¶Èùï?úëÍ“tPå“v|9:“5SÚ˜Ã@.’Iø.]0(.ð'…áx|áôLj/NÒÒý!B…Oq\îáž{Ò /!â&ýý‡ùذFåÕðÝ…‘…‡uß!4¤ ºd\n÷4|_­‡M2«L(o@­K·š¾è¿–ñÈÿNv`Ó×ÉòŠâd<ÌšNý–HPq@Ý n¦y>×8ªî$ñÚÇFˆ¾ûþ[LDùÛ{ÂáÚ÷*r Z7¹¦°&õ®DÂ!í´Ÿ¾5 åáÚ îÇ0’§ecðꑊœmKt*ûƒcKÀî7á0B#W¸1Þg,Ò.…Æá÷j¥CN¬Ñ$ ôˆ_Òëq©*Žmž¸áö¬-õ” 'íäÝjDo˜*Æ5íêŽk0ì»5”§}Ìrµó H“x É.ŒÜÓåä-4A¥XV5Ê©Ý^W^ÄãZ:(ÜÎCrHìÜå««=ÿÁ\÷ Ž0éVaý×¥Ým\:^±áEÑÛ¼]‰DËêä ×eÔ\ÎqAhL^ †TW6ZÄ wò,ím Ë9Ž3ãÁ±l ÝYG&ÔÀðº?f{%ìüQ¤¹‰GSËt8…}íè:¶Þ".ËŠV¨)²|KË#á ]!,;¹j© ³hÆ©á£ý-P%¥'žrcæúºa$kA}¥>Ž Ÿç¦o7¯W?®nW*"eÞÆyDʧJNdõ]ÅŒ' vP0×ܶ-Œ©(Å|íñ¹1f®lr!ìÇWKQLƒž°wÔuöpX²ìÁ¯?EõñÎ;zþ¡6{:.êJþ%Ælüá\eÁ½HJkÝía‘šÜ¢:€$è6;bûšÄ] +‹*†‡îe´ßòš.Ø×?š°¼ä©\ðÎ…¤(´|ì22*±Y»Ä).!’¹ä‚ Øüòi7ùžR±¶$ùydÏoÇ!R¶teï®pLβϱŠSÐó+Ý!ZVÆ úîõ;yàW¤j]FÒt^9Z1—SQ®q…”Ÿ¯2©ÆV|‘h)º }Ì'å.É{ ëõŽEkýkQ¶ˆ…fØ"z‡†ÆNÈ~òç~sø FistŸŠß'ÄR ‰!xÆR¼ø¨É÷ŵ}?ú®À>‰ðëB{Ë0EÿÌûš~Ÿ±–\ª2yf%mKݤ@¦FG=퀜Mtòtû‰feá1›pxç mM-¯Ë¶«Ìo?¾SE ½B`yj‰xºœøjɨS†;‚ÒÃT¢ª±†pyÊßlq¯Ú™^ñyäF˜jüÌJŠ}Þ¶:؉•=gyn5feSf¾Ž'ŸâN;'6(¯Ì¬Ë¹8ãNLlh<À,y­Lí³òQY±ñe’Y2b͵g*P¿4þºP_±w0©o(!¬ ›÷{œðMÜ‹¶¿Q¬Š.¸a ®/’Ûl3/Q»ây©Wqâœ/H»=¸•M@ÔNJÿÄu£…ÁFQ]+%¿šw0Ô Œ÷ ~ÙÕÜܼâÆZfÀbš+2™k® ®šeÔ½.ÚÒÏcŸ‚ î{ö‘Åå·Î\Š®–͇QZ—_ý66ïÉué]ô$sý=”.gÛñžöz€ ëEn0d+ká¹·hŒº?AÏ'0ïvß¾âå —ˆ™}¦Ìêuuª›/JCëˆlÚ¸ƒ£mIÓDÙF˜ÑÒz5jkÂи"qZ¡Ê$ ýI¸Àë݈&¡E’Eš)çæD“.—Ï‹¦ï –fÌ0†,=ÂI|jËŒùÎåœ*G\2‰-¼“wÕ ”Ö×l·Ðû¶¬¨ñ/z÷wŸV>úcx¤|­ã: _ï>¶to&l¤7p°vt¦©„,ù>àhþCñ‡Â*ÞLê÷ô]®îÑ, #ݯž\ܘ é£êJ{½V+( ÿÍ5…pLr¦:º[5¶ß¾fÞ»U.ç;J˜»‘–êúò ›±‹ Ðý{à€*ªZP{JôÇ–¶tüÿ'™fûmró[³¿zV${s…b ö|mSƒWÑ@~-.ì>;¾¹0Õ.”Áá…ñ׸@’<ÒÊA{ŠÉú ©ñ~ý5¡+"N³>¯ÑÛŸ˜3ZÈçÑ¥èD½EqÑÔ¬þ^!¹K-eÆB8ƒ±kDÑ%­:|GBÊ)×%©2‰QU cñ§ 9,dDO_KÇÉ•7žígæ1“9ïտ׏¨wq¨; Q£í‘Ë@íœx{wÍ êE ¢àXžø^Xq5ØžöÞd½’Ibç³´qL8ÒŃVmv2‘ s ¢E"b£Ëž¥]Q{Τ‘ޏcbr;Wû&‘ÍQ^{7*ÒË:È¿0¤þ“aÅ0Á^û8éèÉP+ßòþsþþ¤Œ×RIÛ¶›ëi¼]Årëw%–ÁF²ûôdUudÁ«Üç¨MÁä£0³€YDPˆ®-^@FÎ+ª¥Àzýû2Q”L @o®·ÛvÚsಮúñÐdŠazËr —ø²V¡:Ç€Ô1²ö’¬Þu¦‰z}¼|€„ZÙqçê ·h+÷“¤“|üžš!Óa–IR<Ì‚ÉAúoÖ¾h`jÊ: +R% Vžq¯ºu\ZbýéÓ l‰ëw âÏŠiþäÿá÷ð´#O»¶ü28î–r['È3ï&iŽêèИLlkä.YðÒèÔd¨+QkIþ\ÙA,|Ðh•mˆñÙš$7`¾+h@êDÏ<š¨·‹âý·ò†4íS ï®}º?ÜHFÐjW} a¢Ÿ߆?z’ëtÒÑ!!USO´K6 ›¦„økLYs†TÐÌ)âÉVvž…7ÅÚ#r~G’H·¯€K!¯Ö“ Nµ¶å,h@ã ¬¥þ±à½¸g)2Uèu*§©z}Bà â6Õš~tåŸx ¿ÊF [Ÿæ–ßùMLF¡Ä™ãx®K؈øXfÌç9£Ôí»1‹^æVhXïHô‘ªµöÚÿá>[•)±®&5ƒ¨ùÊ1æX®«¤„K£¥ýÔ/ÇQN÷`ªBéû­.ÄR•ºÙ&Ø„ð{9ßS JÔ `:‡bBàIß8þ|ï¬7™¨Äà u¶È ½sÙ8…ÑHÚ‹¶{œáÐ×YÀn˜™KÔô·¦ ʯ>&{ÕS÷Tyï9¾7q Zä_Ršâ¢…‘žH4àJm…iø”P Y":ê1õsP4í æ@Û¿M:o;Íp1-.gNšGõìÁeD:ÁȬܟzXü:½ˆªtiÿc6Ý\A2ËÔß—,¦ºl¹—ñX°‘áíºØºnÇb6°àÔÚœ.ÊÄ +½Šã6Q‡ áÝ’ÕYòl§¬¦¡yµùïÿ¸dï,JëŠ;¨i¿H9_@æ„è§æþQÐkQ|¿ ;GNžf§#±¡˜MÊ?;ä´Ñ#AõMGéêÕCÉÞ¢ÃÕP@Yà†4 ï3«ZÇè ¯À®}=ÎKðL;6Å^ˆý ʼnùK½HCE‰²¹á©4y@Ë endstream endobj 105 0 obj << /Length1 2641 /Length2 18416 /Length3 0 /Length 19950 /Filter /FlateDecode >> stream xÚŒ·PÚ-ŠCÐàlpwwww `‚ÃàîNpww×àî œA þ&çœ{’{ÿ¯z¯¨‚Y-«»wwï=P“«i2‹[8˜eìÁÌì,lIe--v6' 25µl ü™Zèìr°øÃBÒh †È¤LÁCe{€‚«-€ÀÎ#ÀÎ+ÀÆà`cãÿ¡ƒ³@ÊÔ dPf(8Ø]©%=AVÖ`Hœÿ|ЙÓØùùy™þrˆÛAæ¦öeS°5ÐÑÜÔ é`‚=ÿ‹‚NÈ v`euwwg1µsaqp¶¡g¸ƒÀÖ   ÐÙ høU2@ÅÔøOi,ÈÔ-kËß MK°»©3Ø‚Ìö.W{  3 )¯PuÚÿm¬ô·àŸÃ°³°ÿK÷÷/"ý_Φæævަöž {+€%ÈP•Qb{€™¦ö¿ Mm] þ¦n¦ [S3ˆÁ_©›dÄÕ¦ ÿ©ÏÅÜävaqÙþª‘õ 䘥í-$ìì€ö`ä_ùIœæs÷dý§¹6öîöÞÿA– { Ë_eX¸:²jÛƒœ\òRÿØ@DÈ¿eV@0€›“t=Ì­YÐòtþ¥dÿ%†Ôàëíèà°„”ôY!½]LÝ€°³+Ð×ûOÅ#dvv€È 0Z쑳CÄ@Ë¿1¤ÿÎ €!düØl¿~þýd™0 {[Ïßæµ˜UAYCß@•ñŸ’ÿUJH8x¼™¹ÌœœnN^?À÷¿YÔLAÿdñ‡§¼½¥€ÿïd!§ôŸ„Ýþ™ºÖƒðß\*¹è~ùk6n6sÈ/öÿçaÿËåÿoƱü_Çü3’qµµýKO÷·ÁÿGoj²õüÇ2·®`È(;@6ÁþMu/®2Ðäj÷¿Zy°)dÄí­lÿ=H‹ Èh¡›[ÿ5‹µí™-Ȩæàúu³˜ÙÙØþGY.sÈíáÉ¿T@ÈîüwDi{s‹_KÆÁÍ0uv6õDfƒL77À›²@¿†ÀÊb Õù,œ‘µ”‡À*þKô7â°JüF¼VÉ߈À*õñX¥ÿE¼lV™ßˆÀ*ûqXå#§òoáTù œªÿ">§ÚoáTÿ8¬¿€Uë7‚DÐýñCéo±4u1ÌAÎæ®vÿʹ8~É!M¹Øü6†$göALÌLÍm\lM]¬ÿ•²s@ª3s65Ú-Áˆ¹ÿÿ=ÿÿ’°ÿ-¶‚ÿËžŸó_ùÿ8@ŽÄü_Ä ÉÈÜÁ2+ÿ&ÎõKbg÷»Ä_CÄjñ„„þf€4ø_x~é\!›÷ ä’`…LŒ­©Ý,ê-³@,,AnÐþR;¸:ÿá1±ú¢·úõ0ÿ4äþû$¹ 'fíéh ´ÿÃ"ý!½´ùBNãwÖ<²mmÊo=äìþ(r%²þææ†pÙC6ìwÕXö®vf¿î6«?r€\Ö¬¿³„p:üáÅΩÌñ·Ãò¢ÚÿWw¹Øÿ‘þwo!1«#ÐòrþaÊó— äð»ƒ\“t´uý£0È·V§ß…ÿB®@—¿î¹¹~ À@ 3Û?!Ò?À)ù7-7¤4 è¿Œû— Ðí®pCH\ oÓ¿ùAÊøŸ¥`‡Tñ»&È­Ï ¶vþ1.c»;üáápý=ô˜} q1wpþó¬! wûBvÿcå ¤@HTÏ? ¤O^¿s†0yÿÎà¿îSsWgH£À=yËö?ø¯o0@ ÐyyÑÁ\0ämcȇŸõâDîÌ»SÂsÔ»ºéôÌÞËÎ]ïÐSè벃6œ¯ÅSFû^®îHÓ]‰­=zu4#†¿ORï¼÷yx“ 1»Û‰¼4ƒ74]|$Þ4Hò‚˜YKlÏçÑÉG'жº[:ßÉ•]­û§û€¬GÓ`å—‰°Å]õ½:E”‡ÊO̱Ú1¯Ëæ© Ìr(ÀÌ$H XgóW×sXyÓÏd ŒÈ¾Ç±œ%Þ›q· ^kÕZ.=„T„$°WX³4ÞßRð?{——ÆlÎe£gÚ˜$óï&?0T’ÇÂg³u^æ— òílb ÔëG}‘½«iâÈÐèx„þ™€ÑÒÝ]F¶Pµ½tÀxo$üÅM„3£…²Û;DOï½­e¸+ý£+Å£“ÆiC¯1CËíÈÛ¸«mkRáN¾8ÊÄ—{|=>Åo³*¨¼ûßN;Îyìyh~ª’>uEGF,NÉÀx‰]œÙÊK=špÕ€ÍõúE§Ô‹×½ô†£„+2Ú_XœÎ÷ž¸N & Òùï½Ü݉[ëÊŽAãPñ·â‚ðÁ$h<"éÉÃñ)šüXy”>®o 7×h1_R1¬m,Û"T k²©ñ$FÇ.êdúD­42+šŒ"'ã…4çÔ‚Ú{ž1ÞU—_UnN÷'-ÕSú¥OÌõ,yŽyŒÔÅ4†7 êÒH&Ì@eÑ`µì¾_¤à'î Uó½õíJØèîŸ5½Z|Ëòæq*6e\ެeÍ~/Öøðçû»Ñ9å¶9»ö¼=ýÚ4œ ‘ãU4ç]ìêxGKo6©±ªý¼ƒA£CÖº.kŸé–Ÿeâpë£õŠó°vÙ¶×Æ«4º«øÑkÃÞ¤m…gv2¯Ö¾W‘ä4§u­,dŒrÆË(úÉã…•ðŠáiñН*ß«ª¡G±Æ­ÅÇÈ1‚Âôr}æâì½Ô×»’þìZEö¡ˆ{¸ÓñK¼„ü‡Ò­‚(MÞCE>¯£úÇX.6sh¹Œù®3WÃc4wýý©™¹»9 Á3ŸFÇRWŠbš³E­/3¢ÚͲ·ž–I`¨-†JL¢¨j¡¨¡Y‘/)‚òÏ+èã*|´g¿UÅXâ#ÜVaKµƒ¾œ·Hë+Ë®ÎÊæžüñÁŸ‘¨µøô-o/õHì9 o{“žz6b\‹jÆ)â•öêŒÌAÃM|{2Xz:èSÛZ¡Úla>;aQ£Œ±†h*sNJÎE_©^¢q6ù} »•ûÍ>GOki~^;g·XÕöëz^¯/¦^‡³ìÄô‘m,›g?£¥=‚ôißTÞrGȘû Û¿íâØþ¸€°hŽó-Þ5öáçÄ7γ©çóñY¢í&Žé©ž=_Ò™š‰…r‡¹Ø÷ 'ØÆpÁ½i§¥y(GËÏ´)ñ5aèЪ޳2é‘ý¦[Yº#÷?§¹×²‹ÕìÄçGóu>y­%f™ã‘…˜pk¡#穹!Ó¼ª¯ßé=¬N0ºÑÐȪ”,‘„3®ã~ä§¼?Ùb–8¢Ú_¦?Kl(£Ó¥Ýc‚ ‡z’”­D%dvNœÐ*KYÀÓÀa„H0ÙäÀ–ïÓ¼ôŸª’¦Èr=ï\Öß¼«0ù.‚9klB ÕL—R3G‹`—qG‚¢H‹¡¸=‡F+’‡™-½©¦Â$ üÍ;J“S–C]ŒçuÞ¦(óÙ‚1ž^,mÀ—oWþ2x,NÖéýð7úDy÷¶A¦•åîË*µÚŽ“e&55—Û™Êü _ßà(X}2s'ßNCøà28¦õ)ªFªÖ,hT@׉ÜÈ4TàÞ™dòü­¸1†v·ÏdÓÚ¡UKë|•½\$Ðökk!æÇÉÄ‹¸›þ|¬µëÅÀô€ëÏkÚrRLj t:a¸*}ö޽ëªÈ|íîÙêrÖcÕ;x-djšcbï:ÅAÉcФ"a·‡Ü 3¶Û¶ôÃ<—ÇnÒˆÝwùËï¢2˜.sË,¶m¹iÍÆÍÖœ˜Rå®YªIõßø·^¨¨Øß È^À#:¹N’¶ 7,*'Ãt]öZÝÌ[°Â° :œø1 |LÅÚzß…1Ö Äqü9Þ‚Ì~Úè뀠uL—úÝ[üÕŒ‹ò‰‰(5·eÜ—ð¥ÖE6V¹ñ§•2ºûön·”ø1Ç)똥Þü©žÄòó0m¾€é…$¯‚ýõ.¥0Ѧ€;˜$üRÅhÁÚ«»Ýgê ½ä+8ª¥p|³Q~Çfc‹L‰)ÒE :hCf-†.òìØYO}(Zå–G:X”¤º“1eì*5qÊ!Ë„- Kâ 8QàMÚ“^M¢F×€ôðŠQ9‡RÀaØ깨5=Í.«„éKËàëÔ$rü÷l-gà—mÊBƒÑ°zlÐ^Ù7¨x¨pÛ|ïu…6Øßî‚¶yyö©º¸€ÐõÍM€ý ¥]&·©-WõokÂç¾$-ÒÍãåt;šcã“l,IÝuqìëô(÷xÑÁ”?Æä&;ÔŒð±>޶œwài@w?¥<|Ky/Ë”L1"š•“x½c&‘7=5òð™Ïgõ‹ìtîúÚ÷ׂïåP‘퇶Ì9"6ê<Èô¦pòÙÉE6q·0;Rw_â)Iû7ñD©;foR¬B¢4»†^™yÀI¨P_À؆5}ÚÔ1*ì[æ»P¤cÕ·+/×âx1³àу/@ÍæCk&Î_°hœ{ö‰ÑÐå°Þ¾[éx#‚‰ˆÆ®y¨i E°«OujB_ÜWs5;@ðY> ï´;Óå§–ÑŒŒ|­–ÇYÖ[+³\¹$ $:äÞíïUÙÄ,130iÔÅŽNÝ•—"xþÕ"Æ^L+ÞÆ‰“æFÎYÛ<µma-W#ëÕ`¹$­UÉÇéÏ€UÁ§í@#¾[*Ïö6‰%g´oaËžÖj*Z€ÌÏA_†«`ê[†ht¬»Ê;°…K!^–$´Š—ykgfÙ}·¬ß¤ÿR_{.pÈM2oQEŒµcdæâEÛ="°;mª+Þ\™!ÂEÀˆüSÊíº!¬@ªuqW“$ ÍW®¿Õ†gߎ=3íýÐÀˆñáçR.øù“¯ÚÃq2x·°LÁ£)…ïóÈœñ—-ü×Þc&®kφ¸Dd-e—Ôœ½ïByû^/8Û…©(µ>EO_d<æËÔØT7¢4Á_t©¾íNûøªvce±QøjaÆ¥ByA'-š¾ògzêÞMÄJ…s}óñ,¾æãöÞG J%vÏõÜ4kæTìÐæ½"òò&ì82k)™3·Q3Cò „ZBf+hèëÿY:éE´#?WC‚¦Ü­QI5ÇTBT~ÌšÿMªøx;F:¯·)cøAù…»öMö1WÚÒÊSö&¨4\ßd£ƒ¸d¤Ïët©œPÌЖã÷ž¨Çkõ½Ðºg öžäŒXXš~QQž”Ñûñ ;ל°)ž{_ÕBi-³Ì…¿LÌ7œQ:…ͧ„ùÍD\ïHðŠgZ϶ÐÑÑ*ÂÒât{iºq;|t ènCgä”^ŒŠí…OñZ¨öí…8éF‡™&\Ö­Öàç ¸àS#º‘2P( M ¦{|Þ~˯"ÿ>}ˆ;Öza ƒùuRÔíW%R³yÜ^¦:+U{Z>Üч‘ÊšZrüWÒóa´‚$O¡ìx€ð°ì1Z¦CÛ}âò¹êkÞ[Š‚)³­Ob©êDÉîŽSo³p“¬õØoši¯Êgà›K0„¦é¾ÿð¿ëå–íA ò½|o:eŒBDöæ…E£m•…7)ˆ§þ›³Žê¼Â0$èxK„Ôý¼ Jëà +Ö Î‚z•Ù“¡9mÑ +ÉSõÀ*JGd_}yDEàÛÁ¦®¹ñôïjdˆj6 ¡]-èݤâx´Í#“ð”jD¢ÚP¦íÄ»k-o†×lZ(“¤Ô#+»ù*ù¨¢ðlÉiŽ„Ï'OJgÍÉzÍ h+ë·Rɦ*»"¦Xθ>'-ˆÞZtU¦õ&ï»Õqã4Á¾ÏæâHYj0¶™ «`ž]ª¾è%ð‘?¡ªÜKA}¼"M󳯮Ù¾­Ê þÒ;3ì·£á80î]ß –Á³mp–¼é¶ë†eý¶á¯~~Ùäjy¹]ˆ|N+ÿB®°s[tÛémåy=òXÜQæ\#cnk8Öð,ÉŒsávgÜL²$ÿ¢3¼O?¯s#ÖÙ[jð ç§V¡uº*+Yã¾æ&¿:µãÅíõyBüÞMý;ýP©ñ$ŠŸíÉT8¢–m¼¤i+™¾˜‰zã_¾Eìs>dÓn3j…}x¯üò<~òËt%."Œ%Rp\‘'¾§'ƒv¬¡ùUÀ˜„$‰¡üA® ó=—ɯ îÈæ>­½8ðT’#†³¤ ¨ÏÀ³`”O7P÷›]C‚¯8}ļd¶ô¹®u—4‰åÆÒ¶Êrèýžq¨³ËÌ »1UEûÏqó4ÜÃ7:†¥k¸‹D)ruw}jåyNca’õ`h_[D}S¼½tñåˆ!ôV§w¥pFÔÛŒÃqºÆh`qÂhe9q'˜ùúÝ% pÜ÷ðš‰û†æe¼*QÒ›WåÙ¿g}I c"@6=þ¦¹»9¡œô=4î9ŸUŒ<4Õ•,SÊ󄲉§¯ìai6þ˜(½yâ*üúÔÌgÞ-Er>‰±q¶Ð£,«¨0W¤Óx- ®nÈŠm!š¢“lB•$.”s¤a¶¿'£ éEX˜ÑŒý†7Û_£wm ÙÉv¸ÅzZ±ñ‹”5S²”ž¼®NUË·¢jº`ŽJÈkµÅ,Ì»]`-¿µ½Ðè´q³¥ò©Ý³99ž}DV÷€šuvØ‘»ShÊpó:ßÏ >F,Ÿs½3)žV˜Ý¤¿­Ò¡­3õ8Ã%EícØšÄ{1\Ýé­¼+)yYY›|Åö‰Â9“È%kJS²vF¸ï“çê½áüý¼±9s);U=·Ròº2&¦<³ÈÞB²ü){¸e6–ÿ)M†ü;ØPÊÀô UÜF«9C§&4cy ®½E˜²ï´†¾k†™l[P[æ¾¹è+en‡‡5œ¯ÄåyMÁŸ,óÃ`ýð7NdûDæ–ZŽ&#˜ò^æW§ïXÙŒÁHóa·‰Â¦ç-™˜F¨°š8"”aìOmpp€`ËïÀã/èX Äv|%K7 ŒLyvô®ÐBtÛ™`>HFGAA©â]GªGê›”ï›(¼‘¨Û$µ.›w:?ÀæC%e¹˜&êfèVR¾©þ¾ŸeÖ\ª¬H˜fêmæ ˜%¿g?«âÐNä¾`ErÁ™Ø»ë“ ÑåD"ŠyVE{W±­y·è ¿¨ózñ‹hQËj$:Öð͆AË›ã·aĵEOÉÜÅuå´*|îÊÔˆŒÒn1ÈQc!°ís•ß+ü·’LK=ð§õQãLšìPo¦†€±ß¿WP˜¹l‚œD˜^Ø‘ô—gqîõÅg&èJ¬†–îKq?„©Ž5nÛžóZžV«ïàëòha·ÌßVr–Yr «$¶pJJÆ ª¾s£òÇiåîž7Mœ#ñƹ»SïŒj½¦ñUÚ³wÍ)õ'(áú’§c8±ÉÈRø&Ôì°œ |]Ï~ÈÒê;º8<×k>ûPçýµJH(Ëíøfµ}oÂkñ2\èeê<["^Jg=2l#cÔã+] ð×]½}e—•‹ZIÞB[ ×ÃÙá3@$dè 8ýZw™Oxd¿fœáò~T Ï8MÙ»Ÿ_:i° g–f‚ovMb,´¢KyÔ¤ëòåg¢oßËÀ=?£iñÇYòRÔËä3ê§OÃ?ëÝû–‰ÑŽ#ŽúÇ›˜–ºÕwbšuû«£+¡Çóà㫤pHkÑñ‰À±èßûaš&"%â²êÛ¤Þì¡ñ›½@# aŠr¯p«©ßd›|Ðy½kڲ̕§…Ë(ËXþãYæ«ìå$Ór殑…W¾Ÿi {Ö^–äìÈΩ‚vÍŠ ë Ú•ªB膾ãÁ$›ðn<ÃaeJy¾Ò‹Dúr!òÞUtå×Ì„¯qMvÕ3…qDš85hçDQÍ;oJªŠ ÖÜŽ)/>ŠÀÝÉÿ¨ŒÒ©™ )¹jIæÕÜê¹^ ¶®QÍ©“\G•K#ä«JúR U6"öÃt^n[CŸè#Y®oa­µ .ÿ®|ZYÉSľËU€&gˆ†}ßT޵PÚÙ6»”ãG?‹cÏVs¿/ä}òw÷ÛQŽëZjxÊÃÉ( <$®ôï_;$,â)¸yDî„6 6}›‚¥á:e‡•Æé’Öïn¾Å§_7’ŒÂ¾N ÊCd=ö o`&ò+' #—Xû´›}ª´kÔ]K -{]-¼ej¹ûHéöEÿ£ŠÚ|s‰°$ú4þð²¬-œDXj ­) KŒ¼¯Tô+ó±?N JË ®ÑÕV[ÝRâ™°Î#ÏJ’YXúhk!iœ w:$%'¿¿õ¨îýñWÆx]Dà÷4ü#<Ž eX¹|ENËrqFj£‰}?½Wr“)PøTA²j{áüTe«š®©eNqÌ>¼——‘T¬Ú—€­†5Nì·`$6ΑJ5BúéÇ5å÷’A¼¦FÅë~ [ìŸÒŒ…c0%Åð?JçMGzÁ?ÇÐ÷*½LfÉ!¡Ž¨‚ú0ŠÞÙÐj_ñ\mÈ}àÂ:Ûô<Îï”,CXÆ/â%)ïÿ*#ˆ¾îsY²°ÜžC½nצÒ‰…"$zf/-¯fƒ6æk¤žÊÉ>»(ùœÊ±Â¿`Åù ÍËöœå×{~õÃVx¦È'rÕÄBrŒ¾d<ºw8ÕAFwÑÝ.¾p¶4Z],ƒÀ}å¦z k&F0¹"äCs0[ ë>†Z‚ås¹`VµqÜØed%ö[§X†L‰Òi1ê4npi©âú+ü 3/Ëã ò7²,¦uD]'jq~°óYÕe4·S4Ÿd1(ÕzÍýíK:@¥C3´ø×&Ç4Œ¦‰>Ê7Þß§k¾‹‡.ÌN¿™çV®‹óLùIú…ˆGÅüžV°GFÔØóEN~ÉúɤöÍUQyÑÌ5Ïä^âùŒ¢1˜F&AëãÀÏ×T¯áõá^'láx¸ˆal’¾¿^ø–ÃDfúìß19òÍ­ÓO<Cƒ‚¿Ju¤êà¶ æÃîäFq÷ñ‚œ*ökdóùЇÑð2“BÊ4O6ÎDÛ0¸,ºaQÌdà·Ò†isxM81–¡ܧ¢£Hz‡Üþƒ2#Jk±2ž–›b_Ò¬³ª€:ÍÌ éjbé\}­ÉœÖÎqYÇ­: 5C˜žªýD¬”ùwݼ Ö¬ UåG—´Îw“ðø#f´‰ÚªLsÙ“ˆñg^{_&9šs:ÌOûl¤éâ=ÒÚY…ÎÔ~Hvr­#_ "†”ËÁ‹ˆ5Àq¦LS\Å•‰±\—µ^€Ÿ%ol½ÈHPYx}Q·©ßÙ|P ³A/òWIóf[º[Ðö8Ž,L|© t°Á[êIp„ËGË¢üäÑá+¡Úi°± ¨Ê¡£ªsPOy8#‚‘ 3S,¹»Jä·~Âè¦juçìS`áy[º+]³mÙ˜V^©\Qu‰6ûÃ΄É{õYÜR`®8˜T¸k)“¨xæNVú¦YŠwìð3ð»Ð%TiòÍ8Æ^r•Ü­qá ŽÁLj«.îšyê>J·ß¡:ŽžB\\S°`à‡O *é=gñy‚”J ¥UÉðQå3¬ü}Jj•–fjç³e\g¸Ç}ß|›Ûµ‘cÎç4¬»×Ý÷6Ã1>ÏÉŽ•.è yö8!¬¡>á»àð<ŠÀz<'YxMñT#Y¥ûtÑ’a®šáæ§u0b7étùB[{Òt+d#í:mA¼˜Ý…:U­‡Zc<Û•Åîd?«´ÿÎÅ^3¦úS|2Î$טOŸº5}תX†šïýå‹jÏŽïc Ì-¹J}Ü®±p5™J]æËJYã²o×BS=x=Eè² ‡«bFU1»7³ó(^Ñf|{i°d¿'Ýsƒ^yû³ß—}ùmÈ~%¶JOIÿAQª<›Ê¶swß_”÷ÒÜ;#I ÜÂÝ<ŽÑúÁDjûQ {ß»ö‹(TÉ›¦ÙÏ£yy·³ÙùK­ÛÈ™4TM&ÇÃÉöûg·„P×ûõò ÜD¼È8º*iF ߈cuõ}ªLÄ×'âqxš6lŸF¢M­ßg&^^ s·™âQÌ8ÖÆ‘'YÑ·†®p%œÍ0sÙŽ´Yª²§c-Ÿúé—^¹Ò!oTþ lÂø…O-îå% {ä¾»¨Œ¦ŸSeƒ©oˆ´k›Ê‹¥KM:›­Ü"DëìðòÃù³/eo@JÜû—± ?zê¡Ú}ôyÛq· uÑŽOO¶Ì˜.WîGŠMÅïò•¼²Ï8Ê[•Jß!‰• ~ú—î×R¸^Å»ò’à;g¹²[h,°Ékr»5fß°ì`õ5Á«Sèª"óÇüB1£eDGt—á€òaIj'GSƒRÍu¦.´rÑ©Md7Fn‹\)Km!e7M6ßnÄž‘ùú»xâ­“æ&¼÷J´tC d îXͧ 0Ÿþš ‹¹G¯Fp?ïîg½T«ù÷V3Œp„%¿™w¹ÜÅ<Ïùh—'?([K&J¾|?ënÍ«´|¯iúViÅÌ«¤éýý·]àgËaìœiÑ>b[í¦ñÀ%òS.nMOl±Ô†ó0ï|ŒpB[ái™fµXßC Ÿ‰“N³|‰Ña¡B¶f'(*æ¾S‚ü³Î2ÅñrvŽùQüxk2¤‰žÛú”ÔÁ°LÞ,E¦£Ï²†‘.ÓìÈȦy¼AÆ‘ûÕW®¤Á¯Pß Kë0»È "h«%çi™ŽBAƒæ…54¥ò'i9¡NQmb~{ºS|Zx{Æ•ä8'3Ãþ_¡]·Þ×kª¾£¢Û‚ýÂÀeɧA~V-ñøœ>¼›BRҕع«}ñIÒˆ$c™€8lÕ¿³b†£¸)‚sÁùikN׿Ó*¡[9üø«MJ2€Ë1MkBÒ²&Þøë ½rѱí‹Z@Ú7Š˜ëO£x)i5·À ¬SܽË"?_$R £lxýš ˜® …Åiì29ÑCBé2ßÛ±þT°E¢U[Ô¾î-^)žjGïB}@ìãù©¼˜2KmÊ–yì¶#qšoµÙÍ2\¯,{$l-ô:›§Y²Ïç!meÒÛHkÛ”í)èñzýÐgR2¥f…}•Ãö½§CIAÏ­æØ ‹ÃÀØçy¹6%º+L%Ãuofuâms?º¨€¦4ù©|öò¸µ_–”.MFÒºÌ3(_×LDÇ* †OIæÄQ'c¾®êÛz"‰2(&°<¶%]l .¦•‘×ßoýVj/›é¨(I\u+€í&hÕ^‡Öä°Ô1ȳOÄþÈþ²_ s>§ö0_ÃAYÖ1j#晹ºšüçë(× L¾’H1Tà‹”«Œ”KŸ„¾[GYh‹¯»ÈqiTCŸ˜S1]Ù>~ˆË³s[‘Š™y)Ü#ªgjÓÜ„·\^–aä½ô¹{4À$ŒÖ •)']î\ ˜-wˆ›8l/Í·‚½ûþ:yëºNþty/,áBÁ(É-ïGvy]ÞÜ»°Š =%ÿyùª-†4Õª¦å¯ùâ×û—Ksyâ,:UÉ‘˜døG )Dàé=õ,Ш`³±/ûFꨠæ‚È[|0ÙÞ¨šÉº”`öU¼¨¨7$¡&Õ4 ”Tsë`ijÞ9î˜}ë¹Ë†~†6 cl†.ã’OmÎ,f~Ô±¨Lìá2ÝèuÔ§'¿—‘<[vª’ty±Y Ó‡r‹¿Qð·7§ñÜfÏm—&€—6a¦«| Ä{|>iе4Ä>ªjôнv“§(½2é2:×sÂLXÐ '”3úYž¤Hh9Ì })†«ŽŽE{ü4· ¿­Ì‹k5ŠãÃS÷<ëÁÜS ]¿ñ[ôÓhJ:¨~c*ìB]>ïžnL¡ô2UϤ¼Â´=R+ R¼‘tûWŽ@‰ h~$©*õ¼ã/jlOvÈ; zƒÊQmzèÌ(äH8;T»òˆÖÐÚƒå»ðì&åT»âUgízÒ%·gYéYe3üCÙi•Þórƹ®‡2L?Ë¡t¦OúSî‹–‹Ž VÆ °¨Lä“cü«$8Ïàðrè.d ÔC³™ ó•Ù\8V_ûï­äÄñá6jvCbL¢¹FòôZ:âûËmÎO˜. Sl™Xòš­ïóȪ8Y”¯¶ì _¾Þf&avßlQóW³4_®)ã £ÑWK¾ýÁñu±çŒ®@ 9µc“P³ËTšC‘ýR°| ‘®»¨àú iÎn‡#诉ožõ>‡P•¦Å"ôÈd_¼Ò·<Ø F˜`äÇ2‚| ³ƒà–*Òù}ÀB2qM•8TjTÖè¥QYNr¶í¬ôîOŸ4^mÒöšcÊT:Ã4ú44‚l«‡m‰nþ÷k8"˜(úbï)M{éç7ë¿S}@çioÅ|„iÔDvÝ›«aìÑnhõ+óX‡iq}úxîAü^Á£€£us'u…7\ãÁË•èhò-³*4䵊{Ô. †m[–kÙ눪Úw§š:>É­~é­G˜ÞÍs>g„…‹P¹IDÖ£dcàwQÕÐD­Õs’bÈ`G¬Ú˜ü)¦Ùú8ðᮊ¢ÚDúHÿ*Jè,Úƒ€} i_…¨C'¶ÊF{\?ào_p{ø¼âWõúU7:äê Å<šiR‚æºidGÉW mQ›\ëÔ“LT¸QÔUEL‘ЉÉÝ—á7"i~d3‡-Fa¹5 ?Ê)\'âCzÄÕxÚ Ý‡îœ8:¸‰©ŒŸF>û'P¦ËTGš46;<²1gÈ4æ$ýÞdŒ#ȺÊ/nbÐÎ3ã)¼²®úS,Ó𞀃W„7ñyû˜ú>’é2ËÝÒ±÷Ç ‚M wßàïYw'•kÔŽàú¾hì£<_›IoŽ!:†ÇO¸õ„ïG¨í&è¡ìòUX©Ÿ Ú9ž}ë_c”Q±9PgW>¤ëÙ$x¼ ~Žκ{» V²Ž¦Îæ)²ßöòëCßœtqÖR1ÕsêRª²©“ϵÓq©Ðð]Ú¥nà;œIÀç «ª \/ãÞGzv )-#Ðä†í²æ—ΠпfŸÐ±#úì£h6÷Òˆé«!‰›!į¦Ü“®qÕì­ f%k<*VªsªÝc’c&`èâJ½„o ÷`ìü$ã™ëþ¼·‡4èÜÆÇ÷ÖjaÓ….ëbg/ƒ÷±yx×Sr ¦¦I†í‹ÆÜæFDP-UcmF§d Këcy¼”2ºßÉ“wkÆóÛlSÉŒ‚ûîïܦ1«6à7Ó¾»i(^³Â“…ì£*gQ÷ÍG÷݉5û]Ň9Y×o^Š¥3rWb¥a,QHMðÙ;Ì-¡¦‡«; ­ó‚U˜Ñ,¥è‰Uí.}åÛ\êXkH¢Š£-ƲhÙ­¹ÍÅV᎕ѹ‰H Š"kNX•XÔÑ:A$Y¯ƒѰ³Òq”†Q¥XŒ„‡Ø¿ë“h’ŸÖÌõKÉÄ[(Š«ŒxP›Hya Á_§eé<ï§Ü™”ÑzNJ^qsŒ§óc¬!]—4@¹$¯¤]Ú‰5гH÷³‹Ææ¾¹èôJêTÝÖÿFω]ÚкKq½F#æÀÚ'±ù³OÿÓ’E@q^ô<|üít‘Y N £>JFåš^×~RB×W­ïB9ZâA¼rÜ@Q2/Åw½ ç‰Í<2þPÏSm˜‚©=:”»ªW‡[«h¹¦‘qÙnÊÆš ''Ð Âw‚ãü’â .7 à’Øñ‡íi¸í/åUU.”ÂU`Ïjò£V‘þOlZaÑM³õ°â¶ì"BwÌàŸÈ³Š 1®»FŒg<*]¥˜-o]XL®hËܸ-Ãq˯Ýzèª4àï«k–òû>ÑeÝ@#’äeâÎ×Ç`“´õÞºùD9WÇÛÇ—ù,øeÒ«ËrêÔÖ \eXDKåFž)uRÆ<$àBò‰¹ùO–°`Ï_Yè1‚*¡‰‰C„å]Á†ÊÒlwøÊÏѹ¡|ÝWÓÄd´„YŸŠœs¨åüâXp3ܶKxûB}¬ûyëò‡õª]Ð¥õÏÍ‚3vßö'd€»'Êç¥åŠÁH˜Ï\<^¤Œ$,]>#·ÜXú Ò‡=ݲì†ÙWWbàßC0t§¡Q( ¼YLbïq;¥íw#”ê°ó§Ð%$~ÀÞ·}L=_]s³NNfo]ÑK"×!,“—¸œ¯ŸÖڇ勫-tiQiL { 9Î+gS…àN–8¦xDo¦=ÌÏ›_â¨O­#‚w+áz·{4»¾½T÷´­£ß…~·.8'ûö”òUí÷Mãú}ATc†¾D<å膯£¶VwD’ä!X‘Ê|ÓñíÆPï¼h 7 I>¤¹Ð2}Ò†[¿8–"){+Q¢E 9wœµ•ôÎöÊð·Ôñ±ôɉcfÌ^±Jèý²ˆN2“"‚d‘+Œ¶˜u@ºØ”!G.#Q•³wˤ¶á`ùe²pðÄâ ¿ìå27rZrfe‘úyè±eÐÒ {7³¡šˆ"þ•nâ÷¢OæŒèm½»¶FãczÏ/¨uœ­dØîKW­ÈgïkKáÊ©®Ä]^?‹˜¡†Yú’O´kk`¿I:Ô"ºzëJt±…­Ú˱}ûQKr£:òVæ`{ÐêÓ/ÀCÔòð…P-¢ºaì¼hعž ÿn È,«‘ø/Äj+çßK¨–B,šÈ⺟E¿=sÒZýÑ¡Œ î㥋S8eZ ™€‹ ˆ¨×V;¥â ›ñQLzS…m܇¬€‚r.Q3|T%QEàj(õ«Îú‰ssöæ x°d˜¾þ»ç7/¼9Ñ; ¢>æIKþÂx¥}ý7TâtÐTôÇ;åéÛy5÷ðà¯UDÛá±Ù¤÷Jofы׻cÄ^2oè ;åeŒ‰ž2ò ÅË2J?¥>cOM¿+¡xeÝʧœâÁ£n5庅ÿìqïj·! ×DýtY"Yóð¬õRùGwáX°fÅÃéS zT9‚ê«avÁ¾÷3ðîîmìg¹…5zŠÄ=6¶qîé3 n­¨9fç7*~{K½˜l;m¼ÂCÎlû(3Tc(ßë}ø.Ï0Š7|%&¬¾œ.˜-~ƵöZëêšœÚß½ˆÇüêꚺ$wû–¯ûp%BÖœ(˜ÆÿAJó‡Fy}çT –ùPžÓ{ãé³À+ôG”¸³pe§S8Ÿêì³ÑròãÙ¡O' 9o«©Ë‡‡r6i^›QîÀÈ5ÍV¼›où~ëÙ!ò/h÷vF/¬‚ù\°;¾;œžŸ½i}¯Á³‡:Pz/7"ɱããŠÐPÀ¾¸ H,§*Þ.k?¥¢ß î]÷™«ÅãÁ;+ym ¬lê¾;3â®ìÄÂ<¸”Ù½ŠZÍ„vãlôr 0ІöÐîÌÀmȰ'Э©:PrQ—:°˜“€ùHKF!-®+'soœ vzðÂKõ®ôXo([-Òm蠟K.Ži8»QmØeÆhšªéß|åÏ[à1Öó¹Nj6ì#ÎÃÔb¶iΪËèâ^§†ÆÐ†ªŸÖ`,’ɽã'qI;Ørƒ1¥Çé¡8LÙ: àÄÇ~×û$*Ë> @³b:øáMÎ/†k…»A"äYHIÛŠBÂBÅnä5tÁÓvH•ÁYß<( Qw2Ó *4|GøÆ‹ÑMŸ —þX¹R·bÄ £{Ë®\)©¬§ÛÁDZzQ¿hÐ^ï×#TcZ£±û²àöâÎÖ™Jñ>>ß¹¼Œž½ûY”ª‰õ«ÔÐnØ1±ùN¦kÈ<2é¡’¾ð'ÄEá'¤cíÙø•cÚZRªYKÇ¥Oߟí³*…ž“kÖj•ZFxêV÷©îˆŸ¡ö,éÝë_‹ª4_uÎ j ì ´ª©sdb§ Œ¥ÝâM‚îg¦:@©Ò/Ù¾nâ^åä±±7hw$ˆ‚‹¯Ku%•äÏøhä¾ög ³Æ-4 ‘…’ 2žd ­Û#ý_´³ýÄS§¡«K–MˆA2aßwzžÃÌ«– Çÿ”ºþq¶>ó:É_v ±>KA©àÒ™¸·ŸÑ¹Çѯï6‰ ýF@<”…âÔZð~£ðá•«òž*(¿v×CÀN'8;¨o×úkDC‡ñ¥ÍÖ]øÓRQÏ:ÛÏo{ÒMmãážQF/òéSœ7æÖP\K>hgXÐ~2 ÊKHL@é´ØþÚñÃæ}†áG娬}•oÀϬb[ùë`éwzå¤ðe z!#bW)‚wnpF¥,œŒ´3é€&ŽŽEãþo_CK%ž¸Ìl÷Ý—?­™ø­àžQŠ1x™»D¿~&áMà˜N^“€a~hÿѹµÇÓIJE£±ðl-±¯'Ï@޵p†ð°ô¾‡ãyüLºo²”jlO±k6ks|Ö{è™ÕèZˆ6ä¸À­‚_Ÿ»Ð<LÕ—™ú·7L{o_pïY›Ùû¬³óÞi ‹§‚çéž+ö ´Êkùhêå5¾cð©ë+×|U.®ªEŠ‚ˆ´Ð£éED9k¤NÅdå D™·ëV[é茸æ:‡”™$2ÇÆ*iì~L·IÛ}Þ,°{Ì™«ÙnÝ,ü6ÕƒmxÔq©P_gCyL`ª[ù†¬SÎС¤÷€§ô™ýKÞ»åÔÉ3«éZظ/Öå5Î_³lS ¥×*ä*/êœåQp‘³ hçkØö­zÜÇ͚‡tð#…¼X"äÊÜ¥s]¸¤Éåw_ŒWTÃ'œz/„’Ò¸óö2ÞnÓÖÑšY#_S¼`?榖PÓk†r¥åewœip} _8ãtP2Æd½ˆ¾zñI¦«,‘½v(Ts”ø[Å,þZC OÛG)š· - Ù9_q6Q[im$÷މ;ÄsG^¥ HE,kÙš¼Ìž%aìF9âà#¼ýœNYTßøæ³ŠµÛ­tb¸iö¸èÑñ£ùVpŒ•KÈ ¬í­ Ýôᬖ´1N¥ƒå¹tN¤UQQL0ð8>pWv$U5+$³úH0Tn‡¥<¹J&ú½)nêCG@ax/}þÖ'"Þý…¼- OôŸààMs·;ñ˜]eòøÈ‰š]äðgÒŸQÙ •´~<·m¾…„7õ/åßÿì òF +í.ñÍÄJJ€+èÒÐZÓñ £öW¦’î]+v/ â€Í¢ã9­”cO¶¦–µ‡õ¦ªå ÎXz'îüp0û–̰Ͽ¹"a@çN8`–¿5ìƒ-ýY¬aÞ]€™í<º¯»I õJþ¶×ç‚ÛùŽ>ãyÑè‰ä©Ö°ðcj…*:#î‡O"\Ew1!|—)/_7€Úûª»2.×aÇ[ƒQùUÌ$÷D±öwÌ@.ÕMb!Ž+êà ÈW½J’Ô „¦¦©8¹šûl:*¥oT!hžîrHÛBW¯‘y«¬t{»ã÷{ÍËû4”ýtlÀ\Ò³„âíÒ3WarNÉ/}̻ۃ5>-äNiøÏjöŠ˜à¹ƒGØhÃ8&?}%0òöê´u“ƒráéOÙ]}§„·šU•ò³fýsÇèÓxqñVRkžxÒýXBQ<Ç:´›ó&ùvà¨[ú؇B·H#xwA¢.‘âëpë‚› ߯cÖè ¸9èÕ•œ¢lL“=x¹í’K½7{°°2‚Õð¸ý쀵%Onü!O=a¸“4Éîds†¼Aã×í„JQžô¼ØTlÑÐqOD#ØHž\§Af§€´lw8ÒZ²†»pú0& RR$༸hÀ]†?åU$ûm˜2US‹O.1<ÖÉAÛO›Ö·Òg:t+Ü8¯æÅjêp£ñ„ÍýàïñÔ’\m)“¹OŠ»k™púæ3–ÏÌÏ%êE?ñ| *¦ŸÊ)^0â|zÑ»aåS牼r?ÕvFÞEþLݼ—†;Ɉj2Ô8:5ro„àYO°?û%ÈË£ÑVýÃs[VÝ5ìƒn°"ö¼OªbÁ_ÊêB7R –k®ðæûÏ*Ám¿9ÙHQuËIÀ’|fµÕ¡†ÐôhÞ¥ ‹^)ꆔNPÁqŸt³/Y²q»i.j»är; ”PlV Ó}ÝìK·MþÂ>²·O„Ñ|½Y¨ÍßKlн•ã;Q ‹„÷ìpžöà)/^Û~dv§’Ì~ñæTV3KZ1“¯O Û&Ös­å$‡ÈŸ\TSãBs£±9¦Þ6bÀ’’•Ú¦ÛzPFž8é¥Î©K!^}¼ˆñêžââ{ü” ÝÉÙu¹Â¡ôê>ì­ZÍÚ€¨G•a{Æ5òmß«ÅzS"¹`»e¦De‹°nh[ß[ËâWj2zĈ‡¸ð ùÏ‘Åò·¸?¶?#·%Å-ö€ö >öˆ ¸5Ò¤° Ž fâjï¹ß¿kŠI-ؼè5Ö ÉQ`LÎ<ýü±¦ÂêÇd«¦Ö²@8lþB!·¤÷v˜ZQ?Ì=b†*Êå)ÃŽ$Tvü®ŽÅ¶Ê™Ø¨,ü;Ð$Bð*¹Ü`…WT+÷Óê×@Ýo°jDÂuøçèç“uÁ¡áï({G^àßöd°8(Gô¬Êx¾ñ ê™ÉçY?ü&º^¿Û3³Xqȯ¤žE#|>AÿŸ èóøE|ŸˆùY¿Y‹üÚsŒ øX‘L©Êó!O}n'irp÷ˆ{×iïº epÏDµÕâä‡Ttz­,V/Î$:߱殺¼¿ì1¹‘!3Ÿz¥ÖQ a½|e4íG÷yï¿Ü4À‚:GáŠ@Ê‹ ¤˜ÝoÇÈÝZŸ˜žÓm‰g‹Ðöd·”Åk­|›¯ÀàÚíîwËPä¿aJÿÅkF7Ì@üàb ¡àYÇW©-_¬oÆY‰*ØŠÓGL÷**ê?ÓþÜž7FvRÂù‚†¼JP‘L«EHKŒFB¼Éòø¼”›dÌ5ó–ð"m "Õ¢,á žè3}äʤ\ù‘ÖÊ缡ÀPg§¶nçöØ’޹[dY‚Ÿ}„k`&Wfú’mìÒ‚JŒ‰+}Ýpo!zÕϤ®Ô8+ ¬Š³e_ Nà1½6L77Ü i‡sÌÝhwýF„ߔ֜žqLÖ'Dß—aBó‹™M“8Yué5þ£ß2vr<0BÈJT…bWº¡§Ø)ïůÐxz{fR’bŠUÚ 2–Zû) & Õ¯çÄD;fC ‚ô–È’) ³“аÇD)A¶w4-–ØUdL¾SDa493ó|Sl*«|üÁÿœÿ\£iŒe )á(ÎXUD.\æô¿‚erÚØ­Ä[áQ^I4(:„LwË7uä±j–‘YI šÅôýÚ¼û…Í:eÍV™ ©’êê’´K}ÉGDKåC±Š¯Ü5'úcrß‹S“² iœND$rnhâéqGý´ç GuzH† ÿµ;òÃ=ÃÊ”y\ ÆmJä6“ÊÉsUö…ÒˆéÿMëà@ze‹B_H§“‡f>=ªo âÄ¡ hpI$ pnÓZ¼ä‚÷e˜Ígõ´±P½¡jïÓ|=¨>SvC - ¤îÔP¦MQ†Þ7}æÉ?–_qS(ĈkI•wTÊi ˜÷Å·E¥Ù.^ûâ¿4êf„o»ª‰vq5¯¿Q ×Û@Ÿ€´=©G=Iß²"êö'VYÞPëDòʺŒ¿íŒGTOm´ëW–x-,£îY¸s ¯m‡ŽÅ= ñÍÖ1Ç9†Â¥u=ó¨¬n=lë$©$P0äA°D©a J%·riåÀ‚æÌ*-ãhŠ1áWÐä3dölU>{r7¿Â¸DdNNKˆëk:ŒU`±NKô–ºý×9· θíaÝ0oiU¢nYõÍ+ôÕzèäýÞ3vB߀tO^UˆUWI‡}Bl>ÕdØ]ÓËþtY¦Ž~_„Œ‰R§/¿jMH2ËØkts‰ú;דäŸ.—R~ófd׈£øŽ¬ óȧq87ûj_ï:ŠT¦&… ñãE•ŠÄh-]Vµ¤ÏÌE ZT0VíÙ”ÂlÈoìþC[áë”è8®9‰*8¤àÜã¯z¹ .ñ«3r‚E¦A½b2Š¢oH|ùj½ü‚ˆQo>@>&¸5f]··õDQö¨î$æõеäŒX·´ Œ™›GX-‘º×¬i§ ^—v^¼m˜Øú—>Õvà"jœ5$)!V2꬧›OKÓгÿŽU>d)óÀ1uŸô|±šcY3Ü3 »¡R-ùEo…å€}&Ñ+n Ÿ(ÙØòH²4Ð@^ Úp6Ä5gmC²¼µ5(ñþ¾ úhU£½’>U«¥üGàökë)š=>qmIʼno™.4‘B¥:Ò¾†”pÏé*I‘6„’p€-S£B*kD†×úI8qK›±ûkÜp2úªSˆÜt:ž‚©³dC~n¦/° ‡ˆj¶ª‘#$&à b#Üþ_þÉb—B[ËŠ_>2Ã×½Q}¸Ó·Èº`íjÈÂ"B‰Ú$ž7/…GÙ¸tévš`9´Œ˜g–dËÕvè[Yî\t¢]¿e÷4ŽŒ½pÀ?üà»Àš7üŠèB¨ó½bšåºiŒÉâ2q@œ´qIŒ$6¾ZSwobo¡’aÑ@ŸA2iÁ[Ür ÅQåÄ9=5(õ\$Ä'vôêmªê ‹)) Ev!³àvu&òÇñšq•é’³o,Û>Ê^)0n"`¤F(ðNïK а¾{–PˆxíuÉly«êÝ,zLÈÖê®}ÝŽ¤JvÈÛ“g‚ªæøþ%!P•5¿Ãf×O\ÉH¾¨)˹[>º©ŸÅ4˜J¬ t)1l[Ðôã\`òí¦]3›­M‰Ã›î”\«uÙÖ{—Þ–N´¡o™^8+È+4À)¾…;ê~%£Ñ.뵾̑=÷ÞT¼Ì£S`"'pÕ·›^¯•Ť½ÝûEÊ[û€wù/ ºÃׄœº=ê0©ŸNv1=¶W?PdÃæH+Áx{+ón|u†Ø®£­º5=ƒ¶Fg-û-EfÔ8MK’´,\Œ'}!Åkn‰ZeÁMCgo"×|Ù"Ž™X.Ü?ŸT|;ß’ÍU[_b:ýÞ ƒ†`eŒ\½µQc{ æÔ!rYùà/õP¾5ºÉá{æÊR6;Ž?¶U5ÕÚ6U‰¿ë õV·+Ã$.Œ÷òYQ¥"%§n+.S#O ŒàÐ"aµdªæ¦ToÄ\ÑUÊæµÓOtÚd”Ú•A‘q É´u®*±3AÊÓCa¿ú£î·¶ÄsJ4×®âó->÷¢RÖ7%=œ¤›Ý–FEû³* ã=§÷5ù ビ ªÆViwc¤|^®‚ô Ûê\`ÆhퟄâJ¬r)†Rûƺ ±ÊÁ…ƒÿÌøÑŽë£½LFF_oq-7ô¨«´N?YÈ(–…nÀ½Bú+PŸÏÁkP¬äÊÿ'†aÒñûJÂØ˜„䌄Kg·A®•õ»¤³OŠù1q<Ô>ú•Ïý›æ"æ ¤~yïu?o†’Êh6øHT1U&É¿{-§–lJ¶õ™wMþg1sPìœA½hãéÂåPT¥æUï„Í”ÕU¦ú‹‹sònæ6Câù6ÉÔ;‡XóH endstream endobj 107 0 obj << /Length1 1414 /Length2 1899 /Length3 0 /Length 2809 /Filter /FlateDecode >> stream xÚT 8T{OZ˜t»n¥P9Ù³YÊš±LÙe)áÒ˜9cNfÎ3g ¡î¸º‘-TR]]-¤Ù×C¶”\¥[²D¤4„¶ï ª[ß÷<ß÷Ìóœ9ïûþÞíÿÿýŽÆFWw=  ©Œê‘ðDÀÚÉÃDˆD}<‘HÆihx@(üìÇiìy|Mþ°æ4óÙÐP è„À€½€ ô’‘ i‹ ‘‰DãÏ@„gØÐB à„ìäã4¬n d¡XŸÏ¯€6}@26Þ¢;›P8 ¢Ó`À‰†²@Ö‘NcîѰoJh›±P”kB …B<ÃÇ#¼@‹Mº€BY€Èy! ¬ 8Ó8àüjxœàÁ‚øsw„‰ i<ÀlˆÂ|,E3@€uÜí.ÏçºÀüá$<éK¹ùlI!žM¦Ñé‡KƒÃ 8`Blp¡:âÑPT Á Ææ#X>-„±i`vt@¥ìh؆óûñé<ˆ‹òñ|ˆ-Ù‘ )ƒ³-̰F8Fù8É|6¤cçF˜¿Ü ÂáŸ-&3˜’5.Á†‚ Í<sá¾úA0$‰[õõ0Cé,‚¤Gœ ’$nl‡Èp.˜Ø`$ı?\8Ÿ(OF†ÿ3ð­…#‘DG0‚q_«cn9gc÷σB"F?@”ü¾¼ýŒ1ŒÀì°¯ðÙ+&89{zx9mž_ùKÐÊ ÂõH€Yß0$FƆ@ä·U\iÐüį™v0Œç†ÅNéóÀ!ó О—Ç&àÛZÎÆ[ÐþJs_¢!‘Ž=Hÿ7ÙgSþÇ%Uþ'Í¿Ÿˆ*`³gãÚs€ÿˆÓ8;lñV€bpB0%ÀßCwƒsÂu€ó}Ô¥aZ Àì/ ñ©P(Èp…P:k–snO‰ÎØ º"|HòeôHDâw1L\ô ìëÁÇ(91í|ÛѦ# ‰ÈȆFÇ£…ሓȆ†@8 S# %1@ÀÊ¥Øv‘áá$Wjl è׬E"ê„À¯&F#÷‹‰Í@@…ȬýÍt‡)q–'Ø„ŸíYÙƒ`(HÇýÕ‰ÐM£÷E—OR”…zý-dƒåõãGÄ2»ûlCwFY›M¿Ñ?×E©¾77ýä§ä󟊃¼ˆA~G3QøëZùbfÀ3݈¶ŸÌg^ð䇪*ï½ú0#Pa¬Ä­A(¶ìØ´F7øuÿýì¡ífš%—ß^b-Õº1‚—[Øò¯¸¥k·nÕ—[]AÉ®¸lu…Òq¯ÒN?nÙ2zl=uhúx]Ù°·¾;_W zz\yxx9×Aœ=l‘ñ¼ÖHÉaoСÑWk»öÝQí(qy´H;€Çõè9%¦Çxñ‹sÕh¯d´¨oGë…‹ägw·‰=ÜF¶Dëú$õãWt;ZÉ\¾ÙË#ß9êª]n¶GÏ6¶í€UàåæÉsÛÔöð-s콪^kmhé|àÙ¦½I?’$Zi4êvŸ® I~-~™[¸86þéøLWÄÌi®å ûíWo¬k`ÔìŠmSÁ®èÛ©»Ê¨Ä甼K¿i5O„5îN±W-â?.xD»¡xÊÒ¨¶GoÓŸºèÚøZ£'Ë:mœå NÛV'ec¾Ã»ôÈíÙÌO*Y=‹Š‡,(:W“ï$-oJèz±Òm’QTÕGÀ¥^y'H=f5Õ¨/:yZº9ñ¯3Zq‰ ëö9u«Ì§ÛHqhÑî…¿X¦øwíkŒÈîëw®K(.>kÈ$)­Ï^íYtAñ¶§‘qÄ;)·Ž‡Ç÷êU'˜Ê ²ÔWü?ôéØI%:È´?3¹fð×õÒ²ï—Ô·x-fL–.×Ûâ’h…‹g:"|gC€å:ó æ*¢¡²[/¢ï^tlM+ýó9yAôÇ8'õž>êIö[J˜ÜT›fûÃͽí«ÞYü\—`{Eî|ëáC9¿Vq 65vˆ¬«]3Êt”ÝiÝi”΃—BÚP¬âç}U&;©ó´AMÙöV=¹FuNiƒÂÚõë6BÇÓ:SB-ïœ]Ó~·n‹Å–’Š.š‰¿J&3?ª»HùÁ€ê8C\üçCT,Ý/eŸÔ{çGçãoÞWàFÕv¬Ò]í“ë±J®¸Y8QÙSÇn®mþ=W|gB&ë\ŠK aÆŒ þ(Çíàx^l²WP|2pý>èð4(ddÊøXÑ:Á[g™ÛÉ\Õz éøè©Èàhß]|Oÿ]&±Äùå„wPÛ@Ëpû5)Z95)xú|Gb7à«Ñ¹Õäó¶nMé‹9Z5Äh~±5}ˆóº„ÓòÛ~|Ú'Õ]ìE6¯¢©pÊË£™AÄGwÚ½ËÈQÊŸRæW¤ZóÔµs,˜”"ÅT)ñ%p‘õù¥ ~¦´”=¥RòÓÒ§â«+LÓUÝržË‹Ë´OZ[ÚEª¡XÔ;E/‚×9†®õÜ-Hr9ŸòR7zeŒ=Rq ”þI– }&ÄKï`^ȋڷ3í1W8M59™ÑÝ:0Ué$zÜGq’\+7—j¶y$K_•ý1ý+ ‡¼÷‘J£¢Ÿ ™ËžòjîV ±~HzÕ´&‡Ý(âø?‰Ü„&ÎŒ¸ù˜??¢Rx¸¹ÿa-U¨æÞ¿ÃbOvó²Ã¯DÉjæb}ùØ¥åï«åm«ŸÁkm›…þÇ®öȪ(tþD±¹µ k1U>>ëÆPã^|{jÃáĦ½Ä—#í·J6Öï fFËW‡Ó·ÞY²Q&(sq°Â’ë-Çó'³ïÔ¬KÕ0(ßëšµá¥i¬^fÓd[ÿôk#µÿ] š±Eý›³2_Ÿ1ë˜ÑûP\Ö«í åÂmXöÇÖ£ò•†û=.Wú$g’-ÜÌ_mQúÇM?Ť2 ¦Ó‘±,¿ ‚ø’w 6½Mvûñç'KÊC™išÔä+Þøìr޹דDÐaÕÖÊV†äNyˆA!`PÚ);ÌZ§xzË¿_r‘Á endstream endobj 109 0 obj << /Length1 2413 /Length2 14876 /Length3 0 /Length 16314 /Filter /FlateDecode >> stream xÚ·PÚ¶-Š»Kph4!¸»{‚»{w'H`Á]‚www‚»»{€×ÙûÜ}îÿUïUWÑ=¦Œ©k­‚š\Q…AÄÔÎ(igëÄÀÂÈÌ “SUå03³123³"QS«‚œ¬ÿ#Q«Av¶¼ÿ2s9eâFN`;9;[Àgk €…“—…‹—™ÀÊÌÌó?†v¼q#)@ŽðÁÎèˆD-fgïî2·p‡ùŸŸ€w&´.ú¿Ü"6@‰‘-@ÎÈÉhŽhbd P±3Üÿ‹â¿…““=/“««+£‘#£ƒ¹ -=ÀädP:\€¦€ßäl€WƈD Pµ9þ-W±3sr5rÀk ÐÖìálk t€ƒTdd ö@Û¿eÿ6 ü§7F–èþãý›dû—³‘‰‰½‘­;ÈÖ`²$eÜœèF¶¦¿ ¬íÀþF.F k#c°Á_™$E”FàÿSž£‰ÈÞÉ‘Ñdý»D¦ß4à.KØšŠÙÙØm‘~ç'rš€ÛîÎô÷d­lí\m=ÿÌ@¶¦f¿‹0u¶gR³}rʈÿÇ,Bú#3:8˜™™¹ÙXÀO ›‰ÓozUw{à_Ê¿Äà ¼=ííìfà"€Þ 3 ø ÉÓÑÈprpz{þ[ñ߉…` 2qÍA¶HØÁb Ùß<|@‡¼{,æßŸ~é×ËÔÎÖÚýù_óe’Q”“Q”¦û»ât¢¢vnON+€ƒÀÉà ðþoE#Ð’`þã)ckfàù;Wp“þ'_—ÿŒÿÝŽ-࿹äíÀ; ¼û³âºÌÌ&à?,ÿÏ‹þ—Ëÿß~ÿfù¿­øÿNHÒÙÚú/õ»¿ôÿµ‘ ÈÚý?à•uv¯¿œøØþoS àßGVh r¶ùßZ'#ð1±5·þ§ GIÐTädbñ×bü-Vû}ĬA¶@E;GÐï;ÀÀÂÌü¿tàseb¾7Áûø— >6ÿQÂÖÄÎô÷ùbåà98¹#1ƒ×ˆ•ƒàÉ>ˆ¦@·¿6ÀÄhkçv€«ó˜Ù9 ý('7€Iü·èoÄ`’øq1˜$ÿ “ÔÄ^¶?ˆ À$÷9åÿ 0§Â?ˆÌ©øYTþ v“êæÔøñ€‘Ñ?ˆ ÁÈÆ¼…¿ï‘lÀþFŽ& ÈÁÄÙæ9xßÁrðHAŽVJýmìôÇÌhü=ŒL¬­-þHÁ•˜üƒ8À&vÖàÁý‡ý·ÄÆæOž¿'Êdú/î!ð'ýµMÿ$õ[ÿÉ|þ¸€S1ûãn˜Èå_¿ÕvÎÿr›˜ÿaëÍ?FÀ›€ýS;¹Û[mÿe–þÁµþɉ\”õï¥ü£wæO¿YXÀÈ8À£³/óŸéÉmmŒ_"æÿ ¾™ìþ¤æ´û— ¸û?jp {ð»ek 4ûÓ@v–ÿHþ«¯ìàNƒ·d÷gìà6Ù[;ÿ«ð3ÎôéO’à}r¶sšÿk,`é¿É®ä8cG  è¿·‚ã· Ðå_Ýå“8‚¯öR7è¿7…œðŸôÁ·&““…ð_cWïäj÷/0‡óŸMÇüë w4±søw ÁstùYÁ,nÿ‚à0î²ÛzþŽñ_wމ³¸ÃN= à éð_<è4AZøigÂdYÔr_!Bäʰ3&0M½£‘DËà¹àÐêüˆŸ@û#-`ÍáV$a° cyKâÝð"Ù³çQc |HSœRó“×/ƒåÉf¤ù‰7}ãyG"Õ½$ˆÄ ªÂ»^ÏŸ¼Ôý­ !Û?Pg}ræFSÌÁ¾wí‘r«î-^ùüsGi÷çGä_ÅS ‘jºþßg¨³Ógñ)àœHÞc»¡ÏÜÜNceŽ¿’}ˆ¡Cò>ŽdË÷Ô^gz˜õX)Ueuì  "ÐÆ'¾Á™¤ñÝÿöoγ° bM`.ƒ™–bÞ¶3ç\ÔTÿ–)Ÿœ•AjŽÎç²Àx‚« Ocøb áu“´AmÇQÎ&ßð4:£XiÂsªF¯uTÀŒ +[Õ~»W9D§ ÒiÊߨ˜nþéä0€¤›a±æ–Ç'J÷«V³‘f9“Ö×®* 马ÍHæÂ2¿@äŒq»3ØÎ 0Pbšž¬·p\$ì˜mOÞ½4—È×þÐN÷ký`R(—êK«xo“ŸÑ9“ÃNG`G•E¦V(a/ñ¾ì—´RÌ î¼)ci³Zî4Ïøýíb>e’Þ.79j¢Š7“Qâ÷æ¼7%·dSìÜêü¨‚Éò|i„uÓðË;·­:<ÃDqäùyV_¦?SA(ONãÍ&Mš÷^!  :G¹N«ËYÏÈR±)B%-àL-¸7£q¤•âзÛQLp½ Ýkzw"‘ÄS© ù:}ðݤù¢xÔ˜;ÒÊP²caõ;Seú£ÃíõIKðÊ}—ž_¯èÍôŽŒ.•O¢ÀLLNÍ¡ßxh`}NTÒ›…aœû´vòíÃoU•J5*ïa dÇÜ·5‡Ìß·’SŠòIšâ¸?ò ºH26¹uÑh,ûáïM™„}Ô™:h+{´¼.C \¾@­ZSMc°°lHšéˆEàýYu8blÒ;ãFôà3aNj…Ã웢Ÿ«ýMo¬°†&‚Í<â‚m÷ÐÕ†õ¦#Ê^4"MfÄ-Œ×'úS©$ÚúA@˜3ÿŠ>>ĹŒ„ÀøûÉŒeÚ®Ÿ§LNaØü1rkUþddÁ°ü(âÉטÞÓug8¦¬?ãN&¦ÄŽàÞµ:€¶ƒR×OãIà}®d.‰4Aïb]¥˜}ÖPT‘3ÒÙ4Üër·vErÓsÉk ‡Ë¥ylÇ´ã1«_)µØ×tõ®NºÃÛ(Í8€ÞX~–„^ÒíPƒÇ…p.Fäu<Ø# )Kêwç:ÚÎo‰NW~»£Ú Ö<5áiâïÆtn|îaæ<â~Ó°ÚÏ`ðñÙbÑ'àøæ6&·´aºLÐè]¢G·/fä”ÏÁ.+ÚÎ-kÚ»êÝjƒ™®e÷Ï ×ÄÂ;p[€¨7u Àö“‘ ]²ò!ÆH{¥â·×‚6>Í1'°õˆ$µƒîÔ2 87¤SÛÁuwË o ™³©s†³H€DhUÁó#Œ­ e¾;¸O¼¨“0ö!4 Ñ„¥²a>yÉýÇ1"ØÃø<Ì)'€KrrüP‘`€ún/[¡Mòk9^gÀyº€†}A(Ý–õÏèNÛ¹26ó¬BJ®>Þ!%üNáZEŸ)†cgáéJñ3u]"G•¢X¾7>¤Àå¥ã¨åoí£!/‘šÜ…F^¢õÅo°.dP먾JKie9M¢! è.áɦYR?›•¦A»õ«À¥Â/F8¯,·â0¿ð dXóUlwûeÉMÊÚÄj)múV«£›¯‹eôy‡p¼Úõ7'å1÷œ¯Ó\ 'yš8«òîWL?|F©è9g>¹¾ÒüZp>Hb› £3ætµ²ŽM ;è¼O¦O=_piHòö‰YÕ7FÆ‘,˜ÓR ›àjÄ5|q°5¿}1 ¡y¸—ë3Áý@ÒsÜøÒ1vïÃ"¯çcNúMfSˆµtMK2íeâw´B¹Y^ަ-}x5iÒðZ"ªb T+ô2?¨§Iƒ–p"úäæI˜ÄAÒ_jF,ѺZÞ&Nä´¾çñ“ÇvØ=[4˜´·ºåD‡¸Í ó2„‹NŸe?G•#ìFóìEzÖSÈ.íÃŽuñ«P4`=…?'u¢«G¬rPqw2Í¿ÓÛÙc¿Ë+ýμÒáM &/aÖ¾ó6äU6ÁõºN·ø¾.€_ófÙЕpš9š4lPÆBoªB^Ï}‹ àź´QÿëÕwƒ_”©ÍžÂ7<™rVêƒÉ!¢dú-©V†]¤7B»HRÁöÓôÆwøaÚ£ègs‰{,eÓDsˆ¦½«‡LzIŒÔ\;/lçmÒMœÛ%\*ÇßÖa”Ï"ŸŠ0â†G\Ž.õøÓSneÆ}UŠÐÕ’ÄÂ-TûÝ$ш¨Žòò°Ç÷O¸•Oå2çà™YÙvSýW­#+ôs­ÊeyKÊБeÉÞ-ÎPÈvÏ ¼’„ße¨8X>a$\ ?{BóÚ¼zfB.¬áÙ)jmX¦¡„@Ѹ¸ú–~E¥ͱɔÏRµŠõ+Kúì:rßtOüÇ0¿CÞ”…Æì¹säu}íßšÈwƒµ˜MBžXòÔy˜0&t]25m²Kâ‘m§ä…çäå/­¡Å‹p=á¨x}‡?·çÕÕàÚŠIã¦F®v±©­ô7†oŒ­O‚¤•ã’E DþxÞê­e!™¯žöŠÿÔ0C“†ÿÌËAvÑÛ* YëxyýQÿ|ßwàz5y„H*˜|X49Í^?›ÿWRŸ²x–W1}ÕÔJÐ`¢€=þ¹)ú~«ÀJ8 [¿¥øÎ«ËÁÀ·²«e¤¾#£{8e!Ûñï—D~Ü„ˆ,ã¯?Y‘JÂ?쉒9éù4ZaK.;W·Bödƶø í é“Ó3SØtW¹=•£”•q²_ñqÜw1mB*‹¶„ž™¼•áèxìÉ+Í áï·ÇRyÓô ¸*Uß´ñz¶X{Á«+„V‚‡‡Š³ð$ÿû£¼ H»ã£öanžË-pfyéjXÈi`ßa©Ý7‹ÕïV¶g]|þ,Åðd½Kh±F/ù ´J†=ä]\f;@õÚoíqt¸34«µúžev­¸¬Ó#îWU!(yã¹Élsã›SƒTû±vÕ;¯÷—»þš±TTÕ+DnÜÛ Åï¼­ˆ[ÈL?ôÐ'ÐÍK3éІµbW®ÂmÚ±3¨–ŸÆ{¬è•ªb,ºˆHá®8‚b¾§“‹êéWÆ¥÷[ÜÞHÃuK  v´Æz}|^Š6¢*7ú†R·6_ÌÓ† ã…Íï£Ûäc§¡·4œå-`ϧ(­À…Œ©^0Ѫٲ'M¥’/D¹z^Q¹¶øÑׄ\ê5_£œŒµ‰­!öö4ÍMT±¥b BÁÕ“ß›p¹»´ »Ùwº%Ž…C…NëçÃ… Óë1¿®>lSŸË[ ]¬Í‰ *Fûz~ìP|À`a Ÿô«dÐØKOH?I™:ÅÒO\ÁÑÞ–aàÉýÙ™¥øÃ› +s®µµé@V‚¦ WÉ1ŠáðZBb i>º1áçFïD·ôæ$'ERÚV¢•´>E“TœâaM/+òÙšŠk}Î¥•QKÐÛ+«ÒXíI_Å3y•kQàºhêER4Õ*hõ-RÁž šÑ‡¢gÀ÷zÛ)óD߃Mù =|w¡^{T'11&ŽfjkÐBüåΫBDiMJLÀ«û6¼ÁÐ(r2p‹µñÖSÀ.KÖf‚&Šù¹q­9žø¹œ™EO} ¡—Õ¤ð>/-ªÚ0%ësœXÏ,¦ÌIÙ/¨IZ&VƒUyya°$ˆ7ÝÞ&ß¹!eż +{Í©[´JÈx#b.k…R¯ðS ›aUt~³hÝŠSþ·g2ìôÞ”Yîó!É·zÔª#‚#Ïç‹XÞô*ˆyä¾ï};¯òPã’\’œv&¸>ß]‘àé(Ôçv‘U*ÃÜ—hÕ…`„;¾ù¦’¦2SÌ1›aM'ˆ6ÕQÙ`ÎùcG­\«é¬èmYáƒAŽ=5 ü™@Å/=}^+V@/¾q;,ÛT•‹3”îK`tt¢yÊçò=ÛôÇÖ‘/ÂJþ1ï!ð°]&½g8<ØlÖçS.™ún T—fÔ ‡]ù´LH™CàIÇıÇÐç—}9(àxº§Î^lÔÛ–H—7³\òsûÒ§L\sù˜)ËDö¶À…À˜V¿u„½oýôõGH‘Ñ””÷N0þ~ºCU6’Ï-J‰?UìùVçÚ<"þgþË9yEl¯‘_R„Vy#ÈŒðŠZe}“Ó¤ |…Í­¢ÊiÄ´eEv¥ê‡Ýç*/»ü=I|F½J¤,ÎÌ¡{¨I”] mÍùb<Ë]n¬Jz‰N'¶}æÃl‡õƒáÃ:¸…W›‹µnëgÞÍ–»/$¼sê'£ÑÔºdh.ãz_BtÉ|æG;"qê$ÖîÊgnDÁÂÑ£§cVm͈¸¾¯¹›7"ceþæë¬£ëºj$MIQöHÃ3­x°tÁg§b JÝgNªOÇÝ\Pá|yVÍx?ìÓFgüšUè6I0±#m]‚uÍmv€›A©P¨R™Æ$k0|Ê;ë­#T’ðÝI/…9cÉo{“zŒßˆË•ÓÅqãùg*·ÄŸÖÅaRõĻʻdaÉ`˜v’r:Ðn:?žbôß”Uäþ\” 4W2’AÚÄ…µ}ú¤ø£¹©¾Äà]’ù¼ÑG›ž&§®ƒ_eÅvÈs†ìß=Øó"¹X¬ÎLѾº꺡jgÆrC× ¸ë&§(×Aå¬MŸ[CŒÏú-¥_-ïvÕÖPÁþ8¥ü2HÔeô¶Þs&à+¨Û磵å䎺èéÅiœ‡Z/“& ŠJöö'† .ç«©kõÂ}ƒ™N¶¹_›>]úÁ©N»PÌ!UPPR4üýO3s ÞSøç÷«µÝ_¶™ƒóL¦*Ž¢у ê®cì8C[i×<•DãK5u(WÅzdØ,_€W±¡Lò~ЙMjš˜tyG? Cöc(Âa1utŸÖ!›¶E4›Œ½@y0ßâQ¤mËȬé ë‘§…c>D¸³écvÁšŒÞ{{½1rÂCkEüù†z“Å%V8{ÕSbª´d`%'§“)E☋NȰv†Ž«K•d6i0”)'Ó'—56G¸^/“zÅA«RŽ©¹@æ"^ L‹ @*o·qï ë1`ùÉîô«÷â$ënÆ:‘ÙõÛ+ÛÇOHª›Ëã‘Xe#ݺ¥Ó-gQ±ÖÄÅ!zÔÆù0öÏæéËd\RD´­N›:ëêa“òÙmó/>ý ú!I{3¨$P.†á%¿\ 'ClБzC5³, ŸÞT¶óò‰XT®åŎשLvçï©QÂÐGpn¨Èº èU³åàXÃÇÅV~©g3îûU ¸6œsý ¢ƒÐ<ÝÒP©Žy)µ/Am,C!ÅÖiÈî¨Ýuú^JOÙ²ã¡&í4Ò¶±´Ëˆã…C^@ünüÔï ´T™û&¹ñk„œþÙó÷èt Ú¥Gkô¦«ÅîfÙ…6.3©zNˆ/|0$D†‹˜þv5ózñáÒ¥X'ëZÐ+Þxoå ›TœEÍÞPѧŸÍ&LËÞÎl_Õ <º¢ÛT3Û©#`Ìì ~³öOFUU°u"È圓£ÐÜ"¾õÿÔ²#eÆÄèÄðròv²*͉ò³¤±·ŠÛâç‹uÊ1Éø mAå„*—»_‚öš…ý/ vfóT¸Ÿ`ÈÂÉ‹é‡Æß •¸ŒËãWé@· )Dávc»8~’uQF˜º6ÁhPkY‡µù¼Áãeª ,×.äÎHvzÊSfyNx q¹ß›#a'Y¨Ôç ¬:iP ¼'x³¯$FóÑÎÙzhæC}Šçh•Ê!T⧤¦¹ùXÛËЀ´LImuÿЬ2þÆû¨J¢zX¥.óAÍÎ)êô±ÅÔ_‹H¾ÊŽåQ°»,7æw-¹øu7k÷ßÃ"íÌŽœ>­i ߈‡áxúޏ¬5ÅÐùÓ¯õ&n˜îHïá”I_–v‹4¼&œ$–ÈÆ}…Pà*4äãa-vjòOP­“ç”í¢ÐÛÏ!¬U¦„ôµÛ­©c˜¡§N1kÕƒwñ· -’ËÁeXáyp¡’ÖȲˆîaÐf}»’Brû~9+ï:1¿E5ÎCõtrÌ6mO·&tE7—†åš~GeEû²5–Šz,te¢çûd¦qI•¨P¾ÅL…intöÃHã*ÛåІñ×hŽèR“‰p†'o»)…ŸÈc=¾Ëø½ž¢·üù{x+·!¾ël+?ÎåÏShnƒPÔM³¨ú𬓲æzÙ±÷DWÁ#ê6?êË ä,Üî¶3iÎÞMxfí^˜?åLèÿÌÅxFìÉ›‰ö:©lzwlj5°CØ~Ì”=¶Ü)í7ýiüÃ[×RÑÓ\§òV¢ï~‰þ¾æ +† •Yùk&3×q(åºiß_1%b>Õ`”7 $·˜­âѾågvÙ©¿&Õø(è»­£găÁ?Þ¡ÎÏP&4Ö÷ZõËýD”ÛAÑ£?>2GcåuíxhzT¨#ëÀÂ<¸q˜†ÙØè@LñB:Ⱦ›n¸ 2ÒìJKé–±®-†ßO?û¹öµ¾™„Ò.—· Sóý\ó8ú+ægtŸµ_‡ Ÿ¾À÷â»&ˆ! Ê£õàOT*ö³DˆDªðçx&ÆOE$F‘Iw9¿E£_” vŽ*‰ã‰ŒO¼ýi[À ¯Pø,5µEµ >{M¦£Ô¼ÇíÈ//ΙdÎûC>¡Ð;š;z´Õ9Î;×a[«AóÈä…<û Ù¥ÏC;æ¢s+5…bw“3R¨=,·è6þ‡ ìµ›¨›”<¶´K[‘äYšz;ÍyvÀuÝœHnÀÒèÁøT ûÚz÷bœmjm‰Þf÷vý³rkör+œÖ‹Gs—›t%ºç„21Oì!‘[¹Ç|í;NíJޱ긌>z#ìæñÏsÙÝêÐ䜄Ýâ güàä¹°1¢„O †TŸ n£]Ña‡å?SÂ3%¸W&ŸÊu%xŒØž|Ím]…Á2>—·k6Z:½â¨Xã, ÐqµS‡Ô‹ÈèêšüV/^1Ã\MÙm#æŒfÒÈmÉK m33¨ce{ݾaí=q*¸½CìÕz"å9êÙóKh”ŽÚŒš ;2Ð.¬›u± ˜¸žOR¸D ‡ÝÒáñ°ÝŠDŸ´¨‚\w OUÈ —1¯‚RÕâãvÔØæŠ”¸ƒSüã•qׯ×Ý=’! z~ôxâ‰S¤™L¦Pº°¤ªÑmÒb»ÃËÛŒ‘ä꺈J¶rÿPÌSSåÕMe¾ÉU ~77s5¦Ó?Ñ[GêÃÕÓôp1oÕÉøRÍSÿòTfÓ …ÀvÑÐC§Ùá´8Qˆ·=,‹÷ä›KL ëÛ!&¸Öƒš5÷ZAB5÷‰˜Óþ•õ”¯çÔâdçTµÐ8Vé7¿¶±üdzmñyÚ_)D鸰Èwݡѱ†œ‡ß\¬CÑßþÀõùth³'cé] uPÊ\þ•¦Ýß›kwoâ½ é— ý:A®¤1¾f„ëÏi£–c:85²v=.Š4c#£€–D<3éíù”S žøƒÉ´_Ð7¯@"— áaŸUÈlÖœ Ka¡0áŒCÔËðŒI®Õ Yä<„º¼²®×Á‡½Â£>ZV±hµˆÛ¬£Ó×f‘n_ï{Z¢a–wûÕ™%¡wß>Ï X“û¹†dQõ)óÁ½áå¸+'>xs'˜H6‘¼®¡ùÓ&3nMXU˜XB©úþ*¿à}W,ZçfKù­ŽÂÐd[Á¨”åC9o¨Ãd³Wb@Õ|õ6³–ÄyEO`&xˆ»¦Ï­ SÂ4sN-MròŒÁpÃ<_N±f-]«-ì[ÔÉ9kŽšÀ8¨×l’™¸§†0¾Ð¼†®~7« mЊå׌ê“~zÔè`…„ÇÀX’l{øÆdí©þõkÇK¾/ý­G~bñ‰G¸å(A‰ ½¬‡Äv2¤˜‡P0H×ôÝ|ÛÙ‘jؘ֠v­OóƒVÁ¯Çb, ôU$£5Pþ¾ÈbàÛô´^©n-Ö¥Õfˆx§îÔ5¬!ë …ãH–¯ðXÂb3cÐ|&dx)w2&(ñpã‚ò³4]{NJ^¤ÿ¤aN5ðJoæ´ àmÌžÌÂþPcø™ÏMġдäŽÑ£iCÜ.@Óý…UŒÌ *2tçÉÚòÀ:‹¿µ4ñ*‚S/ÅK•V²€ m¦tôyé8¶e\TðÖP-k£ÄuíùLu¾^Á“Æ/2(³¬ñi;.×%_}lݰ´;¸Ñ1ÏY{ipˆ^ü4³·_ÿêë·¼^ß®³_“äN^M†T{Ùe–ÝóÃ>z{NÕfe—}šáÔ>ÝÓ…pàÀ•wú›ÞÖ÷<ôxÇý’ñÖîDzøsÄ£/TóïdLÜ?M‚˜y·};N1ò>Wd¡ëVâ&üÍ„‘B]º¥¾ÝúBÞþ4Àô™­‰³Élul­e´òBòà´ŠžS²®]†b2^2v€nÒvÔŠ .ÊuW9 ÷`fxIPòc­‰û,1Eoà)ÖöšhË[‡ŸÎý>è„•&nÈŠ,ú—€ÿ/qÖL³†2 ºô®oÌA)u•üæ®ÂºM|¸[!}m€È¿¹RÉYðQ@œŠ;/EŒ„ïžHØ@K|¶‰êmEÈ‘ð××ÊÉýpY:|ø•0øU½ Š Ù“:{1¿Îhö†‰q ZBùÊ«…ÐS a‹ÏãÕמ%ûM›‘´¦c(×âù¤+i±ß~vs1p®†ò{â„áû2–d8ýD‹d•Ǫ‡|´òrCñàF{Ýínþ>s¨«9xKX4]ÚŒÃËŠXø –Ú¹ìW’ûÊ 8QÅIuŠÆêNwš¡^WtÇ/ÎïŸÉK­¸Ý½°%6a0éÝ×àZhL|œF- кl_Iaã6/Šâ†4±6Ù×/ÊÝLÙÎ6nW2Ƃѫ†Sœ_â´¾ìMÞÏRÞz«FÀΓmÕº™n2Ž›ÍWÈN_2{I‰ñ²á–ˆø•íóU{¶Xö7›üt•]}-´ÑGs-ñì4Ë 7Eé"Ù(aâîÍF®ù”g Oi Õ?îp‹}<»ÓC"~aðNz„•³7ÿ Ã2 ã¸É‹áîã#4¦K‚ÑÑvK¹Il…Ã6bzó=Šc¨ˆ£)ÑXpð*}AY£A¡®ZjjYâu7íÇòœ”nbGDq“g º€?TIÆç÷/8'hí—•ç¾õÜ\ÆNðæXÓ+MßÎS†õ£Hå*#^þJQÈ9θd¶W$hÿ~>h<é{é¬ÿ£Ìq섯§ï ^ËÓemžé‘Û›ÀòqK¦¶¾“O04]gD9pYÌ»‚%Rv¯êט`äq¡ì›àf¿kŽ -:Ûeón@‘1^ ×ö³ˆÐ‹ÐäB&8ÎGqPÐ7±bÌ+ß´QUÎ%êD£çÖÂãZ.ÎÇ캈§’Õ2—zn1ÜBt哾–Âam˜x'ŸOÀÅRŽ^[[(íÎCWøá ¯–õhPý1Q+ n ºŒÁ–…tRKa"SGA›–ƪé•a®7kω_¾U8$a³Ò—;µDlá¥Bý°ãÒ÷ #Ôs¥¶åGÒŒu‰¢œBÓ8âcZx¸*Y†«Ù–Tä;Ñ_ÆÈü¬ê‰VuÏH<Ù>ˆàZÂ#¨³æ†Ùu]—uò?ªvc0þì¶Yõ‰‚¶>¾¦NŒIaÉü¸½öàȹt}p7ïÜwâ÷x["BpáÙ|)û¹I•«ÎïÜÛ¶>nPîfù"乘¾ñÔ©~e ×Ï\lßß±IÐ÷£Òå&ub;FZ¥Çe‡> Ò”eÐ*$µ45›ñÄh¼) ÷Îèmè™™¼?±Á²+ç³1r*›B£á÷ÙŽ4+¯«í†G[¯—êžÕè·±†š E±îZÒ!WR(¿(‡ÀNNÇ‚‹Æ;¢«%ƨÓ$ÿ’ú‰D?P ü#×Qre"ùÚ‹ŠdìMÁ¿T’åNY¼ô¾†ž~”Ψnå1ÁœÙéýûM|ÖSùç_­È'{¸§ç±¯ß`k}q€¹ÆŒö âS¸ë¥òeùWÌá] <"Žî‚rÖ´†íu#NÝ\Qy†&ç„ÈøAÕ¡¡|è(ád÷ÂN¿˜ö¬-#¨ÒÒŠÙeX†Ôñîg|”#‰dÌéLsÞ!E«Ò|y»ÙMüò쯻|>þG·­Zㆲ–,hÜêEÈ›oÎÌvxïpìÅf|½†wlhýjÙ—«#,ö#Í]ܨ…áŽfb»M‹Ò5»üÎÊš`ßäWÍ2å$½b 7[‘"ƒo¸IöÓ¨ö³9݆³Í´Š¸õÊ! ÞAÔÍ—@&õh³ìÊì])Ú8lÔ¡s®Ûœ|•œY|žQdi™õu2á¤e…fz™i}(6j‚NSKt(q0cAC{íj6/÷Y|òà ‹1`žâ†¥BO| ë{¯d†Þ§ÍÚxAÕL®d•H_ûÕ›…xBƒp½]­šoX߀?à­Ypáö¸]¢UжÄ=Š;ù…Ã~ ÍIûµõÒ[JIˆ“æÍØZ³‚‚²R¡¡LN÷ÇÃ÷ÍfjÎÖ5HœwýÒ%Vºp†á h:¾Êé79¤©ÈaÎ1-ÿÈ’¯¶’$\&óiÁÏ8D™˜¡_—Î7æÌ.F’•HL@.EB©×M°h´¡ 1m'ËŸ!¬­c M¹£ew^v²`hÉTŒO=Öc ,:júj8XSÚG¥r˜][†v%'u’úåŽä¯Üß#[Y™ù¾ÜEž¨·Ê¯Èhø\®ãîcв)ñ•=AEòu8. 6‰–M¼”7›U)…bòŸ"õr †ã¯YŽ­ô?¥WpÑ£á:í£è]dpu Çè/Ï ]±âFïÛí¶íçmú”Ý £Y¥;×U;¹0vΖu£å#%"á8žd°4ÀiÂ{¿…?gZÐYý9/:pk Þ W³ ¾<^?1CzøÒt¨µÞµÝsy SµßÓ]³:Ù°Aÿ1°6>¯• ç@bþùÛ킊ÿ© ¿»ç Gƒñ£¾ aMAOôû«Ý4"”¾Üg7%JŽSá_æ'D ˜ï»b¦Å"'n*†¿ºîØ ¦’ßdm#„.2>|ÃlNw‰ÄÄRz¦RäÂÿ´gmËB¿*-iãT$äÆï6ÞïÛÀ˜ ȸëCªù…•ÿ6•é$ó•½Â_TâŽñ)N½ó’—ø‡ŒÆ²cG¡å-Yy8\ÃÈÃ÷,E]¬ ˜eŽD8x•+˜-?¬Ö«¥Q¼ðid«µM‘#õéôŸÊ~õ¬Êb¨íxܳ*“X_ÖdäËV¹ZÔz ß¬›FJnìÆ'øPmêÅåÀ¼ògkňXF‡ùÿp…?íþV¸¶ÉæÑq2`AgúqN}•úV;ïsuC.?ÙI_íAòÈùFßEïÖàÑÌ7çM'+%ý”èŸ>7¸w…(—bL)çBâ˜yµ|ptØeÛ MíZ*^ž9ʬÙIOðE=ñ\V#,^ÎH[]÷³a€vZá‘ÂDuR2hêÌ2k±“‘2<Ü9²wyI;!w/÷úZ°‹·9Zü_͈l×°îçûìbϺkÝŠï›ß“TɬÆîŒöRð2Œ¯Ô°°~nŽìèÀ“‹e§“DÃ"ôW2Ô–«?ILžôß/w¿¡rÿ‰éPÀ'Ã~«Kn[×ÍŽÄú–~r¿[¿+W¾ 6¶—e¸ØVܨzÂäñÊÛ†óIvz;d¹4(vPX wƒgïrN•>öAƒË?º9YÃjÀdw_ Ê{Hõ†bï$Y?UDsúÚGÞ}¤ŠÅuÔï… Kn\ “ñÊmM¨ÂäÜ…wHÔGnñnæ Ð[Bx"¶õ ’ìæAËg•c̘ ,áz‹-öµÑ%®Ÿ‚VÙìGbð㎆`t¡1¾6=ïè  ’½¾ö EKN˜ãæ|—|y¹ÅAÜŽnŒm–4Ýð-W&Û¯Hþ°Üï:м椴 2îø̃!ZW衪ùvÛºÔïúƒS8Ôhð5”KëâJTK.6+Îæžs=Ù¼ `ËY•’¬Ý„DäR0ç´óðVs¾DÏ7R)]¿\­ëÓ†¼ˆçhŸŠóÀŸç-ì®N$<ú‰1+½íG.4a>ŠÙy#ô£¡Œ«;[}< ­³Öbeê4URFšVÝyÓ­éW…:ëºÑ‡áúÂïk*©™ïgªÌV|RFëà 3ÍùÄàûÆH•£{[ÙgÑBó–H£Ð…A¼©°’8ùC¢Vßq¡ÉHaÂÀ‡1ÎN™˜>ž«Ïœ‡'-Q¨.n< ôæ‰ãÅDR2ƒ€·ã]¦t¥aöfÂ×¼¤‰Q£V¥‰¦+Èt-µ‡PCùÏ&ª_Ì›ú_g-’Ll>}„©ì”BÝ•[o@Þ¥Ô6œ{¼ÛÚˆðO#Ú:áƒC+8͇n)€èî­q¥ó-ú¦Ca(-ÊÎcycN)tØ%¬`Ý“Ÿég2—Dà‹8ò¥«#(ÛU’Ý4@~hJ†þWòü¼œ}®ƒ9M#Õ…ÐÕ•>#dFÐûœK;†ÊüÏ×ÐÐÒœ‚0õï$ »„½ó·Z¤®SO_>ÊeL ~v³9=£„ã¼î ­ã^ Ö¾“͈‡¹®Vþ’&ót>_¿Ú[‰A© ÃI˜{®,¬s%Û¥ %¹ì>[´Ú)Ø?noìen75û€0þ|< RS99™òÞŸ&v±>âïGÑZ0c¹ÿ™HŠËÅg8H8 Áqzm*‰Iô„4¬!@V70QùÑa8uá-®Â)q Þ[¾”!aË5úÉ¥›hï‰dº9‚Ì*UŽâ!".±ÓƒxV0»l<Ö¼ò£ªŽp}7·÷AÇáƒá…—õÅhc ·KÕ4_âÿ á»9«H@lFhCɺê‘êÕ[¾Ä,šÈ°È$’Á)=²Ö×-ÿÓˆ4I™õo6˜âòÍ—öeæ{Ž7Š…âÁ¤ßÅé^2ù×GT±Tý\PÙ>û B>áAW‰9(4ú¡ö²¦á(¤U8¶ñ2å›hßßµ_ó|Öxϯ‰AÍ^ÜR?ˆ“É&óm#@²¹,6…ñ'ÃÛŠâ¬ÛÀÞ)ýio¼{s£(#¯y´kÊ&9$FÑL£'st5ò—I Ëõ®|ƒ’c¯ûdé—T gâ¯v¤ï*d­ìªŠ–ìŸ>™P°øgÐ~;×ø¾ÓÙÞ Áï\"‹ê&“GÁ`Šìë69×$€…$z?B‰QïÀ…Z0eù]Šq0Hjœ­ ø33±?Åy:¦µ@³l0Ʊ•ffµg+*ÏÌ@ݹWP®tX¹CØÃÖoI¸þê"0§SÒzÑ€¯l Ë©8Ä­G$—¡ÍõÔî >òù6 «{¦Âì×i57‚žã'QÏRÿê)dÑÕ`M^äa“®fRs¾!¯ÖIÜ>$ö² aÎ À—ÏN°ñáÔã­3¾fòìdÊ­CHÐ}qz‚ô¨g2'Rã­Îi!Wo&ÑSÍ 6oBJê¶fúº „ZváBÊT–ÓËϼ}ÞÁn*¡ôñržè¹[ëÈTÝ^˜³0‰HhˆÃhتiv_ö’HΨܜÊb‹îc}ô{¢ŽÕŸ¾E@wy¯W4Ó[¬1¥‘Ýbÿ¬¿z)a¾Ëß!8ß¹ m©} iÿ~h»× ‹ƒ“>Öq<ÚwRLËé§ÓÞ— T›‚ˆ+÷œª«ÙW¯÷„$† ]Y&*@jL… UÙèTÇgç¼ëFRd{™fI¥=êâ89»¼e¿â”*{Ú¸¶E>¤Tíéß\R¼Â/oCÃ둵Äe+¡Åc¯`ˆÎ ð›‡2 )E‚‘² æáãÚBÕåƒlmbN ôje!Ǻa±âmІ‚ž”ljV— B|òcñß-N'*;;ü\Ô†<ÖÎÊóîG(£>Gò‹O*&ËÂû.iO<ÞX왉&o½Þ˜÷ç)ޝaUÒQ.Õ{£·yö«VÒÙ[]gϱ˜òË2“ƒÞ+¬ˆ”€D¤üC݂ʵy;žYÉãÓˆ.ZüNïɪûï?9O4\§ÝÀB“8 ¡W-¾Ù¹•q°v©¤×àŒ˜ßð¦,ÙŒ7‰­áBT¼¶" D¢1çoºTñ†„”…ÈÙ¯Œþ¶Z`´÷žŠ+Ÿnå€5Q_ ««–¶r´°NÔ#É:O űc«<ÈÉv@J‡É1ÕgÂ2I]ZQª0´eæò*Âý"¦BŠ/}·?]îî:±Ý©ä¿¶—U ½_¯^hñÙ£M,"šÔŠ­ÿEÑŠ‡}@?À°bÛ5¼p¸#gñ$˽ÜI/É ®a›gÚ#1óâ-Ÿ›?:›}ŠÊÑð”ˆP`;ÿ®0Ÿî˜¸Ç¶¬'±ÛþéKÈ'™ÔZ€ß&Ì[ µw[ E‘éú¤tµ¶Ø3·Ÿ yϾRñÐåÜP\ 0¾MÉ?;™Ï/ÿµöÞÛc°Wuy2@ÒIB<†8/ùÓñxQ«Åìê¹ATçµñnNÆÍÇË4wùzµ2¸µS:ªf£õs½H!L$ëþ—_:èÍÅ}î¦T’ÓŽ»-Rúãf Ÿbì„”7Z„½ÝmŽŸcÈÑÖ[ѪoU2iyݾ˜ä<–Æ¿’¦]°Ã­ú{Nöy°ÇXi»"lB•cÖIÏ`iB,>æœÄœ/§HâçÆD.¶pù~–z†Ö¤÷î4vx0%(èˆ[ÝÌ6%ŸÛhäçwLìw­lÿâÿî­Î™š ;1Š/ö*Ï­aŸ•d’±Õê~1­e×0§9„ÿñÇ‚>6:ùîÚ0HT¨0£¸šÜ“îØ^9ÍŽ@êfK‹9®òvá+,œ€)I:˜øðÂ÷r÷ûG×gBä«÷úRæú›ÙÜ’Üiã Š ¯:\y2íP)A=A LWôž™mZ¶‰/&·\cêêcÖ3™¡¸B_[Kj®'ôOLÜ5B52‚?Þ¯=Ÿœt=‡U“ œÀ:ßCFìÍå H±Ö $yô•ïÿªͬ‰Œƒ­³³Á¼ãÚX¨æ|K£´yAw,Ò·Þ÷AòÞ;{½sHóg6õ6ê¹eF{þz¸Åd»ÏäÁ´Œ›øý¸¶ c°_ù¹'ÝGZÔ%‰VK4rWMùA[h&Þ’#4™KᙈËI’J/à-Ï|®õîü"¶+åm8Ãäû#ç¦Ào!zS5©Ÿ?}èzWJ Š7ï²î50nÁâºåˆ(ätüòh¥UV•¡ý´Ó1-Ÿ]CR_!ӯƚÌF¹Àþº·šQ4YòÜ{ˆ6Q^TžŠù:‡…¡ vÆa…{ ÏulîF£¼Gʪá¿~6y¬à€#é¾µžû5XãÁdË ªî¦|¯OaMLO”‹ϸpkÄ®bã6•û­ÙÙ¬MëþhB[>J•e«u”d©ªŒa5¯†»Š¤Á–OåÎQNx­Â€°'Âi®[n T-¢·.á9Ð2Ó²_=»Xh[ýöx{J¿­¯1 Th0DùFW„£*z„@Ê¢„ˆ?¹Õg}M³ ú[ëûDe»à#)dѤ܃è`D»ø¬oWD´‰ ;˜2áÛëø(á4$G2ïã^K\©#”&˜ãöØ´ k^}_ÆIÝYždTAoòÓt¸lÜaï˜éO¯ÑriºAÖÕÈŒãÆâNÅÇ?ÌÏBü9w å»Wš…®zÚ_ªgrkQøêëZÙL9ÍMÑÌïì…T¦Ð&ŒÄT<¸ÈäÙ–ÿÔI:ô*\aWÉj˜dZ ‹_šF^œå~7㎧$œÉwÀD÷Ú:ÙØó°ç˜ˆ¾=jE¯îÉ\}Úás:dÂø²#Áx͆åu=!lMFbB&_‹‰‘eä§ŒÖ{çK0éLç¥á‰ÛéÍ€Â6@…D• » FòUBݹÏÂ¥¼á(O²ÛC""BÔèN‘ÿÐh"Ñ”•ÚØú:^›ÑŒÿág²Âè0?lé„´¶‡WÕô5‹z2‹&ê%_¼/Ï€ äŽk‹ÝO®ÞäUêhÚ{î1ÅLÃ@RF‚Ñ,²#”ëï\«É«¸Í½‘,Û$¹ßš)² k„p¯Ý,á “CSŒQà˜o[{fyùc·âšC-DàöÑú¨4‡GhH>mEì律>=¥+Ä -ë_zÂÜ:†‡Ô+ú:ú f®\®’í“éœf}Š«a¦—¶"hÊ2? Œ#I GlKz Þ 8ùì§åŠ[]¥õHFÌ%ñWl;V"GôQb¨¶ñºNsÝ=ÊÒ~=ÎúW§°C¨ŠH¨œ2x¯Ü/ÁÝÙ Ô/)Âbìù¹Þ‘²¥-DI ~è…µˆš!¤êr/3†¤ ɆÎéÌi…Á¤t–Î;·ï»Ðf1Ú;p >TÌóZØ‹æ+‰8y.­µÿ ºó`#²Å)ŽÐ‹hn^Ã×úzý‰‘Ä ~Ù£øSj3üÕ‚eŸ›w±Eæ³#¿lë§Qa «;òhŒµb-é(sÛ h£R£è©;¼NÉÿ68÷¡s‰‹ÕFÞÛ¸+‹g¤wmzÄD‹Ý©üúø3$Ž‹ lY}Ÿêb"bS נгß#¾þ.|úJ믜ªÎ6cî$ÅF-ò=ZôÝ(' ü^Àg5áב‹áu#îp“š oOO³“ Šò¯pŽñŸ€i©/BvŒaNÙ]!…ô\óž<â௠Økl»JQº›«Ð¬lµ6ƒÿÔ ù endstream endobj 111 0 obj << /Length1 1352 /Length2 1258 /Length3 0 /Length 2105 /Filter /FlateDecode >> stream xÚS Ti–Ž+"ü;3‘3I7È‘x`4(xB“t %éŽIçDYEEEQÑeTFÇ•CDŽAŽÇ "·¸‚Œ×ðtEÜN(ξ·ûòÞŸþª¾ª¿ê¯¯è apED4êMà$fBÀô‚!A.Lr¦Ñé¡)AGí4z*W`Îù„±\Ž"$eã!$E8ðSJì`7ìÎ à AìQ"!ç¢ÂD@À~Ž*hôå„,^ŽÅÄ’0ö ì„öf³Ýtá€+Eå˜Á!cQ)u£‘€Bˆ¡dü¸v‹bIRÆa±Ôj5‘*˜„OÏ¡L´¶”® ³@ÝP0–¥½ 4^†êœ°ÖLõ”(#d@Lµ&ab”ú£%* H¹MJüÔ1Ñ`ˆ0! ¢Ñ §}ÌN™Qñ¦æ/Ç4`-DÉö7öµžR˜ˆÀ%ñ麳ü¸«BW8ê[s.[Fh@"v…€î€!gý‘4>S0‚é+ù$š‹ à>R0õR£E«ô*°Ó¯ˆ=Ÿ+ ´‹»R_¹BBê€ÿoÁëBþ›ÎµYþ§Ô?¯È[)‘èüv#„?ù)&‰×3P4âsB8:²²T„)¥Ÿ{ù$Bm‘Œ=¦ðÆ4¨(#…±#BÑÙQJÿãc½p!!Ò.г«@är$žFMˆB® ¦6J„jtB,&NT)É$ &ä4íH ÀB ­I‡\(ä2†ÜP:F±=th\ B¥\Ní’nÊT}£X·¸(ªA…´æ{„paêÆS+Þsçª=7ÝðWI¾_¿RµÛP>ûÁžoÿeúk\AA1Áñ¾–ýlfíªª¸döVì ¦óÙoûg6tLê[ö^å±xiù쥤ʹ4˪.šïQe™T±›Á­Ï Ê»ñ}áºëw™¿}N¶Ç¼ú-H'´¶äJ˜ómU©}s’¯Û[Ù¤²™Üx[loòä÷ùÈû&nêÚ•ý:ã=nQÇKžçWàô‹kö gc_¯ØžÉÆ×¬7ñË bŸþái»š} µ™díG]É\¯šŽÿeësö¿Ó6G›ØõTDò»Ë2#Š=ûioÑ£;+Í?ŸP 9­m°\3¡zeÓipþ™ƒ‹ÁyÛÜæ<±©°Ú&X²ãBÂÑÆÞÃÕ·ì ö–Ã;ëS[Êï±ã}—5'øΦ9ž°Š*M­{rçu›1FÞ®ùÑzrj…(Çé÷l ÊMø{& Œò.{·„Žú󨾼\?Èþ!ëtAc•uŠû±Õ6à ÕçMÞ@‘ÂÜ®ïVÜÞ¿\ïS¾rŠÈ¶Hhh˜µ¼rPSô؇Vwß Ùdâ)×®w;*=_V¿ååؼ¸èóüîÚþ¿íjT–2öZϪQÄùÖ{;jRVǃ»“áê’§þ~¹qd¿Ïé\`DH„ÛñˆsØ•Œo—íÓ|( ¾ðwcCÑ÷‡Ó'/ÜÉ<ÖâòƒkÄ“ŸW>È\\à0ÙzûÂÌ'PþùSþ¹Û:rï¬-Y2uãkàë7ƒÙ¯~ÏÜõ¨õ’ 2¯fNÍ›=½ô§ƒÐ™G,Xe† Óë2Më¬Ì.ˉ_vs—_=j‘\²´Â±{v]•iš5ÉT÷t®±ÊSÄm}}ËáàðŽ+ý­Ä4(Å ×Û¬£^>ÅOxù˨n|–¥{á£Þæ–#7ŒÒ¯»NœõxþÄöoøý‰ä/<> endobj 13 0 obj << /Type /ObjStm /N 82 /First 678 /Length 3360 /Filter /FlateDecode >> stream xÚí[Yo7~Ÿ_Á÷Àï0Ør|Å’Iv”5ü uŽ€lH ý÷ûU§›Ó=-©Gãì‹UMë®bq¦m•VF•¤LTÖʹ¢¬Q>Yeµ É(TLë*E¬e•SV6a[Z8«ŒNQ9£ŒIØ”±Ï^Wð\@3Xå2Xuʤì”Ǿœ­òQ™’1À-ë…'æÏà` ø[’ !†/Eà…’UðÊFÈ!W6˜Ç¾b²ŠN9½Š`i¢[DˆbžI±äTÌ ªAWtPÐËÈ‘H–|€p@ z`kaìªÆh°ž€ ~°D ÏEezÎZå콂Jņ„IU¢Ã_¯J Neè« dD;gPÒèã6¥qªÀvº@ið7Fc 6Æ&B¶ñÐÖh<Á¤´ø&{x‚«Ù'ØaaÉò´±%ai-‘ää+ €œÓp,0þR´ÉÁ° Ûœ‡ÈÁ\\ nÝŒ#"Ö‘§™³2^#€å ÖAÆÛLàuQ$"¬ Zô/øT|‚sŸ}€¼ ça;Ò“ ì/öÏþûçRí_|^.ö¾üq³üãæZ9„ïÉbÿdyý寫OËkÄ2O.½¼xúåoõAc"”°gá8˜h/— P¹Âv’‚°¿ÿž<Qõø±ÚnH]¬¡ElDì§—¯ÀÍ$ßV”7+Ø‘Ïýã«/ŸN—7êÔzö\íŸ-ÿ¾QWâlÔפ‘Âa7ò6Z4j6v  Ï#…Ö,á(©¢§µC=­Þ…žw»¨ÑD¬{q¤…ß±·ÖÐx®‰Ê NÜVŸ2Ò'}½èÉáômq¶¥nT4ÜNªF+ï„F­sëÁº"ÎÍŠ8—fy¨Ñg"‡Z£lV¹Ï²Ô ¯Gúç]è¿Yô™V¡ão7nö~¨¦·;vóD¬6z>¸<úÑaæÃŽ5á¡Gr{²m©Q…ŸßMøÍè,6w'Û*4ª•Áü3õ¤Q¢×s[-FU1̪Š!ïöÆ(ìL¹hFÊ•¯©\£FW­'ꔦïDâ¨F» ¥7'Z{ž5¦XSôÁnÃv¢Q/ûÝIwß’þÁÛ´—•Œ¸«Â.ÚšÇ÷R…ií¾Ÿº»¡!Tq ßóuLÎí¹õQ[ÈŠÇj„MpI3fϬVyÞ9ÝÑIÑí!(3Í””º½ul¨ ¼F÷ Œ»{îdŒÉîY4\BȘYÁëÊÜmC$²> 3r.Ö2kÙ6ó,«!3™ TwvØ2:–Ã[2†×~Ï~\|0š¾CÁDZ¨[,}•Àd(*‡(¤ù¿ßÕãñ0+i½ ‡Ü‘•á&,à1=±Þb¦Ðau‘Ö‘7QØß>_ëCf;Ç$ùDÙc´÷ˆ£e£“º‘_8€'Æâ9QvDaÌ–ë‚a´¥t5Æë=¬ç€Ñ®Dœ<ÑrÆ{’$ÇŒÕ 3¦Èá…ŸŒBumÕøNâÛ¥½ÏX5¯úÇŽW‹#39òhzs¢™N¨ÁVeœ #ÑñIª é‹y U9£ÙGPPXUʼPfWÐ7‰IVQsekLÔ+ xLš<áBoSÇZUMØgulfø;Ýfvm'Ï‹÷ÄK$Üš e§æëŽ!‘GÖRä³)òLd¼ø[Öo›É‘-žÉª9“=³œ­šsLüaúƒlee&%Ëý8ïmi2Ž žL9"ý ócó³ýrólyýéêòÏ›/WòKÎÑŰòþõ§?~wpøôÜh,ü~ñùZyÁxÊ¿= Q=âïàMôÔÃ\ì?¹þD?áú¹Ø?¸øóåòòóoxÌq±Olhí‘¡ÅW7¿_~zòÇçß— äOo–ÿyOGÞbÿ¼nBk-Üž_'»ö§»„?>;:9øI„·Â;ž^#¥‚¶ áu™>ÌþÇwGïÞ¾gáÏ^MÙÞ–j{zÛ4¿­øÈä+Ò¤iŽïŽ_œ¿þ ¼:;›ßˆï(q‘Z%6Ò³&==vÒ[k'¥­õi…/s„?ûéüüÍ1„?™2½×ÕôZß9î^‘3-z1sDrðöå;}"èq´rЗœw#y˜”|V¾>;úáüà=Kž&$wbôâQ½}¹·äaBòàZÉu+ù¬d=~yþôí$?=Š—hªè…ÂåÑéñFOy*Mˬ4}süòðå3}ºÆ'³ v’>ëKo\lĹV¢¾xþäç“$þ/·Éé€2tV†^xÿŒxoÊŒ×SkÛñ_¼===€øÓ5Þ…ÕùjýCÒµ­’yZüYûúðä—½%ñÏ&뤔øàÒCJü=ª¤Ñ³RöðèÝÙù¡ˆ>Q'ùtBSfé.z˜}Vʾ:>|uü’E/ŦÝÓoùÁ’'?-ù¬l}ýäÝÙ/o¾{óê臩x1uŒ¶2ô⛘Zñq)ïÅײ·©Úxc&ÿú÷ ?Ò$´}zq½ä—›Fíðš¢ôßmøå©ç—W×7¿]\)²ï›‹ÕƒE~þ|ùëÍo×ô?xf3¶³æñæ¦g^æ3·£öyÄÞ®±·={;Ÿý¨™\ç^ô»SÜÝ|îƒnpÀÛÞaø†wÜ"äÖÛ¹ïQÄQ'°ÑéYÏç=hȼGG®çM[V¼·ðø°¥0…åùæh󙛢uöFëÛù›Øñ[¤ú°«r‡ÜšéC¯üEnØ“ ™ûûgºŸÏ}ØR ¹¢Î¹5îîi Ý]Áû(ìºÛ{Ýó–ìæfsn*ÙÓÉ><›‡ÜG1×j}ïNzïøš^<þ‹šþ5™úªÿ—¿^«òF°‘ÿðhåÍf+¯l[yŸØ1ÊÇmˆ;!ääd/o{áåe2ÜIÝOQB=Ê»ÎQ¨Çx=*B@þƒWý¿ õÅêÁ΃ ô7_>/„D'pþmî— endstream endobj 116 0 obj << /Type /XRef /Index [0 117] /Size 117 /W [1 3 1] /Root 114 0 R /Info 115 0 R /ID [ ] /Length 320 /Filter /FlateDecode >> stream xÚ%ÏË.qÆáïý­¶êPçªS)Z m§u,ŠR‰®XXJ$bcoã$" K±rÜ…ˆ^€XHĪò~6O~ï7™IFD¤jD| ‘€°ÖÈY%‹$Kòd…äÈ&,çDß(‹ˆû^oËd‰¸H $hëƒ RKÜÐÞêI$,:·‰—x Ñk½ùH$þ¦s—ˆ’Jêm‡I#$û¥·fÒÉ{u¶’H¡¤³„ ¥¢ÎÒ9Žè\'{¤‹tBNoõAé†\üêì%aÈå‹Îé#ýd€ ’!%Ãd„ÄÈ(#ã$N«'ýÞäõÿ§'סÖ{ײçHk({´f€çG­$P9ÓJÁø?´Ò0vFË)|ke`nÊZ³0•ªÖÌç¹Ö<¬ÄƒÖ)’}Xé•û‘?í¨0V endstream endobj startxref 214519 %%EOF gp2c-0.0.12/doc/gp2c.tex0000644000175000017500000010254013645577654011520 00000000000000\documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \newcommand{\link}[2]{#1} \newcommand{\gpcc}{{\tt gp2c}} %HEVEA \renewcommand{\link}[2]{\ahref{#2}{#1}} %Use \gpcc only for large fonts.(titles, sections) \newcommand{\pathlink}[1]{\link{\path{#1}}{#1}} \newcommand{\path}[1]{\texttt{#1}} \newcommand{\gp}[1]{\textit{#1}} \newcommand{\pari}[1]{\textsf{#1}} \newcommand{\cmd}[1]{{\noindent\bf #1}} \title{An introduction to \gpcc} \author{By Bill Allombert and Ariel Pacetti} \begin{document} \maketitle \tableofcontents \section{What is \gpcc ?} The \path{gp2c} compiler is a package for translating GP routines into the C programming language, so that they can be compiled and used with the \link{PARI}{http://pari.math.u-bordeaux.fr} system or the GP calculator. The main advantage of doing this is to speed up computations and to include your own routines within the preexisting GP ones. It may also find bugs in GP scripts. This package (including the latest versions) can be obtained at the URL:\\ \pathlink{http://pari.math.u-bordeaux.fr/download.html\#gp2c} \subsection{Installing \gpcc} After downloading the file \path{gp2c-\emph{x.y.z}pl\emph{t}.tar.gz} (where \emph{x,y,z} and \emph{t} depend on the version), you first have to unzip the file with the command: \cmd{gunzip gp2c-\emph{x.y.z}pl\emph{t}.tar.gz} This will create the new file \path{gp2c-\emph{x.y.z}pl\emph{t}.tar}. Next you have to extract the files with the \cmd{tar} program: \cmd{tar -xvf gp2c-\emph{x.y.z}pl\emph{t}.tar} Note: You can do both steps at once with GNU \cmd{tar} by using the command: \cmd{tar -zxvf gp2c-\emph{x.y.z}pl\emph{t}.tar.gz} This creates a directory \path{gp2c-\emph{x.y.z}pl\emph{t}}, which contains the main \gpcc\ files. Now you have to install the program. You need the file \path{pari.cfg}. This file can be found in the PARI object directory and is installed in \$prefix/lib/pari/. Copy or link this file in the \path{gp2c} directory, be sure to call it \path{pari.cfg}. \cmd{ln -s .../lib/pari/pari.cfg pari.cfg} Run \cmd{./configure}, which will search for the PARI version and some other configuration tools of the system. To install the program, type \cmd{make}, and the program will be compiled. You can then run \cmd{make check} to verify that everything has gone fine (a bunch of OK's should show up). All of this is completely standard, and you are now ready to use \gpcc. You can use \path{gp2c} directly from this directory or you can install it by running \cmd{make install} as root. If you do not install it, you can run it from the \path{gp2c} directory by typing \cmd{./gp2c} \section{A \gpcc\ tutorial} \subsection{How can I compile and run my scripts?}\label{compile_and_run} The simplest way to use \path{gp2c} is to call \path{gp2c-run}. If you want to know what happens in detail, see next section. To make the examples easier to follow, please move to the \path{gp2c} directory and link the root of your PARI source there: \cmd{ln -s .../pari .} As an example, we will take the file \path{pari/examples/squfof.gp}, which is a simple implementation of the well-known SQUFOF factoring method of D.~Shanks. We just run the command: \cmd{./gp2c-run pari/examples/squfof.gp} After a little processing we get a GP session. But this session is special, because it contains the compiled \gp{squfof} function. Hence we can do the following: \begin{verbatim} parisize = 4000000, primelimit = 500000 ? squfof(3097180303181) [419] i = 596 Qfb(133225, 1719841, -261451, 0.E-28) %1 = 1691693 \end{verbatim} Let's try a bigger example: \begin{verbatim} ? squfof(122294051504814979) [20137] *** the PARI stack overflows ! current stack size: 4.0 Mbytes [hint] you can increase GP stack with allocatemem() ? allocatemem() *** Warning: doubling stack size; new stack = 8.0 MBytes. ? squfof(122294051504814979) [20137] [20137, 3445] i = 46474 Qfb(321233929, 131349818, -367273962, 0.E-28) %2 = 73823023 \end{verbatim} We need a large stack because by default \path{gp2c} does not generate code to handle the stack (the so-called \pari{gerepile} code). To instruct \path{gp2c} to add \path{gerepile} code automatically, we must use the \cmd{-g} option. So quit this GP session and launch a new one with -g. Oh well, before that type \cmd{ls pari/examples/squfof.gp*} \begin{verbatim} pari/examples/squfof.gp pari/examples/squfof.gp.run pari/examples/squfof.gp.c pari/examples/squfof.gp.so pari/examples/squfof.gp.o \end{verbatim} These are the files generated by \path{gp2c-run}: \begin{itemize} \item pari/examples/squfof.gp.c is the C file generated by \path{gp2c}. \item pari/examples/squfof.gp.o is the object file generated by the C compiler. \item pari/examples/squfof.gp.so is the shared library generated by the linker. \item pari/examples/squfof.gp.run is a file that contains the commands needed to load the compiled functions inside GP. \end{itemize} It is the shared library which is used by GP. Now let's continue: \cmd{./gp2c-run -g pari/examples/squfof.gp} \begin{verbatim} parisize = 4000000, primelimit = 500000 ? squfof(122294051504814979) [20137] [20137, 3445] i = 46474 Qfb(321233929, 131349818, -367273962, 0.E-28) %1 = 73823023 \end{verbatim} This time it works with no difficulty using the default stack. We would like to know how much faster the compiled code runs, so we need to load the non compiled \gp{squfof} file in GP: \begin{verbatim} ? \r pari/examples/squfof.gp *** unexpected character: squfof(n)=if(isprime(n),retur ^-------------------- \end{verbatim} Why?? Because \gp{squfof} already exists as an installed function and GP refuses to overwrite it. To solve this problem, we will add a suffix to the name of the compiled function under GP. Quit the session and type: \cmd{./gp2c-run -g -s\_c pari/examples/squfof.gp} Now the function squfof is named squfof\_c instead, so we can do \begin{verbatim} parisize = 4000000, primelimit = 500000 ? \r pari/examples/squfof.gp ? # timer = 1 (on) ? squfof(122294051504814979) [20137] [20137, 3445] i = 46474 Qfb(321233929, 131349818, -367273962, 0.E-28) time = 5,810 ms. %1 = 73823023 ? squfof_c(122294051504814979) [20137] [20137, 3445] i = 46474 Qfb(321233929, 131349818, -367273962, 0.E-28) time = 560 ms. %2 = 73823023 \end{verbatim} So the compiled version is more than ten times faster than the noncompiled one. However for more complex examples, compiled code usually runs only three times faster on average. An extra trick: once you have run \path{gp2c-run} on your script, it is compiled and you can use the compiled version outside \path{gp2c-run} in any GP session by loading the file with extension \path{.gp.run}. For example quit the \path{gp2c-run} session and start \path{gp} and do \begin{verbatim} parisize = 4000000, primelimit = 500000 ? \r pari/examples/squfof.gp.run \end{verbatim} Now you have access to the compiled function \gp{squfof\_c} as well. \subsection{How can I compile directly with \gpcc ?}\label{compile_directly} Now we want to compile directly with \path{gp2c} to understand what happens. We should run the command {\bf ./gp2c pari/examples/squfof.gp \verb!>! squfof.gp.c} This creates a file squfof.gp.c in the \path{gp2c} directory. Now read this file with your favorite editor. The first line is highly system-dependent, but should be similar to: {\small \begin{verbatim} /*-*- compile-command: "/usr/bin/gcc -c -o pari/examples/squfof.gp.o -O3 -Wall -I/usr/local/include pari/examples/squfof.gp.c && /usr/bin/gcc -o pari/examples/squfof.gp.so -shared pari/examples/squfof.gp.o"; -*-*/ \end{verbatim} } This is the command needed to compile this C file to an object file with the C compiler and then to make a shared library with the linker. If you use \path{emacs}, typing 'M-x compile' will know about this command, so you will just need to type {\tt Return} to compile. The second line is \begin{verbatim} #include \end{verbatim} This includes the PARI header files. It is important that the header files come from the same PARI version as GP, else it will create problems. The next lines are {\small \begin{verbatim} /* GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so"); GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so"); */ \end{verbatim} } The characters "GP;" denote a command that should be read by GP at start-up. Here, the \gp{install()} commands above must be given to GP to let it know about functions defined by the library. \path{gp2c-run} copy such commands to the file \path{./pari/examples/squfof.gp.run}. Please read the entry about the \gp{install()} command in the PARI manual. The \gp{init\_squfof} function is an initialization function that is created automatically by \gpcc\ to hold codes that is outside any function. Since in our case there are none, this is a dummy function. In other cases, it is essential. The next lines are \begin{verbatim} GEN squfof(GEN n, long prec); void init_squfof(void); /*End of prototype*/ \end{verbatim} This is the C prototypes of your functions. The rest of the file is the C code proper. For teaching purpose, let's run the command {\bf ./gp2c -s\_c pari/examples/squfof.gp \verb!>! squfof2.gp.c} and look at the difference between squfof.gp.c and squfof2.gp.c: \cmd{diff -u squfof.gp.c squfof2.gp.c} {\small \begin{verbatim} --- squfof.gp.c Tue Feb 26 13:44:42 2002 +++ squfof2.gp.c Tue Feb 26 13:44:49 2002 @@ -1,8 +1,8 @@ /*-*- compile-command: "/usr/bin/gcc -c -o pari/examples/squfof.gp.o -DMEMSTEP=1048576 -g -Wall -Wno-implicit -I/usr/local/include pari/examples/squfof.gp.c && /usr/bin/ld -o pari/examples/squfof.gp.so -shared pari/examples/squfof.gp.o"; -*-*/ #include /* -GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so"); -GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so"); +GP;install("squfof","D0,G,p","squfof_c","./pari/...les/squfof.gp.so"); +GP;install("init_squfof","v","init_squfof_c","./par.../squfof.gp.so"); */ GEN squfof(GEN n, long prec); void init_squfof(void); \end{verbatim} } If you are not familiar with the \path{diff} utility, the above means that only the two lines starting with \gp{GP;install} have changed. In fact \gp{squfof} is still named \gp{squfof} in the C file, but the install command tells GP to rename it \gp{squfof\_c} in the GP session. \subsection{Using \gpcc\ to find errors in GP scripts}\label{find_errors} The \path{gp2c} compiler can also be used to find errors in GP programs. For that we should use the -W option like in {\bf ./gp2c -W pari/examples/squfof.gp \verb!>! squfof.gp.c} \begin{verbatim} Warning:pari/examples/squfof.gp:7:variable undeclared p Warning:pari/examples/squfof.gp:11:variable undeclared dd Warning:pari/examples/squfof.gp:11:variable undeclared d Warning:pari/examples/squfof.gp:11:variable undeclared b ... Warning:pari/examples/squfof.gp:45:variable undeclared b1 \end{verbatim} This option lists variables that are used but not declared. It is important to declare all your variables with \gp{my()}, or with \gp{global()}. For \gpcc , undeclared variables are taken to be ``formal variables'' for polynomials. For example if you write a function to build a second degree polynomial like \begin{center} \verb!pol(a,b,c)=a*x^2+b*x+c! \end{center} you must not declare 'x' here, since it stands for the formal variable \gp{x}. \subsection{Using compiled functions in a new program}\label{compiled_in_new_program} One you have successfully compiled and tested your functions you may want to reuse them in another GP program. The best way is to copy the install commands of the functions you use at the start of the new program so that reading it will automatically load the compiled functions. As an example, we write a simple program \path{fact.gp} that reads {\small \begin{verbatim} install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so"); fact_mersenne(p)=squfof(2^p-1) \end{verbatim} } and run GP: \begin{verbatim} parisize = 4000000, primelimit = 500000 ? \rfact ? fact_mersenne(67) i = 2418 Qfb(10825778209, 4021505768, -13258245519, 0.E-28) %1 = 193707721 \end{verbatim} So all goes well. But what is even better is that \gpcc\ understands the \gp{install} command and will be able to compile this new program. Also this particular example will fail because as stated above, PARI/GP already has a \pari{squfof} function, and the linker will pick the wrong one, which is unfortunate. So use the -p option to \path{gp2c-run} to change \gp{squfof} to \gp{my\_squfof}. \cmd{ ./gp2c-run -pmy\_ -g pari/examples/squfof.gp} This option prefixes my\_ to every GP name in the program so as to avoid name clashes. Change \path{fact.gp} to {\small \begin{verbatim} install("my_squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so"); fact_mersenne(p)=squfof(2^p-1) \end{verbatim} } and run \cmd{./gp2c-run -g fact.gp} \begin{verbatim} parisize = 4000000, primelimit = 500000 ? fact_mersenne(67) i = 2418 Qfb(10825778209, 4021505768, -13258245519, 0.E-28) %1 = 193707721 \end{verbatim} Nice isn't it? But it gets even better: instead of writing the \gp{install} command directly in your script you can just load the \path{squfof.gp.run} using \verb!\r!: just change \path{fact.gp} to {\small \begin{verbatim} \r ./pari/examples/squfof.gp.run fact_mersenne(p)=squfof(2^p-1) \end{verbatim} } \subsection{Hand-editing the C file generated by \gpcc} If you have some experience in PARI programming, you may want to manually edit the C file generated by \gpcc , for example to improve memory handling. Here some tips: \begin{itemize} %\item The C file created with gp2c-run is name \textit{file}.gp.c. To avoid %subsequent run of gp2c-run accidently clobbering it, it is advised to rename %this file to \textit{file}.c, and change the \gp{install()} \item If you preserve the \gp{install()} at the start of the file, you can use the command \cmd{gp2c-run \textit{file}.c} to recompile your file and start a new GP session with your functions added, just as you use \cmd{gp2c-run} with GP scripts. \item More generally, \cmd{gp2c-run} automatically passes any line in the C file starting with 'GP;' to GP at start-up. \item As explained in Section~\ref{compile_directly}, under \textbf{emacs} you can type 'M-x compile' to recompile the shared library. \end{itemize} \section{Advanced use of \gpcc}\label{advanced} \subsection {\gpcc\ types} Internally \gpcc\ assign types to objects. The most common types are given below: \begin{tabular}{l|l} name & description \\ \hline \gp{void} & like in C \\ \gp{bool} & boolean, true (1) or false (0) \\ \gp{negbool} & antiboolean, true (0) or false (1) \\ \gp{small}& C integer \pari{long} \\ \gp{int} & multiprecision integer \\ \gp{real} & multiprecision floating point \\ \gp{mp} & multiprecision number \\ \gp{var} & variable \\ \gp{pol} & polynomial \\ \gp{vecsmall} & vector of C long (\pari{t\_VECSMALL}) \\ \gp{vec} & vector and matrices (excluding \gp{vecsmall})\\ \gp{list} & GP lists \\ \gp{str} & characters string as a \pari{char *}\\ \gp{genstr} & characters string as a \pari{GEN} (\pari{t\_STR})\\ \gp{gen} & generic PARI object (\pari{GEN})\\ \gp{lg} & length of object (returned by \gp{length}) \\ \gp{typ} & type of object (returned by \gp{type}) \\ \end{tabular} \begin{table}[hbpt] $$ %HEVEA \begin{toimage} \unitlength=1.mm \begin{picture}(12,50)(-6,0) \put(6,50){\makebox[0mm]{gen}} \put(6,44){\line(0,1){5}} \put(6,40){\makebox[0mm]{mp}} \put(-2,44){\line(1,1){5}} \put(-3,40){\makebox[0mm]{vec}} \put(-9,44){\line(2,1){12}} \put(-9,40){\makebox[0mm]{pol}} \put(-9,34){\line(0,1){5}} \put(-9,30){\makebox[0mm]{var}} \put(12,30){\makebox[-1.5mm]{real}} \put(12,34){\line(-1,1){5}} \put(0,30){\makebox[-1.5mm]{int}} \put(0,34){\line(1,1){5}} \put(0,20){\makebox[1mm]{small}} \put(0,24){\line(0,1){5}} \put(0,10){\makebox[1mm]{bool}} \put(-8,17){\line(1,1){4}} \put(-15,15){\makebox[1mm]{negbool}} \put(-4,11){\line(-1,1){4}} \put(0,14){\line(0,1){5}} \put(0,00){\makebox[1mm]{void}} \put(5,01){\line(1,4){7}} \put(0,04){\line(0,1){5}} \end{picture} %HEVEA \end{toimage} %HEVEA \imageflush $$ \caption{Types preorder}\label{preorder} \end{table} Types are preordered as in Table~\ref{preorder}. The complete preorder known by \gpcc\ can be accessed by running \cmd{gp2c -t}. Variables are typed. A variable can only take values having a type equal or lower than its type. By default, variables are of type \gp{gen}. \subsection{Type declaration} To declare a variable as belonging to type \gp{type}, use: \begin{quote} \textit{function}(x\textit{:type},y\textit{:type}=2) \\ my(x\textit{:type}, y\textit{:type}=2) \\ global(x\textit{:type}, y\textit{:type}=2) \\ for(i\textit{:type}=... \end{quote} To declare several variables of the same type \gp{type} at once, use: \begin{quote} my(x, y=2)\textit{:type}\\ global(x, y=2)\textit{:type} \end{quote} You can even mix the two ways: \begin{quote} my(x, y:\textit{type2}=2)\textit{:type1} \end{quote} will declare \gp{x} to be of type \gp{type1} and \gp{y} of type \gp{type2}. \subsection{Effect of types declaration on default values} Under GP, all GP variables start with a default value, which is \gp{0} for a local variable and \gp{'v} for a global variable \gp{v}. The \gpcc\ compiler follows this rule for variables declared without a type. However, when a variable is declared with a type, \gpcc\ will not assign it a default value. This means that the declaration \gp{my(g)} is equivalent to \gp{my(g:gen=0)}, but not to \gp{my(g:gen)}, \gp{my(g)} is equivalent to \gp{my(g:gen='g)}, but not to \gp{my(g:gen)}, and \gp{f(g)=...} is equivalent to \gp{f(g:gen=0)=...}, but not to \gp{f(g:gen)=...}. This rule was chosen for several reasons: \begin{itemize} \item The default value (\gp{0} or \gp{'v}) might not be an object suitable for the type in question. For example, \gp{my(v:vec)} declares \gp{v} as being of type \gp{vec}. It would make no sense to initialize \gp{v} to \gp{0} since \gp{0} does not belong to type \gp{vec}. Similarly \gp{global(N:int)} declares \gp{N} as being of type \gp{int}. It would make no sense to initialize \gp{N} to \gp{'N} since \gp{'N} does not belong to type \gp{int}. \item This allows defining GP functions with mandatory arguments. This way, GP will issue an error if a mandatory argument is missing. Without this rule, there is no way to tell apart \gp{0} from a missing argument. \item This allows telling \gpcc\ not to generate useless default values. \end{itemize} \subsection{Type casting} Sometimes, we know a more precise type than the one the transtyping algorithm can derive. For example if \gp{x} is a real number, its logarithm might be complex. However, if we are sure \gp{x} is positive, the logarithm will be real. To force an expression to belong to type \gp{type}, use the syntax: \\ \textit{expr}\textit{:type}\\ \gpcc\ will check types consistency and output warnings if necessary. For example\\ \gp{f(x:int)=my(r:real); r=log(x\^{}2+1)}\\ \gpcc\ will complain that the logarithm might not be real. Since \gp{x\^{}2+1} is always positive, we can write:\\ \gp{f(x:int)=my(r:real); r=log(x\^{}2+1):real} \subsection{Example of optimisation} Declaring the types of variables allow \gpcc\ to perform some optimisations. For example, the following piece of GP code \begin{verbatim} rho(n)= { my(x,y); x=2; y=5; while(gcd(y-x,n)==1, x=(x^2+1)%n; y=(y^2+1)%n; y=(y^2+1)%n ); gcd(n,y-x) } \end{verbatim} generates the following output: \begin{verbatim} GEN rho(GEN n) { GEN x = gen_0, y = gen_0; x = gen_2; y = stoi(5); while (gequal1(ggcd(gsub(y, x), n))) { x = gmod(gaddgs(gsqr(x), 1), n); y = gmod(gaddgs(gsqr(y), 1), n); y = gmod(gaddgs(gsqr(y), 1), n); } return ggcd(n, gsub(y, x)); } \end{verbatim} The functions \pari{gsqr}, \pari{gaddgs}, \pari{gmod}, \pari{ggcd} are generic PARI functions that handle \gp{gen} objects. Since we only want to factor integers with this method, we can declare \gp{n}, \gp{x} \and \gp{y} of type \gp{int}: {\noindent\tt rho(n\textit{:int})=\\ \verb!{!\\ \verb! my!(x\textit{:int},y\textit{:int});} \begin{verbatim} x=2; y=5; while(gcd(y-x,n)==1, x=(x^2+1)%n; y=(y^2+1)%n; y=(y^2+1)%n ); gcd(n,y-x) } \end{verbatim} The new C code output by \gpcc\ is: \begin{verbatim} GEN rho(GEN n) /* int */ { GEN x, y; /* int */ if (typ(n) != t_INT) pari_err(typeer, "rho"); x = gen_2; y = stoi(5); while (gequal1(gcdii(subii(y, x), n))) { x = modii(addis(sqri(x), 1), n); y = modii(addis(sqri(y), 1), n); y = modii(addis(sqri(y), 1), n); } return gcdii(n, subii(y, x)); } \end{verbatim} Now, the code now uses the more specific functions \pari{sqri}, \pari{addis}, \pari{modii} and \pari{gcdii}. The most efficient way to use typing is to declare some variables of type \gp{small}. This way, these variables will be implemented by C \pari{long} variables, which are faster than PARI integers and do not require garbage collecting. However, you will not be protected from integer overflow. For that reason, \gpcc\ will automatically declare some loop indices of type \gp{small} when the range cannot cause overflow. Sometimes \gpcc\ can be too conservative but you can force a loop index to be \gp{small} with the syntax \gp{for(i:small=a,b,...)}. \subsection{Types and member functions} For use with members functions, \gpcc\ provides the following types: \begin{description} \item[nf] for ordinary number fields, i.e., a result given by the GP function \gp{nfinit}. \item[bnf] for big number fields, i.e., a result given by the GP function \gp{bnfinit} which includes class and unit group data. \item[bnr] for ray class groups, i.e., a result given by the GP function \gp{bnrinit}. \item[ell] for elliptic curves, i.e., a result given by the GP function \gp{ellinit}. \item[gal] for galois extensions, i.e., a result given by the GP function \gp{galoisinit}. \item[prid] for prime ideals, i.e., a component of the result given by the GP function \gp{idealprimedec}. \end{description} Members functions on typed objects are much more efficient. \section{Common problems} \subsection{Meta-commands.} Meta-commands (commands starting with a \verb!\!) other than \verb!\r! are currently ignored by \gpcc, though a warning will be issued, because it is not clear what they should do in a compiled program. Instead you probably want to run the meta-command in the GP session itself. The meta-command \verb!\r!\textit{include} is replaced with the content of the file \textit{include} (or \textit{include}.gp) when \gpcc\ reads the file. If you would prefer \gpcc\ to link \textit{include}.so to the program instead, see Section~\ref{compiled_in_new_program}. \subsection{Unsupported functions.}\label{unsupported_funcs} Some GP functions are not yet available to C programs, so the compiler cannot handle them. If you use them you will get the error "unhandled letter in prototype". These are currently \gp{forfactored} and \gp{forsquarefree}. The functions \gp{forell}, \gp{forsubgroup} and \gp{forqfvec} are currently not implemented as an iterator but as a procedure with callbacks, which limits what you can do inside the loop. The \gp{forstep} function is supported when the step is a number. If it is a vector, you must add a tag \gp{:vec} to make GP know about it like in \begin{verbatim} f(x)= { my(v); v=[2,4,6,6,6,6,6,2,4,6,6] forstep(y=7,x,v:vec,print(y)) } \end{verbatim} This is not needed if the step is a vector or a variable of type vec, but is needed if the step is only an expression which evaluates to a vector. Some functions are passed to GP by \path{gp2c-run} at start-up (using the \pari{GP;} syntax) instead of being translated in C: \gp{install} and \gp{addhelp}. In practice, they can be considered as supported. Also the functions \gp{read, eval, kill} may compile fine but have a surprising behaviour in some case, because they may modify the state of the GP interpreter, not of the compiled program. Please see Section~\ref{global_variables} for details. For example \verb!f(n)=eval("n^2")! is very different from \verb!f(n)=n^2!. To read files at compile-time use \verb!\r! instead of \gp{read}. \subsection{Dynamically-scoped local variables.}\label{dynamic_variables} Currenlty \gpcc\ does not support dynamically-scoped local variables declared with \gp{local()}. Instead \gp{local()} is treated as an alias for \gp{my()} which declares statically-scoped local variables. Supporting dynamically-scoped local variables is cumbersome to do in C. \subsection{Memory handling and global variables.}\label{global_variables} While a lot of work has been done to ensure that \gpcc\ handles global variables properly, the use of global variables is still a lot of trouble, so try to avoid them if you do not understand the implications on memory handling. First, there is a common practice to use undeclared variables as formal variables, for example we assume \gp{x='x} and write \gp{a*x+b} instead of \gp{a*'x+b}. So \gpcc\ will not raise an undeclared variable to the rank of global variable unless you declare it with the \gp{global()} command, or you use it at toplevel (i.e. outside any function). See also Section~\ref{find_errors} Second, global variables seen by a compiled function are C variables, not GP variables. There is no connection between the two. You may well have two variables with the same name and a different content. Currently GP knows only how to install functions, not variables, so you need to write compiled functions in order to access global variables under GP. Basically, global variables are allocated in the main stack which is destroyed each time GP prints a new prompt. This means you must put all your commands on the same line. Also global variables must be initialized using the \gp{init\_}\verb!! function before being used, and are only supported with the -g flag. So you end up doing \cmd{gp2c-run -g global.gp} \begin{verbatim} parisize = 4000000, primelimit = 500000 ? init_global();myfunction(args); \end{verbatim} Note that nothing prevents you from calling \gp{init\_global} in the GP program. In that case, you can omit the parentheses (i.e, write \gp{init\_global}, not \gp{init\_global()}) so that you can still run your noncompiled program. Another way to handle global variables is to use the \gp{clone} function which copies a PARI object to the heap, hence avoids its destruction when GP prints a new prompt. You can use \gp{unclone} to free a clone. Please read the PARI/GP manual for more information about \gp{clone}. A good use of \gp{clone} is for initializing constant variables: for example in \path{test/gp/initfunc.gp}, the vector \gp{T} is initialized by \begin{verbatim} T=clone([4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]) \end{verbatim} You must still run the \gp{init\_}\verb!! after starting GP, but after that you can use \gp{T} safely. GP itself currently does not know about \gp{clone} and \gp{unclone}, but you can use dummy functions \begin{verbatim} clone(x)=x unclone(x)=while(0,) \end{verbatim} when running uncompiled. \subsection{Support for \pari{t\_VECSMALL}} When accessing the component of a \pari{t\_VECSMALL}, it is necessary that that the object has been declared of type \gp{vecsmall}. For example \gp{ my(v); v = vecsort(V,,1); print(v[1]) } does not work, but \gp{ my(v:vecsmall); v = vecsort(V,,1); print(v[1]) } or \gp{ my(v:vecsmall); v = vecsort(V,,1); print(v:vecsmall[1]) } works. \subsection{GP lists} GP lists and maps are not fully supported by \gpcc . A partial support is available with the \gp{list} type. You must tell \gpcc\ that a variable will contain a list or a map by using \gp{L:list} inside a declaration, where \gp{L} is the name of the variable as explained in Section~\ref{advanced}. Currently, assigning to a list element (\gp{L[2]=x}) will not work and lists and maps will not be freed unless you explicitly use \gp{listkill}. Note: The PARI user's manual states that lists are useless in library mode. \subsection{The \gp{install} command} The \gp{install} command is interpreted as a \gpcc\ directive. This allows using installed function in compiled programs, see Section~\ref{compiled_in_new_program}. However this has some side-effects: \begin{itemize} \item If present, the \gp{lib} argument must be a string, not an expression that evaluate to a string. \item The \gp{install} command is not compiled, instead it is added to the list of functions to install. \end{itemize} \subsection{What about \pari{main()} ?} There are two different issues with \pari{main()}: first this is reserved function name in C, so using it with \gpcc\ will cause a name clash. To avoid this, either rename it or use the flag -p. Secondy \gpcc\ has no support for generating stand-alone GP programs. However adding manually a \pari{main()} C function is not difficult in general. \section{Command-line options of \gpcc} Here is a brief description of the main options of \path{gp2c}, which can be seen with \path{./gp2c -h}. In Section~\ref{compile_and_run} we saw how to use the \path{-g} option. \begin{itemize} \item -g tells \gpcc\ to generate \pari{gerepile} calls to clean up the PARI stack and reduce memory usage. You will probably need this option, although the C code will be easier to read or hand-edit without it. \item -o\textit{file} tells \gpcc\ to write the generated C file to the file \textit{file} instead of the standard output. \item -iN allows you to change the indentation of the generated C file. So if you want 4 spaces, just use the \path{-i4} option with \path{gp2c}. The default is 2. \item -C adds code to perform range checking for GP constructs like \gp{x[a]} and \gp{x[a,b]}. This also checks whether \gp{x} has the correct type. By default \gpcc\ does not perform such check, which can lead to a runtime crash with invalid code. This option causes a small runtime penalty and a large C code readability penalty. \item -L adds compiler directives to the code so that warning and error found by the compiler are prefixed with the line number in the original GP file instead of the C file. \item -W is useful for debugging the .gp file, in the sense that it detects if some local variables are undeclared. For example, if the file \path{algorithm.gp} has a routine like \begin{verbatim} radical(x)=F=factor(x)[,1];prod(i=1,length(F),F[i]) \end{verbatim} The variable 'F' is undeclared in this routine, so when running \path{gp2c} with the \path{-W} option it prints \noindent{\bf Warning:algorithm.gp:1:variable undeclared F} At present, an undeclared variable is taken to be a "formal variable" for polynomials by \path{gp2c}, so do not declare it if that is what you intend. For example in \verb!pol(a,b,c)=a*x^2+b*x+c! you must not declare \gp{x} since it stands for the formal variable \gp{'x}. \item -p\textit{prefix} A problem with C is that it is subject to name clashes, i.e., if a GP variable in your routine has the same name as a C symbol in the pari library, the compiler will report strange errors. So this option changes ALL user variables and user routine names by adding a prefix \textit{prefix} to them. For example the GP routine \gp{add(x,y)} with \cmd{-pmy\_} will become the C function \pari{my\_add(x,y)}. Try this option each time the compiler fails to compile \path{gp2c} output to see if there is a name conflict. If this is the case, change the name in your GP script. It may be difficult to find conflicting names if your compiler is not verbose enough and if you are not familiar with the PARI code and C in general. Example of conflicting names are \pari{top},\pari{bot},\pari{prec},\pari{un}, but there are thousands of others and they may be system-dependent. \item -s\textit{suffix}: Add \textit{suffix} to the names of the installed functions under GP. This is to avoid clashes with the original GP script. For example, if you want to compare timings you may want to use the option \cmd{-s\_c} This does not affect the C code, only the \gp{install} commands. \item -S: Assume strict prototypes for functions. This is related to the 'strictargs' GP default. This makes all arguments of functions defined in the file mandatory unless the function supplies an explicit default value. This does not affect the C code, only the prototype code in the \gp{install} commands. In this example, the prototype code changes from "D0,G,DG" to "GDG". \begin{verbatim} test(data,flag=0)={CODE} \end{verbatim} \item -h gives the help. \item -v gives the \gpcc\ version. \item -l prints a list of all the GP functions known by the compiler. So if a routine contains a GP routine not on this list, \path{gp2c} will show an error when trying to translate it. Reasons why a GP function may not be known by the compiler are: \begin{itemize} \item The function is not part of the PARI library. See Section~\ref{unsupported_funcs} \item You use the old PARI 1.39 function names instead of the new ones. \gpcc\ currently does not know about the 'compat' default. Use \gp{whatnow} under GP to get the current name. For example, \gp{mod()} is now \gp{Mod()}. \item You use a GP function that does not exists in the GP version \gpcc\ was compiled against. Please recompile \gpcc\ against this GP version. Normally no functions are added between two stable releases of GP with the same minor version number (say 2.1.1 and 2.1.2) so there is no need to recompile \gpcc\ when you upgrade. But if you use the developement versions, you need to recompile. Also some new developement versions may break old versions of \gpcc, so upgrade gp2c\ at the same time. However, if you want to compile scripts which do not use the new functions, you do not need to recompile. Note that you may use the GP environment variables to tell \path{gp2c-run} which GP to use. \end{itemize} \item -t Output the table of types known to the compiler, see Section~\ref{advanced}. \end{itemize} \end{document} gp2c-0.0.12/doc/type001.png0000644000175000017500000000620513364603722012034 00000000000000‰PNG  IHDRŒÑÃÞ¢ gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿ‡Ì¿ pHYsaa¨?§itIMEâ 6¼h®ø OIDATxÚíA¨ÜÖ†?Ý6àjÞ¦MiŠHœEÁ¸¤‹øÁ#JÅiJ1iwFÆ¥´bJ© ·¥›l¼hÞB»<è"«1Ù¾Ú¥S.ÝdÓ"RžááŽ)Áp1©™â>ŠÝÅHiF£¹’®¤«ñÌèiÎüúϹçœ{ï¹ !§ >sW|wݽZ €“zÇÅV‘†îã5­¨SÆr @–Aã@ï²Ûu%ð‰½OÿL®½ÁK²kú[W¹â_¼Qdäκ¶P«,µžkÙ«xŒ«r¾·Ž“ŒaÒøäF¾¦ÙïPLê}ËC30:[K£öñ,õS¤A– É f˜*sD…ñ¿a± §4,ë °ß„ûç[³¬ˆÝŠü`ÉhQ,®Ö°Š‹kW¶³2]i â„W­LÛT=tžÅIÕ[쥂öZa«Sç6ñU×fe2‘Š®#\Hh*%ŽÓ–Ñš[8øˆ¥aXEPmobÀ†&nšÐçIêßMܤòBPÛ“WÔÄÅ×@@"®ÔÈ»Ý&1ÛÀ|Âc9åd2£†à,±ùŠ©8Ýž›È¢aETwØ2ø½è•ì™­V(F‰œU÷ãúIdÚLº!Ägl VØÝ­?žð€Ã¤Ð!«N”x¥Í¦ÒÏ®Ž[–uÕzL³é,"ÛK îNÆôT»J¤ÇÑ’Pí= iX‡ ÷+VzEÕʼn_GœéCõ£~d9ÊRøxÀ8ó˜N€)DõмG8Åg‚Ï$uXL£XÍM!£’Î-øKý'#åk‰XCÎ6ïRSB[âÍ'9ï=¶E‘N:²%EKZ馋SËèKd›c&¸H`šãi2òµ¬˜RN_ð‰ÀAâã”}\^4È…2zúéË”ŸÕñçà'×ùîö# U¸½j‘^3r¥}zJ=\Ì!ã'¤Ljëìäæâ§k§´/ðOà—|‡K\á"?æï|—/ó—«»¢õ³¹õžþe¯fQ?0¡¹\*tT·82›E>njäu! –ó¥†p(Ƅįg‘2~´&V0‚(@ꌆ²`™toG«’u¿º®~gÁ2žE_¬,²¶VÙv‹ÇZÜTÓ¿ô)³âÝíÃEÃŽN·¦Ìîwo9Bß¿˜ÌNp™Z?Ìpä¦%ÙÐ k°rÚåÌ*&Íh|ŒŸ¸ºº åðd·ÊL¢'`œŠ¶;ð¹N„CÇ…‡¶„ “l³ã •ö†Ý*’^ÞÚ¡8Zs*-(Ò¡*˳þ¨ä–F:P%XáEœ¶½K°ò [WÅéKŠ6HÉÅžf‡ºag<—gO£Î¦>ǹˆ B~ê.Fð–¦Dg¹Rˆ@®ãPS$w1 îð2p.õÞOùðMö‘¼Å›G’»ÔFÆ)LÑ<­ôMšñE#ö31k…Õ–·Åx®è©Jª8Íä᪖*†Õ)«Ì^eow£Ìª)²ƒö•)š­;hW™u‡í)ãhÌaÞnGÝÔk^™2±p+ÝÀôeSvVôDêÁ-ËWGÈs™-Ïž-ð›-ù[Ž’gÑ®ƒZƒÓ4Ú82+ÄNʪïD!¥¿ryŽLE»R9…öþ|·üMeŽQì ØÑü bmó˜Cö€7Ù-ÿ•iWÆÓlÓ´G¹˜Ç³IY-‰kFîÙ„ ö ãÙD`i2÷ìA¦‡§ª=¤®Ó=±~ˆ”m;½¢•Ò÷šRF,Å0n—€û™]O!™é׎oë#×Üȼû8_–¾u—9=ákÀù”sø>ÿå‡Üåÿã{|«ÀÕÜxøf×oÀ['c{T¡-UtƦ£¶PÑQÆmë5v®^÷ò\Íè(ã aóô[µ‘=_ì?DÕ€潇T²ß`¶û@Ï›ª:ŒÉήŻÑ%óáe6%Öl, œ #ðR ¶ñÒôqô¹ŽBë”)QÐY°õ¸–2Ƶ?®¡LE¶ê›¿‰t:Ù¯§Žîæ ©àê\tÎ7éKýöì~¨ñ ®µ—xÄ ÒÛg´ÍÚlªâ& f½»ß+óÌŠ£‘)n÷„Žª:´[9o“2_²é1¹6)ƒ=)°I™ó6™¶k“2qƪ#µ†e5Ò“QÃEvi֋ʨn÷›Å¾³@¢úõã‚É6î\q¢Õ_*ªÐ†Dt6_ܹ_•_¹t¦÷ÀóWv8äÝhjËßVr€qÁü(@³å§zÈ¿nrœ¼3þÆEàú62d‡©Î3΄¦s¶~ƒâ˜OfûãCœÜOÂ5ïÚT@î®Ü_|TÐk}CYÍr l 0ë) J¯™™Ëz@ª€ÒK`M0Ònv¯Bž£6½±§ÇÀT¤.([à 2È K"ûÓ³)@ýꙓ©¤ˆMä„`J¼Q`õ…Ì2&^d4N]ë#q£Y ©¹–0’R¦»¤‹5Æò /õJej°s Gu·ôg²dµÅÚ®Š¶×¦ué…ŒT ¢¢£@唥§ÉäÓìÚqt6•Dhž0ßwÌIÔç)!î’.ƒ{ퟫ¤ƒààá§Nœ-Y¬Û’à}~Õ‡çoöxÊ4:µ/*€O¸À”²ŒÑ¸ºkÆìñ„¸MïM^ä,»ü¹Àe*nq‹Ï©3™ð[»™²¸ Ãâ3~Ák’GÜå'ü€càSnð#~Ï.ð2>Ÿñ×8&nkó:ŠëK¯b9¶"®¾W‡ñ¨y ¬ls¬¢­ZÁÂ+“cT»|YµÚ!Ý+Ûk..ÿáÏó›èõ9ÞãÕÌ+›Ä¨‰÷¨-7Çr‚$¯àUüžì”1^ÙSrtšw™jŽuÀõÌùôå€Ù©iH»vçGÝ,V÷LŸª´)àô¨^×&8=áËzpª„ÆùÒe¡êÎi3G¼ê4h–ê2—nÔÈ9Ýa]S„Þ›‘žy,·AXß¡·nW˜‘ÛA§)†òÅ’az´Á°xÛp:°j—/›Ì˜š|1È–™RÍz4Òv1¦v`7ø²MŒ1Œ¾l c†ü¨Ù|z4˜ÑÀ—fÌb{ƒi¦³u|NY4Á;³ÜÌvŸl×Í=Üp ø’×Ì6]ã·µU›Õy½,6³]¬ñÆmm§„ÃöšVåÿkl©bþÌÈ%tEXtdate:create2018-10-26T14:25:54+02:00Ô¥ 3%tEXtdate:modify2018-10-26T14:25:54+02:00¥øtEXtSoftwareGPL Ghostscript 9.20±óË‚IEND®B`‚gp2c-0.0.12/config/0000755000175000017500000000000013751742702010703 500000000000000gp2c-0.0.12/config/module-build0000755000175000017500000000124513751742702013135 00000000000000#! /bin/sh . "$1" if test "x$modules_build" = "x"; then # /usr/bin/sed on solaris does not understand \+ case "$DLLDFLAGS" in *LIBPARI_SONAME*) mydlldflags=`echo "$DLLDFLAGS" | sed -e 's/-[^ \t][^ \t]*[= \t][ \t]*\$(LIBPARI_SONAME)//'`;; *) mydlldflags=`echo "$DLLDFLAGS" | sed -e 's/-[^ \t][^ \t]*[ \t][ \t]*\$@//'`;; esac if test "$static" = "n"; then LIBS="$LIBS $LDDYN" fi myextradlldflags=`eval echo $EXTRADLLDFLAGS` myincludedir=`echo "$includedir" | sed -e 's/\/pari\/*$//'` echo "$CC -c -o %s.o $cflags -I$myincludedir %s.c && $DLLD -o %s.$DLSUFFIX $mydlldflags %s.o $myextradlldflags" else echo "$modules_build" | sed 's/"/\\"/g' fi gp2c-0.0.12/config/pari-version0000755000175000017500000000021513751742702013165 00000000000000#! /bin/sh . "$1" if [ "x$pari_release_verbose" = "x" ]; then version="unknown" else version="$pari_release_verbose" fi echo "$version" gp2c-0.0.12/config/depcomp0000755000175000017500000005601613751742702012210 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # 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, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gp2c-0.0.12/config/missing0000755000175000017500000001533013751742702012224 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # 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, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gp2c-0.0.12/config/pari-conf0000755000175000017500000000004413751742702012425 00000000000000#! /bin/sh . "$1" eval 'echo $'"$2" gp2c-0.0.12/config/ylwrap0000755000175000017500000001531213751742702012071 00000000000000#! /bin/sh # ylwrap - wrapper for lex/yacc invocations. scriptversion=2013-01-12.17; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # Written by Tom Tromey . # # 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, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . get_dirname () { case $1 in */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; # Otherwise, we want the empty string (not "."). esac } # guard FILE # ---------- # The CPP macro used to guard inclusion of FILE. guard () { printf '%s\n' "$1" \ | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ -e 's/__*/_/g' } # quote_for_sed [STRING] # ---------------------- # Return STRING (or stdin) quoted to be used as a sed pattern. quote_for_sed () { case $# in 0) cat;; 1) printf '%s\n' "$1";; esac \ | sed -e 's|[][\\.*]|\\&|g' } case "$1" in '') echo "$0: No files given. Try '$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input=$1 shift # We'll later need for a correct munging of "#line" directives. input_sub_rx=`get_dirname "$input" | quote_for_sed` case $input in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input=`pwd`/$input ;; esac input_rx=`get_dirname "$input" | quote_for_sed` # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot=false if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot=true fi # The parser itself, the first file, is the destination of the .y.c # rule in the Makefile. parser=$1 # A sed program to s/FROM/TO/g for all the FROM/TO so that, for # instance, we rename #include "y.tab.h" into #include "parse.h" # during the conversion from y.tab.c to parse.c. sed_fix_filenames= # Also rename header guards, as Bison 2.7 for instance uses its header # guard in its implementation file. sed_fix_header_guards= while test $# -ne 0; do if test x"$1" = x"--"; then shift break fi from=$1 # Handle y_tab.c and y_tab.h output by DOS if $y_tab_nodot; then case $from in "y.tab.c") from=y_tab.c;; "y.tab.h") from=y_tab.h;; esac fi shift to=$1 shift sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" done # The program to run. prog=$1 shift # Make any relative path in $prog absolute. case $prog in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog=`pwd`/$prog ;; esac dirname=ylwrap$$ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then for from in * do to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend '../'. case $to in [\\/]* | ?:[\\/]*) target=$to;; *) target=../$to;; esac # Do not overwrite unchanged header files to avoid useless # recompilations. Always update the parser itself: it is the # destination of the .y.c rule in the Makefile. Divert the # output of all other files to a temporary file so we can # compare them to existing versions. if test $from != $parser; then realtarget=$target target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` fi # Munge "#line" or "#" directives. Don't let the resulting # debug information point at an absolute srcdir. Use the real # output file name, not yy.lex.c for instance. Adjust the # include guards too. sed -e "/^#/!b" \ -e "s|$input_rx|$input_sub_rx|" \ -e "$sed_fix_filenames" \ -e "$sed_fix_header_guards" \ "$from" >"$target" || ret=$? # Check whether files must be updated. if test "$from" != "$parser"; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$to is unchanged" rm -f "$target" else echo "updating $to" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the parser. This is a # blatant hack to let us support using "yacc -d". If -d is not # specified, don't fail when the header file is "missing". if test "$from" = "$parser"; then ret=1 fi fi done fi # Remove the directory. cd .. rm -rf $dirname exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gp2c-0.0.12/config/install-sh0000755000175000017500000003413713751742702012637 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gp2c-0.0.12/config/checkspaces0000755000175000017500000000101413751742702013021 00000000000000#! /bin/sh CFILES="`echo src/*.[chyl] |sed -e 's,src/\(parse\|lang\)\.[ch],,g'`" OFILES="ChangeLog AUTHORS README NEWS BUGS doc/gp2c.tex doc/type.tex" MFILES="*/Makefile.am Makefile.am" SCRIPTS="`echo scripts/*.in |sed -e 's,scripts/Makefile.in,,g'`" err=0; if grep ' $' $CFILES $OFILES $MFILES $SCRIPTS; then echo "BUG: trailing spaces found." err=1; fi if grep ' ' $CFILES $OFILES; then echo "BUG: TAB found." err=1; fi if grep ' $' $MFILES $SCRIPTS; then echo "BUG: TAB found in scripts." err=1; fi exit $err gp2c-0.0.12/config/compile0000755000175000017500000001632713751742702012212 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2018 Free Software Foundation, Inc. # Written by Tom Tromey . # # 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, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: gp2c-0.0.12/BUGS0000644000175000017500000000257313743651463010054 00000000000000Probably not countable. --- bittest(x:small,y:small) is wrong if y>31 --- x:small%y:small cannot use % in C because -2%3 would be wrong --- || and && are not always fully short-circuiting if second argument is a block. -- modifying loop index of vector does not work Things that are poorly implemented: ---------------------------------- --- Array (vector, matrix) may be disconnected in the stack. --- vector() and matrix() do not garbage collect. --- Garbage collecting should always be done after a loop. --- Code generated for "a=if(b,c,d)" constructs is ugly. --- user-defined member functions should be inlined --- local() variables are treated identically to my() variables. Thus the scope of local() variable after function call are not the same in GP and in C. Things that are not implemented: -------------------------------- --- a[b,]+=c --- issquare(4,&a[b,]) Discrepancy between gp2c and gp: -------------------------------- --- =\n= is allowed by gp, but not by gp2c. Don't cry. --- Spaces in middle of term like (a b==ab) are not allowed. Be sensible. --- gp2c does not allow functions named local() to be called. --- "error" output PARI errors, not user errors. --- gp2c is generally more lenient than gp about syntax. --- Do not catch misuse of GP 'global()' vars. --- Use of small may lead to overflow problems. --- return() can return 0 instead of nothing. gp2c-0.0.12/Makefile.in0000644000175000017500000006745413751742674011453 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/compile \ $(top_srcdir)/config/install-sh $(top_srcdir)/config/missing \ AUTHORS COPYING ChangeLog INSTALL NEWS README config/compile \ config/depcomp config/install-sh config/missing config/ylwrap DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src desc scripts doc test test2 test3 test4 EXTRA_DIST = BUGS gp2c gp2c-run gp2c-dbg TESTS = scripts/runtest all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ col=$$red; res=XPASS; \ ;; \ *) \ col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ col=$$blu; res=SKIP; \ fi; \ echo "$${col}$$res$${std}: $$tst"; \ done; \ if test "$$all" -eq 1; then \ tests="test"; \ All=""; \ else \ tests="tests"; \ All="All "; \ fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="$$All$$all $$tests passed"; \ else \ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all $$tests failed"; \ else \ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ if test "$$skip" -eq 1; then \ skipped="($$skip test was not run)"; \ else \ skipped="($$skip tests were not run)"; \ fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ col="$$grn"; \ else \ col="$$red"; \ fi; \ echo "$${col}$$dashes$${std}"; \ echo "$${col}$$banner$${std}"; \ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ test -z "$$report" || echo "$${col}$$report$${std}"; \ echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-TESTS check-am clean clean-cscope \ clean-generic cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-generic distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-am uninstall uninstall-am .PRECIOUS: Makefile dist-hook: test -d $(distdir)/config || mkdir $(distdir)/config for i in $(srcdir)/config/*; do \ test -f $$i && $(INSTALL_SCRIPT) $$i $(distdir)/config; done checkspaces: config/checkspaces # 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: gp2c-0.0.12/gp2c0000755000175000017500000000042413623476440010140 00000000000000#! /bin/sh #This file is part of the GP2C package # #This stupid shell script is Public Domain. # if test ! -f src/gp2c; then cat <&2 gp2c has not been compiled. Please type ./configure make to compile it. EOF exit 1; fi GP2C_FUNC_DSC=desc/func.dsc exec src/gp2c "$@" gp2c-0.0.12/configure0000755000175000017500000056720313751742674011312 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for gp2c 0.0.12. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gp2c' PACKAGE_TARNAME='gp2c' PACKAGE_VERSION='0.0.12' PACKAGE_STRING='gp2c 0.0.12' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/gp2c.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS mybindir ECHOT ECHOC ECHON EGREP GREP CPP PARI_RUNTEST GP2C_DBG1 GP2C_DBG GP_PATH_DBG PARI_MODULE_DEBUG PARI_DESC PARI_DATADIR GP_PATH PARI_MODULE_BUILD PARI_VERSION PERL_PATH YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking with_perl with_paricfg with_paricfg_dbg ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS YACC YFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gp2c 0.0.12 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/gp2c] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gp2c 0.0.12:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-perl=FILE Perl is needed to compile the description files. But gp2c comes with precompiled descriptions for PARI 2.9, so can be used without perl. Default is to use perl if we find it. You can specify the path to perl with --with-perl=PATH. --with-paricfg=FILE Details about PARI configuration are needed to build plug-ins. Without them, gp2c itself can be compiled, but gp2c-run and 'make check' will not work. You must specify the path to the 'pari.cfg' file with --with-paricfg=PATH. --with-paricfg-dbg=FILE gp2c-dbg is more useful with the debugging version of PARI. You can specify the path to the 'pari.cfg' file of a debugging version with --with-paricfg-dbg=PATH while still using the optimised version with gp2c-run. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gp2c configure 0.0.12 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gp2c $as_me 0.0.12, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in config "$srcdir"/config; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gp2c' VERSION='0.0.12' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_config_headers="$ac_config_headers src/config.h" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 $as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 $as_echo "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "#define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" # Check whether --with-perl was given. if test "${with_perl+set}" = set; then : withval=$with_perl; fi if test "$with_perl" = "no"; then PERL_PATH=/bin/false elif test -x "$with_perl"; then PERL_PATH="$with_perl" else # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL_PATH+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL_PATH in [\\/]* | ?:[\\/]*) ac_cv_path_PERL_PATH="$PERL_PATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL_PATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PERL_PATH" && ac_cv_path_PERL_PATH="/bin/false" ;; esac fi PERL_PATH=$ac_cv_path_PERL_PATH if test -n "$PERL_PATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_PATH" >&5 $as_echo "$PERL_PATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Check whether --with-paricfg was given. if test "${with_paricfg+set}" = set; then : withval=$with_paricfg; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multiarch system" >&5 $as_echo_n "checking for multiarch system... " >&6; } multiarch=`$CC $CFLAGS -print-multiarch 2>/dev/null` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $multiarch" >&5 $as_echo "$multiarch" >&6; } if test "$with_paricfg" = "no" ; then PARI_CONFIG= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PARI configuration" >&5 $as_echo_n "checking for PARI configuration... " >&6; } if test "$with_paricfg" = "yes" || test "x$with_paricfg" = "x" ; then for i in /usr/lib/pari/pari.cfg \ "/usr/lib/$multiarch/pari/pari.cfg" \ /usr/local/lib/pari/pari.cfg \ "$srcdir/../pari.cfg" \ "$srcdir/pari.cfg" do if test -f "$i"; then PARI_CONFIG="$i"; fi; done; else test -f "$with_paricfg" && PARI_CONFIG="$with_paricfg" fi if test "x$with_paricfg" != "x" && test "x$PARI_CONFIG" = "x" ; then as_fn_error $? "pari.cfg file not found. Please use --with-paricfg=PATH where PATH is the path to pari.cfg or dft.Config.in file." "$LINENO" 5 fi if test "x$PARI_CONFIG" = "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PARI_CONFIG" >&5 $as_echo "$PARI_CONFIG" >&6; } fi fi # Check whether --with-paricfg-dbg was given. if test "${with_paricfg_dbg+set}" = set; then : withval=$with_paricfg_dbg; fi if test "$with_paricfg_dbg" = "no" ; then PARI_CONFIG_DBG= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PARI configuration (debugging)" >&5 $as_echo_n "checking for PARI configuration (debugging)... " >&6; } if test "$with_paricfg_dbg" = "yes" || test "x$with_paricfg_dbg" = "x" ; then for i in /usr/lib/pari/pari.cfg \ "/usr/lib/$multiarch/pari/pari.cfg" \ /usr/local/lib/pari/pari.cfg \ "$srcdir/../pari.cfg" \ "$srcdir/pari.cfg" do if test -f "$i.dbg"; then PARI_CONFIG_DBG="$i.dbg"; fi; done; else test -f "$with_paricfg_dbg" && PARI_CONFIG_DBG="$with_paricfg_dbg" fi if test "x$with_paricfg_dbg" != "x" && test "x$PARI_CONFIG_DBG" = "x" ; then as_fn_error $? "pari.cfg.dbg file not found. Please use --with-paricfg-dbg=PATH where PATH is the path to pari.cfg.dbg or dft.Config.in file." "$LINENO" 5 fi if test "x$PARI_CONFIG_DBG" = "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PARI_CONFIG_DBG" >&5 $as_echo "$PARI_CONFIG_DBG" >&6; } fi fi if test "x$PARI_CONFIG" != "x" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PARI version" >&5 $as_echo_n "checking for PARI version... " >&6; } PARI_VERSION=`$srcdir/config/pari-version $PARI_CONFIG` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PARI_VERSION" >&5 $as_echo "$PARI_VERSION" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PARI module build" >&5 $as_echo_n "checking for PARI module build... " >&6; } PARI_MODULE_BUILD=`$srcdir/config/module-build $PARI_CONFIG` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PARI_MODULE_BUILD" >&5 $as_echo "$PARI_MODULE_BUILD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GP path" >&5 $as_echo_n "checking for GP path... " >&6; } GP_PATH=`$srcdir/config/pari-conf $PARI_CONFIG bindir`/gp { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GP_PATH" >&5 $as_echo "$GP_PATH" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PARI data directory" >&5 $as_echo_n "checking for PARI data directory... " >&6; } PARI_DATADIR=`$srcdir/config/pari-conf $PARI_CONFIG datadir` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PARI_DATADIR" >&5 $as_echo "$PARI_DATADIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PARI description database" >&5 $as_echo_n "checking for PARI description database... " >&6; } PARI_DESC="$PARI_DATADIR/pari.desc"; if test -f "$PARI_DESC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PARI_DESC" >&5 $as_echo "$PARI_DESC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } PARI_DESC= fi else PARI_VERSION='2.13.x (released)' PARI_MODULE_BUILD="`pwd`/$srcdir/config/missing $PARI_CONF"; GP_PATH="gp" fi if test "x$PARI_CONFIG_DBG" != "x" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PARI module build (debugging)" >&5 $as_echo_n "checking for PARI module build (debugging)... " >&6; } PARI_MODULE_DEBUG=`$srcdir/config/module-build $PARI_CONFIG_DBG` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PARI_MODULE_DEBUG" >&5 $as_echo "$PARI_MODULE_DEBUG" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GP path (debugging)" >&5 $as_echo_n "checking for GP path (debugging)... " >&6; } GP_PATH_DBG=`$srcdir/config/pari-conf $PARI_CONFIG_DBG bindir`/gp { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GP_PATH_DBG" >&5 $as_echo "$GP_PATH_DBG" >&6; } GP2C_DBG="gp2c-dbg" GP2C_DBG1="gp2c-dbg.1" else PARI_MODULE_DEBUG=$PARI_MODULE_BUILD GP_PATH_DBG=$GP_PATH GP2C_DBG="" GP2C_DBG1="" fi cat >>confdefs.h <<_ACEOF #define PARI_VERSION "$PARI_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PARI_MODULE_BUILD "$PARI_MODULE_BUILD" _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RUNTEST (if needed)" >&5 $as_echo_n "checking for RUNTEST (if needed)... " >&6; } if test "x$RUNTEST" = "x" && test "x$PARI_CONFIG" != "x" ; then PARI_RUNTEST=`$srcdir/config/pari-conf $PARI_CONFIG RUNTEST` else PARI_RUNTEST="$RUNTEST" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PARI_RUNTEST" >&5 $as_echo "$PARI_RUNTEST" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in malloc.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi for ac_func in vprintf do : ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" if test "x$ac_cv_func_vprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VPRINTF 1 _ACEOF ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes; then : $as_echo "#define HAVE_DOPRNT 1" >>confdefs.h fi fi done for ac_func in strdup strtol getopt strcmp memccpy strrchr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ECHON=${ECHO_N-"$ac_n"} ECHOC=${ECHO_C-"$ac_c"} ECHOT=${ECHO_T-"$ac_t"} if test "$bindir" = '${exec_prefix}/bin'; then if test "x${exec_prefix}" != xNONE; then mybindir=${exec_prefix}/bin elif test "x${prefix}" != xNONE; then mybindir=${prefix}/bin else mybindir=${ac_default_prefix}/bin fi else mybindir=$bindir fi ac_config_files="$ac_config_files Makefile src/Makefile desc/Makefile doc/Makefile test/Makefile test2/Makefile test3/Makefile test4/Makefile scripts/Makefile scripts/822_desc.pl scripts/runtest scripts/dotest scripts/gp2c-run scripts/gp2c-dbg doc/gp2c-run.1 doc/gp2c-dbg.1" ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gp2c $as_me 0.0.12, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gp2c config.status 0.0.12 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "desc/Makefile") CONFIG_FILES="$CONFIG_FILES desc/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "test2/Makefile") CONFIG_FILES="$CONFIG_FILES test2/Makefile" ;; "test3/Makefile") CONFIG_FILES="$CONFIG_FILES test3/Makefile" ;; "test4/Makefile") CONFIG_FILES="$CONFIG_FILES test4/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; "scripts/822_desc.pl") CONFIG_FILES="$CONFIG_FILES scripts/822_desc.pl" ;; "scripts/runtest") CONFIG_FILES="$CONFIG_FILES scripts/runtest" ;; "scripts/dotest") CONFIG_FILES="$CONFIG_FILES scripts/dotest" ;; "scripts/gp2c-run") CONFIG_FILES="$CONFIG_FILES scripts/gp2c-run" ;; "scripts/gp2c-dbg") CONFIG_FILES="$CONFIG_FILES scripts/gp2c-dbg" ;; "doc/gp2c-run.1") CONFIG_FILES="$CONFIG_FILES doc/gp2c-run.1" ;; "doc/gp2c-dbg.1") CONFIG_FILES="$CONFIG_FILES doc/gp2c-dbg.1" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. Try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "default":C) chmod a+x scripts/822_desc.pl scripts/runtest scripts/dotest scripts/gp2c-run scripts/gp2c-dbg ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gp2c-0.0.12/test3/0000755000175000017500000000000013751742702010500 500000000000000gp2c-0.0.12/test3/Makefile.am0000644000175000017500000000020613661772720012455 00000000000000mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) gp2c-0.0.12/test3/input/0000755000175000017500000000000013646611365011642 500000000000000gp2c-0.0.12/test3/input/range0000644000175000017500000000000413614057635012572 00000000000000f() gp2c-0.0.12/test3/input/compr0000644000175000017500000000001713623476440012621 00000000000000f() #cano(150) gp2c-0.0.12/test3/input/iferr0000644000175000017500000000010613646611335012606 00000000000000ecm(2^64+1,10,200!) ecm2(2^64+1,10,200!) ecm3(2^64+1,10,200!) dummy() gp2c-0.0.12/test3/input/forpart0000644000175000017500000000002113623476440013151 00000000000000f() ff() g() h() gp2c-0.0.12/test3/input/forprime0000644000175000017500000000001113614057635013317 00000000000000f() fs() gp2c-0.0.12/test3/Makefile.in0000644000175000017500000002710413751742674012501 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = test3 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test3/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test3/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) # 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: gp2c-0.0.12/test3/gp/0000755000175000017500000000000013646611372011107 500000000000000gp2c-0.0.12/test3/gp/forprime.gp0000644000175000017500000000023713614057635013205 00000000000000f()=local(s:small=0);forprime(p:int=2,,if(p%4==1,s++,s--);if(s==0,return(p))) fs()=local(s:small=0);forprime(p:small=2,,if(p%4==1,s++,s--);if(s==0,return(p))) gp2c-0.0.12/test3/gp/iferr.gp0000644000175000017500000000137313646611372012472 00000000000000ecm(N, B = 1000!, nb = 100)= { for(a:small = 1, nb, iferr(ellpow(ellinit([a,1]*Mod(1,N)), [0,1]*Mod(1,N), B), E, if(errname(E)=="e_INV", return(gcd(lift(component(E,2)),N)), error(E)))); } ecm2(N, B = 1000!, nb = 100)= { iferr( for(a:small = 1, nb, ellpow(ellinit([a,1]*Mod(1,N)), [0,1]*Mod(1,N), B)), E, my(d=component(E,2)); if(type(d)=="t_INTMOD", gcd(lift(d),N), error(E)), errname(E)=="e_INV"); } ecm3(N, B = 1000!, nb = 100)= { for(a:small = 1, nb, iferr(if(ellpow(ellinit([a,1]*Mod(1,N)), [0,1]*Mod(1,N), B),break), E, my(d=component(E,2)); return(gcd(lift(d),N)), errname(E)=="e_INV" && type(component(E,2))=="t_INTMOD")); Mod(2,4)^-1 } dummy()=iferr(,E,print(E)) gp2c-0.0.12/test3/gp/compr.gp0000644000175000017500000000066513623476440012506 00000000000000f()= { print([2^100..2^100+3]); print([x^2+1|x<-primes(40)]); print([x^2+1|x<-[1..10],isprime(x)]); print([x^2+1|x<-[1..10]]); print([a^2+b^2|a<-[1..10];b<-[1..10],gcd(a,b)==1]); print([a^2+b^2|a<-[1..10],isprime(a);b<-[1..10],a!=b && isprime(b)]); print([[a,b,c]|a<-[1..5];b<-[1..a];c<-[1..b]]); print(-[x^2+1|x<-[1..10]]); } cano(n)= { my(i=0,z=vector(1000)); for(j=1,n, z[1+(i++)%1000]=[j+1..(j+1000)]); z } gp2c-0.0.12/test3/gp/forpart.gp0000644000175000017500000000040013623476440013026 00000000000000f() = for(i=1,5,forcomposite(p=sum(i=1,3,i), sum(i=1,6,i), if(p%9==0,next(2));print([p,p^2]))) ff()= for(i=1,5,forcomposite(p=1,111, if(p%9==0,next(2));print([p,p^2]))) g() = for(i=1,5,forpart(p=5,print(p[1]))) h() = for(i=1,5,forpart(p=5,print(p[1]),,3)) gp2c-0.0.12/test3/gp/range.gp0000644000175000017500000000070413614057635012455 00000000000000f()= { my(V,M); V=primes(100); M=matrix(5,5,i,j,i+5*j-5); print(primes(100)[4..7]); print(V[5..9]); print(M[2..3,2..3]); print(M[1..2,1]); print(M[1,1..4]); print(M[1..3,]); print(M[,1..3]); print(M[1..5,1..-2]); print(M[1..-2,1..-2]); print(M[-3..-1,-3..-1]); print(M[^3,2..3]); print(M[^2,1]); print(M[1,^4]); print(M[^3,]); print(M[,^3]); print(M[^5,1..-2]); print(M[1..-2,^-2]); print(M[-3..-1,-3..-1]); } gp2c-0.0.12/test3/res/0000755000175000017500000000000013623476440011272 500000000000000gp2c-0.0.12/test3/res/iferr.res0000644000175000017500000000023413646611427013034 00000000000000274177 274177 *** at top-level: ecm3(2^64+1,10,200!) *** ^-------------------- *** ecm3: impossible inverse in Fp_inv: Mod(2, 4). 0 gp2c-0.0.12/test3/res/forprime.res0000644000175000017500000000001413614057635013544 0000000000000026861 26861 gp2c-0.0.12/test3/res/forpart.res0000644000175000017500000000050013623476440013375 00000000000000[6, 36] [8, 64] [6, 36] [8, 64] [6, 36] [8, 64] [6, 36] [8, 64] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] 5 1 2 1 1 1 1 5 1 2 1 1 1 1 5 1 2 1 1 1 1 5 1 2 1 1 1 1 5 1 2 1 1 1 1 5 1 2 1 1 5 1 2 1 1 5 1 2 1 1 5 1 2 1 1 5 1 2 1 1 gp2c-0.0.12/test3/res/compr.res0000644000175000017500000000225513623476440013051 00000000000000[1267650600228229401496703205376, 1267650600228229401496703205377, 126765060 0228229401496703205378, 1267650600228229401496703205379] [5, 10, 26, 50, 122, 170, 290, 362, 530, 842, 962, 1370, 1682, 1850, 2210, 2 810, 3482, 3722, 4490, 5042, 5330, 6242, 6890, 7922, 9410, 10202, 10610, 114 50, 11882, 12770, 16130, 17162, 18770, 19322, 22202, 22802, 24650, 26570, 27 890, 29930] [5, 10, 26, 50] [2, 5, 10, 17, 26, 37, 50, 65, 82, 101] [2, 5, 10, 17, 26, 37, 50, 65, 82, 101, 5, 13, 29, 53, 85, 10, 13, 25, 34, 5 8, 73, 109, 17, 25, 41, 65, 97, 26, 29, 34, 41, 61, 74, 89, 106, 37, 61, 85, 50, 53, 58, 65, 74, 85, 113, 130, 149, 65, 73, 89, 113, 145, 82, 85, 97, 10 6, 130, 145, 181, 101, 109, 149, 181] [13, 29, 53, 13, 34, 58, 29, 34, 74, 53, 58, 74] [[1, 1, 1], [2, 1, 1], [2, 2, 1], [2, 2, 2], [3, 1, 1], [3, 2, 1], [3, 2, 2] , [3, 3, 1], [3, 3, 2], [3, 3, 3], [4, 1, 1], [4, 2, 1], [4, 2, 2], [4, 3, 1 ], [4, 3, 2], [4, 3, 3], [4, 4, 1], [4, 4, 2], [4, 4, 3], [4, 4, 4], [5, 1, 1], [5, 2, 1], [5, 2, 2], [5, 3, 1], [5, 3, 2], [5, 3, 3], [5, 4, 1], [5, 4, 2], [5, 4, 3], [5, 4, 4], [5, 5, 1], [5, 5, 2], [5, 5, 3], [5, 5, 4], [5, 5 , 5]] [-2, -5, -10, -17, -26, -37, -50, -65, -82, -101] 1000 gp2c-0.0.12/test3/res/range.res0000644000175000017500000000130013614057635013014 00000000000000[7, 11, 13, 17] [11, 13, 17, 19, 23] [7, 12; 8, 13] [1, 2]~ [1, 6, 11, 16] [1, 6, 11, 16, 21; 2, 7, 12, 17, 22; 3, 8, 13, 18, 23] [1, 6, 11; 2, 7, 12; 3, 8, 13; 4, 9, 14; 5, 10, 15] [1, 6, 11, 16; 2, 7, 12, 17; 3, 8, 13, 18; 4, 9, 14, 19; 5, 10, 15, 20] [1, 6, 11, 16; 2, 7, 12, 17; 3, 8, 13, 18; 4, 9, 14, 19] [13, 18, 23; 14, 19, 24; 15, 20, 25] [6, 11; 7, 12; 9, 14; 10, 15] [1, 3, 4, 5]~ [1, 6, 11, 21] [1, 6, 11, 16, 21; 2, 7, 12, 17, 22; 4, 9, 14, 19, 24; 5, 10, 15, 20, 25] [1, 6, 16, 21; 2, 7, 17, 22; 3, 8, 18, 23; 4, 9, 19, 24; 5, 10, 20, 25] [1, 6, 11, 16; 2, 7, 12, 17; 3, 8, 13, 18; 4, 9, 14, 19] [1, 6, 11, 21; 2, 7, 12, 22; 3, 8, 13, 23; 4, 9, 14, 24] [13, 18, 23; 14, 19, 24; 15, 20, 25] gp2c-0.0.12/AUTHORS0000644000175000017500000000006311642144547010425 00000000000000Bill Allombert gp2c-0.0.12/scripts/0000755000175000017500000000000013751742701011124 500000000000000gp2c-0.0.12/scripts/Makefile.am0000644000175000017500000000007312141547407013076 00000000000000bin_SCRIPTS = gp2c-run @GP2C_DBG@ EXTRA_SCRIPTS = gp2c-dbg gp2c-0.0.12/scripts/gp2c-run.in0000755000175000017500000000274013614057635013042 00000000000000#!/bin/sh -e #Copyright (C) 2001-2013 The PARI group. # #This file is part of the GP2C package. # #PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT #ANY WARRANTY WHATSOEVER. # #Check the License for details. You should have received a copy of it, along #with the package; see the file 'COPYING'. If not, write to the Free Software #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. name="stdin"; for p in "$@"; do case "$p" in -h|--help) cat < Compile file.gp with gp2c and launch a gp session with functions of file.gp added. are passed to gp2c gp2c-run Compile file.c and launch a gp session with functions of file.c added. ENVIRONMENT: GP2C: path to the gp2c compiler, default: @mybindir@/gp2c GP: path to the gp calculator, default: @GP_PATH@ EOF exit ;; -l|-t|-v) exec $GP2C "$@" ;; -o) echo "gp2c-run does not support option -o" 1>&2; exit 1;; -*) ;; #We discard options *) name=$p;; esac done if test "x$GP2C" = "x"; then GP2C="@mybindir@/gp2c" fi if test "x$GP" = "x"; then GP="@GP_PATH@" fi case $name in *.c) name=${name%.c};; *) $GP2C -o $name.c "$@" ;; esac command=`echo "@PARI_MODULE_BUILD@" | sed -e "s %s $name g"` eval $command || exit $? grep "^GP;" $name.c | sed 's/^GP;//' >$name.run $GP $name.run gp2c-0.0.12/scripts/dotest.in0000755000175000017500000000227313661772655012720 00000000000000#! /bin/sh -e suite=${1:-"test"} bugs=0 testdir=`cd "$srcdir/$suite" && pwd` cd $suite RUNTEST=${RUNTEST:-"@PARI_RUNTEST@"} GP2C_FUNC_DSC=../desc/func.dsc export GP2C_FUNC_DSC if test -f "$testdir/gp/affect.gp"; then cp "$testdir/gp/affect.gp" affect fi for i in `ls "$testdir/input"`; do if test -f "$testdir/gp/$i.gp"; then echo @ECHON@ "Testing script $i...@ECHOC@" rm -f $i.gp.c $i.gp.o $i.gp.so $i.res $i.gp.run if ../src/gp2c -p gp2c_ -g -o $i.gp.c "$testdir/gp/$i.gp" 2>$i.res; then command=`echo "@PARI_MODULE_BUILD@" | sed -e s/%s/$i.gp/g` eval $command grep "^GP;" $i.gp.c | sed 's/^GP;//' >$i.gp.run cat "$testdir/input/$i" >> $i.gp.run $RUNTEST '@GP_PATH@' -f -q --test < $i.gp.run >$i.res 2>&1 if test -f "$testdir/res/$i.res"; then if diff "$testdir/res/$i.res" $i.res >/dev/null; then echo "@ECHOT@OK." else echo "@ECHOT@BUG." bugs=1; fi else test "$srcdir" = "." && cp $i.res "$testdir/res/$i.res" echo cat $i.res fi else echo "@ECHOT@BUG." bugs=1; fi fi done if test -f "$testdir/gp/affect.gp"; then rm -f affect fi; exit $bugs gp2c-0.0.12/scripts/822_desc.pl.in0000644000175000017500000001151713623476440013326 00000000000000#! @PERL_PATH@ #Copyright (C) 2003-2013 The PARI group. # #This file is part of the GP2C package. # #PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT #ANY WARRANTY WHATSOEVER. # #Check the License for details. You should have received a copy of it, along #with the package; see the file 'COPYING'. If not, write to the Free Software #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #This is the description compiler for gp2c. BEGIN { $pari_desc=shift @ARGV; $compat_desc=shift @ARGV; $override_desc=shift @ARGV; -f "@PARI_DATADIR@/PARI/822.pm" || exit 1; -f $pari_desc || exit 1; } use lib "@PARI_DATADIR@"; use PARI::822; PARI::822::read(\%funcs,$override_desc,0) if defined($override_desc); PARI::822::read(\%funcs,$pari_desc,0); PARI::822::read(\%funcs,$compat_desc,0) if defined($compat_desc); %accepted_class=( ''=>1, 'basic'=>1, 'gp'=>1,'highlevel'=>1, 'symbolic_operators'=>1, 'member_functions'=>1, 'gp2c'=>1, 'gp2c_internal'=>1); %accepted_command= ( 'add'=>1, 'sub'=>1, 'neg'=>1, 'mul'=>1, 'div'=>1, 'mod'=>1, 'and'=>1, 'or'=>1, 'xor'=>1, 'not'=>1, 'parens'=>1, 'stdref'=>1, 'value'=>1, 'type'=>1, 'nbarg'=>1, 'str_format'=>1, 'str_raw'=>1, 'cast'=>1, 'code'=>1, 'prec'=>1, 'bitprec'=>1, 'format_string'=>1,'format_args'=>1, 'cookie' => 1, 'wrapper' => 1 ); sub check_cname { my ($gpname, $cname) = @_; while($cname =~ /\$\{([^}]*)\}(.*)/) { my ($rpl) = $1; $cname = $2; for (split(' ', $rpl)) { /^-?[0-9]+$/ and next; /^:[a-z_A-Z]+$/ and next; defined($accepted_command{$_}) and next; print STDERR "Warning: $gpname unsupported command $_, skipped\n"; return 0; } } return 1; } for $gpname (sort keys %funcs) { my $f=$funcs{$gpname}; next unless (defined($accepted_class{$f->{'Class'}})); my $description=$f->{'Description'}; my $proto=$f->{'Prototype'}; my $wrapper=$f->{'Wrapper'}; my $iterator=$f->{'Iterator'}; print "$gpname\n"; my @entry=(); if (defined($description)) { my @rules = split("\n",$description); @rules = grep { $_ !~ /^[ \n\t]*$/ } @rules; my @erules = (); push @erules, join("\n",0,scalar(@rules)); foreach (@rules) { /^[ \n\t]* \(([^)]*)\) (?::([A-Za-z0-9_:]*))? [ \n\t]* ([^\n]*) [ \n\t]*$/x or die "badly formatted description $_"; my $arglist=$1; my $cname=$3; my $typelist=$2; $arglist =~ tr/ \n\t//d; my @args=split(',',$arglist,-1); my @type=split(':',$typelist,-1); $cname =~ s/\$%([0-9]+)/\${$1 str_format}/g; $cname =~ s/\$#/\${nbarg}/g; $cname =~ s/\$\(([0-9]+)\)/\${parens $1 code}/g; $cname =~ s/\$([0-9]+)/\${$1 code}/g; $cname =~ s/\$([a-z_A-Z]+):([0-9]+)/\${$2 :$1 cast}/g; $cname =~ s/\$\(([a-z_A-Z]+):([0-9]+)\)/\${parens $2 :$1 cast}/g; $cname =~ s/\$prec\b/\${prec}/g; $cname =~ s/\$bitprec\b/\${bitprec}/g; check_cname($gpname,$cname) or next; push @erules, join("\n",$cname,scalar(@args),@args,scalar(@type),@type); } push @entry, join("\n",@erules); } if (defined($proto)) { $type="gen"; $type="void" if ($proto =~ /^v/); $type="small" if ($proto =~ /^l/); $type="small_int" if ($proto =~ /^i/); $type="usmall" if ($proto =~ /^u/); @type=($type); push @type,"copy" if ($proto =~ /^m/); push @type,"prec" if ($proto =~ /[pb]/); $proto =~ s/^[uilmv]//; $proto =~ s/\\n.*$//; push @entry, join("\n",1,$f->{'C-Name'},$proto,scalar(@type),@type); } if (defined($wrapper)) { $wrapper =~ tr/ \n\t//d; $wrapper =~ m/^\(([^)]*)\)/ or die "badly formatted wrapper $wrapper"; my $wraplist=$1; my @wrap=map { ($_ eq "" || $_ eq "_") ? "$_":"_wrap_$_"; } split(',',$wraplist,-1); push @entry, join("\n",2,scalar(@wrap),@wrap); } if (defined($iterator)) { my @rules = split("\n",$iterator); @rules = grep { $_ !~ /^[ \n\t]*$/ } @rules; my @erules = (); push @erules, join("\n",3,scalar(@rules)); foreach (@rules) { /^[ \n\t]* \(([^)]*)\) (?::([A-Za-z0-9_:]*))? [ \n\t]* \(([^\n]*)\) [ \n\t]*$/x or die "badly formatted iterator $_"; my $arglist=$1; my $iterlist=$3; my $typelist=$2; $arglist =~ tr/ \n\t//d; $iterlist =~ tr/ \n\t//d; my @args=split(',',$arglist,-1); my @type=split(':',$typelist,-1); my @iter=split(',',$iterlist,-1); push @erules, join("\n",scalar(@iter),@iter, scalar(@args),@args, scalar(@type),@type); } push @entry, join("\n",@erules); } print scalar(@entry),"\n"; print join("\n",@entry)."\n" if (@entry); } gp2c-0.0.12/scripts/gp2c-dbg.in0000644000175000017500000000275013614057635012770 00000000000000#!/bin/sh -e #Copyright (C) 2001-2013 The PARI group. # #This file is part of the GP2C package. # #PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT #ANY WARRANTY WHATSOEVER. # #Check the License for details. You should have received a copy of it, along #with the package; see the file 'COPYING'. If not, write to the Free Software #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. name="stdin"; for p in "$@"; do case "$p" in -h|--help) cat < Compile file.gp with gp2c and launch a debugger session of gp with functions of file.gp added. are passed to gp2c ENVIRONMENT: GP2C: path to the GP2C compiler, default: @mybindir@/gp2c GP_DBG: path to the GP calculator, default: @GP_PATH@ GP2C_DBG: command to start the debugger, default: gdb --args EOF exit ;; -l|-t|-v) exec $GP2C "$@" ;; -*) ;; #We discard options *) name=$p;; esac done if test "x$GP2C" = "x"; then GP2C="@mybindir@/gp2c" fi if test "x$GP_DBG" = "x"; then GP_DBG="@GP_PATH_DBG@" fi if test "x$GP2C_DBG" = "x"; then GP2C_DBG="gdb --args" fi case $name in *.c) name=${name%.c};; *) $GP2C "$@" >$name.c;; esac command=`printf "@PARI_MODULE_DEBUG@" $name $name $name $name` eval $command || exit $? grep "^GP;" $name.c | sed 's/^GP;//' >$name.run $GP2C_DBG $GP_DBG $name.run gp2c-0.0.12/scripts/Makefile.in0000644000175000017500000003575413751742674013140 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = scripts ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = 822_desc.pl runtest dotest gp2c-run gp2c-dbg CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/822_desc.pl.in $(srcdir)/Makefile.in \ $(srcdir)/dotest.in $(srcdir)/gp2c-dbg.in \ $(srcdir)/gp2c-run.in $(srcdir)/runtest.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ bin_SCRIPTS = gp2c-run @GP2C_DBG@ EXTRA_SCRIPTS = gp2c-dbg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu scripts/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 822_desc.pl: $(top_builddir)/config.status $(srcdir)/822_desc.pl.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ runtest: $(top_builddir)/config.status $(srcdir)/runtest.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ dotest: $(top_builddir)/config.status $(srcdir)/dotest.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ gp2c-run: $(top_builddir)/config.status $(srcdir)/gp2c-run.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ gp2c-dbg: $(top_builddir)/config.status $(srcdir)/gp2c-dbg.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$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 $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-binSCRIPTS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-binSCRIPTS .PRECIOUS: Makefile # 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: gp2c-0.0.12/scripts/runtest.in0000644000175000017500000000074313623476440013106 00000000000000#! /bin/sh -e MAJORVER=`echo "@PARI_VERSION@" | cut -d. -f1` MINORVER=`echo "@PARI_VERSION@" | cut -d. -f2` echo Running test traditional scripts/dotest test if test $MAJORVER -gt 2 || test $MINORVER -gt 4; then echo Running test closure scripts/dotest test2 fi if test $MAJORVER -gt 2 || test $MINORVER -gt 6; then echo Running test ranges scripts/dotest test3 fi if test $MAJORVER -gt 2 || test $MINORVER -gt 9; then echo Running test iterators scripts/dotest test4 fi gp2c-0.0.12/src/0000755000175000017500000000000013751742701010224 500000000000000gp2c-0.0.12/src/Makefile.am0000644000175000017500000000065613623476440012211 00000000000000bin_PROGRAMS = gp2c AM_CFLAGS=-DFUNCDSC_PATH=\"@datadir@/@PACKAGE@/func.dsc\" BUILT_SOURCES = parse.h gp2c_SOURCES = gp2c.c context.c funcdesc.c funcspec.c genblock.c gencast.c gencode.c genfunc.c gentype.c gerepile.c header.h lang.l moveblock.c node.c optable.h parse.y patchfunc.h printnode.c toplevel.c topfunc.c type.h util.c varlist.c stack.h stack.c AM_YFLAGS = -d am__skipyacc= am__skiplex= ctags: ctags $(gp2c_SOURCES) gp2c-0.0.12/src/gentype.c0000644000175000017500000002132613623476440011771 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" int **typemax; int *ctype; void inittrans(int n,int p) { int i; for(i=0;idsc; typemax=(int **) calloc(Gnbtype,sizeof(*typemax)); for(i=0;inb; n++) { gpdescarg *ga=dsc->a+n; int oldt=-1; for (i=0; i < ga->nargs; i++) { descargatom *a=ga->args+i; int t=a->type; if (a->t!=AAtype) die(err_desc,"unexpected atom in _type_preorder"); if (oldt>=0) typemax[t][oldt]=typemax[oldt][t]=t; oldt=t; } } for(i=0;is.n;i++) { ctxvar *v=fc->c+i; int val=v->initval; if (val!=-1) { int t=gentype(val); int vt=vartype(*v); if (v->flag&(1<gpname,funcmode(*gp),tree[seq].m); /*funcmode(*gp)|(tree[seq].m&((1<ret==-1) tree[n].t=Gvoid; else { int v=getvarerr(fc->ret); tree[n].t=vartype(ctxstack[v]); } tree[n].m=mode|(tree[seq].m&MODHERIT); } int gentype(int n) { int t,tx,ty; int mx,my; int x,y,c; gpfunc *gp; int nf; if (n<0) return Gnotype; x=tree[n].x; y=tree[n].y; if (tree[n].f=0)?tree[x].m:0; ty=gentype(y); my=(y>=0)?tree[y].m:0; } else { tx=-1; mx=-1; ty=-1; my=-1; } switch(tree[n].f) { case Fseq: if (x<0 || y<0) die(n,"internal error in gentype"); if (mx&(1<flag&(1<flag&(1<flag&(1<flag&(1<=0) tree[n].m=(1<%s" ,GPname(tx),GPname(y)); tree[n].m=tree[x].m&MODHERIT; break; case Findarg: case Frefarg: gentype(x); tree[n].t=tree[x].t; tree[n].m=tree[x].m; break; case Fentry: c=getvar(n); if (c>=0) { ctxvar *v=ctxstack+c; tree[n].t=vartype(*v); tree[n].m=(1<flag&(1<=0) { gp=lfunc+nf; if (functype(*gp)==Gnotype && gp->spec>0) /* is a special function ? */ tree[n].t=gentypefuncspec(n,gp); else if (gp->dsc && (t=gentypefuncdesc(n,gp))!=Gnotype) /* else has the function a description ?*/ tree[n].t=t; else /* else use the function a type */ { gentype(y); tree[n].t=functype(*gp); my=(y==-1)?0:tree[y].m; tree[n].m=(funcmode(*gp)&(~(1< #include #include #include #include #include "header.h" #define GP2C_MAX_INT_32 2147483647L const char *Ffuncname[]={"Fseq", "Fmatrix","Frange","Fnorange", "Fassign", "Fmatcoeff", "Fmatrixelts","Fmatrixlines", "Fmat","Fvec", "Flistarg", "Frefarg","Findarg","Fvararg", "Fcall", "Fconst","Fsmall","Fnoarg", "Ftag", "Fentry","Ffunction","Flambda","Fdeffunc", /*These nodes are generated by genblock, not by parser*/ "Fblock", "Ffun" }; /* 0 not an integer * 1 a true integer * 2 a real which is an integer (1.,17.00) */ int isarealint(const char *s) { while (*s>='0' && *s<='9') s++; if (!*s) return 1; if (*s != '.') return 0; while(*++s) if (*s != '0') return 0; return 2; } int newsrcfile(char *f) { int n=stack_new(&s_srcfile); srcfile[n]=f; return n; } int newcomment(void) { int n=stack_new(&s_comment); comment *c=com+n; stack_init(&c->s,sizeof(*c->txt),(void **)&c->txt); return n; } void pushcomment(int n, char x) { comment *c=com+n; int m=stack_new(&c->s); c->txt[m]=x; } int newnodeall(Ffunc f, int x, int y, int file, int line, int com) { int n=stack_new(&s_node); tree[n].f=f; tree[n].x=x; tree[n].y=y; tree[n].t=Gnotype; tree[n].m=0; tree[n].fileno=file; tree[n].lineno=line; tree[n].comment=com; return n; } int newnodecom(Ffunc f, int x, int y, int com) { return newnodeall(f,x,y,filecount,linecount,com); } int newnode1(Ffunc f, int x, int y) { return newnodeall(f,x,y,tree[x].fileno,tree[x].lineno,-1); } int newnode(Ffunc f, int x, int y) { return newnodeall(f,x,y,filecount,linecount,-1); } int newsmall(int val) { return newnode(Fsmall,val,-1); } int newopcall(OPerator op, int x, int y) { if (y==-1) return newnode(Ffunction,op,x); else return newnode(Ffunction,op,newnode(Flistarg,x,y)); } int newopcall3(OPerator op, int x, int y, int z) { return newopcall(op,newnode(Flistarg,x,y),z); } int newderivn(int x, int n) { if (FC_derivn >= 0) x=newopcall(OPderivn,x, newnode(Fsmall,n,-1)); else { long i; for(i=1; i<=n; i++) x=newopcall(OPderiv, x, -1); } return x; } static int countarg(int n) { int i; for(i=1; tree[n].f==Flistarg; i++) n = tree[n].x; return i; } int addcurrexpr(int n, int currexpr) { int y, m = n; while (tree[m].x==OPcomprc) { y = tree[m].y; if (countarg(y)==4) y = tree[y].x; m = tree[y].y; } y = tree[m].y; if (countarg(y)==4) y = tree[y].x; tree[y].y = currexpr; return n; } int newstringvalue(const char *s) { int n=stack_new(&s_value); value[n].type=CSTstr; value[n].val.str=s; return n++; } int newsmallrealvalue(long small) { int n=stack_new(&s_value); value[n].type=CSTsmallreal; value[n].val.small=small; return n++; } int newintvalue(const char *s) { int n=stack_new(&s_value); value[n].type=CSTint; value[n].val.str=s; return n++; } int newrealvalue(const char *s) { int n=stack_new(&s_value); value[n].type=CSTreal; value[n].val.str=s; return n++; } /* newxxxnode functions * These functions take a token value as a string and a comment index. * They must return a new Fconst or Fsmall node. * They must free the string if they do not reference it. * the cast free((char *)s) is to remove the const qualifier. */ int newintnode(const char *s, int c) { long small; char *endptr; /* We do not want to inline 64bit integers to preserve the portability * of the resulting C code.*/ errno=0;/* for catching strtol overflows*/ small=strtol(s,&endptr,10); if (!*endptr && !errno && small<=GP2C_MAX_INT_32) { free((char *)s); return newnodecom(Fsmall,small,-1,c); } else return newnodecom(Fconst,newintvalue(s),-1,c); } int newrealnode(const char *s, int c) { char *endptr; int val; if (!isarealint(s)) val=newrealvalue(s); else { long small; errno=0;/* for catching strtol overflows*/ small=strtol(s,&endptr,10); if (*endptr=='.' && !errno && small<=GP2C_MAX_INT_32) { val=newsmallrealvalue(small); free((char *)s); } else val=newrealvalue(s); } return newnodecom(Fconst,val,-1,c); } int newstringnode(const char *s, int c) { return newnodecom(Fconst,newstringvalue(s),-1,c); } int newquotenode(const char *s, int c) { return newcall("_const_quote",newstringnode(s,c)); } int is_const(int n, CSTtype t) { int f=tree[n].f; int x=tree[n].x; return f==Fconst && value[x].type==t; } int newentry(const char *s) { return newstringvalue(s); } int isfunc(int n, const char *s) { return tree[n].f==Ffunction && !strcmp(s,value[tree[n].x].val.str); } const char *usercname(const char *s) { const char *p; if (!optprefix) { if (s[0]=='p' || s[0]=='l') { for(p=s+1; *p=='_'; p++); if (isdigit(*p)) { for ( ; isdigit(*p); p++); if (!*p) { char *q=calloc(sizeof(*s),2+strlen(s)); sprintf(q,"%c_%s",s[0],s+1); return q; } } } } else { char *q=calloc(sizeof(*s),strlen(optprefix)+1+strlen(s)); sprintf(q,"%s%s",optprefix,s); return q; } return s; } int newmember(const char *s) { char *p; int n; p=calloc(sizeof(*s),3+strlen(s)); sprintf(p,"_.%s",s); n=newentry(p); free((char *)s); return n; } void initoperators(void) { int i; for (i=0;it) die(n,"Unknown type '%s' or unexpected ':'",s); return n; } int detag(int n) { while(tree[n].f==Ftag) n=tree[n].x; return n; } int getlvaluerr(int n) { int ret=getlvalue(n); if (ret==-1) die(n,"not an lvalue"); return ret; } int newctype(const char *s) { int n=stack_new(&s_Ctype); Ctype[n].name=strdup(s); return n; } int strtoctype(const char *s) { int i; for(i=0;i= 8*sizeof(long)) die(err_desc,"GP2C only supports %ld modes",8*sizeof(long)); Mmode[n].name=strdup(s); return n; } int strtomode(char *s) { int i; for(i=0;iFlastfunc) return "Funknown"; else return Ffuncname[f]; } const char *GPname(int f) { if (f<0 || f>s_GPtype.n) return "Gunknown"; else return GPtype[f].name; } static int currlabel=0; int newlabel(int type) { int n=stack_new(&s_label); label[n].num=currlabel; label[n].type=type; label[n].go=0; label[n].ne=0; currlabel+=2; return n; } gp2c-0.0.12/src/toplevel.c0000644000175000017500000000731713623476440012154 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" static int toplevel=0; int initnode=0; static const char *basename(const char *s) { long i; long l=strlen(s); for(i=l-1;i>=0;i--) if (s[i]=='/') return s+i+1; return s; } char *nameinitfunc(void) { const char *initname="init_"; const char *absname, *p; char *name, *q; absname=basename(nameparse); name=calloc(strlen(initname)+strlen(absname)+1,sizeof(*name)); sprintf(name,"%s",initname); q=name+strlen(name); for(p=absname;*p && *p!='.';p++,q++) if (isalnum(*p)) *q=*p; else *q='_'; *q=0; return name; } int addinitfunc(int n) { int code; int ret; char *name; name=nameinitfunc(); code=toplevel?toplevel:-1; code=addseqright(code,GNIL); initnode = newentry(name); code=newnode(Fdeffunc,newnode(Ffunction,initnode,-1),code); ret=addseqright(code,n); return ret; } void genpredeclaration(int args, int n) { int stack[STACKSZ]; int i; int nb=listtostack(args,Flistarg,stack,STACKSZ,"function declaration",n); if (nb==1 && stack[0]==GNOARG) nb--; for(i=0;i=0 && tree[x].f!=Fdeffunc && tree[x].f!=Fseq) { int dx = detag(x); if (isfunc(dx,"global")) genpredeclaration(tree[dx].y,dx); if (isfunc(dx,"local")) warning(dx,"`local' at top-level discarded"); else toplevel=addseqright(toplevel,x); tree[n].x=GNIL; } else gentoplevel(x); if (y>=0 && tree[y].f!=Fdeffunc && tree[y].f!=Fseq) { int dy = detag(y); if (isfunc(dy,"global")) genpredeclaration(tree[dy].y,dy); if (isfunc(dy,"local")) warning(dy,"`local' at top-level discarded"); else toplevel=addseqright(toplevel,y); tree[n].y=GNIL; } else gentoplevel(y); break; case Ffunction: die(n,"Ffunction in toplevel"); gentoplevel(y); break; case Fdeffunc: case Fentry: case Fconst: case Fsmall: case Fnoarg: break; case Findarg: case Frefarg: case Ftag: die(n,"%s in toplevel",funcname(tree[n].f)); gentoplevel(x); break; default: if (tree[n].f>=FneedENTRY) { die(n,"Internal error: unknown func %s in gentoplevel",funcname(tree[n].f)); } else { gentoplevel(x); gentoplevel(y); } } } gp2c-0.0.12/src/funcdesc.c0000644000175000017500000004301213627474124012105 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" gpdesc *newdesc(int nb) { gpdesc *gd = (gpdesc *) malloc(sizeof(*gd)); gd->nb=nb; gd->a=nb?(gpdescarg *)calloc(nb,sizeof(*(gd->a))):NULL; return gd; } gpwrap *newwrap(int nb) { gpwrap *gw = (gpwrap *) malloc(sizeof(*gw)); gw->nb=nb; gw->w=nb?(int *)calloc(nb,sizeof(*(gw->w))):NULL; return gw; } static void strtoargsdefault(char *s, descargatom *aa, int opt) { if (isdigit(*s) || *s=='-' || *s=='+') { aa->t=opt?AAoptsmall:AAsmall; aa->type=Gsmall; aa->misc=atol(s); } else { int t=strtotype(s); aa->t=opt?AAopttype:AAtype; aa->type=t; } } /*modify s*/ descargatom strtoargs(char *s) { descargatom aa; int t; char *mstr=s; aa.mode=0; aa.type=Gnotype; aa.misc=0; while ((mstr=strrchr(mstr,':'))) { aa.mode|=1<"); buf[strlen(buf)-1]=0; } int readnumber(FILE *f, char *buf, int len) { readentry(f,buf,len); return atol(buf); } int readtypemode(FILE *f,char *buf, int len, int *mode) { int nb=readnumber(f,buf,len); int type; *mode=0; if (nb) { int j; readentry(f,buf,len); type=strtotype(buf); for(j=1;jgpname); for(i=0;idsc=gd; else func->iter=gd; } for(j=0; ja+j; if (type==0) { readentry(dfile,buf,BUFFER_SIZE); da->cname=strdup(buf); } else { gpiterator *iter = &(da->iter); int niter=readnumber(dfile,buf,BUFFER_SIZE); if (niter<3 && niter>4) die(err_desc,"unsupported iterator"); readentry(dfile,buf,BUFFER_SIZE); iter->type=strtotype(buf); readentry(dfile,buf,BUFFER_SIZE); iter->init=getfunc(buf); func = lfunc+nf; readentry(dfile,buf,BUFFER_SIZE); iter->next=getfunc(buf); func = lfunc+nf; if (niter==4) { readentry(dfile,buf,BUFFER_SIZE); iter->end=getfunc(buf); func = lfunc+nf; } else iter->end=-1; } nargs=readnumber(dfile,buf,BUFFER_SIZE); da->nargs=nargs; if (nargs) da->args=(descargatom *) calloc(nargs,sizeof(*da->args)); else da->args=NULL; for(k=0; kargs[k]=strtoargs(buf); } da->type=readtypemode(dfile,buf,BUFFER_SIZE,&da->mode); } break; case 1: /*This is a prototype*/ readentry(dfile,buf,BUFFER_SIZE); func->proto.cname=strdup(buf); readentry(dfile,buf,BUFFER_SIZE); func->proto.code=strdup(buf); functype(*func)=readtypemode(dfile,buf,BUFFER_SIZE,&funcmode(*func)); break; case 2: /*This is a wrapper*/ nargs=readnumber(dfile,buf,BUFFER_SIZE); func->wrap = newwrap(nargs); for(j=0;jwrap->w[j]=*buf?(buf[1]?nw:-1):-2; } break; default: die(err_desc,"Unknown description type %d in %s",type,descfile); } } } fclose(dfile); } int descrulescore(int nb, int *args, gpdescarg *ga, int * const psc,int * const pesc) { int sc=0, esc=0; int i,j; descargatom *da=ga->args; for (i=0, j=0;jnargs;j++, i++) { int t; int arg=(i=nb) break; j--; } if (arg==GNOARG) { if (da[j].t==AAnoarg || da[j].t==AAoptsmall || da[j].t==AAopttype) { esc++; if (i>=nb) sc++; continue; } return 1; } if (arg<0) die(err_desc,"Internal error: Bad argument in descfindrules"); if (da[j].mode>=0) { if ((tree[arg].m&da[j].mode)==da[j].mode) esc++; else return 1; } t=tree[arg].t; switch(da[j].t) { case AAopttype: /* Since arg is not GNOARG, arg is present */ case AAtype: if (t==da[j].type) esc++; if (is_subtype(t,da[j].type)) break; if (is_subtype(da[j].type,t)) sc++; else return 1; break; case AActype: if (ctype[t]==da[j].misc) esc++; else return 1; break; case AAoptsmall: /* Since arg is not GNOARG, arg is present */ case AAsmall: if (tree[arg].f==Fsmall && tree[arg].x==da[j].misc) esc++; else return 1; break; case AAstring: if (is_const(arg,CSTstr) && strcmp(entryname(arg),da[j].str)==0) esc++; else return 1; break; case AAreftype: if (t==da[j].type) esc++; if (tree[arg].f==Frefarg && is_subtype(da[j].type,t) && ctype[t]==ctype[da[j].type]) break; return 1; case AAherevalue: if (t==da[j].type && (tree[arg].f==Fsmall || tree[arg].f==Fconst)) { esc++; break; } return 1; case AAlvalue: if (getlvalue(arg)<0) return 1; if (t==da[j].type) esc++; else if (ctype[t]!=ctype[da[j].type] || !is_subtype(t,da[j].type)) return 1; break; case AAmulti: if (tree[arg].f==Fentry || tree[arg].f==Fsmall) break; return 1; case AAnoarg:/* Since arg is not GNOARG, reject*/ return 1; default: die(err_desc,"Internal error unknown AAvalue in descrulescore"); } } if (ia; for(i=0;inb;i++) { int sc=0, esc=0; if (descrulescore(nb,arg,ga+i,&sc,&esc)) continue; if (best==-1 || scescore )) { score=sc; escore=esc; best=i; } } return (best==-1)?NULL:ga+best; } gpdescarg *descfindrules(int nb, int *arg, gpfunc *gp) { return descfindrulesdsc(nb, arg, gp->dsc); } gpdescarg *descfindrules1(int arg, int nf) { return descfindrules(1, &arg, lfunc+nf); } int gentypefuncdesc(int n, gpfunc *gp) { int arg[STACKSZ]; int i, nb; int y=tree[n].y; gpdescarg *rule; if ( y!=-1 ) { gentype(y); tree[n].m|=tree[y].m&MODHERIT; } nb=genlistargs(n,arg,0,STACKSZ); rule=descfindrules(nb,arg,gp); if (!rule) return Gnotype; for(i=0;inargs;i++) if (rule->args[i].t==AAlvalue) { int ta=tree[arg[i]].t, ts=rule->args[i].type; if (!is_subtype(ts,ta)) warning(n,"Assignement to a less precise type: %s<-%s",GPname(ta),GPname(ts)); } tree[n].m|=rule->mode; return rule->type; } enum FBenum {FBparens, FBstdref} flagbit; struct rpn_data { FILE *fout; gpdescarg *rule; int nbarg; int *arg; int nerr; int nf; int sp; long flag; }; static int get_arg(struct rpn_data *d, int n) { if (n<=d->nbarg) return d->arg[n-1]; return GNOARG; } static int get_str(struct rpn_data *d, int n) { int x=get_arg(d,n); if (tree[x].f!=Fconst && value[tree[x].x].type!=CSTstr) die(n,"Constant string expected"); return x; } static descargatom* get_atom(struct rpn_data *d, int n) { if(n>d->rule->nargs) die(d->nerr,"Too few parameters"); return d->rule->args+n-1; } static void cast_flag(struct rpn_data *d, int n, int t) { gencastf(d->fout,n,t,d->flag&(1<sp-=(n) #define push(n) d->sp+=(n) #define LVL(n) (stk[d->sp-1-(n)]) #define NOLVL ((void)stk) RPN(rpn_add) {LVL(1)+=LVL(0); pop(1);} RPN(rpn_sub) {LVL(1)-=LVL(0); pop(1);} RPN(rpn_mul) {LVL(1)*=LVL(0); pop(1);} RPN(rpn_div) {LVL(1)/=LVL(0); pop(1);} RPN(rpn_mod) {LVL(1)%=LVL(0); pop(1);} RPN(rpn_and) {LVL(1)&=LVL(0); pop(1);} RPN(rpn_or) {LVL(1)|=LVL(0); pop(1);} RPN(rpn_xor) {LVL(1)^=LVL(0); pop(1);} RPN(rpn_neg) {LVL(0)=-LVL(0);} RPN(rpn_not) {LVL(0)=!LVL(0);} RPN(rpn_nbarg) {push(1);LVL(0)=d->nbarg;} RPN(rpn_parens) {NOLVL;d->flag|=1<flag|=1<fout, get_str(d, LVL(0))); pop(1); } RPN(rpn_str_raw) { fputs(entryname(get_str(d, LVL(0))),d->fout); pop(1); } RPN(rpn_type) { LVL(0)=get_atom(d, LVL(0))->type; } RPN(rpn_value) { int n=get_arg(d,LVL(0)); if (tree[n].f!=Fsmall) die(n,"Not an immediate small"); LVL(0)=tree[n].x; } RPN(rpn_cast) { int n=get_arg(d,LVL(1)); int cast=LVL(0); descargatom *r=get_atom(d, LVL(1)); int t=(cast==-1)?r->type:cast; switch(r->t) { case AAstdarg: { int i; int x=LVL(1)-1; if (x==0) die(d->nerr,"No argument before ellipsis (...)"); t=r[-1].type; for(i=x-1;inbarg;i++) { if (i>=x) fprintf(d->fout,", "); if (d->flag&(1<fout,"&"); gencast(d->fout,d->arg[i],t); } } break; case AAoptsmall: fprintf(d->fout,"%d",r->misc); break; case AAopttype: if (n==GNOARG) gencodenoarg(d->fout,t,n); else cast_flag(d,n,t); break; case AActype: if (cast==-1) t=tree[n].t; default: /*Fall through*/ cast_flag(d,n,t); break; } pop(2); } RPN(rpn_prec) { genprec(d->fout, preclevel); } RPN(rpn_bitprec) { genbitprec(d->fout, preclevel); } RPN(rpn_code) { push(1); LVL(0)=-1; rpn_cast(d,stk); } RPN(rpn_wrapper) { int idx = LVL(0); int n = get_arg(d,idx); gpfunc *gp; pop(1); if (isfunc(n,"_closure")) { int y = tree[n].y; while(tree[y].f==Flistarg) y=tree[y].x; gp = lfunc+findfunction(entryname(y)); if (gp->spec==GPuser && gp->user->wrapper>=0) { fprintf(d->fout, "wrap_%s", gp->proto.cname); return; } } gp = lfunc+lfunc[d->nf].wrap->w[idx-1]; fputs(gp->proto.cname, d->fout); } RPN(rpn_cookie) { int arg[STACKSZ]; int n=get_arg(d,LVL(0)); if (isfunc(n,"_closure")) { int nb=genlistargs(n,arg,1,STACKSZ-1); gpfunc *gp = lfunc + findfunction(entryname(arg[0])); if (gp->spec==GPuser && gp->user->wrapper>=0) { gpfunc *wr = lfunc + gp->user->wrapper; if ((funcmode(*gp)&(1<fout, nb-1,arg+1,FC_tovecprec,d->nerr); else { if (nb==1) fputs("NULL", d->fout); else genfuncbydesc(d->fout, nb-1,arg+1,FC_tovec,d->nerr); } pop(1); return; } } rpn_code(d,stk); } RPN(rpn_format_string) { int x=LVL(0)-1; int i,j; int arg[STACKSZ]; if (x==0) die(d->nerr,"Ellipsis at start of description"); for(j=x-1;jnbarg;j++) { int nb=genlistcats(d->arg[j],arg,STACKSZ); for(i=0;ifout,n,FC_formatcode,n)) die(n,"No format for %s arg",GPname(tree[n].t)); } } pop(1); } RPN(rpn_format_args) { int x=LVL(0)-1; int arg[STACKSZ]; int i,j; if (x==0) die(d->nerr,"Ellipsis at start of description"); for(j=x-1;jnbarg;j++) { int nb=genlistcats(d->arg[j],arg,STACKSZ); for(i=0;itype!=Gvoid) { fprintf(d->fout,", "); gencast(d->fout,arg[i],rule->type); } } } pop(1); } const char *gencoderpn(FILE *fout, const char *p, gpdescarg *rule, int nbarg, int *arg, int nerr, int nf) { int stk[STACKSZ]; struct rpn_data data; const char *ps = p+1; struct rpn_func rpn[] = { {"add",2,rpn_add},{"sub",2,rpn_sub},{"neg",1,rpn_neg}, {"mul",2,rpn_mul},{"div",2,rpn_div},{"mod",2,rpn_mod}, {"and",2,rpn_and},{"or",2,rpn_or},{"xor",2,rpn_xor},{"not",1,rpn_not}, {"value",1,rpn_value},{"type",1,rpn_type},{"nbarg",0,rpn_nbarg}, {"parens",0,rpn_parens},{"stdref",0,rpn_stdref}, {"str_format",1,rpn_str_format},{"str_raw",1,rpn_str_raw}, {"code",1,rpn_code},{"cast",2,rpn_cast}, {"prec",0,rpn_prec},{"bitprec",0,rpn_bitprec}, {"format_string",1,rpn_format_string}, {"format_args",1,rpn_format_args}, {"cookie",1,rpn_cookie}, {"wrapper",1,rpn_wrapper}, {NULL,0,NULL} }; data.fout=fout; data.rule=rule; data.nbarg=nbarg; data.arg=arg; data.nerr=nerr; data.nf=nf; data.flag=0; data.sp=0; for(;;p++) { if (!*p) die(nerr,"Unfinished ${} in description"); if (*p==' ' || *p=='}' ) { size_t l=p-ps; if (isdigit(ps[0]) || ps[0]=='-') stk[data.sp++]=strtol(ps,NULL,10); else if (ps[0]==':') stk[data.sp++]=strtotype_len(ps+1,l-1); else { int r; for(r=0; rpn[r].name; r++) { const char *name=rpn[r].name; if (l==strlen(name) && !strncmp(ps,name,l)) { if (rpn[r].arity>data.sp) die(nerr,"Too few arguments for %s",name); rpn[r].function(&data,stk); break; } } if(!rpn[r].name) die(nerr,"Unknown description command %s",xstrndup(ps,l)); } ps=p+1; if(*p=='}') break; } } if (data.sp) fprintf(fout,"%d",stk[--data.sp]); return p; } void gencodedesc(FILE *fout, int nb, int *arg, gpdescarg *rule, int nerr, int nf) { char buf[STACKSZ]; const char *p; int mode; p=rule->cname; mode=0; do { switch(mode) { case 0: if (*p=='$') mode=1; else if (*p) fputc(*p,fout); break; case 1: switch(*p) { case '$': mode=0; fprintf(fout,"$"); break; case '"': { char *s=(char*) memccpy(buf,p+1,'"',STACKSZ-1); if (!s) die(nerr,"Unfinished \" in description"); *(s-1)=0; die(nerr,buf); } case 0: die(nerr,"Unfinished $ in description"); case '{': p=gencoderpn(fout, p, rule, nb, arg, nerr, nf); mode=0; break; default: die(nerr,"Unknown description"); } } } while(*p++); } int genfuncbydesc(FILE *fout, int nb, int *arg, int nf, int nerr) { gpdescarg *rule=descfindrules(nb, arg, lfunc+nf); if (!rule) return 1; gencodedesc(fout,nb, arg, rule, nerr, nf); return 0; } int genfuncbydesc1(FILE *fout, int arg, int nf, int nerr) { return genfuncbydesc(fout, 1, &arg, nf, nerr); } gp2c-0.0.12/src/parse.h0000644000175000017500000000641413623231056011426 00000000000000/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_YY_PARSE_H_INCLUDED # define YY_YY_PARSE_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { KPARROW = 258, KARROW = 259, KDOTDOT = 260, KPE = 261, KSE = 262, KME = 263, KDE = 264, KDRE = 265, KEUCE = 266, KMODE = 267, KAND = 268, KOR = 269, KID = 270, KEQ = 271, KNE = 272, KGE = 273, KLE = 274, KSRE = 275, KSLE = 276, KSR = 277, KSL = 278, KDR = 279, KPP = 280, KSS = 281, KINTEGER = 282, KREAL = 283, KENTRY = 284, KSTRING = 285, SEQ = 286, DEFFUNC = 287, INT = 288, LVAL = 289, SIGN = 290, DERIV = 291, MAT = 292 }; #endif /* Tokens. */ #define KPARROW 258 #define KARROW 259 #define KDOTDOT 260 #define KPE 261 #define KSE 262 #define KME 263 #define KDE 264 #define KDRE 265 #define KEUCE 266 #define KMODE 267 #define KAND 268 #define KOR 269 #define KID 270 #define KEQ 271 #define KNE 272 #define KGE 273 #define KLE 274 #define KSRE 275 #define KSLE 276 #define KSR 277 #define KSL 278 #define KDR 279 #define KPP 280 #define KSS 281 #define KINTEGER 282 #define KREAL 283 #define KENTRY 284 #define KSTRING 285 #define SEQ 286 #define DEFFUNC 287 #define INT 288 #define LVAL 289 #define SIGN 290 #define DERIV 291 #define MAT 292 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 31 "parse.y" /* yacc.c:1909 */ int val; strcom str; #line 133 "parse.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; int yyparse (void); #endif /* !YY_YY_PARSE_H_INCLUDED */ gp2c-0.0.12/src/lang.l0000644000175000017500000002235313623476440011251 00000000000000%{ /* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include "header.h" #include "parse.h" #define MAX_INCLUDE_DEPTH 10 extern int yydebug; static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; static int depth = 0; static int linecount_stack[MAX_INCLUDE_DEPTH]; static int filecount_stack[MAX_INCLUDE_DEPTH]; static enum {Mread_lines,Min_braces} mode=Mread_lines; static int start=0; static int lastcom=-1; static void countline(char *text,int len) { int i; for (i=0; i> { if ( --depth < 0 ) yyterminate(); else { yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer(include_stack[depth]); linecount = linecount_stack[depth]; filecount = filecount_stack[depth]; } } \\r[^\n]+ { /*With credit to flex manpage*/ char *s=yytext+2; size_t ls; while(*s==' ' || *s=='\t') s++; if ( depth >= MAX_INCLUDE_DEPTH ) die(-1,"\\r includes nested too deeply" ); linecount_stack[depth] = linecount; filecount_stack[depth] = filecount; include_stack[depth++] = YY_CURRENT_BUFFER; ls = strlen(s); if (s[0]=='"' && s[ls-1]=='"') { s[ls-1]=0; s++; } yyin = fopen(s,"r"); if (!yyin) { char *t=(char*)malloc(strlen(s)+4); sprintf(t,"%s.gp",s); yyin = fopen(t,"r"); if (!yyin) die(-1,"cannot open file `%s'",s); s=t; } else s = strdup(s); linecount=1; filecount=newsrcfile(s); yy_switch_to_buffer( yy_create_buffer( yyin, YY_BUF_SIZE ) ); } \\[a-qs-z][^\n]*|\?[^\n]* { fprintf(stderr,"Warning:%s:%d: meta commands not implemented\n%s\n", srcfile[filecount],linecount,yytext); } ##?[ \t\r]*$ { /*We cannot recognize # */ fprintf(stderr,"Warning:%s:%d: meta commands not implemented\n%s\n", srcfile[filecount],linecount,yytext); } ".." return KDOTDOT; "->" return KARROW; \)[ \t\r]*-> return KPARROW; "\\/" return KDR; ">>" return KSR; "<<" return KSL; "<=" return KLE; ">=" return KGE; "!="|"<>" return KNE; "===" return KID; "==" return KEQ; "&&" return KAND; "||" return KOR; "++" return KPP; "--" return KSS; "+=" return KPE; "-=" return KSE; "*=" return KME; "/=" return KDE; "\\=" return KEUCE; "\\/=" return KDRE; "%=" return KMODE; ">>=" return KSRE; "<<=" return KSLE; "\n" {linecount++;if (mode==Mread_lines) {BEGIN(toplevel);return '\n';}} "\n" {linecount++;return '\n';} "{" {mode=Min_braces;BEGIN(INITIAL);} "}" {mode=Mread_lines;BEGIN(toplevel);} "\\\n" {linecount++;} "=" { for( ; ; ) { int c, nc, star=0; for( ; ; ) { c = input(); if ( c == EOF || c == 0 ) return c; if ( c == '\n' ) linecount++; else if ( c!=' ' && c!='\t' && c!='\r') break; } /*Since only one char of look-ahead is available, we have to handle the / or \ by ourself. Fortunately: after =/, only * is valid, after =\, only \ and \\n are valid. Thus we handle them and reject the rest. */ if (c!='/' && c!='\\') { unput(c); return '='; } nc=input(); if (c=='\\' && nc=='\n') { linecount++; continue; } if ((c=='/' && nc!='*') || (c=='\\' && nc!='\\')) { fprintf(stderr,"%s:%d: parse error after =%c%c\n" ,srcfile[filecount],linecount,(char)c,(char)nc); fprintf(stderr,"Errors found: aborting...\n"); exit(1); } if (c=='/') { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0 ) die(-1,"Unfinished comment"); if ( c == '/' && star) break; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) linecount++; } } else { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); if ( c == '/' && star) c='\\'; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) { linecount++; break; } if ( c == '\r' ) continue; } } } } [ \t\r]+ "/*"|"\\\\" { int star=0; int n; int nl=0; int lc=linecount; if (lastcom==-1) lastcom=newcomment(); n=lastcom; pushcomment(n,'/'); pushcomment(n,'*'); if (yytext[0]=='/') { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); pushcomment(n,c); if ( c == '/' && star) break; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) linecount++; } } else { nl=1; for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); if ( c == '/' && star) c='\\'; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) { linecount++; break; } if ( c == '\r' ) continue; pushcomment(n,c); } pushcomment(n,' '); pushcomment(n,'*'); pushcomment(n,'/'); pushcomment(n,'\n'); } /*We hack: we put white spaces after comments in the comments This makes output looking better in most cases. Sadly we can't add white spaces that are before comments. */ for( ; ; ) { int c = input(); if ( c == EOF || c == 0 ) return '\n'; if ( c == '\n' ) { linecount++; pushcomment(n,c); nl=1; } else if ( c == ' ' || c == '\t') { if (nl==0) pushcomment(n,c); /*We only add spaces on the same line*/ } else if ( c != '\r' ) { unput(c); break; } } if (lc. {BEGIN(INITIAL); unput(yytext[0]);} . return yytext[0]; %% gp2c-0.0.12/src/patchfunc.h0000644000175000017500000000654413623476440012303 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ /*Patch for list of gp functions. Must be include after header.h.*/ typedef enum {GPuser_private, GPgpmany, GPinstall,GPaddhelp, GPgrandO, GPbreak,GPnext,GPreturn, GPfor,GPforeach,GPforstep,GPforstepvec,GPforprime,GPforvec, GPfordiv,GPfordivfactored, GPdoloop, GPlabel, GPglobal,GPlocal,GPlocalbitprec,GPlocalprec, GPif, GPprod,GPsum,GPsumdiv,GPprodeuler, GPuntil,GPwhile,GPwhilenull, GPmakevec,GPmakemat,GPmakevecsmall, GPvector,GPvectorsmall,GPvectorv,GPmatrix, GPiferr, GPinitfunc,GPcopyarg, GPclosure, GPself } GPspec_private; struct patchfunc_s { const char *gpname; const char *code; int type; int mode; int spec; } patchfunc[]={ /*Override previous definition in pari/src/init.c*/ {"O",NULL,Ggen,0,GPgrandO}, {"addhelp",NULL,Gnotype,(1< 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart(yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart (FILE *input_file ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer (YY_BUFFER_STATE b ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypop_buffer_state (void ); static void yyensure_buffer_stack (void ); static void yy_load_buffer_state (void ); static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); void yyfree (void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef unsigned char YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #ifdef yytext_ptr #undef yytext_ptr #endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yynoreturn yy_fatal_error (yyconst char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 45 #define YY_END_OF_BUFFER 46 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[110] = { 0, 0, 0, 0, 0, 46, 44, 41, 35, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 2, 2, 44, 40, 44, 1, 44, 37, 44, 38, 43, 41, 36, 43, 43, 9, 43, 41, 19, 0, 7, 0, 32, 22, 0, 0, 28, 24, 26, 25, 27, 12, 11, 5, 0, 42, 29, 0, 0, 2, 0, 0, 0, 16, 17, 21, 18, 15, 0, 1, 39, 14, 30, 23, 0, 10, 0, 9, 9, 0, 13, 0, 5, 0, 0, 5, 6, 5, 0, 5, 4, 3, 34, 20, 33, 31, 9, 8, 0, 5, 0, 5, 0, 5, 0, 4, 0, 3, 0, 5, 0 } ; static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 6, 7, 1, 8, 9, 1, 1, 10, 11, 12, 1, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 1, 1, 19, 20, 21, 22, 1, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 1, 25, 1, 1, 26, 1, 27, 28, 27, 27, 29, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 30, 27, 27, 27, 27, 27, 31, 27, 27, 32, 33, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst YY_CHAR yy_meta[35] = { 0, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 5, 5, 5, 1, 1, 1, 1, 6, 5, 1, 7, 6, 6, 5, 6, 6, 1, 1, 1 } ; static yyconst flex_uint16_t yy_base[119] = { 0, 0, 0, 33, 57, 145, 299, 37, 299, 120, 32, 117, 127, 40, 109, 31, 49, 69, 34, 95, 18, 46, 108, 53, 121, 75, 299, 82, 299, 299, 48, 299, 73, 103, 0, 124, 87, 299, 78, 299, 107, 299, 299, 92, 83, 299, 299, 299, 299, 299, 299, 299, 152, 104, 299, 299, 114, 117, 0, 126, 85, 0, 77, 299, 72, 299, 68, 77, 67, 299, 48, 299, 299, 104, 299, 155, 0, 0, 0, 299, 144, 0, 161, 147, 167, 299, 0, 170, 176, 185, 59, 299, 299, 299, 299, 0, 0, 179, 187, 194, 202, 205, 209, 212, 220, 52, 43, 226, 229, 299, 247, 254, 259, 266, 273, 274, 280, 287, 292 } ; static yyconst flex_int16_t yy_def[119] = { 0, 109, 1, 110, 110, 109, 109, 109, 109, 109, 111, 109, 109, 109, 109, 109, 109, 109, 109, 109, 19, 109, 109, 109, 112, 109, 109, 109, 109, 109, 109, 109, 109, 109, 113, 109, 109, 109, 111, 109, 111, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 114, 20, 109, 109, 115, 109, 109, 109, 109, 109, 112, 112, 109, 109, 109, 109, 109, 109, 109, 113, 116, 117, 109, 109, 52, 109, 109, 109, 109, 52, 109, 109, 109, 118, 109, 109, 109, 109, 116, 117, 109, 109, 109, 109, 109, 109, 109, 109, 118, 118, 109, 109, 0, 109, 109, 109, 109, 109, 109, 109, 109, 109 } ; static yyconst flex_uint16_t yy_nxt[334] = { 0, 6, 7, 8, 7, 9, 10, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 20, 21, 22, 23, 6, 24, 24, 25, 6, 24, 24, 24, 24, 24, 26, 27, 28, 30, 31, 30, 39, 36, 32, 36, 43, 46, 43, 54, 109, 105, 33, 109, 36, 47, 36, 44, 55, 34, 105, 40, 35, 30, 31, 30, 48, 105, 32, 62, 63, 37, 94, 49, 50, 67, 33, 65, 66, 73, 74, 73, 69, 34, 75, 67, 35, 51, 39, 52, 52, 52, 93, 36, 70, 36, 92, 53, 43, 71, 43, 91, 53, 56, 54, 89, 89, 40, 79, 44, 73, 74, 73, 57, 109, 58, 58, 58, 54, 72, 83, 83, 56, 59, 84, 84, 84, 60, 59, 67, 61, 69, 64, 45, 58, 58, 58, 86, 86, 86, 42, 41, 87, 87, 37, 53, 88, 88, 88, 109, 53, 109, 80, 54, 109, 77, 77, 77, 78, 77, 80, 73, 74, 73, 81, 81, 81, 84, 84, 84, 109, 109, 81, 81, 81, 99, 109, 97, 97, 109, 82, 98, 98, 98, 101, 82, 109, 100, 100, 100, 88, 88, 88, 103, 109, 107, 102, 102, 102, 98, 98, 98, 99, 109, 109, 104, 104, 108, 108, 108, 99, 109, 109, 101, 100, 100, 100, 101, 109, 109, 103, 109, 100, 100, 100, 102, 102, 102, 103, 102, 102, 102, 104, 104, 107, 109, 109, 107, 109, 109, 104, 104, 109, 109, 109, 109, 108, 108, 108, 108, 108, 108, 29, 29, 29, 29, 29, 29, 29, 38, 38, 38, 38, 38, 38, 38, 68, 109, 68, 68, 68, 76, 109, 76, 76, 76, 76, 76, 85, 85, 85, 109, 85, 90, 90, 95, 109, 95, 95, 95, 95, 95, 96, 109, 96, 96, 96, 96, 96, 106, 109, 106, 106, 5, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109 } ; static yyconst flex_int16_t yy_chk[334] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 10, 7, 3, 7, 13, 15, 13, 18, 20, 106, 3, 20, 30, 15, 30, 13, 18, 3, 105, 10, 3, 4, 4, 4, 16, 90, 4, 21, 21, 21, 70, 16, 16, 68, 4, 23, 23, 32, 32, 32, 25, 4, 32, 67, 4, 17, 38, 17, 17, 17, 66, 36, 25, 36, 64, 17, 43, 25, 43, 62, 17, 19, 25, 60, 60, 38, 44, 43, 73, 73, 73, 19, 40, 19, 19, 19, 33, 27, 53, 53, 56, 19, 53, 53, 53, 19, 19, 24, 19, 35, 22, 14, 56, 56, 56, 57, 57, 57, 12, 11, 59, 59, 9, 57, 59, 59, 59, 5, 57, 0, 80, 35, 0, 35, 35, 35, 35, 35, 52, 75, 75, 75, 80, 80, 80, 83, 83, 83, 0, 0, 52, 52, 52, 84, 0, 82, 82, 0, 52, 82, 82, 82, 88, 52, 0, 84, 84, 84, 87, 87, 87, 89, 0, 98, 88, 88, 88, 97, 97, 97, 99, 0, 0, 89, 89, 98, 98, 98, 100, 0, 0, 101, 99, 99, 99, 102, 0, 0, 103, 0, 100, 100, 100, 101, 101, 101, 104, 102, 102, 102, 103, 103, 107, 0, 0, 108, 0, 0, 104, 104, 0, 0, 0, 0, 107, 107, 107, 108, 108, 108, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, 111, 111, 112, 0, 112, 112, 112, 113, 0, 113, 113, 113, 113, 113, 114, 114, 114, 0, 114, 115, 115, 116, 0, 116, 116, 116, 116, 116, 117, 0, 117, 117, 117, 117, 117, 118, 0, 118, 118, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "lang.l" #line 2 "lang.l" /* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include "header.h" #include "parse.h" #define MAX_INCLUDE_DEPTH 10 extern int yydebug; static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; static int depth = 0; static int linecount_stack[MAX_INCLUDE_DEPTH]; static int filecount_stack[MAX_INCLUDE_DEPTH]; static enum {Mread_lines,Min_braces} mode=Mread_lines; static int start=0; static int lastcom=-1; static void countline(char *text,int len) { int i; for (i=0; i #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (void ); int yyget_debug (void ); void yyset_debug (int debug_flag ); YY_EXTRA_TYPE yyget_extra (void ); void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); void yyset_in (FILE * _in_str ); FILE *yyget_out (void ); void yyset_out (FILE * _out_str ); int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); void yyset_lineno (int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (void ); #else extern int yywrap (void ); #endif #endif #ifndef YY_NO_UNPUT static void yyunput (int c,char *buf_ptr ); #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_load_buffer_state( ); } { #line 90 "lang.l" if (!start) {start=1; BEGIN(toplevel);} #line 859 "lang.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 110 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 299 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 92 "lang.l" copyentry(yytext); return KENTRY; YY_BREAK case 2: YY_RULE_SETUP #line 93 "lang.l" copytoken(yytext); return KINTEGER; YY_BREAK case 3: YY_RULE_SETUP #line 94 "lang.l" copytoken(yytext); return KINTEGER; YY_BREAK case 4: YY_RULE_SETUP #line 95 "lang.l" copytoken(yytext); return KINTEGER; YY_BREAK case 5: YY_RULE_SETUP #line 96 "lang.l" copytoken(yytext); return KREAL; YY_BREAK case 6: /* rule 6 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 97 "lang.l" copytoken(yytext); return KREAL; YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP #line 98 "lang.l" copystring(yytext,yyleng); return KSTRING; YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(toplevel): #line 100 "lang.l" { if ( --depth < 0 ) yyterminate(); else { yy_delete_buffer(YY_CURRENT_BUFFER ); yy_switch_to_buffer(include_stack[depth]); linecount = linecount_stack[depth]; filecount = filecount_stack[depth]; } } YY_BREAK case 8: YY_RULE_SETUP #line 112 "lang.l" { /*With credit to flex manpage*/ char *s=yytext+2; size_t ls; while(*s==' ' || *s=='\t') s++; if ( depth >= MAX_INCLUDE_DEPTH ) die(-1,"\\r includes nested too deeply" ); linecount_stack[depth] = linecount; filecount_stack[depth] = filecount; include_stack[depth++] = YY_CURRENT_BUFFER; ls = strlen(s); if (s[0]=='"' && s[ls-1]=='"') { s[ls-1]=0; s++; } yyin = fopen(s,"r"); if (!yyin) { char *t=(char*)malloc(strlen(s)+4); sprintf(t,"%s.gp",s); yyin = fopen(t,"r"); if (!yyin) die(-1,"cannot open file `%s'",s); s=t; } else s = strdup(s); linecount=1; filecount=newsrcfile(s); yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE ) ); } YY_BREAK case 9: YY_RULE_SETUP #line 145 "lang.l" { fprintf(stderr,"Warning:%s:%d: meta commands not implemented\n%s\n", srcfile[filecount],linecount,yytext); } YY_BREAK case 10: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 150 "lang.l" { /*We cannot recognize # */ fprintf(stderr,"Warning:%s:%d: meta commands not implemented\n%s\n", srcfile[filecount],linecount,yytext); } YY_BREAK case 11: YY_RULE_SETUP #line 155 "lang.l" return KDOTDOT; YY_BREAK case 12: YY_RULE_SETUP #line 156 "lang.l" return KARROW; YY_BREAK case 13: YY_RULE_SETUP #line 157 "lang.l" return KPARROW; YY_BREAK case 14: YY_RULE_SETUP #line 158 "lang.l" return KDR; YY_BREAK case 15: YY_RULE_SETUP #line 159 "lang.l" return KSR; YY_BREAK case 16: YY_RULE_SETUP #line 160 "lang.l" return KSL; YY_BREAK case 17: YY_RULE_SETUP #line 161 "lang.l" return KLE; YY_BREAK case 18: YY_RULE_SETUP #line 162 "lang.l" return KGE; YY_BREAK case 19: YY_RULE_SETUP #line 163 "lang.l" return KNE; YY_BREAK case 20: YY_RULE_SETUP #line 164 "lang.l" return KID; YY_BREAK case 21: YY_RULE_SETUP #line 165 "lang.l" return KEQ; YY_BREAK case 22: YY_RULE_SETUP #line 166 "lang.l" return KAND; YY_BREAK case 23: YY_RULE_SETUP #line 167 "lang.l" return KOR; YY_BREAK case 24: YY_RULE_SETUP #line 169 "lang.l" return KPP; YY_BREAK case 25: YY_RULE_SETUP #line 170 "lang.l" return KSS; YY_BREAK case 26: YY_RULE_SETUP #line 171 "lang.l" return KPE; YY_BREAK case 27: YY_RULE_SETUP #line 172 "lang.l" return KSE; YY_BREAK case 28: YY_RULE_SETUP #line 173 "lang.l" return KME; YY_BREAK case 29: YY_RULE_SETUP #line 174 "lang.l" return KDE; YY_BREAK case 30: YY_RULE_SETUP #line 175 "lang.l" return KEUCE; YY_BREAK case 31: YY_RULE_SETUP #line 176 "lang.l" return KDRE; YY_BREAK case 32: YY_RULE_SETUP #line 177 "lang.l" return KMODE; YY_BREAK case 33: YY_RULE_SETUP #line 178 "lang.l" return KSRE; YY_BREAK case 34: YY_RULE_SETUP #line 179 "lang.l" return KSLE; YY_BREAK case 35: /* rule 35 can match eol */ YY_RULE_SETUP #line 181 "lang.l" {linecount++;if (mode==Mread_lines) {BEGIN(toplevel);return '\n';}} YY_BREAK case 36: /* rule 36 can match eol */ YY_RULE_SETUP #line 182 "lang.l" {linecount++;return '\n';} YY_BREAK case 37: YY_RULE_SETUP #line 183 "lang.l" {mode=Min_braces;BEGIN(INITIAL);} YY_BREAK case 38: YY_RULE_SETUP #line 184 "lang.l" {mode=Mread_lines;BEGIN(toplevel);} YY_BREAK case 39: /* rule 39 can match eol */ YY_RULE_SETUP #line 186 "lang.l" {linecount++;} YY_BREAK case 40: YY_RULE_SETUP #line 188 "lang.l" { for( ; ; ) { int c, nc, star=0; for( ; ; ) { c = input(); if ( c == EOF || c == 0 ) return c; if ( c == '\n' ) linecount++; else if ( c!=' ' && c!='\t' && c!='\r') break; } /*Since only one char of look-ahead is available, we have to handle the / or \ by ourself. Fortunately: after =/, only * is valid, after =\, only \ and \\n are valid. Thus we handle them and reject the rest. */ if (c!='/' && c!='\\') { unput(c); return '='; } nc=input(); if (c=='\\' && nc=='\n') { linecount++; continue; } if ((c=='/' && nc!='*') || (c=='\\' && nc!='\\')) { fprintf(stderr,"%s:%d: parse error after =%c%c\n" ,srcfile[filecount],linecount,(char)c,(char)nc); fprintf(stderr,"Errors found: aborting...\n"); exit(1); } if (c=='/') { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0 ) die(-1,"Unfinished comment"); if ( c == '/' && star) break; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) linecount++; } } else { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); if ( c == '/' && star) c='\\'; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) { linecount++; break; } if ( c == '\r' ) continue; } } } } YY_BREAK case 41: YY_RULE_SETUP #line 261 "lang.l" YY_BREAK case 42: YY_RULE_SETUP #line 262 "lang.l" { int star=0; int n; int nl=0; int lc=linecount; if (lastcom==-1) lastcom=newcomment(); n=lastcom; pushcomment(n,'/'); pushcomment(n,'*'); if (yytext[0]=='/') { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); pushcomment(n,c); if ( c == '/' && star) break; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) linecount++; } } else { nl=1; for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); if ( c == '/' && star) c='\\'; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) { linecount++; break; } if ( c == '\r' ) continue; pushcomment(n,c); } pushcomment(n,' '); pushcomment(n,'*'); pushcomment(n,'/'); pushcomment(n,'\n'); } /*We hack: we put white spaces after comments in the comments This makes output looking better in most cases. Sadly we can't add white spaces that are before comments. */ for( ; ; ) { int c = input(); if ( c == EOF || c == 0 ) return '\n'; if ( c == '\n' ) { linecount++; pushcomment(n,c); nl=1; } else if ( c == ' ' || c == '\t') { if (nl==0) pushcomment(n,c); /*We only add spaces on the same line*/ } else if ( c != '\r' ) { unput(c); break; } } if (lcyy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart(yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { yy_state_type yy_current_state; char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 110 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { int yy_is_jam; char *yy_cp = (yy_c_buf_p); YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 110 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 109); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT static void yyunput (int c, char * yy_bp ) { char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up yytext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ int number_to_move = (yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart(yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_init_buffer(YY_CURRENT_BUFFER,input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = (yy_size_t)size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree((void *) b->yy_ch_buf ); yyfree((void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { int num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { return yy_scan_bytes(yystr,(int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param _line_number line number * */ void yyset_lineno (int _line_number ) { yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str ) { yyin = _in_str ; } void yyset_out (FILE * _out_str ) { yyout = _out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int _bdebug ) { yy_flex_debug = _bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 346 "lang.l" gp2c-0.0.12/src/genblock.c0000644000175000017500000006104513623476440012104 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" static int multi=0; static int newprivvar=1; extern int initnode; int newdecl(int flag, int t, int initval, int *v) { char s[33]; sprintf(s,"%d",newprivvar++); *v=newnode(Fentry,newentry(strdup(s)),-1); return pushvar(*v,flag,t,initval); } int newcall(const char *s, int y) { return newnode(Ffunction,newentry(s),y); } int stacktofun(int fun, int *stack, int nb) { int n,i; if (nb==-1) return -1; for(n=stack[0],i=1;i=0) { if (tree[seq].f==Fseq) { bseq=newnode(Fassign,ret,tree[seq].y); bseq=newnode(Fseq,tree[seq].x,bseq); } else bseq=newnode(Fassign,ret,seq); } else bseq=seq; return bseq; } int geninsertvarop(int seq, int ret, OPerator op) { int bseq; if (seq==-1) return -1; if (ret>=0) { if (tree[seq].f==Fseq) { bseq=newopcall(op,ret,tree[seq].y); bseq=newnode(Fseq,tree[seq].x,bseq); } else bseq=newopcall(op,ret, seq); } else bseq=seq; return bseq; } int newcoeff(int n, int x, int y) { int arg[3]; int nb=y<0?2:3; arg[0]=n; arg[1]=x; arg[2]=y; return newnode(Ffunction,OPcoeff,stacktoargs(arg,nb)); } int newcoeffsafe(int n, int x, int y) { int arg[3]; int nb=y<0?2:3; arg[0]=n; arg[1]=x; arg[2]=y; if (!safecoeff) return newnode(Ffunction,OPcoeff,stacktoargs(arg,nb)); else return newcall("_safecoeff",stacktoargs(arg,nb)); } void makeblock(int bl, int n, int aseq, int ret, int savx) { /*create a block*/ tree[n].f=Fblock; tree[n].x=bl; block[bl].ret=ret; tree[n].y=aseq; copyctx(savx,block+bl); restorectx(savx); } void makeblocks(int bl1, int bl2, int n, int bseq, int aseq, int ret, int savx) { int y; tree[n].f=Fblock; tree[n].x=bl1; block[tree[n].x].ret=ret; y=addseqright(bseq,newnode(Fblock,bl2,aseq)); tree[n].y=y; copyctx(savx,block+bl2); restorectx(savx); } void makeblocks3(int bl1, int bl2, int bl3, int n, int bseq, int aseq, int ret, int sav0, int savx) { int y; tree[n].f=Fblock; tree[n].x=bl1; block[tree[n].x].ret=ret; y=addseqright(bseq,newnode(Fblock,bl2,newnode(Fblock,bl3,aseq))); tree[n].y=y; copyctx(savx,block+bl3); restorectx(savx); copyctx(sav0,block+bl2); restorectx(sav0); } void affectval(int vn, int val, int *seq) { ctxvar *v = ctxstack+vn; if (val<0) die(-1,"Internal error: affectval"); int valn=newnode(Fassign,newleaf(v->node),val); *seq=addseqright(*seq,valn); } int genblockdeclaration(int args, int n, int flag, int type, int *seq) { int stack[STACKSZ]; int i; enum {local,global,function} decl; int mint=(type>=0)?type:Ggen; int nb=listtostack(args,Flistarg,stack,STACKSZ,"function declaration",n); if (nb==1 && stack[0]==GNOARG) nb--; decl=(flag&(1<node,FC_default_check)) v->flag|=(1<narg-1;i>=0;i--) { ctxvar *v=ctxstack+sav1+i; gpdescarg *rule; int check=-1; if (!(v->flag&(1<node, FC_badtype); if (rule && rule->args[0].type==vartype(*v)) { check=newcall("_badtype",newleaf(v->node)); if (rule->type!=Gvoid) { int name=newstringnode(gp->gpname,-1); int args = descfindrules1(name,findfuncdesc("_err_type")) ? name : newnode(Flistarg,name,v->node); check=newcall("if", newnode(Flistarg,check, newcall("_err_type", args))); } } if (v->initval>=0 && (v->flag&(1<node)), newnode(Fassign,newleaf(v->node),v->initval)); check=newcall("if", (check>=0)?newnode(Flistarg,n,check):n); v->initval=-1; } if (check>=0) seq=addseqleft(check,seq); } return seq; } #if 0 /*The code for global(globalvars) f(args)=local(localvars);code;... is */ { ulong ltop=avma; GEN p1; { GEN args; GEN localvars; code; p1=...; } gerepileall(ltop,2,&p1,&globalsvar); return p1; } #endif void genblockdeffunc(int n) { int funcid=tree[n].x; int seq=tree[n].y; const char *name=entryname(funcid); int args=tree[funcid].y; int bl1,gltop=-1,level=preclevel; int savcf,savnpv; int sav1,nodebl1; userfunc *ufunc; /*save global var*/ savcf=currfunc; savnpv=newprivvar; /*reset private var counter*/ newprivvar=1; /*create function*/ currfunc=findfunction(entryname(funcid)); if (currfunc<0) die(n,"internal error: unknown function %s in genblockdeffunc",name); if (lfunc[currfunc].spec!=GPuser) { if (lfunc[currfunc].spec==GPinstalled) die(n,"Cannot redefine install'ed function %s",name); else die(n,"internal error: not a user function %s in genblockdeffunc",name); } ufunc=lfunc[currfunc].user; /*create external block*/ bl1=newblock(); sav1=s_ctx.n; ufunc->bctx=sav1; ufunc->bl=bl1; if (autogc) { /*declare ltop*/ gltop=newnode(Fentry,newentry("ltop"),-1); pushvar(gltop,0,Gpari_sp,newcall("_avma",-1)); } /*declare function arguments*/ ufunc->sarg=s_ctx.n-sav1; ufunc->narg=genblockdeclaration(args,n,(1<sarg,seq,ufunc); /*generate block*/ genblock(seq,-1); if (tree[funcid].x!=initnode) { /*FIXME: For now, clear Cglobal flag to avoid initialization problem with implicit fetch_user_var().*/ int i; for (i=sav1;iproto.code ? gp->proto.code : "&DG"; /* 2.3 compat */ char c; PPproto mod; int nb=genlistargs(n,arg,0,STACKSZ); int i=0; while((mod=parseproto(&p,&c))!=PPend) { if (i=nb) die(n,"too few arguments"); switch(c) { case 'r': if (tree[arg[i]].f==Fentry) tree[arg[i]].f=Fconst; else if (tree[arg[i]].f!=Fconst) die(n,"argument must be a raw string"); break; case '&': if (tree[arg[i]].f!=Frefarg) die(arg[i],"missing &"); arg[i]=tree[arg[i]].x; case '*': /*Fall through */ { int a = detag(arg[i]); if (tree[a].f==Fmatcoeff) { int l=getlvaluerr(a); genblock(l,n); ctxstack[getvarerr(l)].flag|=1<user->bl; for (i=0; is.n; i++) { ctxvar *v=fc->c+i; if (v->flag&(1<node)); } return n; } static int has_mand_arg(const char *code) { PPproto mod; char c; while ((mod=parseproto(&code,&c))!=PPend) if(mod==PPstd) return 1; return 0; } void genblock(int n, int p) { int x,y; if (n<0) return; filecount=tree[n].fileno; linecount=tree[n].lineno; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fseq: genblock(x, n); genblock(y, n); break; case Fmat: if (x==-1) { int z=newgetgvec("t_MAT"); tree[n]=tree[z]; } else genblockmatrix(n); break; case Fvec: if (x==-1) { int z=newgetgvec("t_VEC"); tree[n]=tree[z]; } else genblockvector(n, Gvec, "t_VEC"); break; case Fassign: x=detag(x); if (tree[x].f==Fvec) genblockvecaff(n); else { if (tree[x].f==Fmatcoeff) { int l=getlvaluerr(x); int m=matindex_type(tree[x].y); genblock(l,n); ctxstack[getvarerr(l)].flag|=1<=0) { genblockindex(tree[y].x); genblockindex(tree[y].y); } } break; case Fmatcoeff: { int nn; int m=matindex_type(y); int yx=tree[y].x, yy=tree[y].y; genblock(x,n); genblock(y,n); switch(m) { case VEC_std: nn=newcoeffsafe(x,tree[yx].x,-1); break; case MAT_std: nn=newcoeffsafe(x,tree[yx].x,tree[yy].x); break; case MAT_line: tree[n].y=yx; if (FC_matrixrow>=0) nn=newcall("_[_,]",newnode(Flistarg,x,tree[yx].x)); else { genblockmatrixl(n,x,tree[yx].x); nn=n; } break; case MAT_column: nn=newcoeff(x,tree[yy].x,-1); break; case MAT_range: { int arg[5]; arg[0] = x; arg[1] = tree[yx].x; arg[2] = tree[yx].y; if(yy<0) nn=newnode(Ffunction,newentry("_[_.._]"),stacktoargs(arg,3)); else { arg[3] = tree[yy].x; arg[4] = tree[yy].y; nn=newnode(Ffunction,newentry("_[_.._,_.._]"),stacktoargs(arg,5)); } } break; default: die(-1,"Unknown matindex"); } tree[n]=tree[nn]; break; } case Fcall: { int seq = newcall("_(_)",addlistleft(x,y)); if (FC_call<0) die(n,"closures not available in this version"); tree[n]=tree[seq]; genblock(n,p); } break; case Fentry: { int nf, nv = getvar(n); if (nv>=0) break; nf = findfunction(entryname(n)); if (nf<0) /*Undeclared variable*/ { gpfunc *gp = lfunc+currfunc; userfunc *uf = gp->user; if (uf->flag&(1<narg++; } else {/*The variable has not been declared. * We declare it as a function-local variable initialized * to 'var. The global flag is set to avoid being block-local. * It is discarded in genblockdeffunc. This can be changed. */ int iv=newquotenode(entryname(n),-1); pushvar(n,(1<proto.code; GPspec spec = gp->spec; if (spec==GPuser && gp->user->flag&(1<user; int nv = getvar(n); if (nf<0 && uf->flag&(1<narg++; genblock(y,n); } else if (nf<0 && nv>=0) { int seq = newnode(Fcall,newnode(Fentry,x,-1),y); tree[n]=tree[seq]; genblock(n,p); } else if (nf>=0 && lfunc[nf].iter) genblockfunciter(n,lfunc+nf); else if (nf>=0 && lfunc[nf].spec>0) genblockfuncspec(n,p,lfunc+nf); else if (nf>=0 && lfunc[nf].proto.code) genblockproto(n,lfunc+nf); else if (nf>=0 && x>=OPss && x<=OPme) /* For compatibility with PARI 2.3 */ genblockproto(n,lfunc+nf); else genblock(y,n); } break; case Fdeffunc: if (currfunc!=-1) die(n,"Internal error : nested function"); genblockdeffunc(n); break; case Fconst: case Fsmall: case Fnoarg: break; case Ftag: genblock(x,n); break; case Fblock: die(p,"Internal error : looping in genblock"); default: if (tree[n].f>=FneedENTRY) { die(p,"Internal error : unknown func %s in genblock",funcname(tree[n].f)); } else { genblock(x, n); genblock(y, n); } } } gp2c-0.0.12/src/topfunc.c0000644000175000017500000001525113740627076011777 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" static int newanonvar=0; int newanon(void) { char s[33]; sprintf(s,"anon_%d",newanonvar++); return newentry(strdup(s)); } int newfun(const char *name) { char *s = malloc(5+strlen(name)); sprintf(s,"fun_%s",name); if (findfunction(s)<0) return newentry(s); free(s); return newanon(); } void mkfunc(int n, int p, int flag, int wr) { int x = tree[n].x; gpfunc *gp; const char *name=entryname(x); int nf=findfunction(name); if (nf==-1) { nf = newuserfunc(name); gp = lfunc+nf; } else { gp=lfunc+nf; if (gp->spec!=GPuser) die(n,"Trying to redefine function %s",name); else { userfunc *ufunc=gp->user; int parent=ufunc->pdefnode; int node=ufunc->defnode; if (tree[node].y>=0) warning(node,"Function %s redefined in file %s, line %d", name, srcfile[tree[n].fileno], tree[n].lineno); if (tree[parent].x==node) tree[parent].x=GNIL; else tree[parent].y=GNIL; } } gp->user->flag=flag; gp->user->wrapper=wr; gp->user->pdefnode=p; gp->user->defnode=n; } static void topfunc(int n, int p, int fun, int pfun, int nf, int wr) { int code = tree[n].y, arglist = tree[n].x; int args = arglist>=0 ? tree[arglist].y : -1; int fl = wr<0?(1<=0) tree[n] = tree[seq]; } static int topfuncproto(int n, int fun, int pfun, int nf) { int arg[STACKSZ+1]; int nb=genlistargs(n,arg,0,STACKSZ); gpfunc *gp = lfunc+nf; gpwrap *gw = gp->wrap; int nbwr = gw ? gw->nb: 0; const char *proto=gp->proto.code; int i=0; int var=-1, seq, a, t, binf, wr, kvar=-1; char const *p=proto; char c; PPproto mod; gpdesc *iter = lfunc[nf].iter; if (!proto) return 1; while((mod=parseproto(&p,&c))) { switch(mod) { case PPauto: break; case PPstd: if (i>=nb || arg[i]==GNOARG) die(n,"missing mandatory argument"); a = arg[i++]; wr = i<=nbwr ? gw->w[i-1]:-2; switch(c) { case 'G': if (wr>=0 && tree[a].f==Flambda) topfunclambda(a, n, fun, pfun, wr); break; case 'V': var = a; if (!iter) killlistarg(n,a); break; case '=': genequal(a,lfunc[nf].gpname,&var,&binf,&t); kvar = a; break; case 'I': case 'E': if (iter || wr<-1) break; case 'J': /* Fall through */ if (kvar>=0 && !iter) { tree[kvar]=tree[binf]; kvar=-1; } seq = newnode(Flambda,var,newleaf(a)); tree[a] = tree[seq]; topfunclambda(a, n, fun, pfun, wr); break; } break; case PPdefault: i++; a = i<=nb ? arg[i-1]: GNOARG; wr = i<=nbwr ? gw->w[i-1]:-2; switch(c) { case 'I': case 'E': if (!iter && a!=GNOARG && (wr>=-1 || var==-1)) { if (kvar>=0) { tree[kvar]=tree[binf]; kvar=-1; } seq = newnode(Flambda,var,newleaf(a)); tree[a]=tree[seq]; topfunclambda(a, n, fun, pfun, wr); } break; } break; case PPdefaultmulti: i++; break; case PPstar: break; default: die(n,"internal error: PPproto %d in genfuncbycode",mod); } } return 0; } /* n: node p:parent node */ void gentopfunc(int n, int p, int fun, int pfun) { int x,y; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Flambda: topfunclambda(n,p,fun,pfun,-1); break; case Fdeffunc: if (fun>=0) { int nn = newfun(entryname(x)); int seq= newnode(Fassign,newnode(Fentry,tree[x].x,-1),newnode(Fentry,nn,-1)); int nf = newnode(Fdeffunc,newnode(Ffunction,nn,tree[x].y),tree[n].y); topfunc(n,p,fun,pfun,nf,-1); tree[n] = tree[seq]; } else topfunc(n,p,fun,pfun,n,-1); break; case Fassign: if (tree[x].f==Fentry && tree[y].f==Flambda) { int nn = newfun(entryname(x)); int seq= newnode(Fentry,nn,-1); int nf = newnode(Fdeffunc,newnode(Ffunction,nn,tree[y].x),tree[y].y); topfunc(y,n,fun,pfun,nf,-1); if (fun>=0) tree[y] = tree[seq]; } else { gentopfunc(x,n,fun,pfun); gentopfunc(y,n,fun,pfun); } break; case Ffunction: { int nf; if (x==OPn) { if (tree[y].f==Fsmall) { tree[n]=tree[y]; tree[n].x=-tree[n].x; break; } else if (tree[y].f==Fconst) { value_t *val = value + tree[y].x; if (val->type==CSTsmall || val->type==CSTsmallreal) { tree[n]=tree[y]; val->val.small=-val->val.small; break; } } } nf = findfunction(entryname(n)); if (nf>=0 && lfunc[nf].spec<0) topfuncproto(n,fun,pfun,nf); gentopfunc(y,n,fun,pfun); } break; case Fentry: case Fconst: case Fsmall: case Fnoarg: break; case Frefarg: case Ftag: gentopfunc(x,n,fun,pfun); break; default: if (tree[n].f>=FneedENTRY) die(n,"Internal error: unknown func %s in gentopfunc",funcname(tree[n].f)); else { gentopfunc(x,n,fun,pfun); gentopfunc(y,n,fun,pfun); } } } gp2c-0.0.12/src/gencast.c0000644000175000017500000000515713623476440011746 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" void gencastf(FILE *fout, int n, int nt, int f) { int t=tree[n].t; int tnt=typemax[t][nt]; int i; if (t==nt) { /*bottom of the recursion*/ if (f) genparens(fout,n); else gencode(fout,n); return; } if (gencastcode(fout,n,t,nt,f)) return; /*the interesting case */ if (is_subtype(t,nt)) for (i=0;i%s",GPname(t),GPname(nt)); for(i=0;i%s",GPname(t),GPname(nt)); } void gencast(FILE *fout, int n, int nt) { if (ntdsc; for(i=0; inb; i++) { gpdescarg *rule=dsc->a+i; descargatom atom=rule->args[0]; if (rule->type!=nt || (atom.mode&tree[n].m)!=atom.mode) continue; switch(atom.t) { case AAherevalue: if(tree[n].f!=Fsmall && tree[n].f!=Fconst) continue; case AAtype: if(atom.type!=t) continue; break; case AAsmall: if (tree[n].f!=Fsmall || atom.misc!=tree[n].x) continue; break; default: continue; } if (rule->cname[0]==0) gencastf(fout,n,t,f); else { if (f && rule->mode&(1<mode&(1< #include #include "header.h" void printentryname(FILE *fout, const char *s) { if (isdigit(*s)) fprintf(fout,"p%s",s); else fprintf(fout,"%s",s); } void printentry(FILE *fout, int x) { const char *s=value[x].val.str; printentryname(fout, s); } void printnodeparens(FILE *fout, int n, int parens) { int i,v; context *fc; int x,y; if (n<0) return; x=tree[n].x; y=tree[n].y; gencomment(fout,n,!indent); if (debug>=3) fprintf(fout,"/*%s:%d:%s*/",GPname(tree[n].t),tree[n].m,funcname(tree[n].f)); switch(tree[n].f) { case Fseq: printnode(fout,x); if (x>=0 && tree[x].f==Fseq) x=tree[x].y; if (x>=0 && tree[x].f!=Fblock && tree[x].f!=Fdeffunc) { if (indent) fprintf(fout,";\n"); else fprintf(fout,"; \\\n"); genindent(fout); } printnode(fout,y); break; case Fmatrix: fputc('[',fout); printnode(fout,x); if (y>0) { fprintf(fout,","); printnode(fout,y); } fputc(']',fout); break; case Frange: if (x!=GNORANGE) { printnode(fout,x); if (y!=GNORANGE) { fputs("..",fout); printnode(fout,y); } } else if (y!=GNORANGE) { fputc('^',fout); printnode(fout,y); } break; case Fnorange: break; case Fmatcoeff: printnodeparens(fout,x,1); printnode(fout,y); break; case Fassign: if (parens) fputc('(',fout); printnode(fout,x); fprintf(fout,"="); printnode(fout,y); if (parens) fputc(')',fout); break; case Fconst: switch(value[x].type) { case CSTsmall: fprintf(fout,"%ld",value[x].val.small); break; case CSTsmallreal: fprintf(fout,"%ld.",value[x].val.small); break; case CSTint: case CSTreal: fprintf(fout,"%s",value[x].val.str); break; case CSTstr: fprintf(fout,"\"%s\"",value[x].val.str); break; } break; case Fsmall: fprintf(fout,"%d",x); break; case Fmatrixelts: printnode(fout,x); fprintf(fout,","); printnode(fout,y); break; case Fmatrixlines: printnode(fout,x); fprintf(fout,";"); /*Would be nice to indent matrix, alas I have no way to know where is the * bottomrow*/ printnode(fout,y); break; case Fmat: case Fvec: fprintf(fout,"["); if (tree[n].f==Fmat && x==-1) fputc(';',fout); else printnode(fout,x); fprintf(fout,"]"); break; case Flistarg: printnode(fout,x); fprintf(fout,","); printnode(fout,y); break; case Fentry: printentry(fout,x); break; case Ffun: fprintf(fout,"%s",lfunc[x].gpname); break; case Ffunction: if (x=0) { fprintf(fout,"("); if (y!=GNOARG) printnode(fout,y); fprintf(fout,")"); } } break; case Frefarg: fprintf(fout,"&"); printnode(fout,x); break; case Findarg: fprintf(fout,"~"); printnode(fout,x); break; case Fvararg: printnode(fout,x); fprintf(fout,"[..]"); break; case Fcall: printnode(fout,x); fprintf(fout,"("); printnode(fout,y); fprintf(fout,")"); break; case Flambda: fprintf(fout,"("); printnode(fout,x); fprintf(fout,")->"); printnode(fout,y); break; case Fdeffunc: fprintf(fout,"\n"); printnode(fout,x); fprintf(fout,"=\n"); genindent(fout); if (tree[y].f!=Fblock) { fprintf(fout,"{\n"); indent++; genindent(fout); } printnode(fout,y); fprintf(fout,"\n"); indent--; genindent(fout); if (tree[y].f!=Fblock) { fprintf(fout,"}\n"); genindent(fout); } break; case Fblock: fprintf(fout,"{"); fc=block+x; v=fc->ret; if (v>=0) { fprintf(fout,"/*="); printentry(fout,tree[v].x); fprintf(fout,"*/"); } indent++; fprintf(fout,"\n"); genindent(fout); if (fc->s.n) { int k=fc->s.n; fprintf(fout,"my("); for(i=0;i0) fprintf(fout,", "); printentryname(fout,varstr(fc->c[i])); } fprintf(fout,");\n"); genindent(fout); } printnode(fout,y); fprintf(fout,"\n"); indent--; genindentline(fout,"}\n"); genindent(fout); break; case Fnoarg: if ( n!= GNOARG ) fprintf(fout,"gnil"); break; case Ftag: printnodeparens(fout,x,1); fprintf(fout,":%s",GPname(y)); break; } } void printnode(FILE *fout, int n) { printnodeparens(fout,n,0); } void maketreeGRL_node(FILE *fout,int n) { int x,y,f; if (n<2) return; x=tree[n].x; y=tree[n].y; f=tree[n].f; switch(tree[n].f) { case Ftag: fprintf(fout,"node: { title: \"%d\" label: \"(%s)\" }\n",n,GPname(y)); fprintf(fout,"edge: { sourcename: \"%d\" targetname: \"%d\" class:2 color: red}\n",n,x); maketreeGRL_node(fout,x); break; default: if (f&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = gp2c$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_gp2c_OBJECTS = gp2c.$(OBJEXT) context.$(OBJEXT) funcdesc.$(OBJEXT) \ funcspec.$(OBJEXT) genblock.$(OBJEXT) gencast.$(OBJEXT) \ gencode.$(OBJEXT) genfunc.$(OBJEXT) gentype.$(OBJEXT) \ gerepile.$(OBJEXT) lang.$(OBJEXT) moveblock.$(OBJEXT) \ node.$(OBJEXT) parse.$(OBJEXT) printnode.$(OBJEXT) \ toplevel.$(OBJEXT) topfunc.$(OBJEXT) util.$(OBJEXT) \ varlist.$(OBJEXT) stack.$(OBJEXT) gp2c_OBJECTS = $(am_gp2c_OBJECTS) gp2c_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/context.Po ./$(DEPDIR)/funcdesc.Po \ ./$(DEPDIR)/funcspec.Po ./$(DEPDIR)/genblock.Po \ ./$(DEPDIR)/gencast.Po ./$(DEPDIR)/gencode.Po \ ./$(DEPDIR)/genfunc.Po ./$(DEPDIR)/gentype.Po \ ./$(DEPDIR)/gerepile.Po ./$(DEPDIR)/gp2c.Po \ ./$(DEPDIR)/lang.Po ./$(DEPDIR)/moveblock.Po \ ./$(DEPDIR)/node.Po ./$(DEPDIR)/parse.Po \ ./$(DEPDIR)/printnode.Po ./$(DEPDIR)/stack.Po \ ./$(DEPDIR)/topfunc.Po ./$(DEPDIR)/toplevel.Po \ ./$(DEPDIR)/util.Po ./$(DEPDIR)/varlist.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) AM_V_LEX = $(am__v_LEX_@AM_V@) am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) am__v_LEX_0 = @echo " LEX " $@; am__v_LEX_1 = YLWRAP = $(top_srcdir)/config/ylwrap @MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ -e s/c++$$/h++/ -e s/c$$/h/ YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) AM_V_YACC = $(am__v_YACC_@AM_V@) am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) am__v_YACC_0 = @echo " YACC " $@; am__v_YACC_1 = SOURCES = $(gp2c_SOURCES) DIST_SOURCES = $(gp2c_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/config/depcomp $(top_srcdir)/config/ylwrap \ lang.c parse.c parse.h DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CFLAGS = -DFUNCDSC_PATH=\"@datadir@/@PACKAGE@/func.dsc\" BUILT_SOURCES = parse.h gp2c_SOURCES = gp2c.c context.c funcdesc.c funcspec.c genblock.c gencast.c gencode.c genfunc.c gentype.c gerepile.c header.h lang.l moveblock.c node.c optable.h parse.y patchfunc.h printnode.c toplevel.c topfunc.c type.h util.c varlist.c stack.h stack.c AM_YFLAGS = -d am__skipyacc = am__skiplex = all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .l .o .obj .y $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status src/config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) parse.h: parse.c @if test ! -f $@; then rm -f parse.c; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) parse.c; else :; fi gp2c$(EXEEXT): $(gp2c_OBJECTS) $(gp2c_DEPENDENCIES) $(EXTRA_gp2c_DEPENDENCIES) @rm -f gp2c$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gp2c_OBJECTS) $(gp2c_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcdesc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcspec.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gencast.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gencode.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genfunc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gentype.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gerepile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gp2c.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lang.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/moveblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printnode.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topfunc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/toplevel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varlist.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .l.c: $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) config.h installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f lang.c -rm -f parse.c -rm -f parse.h -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/context.Po -rm -f ./$(DEPDIR)/funcdesc.Po -rm -f ./$(DEPDIR)/funcspec.Po -rm -f ./$(DEPDIR)/genblock.Po -rm -f ./$(DEPDIR)/gencast.Po -rm -f ./$(DEPDIR)/gencode.Po -rm -f ./$(DEPDIR)/genfunc.Po -rm -f ./$(DEPDIR)/gentype.Po -rm -f ./$(DEPDIR)/gerepile.Po -rm -f ./$(DEPDIR)/gp2c.Po -rm -f ./$(DEPDIR)/lang.Po -rm -f ./$(DEPDIR)/moveblock.Po -rm -f ./$(DEPDIR)/node.Po -rm -f ./$(DEPDIR)/parse.Po -rm -f ./$(DEPDIR)/printnode.Po -rm -f ./$(DEPDIR)/stack.Po -rm -f ./$(DEPDIR)/topfunc.Po -rm -f ./$(DEPDIR)/toplevel.Po -rm -f ./$(DEPDIR)/util.Po -rm -f ./$(DEPDIR)/varlist.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/context.Po -rm -f ./$(DEPDIR)/funcdesc.Po -rm -f ./$(DEPDIR)/funcspec.Po -rm -f ./$(DEPDIR)/genblock.Po -rm -f ./$(DEPDIR)/gencast.Po -rm -f ./$(DEPDIR)/gencode.Po -rm -f ./$(DEPDIR)/genfunc.Po -rm -f ./$(DEPDIR)/gentype.Po -rm -f ./$(DEPDIR)/gerepile.Po -rm -f ./$(DEPDIR)/gp2c.Po -rm -f ./$(DEPDIR)/lang.Po -rm -f ./$(DEPDIR)/moveblock.Po -rm -f ./$(DEPDIR)/node.Po -rm -f ./$(DEPDIR)/parse.Po -rm -f ./$(DEPDIR)/printnode.Po -rm -f ./$(DEPDIR)/stack.Po -rm -f ./$(DEPDIR)/topfunc.Po -rm -f ./$(DEPDIR)/toplevel.Po -rm -f ./$(DEPDIR)/util.Po -rm -f ./$(DEPDIR)/varlist.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-hdr \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile ctags: ctags $(gp2c_SOURCES) # 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: gp2c-0.0.12/src/funcspec.c0000644000175000017500000014076713743645740012143 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" #include "patchfunc.h" static int iterlev = 0; int has_iter(char *s) { int nf=getfunc(s); return !!lfunc[nf].iter; } void patchfunction(struct patchfunc_s *p) { int nf=getfunc(p->gpname); lfunc[nf].proto.code=p->code; functype(lfunc[nf])=p->type; funcmode(lfunc[nf])=p->mode; lfunc[nf].spec=p->spec; } void patchfunclist(void) { int i; for(i=0;patchfunc[i].gpname;i++) patchfunction(patchfunc+i); if (!has_iter("forvec")) { struct patchfunc_s pforvec = {"forvec",NULL,Gnotype,(1<=0) arg[2]=GNOARG; else { arg[2]=newnode(Fentry,newentry("st_lim"),-1); pushvar(arg[2],0,Gpari_sp, newcall("_stack_lim",newnode(Flistarg,arg[0],newsmall(1)))); } return stacktoargs(arg,3); } int gengerepilereturn(int bl) { int arg[2]; arg[0]=newnode(Fentry,newentry("ltop"),-1); arg[1]=newsmall(bl); return stacktoargs(arg,2); } int newgetg(int v, int l, const char *t) { return newcall("_cgetg", newnode(Flistarg, newnode(Flistarg, v, l), newstringnode(t,-1))); } void makesubblock_ctx(int n, int savx) { int bl3=newblock(); int level = preclevel; genblock(n,-1); makeblock(bl3,n,newleaf(n),-1,savx); preclevel = level; } void makesubblock(int n) { makesubblock_ctx(n, s_ctx.n); } Clabel_t genblock_label(int n, int p, int type, int end) { Clabel_t t; static int labie=0; int l=newlabel(type); if (type==Liferr) label[l].ie=labie++; if (type==Liter && end >=0) label[l].iter=end; genblock(n,p); if (type==Liferr) labie--; t=label[l]; stack_pop_safe(&s_label,l); return t; } Clabel_t makesubblock_label(int n, int t, int end) { int savx=s_ctx.n; int bl3=newblock(); Clabel_t lab=genblock_label(n,-1,t,end); makeblock(bl3,n,newleaf(n),-1,savx); return lab; } int check_labels(int k, int t) { int l=s_label.n; while(k--) { if (!l) return 2; if (label[--l].type==t) return 1; } return 0; } int get_iferr(int k) { int i, l=s_label.n; for (i=s_label.n-k; i=l; i--) { if (label[i].type==Liter) aseq=addseqright(aseq,newleaf(label[i].iter)); } return aseq; } int geniterproto(int n, long fl, gpfunc *gp, int *argo, int *seq, int *var, int *tv, int *evar, int *etv) { int arg[STACKSZ]; const char *p=gp->proto.code; char c; PPproto mod; int nb=genlistargs(n,arg,0,STACKSZ); int i=0, k=0, binf; *var = -1; *evar = -1; while((mod=parseproto(&p,&c))!=PPend) { if (i=nb) die(n,"too few arguments"); switch(c) { case '=': genequal(arg[i], gp->gpname, var, &binf, tv); if (fl) { tree[*var].t = *tv; argo[k++] = *var; tree[binf].t = guesstype(binf); } argo[k++] = binf; break; case 'V': if (*var >= 0) { *evar = *var; *etv = *tv; } checkisvar(arg[i], gp->gpname, var, tv); if (fl) { tree[*var].t = *tv; argo[k++] = *var; } break; case 'I': *seq = arg[i]; break; default: if (fl) tree[arg[i]].t = guesstype(arg[i]); argo[k++] = arg[i]; } break; case PPdefault: case PPdefaultmulti: if (i < nb) { tree[arg[i]].t = guesstype(arg[i]); if (c != 'I' && c != 'V') argo[k++] = arg[i]; } break; case PPstar: i=nb-1; break; case PPauto: /* Skip */ i--; break; default: break; } i++; } return k; } void genblockfunciter(int n, gpfunc *gp) { int arg[STACKSZ]; int var, evar, vecvar=-1, tv=Gnotype, etv=Gnotype; int bseq=-1,aseq=-1,ret=-1,vprime, seq=GNOARG, cseq; int labelne=-1, labelgo=-1; int gpm=-1,bl0,bl1,bl2; int sav0, savx; Clabel_t lab; gpiterator * iter; const char * init, *next, *itername; int nb = geniterproto(n, 1, gp, arg, &seq, &var, &tv, &evar, &etv); gpdescarg * da = descfindrulesdsc(nb, arg, gp->iter); if (!da) { int i; for(i=0;iiter); init = lfunc[iter->init].gpname; next = lfunc[iter->next].gpname; sav0=s_ctx.n; bl0=newblock(); if (iterlev==0) itername = "iter"; else { char buf[64]; sprintf(buf,"iter%d",iterlev); itername = strdup(buf); } iterlev++; vprime=newnode(Fentry,newentry(itername),-1); pushvar(vprime,1<type,-1); nb = geniterproto(n, 0, gp, arg+1, &seq, &var, &tv, &evar, &etv)+1; arg[0] = vprime; bseq = newcall(init, stacktoargs(arg,nb)); genblock(bseq,-1); savx=s_ctx.n; bl1=newblock(); bl2=newblock(); if (seq!=GNOARG && autogc) gpm=gengerepile(bl2); if (tv==Gnotype) { gpdescarg *dv; tree[vprime].t = iter->type; dv=descfindrules(1, &vprime, lfunc+iter->next); if (!dv) die(n, "no suitable iterator_next found"); tv = dv->type; } if (evar>=0) { etv=tv; tv=Ggen; pushvar(evar,(1<end>=0) { const char *end = lfunc[iter->end].gpname; lab=makesubblock_label(seq, Liter, newcall(end,newleaf(vprime))); } else lab=makesubblock_label(seq,Lbreak,-1); if (lab.ne) labelne=newcall("_label",newsmall(lab.ne)); if (lab.go) labelgo=newcall("_label",newsmall(lab.go)); } if (evar<0) cseq = newnode1(Fassign,var,newcall(next,vprime)); else { newdecl((1<=0) seq=newseq(seq,labelne); if (autogc) seq=addseqright(seq,newcall("_gerepilemany",gpm)); aseq=addseqright(aseq,newcall("_whilenull",newnode(Flistarg,cseq,seq))); if (labelgo>=0) aseq=newseq(aseq,labelgo); } else aseq=addseqright(aseq,newcall("_whilenull",cseq)); makeblocks3(bl0,bl1,bl2,n,bseq,aseq,ret,savx,savx); copyctx(sav0,block+bl0); restorectx(sav0); iterlev--; } /* The 6 operations which order is very important are are: pushvar/newdecl(var) gpm=gengerepile(bl2); bseq=geninsertvar(arg,var) genblock(bseq,p) seq=addseqright(seq,newcall("_gerepilemany",gpm)); savx=s_ctx.n savx=s_ctx.n start the recording of var in the block pushvar/newdecl(var) must be before geninsert(arg,var) obviously, if you use geninsertvar to store the value a a node, then geninsertvar must be called before genblock and genblock must be called on the geninsertvar node, with p=-1 since the return value is really ignored. G.N.^H^H^H^HB.A. (well it still lacks 20 lines more to really be G.N.)*/ void genblockfuncspec(int n, int p, gpfunc *gp) { int arg[STACKSZ]; int nb; int y=tree[n].y; int binf,bsup,seq; int var=-1,vinf,vsup,vprime; int bseq=-1,aseq=-1,ret=-1; int tv; int gpm=-1,bl1,bl2; int savx; Clabel_t lab; switch(gp->spec) { case GPaddhelp: { /*prototype vSs*/ gpfunc *gp; int d, nf; nb=genlistargs(n,arg,2,2); d=detag(arg[0]); if (tree[d].f!=Fentry && !is_const(d,CSTstr)) die(n,"Incorrect function name in addhelp"); tree[d].f=Fconst; nf=getfunc(entryname(d)); gp=lfunc+nf; d=detag(arg[1]); gp->proto.help=d; } break; case GPgrandO: if (tree[y].f==Ffunction && tree[y].x==OPpow) tree[y]=tree[tree[y].y]; tree[n].x=newentry("O(_^_)"); genblock(y,n); break; case GPif: nb=genlistargs(n,arg,2,STACKSZ); if (nb==3 && arg[2]==GNOARG) /*Some people type 'if(x!=0,print(x),)'*/ nb--; if (nb==3 && arg[1]==GNOARG) { /*Some people type 'if(x!=0,,print(x))'*/ arg[0]=newopcall(OPnb,arg[0],-1); arg[1]=arg[2]; nb--; } if (tree[arg[0]].f==Fsmall && tree[arg[0]].x) { /*if(1,...) expr are often used to create block. We honor it here*/ if (p>=0 && tree[p].f!=Fseq) newdecl((1<=0 && tree[p].f!=Fseq) newdecl((1<=4) { arg[2] = newcall("if", stacktoargs(arg+2,nb-2)); nb = 3; } if (arg[0]>=0 && tree[arg[0]].f==Fseq) { int pred; newdecl((1<proto.cname=entryname(d); if (nb==4 && arg[3]!=GNOARG) { d=detag(arg[3]); if (!is_const(d,CSTstr)) die(n,"Incorrect library name in install"); gp->proto.origin=entryname(d); } d=detag(arg[1]); if (tree[d].f!=Fentry && !is_const(d,CSTstr)) die(n,"Incorrect code in install"); tree[d].f=Fconst; p=entryname(d); gp->proto.code=p+1; funcmode(*gp)=0; switch(p[0]) { case 'v': functype(*gp)=Gvoid; break; case 'l': functype(*gp)=Gsmall; break; case 'u': functype(*gp)=Gusmall; break; case 'i': functype(*gp)=Gsmall_int; break; case 'm': functype(*gp)=Ggen; funcmode(*gp)=(1<proto.code--; } if (tree[arg[1]].f==Ftag) functype(*gp)=tree[arg[1]].y; for(;*p;p++) if (*p=='p' || *p=='b') funcmode(*gp)|=(1<spec=GPinstalled; } break; case GPfor: nb=genlistargs(n,arg,3,3); genequal(arg[0],gp->gpname,&var,&binf,&tv); bsup=arg[1];seq=arg[2]; newdecl((1<gpname,&var,&binf,&tv); seq=arg[1]; flag=(nb==3)?arg[2]:newsmall(0); newdecl((1<gpname,&var,&tv); newdecl((1<spec == GPfordivfactored; int vt = factored ? Gvec: Gint; nb=genlistargs(n,arg,3,3); seq=arg[2]; checkisvar(arg[1],gp->gpname,&var,&tv); newdecl((1<gpname,&var,&binf,&tv); bsup=arg[1];bstep=arg[2];seq=arg[3]; newdecl((1<0 ) arg[3]=newopcall(OPle,newleaf(var),vsup); else arg[3]=newopcall(OPge,newleaf(var),vsup); nb=4; } else { arg[3]=newleaf(vsign); arg[4]=newopcall(OPle,newleaf(var),vsup); arg[5]=newopcall(OPge,newleaf(var),vsup); nb=6; } if (isvec) { arg[2]=newopcall(OPpe,var,newcoeff(vstep,vindex,-1)); arg[6]=vindex; arg[7]=newleaf(lstep); nb=8; } else arg[2]=newopcall(OPpe,var,vstep); arg[1]=seq; if (isvec) aseq=newcall("_forstepvec",stacktoargs(arg,nb)); else aseq=newnode(tree[n].f,tree[n].x,stacktoargs(arg,nb)); if (lab.go) aseq=newseq(aseq,newcall("_label",newsmall(lab.go))); makeblocks(bl1,bl2,n,bseq,aseq,ret,savx); } break; case GPprodeuler: nb=genlistargs(n,arg,3,3); seq = arg[2]; newdecl(0,Ggen,-1,&ret); savx=s_ctx.n; bl1=newblock(); arg[2]=geninsertvarop(seq,ret,OPme); aseq=newnode(Fseq, geninsertvar(newnode(Fconst,newsmallrealvalue(1),-1),newleaf(ret)), newcall("forprime",stacktoargs(arg,3))); genblock(aseq,-1); makeblock(bl1,n,aseq,ret,savx); break; case GPforprime: nb=genlistargs(n,arg,3,3); genequal(arg[0],gp->gpname,&var,&binf,&tv); bsup=arg[1];seq=arg[2]; newdecl((1<=0?Gint:Gsmall); pushvar(var,1<=0?-1:newsmall(0)); vprime=newnode(Fentry,newentry("primepointer"),-1); pushvar(vprime,1<=0?-1:newcall("_diffptr",-1)); lab=makesubblock_label(seq,Lbreak,-1); if (lab.ne) seq=newseq(seq,newcall("_label",newsmall(lab.ne))); if (autogc) seq=addseqright(seq,newcall("_gerepilemany",gpm)); if (FC_forprime_init>=0) { int args[3],bseq; int nbs=3; args[0]=vprime; args[1]=vinf; if (bsup==GNOARG) nbs=2; else args[2]=vsup; aseq=addseqleft(newcall((tv==Gsmall?"_u_forprime_init":"_forprime_init"), stacktoargs(args,nbs)),aseq); bseq=newnode1(Fassign,var,newcall(tv==Gsmall?"_u_forprime_next":"_forprime_next_",vprime)); tree[bseq].m=Mparens; aseq=addseqright(aseq,newcall("_whilenull",newnode(Flistarg,bseq,seq))); } else { /*if (vsup>maxprime()) err(primer1);*/ aseq=addseqleft(newcall("if",newnode(Flistarg, newopcall(OPg,vsup,newcall("_maxprime",-1)), newcall("_err_primes",-1))) ,aseq); if (tree[binf].f!=Fsmall || tree[binf].x>2) /*if(vargpname,&var,&binf,&tv); bsup=arg[1];seq=arg[2]; newdecl((1<spec==GPsum?0:1), newleaf(ret))); else bseq=addseqright(bseq,geninsertvar(arg[3],newleaf(ret))); genblock(bseq,-1); savx=s_ctx.n; bl1=newblock(); bl2=newblock(); if (autogc) gpm=gengerepile(bl2); genequaltosmall(binf,bsup,&tv,Gint); pushvar(var,1<spec==GPsum?OPpe:OPme)); makesubblock_label(seq,Lnobrk,-1); if (autogc) seq=addseqright(seq,newcall("_gerepilemany",gpm)); arg[0]=newnode1(Fassign,var,vinf); arg[1]=newopcall(OPle,newleaf(var),vsup); arg[2]=seq; arg[3]=newopcall(OPpp,newleaf(var),-1); aseq=addseqright(aseq,newcall("for",stacktoargs(arg,4))); makeblocks(bl1,bl2,n,bseq,aseq,ret,savx); break; case GPsumdiv: { int vdiv,div; int vloop; nb=genlistargs(n,arg,3,3); seq=arg[2]; checkisvar(arg[1],gp->gpname,&var,&tv); newdecl(1<spec==GPvectorsmall?Gvecsmall:Gvec,-1,&ret); savx=s_ctx.n; bl1=newblock(); bl2=newblock(); if (nb>=2) { checkisvar(arg[1],gp->gpname,&var,&tv); pushvar(var,1<spec==GPvector?"t_VEC":gp->spec==GPvectorv?"t_COL":"t_VECSMALL")); arg[0]=newnode1(Fassign,var,newsmall(1)); arg[1]=newopcall(OPle,newleaf(var),vsup); arg[2]=newcoeff(newleaf(ret),newleaf(var),-1); arg[2]=geninsertvar(seq,arg[2]); makesubblock_label(arg[2],Lnobrk,-1); arg[3]=newopcall(OPpp,newleaf(var),-1); aseq=addseqright(aseq,newcall("for",stacktoargs(arg,4))); makeblocks(bl1,bl2,n,bseq,aseq,ret,savx); break; case GPmatrix: { int var1,bsup1,vsup1,var2,bsup2,vsup2; int tv1,tv2; nb=genlistargs(n,arg,2,5); bsup2=arg[0];bsup1=arg[1]; newdecl((1<=3) { checkisvar(arg[2],gp->gpname,&var2,&tv2); pushvar(var2,1<=4) { checkisvar(arg[3],gp->gpname,&var1,&tv1); pushvar(var1,1<spec==GPglobal) flag|=(1<=0 && y!=GNOARG) { if (tree[y].f!=Fsmall || tree[y].x<=0) die(n,"%s(n) only supported for constant n>0",gp->gpname); nb=tree[y].x; } else nb=1; if (check_labels(nb,Lnobrk)) die(n,"%s not allowed here",gp->gpname); if (nb>1) { int l = s_label.n-nb; if (gp->spec==GPbreak) { if (label[l].go==0) label[l].go=++labbrk; tree[y].x=labbrk; } else { if (label[l].ne==0) label[l].ne=++labbrk; tree[y].x=labbrk; } } else tree[n].y=GNOARG; if (check_labels(nb,Liferr)) { int ie = newsmall(get_iferr(nb)); aseq=addseqleft(newcall("_iferr_CATCH_reset",ie),newleaf(n)); makeblock(newblock(),n,aseq,-1,s_ctx.n); } if (check_labels(gp->spec==GPbreak?nb:nb-1,Liter)) { aseq=addseqleft(unwind_iter(-1,nb),newleaf(n)); makeblock(newblock(),n,aseq,-1,s_ctx.n); } } break; case GPiferr: { Clabel_t lab; nb=genlistargs(n,arg,3,4); checkisvar(arg[1],gp->gpname,&var,&tv); seq=arg[0]; if (seq==GNOARG) seq=newsmall(0); bseq=arg[2]; if (tv==Gnotype) { tv=Gerror; if (tv<0) die(n,"iferr not supported by your GP version"); } if (p>=0 && tree[p].f!=Fseq) newdecl((1<spec) { case GPif: nb=genlistargs(n,arg,2,3); gentype(arg[0]); gentype(arg[1]); tree[n].m=(1<spec==GPwhile) tree[n].m=(tree[arg[0]].m|(tree[arg[1]].m&~(1<=0) { gentype(y); tree[n].m=(1<gpname,GPname(functype(*cf)),GPname(t),GPname(tree[y].t)); functype(*cf)=t; lastpass++; } } return Gempty; case GPinstall: case GPaddhelp: tree[n].m=0; return Gvoid; case GPmakevec: gentype(y); tree[n].m=(tree[y].m&MODHERIT)|(1<=0 && lfunc[nf].spec==GPuser && lfunc[nf].user->wrapper>=0 && (funcmode(lfunc[nf])&(1<spec>0) die(n,"gentypefuncspec : func spec not implemented"); else die(n,"Internal error : gentypefuncspec called with no spec"); } } void gencopyarg(FILE *fout) { gpfunc *gp=lfunc+currfunc; userfunc *ufunc=gp->user; context *fc=block+ufunc->bl; int n=tree[ufunc->defnode].y; long i; if (tree[n].x!=ufunc->bl || !fc->var) return; for (i=0;is.n;i++) if (fc->c[i].flag&(1<c[i].flag&(1<c+i; long j; for(j=0;jv.n;j++) if (fc->var[j].f==AFassigncompo && fc->var[j].idx==i+fc->savb-fc->s.n ) { genindent(fout); fprintf(fout,"%s = ",v->cvar); genfuncbydesc1(fout,v->node,FC_copy,n); gensemicolon(fout,v->node); break; } } } void geninitfunc(FILE *fout) { gpfunc *gp=lfunc+currfunc; int i; for (i=0;iuser->savb;i++) { ctxvar *v=ctxstack+i; if (!(v->flag&(1<initval is equal to 'v, this is harmless. */ gentype(v->initval); genindent(fout); fprintf(fout,"%s = ", v->cvar); gencast(fout,v->initval,vartype(*v)); fprintf(fout,";\n"); } } void genentryspec(FILE *fout, int n, gpfunc *gp) { int arg[STACKSZ]; int nb; int y=tree[n].y; int i; context *bl; switch(gp->spec) { case GPbreak: case GPnext: if (y>=0 && tree[y].f==Fsmall) fprintf(fout,"goto label%d",tree[y].x); else fprintf(fout,gp->spec==GPbreak?"break":"continue"); break; case GPif: nb=genlistargs(n,arg,2,3); genindentline(fout,"if ("); gencast(fout,arg[0],Gbool); fprintf(fout,")\n"); if (nb==2) genbrace(fout,arg[1]); else { genbrace(fout,arg[1]); genindentline(fout,"else\n"); genbrace(fout,arg[2]); } break; case GPiferr: nb=genlistargs(n,arg,4,4); genindent(fout); gencode(fout,arg[0]); fprintf(fout,"\n"); genbrace(fout,arg[1]); fprintf(fout," pari_TRY\n"); genbrace(fout,arg[2]); fprintf(fout," "); gencode(fout,arg[3]); fprintf(fout,"\n"); break; case GPwhilenull: nb=genlistargs(n,arg,1,2); genindentline(fout,"while ("); genparens(fout,arg[0]); if (nb==1) fprintf(fout,");\n"); else { fprintf(fout,")\n"); genbrace(fout,arg[1]); } break; case GPwhile: nb=genlistargs(n,arg,2,2); if (tree[arg[0]].f!=Fseq && tree[arg[0]].f!=Fblock) { genindentline(fout,"while ("); gencast(fout,arg[0],Gbool); if (tree[arg[1]].f==Fnoarg) fprintf(fout,");\n"); else { fprintf(fout,")\n"); genbrace(fout,arg[1]); } } else { int x=tree[arg[0]].x; int y=tree[arg[0]].y; if (tree[arg[0]].f==Fblock) { y=block[x].ret; x=tree[arg[0]].y; } genindentline(fout,"for(;;)\n"); genindentline(fout,"{\n"); indent++; genindentseq(fout,x); gencode(fout,x); gensemicolon(fout,x); if (tree[y].f==Fblock) { gencode(fout,y); y=block[tree[y].x].ret; } genindentline(fout,"if ("); gencast(fout,y,Gnegbool); fprintf(fout,")\n"); indent++; genindentline(fout,"break;\n"); indent--; genindentseq(fout,arg[1]); gencode(fout,arg[1]); gensemicolon(fout,arg[1]); indent--; genendbrace(fout,n); } break; case GPuntil: nb=genlistargs(n,arg,2,2); if ( tree[arg[0]].f!=Fseq && tree[arg[0]].f!=Fblock) { if (arg[1]!=GNOARG) { genindentline(fout,"do\n"); genbrace(fout,arg[1]); fprintf(fout," while(");/*KB style*/ } else genindentline(fout,"while("); gencast(fout,arg[0],Gnegbool); fprintf(fout,");\n"); } else { int x=tree[arg[0]].x; int y=tree[arg[0]].y; if (tree[arg[0]].f==Fblock) { y=block[x].ret; x=tree[arg[0]].y; } genindentline(fout,"for(;;)\n"); genindentline(fout,"{\n"); indent++; genindentseq(fout,arg[1]); gencode(fout,arg[1]); gensemicolon(fout,arg[1]); genindentseq(fout,x); gencode(fout,x); gensemicolon(fout,x); if (tree[y].f==Fblock) { genindent(fout); gencode(fout,y); y=block[tree[y].x].ret; } genindentline(fout,"if ("); gencast(fout,y,Gbool); fprintf(fout,")\n"); indent++; genindentline(fout,"break;\n"); indent--; indent--; genendbrace(fout,n); } break; case GPfor: nb=genlistargs(n,arg,4,4); genindentline(fout,"for ("); if (arg[0]!=GNOARG) gencode(fout,arg[0]); else fprintf(fout," "); fprintf(fout,"; "); if (arg[1]!=GNOARG) gencode(fout,arg[1]); fprintf(fout,"; "); if (arg[3]!=GNOARG) gencode(fout,arg[3]); fprintf(fout,")\n"); genbrace(fout,arg[2]); break; case GPdoloop: genindentline(fout,"for (;;)\n"); genbrace(fout,y); break; case GPforstep: nb=genlistargs(n,arg,4,6); genindentline(fout,"for ("); gencode(fout,arg[0]); fprintf(fout,"; "); if ( nb==4 ) gencode(fout,arg[3]); else { gencode(fout,arg[3]); fprintf(fout,"?"); gencode(fout,arg[4]); fprintf(fout,":"); gencode(fout,arg[5]); } fprintf(fout,"; "); gencode(fout,arg[2]); fprintf(fout,")\n"); genbrace(fout,arg[1]); break; #if 0 forstep(x=binf,bsup,step,SEQ) { int idx; for( idx=0,x=binf; x<=bsup; i=i==lg(step)?1:i+1,x+=step[i]) { } } #endif case GPforstepvec: nb=genlistargs(n,arg,8,8); genindentline(fout,"for ("); gencode(fout,arg[6]); fprintf(fout," = 0, "); gencode(fout,arg[0]); fprintf(fout,"; "); gencode(fout,arg[3]); fprintf(fout,"?"); gencode(fout,arg[4]); fprintf(fout,":"); gencode(fout,arg[5]); fprintf(fout,"; "); gencode(fout,arg[6]); fprintf(fout," = "); gencode(fout,arg[6]); fprintf(fout," == "); gencast(fout,arg[7],Gsmall); fprintf(fout," ? 1 :"); gencode(fout,arg[6]); fprintf(fout," + 1, "); gencode(fout,arg[2]); fprintf(fout,")\n"); genbrace(fout,arg[1]); break; case GPmakevecsmall: case GPmakevec: nb=genlistargs(n,arg,1,STACKSZ); genindent(fout); gencode(fout,arg[0]); gensemicolon(fout,arg[0]); for(i=1;igc&(1<g.n) { genfuncbydesc(fout,0,NULL,FC_avma,n); fprintf(fout," = "); gencode(fout,arg[0]); fprintf(fout,";\n"); } else if (bl->gc&(1<gcvar[0]; int parg[2]; gencode(fout,var); fprintf(fout," = "); parg[0]=arg[0]; parg[1]=var; genfuncbydesc(fout,2,parg,FC_gerepileupto,n); fprintf(fout,";\n"); } else { int parg[STACKSZ+1]; /*FIXME:Putting an if statement in the wilderness is not secure*/ if (nb==3) { fprintf(fout,"if ("); if (arg[2]==GNOARG) { parg[0]=arg[0]; genfuncbydesc(fout,1,parg,FC_gc_needed,n); } else { parg[0]=arg[2]; parg[1]=arg[0]; genfuncbydesc(fout,2,parg,FC_low_stack_lim,n); } fprintf(fout,")\n"); indent++; genindent(fout); indent--; } parg[0]=arg[0]; for(i=0;ig.n;i++) parg[i+1]=bl->gcvar[i]; genfuncbydesc(fout,bl->g.n+1,parg,FC_gerepileall,n); fprintf(fout,";\n"); } break; case GPlocalprec: case GPlocalbitprec: gencode(fout, y); preclevel++; break; case GPreturn: fprintf(fout,"return"); if (functype(lfunc[currfunc])!=Gvoid) { /*I don't like to see `return ;'*/ fprintf(fout," "); gencast(fout,y,functype(lfunc[currfunc])); } break; case GPlabel: fprintf(fout,"label%d:",tree[y].x); break; case GPcopyarg: gencopyarg(fout); break; case GPinitfunc: geninitfunc(fout); break; case GPaddhelp: case GPinstall: break; case GPclosure: nb=genlistargs(n,arg,1,STACKSZ); if (FC_strtoclosure >=0) genfuncbydesc(fout,nb,arg,FC_strtoclosure,n); else die(n,"closure not available in this version"); break; default: if (gp->spec>0) die(n,"genentryspec: func spec not implemented"); else die(n,"Internal error: genentryspec called with no spec"); } } gp2c-0.0.12/src/header.h0000644000175000017500000003350613627474124011557 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "stack.h" #ifndef GP2C_DECL # define EXTERN extern #else # define EXTERN #endif EXTERN int debug; EXTERN const char *nameparse, *namelib, *outfile; EXTERN int currfunc, preclevel; EXTERN int lastpass; EXTERN int autogc; EXTERN int warn; EXTERN int indent; EXTERN int currfunc; EXTERN int indentlevel; EXTERN int linecount, filecount; EXTERN char *optprefix,*optsuffix; EXTERN int opthashline, optcleanvar, optstrict; EXTERN int safecoeff, do_warning; #define STACKSZ (1024) #define GNIL (0) #define GNOARG (1) #define GNORANGE (2) static inline int min(int x, int y) { return (x<=y)?x:y; } static inline int max(int x, int y) { return (x>=y)?x:y; } typedef struct { char *txt; long fileno; long lineno; } error_string; typedef struct { stack s; char *txt; } comment; typedef struct { char *s; int c; } strcom; typedef enum {Fseq, Fmatrix,Frange,Fnorange, Fassign, Fmatcoeff, Fmatrixelts,Fmatrixlines, Fmat,Fvec, Flistarg, Frefarg, Findarg, Fvararg, Fcall, Fconst,Fsmall,Fnoarg, Ftag, Fentry,Ffunction,Flambda,Fdeffunc, /*This node is generated by genblock, not by parser*/ Fblock, Ffun } Ffunc; #define FneedENTRY (Fconst) #define Flastfunc (Ffun) /*see parse.y for definition. Fblock x: block number y:seq */ extern const char *Ffuncname[]; #include "type.h" #include "optable.h" typedef enum {Cuser,Cauto,Cglobal,Cconst,Carg,Cindarg,Cvararg,Ccompo,Cclosed, Cimmutable,Cdefmarker,Cundeclared,Cfunction} Vtype; /* Cuser: Variable defined by user in the source Cauto: Variable get type of initialisation Cglobal: Global variable for this module. Cconst: Variable affected exactly once in the code. Carg: Variable is a function's parameter. Ccompo: Variable components are updated. Cimmutable: Variable affected exactly once in the run. Cdefmarker: Variable initialised to the default marker. Cundeclared: Variable was not declared. Cfunction: Variable belong to function scope. */ typedef struct node_s { Ffunc f; /*node function*/ int x; /*node left child*/ int y; /*node right child*/ int t; /*node type*/ int m; /*node mode bitmask*/ int fileno; /*filenumber of corresponding code*/ int lineno; /*linenumber of corresponding code*/ int comment; } node; /* Automatic variables GP names are . * Automatic variables C names are {p,l} * with number2<=number1 since we remove unused variables. */ #define varstr(y) (value[tree[(y).node].x].val.str) #define vartype(x) (tree[(x).node].t) typedef struct { int flag; /*context type, Vtype bitmask*/ int key; /*context hashkey*/ const char *cvar; /*context var C name*/ int node; int initval; /*context initial value of var*/ int val; /*context value, if constant*/ } ctxvar; enum AFenum {AFaccess,AFassign,AFassigncompo,AFassigncopy,AFrefarg, AFhide, AFclone}; typedef struct { enum AFenum f; int idx; } affnode; enum GCenum {GCneeded, GCupto, GCglobal, GCreturn}; typedef struct { ctxvar *c; /*context stack*/ stack s; int ret; /*if not -1 , node number of var holding return value*/ affnode *var; /*Data about variable*/ stack v; int savb; int egc; /*Extra var to be gerepiled*/ long gc; /*garbage collecting attribute, bitmask of GCenum*/ int *gcvar; /*List of var that need to be gerepiled*/ stack g; } context; enum AAenum {AAtype,AActype,AAnoarg,AAsmall,AAstring,AAreftype,AAherevalue,AAlvalue,AAmulti,AAstdarg,AAoptsmall,AAopttype}; typedef struct { enum AAenum t; int misc; int type; int mode; char *str; } descargatom; typedef struct { int type; int init; int next; int end; } gpiterator; typedef struct { const char *cname; /* C code */ gpiterator iter; int type; /*return type*/ int mode; /*return mode*/ int nargs; /*nb args*/ descargatom *args; /*type of args*/ } gpdescarg; typedef struct { int nb; /*nb of description*/ gpdescarg *a; /*array of description*/ } gpdesc; typedef struct { int nb; /*nb of wrappers*/ int *w; /*array of wrappers*/ } gpwrap; typedef struct { const char *cname; /* C name */ const char *code; /* GP code */ const char *origin; /* library name of the symbol, NULL for gp/libpari*/ int help; } gpproto; enum UFenum {UFclosure, UFstatic}; typedef struct { enum UFenum flag; int pdefnode; int defnode; int bl; int sarg; int narg; int bctx; int wrapper; affnode *var; /*Data about variable*/ stack v; int savb; int *gcvar; /*List of var that need to be gerepiled*/ stack g; } userfunc; /*Positive enum are private to funcspec.c/patchfunc.h*/ enum {GPinstalled=-2,GPpari=-1,GPuser=0}; typedef int GPspec; typedef struct { const char *gpname; /*name for GP*/ int node; /*Ffunction node*/ GPspec spec; /*Spec name for spec function*/ gpproto proto; gpdesc *iter; /*Iterator or NULL*/ gpwrap *wrap; /*Wrapper or NULL*/ gpdesc *dsc; /*Description or NULL*/ userfunc *user; } gpfunc; #define functype(x) (tree[(x).node].t) #define funcmode(x) (tree[(x).node].m) EXTERN int FC_badtype, FC_formatcode, FC_tovec, FC_tovecprec, FC_cast; EXTERN int FC_decl_base,FC_decl_ext; EXTERN int FC_gerepileupto, FC_gerepileall; EXTERN int FC_const_smallreal, FC_const_real, FC_const_expr; EXTERN int FC_proto_ret, FC_proto_code; EXTERN int FC_default_check, FC_default_marker; EXTERN int FC_copy, FC_avma, FC_low_stack_lim, FC_gc_needed; EXTERN int FC_forprime_next, FC_forprime_init, FC_matrixrow; EXTERN int FC_proto_max_args; EXTERN int FC_call, FC_strtoclosure; EXTERN int FC_norange, FC_derivn; EXTERN int Vgen; EXTERN int Gpari_sp, Gforprime, Gerror; EXTERN int max_args; typedef enum {CSTsmall, CSTsmallreal, CSTint, CSTreal, CSTstr} CSTtype; typedef struct { CSTtype type; /*type of data*/ union value_u { long small; const char *str; } val; } value_t; typedef struct { const char *name; } Ctype_t; typedef struct { const char *name; } GPtype_t; typedef struct { const char *name; } Mmode_t; typedef struct { enum {Lbreak, Lnobrk, Liferr, Liter} type; int num; int go; int ne; int ie; int iter; } Clabel_t; EXTERN char **srcfile; EXTERN node *tree; EXTERN value_t *value; EXTERN gpfunc *lfunc; EXTERN ctxvar *ctxstack; EXTERN affnode *affstack; EXTERN context *block; EXTERN comment *com; EXTERN error_string *errors; EXTERN Ctype_t *Ctype; EXTERN GPtype_t *GPtype; EXTERN Mmode_t *Mmode; EXTERN Clabel_t *label; EXTERN stack s_srcfile,s_node,s_value,s_func,s_ctx,s_aff,s_bloc,s_comment,s_errors; EXTERN stack s_Ctype, s_GPtype, s_Mmode, s_label; typedef enum { err_func=-1,err_parse=-2,err_desc=-3 } err_name; char *xstrndup(const char *s, size_t n); #ifdef __GNUC__ /*Avoid spurious warning*/ void die(int n, const char *format, ...) __attribute__ ((noreturn)); #else void die(int n, const char *format, ...); #endif void warning(int n, const char *format, ...); int listtostack(int n, Ffunc f, int *stack, int nbmax, const char *error,int nerr); int listcalltostack(int n, int fnum, int *stack, int nbmax, const char *error,int nerr); int listtostackparent(int n, Ffunc f, int *stack, int nbmax, const char *error,int nerr); int genlistargs(int n,int *stack,int min,int max); int genlistcats(int y,int *stack,int max); void killlistarg(int n, int a); int newcomment(void); void pushcomment(int n, char x); void gencomment(FILE *fout, int n, int flag); typedef enum {PPend,PPstd,PPdefault,PPdefaultmulti,PPstar,PPauto} PPproto; PPproto parseproto(char const **q, char *c); int addcurrexpr(int n, int currexpr); int newsrcfile(char *f); int newnodeall(Ffunc f, int x, int y, int file, int line, int com); int newnode(Ffunc f, int x, int y); int newnode1(Ffunc f, int x, int y); int newnodecom(Ffunc f, int x, int y, int com); int newsmall(int n); int newrealnode(const char *s, int c); int newintnode(const char *s, int c); int newstringnode(const char *s, int c); int newquotenode(const char *s, int c); int newsmallrealvalue(long small); int newentry(const char *s); int newmember(const char *s); int newleaf(int n); int newopcall(OPerator s, int x, int y); int newopcall3(OPerator s, int x, int y, int z); int newtag(int x, const char *s, int c); int newcoeff(int n, int x, int y); int newlabel(int n); int newderivn(int x, int n); const char *usercname(const char *s); int is_const(int n, CSTtype t); const char *entryname(int n); int newuserfunc(const char *gpname); int newblock(void); int stacktoargs(int *stack, int nb); int newseq(int x, int y); int newdecl(int flag, int t, int initval, int *v); int newcall(const char *s, int y); int findfunction(const char *name); int findfunction_len(const char *s, size_t n); int findfuncdesc(const char *s); int findfuncdescopt(const char *s); int findfunctype(const char *s); int findfunctypeopt(const char *s); void genequal(int aff, const char *func, int *var, int *binf, int *t); int addseqright(int seq, int n); int addseqleft(int n, int seq); int addlistleft(int n, int l); int getfunc(const char *gpname); const char *funcname(int f); const char *GPname(int f); void printnode(FILE *fout, int n); void maketree(FILE *fout,int n); int gentype(int n); int genblockdeclaration(int args, int n, int flag, int type, int *seq); const char * genoutfile(void); void genheader(FILE *fout); void gencode(FILE *fout, int n); void genblock(int n, int p); void gentopfunc(int n, int p, int fun, int pfun); void gentoplevel(int n); int addinitfunc(int n); void gendeblock(int n, int p, int ps, int *r, int *rs); void moveblock(int n, int p, int ps, int *r, int *rs); void pilelist(int n); void pileclean(int n); void varlist(int n); void gensemicolon(FILE *fout,int x); void genparens(FILE *fout, int x); void genparensg(FILE *fout, int x); void genendbrace(FILE * fout, int x); void genbrace(FILE *fout, int x); void genindent(FILE *fout); void genindentline(FILE *fout, char *s); void genindentseq(FILE *fout, int x); void genlineno(FILE *fout, int n); void genpercent(FILE *fout, int n); void genbitprec(FILE *fout, int level); void genprec(FILE *fout, int level); void gencast(FILE *fout, int n, int nt); void gencastf(FILE *fout, int n, int nt, int f); void gentypedec(FILE *fout, int t); void genvarproto(FILE *fout, int n, int nerr); void genentry(FILE *fout, int n); void genentryfunc(FILE *fout, int n); void genprotocode(FILE *fout,int nf); void genprototype(FILE *fout,int nf, int kb); void gendeffunc(FILE *fout, int n); void gendefblock(FILE *fout, int n); void genblockfuncspec(int n, int p, gpfunc *gp); void genblockfunciter(int n, gpfunc *gp); int gentypefuncspec(int n, gpfunc *gp); void genentryspec(FILE *fout, int n, gpfunc *gp); void gencodenoarg(FILE *fout, int t, int n); void checkisvar(int aff, const char *func, int *var, int *t); gpdescarg *descfindrulesdsc(int nb, int *arg, gpdesc *dsc); gpdescarg *descfindrules(int nb, int *arg, gpfunc *gp); gpdescarg *descfindrules1(int arg, int nf); int gentypefuncdesc(int n, gpfunc *gp); int gencastcode(FILE *fout, int n, int t, int nt, int f); void gencodedesc(FILE *fout, int nb, int *arg, gpdescarg *rule, int nerr, int nf); int genfuncbydesc(FILE *fout, int nb, int *arg, int nf, int nerr); int genfuncbydesc1(FILE *fout, int arg, int nf, int nerr); int genfuncbycode(FILE *fout, int nb, int *arg, int nf, int nerr); int genfuncbycode1(FILE *fout, int arg, int nf, int nerr); int genfunc(FILE *fout, int nb, int *arg, int nf, int nerr); int genfunc1(FILE *fout, int arg, int nf, int nerr); enum {MAT_range,MAT_std,MAT_line,MAT_column,VEC_std}; int matindex_type(long n); int detag(int n); int getlvalue(int n); int getlvaluerr(int n); int getvar(int n); int getvarerr(int n); int getvarbyname(const char *s); ctxvar *getvarinblock(int n, context *fc); int fillvar(int n, int flag, int t, int initval); int pushvar(int n, int ctype, int t, int initval); void affectval(int vn, int val, int *seq); void pushctx(context *fc); void restorectx(int c); void copyctx(int n, context *fc); int newctx(int flag); int newaff(enum AFenum, int idx); void copyaff(int sava, int savc, context *fc); int isfunc(int n, const char *s); int isasmall(const char *s, long *res); int newctype(const char *s); int strtoctype(const char *s); int newtype(const char *s); int strtotype(const char *s); int strtotype_len(const char *s, size_t n); int newmode(const char *s); int strtomode(char *s); int geninsertvar(int seq, int ret); int geninsertvarop(int seq, int ret, OPerator op); int newgetg(int v, int l, const char *t); void makeblock(int bl, int n, int aseq, int ret, int savx); void makeblocks(int bl1, int bl2, int n, int bseq, int aseq, int ret, int savx); void makeblocks3(int bl1, int bl2, int bl3, int n, int bseq, int aseq, int ret, int sav0, int savx); int gengerepilelist(context *fc,int **gc); void gengerepileend(int bl); typedef enum {left,right} side; int yyparse (void); void yyrestart(FILE *new_file); void patchfunclist(void); void inittype(void); void initoperators(void); void printlistfunc(FILE *fout); void outputtype(FILE *fout); void cleancode(int n, int p, int d); void cleanvar(int n); void initdesc(const char *s); void maketreeGRL(FILE *fout,int n); gp2c-0.0.12/src/genfunc.c0000644000175000017500000004451313740627221011741 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" static int newcvar=1; /*Use getfunc or newuserfunc instead*/ static int newfunc(const char *gpname) { int nf=stack_new(&s_func); gpfunc *f=lfunc+nf; f->gpname=gpname; f->proto.cname=gpname; f->proto.code=NULL; f->proto.origin=NULL; f->proto.help=-1; f->node=newnode(Ffun,nf,-1); functype(*f)=Gempty; funcmode(*f)=0; f->spec=GPpari; f->iter=NULL; f->wrap=NULL; f->dsc=NULL; f->user=NULL; return nf; } int newuserfunc(const char *gpname) { int nf=newfunc(gpname); gpfunc *f=lfunc+nf; userfunc *uf; if (gpname[0]=='_' && gpname[1]=='.') { char *s=strdup(gpname); s[0]='m'; s[1]='_'; f->proto.cname=usercname(s); if (s!= f->proto.cname) free(s); } else f->proto.cname=usercname(gpname); f->spec=GPuser; f->proto.origin=namelib; uf=f->user=(userfunc*) malloc(sizeof(*f->user)); stack_init(&uf->v,sizeof(*uf->var),(void **)&uf->var); stack_init(&uf->g,sizeof(*uf->gcvar),(void **)&uf->gcvar); return nf; } int findfunction_len(const char *s, size_t n) { int i; for(i=0; i=0 && !lfunc[n].dsc) die(err_desc,"Function %s has no description",s); return n; } int findfunctype(const char *s) { int nf=findfuncdesc(s); gpdescarg *da=descfindrules(0,NULL,lfunc+nf); return da->type; } int findfunctypeopt(const char *s) { gpdescarg *da; int nf=findfuncdescopt(s); if (nf<0) return -1; da=descfindrules(0,NULL,lfunc+nf); return da->type; } int getfunc(const char *gpname) { int r=findfunction(gpname); if (r>=0) return r; return newfunc(strdup(gpname)); } void genprec(FILE *fout, int level) { if (level) { char buf[64]; sprintf(buf, "bitprec%d", level); if (getvarbyname(buf)>=0) fprintf(fout, "nbits2prec(%s)",buf); else if (getvarbyname(buf+3)>=0) fprintf(fout, "%s",buf+3); else die(-1,"Internal error: prec not found!"); } else fprintf(fout, "prec"); } void genbitprec(FILE *fout, int level) { if (level) { char buf[64]; sprintf(buf, "bitprec%d", level); if (getvarbyname(buf)>=0) fprintf(fout, "%s",buf); else if (getvarbyname(buf+3)>=0) fprintf(fout, "prec2nbits(%s)",buf+3); else die(-1,"Internal error: prec not found!"); } else fprintf(fout, "prec2nbits(prec)"); } void genautoarg(FILE *fout, char c, int nerr) { switch(c) { case 'p': genprec(fout, preclevel); break; case 'b': genbitprec(fout, preclevel); break; case 'P': fprintf(fout,"precdl"); break; default: die(nerr,"unhandled letter '%c' in prototype",c); } } int genarg(int nerr, FILE *fout, char c, int n, PPproto pr) { if (n==-1) die(n,"missing mandatory argument in function call"); switch(c) { case 'I': case 'E': case 'G': gencast(fout,n,Ggen); return 1; case 'U': gencast(fout,n,Gusmall); return 1; case 'L': case 'P': gencast(fout,n,Gsmall); return 1; case '&': if (tree[n].f!=Frefarg && pr == PPdefault) die(nerr,"Missing & for reference"); case '*': /* Fall through */ fprintf(fout,"&"); gencode(fout,n); return 1; case 'W': if (tree[n].f==Findarg) n=tree[n].x; gencode(fout,n); return 1; case 'r': case 's': gencast(fout,n,Gstr); return 1; case 'n': gencast(fout,n,Gvar); return 1; default: die(nerr,"Unsupported letter `%c' in prototype.\n" "This function is not supported by the compiler." ,c); return 0; } } void gendefarg(int n, FILE *fout, char c, const char *name) { switch(c) { case 'G': case '&': case 'r': case 's': case 'E': case 'I': case 'V': fprintf(fout,"NULL"); break; case 'n': fprintf(fout,"-1"); break; case 'P': fprintf(fout,"precdl"); break; default: die(n,"Unknown default in prototype code `%c' for `%s'",c,name); } } void gendefargmulti(FILE *fout, char const *q, char const *p) { for(p++;puser; context *fc=block+gp->user->bl; int narg = ufunc->narg; if (narg && fc->c[ufunc->sarg+narg-1].flag&(1<proto.cname); for(j=0;jc+ufunc->sarg+j; int t=vartype(*v); if (firstarg) fprintf(fout,", "); firstarg=1; if (v->flag&(1<=0 && arg[j]!=GNOARG) gencast(fout,arg[j],t); else if (v->flag&(1<initval<0) die(n,"a mandatory argument is missing"); else gencast(fout,v->initval,t); } if (funcmode(*gp)&(1<= 0) { gpfunc *gp=lfunc+nf; if (gp->spec==0) { genuserfunc(fout,n,nf); return; } else if (gp->spec>0) { genentryspec(fout,n,gp); return; } nb=genlistargs(n,stack,0,STACKSZ); if (genfunc(fout,nb,stack,nf,n)==0) return; if (gp->dsc) { int i; for(i=0;iproto.cname) name=gp->proto.cname; } else if (FC_call>=0 && v>=0) { nb=genlistargs(n,stack+1,0,STACKSZ-1)+1; stack[0] = ctxstack[v].node; if (!genfuncbydesc(fout,nb,stack,FC_call,n)) return; } /*copy verbatim*/ nb=genlistargs(n,stack,0,STACKSZ); fprintf(fout,"%s(",name); for(i=0;icvar); } void genvarproto(FILE *fout, int n, int nerr) { if (genfuncbydesc1(fout,n,FC_decl_base,nerr)) die(nerr,"type not suitable for a variable"); fprintf(fout," "); if (genfuncbydesc1(fout,n,FC_decl_ext,nerr)) gencode(fout,n); } void genfuncproto(FILE *fout, int nf, const char *sep, int nerr) { gpfunc *gp=lfunc+nf; int n=gp->node; if (genfuncbydesc1(fout,n,FC_decl_base,nerr)) die(nerr,"type not suitable for a function"); fprintf(fout,"%s",sep); if (genfuncbydesc1(fout,n,FC_decl_ext,nerr)) gencode(fout,n); } static void gendecvarend(FILE *fout, int t) { if (t>=0) { if (t!=Ggen && t!=Gsmall && t!=Gpari_sp && t!=Gvoid) fprintf(fout,";\t /* %s */\n",GPname(t)); else fprintf(fout,";\n"); } } void gendecvar(FILE *fout, context *fc, int nerr) { int oldt=-1; int idx; if (fc->s.n>0) genlineno(fout, fc->c->node); for(idx=0;idxs.n;idx++) { ctxvar *v=fc->c+idx; int t=vartype(*v); if ((v->flag&(1<val!=-1) continue; if (v->flag&(1<s.n-1) genlineno(fout, (v+1)->node); genindent(fout); if (genfuncbydesc1(fout,v->node,FC_decl_base,nerr)) die(nerr,"type `%s' not suitable for a variable",GPname(t)); fprintf(fout, " "); } else fprintf(fout, ", "); if (genfuncbydesc1(fout,v->node,FC_decl_ext,nerr)) gencode(fout,v->node); if (v->initval>=0) { fprintf(fout," = "); gencast(fout,v->initval,vartype(*v)); } else if (ctype[t]==Vgen && autogc) { /* We want to protect gerepile from uninitialized values*/ fprintf(fout," = "); gencast(fout, GNIL, Ggen); } oldt=t; } gendecvarend(fout,oldt); } static void genprotoargs(FILE *fout, int nf, int firstarg, int nb, int *name) { gpfunc *gp=lfunc+nf; int i = 0; char const *p=gp->proto.code; char c; PPproto mod; while((mod=parseproto(&p,&c))) { if (firstarg) fprintf(fout,", "); firstarg=1; switch(c) { case 'b': case 'p': case 'P': case 'L': case 'n': fprintf(fout,"long"); break; case 'U': fprintf(fout,"ulong"); break; case 'f': fprintf(fout,"long *"); break; case 'W': case 'G': case 'E': case 'I': fprintf(fout,"GEN"); break; case 'F': case '*': case '&': fprintf(fout,"GEN *"); break; case 'r': case 's': fprintf(fout,"const char *"); break; default: die(err_func,"prototype letter `%c' not known",c); } if (name) { fputs(" ",fout); if (c=='p') fprintf(fout,"prec"); else if (c=='b') fprintf(fout,"bitprec"); else { if (i>=nb) die(err_func,"too few arguments in lambda"); gencode(fout, name[i++]); } } } if (name && iuser->defnode; int savc=s_ctx.n; context *fc=block+gp->user->bl; if (gp->user->flag&(1<s.n;i++) { ctxvar *v=fc->c+i; if( v->flag&(1<node, nerr); if (v->initval>=0 && !(v->flag&(1<proto.code; char c; PPproto mod; while((mod=parseproto(&p,&c))) { switch(c) { case 'b': case 'p': case 'P': case 'L': t = Gsmall; break; case 'n': t = Gvar; break; case 'W': case 'G': case 'E': case 'I': t = Ggen; break; case 'r': case 's': t = Gstr; break; default: die(err_func,"prototype letter `%c' not known",c); } if (c=='p' || c=='b') { if (mode&(1<=nb) die(err_func,"too few arguments in lambda"); if (!firstarg) fprintf(fout,", "); firstarg=0; ot = tree[name[i]].t; tree[name[i]].t = t; gencast(fout, name[i], ot); tree[name[i]].t = ot; i++; } } if (name && iuser->defnode; int savc=s_ctx.n; int stack[STACKSZ]; int nb=0, nbc=0, par=0; int res; ctxvar *vres; context *fc=block+gp->user->bl; gpdescarg *rule; if (!wr->proto.code) die(wr->node,"Wrapper not defined"); pushctx(fc); for (i=0;is.n;i++) { ctxvar *v=fc->c+i; if( v->flag&(1<flag&(1<node; } } fprintf(fout,"static "); genfuncbydesc1(fout,wr->node,FC_decl_base,nerr); fprintf(fout,"\nwrap_%s(void * _cargs",gp->proto.cname); genprotoargs(fout, wrap, 1, nb, stack); fprintf(fout,")\n{\n"); if (nbc || has_prec) fprintf(fout," GEN _args = (GEN) _cargs;\n "); else fprintf(fout," (void) _cargs;\n "); res = pushvar(newnode(Fentry, newentry("_res"), -1), 0, t, -1); vres = ctxstack+res; if (ctype[t]==ctype[Gvoid]) fprintf(fout,"(void) "); else { genfuncbydesc1(fout,vres->node,FC_decl_base,nerr); fprintf(fout," "); if (genfuncbydesc1(fout,vres->node,FC_decl_ext,nerr)) gencode(fout,vres->node); fprintf(fout," = "); } fprintf(fout,"%s(",gp->proto.cname); firstarg=genwrapargs(fout, wrap, nb, stack, m); for (i=0,d=1;is.n;i++) { ctxvar *v=fc->c+i; if (v->flag&(1<node, wr); if (rule) { if (rule->type==Gvoid) gencodedesc(fout,1, &vres->node, rule, nerr, nf); else { fprintf(fout,"return "); gencodedesc(fout,1, &vres->node, rule, nerr, nf); fprintf(fout,";\n"); } } fprintf(fout,"}\n\n"); s_ctx.n=savc; } void gendeffunc(FILE *fout, int n) { int funcid=tree[n].x; int seq=tree[n].y; const char *name=entryname(funcid); int savcf=currfunc; gpfunc *gp; int t; /*get func number and context*/ currfunc=findfunction(name); newcvar=1; if (currfunc==-1) die(n,"Internal error in gendeffunc : func %s not found",name); gp=lfunc+currfunc; gencomment(fout,funcid,0); genlineno(fout, funcid); genprototype(fout,currfunc,1); t=functype(*gp); if (t!=Ggen && t!=Gsmall) fprintf(fout,"\t /* %s */",GPname(t)); fprintf(fout,"\n"); gencode(fout,seq); fprintf(fout,"\n"); if (gp->user->wrapper>=0) genwrapper(fout,currfunc,gp->user->wrapper); currfunc=savcf; } void gendefblock(FILE *fout, int n) { int b=tree[n].x; int seq=tree[n].y; int i; int m; int savc; int level = preclevel; context *fc=block+b; savc=s_ctx.n; for(i=0;is.n;i++) { ctxvar *v=fc->c+i; int t=vartype(*v); if ((v->flag&(1<val!=-1) continue; if (t!=Gvoid && isdigit(*varstr(*v))) { char s[33]; sprintf(s,"%c%d",(ctype[t]==Vgen?'p':'l'),newcvar++); v->cvar=strdup(s); } } pushctx(fc); m=tree[n].m; if(!(m&(1< #include #include #include "header.h" static int currblo; void destroynode(int p, side s) { if (p==-1) return; if (s==left) tree[p].x=GNIL; else tree[p].y=GNIL; } /* n: node p: parent (-1 for first node) ps: left/right r: root of seq rs:left/right */ void movecode(int n, int p, int ps, int *r, int *rs, int ret) { if (debug) fprintf(stderr,"movecode:%d %d %d\n",n,p,*r); if (ret==-1) ret=GNIL; if (p!=*r)/*we are not at the root of seq*/ { if ( tree[*r].f==Fseq ) { /*the interesting case*/ if (*rs==left) { int seq=newseq(n,tree[*r].x); tree[*r].x=seq; *rs=right;*r=seq; } else { int seq=newseq(tree[*r].x,n); tree[*r].x=seq; } } else /*we are at the start of a func, block or args entry*/ { if (*rs==left) { int seq=newseq(n,tree[*r].x); tree[*r].x=seq; *r=seq;*rs=right; } else { int seq=newseq(n,tree[*r].y); tree[*r].y=seq; *r=seq;*rs=right; } } if (ps==left) tree[p].x=ret; else tree[p].y=ret; } } void moveblock(int n, int p, int ps, int *r, int *rs) { int x,y; int z; int s; gpfunc *gp; int nf; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fseq: s=left;z=n; moveblock(x,n,left,&z,&s); s=right;z=n; moveblock(y,n,right,&z,&s); break; case Findarg: case Frefarg: case Ftag: moveblock(x,n,left,r,rs); break; case Fconst: case Fsmall: case Fnoarg: case Fentry: break; case Ffunction: /*If it is a func with "seq" arg we must change the root... Yes it's a real pain. Note: normally 'E' code does not contain Fseq after parsing, but may after this stage, e.g. if it calls "vector". */ nf=findfunction(entryname(n)); gp=lfunc+nf; if (nf>=0 && gp->spec>0) tree[n].m|=funcmode(*gp)&(1<=0 && gp->spec>0 && gp->proto.code && y!=-1) { int stack[STACKSZ]; int nb=listtostackparent(y,Flistarg,stack,STACKSZ,gp->gpname,n); const char *code=gp->proto.code; int i, star=code[0]=='*'; if (code[0]==0) die(-1,"incorrect pseudoprototype for %s: %s\n",gp->gpname,code); if (nb==0) { if (star || code[0]=='I' || code[0]=='E') { z=n; s=right; moveblock(y,z,right,&z,&s); } else moveblock(y,n,right,r,rs); } else { if (star || code[0]=='I' || code[0]=='E') { z=stack[0];s=left; moveblock(tree[z].x,z,left,&z,&s); } else moveblock(tree[stack[0]].x,stack[0],left,r,rs); } for(i=0;igpname,code); if (star || code[i+1]=='I' || code[i+1]=='E') { z=stack[i];s=right; moveblock(tree[z].y,z,right,&z,&s); } else moveblock(tree[stack[i]].y,stack[i],right,r,rs); } } else moveblock(y,n,right,r,rs); break; case Fdeffunc: z=n;s=right; moveblock(y,n,right,&z,&s); break; case Fblock: z=n;s=right; movecode(n,p,ps,r,rs,newleaf(block[x].ret)); moveblock(y,n,right,&z,&s); break; default: if (tree[n].f>=FneedENTRY) die(n,"Incorrect node %s in moveblock",funcname(tree[n].f)); moveblock(x,n,left,r,rs); moveblock(y,n,right,r,rs); } } int blockisempty(int n) { int i; context *fc=block+tree[n].x; for(i=0;is.n;i++) { ctxvar *v=fc->c+i; if (!(v->flag&(1<val==-1) return 0; } return 1; } /* n: node p: parent (-1 for first node) d: 0 right child, 1 left child */ void cleanvar(int n) { int x,y; int i; int v,savc,savblo; context *bl; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fassign: cleanvar(x); cleanvar(y); x=tree[n].x; y=tree[n].y; if (tree[x].f==Fentry) { v=getvarerr(x); if (ctxstack[v].flag&(1<v.n;i++) { affnode *an=bl->var+i; if (an->idx==w && an->f!=AFaccess) simple=0; } } } if (simple) { ctxstack[v].val=y; tree[n]=tree[GNIL]; } } } break; case Findarg: case Frefarg: case Ftag: cleanvar(x); break; case Fconst: case Fsmall: case Fnoarg: break; case Fentry: v=getvarerr(n); if ( (ctxstack[v].flag&(1<s.n;i++) { ctxvar *c=bl->c+i; if (c->initval!=-1) cleanvar(c->initval); } cleanvar(y); copyctx(savc,block+tree[n].x); if (blockisempty(n)) tree[n].m|=(1<=FneedENTRY) die(n,"Incorrect node %s in cleanvar",funcname(tree[n].f)); cleanvar(x); cleanvar(y); } } /* n: node p: parent (-1 for first node) d: side */ void cleancode(int n, int p, int d) { int x,fx; int y,fy; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fseq: cleancode(x,n,left); cleancode(y,n,right); x=tree[n].x;fx=tree[detag(x)].f; y=tree[n].y;fy=tree[detag(y)].f; if ( p>=0 && ( fx==Fnoarg || fy==Fnoarg)) { if (fx==Fnoarg && fy==Fnoarg) destroynode(p,d); else { if (d==left) tree[p].x=(fx==Fnoarg)?y:x; else tree[p].y=(fx==Fnoarg)?y:x; } } else tree[n].m|=(1<=FneedENTRY) die(n,"Incorrect node %s in cleancode",funcname(tree[n].f)); cleancode(x,n,left); cleancode(y,n,right); } } /* n: node p: parent (-1 for first node) ps: child side(left/right) *r: root *rs: root child side */ void gendeblock(int n, int p, int ps, int *r, int *rs) { int x,y; int z; int s; gpfunc *gp; int nf; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fseq: s=left;z=n; gendeblock(x,n,left,&z,&s); s=right;z=n; gendeblock(y,n,right,&z,&s); break; case Findarg: case Frefarg: case Ftag: gendeblock(x,n,left,r,rs); break; case Fconst: case Fsmall: case Fnoarg: case Fentry: break; case Ffunction: /*If it is a func with "seq" arg we must change the root... Yes it's a real pain. Note: normally 'E' code does not contain Fseq after parsing, but may after this stage, e.g. if it calls "vector". */ nf=findfunction(entryname(n)); gp=lfunc+nf; if (nf>=0 && gp->spec>0 && gp->proto.code && y!=-1) { int stack[STACKSZ]; int nb=listtostackparent(y,Flistarg,stack,STACKSZ,gp->gpname,n); const char *code=gp->proto.code; int i, star=code[0]=='*'; if (code[0]==0) die(-1,"incorrect pseudoprototype for %s: %s\n",gp->gpname,code); if (nb==0) { if (star || code[0]=='I' || code[0]=='E') { z=n; s=right; gendeblock(y,z,right,&z,&s); } else gendeblock(y,n,right,r,rs); } else { if (star || code[0]=='I' || code[0]=='E') { z=stack[0];s=left; gendeblock(tree[z].x,z,left,&z,&s); } else gendeblock(tree[stack[0]].x,stack[0],left,r,rs); } for(i=0;igpname,code); if (star || code[i+1]=='I' || code[i+1]=='E') { z=stack[i];s=right; gendeblock(tree[z].y,z,right,&z,&s); } else gendeblock(tree[stack[i]].y,stack[i],right,r,rs); } } else { gendeblock(y,n,right,r,rs); if (ps==left) n=tree[p].x; else n=tree[p].y; if (is_subtype(tree[n].t,Gvoid)) { /*C doesn't allow making anything from void, so we need to move the call here. GP cast void to zero if necessary*/ movecode(n,p,ps,r,rs,-1); } } break; case Fdeffunc: z=n;s=right; gendeblock(y,n,right,&z,&s); break; case Fblock: z=n;s=right; gendeblock(y,n,right,&z,&s); break; default: if (tree[n].f>=FneedENTRY) die(n,"Incorrect node %s in gendeblock",funcname(tree[n].f)); gendeblock(x,n,left,r,rs); gendeblock(y,n,right,r,rs); } } gp2c-0.0.12/src/util.c0000644000175000017500000001124013740627221011260 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" static void msgprefix(int n) { if (n>0) fprintf(stderr,"%s:%d: ",srcfile[tree[n].fileno],tree[n].lineno); else { switch(n) { case err_func: fprintf(stderr,"%s:%s: ",srcfile[filecount],currfunc==-1?"toplevel":lfunc[currfunc].gpname); break; case err_parse: fprintf(stderr,"%s:%d: ",srcfile[filecount],linecount); break; case err_desc: fprintf(stderr,"func.dsc:: "); break; } } } void die(int n, const char *format, ...) { va_list ap; static int dead; va_start(ap, format); fprintf(stderr,"Error:"); msgprefix(n); vfprintf(stderr,format,ap); if (dead++) exit(1); fprintf(stderr,"\n"); printnode(stderr,n); fprintf(stderr,"\n"); va_end(ap); exit(1); } void warning(int n, const char *format, ...) { va_list ap; va_start(ap, format); if (do_warning) { fprintf(stderr,"Warning:"); msgprefix(n); vfprintf(stderr,format,ap); fprintf(stderr,"\n"); printnode(stderr,n); fprintf(stderr,"\n"); } va_end(ap); } int listtostack(int n, Ffunc f, int *stack, int nbmax, const char *error,int nerr) { int x,i,nb; if (n==-1) return 0; for(x=n,i=0;tree[x].f==f && i0;stack[i]=tree[x].y,x=tree[x].x,i--); stack[0]=x; return nb; } int listcalltostack(int n, int fnum, int *stack, int nbmax, const char *error,int nerr) { int x=n, i=0, nb; if (n==-1) return 0; while(1) { int xx=tree[x].x; int xy=tree[x].y; if (tree[x].f!=Ffunction || xx!=fnum) break; x=tree[xy].x; i++; if (i>=nbmax) die(nerr,"Too many args for `%s'",error); } nb=i+1; for(x=n;i>0;i--) { int y=tree[x].y; x=tree[y].x; stack[i]=tree[y].y; } stack[0]=x; return nb; } int listtostackparent(int n, Ffunc f, int *stack, int nbmax, const char *error,int nerr) { int x,i,nb; if (n==-1) return 0; nbmax--; for(x=n,i=0;tree[x].f==f && i=0;stack[i]=x,x=tree[x].x,i--); return nb; } int genlistargs(int n,int *stack,int min,int max) { const char *name=value[tree[n].x].val.str; int y=tree[n].y; int nb=(y==GNOARG)?0:listtostack(y,Flistarg,stack,max,name,n); if(nb #include #include #include #include "header.h" void genindent(FILE *fout) { int i; for (i=0;is.n-1;i++) { if (c->txt[i]=='\n') { if (!flag) fputc('\n',fout); genindent(fout); while(c->txt[i+1]==' ' || c->txt[i+1]=='\t') i++; } else fputc(c->txt[i],fout); } if (c->txt[i]=='\n') { if (!flag) fputc('\n',fout); if (!(tree[n].m&(1<txt[i],fout); } void gensemicolon(FILE *fout, int x) { if (x!=-1 && !(tree[x].m&(1<proto.help; int nb, i; if (h<0) return; fprintf(fout,"GP;addhelp(%s%s, \"", gp->gpname,(optsuffix?optsuffix:"")); nb=genlistcats(h,stack,STACKSZ); for(i=0;iuser->bl; if (!descfindrules1(gp->node, FC_proto_ret)) return 1; for (i=0;is.n;i++) { ctxvar *v=fc->c+i; if ( v->flag&(1<node, FC_proto_code)) nargs++; else return 1; } } if (max_args>0 && nargs>max_args) return 1; return 0; } /*If there is no suitable GP prototype, just print nothing*/ void geninstall(FILE *fout, int nf) { int i; gpfunc *gp=lfunc+nf; if(gp->spec==GPuser) { context *fc=block+gp->user->bl; if (checkinstall(gp)) return; fprintf(fout,"GP;install(\"%s\",\"",gp->proto.cname); genfuncbydesc1(fout,gp->node,FC_proto_ret,-1); for (i=0;is.n;i++) { ctxvar *v=fc->c+i; if ( v->flag&(1<flag&(1<flag&(1<node,FC_proto_code,-1); } else if (v->initval<0) genfuncbydesc1(fout,v->node,FC_proto_code,-1); else { fputc('D',fout); printnode(fout,v->initval); fputc(',',fout); genfuncbydesc1(fout,v->node,FC_proto_code,-1); fputc(',',fout); } } } if (funcmode(*gp)&(1<proto.cname); genfuncbydesc1(fout,gp->node,FC_proto_ret,-1); fprintf(fout,"%s",gp->proto.code); } /* Member function has a gpname of "_.func" which is not a valid * GP func name. * we use "m_" instead. */ if( gp->gpname[0]=='_' && gp->gpname[1]=='.' ) fprintf(fout,"\",\"m_%s%s\"",gp->gpname+2,(optsuffix?optsuffix:"")); else fprintf(fout,"\",\"%s%s\"",gp->gpname,(optsuffix?optsuffix:"")); if (gp->proto.origin) fprintf(fout,",\"%s\"",gp->proto.origin); fprintf(fout,");\n"); } const char * genoutfile(void) { if (outfile) { long n = strlen(outfile); if (n > 2 && outfile[n-1]=='c' && outfile[n-2]=='.') { char *s = strdup(outfile); s[n-2] = 0; return s; } } return strdup(nameparse); } void genheader(FILE *fout) { int i; const char *file = genoutfile(); char * modb; fprintf(fout,"/*-*- compile-command: \""); modb = malloc(strlen(PARI_MODULE_BUILD)+4*strlen(file)+1); sprintf(modb,PARI_MODULE_BUILD,file,file,file,file); free((void*)file); for (i=0; modb[i]; i++) { if (modb[i]=='"') fputc('\\', fout); fputc(modb[i], fout); } free((void*)modb); fprintf(fout,"\"; -*-*/\n"); fprintf(fout,"#include \n"); fprintf(fout,"/*\n"); for(i=0;iflag&(1<flag&(1<node,v->node); fprintf(fout,";\n"); } fprintf(fout,"/*End of global vars*/\n\n"); } } void gencode(FILE *fout, int n) { int x=tree[n].x; int y=tree[n].y; if (n<0) return; if (tree[n].comment>=0) { if (tree[n].m&(1<=3) fprintf(fout,"/*%s:%d*/",GPname(tree[n].t),tree[n].m); switch(tree[n].f) { case Fseq: genindentseq(fout,x); gencode(fout,x); gensemicolon(fout,x); genindentseq(fout,y); gencode(fout,y); gensemicolon(fout,y); break; case Fassign: genfacteuraff(fout,x,y); break; case Fconst: { long val=value[x].val.small; const char *str=value[x].val.str; long typ=value[x].type; switch (typ) { case CSTsmall: fprintf(fout,"%ld",val); break; case CSTsmallreal: { int arg=newsmall(val); tree[arg].t=Gsmall; if (genfuncbydesc1(fout,arg,FC_const_smallreal,n)) die(n,"Bad description for _const_smallreal"); stack_pop_safe(&s_node,arg); } break; case CSTint: case CSTreal: { int arg=newstringnode(str,-1); int fc=FC_const_expr; tree[arg].t=Gstr; if (FC_const_real>=0 && typ==CSTreal) fc=FC_const_real; if (genfuncbydesc1(fout,arg,fc,n)) die(n,"Bad description for _const_expr"); stack_pop_safe(&s_value,tree[arg].x); stack_pop_safe(&s_node,arg); } break; case CSTstr: genstring(fout,str); break; } break; } case Fsmall: fprintf(fout,"%d",tree[n].x); break; case Frefarg: gencode(fout,x); break; case Findarg: gencode(fout,x); break; case Fentry: genentry(fout,n); break; case Ffun: { gpfunc *gp=lfunc+tree[n].x; fprintf(fout,"%s",gp->proto.cname); } break; case Ffunction: genentryfunc(fout,n); break; case Fdeffunc: gendeffunc(fout,n); break; case Fblock: gendefblock(fout,n); break; case Fnoarg: fputc('0',fout); break; case Fnorange: if (FC_norange >= 0) genfuncbydesc(fout, 0, NULL, FC_norange, n); else fprintf(fout,"0"); break; case Ftag: gencast(fout,x,y); break; default: die(n,"Internal error : unknown func %s in gencode",funcname(tree[n].f)); break; } } void genparensg(FILE *fout, int n) { if (n!=-1 && (tree[n].m&(1< #include #include #include "stack.h" int debug_stack; void ** stack_base(stack *s) { return (void **) ((unsigned long)s + (unsigned long)s->offset); } void stack_init(stack *s, int size, void **data) { s->offset=(unsigned long)data-(unsigned long)s; *data=NULL; s->n=0; s->alloc=0; s->size=size; } void stack_alloc(stack *s, int nb) { void **sdat=(void **)((char *)s+s->offset); if (s->n+nb <= s->alloc) return; while (s->n+nb > s->alloc) s->alloc=s->alloc?s->alloc<<1:1; if (debug_stack) fprintf(stderr,"data=%lx (%d/%ld)\n", (unsigned long) sdat,s->n,(long) s->alloc); *sdat=realloc(*sdat,s->alloc*s->size); if (*sdat==NULL) fprintf(stderr,"Cannot alloc memory (%ld bytes)\n",(long)s->alloc*s->size); } int stack_new(stack *s) { stack_alloc(s, 1); return s->n++; } void stack_push_int(stack *s, int val) { int *sdat; stack_alloc(s, 1); sdat = * (int **) ((char *)s+s->offset); sdat[s->n++] = val; } int stack_has_int(stack *s, int val) { int *sdat= * (int **) ((char *)s+s->offset); int i; for (i=0; in; i++) if (sdat[i]==val) return 1; return 0; } void stack_remove_int(stack *s, int val) { int *sdat= * (int **) ((char *)s+s->offset); int i, k; for (i=0, k=0; in; i++) { if (sdat[i]==val) k++; else sdat[i-k]=sdat[i]; } s->n-=k; } static int cmpss(const void *a, const void *b) { return *(int*)a - *(int*)b; } void stack_int_sort(stack *s) { int *sdat= * (int **) ((char *)s+s->offset); qsort(sdat, s->n, s->size, cmpss); } void stack_int_merge(stack *s, stack *t) { int *sdat= * (int **) ((char *)s+s->offset); int *tdat= * (int **) ((char *)t+t->offset); int *var; int i,j; int sn = s->n, tn = t->n; stack v; if (t->n==0) return; stack_init(&v,sizeof(*var),(void *)&var); for(i=0,j=0; i tdat[j]) stack_push_int(&v,tdat[j++]); else { stack_push_int(&v,sdat[i]); i++; j++; } } for (;in) s->n--; else fprintf(stderr,"stack_pop: stack is already empty\n"); } void stack_pop_safe(stack *s, int n) { if (n == s->n-1) stack_pop(s); else fprintf(stderr,"stack_pop: unexpected stack level\n"); } /*Push stack t on stack s*/ void stack_push(stack *s, stack *t) { if ( s->size!=t->size ) fprintf(stderr,"Incompatible stack size in stack_push: %ld!=%ld\n", (long)s->size,(long)t->size); if ( t->n>0 ) { void **sdat=(void **) ((char *)s+s->offset); void **tdat=(void **) ((char *)t+t->offset); stack_alloc(s, t->n); memcpy((char *)*(sdat)+s->n*s->size,*tdat,t->n*t->size); s->n+=t->n; } } void stack_replace(stack *s, stack *t) { void **sdat=(void **) ((char *)s+s->offset); void **tdat=(void **) ((char *)t+t->offset); *sdat=realloc(*sdat,0); *sdat=*tdat; s->n=t->n; s->alloc=t->alloc; } gp2c-0.0.12/src/gerepile.c0000644000175000017500000001226313653242262012106 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" void gerepilelist(stack *s, stack *g, int savb) { affnode *an=(affnode *) *stack_base(s); int i; for(i=0;in;i++) { int idx=an[i].idx; ctxvar *v=ctxstack+idx; int t=vartype(*v); if (ctype[t]!=Vgen || ((v->flag&(1<val!=-1)) continue; /*If i is affected or referenced*/ if (an[i].f==AFclone) stack_remove_int(g,v->node); else if (an[i].f!=AFaccess && an[i].f!=AFhide) { int j; /*search the first occurence of i*/ for(j=0;j=savb && an[j].f==AFassign) continue; /*else check if it is not already in the list*/ if (stack_has_int(g,v->node)) continue; stack_push_int(g,v->node); } } stack_int_sort(g); if (debug) { int i; fprintf(stderr,"/*"); for(i=0;in;i++) fprintf(stderr,"%s%s ",varstr(ctxstack[an[i].idx]),an[i].f==AFassigncompo?"=[]":an[i].f==AFassign?"=":""); fprintf(stderr,"*/\n"); } } void pilelistvar(int idx) { ctxvar *v=ctxstack+idx; if (v->flag&(1<initval>=0) { pilelist(v->initval); newaff(AFassign,idx); } } void pilelist(int n) { int x,y; int savc; context *bl; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fassign: if (tree[x].f!=Fentry) pilelist(x); pilelist(y); x=getlvaluerr(x); if (ctype[tree[x].t]==Vgen && ctype[tree[y].t]==Vgen && (tree[detag(y)].m&(1<v,&uf->g,uf->savb); currfunc=savcf; } break; case Fblock: savc=s_ctx.n; bl=block+tree[n].x; pushctx(bl); pilelist(y); if (bl->gc&(1<v,&bl->g,bl->savb); if (bl->egc>=0) { int vret=getvar(bl->egc); ctxvar *v=ctxstack+vret; if (ctype[vartype(*v)]==Vgen && !stack_has_int(&bl->g,vret)) stack_push_int(&bl->g,v->node); } } copyctx(savc,bl); s_ctx.n=savc; break; default: if (tree[n].f>=FneedENTRY) die(n,"Incorrect node %s in pilelist",funcname(tree[n].f)); pilelist(x); pilelist(y); } } void pileclean(int n) { int x,y; int savc,sava,savb; context *bl; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fassign: pileclean(x); pileclean(y); break; case Frefarg: case Findarg: case Ftag: pileclean(x); break; case Fconst: case Fsmall: case Fnoarg: case Fentry: break; case Ffunction: pileclean(y); break; case Fdeffunc: { int funcid=tree[n].x; const char *name=entryname(funcid); int savcf=currfunc; /*get func number and context*/ currfunc=findfunction(name); pileclean(y); currfunc=savcf; } break; case Fblock: savc=s_ctx.n; sava=s_aff.n; bl=block+tree[n].x; pushctx(bl); savb=s_ctx.n; pileclean(y); if (bl->gc&(1<g,&ufunc->g); if (bl->g.n!=1) bl->gc&=~(1<gc&(1<g.n || (bl->gc&(1<gc&(1<=savc && wgc&(1<g.n==0 || (bl->g.n==1 && (bl->gc&(1<=FneedENTRY) die(n,"Incorrect node %s in pileclean",funcname(tree[n].f)); pileclean(x); pileclean(y); } } gp2c-0.0.12/src/optable.h0000644000175000017500000000245313623476440011751 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ typedef enum {OPor, OPand, OPid, OPeq, OPne, OPge, OPg, OPle, OPl, OPs, OPp, OPsl, OPsr, OPmod, OPdr, OPeuc, OPd, OPm, OPpow, OPcat, OPss, OPpp, OPse ,OPpe ,OPsle ,OPsre ,OPmode ,OPdre ,OPeuce ,OPde ,OPme, OPpl, OPn, OPnb, OPfact, OPderivn, OPtrans, OPrange, OPcompr, OPcomprc, OPhist, OPhisttime, OPcoeff, OPderiv, OPnboperator} OPerator; #ifndef TYPE extern const char *opname[]; #else const char *opname[]={"_||_", "_&&_", "_===_", "_==_", "_!=_", "_>=_", "_>_", "_<=_", "_<_", "_-_","_+_","_<<_", "_>>_", "_%_", "_\\/_", "_\\_", "_/_", "_*_","_^_","__","_--","_++","_-=_", "_+=_", "_<<=_", "_>>=_", "_%=_", "_\\/=_", "_\\=_", "_/=_", "_*=_","+_","-_","!_","_!","_'_","_~","[_.._]","[_|_<-_,_]","[_|_<-_,_;_]","%","%#","_[_,_]","_'", ""}; #endif gp2c-0.0.12/src/context.c0000644000175000017500000000653313623476440012005 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" /* return hashing value for variable s*/ long varkey(const char *s) { long n = 0; while (*s) { n = (n<<1) ^ *s; s++; } return n; } int newctx(int flag) { int n; n=stack_new(&s_ctx); ctxstack[n].flag=flag; return n; } int newaff(enum AFenum func, int idx) { int n=stack_new(&s_aff); if (idx<0) die(-1,"Internal error: unknown var"); affstack[n].f=func; affstack[n].idx=idx; return n; } int newblock(void) { int n=stack_new(&s_bloc); stack_init(&block[n].s,sizeof(*block[n].c),(void **)&block[n].c); block[n].ret=-1; stack_init(&block[n].v,sizeof(*block[n].var),(void **)&block[n].var); block[n].gc=0; block[n].egc=-1; stack_init(&block[n].g,sizeof(*block[n].gcvar),(void **)&block[n].gcvar); return n; } int fillvar(int n, int flag, int t, int initval) { int c=getvarerr(n); ctxvar *v=ctxstack+c; v->flag=flag; vartype(*v)=t; v->initval=initval; return c; } int pushvar(int n, int flag, int t, int initval) { const char *s=entryname(n); int c=newctx(flag); ctxvar *v=ctxstack+c; if (flag&(1<cvar=usercname(s); else v->cvar=s; v->key=varkey(s); v->node=newnodeall(Fentry,newentry(s),-1,tree[n].fileno,tree[n].lineno,tree[n].comment); vartype(*v)=t; v->initval=initval; v->val=-1; return c; } int getvarinstack(const char *s, int n, const ctxvar *ctx) { int i,key; key=varkey(s); for(i=n-1;i>=0 && (ctx[i].key!=key || strcmp(varstr(ctx[i]),s));i--); return i; } int getvarbyname(const char *s) { return getvarinstack(s,s_ctx.n,ctxstack); } int getvar(int n) { if(tree[n].f!=Fentry && tree[n].f!=Ffunction) die(n,"Internal error : Not a Fentry/Ffunction in getvar"); return getvarbyname(value[tree[n].x].val.str); } ctxvar *getvarinblock(int n, context *fc) { int v; if (tree[n].f!=Fentry) die(n,"Internal error : %s(%d) in getvarinblock",funcname(tree[n].f),tree[n].f); v=getvarinstack(value[tree[n].x].val.str,fc->s.n,fc->c); if ( v<0 ) die(n,"Internal error : var not found in getvarinblock"); return fc->c+v; } int getvarerr(int n) { int v=getvar(n); if (v==-1) die(n,"Internal error: variable %s appears from nowhere", value[tree[n].x].val.str); return v; } void restorectx(int c) { int i,j; for(i=c,j=c;is_ctx.n) die(-1,"Internal error: restorectx"); s_ctx.n=j; } void pushctx(context *fc) { stack_push(&s_ctx,&fc->s); } void copyctx(int c, context *fc) { int i; fc->s.n=0; for (i=c; is); fc->c[n]=ctxstack[i]; } } gp2c-0.0.12/src/config.h.in0000644000175000017500000000532313751742701012172 00000000000000/* src/config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the `getopt' function. */ #undef HAVE_GETOPT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the `memccpy' function. */ #undef HAVE_MEMCCPY /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strcmp' function. */ #undef HAVE_STRCMP /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* target PARI module build */ #undef PARI_MODULE_BUILD /* target PARI version */ #undef PARI_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `unsigned int' if does not define. */ #undef size_t gp2c-0.0.12/src/gp2c.c0000644000175000017500000002746113623476440011157 00000000000000/* Copyright (C) 2000-2018 The PARI group. This file is part of the GP2C package. GP2C 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.*/ #define TYPE #include "config.h" #include #include #include #include #include #define GP2C_DECL #include "header.h" extern int yydebug; extern FILE *yyin; static int optgen=0,opttree=0,opttype=0,optinfo=0; void dump(FILE *fout) { int i,j; for(i=0;iuser->bl; fprintf(fout,"Function:\n %s(",gp->proto.cname); for(j=0;js.n;j++) { if (fc->c[j].flag&(1<c[j])),varstr(fc->c[j])); } fprintf(fout,")\n"); if (strcmp(gp->gpname,gp->proto.cname)) fprintf(fout,"GP name: %s\n",gp->gpname); fprintf(fout,"code: %s\n",gp->proto.code); fprintf(fout,"return type: %s\n",GPname(functype(*gp))); fprintf(fout,"mode=%d \t spec=%d\n",funcmode(*gp),gp->spec); for( ;js.n;j++) { ctxvar *c=fc->c+j; if (!((c->flag&(1<flag&(1<val==-1))) fprintf(fout,"%s %s\n",GPname(vartype(*c)),varstr(*c)); } fprintf(fout,"\n"); } } void init_compiler(void) { int n; stack_init(&s_srcfile,sizeof(*srcfile),(void **)&srcfile); stack_init(&s_node,sizeof(*tree),(void **)&tree); stack_init(&s_value,sizeof(*value),(void **)&value); stack_init(&s_func,sizeof(*lfunc),(void **)&lfunc); stack_init(&s_ctx,sizeof(*ctxstack),(void **)&ctxstack); stack_init(&s_aff,sizeof(*affstack),(void **)&affstack); stack_init(&s_bloc,sizeof(*block),(void **)&block); stack_init(&s_comment,sizeof(*com),(void **)&com); stack_init(&s_errors,sizeof(*errors),(void **)&errors); stack_init(&s_Ctype,sizeof(*Ctype),(void **)&Ctype); stack_init(&s_GPtype,sizeof(*GPtype),(void **)&GPtype); stack_init(&s_Mmode,sizeof(*Mmode),(void **)&Mmode); stack_init(&s_label,sizeof(*label),(void **)&label); /*Node 0 should be a (Gvoid)Fnoarg*/ n=newnode(Fnoarg,-1,-1); tree[n].t=Gvoid; /*Node 1 should be a (Gnotype)Fnoarg*/ n=newnode(Fnoarg,-1,-1); tree[n].t=Gnotype; /*Node 2 should be a Fnorange*/ n=newnode(Fnorange,-1,-1); tree[n].t=Gsmall; } void init_stdfunc(void) { FC_badtype=findfuncdesc("_badtype"); FC_formatcode=findfuncdesc("_formatcode"); FC_tovec=findfuncdesc("_tovec"); FC_tovecprec=findfuncdescopt("_tovecprec"); FC_cast=findfuncdesc("_cast"); FC_proto_ret=findfuncdesc("_proto_ret"); FC_proto_code=findfuncdesc("_proto_code"); FC_decl_base=findfuncdesc("_decl_base"); FC_decl_ext=findfuncdesc("_decl_ext"); FC_default_check=findfuncdesc("_default_check"); FC_default_marker=findfuncdesc("_default_marker"); FC_gerepileupto=findfuncdesc("_gerepileupto"); FC_const_smallreal=findfuncdesc("_const_smallreal"); FC_const_expr=findfuncdesc("_const_expr"); FC_copy=findfuncdesc("copy"); FC_avma=findfuncdesc("_avma"); Gpari_sp=findfunctype("_avma"); FC_low_stack_lim=findfuncdesc("_low_stack_lim"); FC_gc_needed=findfuncdescopt("_gc_needed"); FC_gerepileall=findfuncdesc("_gerepileall"); FC_forprime_init=findfuncdescopt("_forprime_init"); if (FC_forprime_init>=0) Gforprime=strtotype("forprime"); else { Gforprime=findfunctype("_diffptr"); FC_forprime_next=findfuncdesc("_forprime_next"); } Gerror=findfunctypeopt("_iferr_error"); FC_matrixrow=findfuncdescopt("_[_,]"); FC_const_real=findfuncdescopt("_const_real"); FC_call=findfuncdescopt("_(_)"); FC_strtoclosure=findfuncdescopt("_strtoclosure"); FC_proto_max_args=findfuncdescopt("_proto_max_args"); max_args = FC_proto_max_args<0 ? 8 : lfunc[FC_proto_max_args].dsc->a[0].args[0].misc; if (safecoeff && findfuncdescopt("_safecoeff")<0) { warning(-1,"gp2c option -C not supported by this PARI version"); safecoeff=0; } FC_norange=findfuncdescopt("_norange"); FC_derivn=findfuncdescopt("_'_"); } void init_typedef(void) { gpdesc *def=lfunc[findfuncdesc("_typedef")].dsc; int r; ctype=(int*)calloc(s_GPtype.n,sizeof(*ctype)); for (r=0; rnb; r++) { gpdescarg *rule=def->a+r; int t=rule->args[0].type; ctype[t]=strtoctype(rule->cname); } Vgen=strtoctype("GEN"); } void compile(FILE *fin, FILE *fout, const char *nom) { const char *descfile; char *tmplib; const char *lib; int startnode; int status; int i; linecount = 1; filecount = 0; nameparse = nom; init_compiler(); filecount = newsrcfile(strdup(nom)); lib = genoutfile(); tmplib=(char*)calloc(strlen(lib)+6,sizeof(*lib)); sprintf(tmplib,"%s%s.so",lib[0]=='/'?"":"./",lib); free((void*)lib); namelib=tmplib; yyin=fin; currfunc=-1; initoperators(); if (!(descfile=getenv("GP2C_FUNC_DSC"))) descfile=FUNCDSC_PATH; for(i=0;GPneeded[i];i++) newtype(GPneeded[i]); for(i=0; Mneeded[i];i++) newmode( Mneeded[i]); initdesc(descfile); inittype(); patchfunclist(); if(opttype) {outputtype(fout);exit(0);} init_stdfunc(); init_typedef(); startnode=s_node.n-1; status=yyparse(); for(i=0;ifileno],s->lineno,s->txt); } if(status) { fprintf(stderr,"Errors found: aborting...\n"); exit(1); } if (s_errors.n) { fprintf(stderr,"%d error%s found: aborting...\n",s_errors.n,s_errors.n==1?"":"s"); exit(1); } if (startnode==s_node.n-1) startnode=GNIL; else startnode=s_node.n-1; if (optgen) { printnode(fout,startnode); printf("\n"); return; } if (yydebug) fprintf(stderr,"End of parsing\n"); startnode=addseqleft(newnode(Ffunction,newentry("_initfunc"),-1),startnode); gentoplevel(startnode); startnode=addinitfunc(startnode); if (debug>1) printnode(stderr,startnode); gentopfunc(startnode,-1,-1,-1); if (debug) { fprintf(stderr,"\n--------------END TOPFUNC------------\n"); printnode(stderr,startnode); } genblock(startnode,-1); if (opttree==1) { maketree(stderr,startnode); fprintf(stderr,";\n"); } if (debug) printnode(stderr,startnode); lastpass=0; gentype(startnode); do_warning=0; while (lastpass) { lastpass=0; gentype(startnode); } do_warning=1; if (debug>=2) { fprintf(stderr,"\n--------------END GENTYPE------------\n"); printnode(stderr,startnode); } gendeblock(startnode,-1,0,NULL,NULL); moveblock(startnode,-1,0,NULL,NULL); if (debug) { fprintf(stderr,"\n--------------END MOVEBLOCK------------\n"); printnode(stderr,startnode); } do { lastpass=0; varlist(startnode); } while(lastpass); if (!optcleanvar) cleanvar(startnode); pilelist(startnode); if (autogc) pileclean(startnode); if (optinfo) dump(stderr); if (!optcleanvar) cleanvar(startnode); cleancode(startnode,-1,left); if (tree[startnode].f==Fseq && tree[startnode].y==GNIL) startnode=tree[startnode].x; switch(opttree) { case 1: maketree(stderr,startnode); break; case 2: maketreeGRL(stderr,startnode); break; } if (debug) { fprintf(stderr,"\n--------------END CLEANCODE------------\n"); printnode(stderr,startnode); } indent=0; genheader(fout); gencode(fout,startnode); } void version(void) { printf("GP to C compiler version %s \n targeted at PARI/GP %s\n",VERSION,PARI_VERSION); printf("Copyright 2000-2018 The PARI Group\n"); printf("GP2C is free software, covered by the GNU General Public License, and \n\ you are welcome to change it and/or distribute copies of it under \n\ certain conditions. There is absolutely no warranty for GP2C.\n"); } void usage(FILE *fout, char *s) { fprintf(fout,"%s [-ghfltvydSWTGV] [-o ] [-i N] [-p ] [file.gp] \n\ GP to C translator. \n\ \n\ user option: \n\ -o : Place output in file . \n\ -g : Generate automatic garbage collection code. \n\ -iN: Set indentation level to N spaces (default 2). \n\ -W : Output warning about types and global variables usage. \n\ -C : Generate range checking code. \n\ -L : Generate #line directive for better C compiler messages. \n\ -p : Prefix user-defined symbol by to avoid conflict. \n\ -s : Add suffix to GP install names of functions. \n\ -S : Assume strict declarations for functions. \n\ query options: \n\ -h : This help. \n\ -f : Dump information about functions to stderr. \n\ -l : Output the list of functions known to the compiler. \n\ -t : Output the table of types known to the compiler. \n\ -v : Output version information and exit. \n\ debugging options: \n\ -d : Increase debugging level. \n\ -y : Switch parser to debug mode. \n\ -T : Output syntactic tree in treetool format. \n\ -TT: Output syntactic tree in VCG/GRL format. \n\ -G : Generate GP code in place of C code. Don't smile. \n\ -V : Do not clean up variables. \n\ \n\ file.gp: file to be processed, default to stdin. \n\ The generated C code is output to stdout unless the -o option is used \n\ \n\ See the script gp2c-run for an automated compilation process. \n\ ",s); } int main(int argc, char **argv) { int c; FILE *fin=stdin; FILE *fout=stdout; const char *infile = "stdin"; autogc = 0; safecoeff = 0; optprefix = NULL; optsuffix = NULL; outfile = NULL; optcleanvar = 0; opthashline = 0; optstrict = 0; indent = 0; indentlevel = 2; warn = 0; do_warning = 1; preclevel = 0; while((c=getopt(argc,argv,"gi:hflo:p:s:StvydCGLTVW"))!=-1) { switch(c) { case 'g': autogc=1-autogc; break; case 'i': indentlevel=atoi(optarg); break; case 'h': usage(stdout,argv[0]); exit(0); break; case 'f': optinfo=1-optinfo; break; case 'l': { const char *descfile; init_compiler(); if (!(descfile=getenv("GP2C_FUNC_DSC"))) descfile=FUNCDSC_PATH; initdesc(descfile); patchfunclist(); printlistfunc(fout); exit(0); } case 'o': outfile=strdup(optarg); break; case 'p': optprefix=strdup(optarg); break; case 's': optsuffix=strdup(optarg); break; case 'S': optstrict=1-optstrict; break; case 't': opttype=1-opttype; break; case 'v': version(); exit(0); case 'd': debug++; debug_stack=debug>1; break; case 'y': yydebug++; break; case 'T': opttree++; break; case 'G': optgen=1-optgen; break; case 'L': opthashline=1-opthashline; break; case 'V': optcleanvar=1-optcleanvar; break; case 'C': safecoeff=1-safecoeff; break; case 'W': warn=1-warn; break; case '?': usage(stderr,argv[0]); exit(1); break; } } if (argc-optind>1) { usage(stderr,argv[0]); exit(1); } if (argc!=optind) { infile = argv[optind]; if ((fin=fopen(infile,"r"))==NULL) { perror(argv[0]); exit(errno); } } if (outfile && ((fout=fopen(outfile,"w"))==NULL)) { perror(argv[0]); exit(errno); } compile(fin,fout,infile); if (fin!=stdin) fclose(fin); if (fout!=stdout) fclose(fout); return 0; } gp2c-0.0.12/src/varlist.c0000644000175000017500000001205213623476440011776 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" void varlistaff(int sava, int savc, stack *v) { affnode **an=(affnode **) stack_base(v); int i; v->n=0; for (i=sava;iflag&(1<initval>=0) { varlist(v->initval); newaff(AFassign,idx); } } void varlistfunc(int n,int fc) { gpfunc *gp=lfunc+fc; gpproto pro=gp->proto; const char *proto=pro.code; int i=0; char const *p=proto; char c; PPproto mod; int arg[STACKSZ]; int nb=genlistargs(n,arg,0,STACKSZ); gpdescarg *rule=gp->dsc?descfindrules(nb,arg,gp):NULL; if (rule) { for (i=0; inargs; i++) { switch(rule->args[i].t) { case AAlvalue: case AAreftype: { int v, a=detag(arg[i]); if (tree[a].f==Frefarg) a=tree[a].x; v=getvarerr(getlvaluerr(a)); newaff(AFrefarg,v); if (tree[a].f!=Fentry) newaff(AFassigncompo,v); break; } default: break; } } return; } if (!proto) return; while((mod=parseproto(&p,&c))) { switch(mod) { case PPdefault: if (i>=nb || arg[i]==GNOARG) { i++; break; } case PPauto: case PPstd: /* Fall through */ switch(c) { case '&': case '*': case 'W': { int v, a=detag(arg[i]); if (tree[a].f==Frefarg) a=tree[a].x; v=getvarerr(getlvaluerr(a)); newaff(AFrefarg,v); if (c=='W' || tree[a].f!=Fentry) newaff(AFassigncompo,v); break; } } i++; break; case PPdefaultmulti: i++; break; case PPstar: i=nb; break; default: die(n,"internal error: PPproto %d in varlistfunc",mod); } } if(ispec==GPuser) { userfunc *uf=gp->user; int base=lfunc[currfunc].user->savb;/*currfunc!=fc*/ int i; char *c; c=calloc(base,sizeof(*c)); for(i=0;iv.n;i++) { affnode *an=uf->var+i; if (an->idxidx].flag&(1<f!=AFaccess && an->f!=AFhide && c[an->idx]==0) { c[an->idx]=1; newaff(AFassign,an->idx); } } free(c); } else varlistfunc(n,fc); } break; case Fdeffunc: { int funcid=tree[n].x; const char *name=entryname(funcid); int savcf=currfunc; userfunc *uf; /*get func number and context*/ currfunc=findfunction(name); uf=lfunc[currfunc].user; savc=s_ctx.n; uf->savb=savc; sava=s_aff.n; varlist(y); nv=uf->v.n; varlistaff(sava,savc,&uf->v); if (nv!=uf->v.n) lastpass=1; currfunc=savcf; } break; case Fblock: savc=s_ctx.n; sava=s_aff.n; bl=block+tree[n].x; for (i=0;is.n;i++) { ctxvar *v=bl->c+i; int nv=getvarbyname(varstr(*v)); if (nv!=-1) newaff(AFhide,nv); } pushctx(bl); savb=s_ctx.n; for(i=0;is.n;i++) varlistvar(savc+i); varlist(y); nv=bl->v.n; varlistaff(sava,savb,&bl->v); if (nv!=bl->v.n) lastpass=1; bl->savb=savb; copyctx(savc,bl); s_ctx.n=savc; break; default: if (tree[n].f>=FneedENTRY) die(n,"Incorrect node %s in varlist",funcname(tree[n].f)); varlist(x); varlist(y); } } gp2c-0.0.12/src/parse.y0000644000175000017500000002057513623476440011463 00000000000000%{ /* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #define YYDEBUG 1 #include "config.h" #include #include #include #include "header.h" int yyerror(const char *s); int yylex(void); static int once=0; static int newcommand(int x, int y) { return (x==GNOARG)?y:(y==GNOARG)?x:newnode(Fseq,x,y); } %} %error-verbose %union { int val; strcom str; } %token KPARROW ")->" %token KARROW "->" %token KDOTDOT ".." %token KPE "+=" %token KSE "-=" %token KME "*=" %token KDE "/=" %token KDRE "\\/=" %token KEUCE "\\=" %token KMODE "%=" %token KAND "&&" %token KOR "||" %token KID "===" %token KEQ "==" %token KNE "!=" %token KGE ">=" %token KLE "<=" %token KSRE ">>=" %token KSLE "<<=" %token KSR ">>" %token KSL "<<" %token KDR "\\/" %token KPP "++" %token KSS "--" %token KINTEGER "integer" %token KREAL "real number" %token KENTRY "variable name" %token KSTRING "character string" %left '\n' %left SEQ DEFFUNC %left INT LVAL %right ")->" "->" %left ';' ',' %right '=' "+=" "-=" "*=" "/=" "\\/=" "\\=" "%=" ">>=" "<<=" %left '&' "&&" "||" %left "===" "==" "!=" '>' ">=" '<' "<=" %left '+' '-' %left '%' "\\/" '\\' '/' '*' ">>" "<<" %left SIGN %right '^' %left '#' %left '!' '~' '[' DERIV %left '\'' %left '.' MAT %left "++" "--" %left '(' %left ':' %type commands seq %type range matrix matrix_index expr exprno %type lvalue deriv %type matrixelts matrixeltsno matrixlines arg listarg definition %type funcid memberid %type backticks history %type compr in inseq %% commands: seq {$$=$1;} | commands '\n' seq {$$=newcommand($1,$3);} ; seq: /**/ %prec SEQ {$$=GNOARG;} | expr %prec SEQ {$$=$1;} | seq ';' {$$=$1;} | seq ';' expr {$$=newcommand($1,$3);} ; range: /* */ { $$=newnode(Frange,GNORANGE,GNORANGE); } | expr { $$=newnode(Frange,$1,GNORANGE); } | expr ".." expr { $$=newnode(Frange,$1,$3); } | '^' expr { $$=newnode(Frange,GNORANGE,$2); } ; matrix_index: '[' range ',' range ']' {$$=newnode(Fmatrix,$2,$4);} | '[' range ']' {$$=newnode(Fmatrix,$2,-1);} ; backticks: '`' {$$=1;} | backticks '`' {$$=$1+1;} ; history: '%' {$$=newopcall(OPhist,-1,-1);} | '%' KINTEGER {$$=newopcall(OPhist,newintnode($2.s,$2.c),-1);} | '%' backticks {$$=newopcall(OPhist,newnode(Fsmall,-$2,-1),-1);} | '%' '#' {$$=newopcall(OPhisttime,-1,-1);} | '%' '#' KINTEGER {$$=newopcall(OPhisttime,newintnode($3.s,$3.c),-1);} | '%' '#' backticks{$$=newopcall(OPhisttime,newnode(Fsmall,-$3,-1),-1);} ; deriv: '\'' {$$ = 1;} | deriv '\'' {$$ = $1+1;} ; expr: KINTEGER %prec INT {$$=newintnode($1.s,$1.c);} | KREAL {$$=newrealnode($1.s,$1.c);} | '.' {$$=newnode(Fconst,newsmallrealvalue(0),-1);} | KINTEGER '.' KENTRY {$$=newnodecom(Ffunction,newmember($3.s),newintnode($1.s,$1.c), $3.c);} | KSTRING {$$=newstringnode($1.s,$1.c);} | '\'' KENTRY {$$=newquotenode($2.s,$2.c);} | history {$$=$1;} | expr '(' listarg ')' {$$=newnode(Fcall,$1,$3);} | funcid {$$=$1;} | lvalue %prec LVAL {$$=$1;} | matrix {$$=$1;} | compr {$$=$1;} | definition {$$=$1;} | matrix '=' expr {$$=newnode(Fassign,$1,$3);} | lvalue '=' expr {$$=newnode(Fassign,$1,$3);} | lvalue "++" {$$=newopcall(OPpp,$1,-1);} | lvalue "--" {$$=newopcall(OPss,$1,-1);} | lvalue "*=" expr {$$=newopcall(OPme,$1,$3);} | lvalue "/=" expr {$$=newopcall(OPde,$1,$3);} | lvalue "\\/=" expr {$$=newopcall(OPdre,$1,$3);} | lvalue "\\=" expr {$$=newopcall(OPeuce,$1,$3);} | lvalue "%=" expr {$$=newopcall(OPmode,$1,$3);} | lvalue "<<=" expr {$$=newopcall(OPsle,$1,$3);} | lvalue ">>=" expr {$$=newopcall(OPsre,$1,$3);} | lvalue "+=" expr {$$=newopcall(OPpe,$1,$3);} | lvalue "-=" expr {$$=newopcall(OPse,$1,$3);} | '!' expr {$$=newopcall(OPnb,$2,-1);} | '#' expr {$$=newcall("length",$2);} | expr "||" expr {$$=newopcall(OPor,$1,$3);} | expr "&&" expr {$$=newopcall(OPand,$1,$3);} | expr '&' expr {$$=newopcall(OPand,$1,$3);} | expr "===" expr {$$=newopcall(OPid,$1,$3);} | expr "==" expr {$$=newopcall(OPeq,$1,$3);} | expr "!=" expr {$$=newopcall(OPne,$1,$3);} | expr ">=" expr {$$=newopcall(OPge,$1,$3);} | expr '>' expr {$$=newopcall(OPg,$1,$3);} | expr "<=" expr {$$=newopcall(OPle,$1,$3);} | expr '<' expr {$$=newopcall(OPl,$1,$3);} | expr '-' expr {$$=newopcall(OPs,$1,$3);} | expr '+' expr {$$=newopcall(OPp,$1,$3);} | expr "<<" expr {$$=newopcall(OPsl,$1,$3);} | expr ">>" expr {$$=newopcall(OPsr,$1,$3);} | expr '%' expr {$$=newopcall(OPmod,$1,$3);} | expr "\\/" expr {$$=newopcall(OPdr,$1,$3);} | expr '\\' expr {$$=newopcall(OPeuc,$1,$3);} | expr '/' expr {$$=newopcall(OPd,$1,$3);} | expr '*' expr {$$=newopcall(OPm,$1,$3);} | '+' expr %prec SIGN {$$=newopcall(OPpl,$2,-1);} | '-' expr %prec SIGN {$$=newopcall(OPn,$2,-1);} | expr '^' expr {$$=newopcall(OPpow,$1,$3);} | expr '~' {$$=newopcall(OPtrans,$1,-1);} | expr deriv %prec DERIV { $$=newderivn($1,$2); } | expr '!' {$$=newopcall(OPfact,$1,-1);} | expr matrix_index %prec MAT {$$=newnode(Fmatcoeff,$1,$2);} | memberid {$$=$1;} | expr ':' KENTRY {$$=newtag($1,$3.s,$3.c);} | '(' expr ')' {$$=$2;} ; lvalue: KENTRY %prec LVAL {$$=newnodecom(Fentry,newentry($1.s),-1,$1.c);} | lvalue matrix_index {$$=newnode(Fmatcoeff,$1,$2);} | lvalue ':' KENTRY {$$=newtag($1,$3.s,$3.c);} ; exprno: expr {$$=$1;} | /**/ {$$=GNOARG;} ; matrixeltsno: matrixelts {$$=$1;} | /**/ {$$=GNOARG;} ; matrixelts: expr {$$=$1;} | matrixeltsno ',' exprno {$$=newnode(Fmatrixelts,$1,$3);} ; matrixlines: matrixelts ';' matrixelts {$$=newnode(Fmatrixlines,$1,$3);} | matrixlines ';' matrixelts {$$=newnode(Fmatrixlines,$1,$3);} ; matrix: '[' ']' {$$=newnode(Fvec,-1,-1);} | '[' expr ".." expr ']' {$$=newopcall(OPrange,$2,$4);} | '[' ';' ']' {$$=newnode(Fmat,-1,-1);} | '[' matrixelts ']' {$$=newnode(Fvec,$2,-1);} | '[' matrixlines ']' {$$=newnode(Fmat,$2,-1);} | '[' error ']' {YYABORT;} ; in: lvalue '<' '-' expr {$$=newnode(Flistarg,$4,$1);} ; inseq: in {$$=newopcall(OPcompr,$1,-2);} | in ',' expr {$$=newopcall3(OPcompr,$1,-2,$3);} | in ';' inseq {$$=newopcall(OPcomprc,$1,$3);} | in ',' expr ';' inseq {$$=newopcall3(OPcomprc,$1,$5,$3);} ; compr: '[' expr '|' inseq ']' {$$=addcurrexpr($4,$2);} ; arg: seq {$$=$1;} | lvalue '[' ".." ']' {$$=newnode(Fvararg,$1,-1);} | '&' lvalue {$$=newnode(Frefarg,$2,-1);} | '~' lvalue {$$=newnode(Findarg,$2,-1);} | arg error {if (!once) { yyerrok; s_errors.n--;} once=1;} expr {once=0; $$=newopcall(OPcat,$1,$4);} ; listarg: arg {$$=$1;} | listarg ',' arg {$$=newnode(Flistarg,$1,$3);} ; funcid: KENTRY '(' listarg ')' {$$=newnodecom(Ffunction,newentry($1.s),$3,$1.c);} ; memberid: expr '.' KENTRY {$$=newnodecom(Ffunction,newmember($3.s),$1,$3.c);} ; definition: funcid '=' seq %prec DEFFUNC {$$=newnode(Fdeffunc,$1,$3);} | memberid '=' seq %prec DEFFUNC {$$=newnode(Fdeffunc,$1,$3);} | lvalue "->" seq {$$=newnode(Flambda, $1,$3);} | '(' listarg ")->" seq {$$=newnode(Flambda, $2,$4);} ; %% int yyerror(const char *s) { int n=stack_new(&s_errors); errors[n].fileno=filecount; errors[n].lineno=linecount; errors[n].txt=strdup(s); if (yydebug) fprintf(stderr,"%s:%d: %s\n",srcfile[filecount],linecount,s); return 0; } gp2c-0.0.12/src/parse.c0000644000175000017500000024154613623476455011446 00000000000000/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Copy the first part of user declarations. */ #line 1 "parse.y" /* yacc.c:339 */ /* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP 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. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #define YYDEBUG 1 #include "config.h" #include #include #include #include "header.h" int yyerror(const char *s); int yylex(void); static int once=0; static int newcommand(int x, int y) { return (x==GNOARG)?y:(y==GNOARG)?x:newnode(Fseq,x,y); } #line 96 "parse.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 1 #endif /* In a future release of Bison, this section will be replaced by #include "y.tab.h". */ #ifndef YY_YY_PARSE_H_INCLUDED # define YY_YY_PARSE_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { KPARROW = 258, KARROW = 259, KDOTDOT = 260, KPE = 261, KSE = 262, KME = 263, KDE = 264, KDRE = 265, KEUCE = 266, KMODE = 267, KAND = 268, KOR = 269, KID = 270, KEQ = 271, KNE = 272, KGE = 273, KLE = 274, KSRE = 275, KSLE = 276, KSR = 277, KSL = 278, KDR = 279, KPP = 280, KSS = 281, KINTEGER = 282, KREAL = 283, KENTRY = 284, KSTRING = 285, SEQ = 286, DEFFUNC = 287, INT = 288, LVAL = 289, SIGN = 290, DERIV = 291, MAT = 292 }; #endif /* Tokens. */ #define KPARROW 258 #define KARROW 259 #define KDOTDOT 260 #define KPE 261 #define KSE 262 #define KME 263 #define KDE 264 #define KDRE 265 #define KEUCE 266 #define KMODE 267 #define KAND 268 #define KOR 269 #define KID 270 #define KEQ 271 #define KNE 272 #define KGE 273 #define KLE 274 #define KSRE 275 #define KSLE 276 #define KSR 277 #define KSL 278 #define KDR 279 #define KPP 280 #define KSS 281 #define KINTEGER 282 #define KREAL 283 #define KENTRY 284 #define KSTRING 285 #define SEQ 286 #define DEFFUNC 287 #define INT 288 #define LVAL 289 #define SIGN 290 #define DERIV 291 #define MAT 292 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 31 "parse.y" /* yacc.c:355 */ int val; strcom str; #line 215 "parse.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; int yyparse (void); #endif /* !YY_YY_PARSE_H_INCLUDED */ /* Copy the second part of user declarations. */ #line 232 "parse.c" /* yacc.c:358 */ #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE # if (defined __GNUC__ \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C # define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else # define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif #ifndef YY_ATTRIBUTE_PURE # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) #endif #ifndef YY_ATTRIBUTE_UNUSED # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif #if !defined _Noreturn \ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) # if defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else # define YYUSE(E) /* empty */ #endif #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 49 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 736 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 64 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 24 /* YYNRULES -- Number of rules. */ #define YYNRULES 117 /* YYNSTATES -- Number of states. */ #define YYNSTATES 200 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 292 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 51, 2, 50, 2, 44, 39, 55, 58, 62, 47, 42, 37, 43, 56, 46, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 59, 36, 41, 38, 40, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 53, 45, 60, 49, 2, 61, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 63, 2, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 48, 54, 57 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { 0, 91, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 107, 108, 111, 112, 115, 116, 117, 118, 119, 120, 123, 124, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 189, 193, 194, 197, 198, 201, 202, 205, 206, 209, 210, 211, 212, 213, 214, 217, 220, 221, 222, 223, 226, 229, 230, 231, 232, 233, 233, 237, 238, 241, 244, 247, 249, 251, 252 }; #endif #if YYDEBUG || YYERROR_VERBOSE || 1 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "\")->\"", "\"->\"", "\"..\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"\\\\/=\"", "\"\\\\=\"", "\"%=\"", "\"&&\"", "\"||\"", "\"===\"", "\"==\"", "\"!=\"", "\">=\"", "\"<=\"", "\">>=\"", "\"<<=\"", "\">>\"", "\"<<\"", "\"\\\\/\"", "\"++\"", "\"--\"", "\"integer\"", "\"real number\"", "\"variable name\"", "\"character string\"", "'\\n'", "SEQ", "DEFFUNC", "INT", "LVAL", "';'", "','", "'='", "'&'", "'>'", "'<'", "'+'", "'-'", "'%'", "'\\\\'", "'/'", "'*'", "SIGN", "'^'", "'#'", "'!'", "'~'", "'['", "DERIV", "'\\''", "'.'", "MAT", "'('", "':'", "']'", "'`'", "')'", "'|'", "$accept", "commands", "seq", "range", "matrix_index", "backticks", "history", "deriv", "expr", "lvalue", "exprno", "matrixeltsno", "matrixelts", "matrixlines", "matrix", "in", "inseq", "compr", "arg", "$@1", "listarg", "funcid", "memberid", "definition", YY_NULLPTR }; #endif # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 10, 286, 287, 288, 289, 59, 44, 61, 38, 62, 60, 43, 45, 37, 92, 47, 42, 290, 94, 35, 33, 126, 91, 291, 39, 46, 292, 40, 58, 93, 96, 41, 124 }; # endif #define YYPACT_NINF -170 #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-170))) #define YYTABLE_NINF -112 #define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { 678, -33, -170, -38, -170, 678, 678, 59, 678, 678, 106, 5, -170, 642, 41, 40, -170, 510, 237, 56, -170, 57, 58, -170, 68, 642, 72, 72, -170, -17, -170, 44, 153, -31, 48, 50, -170, 179, 74, -21, -20, -170, 85, 85, 40, 365, 260, 6, 8, -170, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, -170, -170, 660, -170, 86, 642, 87, -170, 62, 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, -170, -170, 678, 93, -170, 678, 678, 678, -170, -25, -170, 44, -170, -170, -170, 678, 85, 678, 678, -170, 678, -170, -170, 34, 34, -170, 319, -170, 678, 642, 40, 510, 555, 555, 593, 593, 593, 593, 593, 72, 72, 72, 555, 593, 593, 609, 609, 72, 72, 72, 72, 72, 678, -18, 286, -170, -24, -170, -170, 40, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, -170, 510, 40, 40, -170, 415, -27, 53, 66, 510, -170, 510, 92, 92, 77, 678, 40, 30, 510, 660, -170, 678, -170, -170, 89, 85, 678, -170, -170, 510, 79, 510, 678, -170, 463, -170, 510, 85, -170 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 4, 24, 25, 81, 28, 0, 0, 16, 0, 0, 0, 0, 26, 4, 0, 2, 30, 5, 33, 34, 35, 32, 78, 36, 0, 4, 71, 72, 17, 19, 14, 18, 51, 50, 0, 0, 92, 88, 0, 86, 0, 29, 0, 0, 104, 5, 33, 0, 0, 1, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 74, 8, 22, 0, 4, 0, 77, 75, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 82, 0, 4, 4, 27, 0, 20, 21, 15, 97, 94, 0, 0, 85, 87, 95, 87, 96, 81, 106, 107, 80, 8, 108, 4, 4, 3, 7, 53, 52, 55, 56, 57, 58, 60, 65, 64, 67, 54, 59, 61, 63, 62, 66, 68, 69, 70, 73, 0, 0, 9, 113, 0, 79, 23, 116, 48, 49, 41, 42, 43, 44, 45, 47, 46, 38, 83, 37, 114, 115, 112, 0, 0, 99, 0, 84, 89, 88, 90, 91, 0, 0, 117, 0, 11, 8, 13, 0, 31, 93, 0, 0, 0, 103, 105, 109, 0, 10, 0, 101, 100, 12, 98, 0, 102 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -170, -170, 21, -39, -16, 115, -170, -170, -5, -7, -170, -170, -36, -170, -170, -170, -169, -170, 25, -170, -3, -170, -170, -170 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 14, 44, 144, 79, 31, 16, 80, 17, 18, 171, 38, 39, 40, 19, 168, 169, 20, 47, 176, 48, 21, 22, 23 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 26, 27, 95, 32, 33, 37, 46, 118, 45, -110, 101, 119, 120, 120, 185, 109, 111, 194, 46, 180, 25, 15, 100, 24, 75, 76, 74, 77, 78, 199, 95, 118, 94, -111, 41, 114, 115, 165, 183, 110, 112, 49, 181, -110, 30, 120, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, -111, -110, 145, 46, 121, 50, 173, 147, 174, 51, 151, 152, 153, 154, 155, 156, 157, 158, 159, 28, 74, 160, 186, 187, 162, -111, 94, 96, 97, 98, 99, 95, 95, 167, 166, 150, 170, 172, 103, 172, 34, 104, 29, 105, 108, 145, 46, 113, 146, 148, 149, 163, 164, 30, 71, 161, 72, 73, 74, 188, 75, 76, -86, 77, 78, 193, 1, 2, 3, 4, 189, 179, 196, 177, 191, 35, -87, 102, 178, 0, 0, 5, 6, 7, 95, 0, 0, 0, 0, 8, 9, 0, 10, 0, 11, 12, 0, 13, 0, 36, 0, 0, 0, 0, 190, 0, 0, 0, 145, 0, 192, 0, 167, 0, 0, 195, 0, 106, 0, 0, 0, 197, 0, 0, 167, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 72, 73, 74, 0, 75, 76, 0, 77, 78, 0, 0, 0, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 0, 0, 81, 107, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 91, 92, 81, 0, 82, 83, 84, 85, 86, 87, 88, 0, 0, 93, 0, 0, 0, 0, 89, 90, 0, 0, 0, 91, 92, 0, 0, 0, 74, 182, 0, 0, 0, 0, 94, 0, 93, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 117, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 175, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 0, 0, 0, 0, 143, 8, 9, 0, 10, 0, 11, 12, 0, 13, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 0, 0, 116, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 184, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 0, 65, 66, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 67, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 75, 76, 0, 77, 78, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 5, 6, 7, 1, 2, 3, 4, 0, 8, 9, 43, 10, 0, 11, 12, 0, 13, 0, 5, 6, 7, 1, 2, 3, 4, 143, 8, 9, 0, 10, 0, 11, 12, 0, 13, 0, 5, 6, 7, 0, 0, 0, 0, 0, 8, 9, 0, 10, 0, 11, 12, 0, 13 }; static const yytype_int16 yycheck[] = { 5, 6, 18, 8, 9, 10, 13, 1, 13, 3, 27, 3, 37, 37, 41, 36, 36, 186, 25, 37, 58, 0, 25, 56, 55, 56, 53, 58, 59, 198, 46, 1, 59, 3, 29, 42, 43, 62, 62, 60, 60, 0, 60, 37, 61, 37, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 37, 62, 74, 77, 50, 31, 109, 77, 111, 36, 82, 83, 84, 85, 86, 87, 88, 89, 90, 27, 53, 93, 36, 37, 96, 62, 59, 38, 38, 38, 29, 114, 115, 107, 106, 81, 108, 109, 61, 111, 1, 60, 50, 60, 37, 117, 120, 29, 29, 29, 55, 97, 98, 61, 49, 29, 51, 52, 53, 60, 55, 56, 37, 58, 59, 43, 27, 28, 29, 30, 60, 143, 60, 119, 180, 36, 37, 29, 120, -1, -1, 42, 43, 44, 167, -1, -1, -1, -1, 50, 51, -1, 53, -1, 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, 176, -1, -1, -1, 180, -1, 182, -1, 186, -1, -1, 187, -1, 5, -1, -1, -1, 193, -1, -1, 198, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, 51, 52, 53, -1, 55, 56, -1, 58, 59, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, -1, -1, 4, 63, 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, -1, 25, 26, 4, -1, 6, 7, 8, 9, 10, 11, 12, -1, -1, 38, -1, -1, -1, -1, 20, 21, -1, -1, -1, 25, 26, -1, -1, -1, 53, 5, -1, -1, -1, -1, 59, -1, 38, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, 53, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 5, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, 27, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, -1, -1, 49, 50, 51, -1, 53, -1, 55, 56, -1, 58, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, -1, -1, 62, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, 60, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, -1, 42, 43, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, 44, 45, 46, 47, -1, 49, -1, 51, 52, 53, -1, 55, 56, -1, 58, 59, 27, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, 27, 28, 29, 30, -1, 50, 51, 52, 53, -1, 55, 56, -1, 58, -1, 42, 43, 44, 27, 28, 29, 30, 49, 50, 51, -1, 53, -1, 55, 56, -1, 58, -1, 42, 43, 44, -1, -1, -1, -1, -1, 50, 51, -1, 53, -1, 55, 56, -1, 58 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 27, 28, 29, 30, 42, 43, 44, 50, 51, 53, 55, 56, 58, 65, 66, 70, 72, 73, 78, 81, 85, 86, 87, 56, 58, 72, 72, 27, 50, 61, 69, 72, 72, 1, 36, 60, 72, 75, 76, 77, 29, 39, 52, 66, 72, 73, 82, 84, 0, 31, 36, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 51, 52, 53, 55, 56, 58, 59, 68, 71, 4, 6, 7, 8, 9, 10, 11, 12, 20, 21, 25, 26, 38, 59, 68, 38, 38, 38, 29, 84, 27, 69, 61, 60, 60, 5, 63, 37, 36, 60, 36, 60, 29, 73, 73, 62, 53, 1, 3, 37, 66, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 49, 67, 72, 29, 84, 29, 55, 66, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 29, 72, 66, 66, 62, 72, 73, 79, 80, 72, 74, 72, 76, 76, 5, 83, 66, 82, 72, 37, 60, 5, 62, 60, 41, 36, 37, 60, 60, 72, 67, 72, 43, 80, 72, 60, 72, 36, 80 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 64, 65, 65, 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, 69, 69, 70, 70, 70, 70, 70, 70, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 78, 78, 78, 78, 79, 80, 80, 80, 80, 81, 82, 82, 82, 82, 83, 82, 84, 84, 85, 86, 87, 87, 87, 87 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 3, 0, 1, 2, 3, 0, 1, 3, 2, 5, 3, 1, 2, 1, 2, 2, 2, 3, 3, 1, 2, 1, 1, 1, 3, 1, 2, 1, 4, 1, 1, 1, 1, 1, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 2, 2, 2, 2, 1, 3, 3, 1, 2, 3, 1, 0, 1, 0, 1, 3, 3, 3, 2, 5, 3, 3, 3, 3, 4, 1, 3, 3, 5, 5, 1, 4, 2, 2, 0, 4, 1, 3, 4, 3, 3, 3, 3, 4 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*----------------------------------------. | Print this symbol's value on YYOUTPUT. | `----------------------------------------*/ static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { FILE *yyo = yyoutput; YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ static YYSIZE_T yystrlen (const char *yystr) { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); YY_IGNORE_MAYBE_UNINITIALIZED_END } /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ int yyparse (void) { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: 'yyss': related to states. 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = yylex (); } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 91 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 1558 "parse.c" /* yacc.c:1646 */ break; case 3: #line 92 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newcommand((yyvsp[-2].val),(yyvsp[0].val));} #line 1564 "parse.c" /* yacc.c:1646 */ break; case 4: #line 95 "parse.y" /* yacc.c:1646 */ {(yyval.val)=GNOARG;} #line 1570 "parse.c" /* yacc.c:1646 */ break; case 5: #line 96 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 1576 "parse.c" /* yacc.c:1646 */ break; case 6: #line 97 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[-1].val);} #line 1582 "parse.c" /* yacc.c:1646 */ break; case 7: #line 98 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newcommand((yyvsp[-2].val),(yyvsp[0].val));} #line 1588 "parse.c" /* yacc.c:1646 */ break; case 8: #line 101 "parse.y" /* yacc.c:1646 */ { (yyval.val)=newnode(Frange,GNORANGE,GNORANGE); } #line 1594 "parse.c" /* yacc.c:1646 */ break; case 9: #line 102 "parse.y" /* yacc.c:1646 */ { (yyval.val)=newnode(Frange,(yyvsp[0].val),GNORANGE); } #line 1600 "parse.c" /* yacc.c:1646 */ break; case 10: #line 103 "parse.y" /* yacc.c:1646 */ { (yyval.val)=newnode(Frange,(yyvsp[-2].val),(yyvsp[0].val)); } #line 1606 "parse.c" /* yacc.c:1646 */ break; case 11: #line 104 "parse.y" /* yacc.c:1646 */ { (yyval.val)=newnode(Frange,GNORANGE,(yyvsp[0].val)); } #line 1612 "parse.c" /* yacc.c:1646 */ break; case 12: #line 107 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmatrix,(yyvsp[-3].val),(yyvsp[-1].val));} #line 1618 "parse.c" /* yacc.c:1646 */ break; case 13: #line 108 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmatrix,(yyvsp[-1].val),-1);} #line 1624 "parse.c" /* yacc.c:1646 */ break; case 14: #line 111 "parse.y" /* yacc.c:1646 */ {(yyval.val)=1;} #line 1630 "parse.c" /* yacc.c:1646 */ break; case 15: #line 112 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[-1].val)+1;} #line 1636 "parse.c" /* yacc.c:1646 */ break; case 16: #line 115 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPhist,-1,-1);} #line 1642 "parse.c" /* yacc.c:1646 */ break; case 17: #line 116 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPhist,newintnode((yyvsp[0].str).s,(yyvsp[0].str).c),-1);} #line 1648 "parse.c" /* yacc.c:1646 */ break; case 18: #line 117 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPhist,newnode(Fsmall,-(yyvsp[0].val),-1),-1);} #line 1654 "parse.c" /* yacc.c:1646 */ break; case 19: #line 118 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPhisttime,-1,-1);} #line 1660 "parse.c" /* yacc.c:1646 */ break; case 20: #line 119 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPhisttime,newintnode((yyvsp[0].str).s,(yyvsp[0].str).c),-1);} #line 1666 "parse.c" /* yacc.c:1646 */ break; case 21: #line 120 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPhisttime,newnode(Fsmall,-(yyvsp[0].val),-1),-1);} #line 1672 "parse.c" /* yacc.c:1646 */ break; case 22: #line 123 "parse.y" /* yacc.c:1646 */ {(yyval.val) = 1;} #line 1678 "parse.c" /* yacc.c:1646 */ break; case 23: #line 124 "parse.y" /* yacc.c:1646 */ {(yyval.val) = (yyvsp[-1].val)+1;} #line 1684 "parse.c" /* yacc.c:1646 */ break; case 24: #line 127 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newintnode((yyvsp[0].str).s,(yyvsp[0].str).c);} #line 1690 "parse.c" /* yacc.c:1646 */ break; case 25: #line 128 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newrealnode((yyvsp[0].str).s,(yyvsp[0].str).c);} #line 1696 "parse.c" /* yacc.c:1646 */ break; case 26: #line 129 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fconst,newsmallrealvalue(0),-1);} #line 1702 "parse.c" /* yacc.c:1646 */ break; case 27: #line 130 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnodecom(Ffunction,newmember((yyvsp[0].str).s),newintnode((yyvsp[-2].str).s,(yyvsp[-2].str).c), (yyvsp[0].str).c);} #line 1709 "parse.c" /* yacc.c:1646 */ break; case 28: #line 132 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newstringnode((yyvsp[0].str).s,(yyvsp[0].str).c);} #line 1715 "parse.c" /* yacc.c:1646 */ break; case 29: #line 133 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newquotenode((yyvsp[0].str).s,(yyvsp[0].str).c);} #line 1721 "parse.c" /* yacc.c:1646 */ break; case 30: #line 134 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 1727 "parse.c" /* yacc.c:1646 */ break; case 31: #line 135 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fcall,(yyvsp[-3].val),(yyvsp[-1].val));} #line 1733 "parse.c" /* yacc.c:1646 */ break; case 32: #line 136 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 1739 "parse.c" /* yacc.c:1646 */ break; case 33: #line 137 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 1745 "parse.c" /* yacc.c:1646 */ break; case 34: #line 138 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 1751 "parse.c" /* yacc.c:1646 */ break; case 35: #line 139 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 1757 "parse.c" /* yacc.c:1646 */ break; case 36: #line 140 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 1763 "parse.c" /* yacc.c:1646 */ break; case 37: #line 141 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fassign,(yyvsp[-2].val),(yyvsp[0].val));} #line 1769 "parse.c" /* yacc.c:1646 */ break; case 38: #line 142 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fassign,(yyvsp[-2].val),(yyvsp[0].val));} #line 1775 "parse.c" /* yacc.c:1646 */ break; case 39: #line 143 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPpp,(yyvsp[-1].val),-1);} #line 1781 "parse.c" /* yacc.c:1646 */ break; case 40: #line 144 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPss,(yyvsp[-1].val),-1);} #line 1787 "parse.c" /* yacc.c:1646 */ break; case 41: #line 145 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPme,(yyvsp[-2].val),(yyvsp[0].val));} #line 1793 "parse.c" /* yacc.c:1646 */ break; case 42: #line 146 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPde,(yyvsp[-2].val),(yyvsp[0].val));} #line 1799 "parse.c" /* yacc.c:1646 */ break; case 43: #line 147 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPdre,(yyvsp[-2].val),(yyvsp[0].val));} #line 1805 "parse.c" /* yacc.c:1646 */ break; case 44: #line 148 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPeuce,(yyvsp[-2].val),(yyvsp[0].val));} #line 1811 "parse.c" /* yacc.c:1646 */ break; case 45: #line 149 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPmode,(yyvsp[-2].val),(yyvsp[0].val));} #line 1817 "parse.c" /* yacc.c:1646 */ break; case 46: #line 150 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPsle,(yyvsp[-2].val),(yyvsp[0].val));} #line 1823 "parse.c" /* yacc.c:1646 */ break; case 47: #line 151 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPsre,(yyvsp[-2].val),(yyvsp[0].val));} #line 1829 "parse.c" /* yacc.c:1646 */ break; case 48: #line 152 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPpe,(yyvsp[-2].val),(yyvsp[0].val));} #line 1835 "parse.c" /* yacc.c:1646 */ break; case 49: #line 153 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPse,(yyvsp[-2].val),(yyvsp[0].val));} #line 1841 "parse.c" /* yacc.c:1646 */ break; case 50: #line 154 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPnb,(yyvsp[0].val),-1);} #line 1847 "parse.c" /* yacc.c:1646 */ break; case 51: #line 155 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newcall("length",(yyvsp[0].val));} #line 1853 "parse.c" /* yacc.c:1646 */ break; case 52: #line 156 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPor,(yyvsp[-2].val),(yyvsp[0].val));} #line 1859 "parse.c" /* yacc.c:1646 */ break; case 53: #line 157 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPand,(yyvsp[-2].val),(yyvsp[0].val));} #line 1865 "parse.c" /* yacc.c:1646 */ break; case 54: #line 158 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPand,(yyvsp[-2].val),(yyvsp[0].val));} #line 1871 "parse.c" /* yacc.c:1646 */ break; case 55: #line 159 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPid,(yyvsp[-2].val),(yyvsp[0].val));} #line 1877 "parse.c" /* yacc.c:1646 */ break; case 56: #line 160 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPeq,(yyvsp[-2].val),(yyvsp[0].val));} #line 1883 "parse.c" /* yacc.c:1646 */ break; case 57: #line 161 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPne,(yyvsp[-2].val),(yyvsp[0].val));} #line 1889 "parse.c" /* yacc.c:1646 */ break; case 58: #line 162 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPge,(yyvsp[-2].val),(yyvsp[0].val));} #line 1895 "parse.c" /* yacc.c:1646 */ break; case 59: #line 163 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPg,(yyvsp[-2].val),(yyvsp[0].val));} #line 1901 "parse.c" /* yacc.c:1646 */ break; case 60: #line 164 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPle,(yyvsp[-2].val),(yyvsp[0].val));} #line 1907 "parse.c" /* yacc.c:1646 */ break; case 61: #line 165 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPl,(yyvsp[-2].val),(yyvsp[0].val));} #line 1913 "parse.c" /* yacc.c:1646 */ break; case 62: #line 166 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPs,(yyvsp[-2].val),(yyvsp[0].val));} #line 1919 "parse.c" /* yacc.c:1646 */ break; case 63: #line 167 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPp,(yyvsp[-2].val),(yyvsp[0].val));} #line 1925 "parse.c" /* yacc.c:1646 */ break; case 64: #line 168 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPsl,(yyvsp[-2].val),(yyvsp[0].val));} #line 1931 "parse.c" /* yacc.c:1646 */ break; case 65: #line 169 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPsr,(yyvsp[-2].val),(yyvsp[0].val));} #line 1937 "parse.c" /* yacc.c:1646 */ break; case 66: #line 170 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPmod,(yyvsp[-2].val),(yyvsp[0].val));} #line 1943 "parse.c" /* yacc.c:1646 */ break; case 67: #line 171 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPdr,(yyvsp[-2].val),(yyvsp[0].val));} #line 1949 "parse.c" /* yacc.c:1646 */ break; case 68: #line 172 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPeuc,(yyvsp[-2].val),(yyvsp[0].val));} #line 1955 "parse.c" /* yacc.c:1646 */ break; case 69: #line 173 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPd,(yyvsp[-2].val),(yyvsp[0].val));} #line 1961 "parse.c" /* yacc.c:1646 */ break; case 70: #line 174 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPm,(yyvsp[-2].val),(yyvsp[0].val));} #line 1967 "parse.c" /* yacc.c:1646 */ break; case 71: #line 175 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPpl,(yyvsp[0].val),-1);} #line 1973 "parse.c" /* yacc.c:1646 */ break; case 72: #line 176 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPn,(yyvsp[0].val),-1);} #line 1979 "parse.c" /* yacc.c:1646 */ break; case 73: #line 177 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPpow,(yyvsp[-2].val),(yyvsp[0].val));} #line 1985 "parse.c" /* yacc.c:1646 */ break; case 74: #line 178 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPtrans,(yyvsp[-1].val),-1);} #line 1991 "parse.c" /* yacc.c:1646 */ break; case 75: #line 179 "parse.y" /* yacc.c:1646 */ { (yyval.val)=newderivn((yyvsp[-1].val),(yyvsp[0].val)); } #line 1997 "parse.c" /* yacc.c:1646 */ break; case 76: #line 180 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPfact,(yyvsp[-1].val),-1);} #line 2003 "parse.c" /* yacc.c:1646 */ break; case 77: #line 181 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmatcoeff,(yyvsp[-1].val),(yyvsp[0].val));} #line 2009 "parse.c" /* yacc.c:1646 */ break; case 78: #line 182 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 2015 "parse.c" /* yacc.c:1646 */ break; case 79: #line 183 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newtag((yyvsp[-2].val),(yyvsp[0].str).s,(yyvsp[0].str).c);} #line 2021 "parse.c" /* yacc.c:1646 */ break; case 80: #line 184 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[-1].val);} #line 2027 "parse.c" /* yacc.c:1646 */ break; case 81: #line 187 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnodecom(Fentry,newentry((yyvsp[0].str).s),-1,(yyvsp[0].str).c);} #line 2033 "parse.c" /* yacc.c:1646 */ break; case 82: #line 188 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmatcoeff,(yyvsp[-1].val),(yyvsp[0].val));} #line 2039 "parse.c" /* yacc.c:1646 */ break; case 83: #line 189 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newtag((yyvsp[-2].val),(yyvsp[0].str).s,(yyvsp[0].str).c);} #line 2045 "parse.c" /* yacc.c:1646 */ break; case 84: #line 193 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 2051 "parse.c" /* yacc.c:1646 */ break; case 85: #line 194 "parse.y" /* yacc.c:1646 */ {(yyval.val)=GNOARG;} #line 2057 "parse.c" /* yacc.c:1646 */ break; case 86: #line 197 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 2063 "parse.c" /* yacc.c:1646 */ break; case 87: #line 198 "parse.y" /* yacc.c:1646 */ {(yyval.val)=GNOARG;} #line 2069 "parse.c" /* yacc.c:1646 */ break; case 88: #line 201 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 2075 "parse.c" /* yacc.c:1646 */ break; case 89: #line 202 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmatrixelts,(yyvsp[-2].val),(yyvsp[0].val));} #line 2081 "parse.c" /* yacc.c:1646 */ break; case 90: #line 205 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmatrixlines,(yyvsp[-2].val),(yyvsp[0].val));} #line 2087 "parse.c" /* yacc.c:1646 */ break; case 91: #line 206 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmatrixlines,(yyvsp[-2].val),(yyvsp[0].val));} #line 2093 "parse.c" /* yacc.c:1646 */ break; case 92: #line 209 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fvec,-1,-1);} #line 2099 "parse.c" /* yacc.c:1646 */ break; case 93: #line 210 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPrange,(yyvsp[-3].val),(yyvsp[-1].val));} #line 2105 "parse.c" /* yacc.c:1646 */ break; case 94: #line 211 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmat,-1,-1);} #line 2111 "parse.c" /* yacc.c:1646 */ break; case 95: #line 212 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fvec,(yyvsp[-1].val),-1);} #line 2117 "parse.c" /* yacc.c:1646 */ break; case 96: #line 213 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fmat,(yyvsp[-1].val),-1);} #line 2123 "parse.c" /* yacc.c:1646 */ break; case 97: #line 214 "parse.y" /* yacc.c:1646 */ {YYABORT;} #line 2129 "parse.c" /* yacc.c:1646 */ break; case 98: #line 217 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Flistarg,(yyvsp[0].val),(yyvsp[-3].val));} #line 2135 "parse.c" /* yacc.c:1646 */ break; case 99: #line 220 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPcompr,(yyvsp[0].val),-2);} #line 2141 "parse.c" /* yacc.c:1646 */ break; case 100: #line 221 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall3(OPcompr,(yyvsp[-2].val),-2,(yyvsp[0].val));} #line 2147 "parse.c" /* yacc.c:1646 */ break; case 101: #line 222 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall(OPcomprc,(yyvsp[-2].val),(yyvsp[0].val));} #line 2153 "parse.c" /* yacc.c:1646 */ break; case 102: #line 223 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newopcall3(OPcomprc,(yyvsp[-4].val),(yyvsp[0].val),(yyvsp[-2].val));} #line 2159 "parse.c" /* yacc.c:1646 */ break; case 103: #line 226 "parse.y" /* yacc.c:1646 */ {(yyval.val)=addcurrexpr((yyvsp[-1].val),(yyvsp[-3].val));} #line 2165 "parse.c" /* yacc.c:1646 */ break; case 104: #line 229 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 2171 "parse.c" /* yacc.c:1646 */ break; case 105: #line 230 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fvararg,(yyvsp[-3].val),-1);} #line 2177 "parse.c" /* yacc.c:1646 */ break; case 106: #line 231 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Frefarg,(yyvsp[0].val),-1);} #line 2183 "parse.c" /* yacc.c:1646 */ break; case 107: #line 232 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Findarg,(yyvsp[0].val),-1);} #line 2189 "parse.c" /* yacc.c:1646 */ break; case 108: #line 233 "parse.y" /* yacc.c:1646 */ {if (!once) { yyerrok; s_errors.n--;} once=1;} #line 2195 "parse.c" /* yacc.c:1646 */ break; case 109: #line 234 "parse.y" /* yacc.c:1646 */ {once=0; (yyval.val)=newopcall(OPcat,(yyvsp[-3].val),(yyvsp[0].val));} #line 2201 "parse.c" /* yacc.c:1646 */ break; case 110: #line 237 "parse.y" /* yacc.c:1646 */ {(yyval.val)=(yyvsp[0].val);} #line 2207 "parse.c" /* yacc.c:1646 */ break; case 111: #line 238 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Flistarg,(yyvsp[-2].val),(yyvsp[0].val));} #line 2213 "parse.c" /* yacc.c:1646 */ break; case 112: #line 241 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnodecom(Ffunction,newentry((yyvsp[-3].str).s),(yyvsp[-1].val),(yyvsp[-3].str).c);} #line 2219 "parse.c" /* yacc.c:1646 */ break; case 113: #line 244 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnodecom(Ffunction,newmember((yyvsp[0].str).s),(yyvsp[-2].val),(yyvsp[0].str).c);} #line 2225 "parse.c" /* yacc.c:1646 */ break; case 114: #line 248 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fdeffunc,(yyvsp[-2].val),(yyvsp[0].val));} #line 2231 "parse.c" /* yacc.c:1646 */ break; case 115: #line 250 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Fdeffunc,(yyvsp[-2].val),(yyvsp[0].val));} #line 2237 "parse.c" /* yacc.c:1646 */ break; case 116: #line 251 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Flambda, (yyvsp[-2].val),(yyvsp[0].val));} #line 2243 "parse.c" /* yacc.c:1646 */ break; case 117: #line 252 "parse.y" /* yacc.c:1646 */ {(yyval.val)=newnode(Flambda, (yyvsp[-2].val),(yyvsp[0].val));} #line 2249 "parse.c" /* yacc.c:1646 */ break; #line 2253 "parse.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif return yyresult; } #line 255 "parse.y" /* yacc.c:1906 */ int yyerror(const char *s) { int n=stack_new(&s_errors); errors[n].fileno=filecount; errors[n].lineno=linecount; errors[n].txt=strdup(s); if (yydebug) fprintf(stderr,"%s:%d: %s\n",srcfile[filecount],linecount,s); return 0; } gp2c-0.0.12/configure.ac0000644000175000017500000001454613743645740011663 00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT([gp2c], [0.0.12]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_SRCDIR([src/gp2c.c]) AM_INIT_AUTOMAKE([serial-tests]) AM_MAINTAINER_MODE dnl Be nice with packagers. AM_CONFIG_HEADER(src/config.h) dnl Checks for programs. AC_PROG_CC AM_PROG_LEX AC_PROG_YACC dnl look for perl AC_ARG_WITH(perl, [ --with-perl[=FILE] Perl is needed to compile the description files. But gp2c comes with precompiled descriptions for PARI 2.9, so can be used without perl. Default is to use perl if we find it. You can specify the path to perl with --with-perl=PATH.]) if test "$with_perl" = "no"; then PERL_PATH=/bin/false elif test -x "$with_perl"; then PERL_PATH="$with_perl" else AC_PATH_PROG(PERL_PATH,perl,/bin/false) fi dnl check for PARI configuration AC_ARG_WITH(paricfg, [ --with-paricfg[=FILE] Details about PARI configuration are needed to build plug-ins. Without them, gp2c itself can be compiled, but gp2c-run and 'make check' will not work. You must specify the path to the 'pari.cfg' file with --with-paricfg=PATH.]) AC_MSG_CHECKING(for multiarch system) multiarch=`$CC $CFLAGS -print-multiarch 2>/dev/null` AC_MSG_RESULT($multiarch) if test "$with_paricfg" = "no" ; then PARI_CONFIG= else AC_MSG_CHECKING(for PARI configuration) if test "$with_paricfg" = "yes" || test "x$with_paricfg" = "x" ; then for i in /usr/lib/pari/pari.cfg \ "/usr/lib/$multiarch/pari/pari.cfg" \ /usr/local/lib/pari/pari.cfg \ "$srcdir/../pari.cfg" \ "$srcdir/pari.cfg" do if test -f "$i"; then PARI_CONFIG="$i"; fi; done; else test -f "$with_paricfg" && PARI_CONFIG="$with_paricfg" fi if test "x$with_paricfg" != "x" && test "x$PARI_CONFIG" = "x" ; then AC_MSG_ERROR([pari.cfg file not found. Please use --with-paricfg=PATH where PATH is the path to pari.cfg or dft.Config.in file.]) fi if test "x$PARI_CONFIG" = "x"; then AC_MSG_RESULT([not found]) else AC_MSG_RESULT($PARI_CONFIG) fi fi AC_ARG_WITH(paricfg-dbg, [ --with-paricfg-dbg[=FILE] gp2c-dbg is more useful with the debugging version of PARI. You can specify the path to the 'pari.cfg' file of a debugging version with --with-paricfg-dbg=PATH while still using the optimised version with gp2c-run. ]) if test "$with_paricfg_dbg" = "no" ; then PARI_CONFIG_DBG= else AC_MSG_CHECKING([for PARI configuration (debugging)]) if test "$with_paricfg_dbg" = "yes" || test "x$with_paricfg_dbg" = "x" ; then for i in /usr/lib/pari/pari.cfg \ "/usr/lib/$multiarch/pari/pari.cfg" \ /usr/local/lib/pari/pari.cfg \ "$srcdir/../pari.cfg" \ "$srcdir/pari.cfg" do if test -f "$i.dbg"; then PARI_CONFIG_DBG="$i.dbg"; fi; done; else test -f "$with_paricfg_dbg" && PARI_CONFIG_DBG="$with_paricfg_dbg" fi if test "x$with_paricfg_dbg" != "x" && test "x$PARI_CONFIG_DBG" = "x" ; then AC_MSG_ERROR([pari.cfg[.dbg] file not found. Please use --with-paricfg-dbg=PATH where PATH is the path to pari.cfg[.dbg] or dft.Config.in file.]) fi if test "x$PARI_CONFIG_DBG" = "x"; then AC_MSG_RESULT([not found]) else AC_MSG_RESULT($PARI_CONFIG_DBG) fi fi if test "x$PARI_CONFIG" != "x" ; then AC_MSG_CHECKING(for PARI version) PARI_VERSION=`$srcdir/config/pari-version $PARI_CONFIG` AC_MSG_RESULT($PARI_VERSION) AC_MSG_CHECKING(for PARI module build) PARI_MODULE_BUILD=`$srcdir/config/module-build $PARI_CONFIG` AC_MSG_RESULT($PARI_MODULE_BUILD) AC_MSG_CHECKING(for GP path) GP_PATH=`$srcdir/config/pari-conf $PARI_CONFIG bindir`/gp AC_MSG_RESULT($GP_PATH) AC_MSG_CHECKING(for PARI data directory) PARI_DATADIR=`$srcdir/config/pari-conf $PARI_CONFIG datadir` AC_MSG_RESULT($PARI_DATADIR) AC_MSG_CHECKING(for PARI description database) PARI_DESC="$PARI_DATADIR/pari.desc"; if test -f "$PARI_DESC"; then AC_MSG_RESULT($PARI_DESC) else AC_MSG_RESULT([not found]) PARI_DESC= fi else PARI_VERSION='2.13.x (released)' PARI_MODULE_BUILD="`pwd`/$srcdir/config/missing $PARI_CONF"; GP_PATH="gp" fi if test "x$PARI_CONFIG_DBG" != "x" ; then AC_MSG_CHECKING([for PARI module build (debugging)]) PARI_MODULE_DEBUG=`$srcdir/config/module-build $PARI_CONFIG_DBG` AC_MSG_RESULT($PARI_MODULE_DEBUG) AC_MSG_CHECKING([for GP path (debugging)]) GP_PATH_DBG=`$srcdir/config/pari-conf $PARI_CONFIG_DBG bindir`/gp AC_MSG_RESULT($GP_PATH_DBG) GP2C_DBG="gp2c-dbg" GP2C_DBG1="gp2c-dbg.1" else PARI_MODULE_DEBUG=$PARI_MODULE_BUILD GP_PATH_DBG=$GP_PATH GP2C_DBG="" GP2C_DBG1="" fi AC_DEFINE_UNQUOTED(PARI_VERSION,"$PARI_VERSION",[target PARI version]) AC_DEFINE_UNQUOTED(PARI_MODULE_BUILD,"$PARI_MODULE_BUILD",[target PARI module build]) AC_SUBST(PARI_VERSION) AC_SUBST(PARI_MODULE_BUILD) AC_SUBST(GP_PATH) AC_SUBST(PARI_DATADIR) AC_SUBST(PARI_DESC) AC_SUBST(PARI_MODULE_DEBUG) AC_SUBST(GP_PATH_DBG) AC_SUBST(GP2C_DBG) AC_SUBST(GP2C_DBG1) dnl RUNTEST AC_MSG_CHECKING([for RUNTEST (if needed)]) if test "x$RUNTEST" = "x" && test "x$PARI_CONFIG" != "x" ; then PARI_RUNTEST=`$srcdir/config/pari-conf $PARI_CONFIG RUNTEST` else PARI_RUNTEST="$RUNTEST" fi AC_MSG_RESULT($PARI_RUNTEST) AC_SUBST(PARI_RUNTEST) dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(malloc.h unistd.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T AC_STRUCT_TM dnl Checks for library functions. AC_FUNC_VPRINTF AC_CHECK_FUNCS(strdup strtol getopt strcmp memccpy strrchr) dnl How to use echo ECHON=${ECHO_N-"$ac_n"} ECHOC=${ECHO_C-"$ac_c"} ECHOT=${ECHO_T-"$ac_t"} AC_SUBST(ECHON) AC_SUBST(ECHOC) AC_SUBST(ECHOT) if test "$bindir" = '${exec_prefix}/bin'; then if test "x${exec_prefix}" != xNONE; then mybindir=${exec_prefix}/bin elif test "x${prefix}" != xNONE; then mybindir=${prefix}/bin else mybindir=${ac_default_prefix}/bin fi else mybindir=$bindir fi AC_SUBST(mybindir) AC_OUTPUT([Makefile src/Makefile desc/Makefile doc/Makefile test/Makefile test2/Makefile test3/Makefile test4/Makefile scripts/Makefile scripts/822_desc.pl scripts/runtest scripts/dotest scripts/gp2c-run scripts/gp2c-dbg doc/gp2c-run.1 doc/gp2c-dbg.1],[chmod a+x scripts/822_desc.pl scripts/runtest scripts/dotest scripts/gp2c-run scripts/gp2c-dbg]) gp2c-0.0.12/test4/0000755000175000017500000000000013751742702010501 500000000000000gp2c-0.0.12/test4/Makefile.am0000644000175000017500000000020613661772727012465 00000000000000mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) gp2c-0.0.12/test4/input/0000755000175000017500000000000013623476440011641 500000000000000gp2c-0.0.12/test4/input/precision0000644000175000017500000000001713623476440013475 00000000000000t1(54) t2(120) gp2c-0.0.12/test4/input/forperm0000644000175000017500000000001013623476440013145 00000000000000g() h() gp2c-0.0.12/test4/input/forprimestep0000644000175000017500000000004313623476440014220 00000000000000fun(5,101) test1() test2() test3() gp2c-0.0.12/test4/input/forsubset0000644000175000017500000000001613623476440013515 00000000000000g(4) h([4,2]) gp2c-0.0.12/test4/input/fordivfactored0000644000175000017500000000001213623476440014476 00000000000000test(100) gp2c-0.0.12/test4/Makefile.in0000644000175000017500000002710413751742674012502 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = test4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test4/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test4/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) # 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: gp2c-0.0.12/test4/gp/0000755000175000017500000000000013623476440011110 500000000000000gp2c-0.0.12/test4/gp/precision.gp0000644000175000017500000000020113623476440013344 00000000000000t1(n)= { localprec(n); [precision(1.),bitprecision(1.)]; } t2(n)= { localbitprec(n); [precision(1.),bitprecision(1.)]; } gp2c-0.0.12/test4/gp/forsubset.gp0000644000175000017500000000010513623476440013370 00000000000000g(n:small)=forsubset(n,s,print(s)); h(v:vec)=forsubset(v,s,print(s)) gp2c-0.0.12/test4/gp/forperm.gp0000644000175000017500000000011413623476440013026 00000000000000g() = for(i=1,3,forperm(i,p,print(p))) h() = forperm([2,1,1,3], p,print(p)) gp2c-0.0.12/test4/gp/forprimestep.gp0000644000175000017500000000046013623476440014077 00000000000000fun(a,b)= { forprimestep(p=a,b,Mod(1,4), print(sqrt(Mod(-1,p)))) } test1()=forprimestep(n=2,100,5,if(n>20,break);print(n)) test2()=forprimestep(n=2,,5,if(n>20,break);print(n)) test3()=forprimestep(n=2,oo,5,if(n>20,break);print(n)) test4()=forprimestep(n=2^100,,Mod(1,3),if(n>2^100+400,break);print(n)) gp2c-0.0.12/test4/gp/fordivfactored.gp0000644000175000017500000000005113623476440014355 00000000000000test(N) = fordivfactored(N, d, print(d)) gp2c-0.0.12/test4/res/0000755000175000017500000000000013623476440011273 500000000000000gp2c-0.0.12/test4/res/fordivfactored.res0000644000175000017500000000024313623476440014726 00000000000000[1, matrix(0,2)] [2, Mat([2, 1])] [4, Mat([2, 2])] [5, Mat([5, 1])] [10, [2, 1; 5, 1]] [20, [2, 2; 5, 1]] [25, Mat([5, 2])] [50, [2, 1; 5, 2]] [100, [2, 2; 5, 2]] gp2c-0.0.12/test4/res/forprimestep.res0000644000175000017500000000024013623476440014441 00000000000000Mod(2, 5) Mod(5, 13) Mod(4, 17) Mod(12, 29) Mod(6, 37) Mod(9, 41) Mod(23, 53) Mod(11, 61) Mod(27, 73) Mod(34, 89) Mod(22, 97) Mod(10, 101) 2 7 17 2 7 17 2 7 17 gp2c-0.0.12/test4/res/precision.res0000644000175000017500000000002413623476440013715 00000000000000[57, 192] [38, 128] gp2c-0.0.12/test4/res/forperm.res0000644000175000017500000000046213623476440013402 00000000000000Vecsmall([1]) Vecsmall([1, 2]) Vecsmall([2, 1]) Vecsmall([1, 2, 3]) Vecsmall([1, 3, 2]) Vecsmall([2, 1, 3]) Vecsmall([2, 3, 1]) Vecsmall([3, 1, 2]) Vecsmall([3, 2, 1]) Vecsmall([2, 1, 1, 3]) Vecsmall([2, 1, 3, 1]) Vecsmall([2, 3, 1, 1]) Vecsmall([3, 1, 1, 2]) Vecsmall([3, 1, 2, 1]) Vecsmall([3, 2, 1, 1]) gp2c-0.0.12/test4/res/forsubset.res0000644000175000017500000000057013623476440013744 00000000000000Vecsmall([]) Vecsmall([1]) Vecsmall([2]) Vecsmall([3]) Vecsmall([4]) Vecsmall([1, 2]) Vecsmall([1, 3]) Vecsmall([1, 4]) Vecsmall([2, 3]) Vecsmall([2, 4]) Vecsmall([3, 4]) Vecsmall([1, 2, 3]) Vecsmall([1, 2, 4]) Vecsmall([1, 3, 4]) Vecsmall([2, 3, 4]) Vecsmall([1, 2, 3, 4]) Vecsmall([1, 2]) Vecsmall([1, 3]) Vecsmall([1, 4]) Vecsmall([2, 3]) Vecsmall([2, 4]) Vecsmall([3, 4]) gp2c-0.0.12/test/0000755000175000017500000000000013751742702010415 500000000000000gp2c-0.0.12/test/Makefile.am0000644000175000017500000000020613661773534012376 00000000000000mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) gp2c-0.0.12/test/input/0000755000175000017500000000000013653241564011555 500000000000000gp2c-0.0.12/test/input/gerepile0000644000175000017500000000016013653241564013211 00000000000000f1() f2() g1() g2() h1() h2() k1() k2() l1() l2() m1() m2() n1() n2() o1("gp2c") k(Vecsmall([1,2,3,4])) gp2c-0.0.12/test/input/read0000644000175000017500000000024613614057635012336 00000000000000\\?randprime \\?buildkey v=buildkey(128); publickey=v[1]; privatekey=v[2]; clear=gp2crand(2^128) crypted=crypt(clear,publickey) decrypted=decrypt(crypted,privatekey) gp2c-0.0.12/test/input/affect0000644000175000017500000000021313614057540012640 00000000000000f(5) f(3) A=[1,2];B=mathilbert(4); g(A,B) A print(B) th() ml(2) B=matpascal(1) col(B,1,A~) B lin(B,2,A) B col(B,-1,A) v=[4,9,1,3]; tr(v) v gp2c-0.0.12/test/input/args0000644000175000017500000000026613614057635012361 00000000000000f(1) g(,[[5,4,1,2,3],[5,1,4,3,2],[5,3,1,4,2],[5,1,2,4,3],[5,1,3,2,4]]) g([2,5,4,1,3],) g([2,5,4,1,3],[[5,4,1,2,3],[5,1,4,3,2],[5,3,1,4,2],[5,1,2,4,3],[5,1,3,2,4]]) testh() s("ab") gp2c-0.0.12/test/input/moveblock0000644000175000017500000000010611751724575013403 00000000000000f([3,1,4,1,5]) g(2) k(12) l([1,2,3]) l([4,5,6]) m(12) o([1,2,3]) n(3) gp2c-0.0.12/test/input/initfunc0000644000175000017500000000036613623476440013244 00000000000000init_initfunc(); print(pow_M(2)) vector(100,i,mybfffo(i)) vector(31,i,mybfffo(1<<(i-1))) for(i=1,5,count();aff()) init_initfunc();f1(0) init_initfunc();f1(1) init_initfunc();f2(0) init_initfunc();f2(1) init_initfunc();f3(0) init_initfunc();f3(1) gp2c-0.0.12/test/input/print0000644000175000017500000000003211751724575012554 00000000000000f(x^4+1) f(mathilbert(3)) gp2c-0.0.12/test/input/trunc0000644000175000017500000000002611751724575012556 00000000000000f(Pi) g(Pi) h(Pi) k() gp2c-0.0.12/test/input/vector0000644000175000017500000000001211751724575012720 00000000000000f(15) g() gp2c-0.0.12/test/input/forstep0000644000175000017500000000011213623476440013074 00000000000000f(100) g(-2) g(2) h() k([2,3,5,7],100) k([1,-1,2],10) k([1,1,-3],-10) l() gp2c-0.0.12/test/input/foreach0000644000175000017500000000007413623476440013030 00000000000000t([]); t(List()); t(Mat()); t(primes([1,100])); t(matid(3)) gp2c-0.0.12/test/input/cast0000644000175000017500000000004613623476440012352 00000000000000f(45) g(1.3,1.8) h([Vecsmall([0,0])]) gp2c-0.0.12/test/input/dot0000644000175000017500000000004112141547407012175 00000000000000default(realprecision,38); dot() gp2c-0.0.12/test/input/multiif0000644000175000017500000000005013614057635013065 00000000000000for(i=1,4,f(i)); for(i=1,4,g([i,i+1])); gp2c-0.0.12/test/input/member0000644000175000017500000000003113162716330012652 00000000000000polmod(Mod(x^2+1,x^3-2)) gp2c-0.0.12/test/input/break0000644000175000017500000000006213646611246012502 00000000000000f(65) for(i=2,20,print(Miller_Rabin(i))) Pzaks(4) gp2c-0.0.12/test/input/upto0000644000175000017500000000001012141547407012372 00000000000000h() p() gp2c-0.0.12/test/input/return0000644000175000017500000000012513614057635012736 00000000000000f(1+2)+10! g(0) h([1,2]) h([1,2,3;4,5,6]) k(5) t1(1) t2(1) t3(1) t4(1) init(4);foo() gp2c-0.0.12/test/input/if0000644000175000017500000000012113162716330012001 00000000000000f(0,0) f(0,1) f(1,0) f(1,1) f([1,2,3],1) g(0,2) g(1,2) h(0,3) h(1,3) pile() j(2) gp2c-0.0.12/test/input/forvec0000644000175000017500000000006712162636065012705 00000000000000g(3,0) g(3,1) g(3,2) h(3,0) h(3,1) h(3,2) FV(2) fv(72) gp2c-0.0.12/test/input/while0000644000175000017500000000011613623476440012526 00000000000000f(0); f(5); g(0); g(5); h([3,4,5]) k([4,5,6,7]) l([1,0,1,0,0]) m([0,0,1,0,0]) gp2c-0.0.12/test/input/multiassign0000644000175000017500000000016713623476440013763 00000000000000f([3,4]) g([4,5]) h1(Vecsmall([5,6])) h2(Vecsmall([6,7])) k(5) l1(0) l1(1) l2(0) l2(1) m1([1,2,3,4,5]) m2([1,2,3,4,5]) gp2c-0.0.12/test/input/matrix0000644000175000017500000000006212141547407012716 00000000000000testswap() swaprow(vandermonde([1,2,3])) sideef() gp2c-0.0.12/test/input/cleanvar0000644000175000017500000000000513162716330013177 00000000000000f(1) gp2c-0.0.12/test/input/forprime0000644000175000017500000000004713614057635013245 00000000000000f(50000) fs(50000) mf(11) check(11,11) gp2c-0.0.12/test/input/sumprod0000644000175000017500000000003312141547407013101 00000000000000f(10) g(100) h(1000) k(36) gp2c-0.0.12/test/input/install0000644000175000017500000000021512141547407013060 00000000000000v=buildkey(128); publickey=v[1]; privatekey=v[2]; clear=gp2crand(2^128) crypted=crypt(clear,publickey) decrypted=decrypt(crypted,privatekey) gp2c-0.0.12/test/Makefile.in0000644000175000017500000002710113751742674012413 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) # 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: gp2c-0.0.12/test/gp/0000755000175000017500000000000013653241534011021 500000000000000gp2c-0.0.12/test/gp/member.gp0000644000175000017500000000003213162716330012527 00000000000000polmod(a)= [a.pol, a.mod] gp2c-0.0.12/test/gp/gerepile.gp0000644000175000017500000000125013653241534013063 00000000000000f1()=local(x,y);x=vector(3);y=x;x[1]=1;x+y f2()=local(x,y);x=vector(3);y=x;y[1]=1;x+y g1()=local(x,y);y=x=vector(3);x[1]=1;x+y g2()=local(x,y);y=x=vector(3);y[1]=1;x+y h1()=local(x,y);x=vector(3);y=x;x[1]++;x+y h2()=local(x,y);x=vector(3);y=x;y[1]++;x+y k1()=local(x,y);x=vector(3);y=x;x[1]+=1;x+y k2()=local(x,y);x=vector(3);y=x;y[1]+=1;x+y l1()=local(x,y);x=vector(3);y=x;issquare(1,&x[1]);x+y l2()=local(x,y);x=vector(3);y=x;issquare(1,&y[1]);x+y m1()=local(x,y,z);x=[3];y=x;z=[y];z m2()=local(x,y,z);x=[3];z=[y=x];z a1(x)=x a2(x)=local(y);y=x;y n1()=a1([1,2]) n2()=a2([1,2]) o1(x:str)=[x] k(x:vecsmall)= { my(w:vecsmall=x); for(i:small=1,#w\2,w[i]++); [w,x]; } gp2c-0.0.12/test/gp/forvec.gp0000644000175000017500000000063512141547407012560 00000000000000g(n,f)= { forvec(v=vector(n,i,[1,2]), s=sum(i:small=1,#v,v[i]);print1(s," "),f); print } h(n,f)= { forvec(v=vector(n,i,[2*i-1,2*i]), s=sum(i:small=1,#v,v[i]);print1(s," "),f); print } FV(R)= { local(b=vector(5,i,[0,R]),N); forvec(a=b, N+=prod(n=1,100, sum(m=0,4,a[m+1]*n^m))); N } fv(N)= { local(a); forvec(b=vector(2,k,[1,5]), if((2^b[1])*(3^b[2])==N, a=b)); print(a); a; } gp2c-0.0.12/test/gp/multiassign.gp0000644000175000017500000000067713623476440013645 00000000000000f(v,c=0)=local(a,b=[1]);[a,b[c+1]]=v;a+b[1] g(v)= { my(a,[b,c]=v,d=v,e=3); [a,b,c,d,e] } h1(v:vecsmall)= { my([a,b]=v); [b,a] } h2(v:vecsmall)= { my(a,b); [a,b]=v; [b,a] } k(n)= { my(a,b,c); a = b = c = vector(n); for(i=1,n, [a[i],b[i],c[i]] = [2*i,3*i,5*i]); [a,b,c] } global(W,X); l1(a)= { [X, W] = if (a,[2,3],[3,4]); [W, X] } l2(a)= { [X, W] = if (a,[2,3],[3,4]); } m1(V)=[X,,,W]=V;[X,W] m2(V)=my([,a,,b]=V);[a,b] gp2c-0.0.12/test/gp/cleanvar.gp0000644000175000017500000000012113162716330013052 00000000000000f(m)= { while(0, vector(h1)); if(m>0, for(j=1,m, if(j==1, print(j)))); } gp2c-0.0.12/test/gp/if.gp0000644000175000017500000000071713162716330011670 00000000000000f(a,b)= { local(x); x=vector(2); if(a,if(b,print(0)),print(1)); if(a,if(b,print(2),print(3))); if(a==[1,2,3],print(4),print(5)); if(a==1,if(b==1,x[1]=1,x[1]=2),if(b==1,x[2]=1,x[2]=2)); print(x); print("end"); } g(p,n)=print("g");if(p,print(n),);if(p,print(n),;); h(p,n)=print("h");if(p,,print(n));if(p,;,print(n)); pile()= { local(a,b); a=[0,0]; for(i=1,10^5, if(i>0,b=[1,2],b=[3,4]); a+=b; ); a } j(x)=vector(2,i,if(i==1,12)) gp2c-0.0.12/test/gp/cast.gp0000644000175000017500000000026013623476440012224 00000000000000f(x:int)=local(y:var='y);[Str(1),Str(42),Str(4+I),Str(print(4)),Str(x),Str([y^3+y+45]),Str("a"),Str(7978886869909)] g(r:real,g:gen)=r+=g;round(r) h(v:vec)=v[1]:vecsmall[2]=7;v gp2c-0.0.12/test/gp/affect.gp0000644000175000017500000000121013614057635012517 00000000000000f(x)= { local(v,i=0,j:small=0); v=vector(x); m=matpascal(x); while(i0,x,y) th()=local(V=vector(5,i,i));vector(5,i,h(V[i],i-1)) ml(x)=local(a=x^2+1,b=a^2+1,c=b^2+1);c^2+1 col(x,a,v)=x[,if(a<=0,print("a is too small");return,a)]=v;x lin(x,a,v)=x[if(a<=0,error("a is too small"),a),]=v;x tr(v)=truncate(Pi,&v[1]);v H1(n)=GA[n]=1 H2()=truncate(Pi,&GB[1]) H3(n)=GC[n]+=1 global(seed:small=0); gp2crand31()=seed=bitand(1000276549*seed:int+12347,(1<<31)-1); gp2crand(N)=local(p);while(p.gp.run file instead of gp2c_start.gp and gp2c_gprc. -- This release adds support for &a[b] and break(n)/next(n). gp2c 0.0.4 -- This version handles PARI 2.2.8 release and above, 2.1 stable release, but no more the release 2.2.0 to 2.2.6, and mostly the 2.2.7 release. -- All references to libpari API is made through the description system. -- When used with PARI 2.2.8 and above, this release fully supports forvec(). -- The documentation has been extended to cover types. -- This version generates cleaner and more ANSI-C compliant C code. gp2c 0.0.3 -- This version handles PARI 2.2.7 release and above, 2.1 stable release, but no more the release 2.2.0 to 2.2.6. -- When used with PARI 2.2.7 and above, this release has full support for member function and functions taking a variable number of strings as arguments, usually text-based I/O functions. gp2c 0.0.2 -- This version handles automatic concatenation and supports more functions. gp2c 0.0.1 -- This version comes with a manual. This is doc/gp2c.tex LaTeX source doc/gp2c.dvi DVI format doc/html/index.html HTML format -- There is now a script gp2c-run to simplify the use of gp2c. gp2c 0.0.0 -- Add NEWS file to be computer-friendly with automake. gp2c-0.0.12/gp2c-dbg0000755000175000017500000000050113623476440010666 00000000000000#! /bin/sh #This file is part of the GP2C package # #This stupid shell script is Public Domain. # if test ! -f scripts/gp2c-dbg; then cat <&2 Package has not been configured for debugging. Please type ./configure --enable-debug to configure it for debugging. EOF exit 1; fi GP2C=./gp2c exec scripts/gp2c-dbg "$@"